diff options
Diffstat (limited to 'Lib/test/test_typing.py')
-rw-r--r-- | Lib/test/test_typing.py | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/Lib/test/test_typing.py b/Lib/test/test_typing.py index f3ebece..779e175 100644 --- a/Lib/test/test_typing.py +++ b/Lib/test/test_typing.py @@ -4990,6 +4990,27 @@ class ParamSpecTests(BaseTestCase): self.assertEqual(G2[[int, str], float], list[C]) self.assertEqual(G3[[int, str], float], list[C] | int) + def test_paramspec_gets_copied(self): + # bpo-46581 + P = ParamSpec('P') + P2 = ParamSpec('P2') + C1 = Callable[P, int] + self.assertEqual(C1.__parameters__, (P,)) + self.assertEqual(C1[P2].__parameters__, (P2,)) + self.assertEqual(C1[str].__parameters__, ()) + self.assertEqual(C1[str, T].__parameters__, (T,)) + self.assertEqual(C1[Concatenate[str, P2]].__parameters__, (P2,)) + self.assertEqual(C1[Concatenate[T, P2]].__parameters__, (T, P2)) + self.assertEqual(C1[...].__parameters__, ()) + + C2 = Callable[Concatenate[str, P], int] + self.assertEqual(C2.__parameters__, (P,)) + self.assertEqual(C2[P2].__parameters__, (P2,)) + self.assertEqual(C2[str].__parameters__, ()) + self.assertEqual(C2[str, T].__parameters__, (T,)) + self.assertEqual(C2[Concatenate[str, P2]].__parameters__, (P2,)) + self.assertEqual(C2[Concatenate[T, P2]].__parameters__, (T, P2)) + class ConcatenateTests(BaseTestCase): def test_basics(self): |