forked from VimPlug/jedi
raise multiple key errors also if they are an input to kwargs
This commit is contained in:
@@ -91,12 +91,15 @@ def get_params(evaluator, func, var_args):
|
||||
key, va_values = next(var_arg_iterator, (None, []))
|
||||
while key:
|
||||
keys_only = True
|
||||
k = unicode(key)
|
||||
try:
|
||||
key_param = param_dict[unicode(key)]
|
||||
except KeyError:
|
||||
non_matching_keys.append((key, va_values))
|
||||
else:
|
||||
k = unicode(key)
|
||||
result.append(_gen_param_name_copy(func, var_args, key_param,
|
||||
values=va_values))
|
||||
|
||||
if k in keys_used:
|
||||
had_multiple_value_error = True
|
||||
m = ("TypeError: %s() got multiple values for keyword argument '%s'."
|
||||
@@ -107,8 +110,6 @@ def get_params(evaluator, func, var_args):
|
||||
calling_va, message=m)
|
||||
else:
|
||||
keys_used.add(k)
|
||||
result.append(_gen_param_name_copy(func, var_args, key_param,
|
||||
values=va_values))
|
||||
key, va_values = next(var_arg_iterator, (None, []))
|
||||
|
||||
keys = []
|
||||
@@ -234,11 +235,14 @@ def _unpack_var_args(evaluator, var_args, params):
|
||||
for i, p in enumerate(params):
|
||||
if str(p.get_name()) == str(key) and not p.stars:
|
||||
try:
|
||||
if argument_list[i][0] is None:
|
||||
argument_list[i][1].extend(values)
|
||||
break
|
||||
k, vs = argument_list[i]
|
||||
except IndexError:
|
||||
pass
|
||||
else:
|
||||
if k is None:
|
||||
if [v.parent for v in values] != [v.parent for v in vs]:
|
||||
vs.extend(values)
|
||||
break
|
||||
else:
|
||||
argument_list.append((key, values))
|
||||
# Normal arguments (including key arguments).
|
||||
|
||||
@@ -61,6 +61,8 @@ kwargs_nested()
|
||||
kwargs_nested(c=2, d=4)
|
||||
#! 13 type-error-multiple-values
|
||||
kwargs_nested(c=2, a=4)
|
||||
#! 13 type-error-multiple-values
|
||||
kwargs_nested(b=3, c=2)
|
||||
|
||||
# -----------------
|
||||
# mixed *args/**kwargs
|
||||
|
||||
Reference in New Issue
Block a user