bundled/jinja2/custom_fixers/fix_broken_reraising.py @ fc97fabaf28d

Update windows contrib script for current TortoiseHg version (2.6.2).

TortoiseHg 2.6.2 is packaged with Python 2.7.3 (and not 2.6.x), and now
includes some of the libraries that this script previously needed to copy into
place.
author Chris Nielsen
date Fri, 18 Jan 2013 11:51:36 -0500
parents 256716e3a3d7
children (none)
from lib2to3 import fixer_base, pytree
from lib2to3.fixer_util import Name, BlankLine, Name, Attr, ArgList


class FixBrokenReraising(fixer_base.BaseFix):
    PATTERN = """
    raise_stmt< 'raise' any ',' val=any ',' tb=any >
    """

    # run before the broken 2to3 checker with the same goal
    # tries to rewrite it with a rule that does not work out for jinja
    run_order = 1

    def transform(self, node, results):
        tb = results['tb'].clone()
        tb.prefix = ''
        with_tb = Attr(results['val'].clone(), Name('with_traceback')) + \
                  [ArgList([tb])]
        new = pytree.Node(self.syms.simple_stmt, [Name("raise")] + with_tb)
        new.prefix = node.prefix
        return new