| 
									
										
										
										
											2008-03-19 04:43:46 +00:00
										 |  |  | # Copyright 2007 Google, Inc. All Rights Reserved. | 
					
						
							|  |  |  | # Licensed to PSF under a Contributor Agreement. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | """Fixer for callable().
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
											  
											
												Merged revisions 76871-76872,77093-77095,77097-77101 via svnmerge from
svn+ssh://pythondev@svn.python.org/sandbox/trunk/2to3/lib2to3
........
  r76871 | benjamin.peterson | 2009-12-17 20:49:21 -0600 (Thu, 17 Dec 2009) | 1 line
  handle unencodable diffs gracefully #5093
........
  r76872 | benjamin.peterson | 2009-12-17 20:51:37 -0600 (Thu, 17 Dec 2009) | 1 line
  fix emacs header
........
  r77093 | benjamin.peterson | 2009-12-28 14:43:32 -0600 (Mon, 28 Dec 2009) | 7 lines
  replace callable(x) with isinstance(x, collections.Callable) #7006
  This is a more accurate translation than hasattr(x, '__call__') which failed in
  the case that somebody had put __call__ in the instance dictionary.
  Patch mostly by Joe Amenta.
........
  r77094 | benjamin.peterson | 2009-12-28 14:45:13 -0600 (Mon, 28 Dec 2009) | 2 lines
  deuglify imports
........
  r77095 | benjamin.peterson | 2009-12-28 14:49:23 -0600 (Mon, 28 Dec 2009) | 1 line
  remove unused flag
........
  r77097 | benjamin.peterson | 2009-12-28 16:12:13 -0600 (Mon, 28 Dec 2009) | 2 lines
  clean up imports and whitespace
........
  r77098 | benjamin.peterson | 2009-12-28 16:43:35 -0600 (Mon, 28 Dec 2009) | 1 line
  *** empty log message ***
........
  r77099 | benjamin.peterson | 2009-12-28 16:45:10 -0600 (Mon, 28 Dec 2009) | 1 line
  revert unintended change
........
  r77100 | benjamin.peterson | 2009-12-28 16:53:21 -0600 (Mon, 28 Dec 2009) | 1 line
  revert unintended changes
........
  r77101 | benjamin.peterson | 2009-12-28 17:46:02 -0600 (Mon, 28 Dec 2009) | 1 line
  normalize whitespace
........
											
										 
											2009-12-28 23:50:41 +00:00
										 |  |  | This converts callable(obj) into isinstance(obj, collections.Callable), adding a | 
					
						
							|  |  |  | collections import if needed."""
 | 
					
						
							| 
									
										
										
										
											2008-03-19 04:43:46 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | # Local imports | 
					
						
							| 
									
										
											  
											
												Merged revisions 76871-76872,77093-77095,77097-77101 via svnmerge from
svn+ssh://pythondev@svn.python.org/sandbox/trunk/2to3/lib2to3
........
  r76871 | benjamin.peterson | 2009-12-17 20:49:21 -0600 (Thu, 17 Dec 2009) | 1 line
  handle unencodable diffs gracefully #5093
........
  r76872 | benjamin.peterson | 2009-12-17 20:51:37 -0600 (Thu, 17 Dec 2009) | 1 line
  fix emacs header
........
  r77093 | benjamin.peterson | 2009-12-28 14:43:32 -0600 (Mon, 28 Dec 2009) | 7 lines
  replace callable(x) with isinstance(x, collections.Callable) #7006
  This is a more accurate translation than hasattr(x, '__call__') which failed in
  the case that somebody had put __call__ in the instance dictionary.
  Patch mostly by Joe Amenta.
........
  r77094 | benjamin.peterson | 2009-12-28 14:45:13 -0600 (Mon, 28 Dec 2009) | 2 lines
  deuglify imports
........
  r77095 | benjamin.peterson | 2009-12-28 14:49:23 -0600 (Mon, 28 Dec 2009) | 1 line
  remove unused flag
........
  r77097 | benjamin.peterson | 2009-12-28 16:12:13 -0600 (Mon, 28 Dec 2009) | 2 lines
  clean up imports and whitespace
........
  r77098 | benjamin.peterson | 2009-12-28 16:43:35 -0600 (Mon, 28 Dec 2009) | 1 line
  *** empty log message ***
........
  r77099 | benjamin.peterson | 2009-12-28 16:45:10 -0600 (Mon, 28 Dec 2009) | 1 line
  revert unintended change
........
  r77100 | benjamin.peterson | 2009-12-28 16:53:21 -0600 (Mon, 28 Dec 2009) | 1 line
  revert unintended changes
........
  r77101 | benjamin.peterson | 2009-12-28 17:46:02 -0600 (Mon, 28 Dec 2009) | 1 line
  normalize whitespace
........
											
										 
											2009-12-28 23:50:41 +00:00
										 |  |  | from lib2to3 import fixer_base | 
					
						
							|  |  |  | from lib2to3.fixer_util import Call, Name, String, Attr, touch_import | 
					
						
							| 
									
										
										
										
											2008-03-19 04:43:46 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
											  
											
												Merged revisions 63661,63666,63695,63711,63729,63769,63790,63880,63886 via svnmerge from
svn+ssh://pythondev@svn.python.org/sandbox/trunk/2to3/lib2to3
........
  r63661 | georg.brandl | 2008-05-26 05:26:20 -0500 (Mon, 26 May 2008) | 2 lines
  Add import fixes for dbm package.
........
  r63666 | georg.brandl | 2008-05-26 05:49:09 -0500 (Mon, 26 May 2008) | 2 lines
  Add xmlrpc package fixes.
........
  r63695 | georg.brandl | 2008-05-26 10:14:33 -0500 (Mon, 26 May 2008) | 2 lines
  Add fixer entries for http package.
........
  r63711 | benjamin.peterson | 2008-05-26 13:43:51 -0500 (Mon, 26 May 2008) | 2 lines
  add import mapping for test.test_support -> test.support
........
  r63729 | benjamin.peterson | 2008-05-26 16:31:03 -0500 (Mon, 26 May 2008) | 2 lines
  mapping for commands module -> subprocess
........
  r63769 | brett.cannon | 2008-05-29 00:13:13 -0500 (Thu, 29 May 2008) | 1 line
  Fixer for UserString.UserString over to the collections module.
........
  r63790 | brett.cannon | 2008-05-29 14:13:51 -0500 (Thu, 29 May 2008) | 4 lines
  Add a fixer for UserList.
  Closes issue #2878. Thanks to Quentin Gallet-Gilles for the patch.
........
  r63880 | collin.winter | 2008-06-01 18:09:38 -0500 (Sun, 01 Jun 2008) | 6 lines
  Move lib2to3/fixes/{basefix,util}.py down to lib2to3/.
  This is step 1 of turning lib2to3/ into a general-purpose refactoring
  library, reusable by other projects.
........
  r63886 | collin.winter | 2008-06-01 22:15:01 -0500 (Sun, 01 Jun 2008) | 5 lines
  Allow refactoring tools to specify a directory for fixer modules.
  This is step 2 of turning lib2to3/ into a general-purpose refactoring
  library, reusable by other projects. Step 1: r63880.
........
											
										 
											2008-06-15 02:31:05 +00:00
										 |  |  | class FixCallable(fixer_base.BaseFix): | 
					
						
							| 
									
										
										
										
											2008-03-19 04:43:46 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     # Ignore callable(*args) or use of keywords. | 
					
						
							|  |  |  |     # Either could be a hint that the builtin callable() is not being used. | 
					
						
							|  |  |  |     PATTERN = """
 | 
					
						
							|  |  |  |     power< 'callable' | 
					
						
							|  |  |  |            trailer< lpar='(' | 
					
						
							|  |  |  |                     ( not(arglist | argument<any '=' any>) func=any | 
					
						
							|  |  |  |                       | func=arglist<(not argument<any '=' any>) any ','> ) | 
					
						
							|  |  |  |                     rpar=')' > | 
					
						
							|  |  |  |            after=any* | 
					
						
							|  |  |  |     > | 
					
						
							|  |  |  |     """
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def transform(self, node, results): | 
					
						
							| 
									
										
											  
											
												Merged revisions 76871-76872,77093-77095,77097-77101 via svnmerge from
svn+ssh://pythondev@svn.python.org/sandbox/trunk/2to3/lib2to3
........
  r76871 | benjamin.peterson | 2009-12-17 20:49:21 -0600 (Thu, 17 Dec 2009) | 1 line
  handle unencodable diffs gracefully #5093
........
  r76872 | benjamin.peterson | 2009-12-17 20:51:37 -0600 (Thu, 17 Dec 2009) | 1 line
  fix emacs header
........
  r77093 | benjamin.peterson | 2009-12-28 14:43:32 -0600 (Mon, 28 Dec 2009) | 7 lines
  replace callable(x) with isinstance(x, collections.Callable) #7006
  This is a more accurate translation than hasattr(x, '__call__') which failed in
  the case that somebody had put __call__ in the instance dictionary.
  Patch mostly by Joe Amenta.
........
  r77094 | benjamin.peterson | 2009-12-28 14:45:13 -0600 (Mon, 28 Dec 2009) | 2 lines
  deuglify imports
........
  r77095 | benjamin.peterson | 2009-12-28 14:49:23 -0600 (Mon, 28 Dec 2009) | 1 line
  remove unused flag
........
  r77097 | benjamin.peterson | 2009-12-28 16:12:13 -0600 (Mon, 28 Dec 2009) | 2 lines
  clean up imports and whitespace
........
  r77098 | benjamin.peterson | 2009-12-28 16:43:35 -0600 (Mon, 28 Dec 2009) | 1 line
  *** empty log message ***
........
  r77099 | benjamin.peterson | 2009-12-28 16:45:10 -0600 (Mon, 28 Dec 2009) | 1 line
  revert unintended change
........
  r77100 | benjamin.peterson | 2009-12-28 16:53:21 -0600 (Mon, 28 Dec 2009) | 1 line
  revert unintended changes
........
  r77101 | benjamin.peterson | 2009-12-28 17:46:02 -0600 (Mon, 28 Dec 2009) | 1 line
  normalize whitespace
........
											
										 
											2009-12-28 23:50:41 +00:00
										 |  |  |         func = results['func'] | 
					
						
							| 
									
										
										
										
											2008-03-19 04:43:46 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
											  
											
												Merged revisions 76871-76872,77093-77095,77097-77101 via svnmerge from
svn+ssh://pythondev@svn.python.org/sandbox/trunk/2to3/lib2to3
........
  r76871 | benjamin.peterson | 2009-12-17 20:49:21 -0600 (Thu, 17 Dec 2009) | 1 line
  handle unencodable diffs gracefully #5093
........
  r76872 | benjamin.peterson | 2009-12-17 20:51:37 -0600 (Thu, 17 Dec 2009) | 1 line
  fix emacs header
........
  r77093 | benjamin.peterson | 2009-12-28 14:43:32 -0600 (Mon, 28 Dec 2009) | 7 lines
  replace callable(x) with isinstance(x, collections.Callable) #7006
  This is a more accurate translation than hasattr(x, '__call__') which failed in
  the case that somebody had put __call__ in the instance dictionary.
  Patch mostly by Joe Amenta.
........
  r77094 | benjamin.peterson | 2009-12-28 14:45:13 -0600 (Mon, 28 Dec 2009) | 2 lines
  deuglify imports
........
  r77095 | benjamin.peterson | 2009-12-28 14:49:23 -0600 (Mon, 28 Dec 2009) | 1 line
  remove unused flag
........
  r77097 | benjamin.peterson | 2009-12-28 16:12:13 -0600 (Mon, 28 Dec 2009) | 2 lines
  clean up imports and whitespace
........
  r77098 | benjamin.peterson | 2009-12-28 16:43:35 -0600 (Mon, 28 Dec 2009) | 1 line
  *** empty log message ***
........
  r77099 | benjamin.peterson | 2009-12-28 16:45:10 -0600 (Mon, 28 Dec 2009) | 1 line
  revert unintended change
........
  r77100 | benjamin.peterson | 2009-12-28 16:53:21 -0600 (Mon, 28 Dec 2009) | 1 line
  revert unintended changes
........
  r77101 | benjamin.peterson | 2009-12-28 17:46:02 -0600 (Mon, 28 Dec 2009) | 1 line
  normalize whitespace
........
											
										 
											2009-12-28 23:50:41 +00:00
										 |  |  |         touch_import(None, u'collections', node=node) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         args = [func.clone(), String(u', ')] | 
					
						
							|  |  |  |         args.extend(Attr(Name(u'collections'), Name(u'Callable'))) | 
					
						
							|  |  |  |         return Call(Name(u'isinstance'), args, prefix=node.prefix) |