bundled/jinja2/custom_fixers/fix_broken_reraising.py @ 22de90ef33ed

Add identifiers to ReviewChangeset's and ReviewSignoff's.

The identifier of a rcset/rsignoff is the filename it was saved as, which is
the hash of its contents.

This will be useful when we want to add replies to comments/signoffs.

CLI support for this feature has also been added (using --verbose and --debug
flags with 'hg review [-r REV]'), as well as some simple unit tests.
author Steve Losh <steve@stevelosh.com>
date Sat, 27 Mar 2010 11:10:12 -0400
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