diff --git a/CHANGELOG.rst b/CHANGELOG.rst index f4338cac..40628692 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -6,6 +6,8 @@ Changelog 0.15.0 (XXXX-XX-XX) +++++++++++++++++++ +- Added file path completions, there's a **new ``Completion.type``** ``path``, + now. - ``*args``/``**kwargs`` resolving. If possible Jedi replaces the parameters with the actual alternatives. - Better support for enums/dataclasses diff --git a/jedi/api/__init__.py b/jedi/api/__init__.py index ac0f4c76..9fd884b6 100644 --- a/jedi/api/__init__.py +++ b/jedi/api/__init__.py @@ -27,7 +27,7 @@ from jedi.api import interpreter from jedi.api import helpers from jedi.api.completion import Completion from jedi.api.environment import InterpreterEnvironment -from jedi.api.project import get_default_project +from jedi.api.project import get_default_project, Project from jedi.evaluate import Evaluator from jedi.evaluate import imports from jedi.evaluate import usages @@ -463,7 +463,8 @@ class Interpreter(Script): if not isinstance(environment, InterpreterEnvironment): raise TypeError("The environment needs to be an InterpreterEnvironment subclass.") - super(Interpreter, self).__init__(source, environment=environment, **kwds) + super(Interpreter, self).__init__(source, environment=environment, + _project=Project(os.getcwd()), **kwds) self.namespaces = namespaces def _get_module(self): diff --git a/jedi/api/classes.py b/jedi/api/classes.py index 7e28ca38..c393ca64 100644 --- a/jedi/api/classes.py +++ b/jedi/api/classes.py @@ -154,7 +154,7 @@ class BaseDefinition(object): 'function' Valid values for are ``module``, ``class``, ``instance``, ``function``, - ``param`` and ``keyword``. + ``param``, ``path`` and ``keyword``. """ tree_name = self._name.tree_name diff --git a/test/test_api/test_project.py b/test/test_api/test_project.py index 328333d2..a9fccb02 100644 --- a/test/test_api/test_project.py +++ b/test/test_api/test_project.py @@ -1,6 +1,7 @@ import os -from ..helpers import get_example_dir +from ..helpers import get_example_dir, set_cwd, root_dir +from jedi import Interpreter def test_django_default_project(Script): @@ -13,3 +14,11 @@ def test_django_default_project(Script): c, = script.completions() assert c.name == "SomeModel" assert script._evaluator.project._django is True + + +def test_interpreter_project_path(): + # Run from anywhere it should be the cwd. + dir = os.path.join(root_dir, 'test') + with set_cwd(dir): + project = Interpreter('', [locals()])._evaluator.project + assert project._path == dir