| 
									
										
										
										
											2012-12-07 22:44:10 -05:00
										 |  |  | """Fixer for reload().
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-07-23 09:49:08 +03:00
										 |  |  | reload(s) -> importlib.reload(s)"""
 | 
					
						
							| 
									
										
										
										
											2012-12-07 22:44:10 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  | # 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): | 
					
						
							| 
									
										
										
										
											2016-09-09 18:18:52 -07:00
										 |  |  |         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 | 
					
						
							| 
									
										
										
										
											2019-10-23 23:19:07 -07:00
										 |  |  |                     obj.children[0].value in {'**', '*'}): | 
					
						
							| 
									
										
										
										
											2016-09-09 18:18:52 -07:00
										 |  |  |                     return  # Make no change. | 
					
						
							| 
									
										
										
										
											2018-07-23 09:49:08 +03:00
										 |  |  |         names = ('importlib', 'reload') | 
					
						
							| 
									
										
										
										
											2012-12-07 22:44:10 -05:00
										 |  |  |         new = ImportAndCall(node, results, names) | 
					
						
							| 
									
										
										
										
											2018-07-23 09:49:08 +03:00
										 |  |  |         touch_import(None, 'importlib', node) | 
					
						
							| 
									
										
										
										
											2012-12-07 22:44:10 -05:00
										 |  |  |         return new |