| """Fix bound method attributes (method.im_? -> method.__?__). |
| """ |
| # Author: Christian Heimes |
| |
| # Local imports |
| from .. import fixer_base |
| from ..fixer_util import Name |
| |
| MAP = { |
| "im_func" : "__func__", |
| "im_self" : "__self__", |
| "im_class" : "__self__.__class__" |
| } |
| |
| class FixMethodattrs(fixer_base.BaseFix): |
| BM_compatible = True |
| PATTERN = """ |
| power< any+ trailer< '.' attr=('im_func' | 'im_self' | 'im_class') > any* > |
| """ |
| |
| def transform(self, node, results): |
| attr = results["attr"][0] |
| new = unicode(MAP[attr.value]) |
| attr.replace(Name(new, prefix=attr.prefix)) |