mirror of
https://github.com/python/cpython.git
synced 2025-08-04 00:48:58 +00:00
gh-118814: Fix the TypeVar constructor when name is passed by keyword (GH-122664)
Fix _PyArg_UnpackKeywordsWithVararg for the case when argument for positional-or-keyword parameter is passed by keyword. There was only one such case in the stdlib -- the TypeVar constructor.
This commit is contained in:
parent
e73e7a7abd
commit
540fcc62f5
6 changed files with 165 additions and 7 deletions
|
@ -3334,11 +3334,27 @@ class ClinicFunctionalTest(unittest.TestCase):
|
|||
self.assertEqual(ac_tester.vararg(1, 2, 3, 4), (1, (2, 3, 4)))
|
||||
|
||||
def test_vararg_with_default(self):
|
||||
with self.assertRaises(TypeError):
|
||||
ac_tester.vararg_with_default()
|
||||
self.assertEqual(ac_tester.vararg_with_default(1, b=False), (1, (), False))
|
||||
self.assertEqual(ac_tester.vararg_with_default(1, 2, 3, 4), (1, (2, 3, 4), False))
|
||||
self.assertEqual(ac_tester.vararg_with_default(1, 2, 3, 4, b=True), (1, (2, 3, 4), True))
|
||||
fn = ac_tester.vararg_with_default
|
||||
self.assertRaises(TypeError, fn)
|
||||
self.assertRaises(TypeError, fn, 1, a=2)
|
||||
self.assertEqual(fn(1, b=2), (1, (), True))
|
||||
self.assertEqual(fn(1, 2, 3, 4), (1, (2, 3, 4), False))
|
||||
self.assertEqual(fn(1, 2, 3, 4, b=5), (1, (2, 3, 4), True))
|
||||
self.assertEqual(fn(a=1), (1, (), False))
|
||||
self.assertEqual(fn(a=1, b=2), (1, (), True))
|
||||
|
||||
def test_vararg_with_default2(self):
|
||||
fn = ac_tester.vararg_with_default2
|
||||
self.assertRaises(TypeError, fn)
|
||||
self.assertRaises(TypeError, fn, 1, a=2)
|
||||
self.assertEqual(fn(1, b=2), (1, (), 2, None))
|
||||
self.assertEqual(fn(1, b=2, c=3), (1, (), 2, 3))
|
||||
self.assertEqual(fn(1, 2, 3), (1, (2, 3), None, None))
|
||||
self.assertEqual(fn(1, 2, 3, b=4), (1, (2, 3), 4, None))
|
||||
self.assertEqual(fn(1, 2, 3, b=4, c=5), (1, (2, 3), 4, 5))
|
||||
self.assertEqual(fn(a=1), (1, (), None, None))
|
||||
self.assertEqual(fn(a=1, b=2), (1, (), 2, None))
|
||||
self.assertEqual(fn(a=1, b=2, c=3), (1, (), 2, 3))
|
||||
|
||||
def test_vararg_with_only_defaults(self):
|
||||
self.assertEqual(ac_tester.vararg_with_only_defaults(), ((), None))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue