diff --git a/jedi/inference/names.py b/jedi/inference/names.py index 38be6f22..2be1427c 100644 --- a/jedi/inference/names.py +++ b/jedi/inference/names.py @@ -7,6 +7,7 @@ from parso.tree import search_ancestor from jedi.parser_utils import find_statement_documentation, clean_scope_docstring from jedi.inference.utils import unite from jedi.inference.base_value import ValueSet, NO_VALUES +from jedi.inference.cache import inference_state_method_cache from jedi.inference import docstrings from jedi.cache import memoize_method from jedi.inference.helpers import deep_ast_copy, infer_call_of_leaf @@ -331,6 +332,12 @@ class TreeNameDefinition(AbstractTreeName): node = node.parent return indexes + @property + def inference_state(self): + # Used by the cache function below + return self.parent_context.inference_state + + @inference_state_method_cache(default='') def py__doc__(self): api_type = self.api_type if api_type in ('function', 'class'): diff --git a/test/examples/import-recursion/cadquery_simple/__init__.py b/test/examples/import-recursion/cadquery_simple/__init__.py new file mode 100644 index 00000000..e87c6632 --- /dev/null +++ b/test/examples/import-recursion/cadquery_simple/__init__.py @@ -0,0 +1 @@ +from .cq import selectors diff --git a/test/examples/import-recursion/cadquery_simple/cq.py b/test/examples/import-recursion/cadquery_simple/cq.py new file mode 100644 index 00000000..90bb9ac7 --- /dev/null +++ b/test/examples/import-recursion/cadquery_simple/cq.py @@ -0,0 +1 @@ +from . import selectors diff --git a/test/examples/import-recursion/cq_example.py b/test/examples/import-recursion/cq_example.py new file mode 100644 index 00000000..00a57176 --- /dev/null +++ b/test/examples/import-recursion/cq_example.py @@ -0,0 +1,3 @@ +import cadquery_simple as cq + +cq. diff --git a/test/test_inference/test_imports.py b/test/test_inference/test_imports.py index f1eb3f57..8e49244f 100644 --- a/test/test_inference/test_imports.py +++ b/test/test_inference/test_imports.py @@ -468,3 +468,9 @@ def test_relative_import_star(Script): script = Script(source, path='export.py') assert script.complete(3, len("furl.c")) + + +def test_import_recursion(Script): + path = get_example_dir('import-recursion', "cq_example.py") + for c in Script(path=path).complete(3, 3): + c.docstring()