From a1e232bcbf39d47f013d26120ecad3f69b2db133 Mon Sep 17 00:00:00 2001 From: David Halter Date: Sat, 17 Aug 2013 22:43:20 +0430 Subject: [PATCH] fix local imports in repl completion --- jedi/utils.py | 14 ++++++++++---- test/test_utils.py | 4 ++++ 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/jedi/utils.py b/jedi/utils.py index d11fda46..3b946eee 100644 --- a/jedi/utils.py +++ b/jedi/utils.py @@ -61,11 +61,17 @@ def setup_readline(namespace_module=__main__): library module. """ if state == 0: - interpreter = Interpreter(text, [namespace_module.__dict__]) + import os, sys + sys.path.insert(0, os.getcwd()) + # Calling python doesn't have a path, so add to sys.path. + try: + interpreter = Interpreter(text, [namespace_module.__dict__]) - path, dot, like = interpreter._get_completion_parts() - before = text[:len(text) - len(like)] - completions = interpreter.completions() + path, dot, like = interpreter._get_completion_parts() + before = text[:len(text) - len(like)] + completions = interpreter.completions() + finally: + sys.path.pop(0) self.matches = [before + c.name_with_symbols for c in completions] try: diff --git a/test/test_utils.py b/test/test_utils.py index 2ffee08b..4b62ca17 100644 --- a/test/test_utils.py +++ b/test/test_utils.py @@ -71,6 +71,10 @@ class TestSetupReadline(TestCase): # items as well as items that are not only available on linux. assert len(set(self.completions(s)).symmetric_difference(goal)) < 20 + def test_local_import(self): + s = 'import test_utils' + assert self.completions(s) == [s] + def test_preexisting_values(self): self.namespace.a = range(10) assert set(self.completions('a.')) == set(['a.' + n for n in dir(range(1))])