17db96d56Sopenharmony_ci"""Fixer for reload(). 27db96d56Sopenharmony_ci 37db96d56Sopenharmony_cireload(s) -> importlib.reload(s)""" 47db96d56Sopenharmony_ci 57db96d56Sopenharmony_ci# Local imports 67db96d56Sopenharmony_cifrom .. import fixer_base 77db96d56Sopenharmony_cifrom ..fixer_util import ImportAndCall, touch_import 87db96d56Sopenharmony_ci 97db96d56Sopenharmony_ci 107db96d56Sopenharmony_ciclass FixReload(fixer_base.BaseFix): 117db96d56Sopenharmony_ci BM_compatible = True 127db96d56Sopenharmony_ci order = "pre" 137db96d56Sopenharmony_ci 147db96d56Sopenharmony_ci PATTERN = """ 157db96d56Sopenharmony_ci power< 'reload' 167db96d56Sopenharmony_ci trailer< lpar='(' 177db96d56Sopenharmony_ci ( not(arglist | argument<any '=' any>) obj=any 187db96d56Sopenharmony_ci | obj=arglist<(not argument<any '=' any>) any ','> ) 197db96d56Sopenharmony_ci rpar=')' > 207db96d56Sopenharmony_ci after=any* 217db96d56Sopenharmony_ci > 227db96d56Sopenharmony_ci """ 237db96d56Sopenharmony_ci 247db96d56Sopenharmony_ci def transform(self, node, results): 257db96d56Sopenharmony_ci if results: 267db96d56Sopenharmony_ci # I feel like we should be able to express this logic in the 277db96d56Sopenharmony_ci # PATTERN above but I don't know how to do it so... 287db96d56Sopenharmony_ci obj = results['obj'] 297db96d56Sopenharmony_ci if obj: 307db96d56Sopenharmony_ci if (obj.type == self.syms.argument and 317db96d56Sopenharmony_ci obj.children[0].value in {'**', '*'}): 327db96d56Sopenharmony_ci return # Make no change. 337db96d56Sopenharmony_ci names = ('importlib', 'reload') 347db96d56Sopenharmony_ci new = ImportAndCall(node, results, names) 357db96d56Sopenharmony_ci touch_import(None, 'importlib', node) 367db96d56Sopenharmony_ci return new 37