diff --git a/functions.py b/functions.py index 34e7ee95..97df8196 100644 --- a/functions.py +++ b/functions.py @@ -5,6 +5,7 @@ import evaluate import modules import debug import imports +import os class NotFoundError(Exception): @@ -122,7 +123,10 @@ class Definition(object): elif isinstance(d, (evaluate.Function, evaluate.parsing.Function)): d = 'def ' + str(d.name) elif isinstance(d, evaluate.parsing.Module): - d = 'module ' + str(d.path) + p = str(d.path) + # only show module name + p = re.sub(r'^.*?([\w\d]+)(/__init__)?.py$', r'\1', p) + d = 'module ' + p else: d = d.get_code().replace('\n', '') return d diff --git a/test/completion/goto.py b/test/completion/goto.py index 51170d75..912fad48 100644 --- a/test/completion/goto.py +++ b/test/completion/goto.py @@ -67,3 +67,18 @@ def c(): c #! 0 ['def c'] c() + +# ----------------- +# imports +# ----------------- + +#! ['module import_tree'] +import import_tree + +#! ['module mod1'] +import import_tree.mod1 + +#! ['module mod1'] +from import_tree import mod1 + + diff --git a/test/completion/import_tree/__init__.py b/test/completion/import_tree/__init__.py new file mode 100644 index 00000000..717a6745 --- /dev/null +++ b/test/completion/import_tree/__init__.py @@ -0,0 +1 @@ +a = "" diff --git a/test/completion/import_tree/mod1.py b/test/completion/import_tree/mod1.py new file mode 100644 index 00000000..1337a530 --- /dev/null +++ b/test/completion/import_tree/mod1.py @@ -0,0 +1 @@ +a = 1 diff --git a/test/completion/imports.py b/test/completion/imports.py index 013ae6f5..b9db69f0 100644 --- a/test/completion/imports.py +++ b/test/completion/imports.py @@ -1,3 +1,39 @@ +# ----------------- +# own structure +# ----------------- + +# do separate scopes +def scope_basic(): + from import_tree import mod1 + + #? int() + mod1.a + + #? [] + import_tree.a + + #? [] + import_tree.mod1 + + import import_tree + #? str() + import_tree.a + + #? [] + import_tree.mod1 + +def scope_nested(): + import import_tree.mod1 + + #? str() + import_tree.a + + #? ['mod1'] + import_tree.mod1 + + #? int() + import_tree.mod1.a + # ----------------- # std lib modules # ----------------- diff --git a/test/completion/thirdparty/pylab.py b/test/completion/thirdparty/pylab.py index 83d22a40..e7ad2661 100644 --- a/test/completion/thirdparty/pylab.py +++ b/test/completion/thirdparty/pylab.py @@ -2,8 +2,9 @@ import pylab pylab. # two gotos -#! ['module /usr/lib/python2.7/dist-packages/numpy/__init__.py'] +#! ['module numpy'] import numpy + #! ['module random'] import numpy.random