17db96d56Sopenharmony_ci"""Fix incompatible renames 27db96d56Sopenharmony_ci 37db96d56Sopenharmony_ciFixes: 47db96d56Sopenharmony_ci * sys.maxint -> sys.maxsize 57db96d56Sopenharmony_ci""" 67db96d56Sopenharmony_ci# Author: Christian Heimes 77db96d56Sopenharmony_ci# based on Collin Winter's fix_import 87db96d56Sopenharmony_ci 97db96d56Sopenharmony_ci# Local imports 107db96d56Sopenharmony_cifrom .. import fixer_base 117db96d56Sopenharmony_cifrom ..fixer_util import Name, attr_chain 127db96d56Sopenharmony_ci 137db96d56Sopenharmony_ciMAPPING = {"sys": {"maxint" : "maxsize"}, 147db96d56Sopenharmony_ci } 157db96d56Sopenharmony_ciLOOKUP = {} 167db96d56Sopenharmony_ci 177db96d56Sopenharmony_cidef alternates(members): 187db96d56Sopenharmony_ci return "(" + "|".join(map(repr, members)) + ")" 197db96d56Sopenharmony_ci 207db96d56Sopenharmony_ci 217db96d56Sopenharmony_cidef build_pattern(): 227db96d56Sopenharmony_ci #bare = set() 237db96d56Sopenharmony_ci for module, replace in list(MAPPING.items()): 247db96d56Sopenharmony_ci for old_attr, new_attr in list(replace.items()): 257db96d56Sopenharmony_ci LOOKUP[(module, old_attr)] = new_attr 267db96d56Sopenharmony_ci #bare.add(module) 277db96d56Sopenharmony_ci #bare.add(old_attr) 287db96d56Sopenharmony_ci #yield """ 297db96d56Sopenharmony_ci # import_name< 'import' (module=%r 307db96d56Sopenharmony_ci # | dotted_as_names< any* module=%r any* >) > 317db96d56Sopenharmony_ci # """ % (module, module) 327db96d56Sopenharmony_ci yield """ 337db96d56Sopenharmony_ci import_from< 'from' module_name=%r 'import' 347db96d56Sopenharmony_ci ( attr_name=%r | import_as_name< attr_name=%r 'as' any >) > 357db96d56Sopenharmony_ci """ % (module, old_attr, old_attr) 367db96d56Sopenharmony_ci yield """ 377db96d56Sopenharmony_ci power< module_name=%r trailer< '.' attr_name=%r > any* > 387db96d56Sopenharmony_ci """ % (module, old_attr) 397db96d56Sopenharmony_ci #yield """bare_name=%s""" % alternates(bare) 407db96d56Sopenharmony_ci 417db96d56Sopenharmony_ci 427db96d56Sopenharmony_ciclass FixRenames(fixer_base.BaseFix): 437db96d56Sopenharmony_ci BM_compatible = True 447db96d56Sopenharmony_ci PATTERN = "|".join(build_pattern()) 457db96d56Sopenharmony_ci 467db96d56Sopenharmony_ci order = "pre" # Pre-order tree traversal 477db96d56Sopenharmony_ci 487db96d56Sopenharmony_ci # Don't match the node if it's within another match 497db96d56Sopenharmony_ci def match(self, node): 507db96d56Sopenharmony_ci match = super(FixRenames, self).match 517db96d56Sopenharmony_ci results = match(node) 527db96d56Sopenharmony_ci if results: 537db96d56Sopenharmony_ci if any(match(obj) for obj in attr_chain(node, "parent")): 547db96d56Sopenharmony_ci return False 557db96d56Sopenharmony_ci return results 567db96d56Sopenharmony_ci return False 577db96d56Sopenharmony_ci 587db96d56Sopenharmony_ci #def start_tree(self, tree, filename): 597db96d56Sopenharmony_ci # super(FixRenames, self).start_tree(tree, filename) 607db96d56Sopenharmony_ci # self.replace = {} 617db96d56Sopenharmony_ci 627db96d56Sopenharmony_ci def transform(self, node, results): 637db96d56Sopenharmony_ci mod_name = results.get("module_name") 647db96d56Sopenharmony_ci attr_name = results.get("attr_name") 657db96d56Sopenharmony_ci #bare_name = results.get("bare_name") 667db96d56Sopenharmony_ci #import_mod = results.get("module") 677db96d56Sopenharmony_ci 687db96d56Sopenharmony_ci if mod_name and attr_name: 697db96d56Sopenharmony_ci new_attr = LOOKUP[(mod_name.value, attr_name.value)] 707db96d56Sopenharmony_ci attr_name.replace(Name(new_attr, prefix=attr_name.prefix)) 71