diff --git a/jedi/api/__init__.py b/jedi/api/__init__.py index 86ab8ac4..d5c8e93b 100644 --- a/jedi/api/__init__.py +++ b/jedi/api/__init__.py @@ -78,7 +78,7 @@ class Script(object): :param sys_path: ``sys.path`` to use during analysis of the script :type sys_path: list :param environment: TODO - :type sys_path: Environment + :type environment: Environment """ def __init__(self, source=None, line=None, column=None, path=None, encoding='utf-8', sys_path=None, environment=None): diff --git a/jedi/api/environment.py b/jedi/api/environment.py index a6616c5a..0d2b6729 100644 --- a/jedi/api/environment.py +++ b/jedi/api/environment.py @@ -154,7 +154,11 @@ def _get_virtual_env_from_var(): """ var = os.environ.get('VIRTUAL_ENV') if var: - if var == sys.prefix: + # Under macOS in some cases - notably when using Pipenv - the + # sys.prefix of the virtualenv is /path/to/env/bin/.. instead of + # /path/to/env so we need to fully resolve the paths in order to + # compare them. + if os.path.realpath(var) == os.path.realpath(sys.prefix): return _try_get_same_env() try: diff --git a/test/test_evaluate/test_imports.py b/test/test_evaluate/test_imports.py index ff38efca..fe0145f8 100644 --- a/test/test_evaluate/test_imports.py +++ b/test/test_evaluate/test_imports.py @@ -133,13 +133,13 @@ def test_cache_works_with_sys_path_param(Script, tmpdir): def test_import_completion_docstring(Script): import abc s = Script('"""test"""\nimport ab') - completions = s.completions() - assert len(completions) == 1 - assert completions[0].docstring(fast=False) == abc.__doc__ + abc_completions = [c for c in s.completions() if c.name == 'abc'] + assert len(abc_completions) == 1 + assert abc_completions[0].docstring(fast=False) == abc.__doc__ # However for performance reasons not all modules are loaded and the # docstring is empty in this case. - assert completions[0].docstring() == '' + assert abc_completions[0].docstring() == '' def test_goto_definition_on_import(Script):