The docstring of import completions was wrong.

This is fixed now. However, since this might massively decrease performance,
it's not enabled by default. You can enable it with `docstring(fast=False)`
(see test changes), but I wouldn't recommend it at this point.

Fixes #656.
This commit is contained in:
Dave Halter
2016-07-09 01:04:15 +02:00
parent baa745a6ac
commit 5280f567f9
2 changed files with 17 additions and 1 deletions

View File

@@ -355,7 +355,11 @@ class Importer(object):
return set([module])
def _generate_name(self, name):
return helpers.FakeName(name, parent=self.module)
# Create a pseudo import to be able to follow them.
name = helpers.FakeName(name)
imp = helpers.FakeImport(name, parent=self.module)
name.parent = imp
return name
def _get_module_names(self, search_path=None):
"""

View File

@@ -77,3 +77,15 @@ def test_cache_works_with_sys_path_param(tmpdir):
assert 'bar' in [c.name for c in bar_completions]
assert 'foo' not in [c.name for c in bar_completions]
def test_import_completion_docstring():
import abc
s = jedi.Script('"""test"""\nimport ab')
completions = s.completions()
assert len(completions) == 1
assert 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() == ''