File tree Expand file tree Collapse file tree 1 file changed +19
-0
lines changed
Expand file tree Collapse file tree 1 file changed +19
-0
lines changed Original file line number Diff line number Diff line change @@ -924,6 +924,25 @@ class CustomIsInstanceSubclass(CustomIsInstance):
924924 self .assertFalse (isinstance (CustomIsInstance (), CustomIsInstance ))
925925 self .assertFalse (isinstance (CustomIsInstanceSubclass (), CustomIsInstance ))
926926
927+ def test_custom_subclasscheck (self ):
928+ class CustomIsSubclassMeta (type ):
929+ def __subclasscheck__ (cls , subcls ):
930+ return subcls is int
931+
932+ class CustomIsSubclass (metaclass = CustomIsSubclassMeta ):
933+ ...
934+
935+ class CustomIsSubclassSubclass (CustomIsSubclass ):
936+ ...
937+
938+ self .assertTrue (issubclass (int , CustomIsSubclass ))
939+ self .assertFalse (isinstance (4 , CustomIsSubclass ))
940+ self .assertFalse (issubclass (CustomIsSubclass , CustomIsSubclass ))
941+ self .assertTrue (isinstance (CustomIsSubclass (), CustomIsSubclass ))
942+ self .assertFalse (issubclass (CustomIsSubclassSubclass , CustomIsSubclass ))
943+ self .assertTrue (isinstance (CustomIsSubclassSubclass (), CustomIsSubclass ))
944+
945+
927946 def test_or_type_operator_with_TypeVar (self ):
928947 TV = typing .TypeVar ('T' )
929948 self .assertEqual (TV | str , typing .Union [TV , str ])
You can’t perform that action at this time.
0 commit comments