Home | History | Annotate | Download | only in fixes
      1 """Fix bound method attributes (method.im_? -> method.__?__).
      2 """
      3 # Author: Christian Heimes

      4 
      5 # Local imports

      6 from .. import fixer_base
      7 from ..fixer_util import Name
      8 
      9 MAP = {
     10     "im_func" : "__func__",
     11     "im_self" : "__self__",
     12     "im_class" : "__self__.__class__"
     13     }
     14 
     15 class FixMethodattrs(fixer_base.BaseFix):
     16     BM_compatible = True
     17     PATTERN = """
     18     power< any+ trailer< '.' attr=('im_func' | 'im_self' | 'im_class') > any* >
     19     """
     20 
     21     def transform(self, node, results):
     22         attr = results["attr"][0]
     23         new = unicode(MAP[attr.value])
     24         attr.replace(Name(new, prefix=attr.prefix))
     25