def _check_relative(self, node, mod_path): """check relative import module""" context_file = node.root().file relative = is_relative(mod_path, context_file) if relative: self.add_message('W0403', args=mod_path, node=node) return relative
def visit_from(self, node): """visit an astng.From node resolve module dependencies """ basename = node.modname context_file = node.root().file if context_file is not None: relative = is_relative(basename, context_file) else: relative = False for name in node.names: if name[0] == '*': fullname = basename else: fullname = '%s.%s' % (basename, name[0]) if fullname.find('.') > -1: try: # XXX: don't use get_module_part, missing package precedence mod_fullname = get_module_part(fullname,context_file) if(mod_fullname == fullname): self.from_modname_imports+=1; node.modname_import = True; fullname = mod_fullname except ImportError: print "Unresolved From -", node.as_string(),"File -",node.root().name,"Lineno - ",node.fromlineno self.bad_from_imports+=1 continue self._imported_module(node, fullname, relative)
def visit_import(self, node): """visit an astng.Import node resolve module dependencies """ context_file = node.root().file for name in node.names: relative = is_relative(name[0], context_file) self._imported_module(node, name[0], relative)
def _module_not_exists(self, node, modname): """check if module exists and possibly add message""" result, errors = expand_modules([modname], []) if not errors or is_relative(modname, node.root().file): return False error = errors[0] if error["key"] == "F0001": args = (error["mod"], error["ex"]) self.add_message("F0401", args=args, node=node) return True assert error["key"] == "F0003" return False
def visit_from(self, node): """visit an astng.From node resolve module dependencies """ basename = node.modname context_file = node.root().file if context_file is not None: relative = is_relative(basename, context_file) else: relative = False for name in node.names: if name[0] == '*': continue # analyze dependencies fullname = '%s.%s' % (basename, name[0]) if fullname.find('.') > -1: try: # XXX: don't use get_module_part, missing package precedence fullname = get_module_part(fullname) except ImportError: continue if fullname != basename: self._imported_module(node, fullname, relative)
def test_knownValues_is_relative_3(self): self.assertEqual(modutils.is_relative('logilab.common.modutils', common.__path__[0]), False)
def test_knownValues_is_relative_2(self): self.assertEqual(modutils.is_relative('modutils', tree.__file__), True)
def test_knownValues_is_relative_1(self): self.assertEqual(modutils.is_relative('modutils', common.__path__[0]), True)
def test_knownValues_is_relative_3(self): self.assertEqual( modutils.is_relative('logilab.common.modutils', common.__path__[0]), False)