diff options
Diffstat (limited to 'Lib/test/test_genericalias.py')
-rw-r--r-- | Lib/test/test_genericalias.py | 90 |
1 files changed, 0 insertions, 90 deletions
diff --git a/Lib/test/test_genericalias.py b/Lib/test/test_genericalias.py index 9f92739..2e70e75 100644 --- a/Lib/test/test_genericalias.py +++ b/Lib/test/test_genericalias.py @@ -317,96 +317,6 @@ class BaseTest(unittest.TestCase): with self.assertRaises(TypeError): Bad(list, int, bad=int) - def test_abc_callable(self): - # A separate test is needed for Callable since it uses a subclass of - # GenericAlias. - alias = Callable[[int, str], float] - with self.subTest("Testing subscription"): - self.assertIs(alias.__origin__, Callable) - self.assertEqual(alias.__args__, (int, str, float)) - self.assertEqual(alias.__parameters__, ()) - - with self.subTest("Testing instance checks"): - self.assertIsInstance(alias, GenericAlias) - - with self.subTest("Testing weakref"): - self.assertEqual(ref(alias)(), alias) - - with self.subTest("Testing pickling"): - s = pickle.dumps(alias) - loaded = pickle.loads(s) - self.assertEqual(alias.__origin__, loaded.__origin__) - self.assertEqual(alias.__args__, loaded.__args__) - self.assertEqual(alias.__parameters__, loaded.__parameters__) - - with self.subTest("Testing TypeVar substitution"): - C1 = Callable[[int, T], T] - C2 = Callable[[K, T], V] - C3 = Callable[..., T] - self.assertEqual(C1[str], Callable[[int, str], str]) - self.assertEqual(C2[int, float, str], Callable[[int, float], str]) - self.assertEqual(C3[int], Callable[..., int]) - - # multi chaining - C4 = C2[int, V, str] - self.assertEqual(repr(C4).split(".")[-1], "Callable[[int, ~V], str]") - self.assertEqual(repr(C4[dict]).split(".")[-1], "Callable[[int, dict], str]") - self.assertEqual(C4[dict], Callable[[int, dict], str]) - - # substitute a nested GenericAlias (both typing and the builtin - # version) - C5 = Callable[[typing.List[T], tuple[K, T], V], int] - self.assertEqual(C5[int, str, float], - Callable[[typing.List[int], tuple[str, int], float], int]) - - with self.subTest("Testing type erasure"): - class C1(Callable): - def __call__(self): - return None - a = C1[[int], T] - self.assertIs(a().__class__, C1) - self.assertEqual(a().__orig_class__, C1[[int], T]) - - # bpo-42195 - with self.subTest("Testing collections.abc.Callable's consistency " - "with typing.Callable"): - c1 = typing.Callable[[int, str], dict] - c2 = Callable[[int, str], dict] - self.assertEqual(c1.__args__, c2.__args__) - self.assertEqual(hash(c1.__args__), hash(c2.__args__)) - - with self.subTest("Testing ParamSpec uses"): - P = typing.ParamSpec('P') - C1 = Callable[P, T] - # substitution - self.assertEqual(C1[int, str], Callable[[int], str]) - self.assertEqual(C1[[int, str], str], Callable[[int, str], str]) - self.assertEqual(repr(C1).split(".")[-1], "Callable[~P, ~T]") - self.assertEqual(repr(C1[int, str]).split(".")[-1], "Callable[[int], str]") - - C2 = Callable[P, int] - # special case in PEP 612 where - # X[int, str, float] == X[[int, str, float]] - self.assertEqual(C2[int, str, float], C2[[int, str, float]]) - self.assertEqual(repr(C2).split(".")[-1], "Callable[~P, int]") - self.assertEqual(repr(C2[int, str]).split(".")[-1], "Callable[[int, str], int]") - - with self.subTest("Testing Concatenate uses"): - P = typing.ParamSpec('P') - C1 = Callable[typing.Concatenate[int, P], int] - self.assertEqual(repr(C1), "collections.abc.Callable" - "[typing.Concatenate[int, ~P], int]") - - with self.subTest("Testing TypeErrors"): - with self.assertRaisesRegex(TypeError, "variables left in"): - alias[int] - P = typing.ParamSpec('P') - C1 = Callable[P, T] - with self.assertRaisesRegex(TypeError, "many arguments for"): - C1[int, str, str] - with self.assertRaisesRegex(TypeError, "few arguments for"): - C1[int] - if __name__ == "__main__": unittest.main() |