1"""Fix function attribute names (f.func_x -> f.__x__).""" 2# Author: Collin Winter 3 4# Local imports 5from .. import fixer_base 6from ..fixer_util import Name 7 8 9class FixFuncattrs(fixer_base.BaseFix): 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)) 22