1
0
forked from VimPlug/jedi

Don't assume every module has a namespace

This commit is contained in:
Laurens Van Houtven
2013-06-23 21:59:58 +02:00
parent adec666994
commit e82e3eaa0d
2 changed files with 13 additions and 0 deletions

View File

@@ -333,6 +333,9 @@ def _enables_absolute_import(imp):
Checks if the import is a ``__future__`` import that enables the Checks if the import is a ``__future__`` import that enables the
``absolute_import`` feature. ``absolute_import`` feature.
""" """
if imp.namespace is None:
return False
namespace, feature = imp.from_ns.names[0], imp.namespace.names[0] namespace, feature = imp.from_ns.names[0], imp.namespace.names[0]
return namespace == "__future__" and feature == "absolute_import" return namespace == "__future__" and feature == "absolute_import"

View File

@@ -21,6 +21,16 @@ def test_py2_imports_are_not_always_absolute():
assert not parser.scope.absolute_imports assert not parser.scope.absolute_imports
def test_dont_break_imports_without_namespaces():
"""
The code checking for ``from __future__ import absolute_import`` shouldn't
assume that all imports have non-``None`` ``namespace`` attributes.
"""
src = "from __future__ import absolute_import\nimport xyzzy"
parser = Parser(src, "test.py")
assert parser.scope.absolute_imports
def test_imports_are_absolute_in_modules_with_future_import(): def test_imports_are_absolute_in_modules_with_future_import():
""" """
In any module with the ``absolute_import`` ``__future__`` import, all In any module with the ``absolute_import`` ``__future__`` import, all