• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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