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