d5181034f2
The code was already checking for duplicate kwargs for named parameters but if `**kwargs` was given as a parameter, it did not check for multiples of the same argument name. This fixes the issue by adding an addition test to catch duplicates and adds a test to exercise the code. Fixes issue #10083. Signed-off-by: David Lechner <david@pybricks.com>
33 lines
565 B
Python
33 lines
565 B
Python
# test calling a function with keywords given by **dict
|
|
|
|
def f(a, b):
|
|
print(a, b)
|
|
|
|
f(1, **{'b':2})
|
|
f(1, **{'b':val for val in range(1)})
|
|
|
|
try:
|
|
f(1, **{len:2})
|
|
except TypeError:
|
|
print('TypeError')
|
|
|
|
# test calling a method with keywords given by **dict
|
|
|
|
class A:
|
|
def f(self, a, b):
|
|
print(a, b)
|
|
|
|
a = A()
|
|
a.f(1, **{'b':2})
|
|
a.f(1, **{'b':val for val in range(1)})
|
|
|
|
# test for duplicate keys in **kwargs not allowed
|
|
|
|
def f1(**kwargs):
|
|
print(kwargs)
|
|
|
|
try:
|
|
f1(**{'a': 1, 'b': 2}, **{'b': 3, 'c': 4})
|
|
except TypeError:
|
|
print('TypeError')
|