@@ -632,7 +632,6 @@ static PyMemberDef type_members[] = {
632
632
{"__base__" , T_OBJECT , offsetof(PyTypeObject , tp_base ), READONLY },
633
633
{"__dictoffset__" , T_PYSSIZET ,
634
634
offsetof(PyTypeObject , tp_dictoffset ), READONLY },
635
- {"__mro__" , T_OBJECT , offsetof(PyTypeObject , tp_mro ), READONLY },
636
635
{0 }
637
636
};
638
637
@@ -876,6 +875,12 @@ clear_mro(PyTypeObject *type)
876
875
Py_CLEAR (type -> tp_mro );
877
876
}
878
877
878
+ static PyObject *
879
+ type_get_mro (PyTypeObject * type , void * context )
880
+ {
881
+ return Py_NewRef (get_mro (type ));
882
+ }
883
+
879
884
static PyTypeObject * best_base (PyObject * );
880
885
static int mro_internal (PyTypeObject * , PyObject * * );
881
886
static int type_is_subtype_base_chain (PyTypeObject * , PyTypeObject * );
@@ -1249,6 +1254,7 @@ static PyGetSetDef type_getsets[] = {
1249
1254
{"__name__" , (getter )type_name , (setter )type_set_name , NULL },
1250
1255
{"__qualname__" , (getter )type_qualname , (setter )type_set_qualname , NULL },
1251
1256
{"__bases__" , (getter )type_get_bases , (setter )type_set_bases , NULL },
1257
+ {"__mro__" , (getter )type_get_mro , NULL , NULL },
1252
1258
{"__module__" , (getter )type_module , (setter )type_set_module , NULL },
1253
1259
{"__abstractmethods__" , (getter )type_abstractmethods ,
1254
1260
(setter )type_set_abstractmethods , NULL },
0 commit comments