bpo-44793: Fix checking the number of arguments when subscribe a generic type with ParamSpec parameter. (GH-27515)

For example Callable[P, T][[int], str, float] will now raise an error.

Use also term "arguments" instead of "parameters" in error
message for too few/many arguments.
(cherry picked from commit f92b9133ef)

Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
This commit is contained in:
Miss Islington (bot) 2021-08-02 00:08:24 -07:00 committed by GitHub
parent b192fb3f6a
commit c8db292012
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 15 additions and 8 deletions

View file

@ -620,8 +620,6 @@ class TypingCallableTests(BaseCallableTests, BaseTestCase):
self.assertEqual(c1.__args__, c2.__args__)
self.assertEqual(hash(c1.__args__), hash(c2.__args__))
test_errors = skip("known bug #44793")(BaseCallableTests.test_errors)
class CollectionsCallableTests(BaseCallableTests, BaseTestCase):
Callable = collections.abc.Callable
@ -4548,6 +4546,10 @@ class ParamSpecTests(BaseTestCase):
G1 = X[int, P_2]
self.assertEqual(G1.__args__, (int, P_2))
self.assertEqual(G1.__parameters__, (P_2,))
with self.assertRaisesRegex(TypeError, "few arguments for"):
X[int]
with self.assertRaisesRegex(TypeError, "many arguments for"):
X[int, P_2, str]
G2 = X[int, Concatenate[int, P_2]]
self.assertEqual(G2.__args__, (int, Concatenate[int, P_2]))