| # Copyright 2006 Georg Brandl. |
| # Licensed to PSF under a Contributor Agreement. |
| |
| """Fixer for intern(). |
| |
| intern(s) -> sys.intern(s)""" |
| |
| # Local imports |
| from .. import pytree |
| from .. import fixer_base |
| from ..fixer_util import Name, Attr |
| |
| |
| class FixIntern(fixer_base.BaseFix): |
| |
| PATTERN = """ |
| power< 'intern' |
| trailer< lpar='(' |
| ( not(arglist | argument<any '=' any>) obj=any |
| | obj=arglist<(not argument<any '=' any>) any ','> ) |
| rpar=')' > |
| after=any* |
| > |
| """ |
| |
| def transform(self, node, results): |
| syms = self.syms |
| obj = results["obj"].clone() |
| if obj.type == syms.arglist: |
| newarglist = obj.clone() |
| else: |
| newarglist = pytree.Node(syms.arglist, [obj.clone()]) |
| after = results["after"] |
| if after: |
| after = [n.clone() for n in after] |
| new = pytree.Node(syms.power, |
| Attr(Name("sys"), Name("intern")) + |
| [pytree.Node(syms.trailer, |
| [results["lpar"].clone(), |
| newarglist, |
| results["rpar"].clone()])] + after) |
| new.set_prefix(node.get_prefix()) |
| return new |