diff --git a/jedi/utils.py b/jedi/utils.py index 60df84d9..40e1a56e 100644 --- a/jedi/utils.py +++ b/jedi/utils.py @@ -75,7 +75,10 @@ def setup_readline(namespace=__main__.__dict__): # use the "default" completion with ``getattr`` if # possible. path, dot, like = interpreter._get_completion_parts() - if not path or re.match('^[\w][\w\d.]*$', path): + # Shouldn't be an import statement and just a simple path + # with dots. + if not re.match('^\s*(import|from) ', text) \ + and (not path or re.match('^[\w][\w\d.]*$', path)): paths = path.split('.') if path else [] namespaces = (namespace, builtins.__dict__) for p in paths: diff --git a/test/test_utils.py b/test/test_utils.py index 1e796452..3fc2a27e 100644 --- a/test/test_utils.py +++ b/test/test_utils.py @@ -46,8 +46,16 @@ class TestSetupReadline(): del self.namespace['sys'] del self.namespace['os'] + def test_import(self): + assert self.completions('import keyword') == ['keyword'] + def test_colorama(self): - """Only test it if colorama library is available""" + """ + Only test it if colorama library is available. + + This module is being tested because it uses ``setattr`` at some point, + which Jedi doesn't understand, but it should still work in the REPL. + """ try: # if colorama is installed import colorama @@ -56,4 +64,5 @@ class TestSetupReadline(): else: self.namespace['colorama'] = colorama assert self.completions('colorama') + assert self.completions('colorama.Fore.BLACK') == ['colorama.Fore.BLACK'] del self.namespace['colorama']