python 3 port: manual fixes, remove 2to3 from setup.py, remove fixers
diff --git a/jinja2/ext.py b/jinja2/ext.py
index 984a4d9..0652a34 100644
--- a/jinja2/ext.py
+++ b/jinja2/ext.py
@@ -16,7 +16,7 @@
from jinja2.environment import Environment
from jinja2.runtime import Undefined, concat
from jinja2.exceptions import TemplateAssertionError, TemplateSyntaxError
-from jinja2.utils import contextfunction, import_string, Markup, next
+from jinja2.utils import contextfunction, import_string, Markup
import six
@@ -35,7 +35,7 @@
return rv
-class Extension(object):
+class Extension(six.with_metaclass(ExtensionRegistry, object)):
"""Extensions can be used to add extra functionality to the Jinja template
system at the parser level. Custom extensions are bound to an environment
but may not store environment specific data on `self`. The reason for
@@ -206,13 +206,13 @@
self.environment.globals.pop(key, None)
def _extract(self, source, gettext_functions=GETTEXT_FUNCTIONS):
- if isinstance(source, basestring):
+ if isinstance(source, six.string_types):
source = self.environment.parse(source)
return extract_from_ast(source, gettext_functions)
def parse(self, parser):
"""Parse a translatable tag."""
- lineno = next(parser.stream).lineno
+ lineno = six.advance_iterator(parser.stream).lineno
num_called_num = False
# find all the variables referenced. Additionally a variable can be
@@ -236,7 +236,7 @@
# expressions
if parser.stream.current.type == 'assign':
- next(parser.stream)
+ six.advance_iterator(parser.stream)
variables[name.value] = var = parser.parse_expression()
else:
variables[name.value] = var = nodes.Name(name.value, 'load')
@@ -262,7 +262,7 @@
# if we have a pluralize block, we parse that too
if parser.stream.current.test('name:pluralize'):
have_plural = True
- next(parser.stream)
+ six.advance_iterator(parser.stream)
if parser.stream.current.type != 'block_end':
name = parser.stream.expect('name')
if name.value not in variables:
@@ -273,10 +273,10 @@
num_called_num = name.value == 'num'
parser.stream.expect('block_end')
plural_names, plural = self._parse_block(parser, False)
- next(parser.stream)
+ six.advance_iterator(parser.stream)
referenced.update(plural_names)
else:
- next(parser.stream)
+ six.advance_iterator(parser.stream)
# register free names as simple name expressions
for var in referenced:
@@ -301,15 +301,15 @@
while 1:
if parser.stream.current.type == 'data':
buf.append(parser.stream.current.value.replace('%', '%%'))
- next(parser.stream)
+ six.advance_iterator(parser.stream)
elif parser.stream.current.type == 'variable_begin':
- next(parser.stream)
+ six.advance_iterator(parser.stream)
name = parser.stream.expect('name').value
referenced.append(name)
buf.append('%%(%s)s' % name)
parser.stream.expect('variable_end')
elif parser.stream.current.type == 'block_begin':
- next(parser.stream)
+ six.advance_iterator(parser.stream)
if parser.stream.current.test('name:endtrans'):
break
elif parser.stream.current.test('name:pluralize'):
@@ -382,7 +382,7 @@
tags = set(['do'])
def parse(self, parser):
- node = nodes.ExprStmt(lineno=next(parser.stream).lineno)
+ node = nodes.ExprStmt(lineno=six.advance_iterator(parser.stream).lineno)
node.node = parser.parse_tuple()
return node
@@ -392,7 +392,7 @@
tags = set(['break', 'continue'])
def parse(self, parser):
- token = next(parser.stream)
+ token = six.advance_iterator(parser.stream)
if token.value == 'break':
return nodes.Break(lineno=token.lineno)
return nodes.Continue(lineno=token.lineno)
@@ -403,7 +403,7 @@
tags = set(['with'])
def parse(self, parser):
- node = nodes.Scope(lineno=next(parser.stream).lineno)
+ node = nodes.Scope(lineno=six.advance_iterator(parser.stream).lineno)
assignments = []
while parser.stream.current.type != 'block_end':
lineno = parser.stream.current.lineno
@@ -424,7 +424,7 @@
tags = set(['autoescape'])
def parse(self, parser):
- node = nodes.ScopedEvalContextModifier(lineno=next(parser.stream).lineno)
+ node = nodes.ScopedEvalContextModifier(lineno=six.advance_iterator(parser.stream).lineno)
node.options = [
nodes.Keyword('autoescape', parser.parse_expression())
]
@@ -477,7 +477,7 @@
strings = []
for arg in node.args:
if isinstance(arg, nodes.Const) and \
- isinstance(arg.value, basestring):
+ isinstance(arg.value, six.string_types):
strings.append(arg.value)
else:
strings.append(None)