| """Fixer for reload(). | |
| reload(s) -> importlib.reload(s)""" | |
| # Local imports | |
| from .. import fixer_base | |
| from ..fixer_util import ImportAndCall, touch_import | |
| class FixReload(fixer_base.BaseFix): | |
| BM_compatible = True | |
| order = "pre" | |
| PATTERN = """ | |
| power< 'reload' | |
| trailer< lpar='(' | |
| ( not(arglist | argument<any '=' any>) obj=any | |
| | obj=arglist<(not argument<any '=' any>) any ','> ) | |
| rpar=')' > | |
| after=any* | |
| > | |
| """ | |
| def transform(self, node, results): | |
| if results: | |
| # I feel like we should be able to express this logic in the | |
| # PATTERN above but I don't know how to do it so... | |
| obj = results['obj'] | |
| if obj: | |
| if (obj.type == self.syms.argument and | |
| obj.children[0].value in {'**', '*'}): | |
| return # Make no change. | |
| names = ('importlib', 'reload') | |
| new = ImportAndCall(node, results, names) | |
| touch_import(None, 'importlib', node) | |
| return new | |