From 863fbb37023cf3a70e3e298a162ea195b65b9e83 Mon Sep 17 00:00:00 2001 From: Dave Halter Date: Fri, 16 Feb 2018 11:57:58 +0100 Subject: [PATCH] Better handling of smart sys path --- jedi/api/project.py | 20 ++++++++++++-------- jedi/evaluate/sys_path.py | 2 +- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/jedi/api/project.py b/jedi/api/project.py index 64eca9bc..d6689948 100644 --- a/jedi/api/project.py +++ b/jedi/api/project.py @@ -93,16 +93,20 @@ class Project(object): Keep this method private for all users of jedi. However internally this one is used like a public method. """ - sys_path = list(self._get_base_sys_path(environment)) - if evaluator.script_path is None or not self._smart_sys_path: - return sys_path - + suffixed = [] prefixed = [] + + sys_path = list(self._get_base_sys_path(environment)) if self._smart_sys_path: - if self._django: - prefixed.append(self._path) - added_paths = detect_additional_paths(evaluator, evaluator.script_path) - return _force_unicode_list(prefixed) + sys_path + _force_unicode_list(added_paths) + if evaluator.script_path is not None: + suffixed += detect_additional_paths(evaluator, evaluator.script_path) + + suffixed.append(self._path) + + if self._django: + prefixed.append(self._path) + + return _force_unicode_list(prefixed) + sys_path + _force_unicode_list(suffixed) def save(self): data = dict(self.__dict__) diff --git a/jedi/evaluate/sys_path.py b/jedi/evaluate/sys_path.py index aa07d924..ae8fbc19 100644 --- a/jedi/evaluate/sys_path.py +++ b/jedi/evaluate/sys_path.py @@ -140,7 +140,7 @@ def detect_additional_paths(evaluator, script_path): for path in _get_paths_from_buildout_script(evaluator, buildout_script_path): buildout_script_paths.add(path) - return list(buildout_script_paths) + return buildout_script_paths def _get_paths_from_buildout_script(evaluator, buildout_script_path):