home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2011 July / maximum-cd-2011-07.iso / DiscContents / LibO_3.3.2_Win_x86_install_multi.exe / libreoffice1.cab / fix_callable.py < prev    next >
Encoding:
Python Source  |  2011-03-15  |  952 b   |  32 lines

  1. # Copyright 2007 Google, Inc. All Rights Reserved.
  2. # Licensed to PSF under a Contributor Agreement.
  3.  
  4. """Fixer for callable().
  5.  
  6. This converts callable(obj) into hasattr(obj, '__call__')."""
  7.  
  8. # Local imports
  9. from .. import pytree
  10. from .. import fixer_base
  11. from ..fixer_util import Call, Name, String
  12.  
  13. class FixCallable(fixer_base.BaseFix):
  14.  
  15.     # Ignore callable(*args) or use of keywords.
  16.     # Either could be a hint that the builtin callable() is not being used.
  17.     PATTERN = """
  18.     power< 'callable'
  19.            trailer< lpar='('
  20.                     ( not(arglist | argument<any '=' any>) func=any
  21.                       | func=arglist<(not argument<any '=' any>) any ','> )
  22.                     rpar=')' >
  23.            after=any*
  24.     >
  25.     """
  26.  
  27.     def transform(self, node, results):
  28.         func = results["func"]
  29.  
  30.         args = [func.clone(), String(', '), String("'__call__'")]
  31.         return Call(Name("hasattr"), args, prefix=node.get_prefix())
  32.