@@ -1035,7 +1035,7 @@ impl VirtualMachine {
10351035 }
10361036 }
10371037
1038- fn abstract_issubclass ( & self , subclass : PyObjectRef , cls : & PyObjectRef ) -> PyResult < bool > {
1038+ pub fn abstract_issubclass ( & self , subclass : PyObjectRef , cls : & PyObjectRef ) -> PyResult < bool > {
10391039 let mut derived = subclass;
10401040 loop {
10411041 if derived. is ( cls) {
@@ -1067,7 +1067,11 @@ impl VirtualMachine {
10671067 }
10681068 }
10691069
1070- fn recursive_issubclass ( & self , subclass : & PyObjectRef , cls : & PyObjectRef ) -> PyResult < bool > {
1070+ pub fn recursive_issubclass (
1071+ & self ,
1072+ subclass : & PyObjectRef ,
1073+ cls : & PyObjectRef ,
1074+ ) -> PyResult < bool > {
10711075 if let ( Ok ( subclass) , Ok ( cls) ) = (
10721076 PyTypeRef :: try_from_object ( self , subclass. clone ( ) ) ,
10731077 PyTypeRef :: try_from_object ( self , cls. clone ( ) ) ,
@@ -1090,35 +1094,6 @@ impl VirtualMachine {
10901094 }
10911095 }
10921096
1093- /// Determines if `subclass` is a subclass of `cls`, either directly, indirectly or virtually
1094- /// via the __subclasscheck__ magic method.
1095- pub fn issubclass ( & self , subclass : & PyObjectRef , cls : & PyObjectRef ) -> PyResult < bool > {
1096- if cls. class ( ) . is ( & self . ctx . types . type_type ) {
1097- if subclass. is ( cls) {
1098- return Ok ( true ) ;
1099- }
1100- return self . recursive_issubclass ( subclass, cls) ;
1101- }
1102-
1103- if let Ok ( tuple) = PyTupleRef :: try_from_object ( self , cls. clone ( ) ) {
1104- for typ in tuple. as_slice ( ) . iter ( ) {
1105- if self . with_recursion ( "in __subclasscheck__" , || self . issubclass ( subclass, typ) ) ? {
1106- return Ok ( true ) ;
1107- }
1108- }
1109- return Ok ( false ) ;
1110- }
1111-
1112- if let Ok ( meth) = self . get_special_method ( cls. clone ( ) , "__subclasscheck__" ) ? {
1113- let ret = self . with_recursion ( "in __subclasscheck__" , || {
1114- meth. invoke ( ( subclass. clone ( ) , ) , self )
1115- } ) ?;
1116- return ret. try_to_bool ( self ) ;
1117- }
1118-
1119- self . recursive_issubclass ( subclass, cls)
1120- }
1121-
11221097 pub fn call_get_descriptor_specific (
11231098 & self ,
11241099 descr : PyObjectRef ,
0 commit comments