Ajuda com extensão Jinja2 personalizada

Eu lutei para fazer com que essa extensão personalizada Jinja2 funcionasse - os documentos não estavam brincando quando disseram que escrever uma não era para "civis" - e finalmente consegui chegar a esse código de trabalho:

class WrapperExtension(Extension):

    tags = set(['wrap'])

    def parse(self, parser):
        lineno = parser.stream.next().lineno
        args = [parser.parse_expression()]
        args.append(nodes.Const(args[0].name))
        return nodes.CallBlock(
            self.call_method('_render', args),
            [], [], []).set_lineno(lineno)

    def _render(self, value, name, *args, **kwargs):
        if some_condition():
            return '<wrapper id="%s">%s</wrapper>' % (name, value)
        return value

Como eu disse, isso agora está funcionando. O que não tenho certeza é por que preciso retornarnodes.CallBlock emparse(), ao invés deself.call_method() (que retorna umnodes.Call objeto). Se alguém tiver alguma ideia - ou pode me indicar um tutorial sobre como escrever extensões -, informe-me.

questionAnswers(1)

yourAnswerToTheQuestion