1
0
forked from VimPlug/jedi

raise multiple key errors also if they are an input to kwargs

This commit is contained in:
Dave Halter
2014-06-05 10:35:44 +02:00
parent acb4959a6a
commit 6f83eb65ce
2 changed files with 22 additions and 16 deletions

View File

@@ -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).

View File

@@ -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