Skip to content

Commit 43be5a1

Browse files
committed
Add subclasscheck tests
1 parent dde0b83 commit 43be5a1

File tree

1 file changed

+19
-0
lines changed

1 file changed

+19
-0
lines changed

Lib/test/test_types.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff 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])

0 commit comments

Comments
 (0)