diff --git a/jedi/evaluate/dynamic.py b/jedi/evaluate/dynamic.py index cf6f19e3..4d57c0b9 100644 --- a/jedi/evaluate/dynamic.py +++ b/jedi/evaluate/dynamic.py @@ -86,7 +86,7 @@ def search_params(evaluator, execution_context, funcdef): params = [MergedExecutedParams(executed_params) for executed_params in zipped_params] # Evaluate the ExecutedParams to types. else: - params = [create_default_param(execution_context, p) for p in funcdef.params] + params = [create_default_param(execution_context, p) for p in funcdef.get_params()] debug.dbg('Dynamic param result finished', color='MAGENTA') return params finally: diff --git a/jedi/evaluate/param.py b/jedi/evaluate/param.py index c8b3b0ab..57f35138 100644 --- a/jedi/evaluate/param.py +++ b/jedi/evaluate/param.py @@ -236,7 +236,7 @@ def get_params(execution_context, var_args): funcdef = execution_context.tree_node parent_context = execution_context.parent_context - for param in funcdef.params: + for param in funcdef.get_params(): param_dict[param.name.value] = param unpacked_va = list(var_args.unpack(funcdef)) var_arg_iterator = common.PushBackIterator(iter(unpacked_va)) @@ -245,7 +245,7 @@ def get_params(execution_context, var_args): keys_used = {} keys_only = False had_multiple_value_error = False - for param in funcdef.params: + for param in funcdef.get_params(): # The value and key can both be null. There, the defaults apply. # args / kwargs will just be empty arrays / dicts, respectively. # Wrong value count is just ignored. If you try to test cases that are @@ -381,14 +381,15 @@ def _star_star_dict(context, array, input_node, funcdef): def _error_argument_count(funcdef, actual_count): - default_arguments = sum(1 for p in funcdef.params if p.default or p.star_count) + params = funcdef.get_params() + default_arguments = sum(1 for p in params if p.default or p.star_count) if default_arguments == 0: before = 'exactly ' else: - before = 'from %s to ' % (len(funcdef.params) - default_arguments) + before = 'from %s to ' % (len(params) - default_arguments) return ('TypeError: %s() takes %s%s arguments (%s given).' - % (funcdef.name, before, len(funcdef.params), actual_count)) + % (funcdef.name, before, len(params), actual_count)) def create_default_param(execution_context, param): diff --git a/jedi/evaluate/pep0484.py b/jedi/evaluate/pep0484.py index c87a967a..caef06b4 100644 --- a/jedi/evaluate/pep0484.py +++ b/jedi/evaluate/pep0484.py @@ -94,7 +94,7 @@ def py__annotations__(funcdef): dct = {'return': return_annotation} else: dct = {} - for function_param in funcdef.params: + for function_param in funcdef.get_params(): param_annotation = function_param.annotation if param_annotation is not None: dct[function_param.name.value] = param_annotation diff --git a/jedi/evaluate/representation.py b/jedi/evaluate/representation.py index fe8d5cfa..80697806 100644 --- a/jedi/evaluate/representation.py +++ b/jedi/evaluate/representation.py @@ -170,7 +170,7 @@ class ClassContext(use_metaclass(CachedMetaClass, context.TreeContext)): def get_params(self): from jedi.evaluate.instance import AnonymousInstance anon = AnonymousInstance(self.evaluator, self.parent_context, self) - return [AnonymousInstanceParamName(anon, param.name) for param in self.funcdef.params] + return [AnonymousInstanceParamName(anon, param.name) for param in self.funcdef.get_params()] def get_filters(self, search_global, until_position=None, origin_scope=None, is_instance=False): if search_global: @@ -291,7 +291,8 @@ class FunctionContext(use_metaclass(CachedMetaClass, context.TreeContext)): def get_param_names(self): function_execution = self.get_function_execution() - return [ParamName(function_execution, param.name) for param in self.tree_node.params] + return [ParamName(function_execution, param.name) + for param in self.tree_node.get_params()] class FunctionExecutionContext(context.TreeContext): diff --git a/jedi/parser_utils.py b/jedi/parser_utils.py index d97f0708..59c6408e 100644 --- a/jedi/parser_utils.py +++ b/jedi/parser_utils.py @@ -155,7 +155,7 @@ def get_call_signature(funcdef, width=72, call_string=None): else: call_string = funcdef.name.value if funcdef.type == 'lambdef': - p = '(' + ''.join(param.get_code() for param in funcdef.params).strip() + ')' + p = '(' + ''.join(param.get_code() for param in funcdef.get_params()).strip() + ')' else: p = funcdef.children[2].get_code() code = call_string + p