def add_import(pycore, pymodule, module_name, name=None): imports = get_module_imports(pycore, pymodule) candidates = [] names = [] # from mod import name if name is not None: from_import = FromImport(module_name, 0, [(name, None)]) names.append(name) candidates.append(from_import) # from pkg import mod if '.' in module_name: pkg, mod = module_name.rsplit('.', 1) candidates.append(FromImport(pkg, 0, [(mod, None)])) if name: names.append(mod + '.' + name) else: names.append(mod) # import mod normal_import = NormalImport([(module_name, None)]) if name: names.append(module_name + '.' + name) else: names.append(module_name) candidates.append(normal_import) visitor = actions.AddingVisitor(pycore, candidates) selected_import = normal_import for import_statement in imports.imports: if import_statement.accept(visitor): selected_import = visitor.import_info break imports.add_import(selected_import) imported_name = names[candidates.index(selected_import)] return imports.get_changed_source(), imported_name
def remove_duplicates(self): added_imports = [] for import_stmt in self.imports: visitor = actions.AddingVisitor(self.project, [import_stmt.import_info]) for added_import in added_imports: if added_import.accept(visitor): import_stmt.empty_import() else: added_imports.append(import_stmt)
def add_import(self, import_info): visitor = actions.AddingVisitor(self.project, [import_info]) for import_statement in self.imports: if import_statement.accept(visitor): break else: lineno = self._get_new_import_lineno() blanks = self._get_new_import_blanks() self.imports.append(importinfo.ImportStatement( import_info, lineno, lineno, blank_lines=blanks))
def add_import(project, pymodule, module_name, name=None): imports = get_module_imports(project, pymodule) candidates = [] names = [] selected_import = None # from mod import name if name is not None: from_import = FromImport(module_name, 0, [(name, None)]) names.append(name) candidates.append(from_import) # from pkg import mod if "." in module_name: pkg, mod = module_name.rsplit(".", 1) from_import = FromImport(pkg, 0, [(mod, None)]) if project.prefs.get("prefer_module_from_imports"): selected_import = from_import candidates.append(from_import) if name: names.append(mod + "." + name) else: names.append(mod) # import mod normal_import = NormalImport([(module_name, None)]) if name: names.append(module_name + "." + name) else: names.append(module_name) candidates.append(normal_import) visitor = actions.AddingVisitor(project, candidates) if selected_import is None: selected_import = normal_import for import_statement in imports.imports: if import_statement.accept(visitor): selected_import = visitor.import_info break imports.add_import(selected_import) imported_name = names[candidates.index(selected_import)] return imports.get_changed_source(), imported_name