def test_import_of_module_in_package_assigns_values_for_both_package_and_module(self): _assert_transform( nodes.import_([ nodes.import_alias("os.path", None), ]), cc.statements([ cc.assign(cc.ref("os"), cc.module_ref(["os"])), cc.assign(cc.attr(cc.ref("os"), "path"), cc.module_ref(["os", "path"])), ]) )
def test_import_multiple_values_in_single_import_statement(self): _assert_transform( nodes.import_([ nodes.import_alias("os", None), nodes.import_alias("sys", None) ]), cc.statements([ cc.assign(cc.ref("os"), cc.module_ref(["os"])), cc.assign(cc.ref("sys"), cc.module_ref(["sys"])), ]) )
def test_multiple_imported_names_in_one_statement_generates_multiple_assignments(self): _assert_transform( nodes.import_from(["."], [ nodes.import_alias("x", None), nodes.import_alias("y", None), ]), cc.statements([ cc.assign(cc.ref("x"), cc.attr(cc.module_ref(["."]), "x")), cc.assign(cc.ref("y"), cc.attr(cc.module_ref(["."]), "y")), ]), )
def path_is_normalised_before_hashing(self): module_resolver = FakeModuleResolver({ ("os", "path"): LocalModule("x/../blah.py", None), }) node = cc.module_ref(["os", "path"]) expected = """__Nope.Internals.@Import(Module__blah_py.Init)""" assert_equal(expected, cs.dumps(transform(node, module_resolver=module_resolver)))
def absolute_module_reference_is_translated_to_get_module_with_reference_to_module_class(self): module_resolver = FakeModuleResolver({ ("os", "path"): LocalModule("blah.py", None), }) node = cc.module_ref(["os", "path"]) expected = """__Nope.Internals.@Import(Module__blah_py.Init)""" assert_equal(expected, cs.dumps(transform(node, module_resolver=module_resolver)))
def test_transform_reference_to_builtin_module(): module = BuiltinModule("cgi", None) _assert_transform( cc.module_ref(["cgi"]), """$require("__stdlib/cgi");""", module_resolver=FakeModuleResolver({ ("cgi", ): module }) )
def test_importing_module_from_package_references_module_directly(self): module_resolver = FakeModuleResolver({ (("x", ), "y"): ResolvedImport(["x", "y"], _stub_module, None) }) _assert_transform( nodes.import_from(["x"], [nodes.import_alias("y", None)]), cc.assign(cc.ref("y"), cc.module_ref(["x", "y"])), module_resolver=module_resolver, )
def test_transform_reference_to_module_in_same_package(): _assert_transform( cc.module_ref([".", "x"]), js.call(js.ref("$require"), [js.string("./x")]), )
def test_transform_reference_to_parent_package(): _assert_transform( cc.module_ref([".."]), js.call(js.ref("$require"), [js.string("../")]), )
def test_transform_reference_to_top_level_module(): _assert_transform( cc.module_ref("x"), js.call(js.ref("$require"), [js.string("x")]), )
def test_import_from_assigns_value_to_asname_if_asname_is_set(self): _assert_transform( nodes.import_from(["os", "path"], [nodes.import_alias("join", "j")]), cc.assign(cc.ref("j"), cc.attr(cc.module_ref(["os", "path"]), "join")), )
def test_import_of_module_assigns_module_to_as_name_if_present(self): _assert_transform( nodes.import_([nodes.import_alias("message", "m")]), cc.assign(cc.ref("m"), cc.module_ref(["message"])) )
def test_import_of_module_assigns_module_to_name(self): _assert_transform( nodes.import_([nodes.import_alias("message", None)]), cc.assign(cc.ref("message"), cc.module_ref(["message"])) )
def test_import_from_uses_two_dots_to_indicate_import_from_parent_package(self): _assert_transform( nodes.import_from([".."], [nodes.import_alias("x", None)]), cc.assign(cc.ref("x"), cc.attr(cc.module_ref([".."]), "x")), )