@@ -695,6 +695,51 @@ mmap__exit__method(PyObject *self, PyObject *args)
695
695
return _PyObject_CallMethodIdNoArgs (self , & PyId_close );
696
696
}
697
697
698
+ static PyObject *
699
+ mmap__repr__method (PyObject * self )
700
+ {
701
+ mmap_object * mobj = (mmap_object * )self ;
702
+
703
+ #ifdef MS_WINDOWS
704
+ #define _Py_FORMAT_OFFSET "lld"
705
+ if (mobj -> map_handle == NULL )
706
+ #elif defined(UNIX )
707
+ # ifdef HAVE_LARGEFILE_SUPPORT
708
+ # define _Py_FORMAT_OFFSET "lld"
709
+ # else
710
+ # define _Py_FORMAT_OFFSET "ld"
711
+ # endif
712
+ if (mobj -> data == NULL )
713
+ #endif
714
+ {
715
+ return PyUnicode_FromFormat ("<%s closed=True>" , Py_TYPE (self )-> tp_name );
716
+ } else {
717
+ const char * access_str ;
718
+
719
+ switch (mobj -> access ) {
720
+ case ACCESS_DEFAULT :
721
+ access_str = "ACCESS_DEFAULT" ;
722
+ break ;
723
+ case ACCESS_READ :
724
+ access_str = "ACCESS_READ" ;
725
+ break ;
726
+ case ACCESS_WRITE :
727
+ access_str = "ACCESS_WRITE" ;
728
+ break ;
729
+ case ACCESS_COPY :
730
+ access_str = "ACCESS_COPY" ;
731
+ break ;
732
+ default :
733
+ Py_UNREACHABLE ();
734
+ }
735
+
736
+ return PyUnicode_FromFormat ("<%s closed=False, access=%s, length=%zd, "
737
+ "pos=%zd, offset=%" _Py_FORMAT_OFFSET ">" ,
738
+ Py_TYPE (self )-> tp_name , access_str ,
739
+ mobj -> size , mobj -> pos , mobj -> offset );
740
+ }
741
+ }
742
+
698
743
#ifdef MS_WINDOWS
699
744
static PyObject *
700
745
mmap__sizeof__method (mmap_object * self , void * unused )
@@ -1044,23 +1089,23 @@ static PyTypeObject mmap_object_type = {
1044
1089
sizeof (mmap_object ), /* tp_basicsize */
1045
1090
0 , /* tp_itemsize */
1046
1091
/* methods */
1047
- (destructor ) mmap_object_dealloc , /* tp_dealloc */
1092
+ (destructor )mmap_object_dealloc , /* tp_dealloc */
1048
1093
0 , /* tp_vectorcall_offset */
1049
1094
0 , /* tp_getattr */
1050
1095
0 , /* tp_setattr */
1051
1096
0 , /* tp_as_async */
1052
- 0 , /* tp_repr */
1097
+ ( reprfunc ) mmap__repr__method , /* tp_repr */
1053
1098
0 , /* tp_as_number */
1054
- & mmap_as_sequence , /*tp_as_sequence*/
1055
- & mmap_as_mapping , /*tp_as_mapping*/
1056
- 0 , /*tp_hash*/
1057
- 0 , /*tp_call*/
1058
- 0 , /*tp_str*/
1059
- PyObject_GenericGetAttr , /*tp_getattro*/
1060
- 0 , /*tp_setattro*/
1061
- & mmap_as_buffer , /*tp_as_buffer*/
1062
- Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE , /*tp_flags*/
1063
- mmap_doc , /*tp_doc*/
1099
+ & mmap_as_sequence , /* tp_as_sequence */
1100
+ & mmap_as_mapping , /* tp_as_mapping */
1101
+ 0 , /* tp_hash */
1102
+ 0 , /* tp_call */
1103
+ 0 , /* tp_str */
1104
+ PyObject_GenericGetAttr , /* tp_getattro */
1105
+ 0 , /* tp_setattro */
1106
+ & mmap_as_buffer , /* tp_as_buffer */
1107
+ Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE , /* tp_flags */
1108
+ mmap_doc , /* tp_doc */
1064
1109
0 , /* tp_traverse */
1065
1110
0 , /* tp_clear */
1066
1111
0 , /* tp_richcompare */
0 commit comments