blob: f3c1ecfec15393526e1cbbb6bb2ba590a87dac33 [file] [log] [blame]
Andrea Falcone1c4977f2020-07-23 10:58:25 -04001"""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 = unicode(MAP[attr.value])
24 attr.replace(Name(new, prefix=attr.prefix))