From 4bbaec68e8123663586872be7ba4656d7c88d510 Mon Sep 17 00:00:00 2001 From: Dave Halter Date: Fri, 20 Dec 2019 18:47:04 +0100 Subject: [PATCH] Make sure goto_definitions is no longer used in the main code --- jedi/api/__init__.py | 4 ++-- jedi/api/classes.py | 22 +++++++++++----------- jedi/api/helpers.py | 8 +++----- jedi/inference/__init__.py | 2 +- jedi/inference/dynamic_params.py | 2 +- jedi/inference/syntax_tree.py | 2 +- 6 files changed, 19 insertions(+), 21 deletions(-) diff --git a/jedi/api/__init__.py b/jedi/api/__init__.py index bd7b24fd..d1b1ff4d 100644 --- a/jedi/api/__init__.py +++ b/jedi/api/__init__.py @@ -244,7 +244,7 @@ class Script(object): context = self._get_module_context().create_context(leaf) - values = helpers.infer_goto_definition(self._inference_state, context, leaf) + values = helpers.infer(self._inference_state, context, leaf) values = convert_values( values, only_stubs=only_stubs, @@ -419,7 +419,7 @@ class Script(object): unpack_tuple_to_dict(context, types, testlist) else: if node.type == 'name': - defs = self._inference_state.goto_definitions(context, node) + defs = self._inference_state.infer(context, node) else: defs = infer_call_of_leaf(context, node) try_iter_content(defs) diff --git a/jedi/api/classes.py b/jedi/api/classes.py index 482736a3..945d5284 100644 --- a/jedi/api/classes.py +++ b/jedi/api/classes.py @@ -104,7 +104,7 @@ class BaseDefinition(object): Here is an example of the value of this attribute. Let's consider the following source. As what is in ``variable`` is unambiguous - to Jedi, :meth:`jedi.Script.goto_definitions` should return a list of + to Jedi, :meth:`jedi.Script.infer` should return a list of definition for ``sys``, ``f``, ``C`` and ``x``. >>> from jedi._compatibility import no_unicode_pprint @@ -127,7 +127,7 @@ class BaseDefinition(object): ... variable''' >>> script = Script(source) - >>> defs = script.goto_definitions() + >>> defs = script.infer() Before showing what is in ``defs``, let's sort it by :attr:`line` so that it is easy to relate the result to the source code. @@ -177,7 +177,7 @@ class BaseDefinition(object): >>> from jedi import Script >>> source = 'import json' >>> script = Script(source, path='example.py') - >>> d = script.goto_definitions()[0] + >>> d = script.infer()[0] >>> print(d.module_name) # doctest: +ELLIPSIS json """ @@ -217,8 +217,8 @@ class BaseDefinition(object): ... def f(a, b=1): ... "Document for function f." ... ''' - >>> script = Script(source, 1, len('def f'), 'example.py') - >>> doc = script.goto_definitions()[0].docstring() + >>> script = Script(source, path='example.py') + >>> doc = script.infer(1, len('def f'))[0].docstring() >>> print(doc) f(a, b=1) @@ -228,7 +228,7 @@ class BaseDefinition(object): docstring. For function, it is call signature. If you need actual docstring, use ``raw=True`` instead. - >>> print(script.goto_definitions()[0].docstring(raw=True)) + >>> print(script.infer(1, len('def f'))[0].docstring(raw=True)) Document for function f. :param fast: Don't follow imports that are only one level deep like @@ -259,8 +259,8 @@ class BaseDefinition(object): >>> source = ''' ... import os ... os.path.join''' - >>> script = Script(source, 3, len('os.path.join'), 'example.py') - >>> print(script.goto_definitions()[0].full_name) + >>> script = Script(source, path='example.py') + >>> print(script.infer(3, len('os.path.join'))[0].full_name) os.path.join Notice that it returns ``'os.path.join'`` instead of (for example) @@ -526,7 +526,7 @@ class Completion(BaseDefinition): class Definition(BaseDefinition): """ *Definition* objects are returned from :meth:`api.Script.goto_assignments` - or :meth:`api.Script.goto_definitions`. + or :meth:`api.Script.infer`. """ def __init__(self, inference_state, definition): super(Definition, self).__init__(inference_state, definition) @@ -549,8 +549,8 @@ class Definition(BaseDefinition): ... pass ... ... variable = f if random.choice([0,1]) else C''' - >>> script = Script(source, column=3) # line is maximum by default - >>> defs = script.goto_definitions() + >>> script = Script(source) # line is maximum by default + >>> defs = script.infer(column=3) >>> defs = sorted(defs, key=lambda d: d.line) >>> no_unicode_pprint(defs) # doctest: +NORMALIZE_WHITESPACE [, diff --git a/jedi/api/helpers.py b/jedi/api/helpers.py index ab6ea920..c76e92c7 100644 --- a/jedi/api/helpers.py +++ b/jedi/api/helpers.py @@ -150,11 +150,9 @@ def get_stack_at_position(grammar, code_lines, leaf, pos): ) -def infer_goto_definition(inference_state, context, leaf): +def infer(inference_state, context, leaf): if leaf.type == 'name': - # In case of a name we can just use goto_definition which does all the - # magic itself. - return inference_state.goto_definitions(context, leaf) + return inference_state.infer(context, leaf) parent = leaf.parent definitions = NO_VALUES @@ -407,7 +405,7 @@ def cache_call_signatures(inference_state, context, bracket_leaf, code_lines, us yield None # Don't cache! else: yield (module_path, before_bracket, bracket_leaf.start_pos) - yield infer_goto_definition( + yield infer( inference_state, context, bracket_leaf.get_previous_leaf(), diff --git a/jedi/inference/__init__.py b/jedi/inference/__init__.py index bd1b66c3..e3c2db7a 100644 --- a/jedi/inference/__init__.py +++ b/jedi/inference/__init__.py @@ -143,7 +143,7 @@ class InferenceState(object): """Convenience function""" return self.project._get_sys_path(self, environment=self.environment, **kwargs) - def goto_definitions(self, context, name): + def infer(self, context, name): def_ = name.get_definition(import_name_always=True) if def_ is not None: type_ = def_.type diff --git a/jedi/inference/dynamic_params.py b/jedi/inference/dynamic_params.py index 7b17046c..5f457cd1 100644 --- a/jedi/inference/dynamic_params.py +++ b/jedi/inference/dynamic_params.py @@ -186,7 +186,7 @@ def _check_name_for_execution(inference_state, context, compare_node, name, trai args = InstanceArguments(value.instance, args) return args - for value in inference_state.goto_definitions(context, name): + for value in inference_state.infer(context, name): value_node = value.tree_node if compare_node == value_node: yield create_args(value) diff --git a/jedi/inference/syntax_tree.py b/jedi/inference/syntax_tree.py index bf0f67e5..5e73878f 100644 --- a/jedi/inference/syntax_tree.py +++ b/jedi/inference/syntax_tree.py @@ -108,7 +108,7 @@ def infer_node(context, element): str_element_names = [e.value for e in element_names] if any(i.value in str_element_names for i in if_names): for if_name in if_names: - definitions = context.inference_state.goto_definitions(context, if_name) + definitions = context.inference_state.infer(context, if_name) # Every name that has multiple different definitions # causes the complexity to rise. The complexity should # never fall below 1.