"""Fixer for 'import exceptions'. exceptions.X -> X""" # Local imports from lib2to3 import fixer_base from lib2to3.pytree import Leaf from lib2to3.fixes.fix_imports import FixImports class FixImportExceptions(FixImports): mapping = {'exceptions': None} def transform(self, node, results): import_mod = results.get("module_name") if import_mod: mod_name = import_mod.value new_name = self.mapping[mod_name] if "multiple_imports" in results: results = self.match(node) if results: self.transform(node, results) else: node.remove() else: # Replace usage of the module. to_remove = [] for (i, child) in enumerate(node.children): if isinstance(child, Leaf) and child.value in self.mapping: to_remove.append(i) for i in reversed(to_remove): assert node.children[i+1].children[0].value == '.' del node.children[i+1].children[0] # delete the dot del node.children[i] # delete the module