1 """Fix function attribute names (f.func_x -> f.__x__)."""
2 # Author: Collin Winter
3
4 # Local imports
5 from .. import fixer_base
6 from ..fixer_util import Name
7
8
9 class ESC[4;38;5;81mFixFuncattrs(ESC[4;38;5;149mfixer_baseESC[4;38;5;149m.ESC[4;38;5;149mBaseFix):
10 BM_compatible = True
11
12 PATTERN = """
13 power< any+ trailer< '.' attr=('func_closure' | 'func_doc' | 'func_globals'
14 | 'func_name' | 'func_defaults' | 'func_code'
15 | 'func_dict') > any* >
16 """
17
18 def transform(self, node, results):
19 attr = results["attr"][0]
20 attr.replace(Name(("__%s__" % attr.value[5:]),
21 prefix=attr.prefix))