1"""Fix bound method attributes (method.im_? -> method.__?__). 2""" 3# Author: Christian Heimes 4 5# Local imports 6from .. import fixer_base 7from ..fixer_util import Name 8 9MAP = { 10 "im_func" : "__func__", 11 "im_self" : "__self__", 12 "im_class" : "__self__.__class__" 13 } 14 15class 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 = MAP[attr.value] 24 attr.replace(Name(new, prefix=attr.prefix)) 25