diff --git a/CHANGES b/CHANGES index 5936f1bc1e962bec507481b1da5f109633705366..75be870ae7499cd333e499e404e5352cdd05907e 100644 --- a/CHANGES +++ b/CHANGES @@ -1,6 +1,8 @@ 0.1.5 - AST expression generation - added in just about everything expression-wise from the AST module [ticket:26] +- AST parsing, properly detects imports of the form "import foo.bar" + [ticket:27] 0.1.4 - got defs-within-defs to be cacheable diff --git a/lib/mako/ast.py b/lib/mako/ast.py index bea587d2d00c89fb13d9add07e32b55a6e9c1a70..5556269cf422251386526ce1c3332871fe21cd7b 100644 --- a/lib/mako/ast.py +++ b/lib/mako/ast.py @@ -88,7 +88,7 @@ class PythonCode(object): if alias is not None: self._add_declared(alias) else: - self._add_declared(mod) + self._add_declared(mod.split('.')[0]) def visitFrom(self, node, *args): for (mod, alias) in node.names: if alias is not None: diff --git a/test/ast.py b/test/ast.py index 31680a2b4851103ea6ae964ec525e2b39477bb72..f19c103a33cd0c7b24f9d43284e82be07d33cd91 100644 --- a/test/ast.py +++ b/test/ast.py @@ -105,7 +105,15 @@ print z parsed = ast.PythonCode(code, 0, 0, None) assert parsed.undeclared_identifiers == util.Set(['z']) assert parsed.declared_identifiers == util.Set(['lala']) - + + def test_locate_identifiers_7(self): + code = """ +import foo.bar +""" + parsed = ast.PythonCode(code, 0, 0, None) + assert parsed.declared_identifiers == util.Set(['foo']) + assert parsed.undeclared_identifiers == util.Set() + def test_no_global_imports(self): code = """ from foo import * @@ -189,7 +197,7 @@ import x as bar local_dict={} astnode = parse(code) newcode = ast.ExpressionGenerator(astnode).value() - print code, newcode + #print code, newcode assert(eval(code, local_dict)) == eval(newcode, local_dict), "%s != %s" % (code, newcode) if __name__ == '__main__':