summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_typing.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/test/test_typing.py')
-rw-r--r--Lib/test/test_typing.py21
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):