diff options
| -rw-r--r-- | as_string.py | 4 | ||||
| -rw-r--r-- | test/unittest_nodes.py | 6 |
2 files changed, 8 insertions, 2 deletions
diff --git a/as_string.py b/as_string.py index 61ce44e0..62ab5e84 100644 --- a/as_string.py +++ b/as_string.py @@ -228,8 +228,8 @@ class AsStringVisitor(object): def visit_from(self, node): """return an astng.From node as string""" - modname = node.modname or '.' * node.level - return 'from %s import %s' % (modname, _import_string(node.names)) + return 'from %s import %s' % ('.' * (node.level or 0) + node.modname, + _import_string(node.names)) def visit_function(self, node): """return an astng.Function node as string""" diff --git a/test/unittest_nodes.py b/test/unittest_nodes.py index 9d0b13fe..22843230 100644 --- a/test/unittest_nodes.py +++ b/test/unittest_nodes.py @@ -270,6 +270,12 @@ class ImportNodeTC(testlib.TestCase): self.assertEqual(as_string(ast), "from logilab.common.shellutils import Execute as spawn") ast = MODULE['os'] self.assertEqual(as_string(ast), "import os.path") + code = """from . import here +from .. import door +from .store import bread +from ..cave import wine\n\n""" + ast = abuilder.string_build(code) + self.assertMultiLineEqual(ast.as_string(), code) class CmpNodeTC(testlib.TestCase): def test_as_string(self): |
