python 3 port: manual fixes, remove 2to3 from setup.py, remove fixers
diff --git a/jinja2/parser.py b/jinja2/parser.py
index b4b06fe..520e88f 100644
--- a/jinja2/parser.py
+++ b/jinja2/parser.py
@@ -10,10 +10,9 @@
"""
from jinja2 import nodes
from jinja2.exceptions import TemplateSyntaxError, TemplateAssertionError
-from jinja2.utils import next
from jinja2.lexer import describe_token, describe_token_expr
-from six.moves import map
-from six.moves import zip
+import six
+from six.moves import map, zip
#: statements that callinto
@@ -164,12 +163,12 @@
self.fail_eof(end_tokens)
if drop_needle:
- next(self.stream)
+ six.advance_iterator(self.stream)
return result
def parse_set(self):
"""Parse an assign statement."""
- lineno = next(self.stream).lineno
+ lineno = six.advance_iterator(self.stream).lineno
target = self.parse_assign_target()
self.stream.expect('assign')
expr = self.parse_tuple()
@@ -187,7 +186,7 @@
test = self.parse_expression()
recursive = self.stream.skip_if('name:recursive')
body = self.parse_statements(('name:endfor', 'name:else'))
- if next(self.stream).value == 'endfor':
+ if six.advance_iterator(self.stream).value == 'endfor':
else_ = []
else:
else_ = self.parse_statements(('name:endfor',), drop_needle=True)
@@ -201,7 +200,7 @@
node.test = self.parse_tuple(with_condexpr=False)
node.body = self.parse_statements(('name:elif', 'name:else',
'name:endif'))
- token = next(self.stream)
+ token = six.advance_iterator(self.stream)
if token.test('name:elif'):
new_node = nodes.If(lineno=self.stream.current.lineno)
node.else_ = [new_node]
@@ -216,7 +215,7 @@
return result
def parse_block(self):
- node = nodes.Block(lineno=next(self.stream).lineno)
+ node = nodes.Block(lineno=six.advance_iterator(self.stream).lineno)
node.name = self.stream.expect('name').value
node.scoped = self.stream.skip_if('name:scoped')
@@ -233,21 +232,21 @@
return node
def parse_extends(self):
- node = nodes.Extends(lineno=next(self.stream).lineno)
+ node = nodes.Extends(lineno=six.advance_iterator(self.stream).lineno)
node.template = self.parse_expression()
return node
def parse_import_context(self, node, default):
if self.stream.current.test_any('name:with', 'name:without') and \
self.stream.look().test('name:context'):
- node.with_context = next(self.stream).value == 'with'
+ node.with_context = six.advance_iterator(self.stream).value == 'with'
self.stream.skip()
else:
node.with_context = default
return node
def parse_include(self):
- node = nodes.Include(lineno=next(self.stream).lineno)
+ node = nodes.Include(lineno=six.advance_iterator(self.stream).lineno)
node.template = self.parse_expression()
if self.stream.current.test('name:ignore') and \
self.stream.look().test('name:missing'):
@@ -258,14 +257,14 @@
return self.parse_import_context(node, True)
def parse_import(self):
- node = nodes.Import(lineno=next(self.stream).lineno)
+ node = nodes.Import(lineno=six.advance_iterator(self.stream).lineno)
node.template = self.parse_expression()
self.stream.expect('name:as')
node.target = self.parse_assign_target(name_only=True).name
return self.parse_import_context(node, False)
def parse_from(self):
- node = nodes.FromImport(lineno=next(self.stream).lineno)
+ node = nodes.FromImport(lineno=six.advance_iterator(self.stream).lineno)
node.template = self.parse_expression()
self.stream.expect('name:import')
node.names = []
@@ -273,7 +272,7 @@
def parse_context():
if self.stream.current.value in ('with', 'without') and \
self.stream.look().test('name:context'):
- node.with_context = next(self.stream).value == 'with'
+ node.with_context = six.advance_iterator(self.stream).value == 'with'
self.stream.skip()
return True
return False
@@ -318,7 +317,7 @@
self.stream.expect('rparen')
def parse_call_block(self):
- node = nodes.CallBlock(lineno=next(self.stream).lineno)
+ node = nodes.CallBlock(lineno=six.advance_iterator(self.stream).lineno)
if self.stream.current.type == 'lparen':
self.parse_signature(node)
else:
@@ -332,14 +331,14 @@
return node
def parse_filter_block(self):
- node = nodes.FilterBlock(lineno=next(self.stream).lineno)
+ node = nodes.FilterBlock(lineno=six.advance_iterator(self.stream).lineno)
node.filter = self.parse_filter(None, start_inline=True)
node.body = self.parse_statements(('name:endfilter',),
drop_needle=True)
return node
def parse_macro(self):
- node = nodes.Macro(lineno=next(self.stream).lineno)
+ node = nodes.Macro(lineno=six.advance_iterator(self.stream).lineno)
node.name = self.parse_assign_target(name_only=True).name
self.parse_signature(node)
node.body = self.parse_statements(('name:endmacro',),
@@ -347,7 +346,7 @@
return node
def parse_print(self):
- node = nodes.Output(lineno=next(self.stream).lineno)
+ node = nodes.Output(lineno=six.advance_iterator(self.stream).lineno)
node.nodes = []
while self.stream.current.type != 'block_end':
if node.nodes:
@@ -421,7 +420,7 @@
def parse_not(self):
if self.stream.current.test('name:not'):
- lineno = next(self.stream).lineno
+ lineno = six.advance_iterator(self.stream).lineno
return nodes.Not(self.parse_not(), lineno=lineno)
return self.parse_compare()
@@ -432,7 +431,7 @@
while 1:
token_type = self.stream.current.type
if token_type in _compare_operators:
- next(self.stream)
+ six.advance_iterator(self.stream)
ops.append(nodes.Operand(token_type, self.parse_add()))
elif self.stream.skip_if('name:in'):
ops.append(nodes.Operand('in', self.parse_add()))
@@ -451,7 +450,7 @@
lineno = self.stream.current.lineno
left = self.parse_sub()
while self.stream.current.type == 'add':
- next(self.stream)
+ six.advance_iterator(self.stream)
right = self.parse_sub()
left = nodes.Add(left, right, lineno=lineno)
lineno = self.stream.current.lineno
@@ -461,7 +460,7 @@
lineno = self.stream.current.lineno
left = self.parse_concat()
while self.stream.current.type == 'sub':
- next(self.stream)
+ six.advance_iterator(self.stream)
right = self.parse_concat()
left = nodes.Sub(left, right, lineno=lineno)
lineno = self.stream.current.lineno
@@ -471,7 +470,7 @@
lineno = self.stream.current.lineno
args = [self.parse_mul()]
while self.stream.current.type == 'tilde':
- next(self.stream)
+ six.advance_iterator(self.stream)
args.append(self.parse_mul())
if len(args) == 1:
return args[0]
@@ -481,7 +480,7 @@
lineno = self.stream.current.lineno
left = self.parse_div()
while self.stream.current.type == 'mul':
- next(self.stream)
+ six.advance_iterator(self.stream)
right = self.parse_div()
left = nodes.Mul(left, right, lineno=lineno)
lineno = self.stream.current.lineno
@@ -491,7 +490,7 @@
lineno = self.stream.current.lineno
left = self.parse_floordiv()
while self.stream.current.type == 'div':
- next(self.stream)
+ six.advance_iterator(self.stream)
right = self.parse_floordiv()
left = nodes.Div(left, right, lineno=lineno)
lineno = self.stream.current.lineno
@@ -501,7 +500,7 @@
lineno = self.stream.current.lineno
left = self.parse_mod()
while self.stream.current.type == 'floordiv':
- next(self.stream)
+ six.advance_iterator(self.stream)
right = self.parse_mod()
left = nodes.FloorDiv(left, right, lineno=lineno)
lineno = self.stream.current.lineno
@@ -511,7 +510,7 @@
lineno = self.stream.current.lineno
left = self.parse_pow()
while self.stream.current.type == 'mod':
- next(self.stream)
+ six.advance_iterator(self.stream)
right = self.parse_pow()
left = nodes.Mod(left, right, lineno=lineno)
lineno = self.stream.current.lineno
@@ -521,7 +520,7 @@
lineno = self.stream.current.lineno
left = self.parse_unary()
while self.stream.current.type == 'pow':
- next(self.stream)
+ six.advance_iterator(self.stream)
right = self.parse_unary()
left = nodes.Pow(left, right, lineno=lineno)
lineno = self.stream.current.lineno
@@ -531,10 +530,10 @@
token_type = self.stream.current.type
lineno = self.stream.current.lineno
if token_type == 'sub':
- next(self.stream)
+ six.advance_iterator(self.stream)
node = nodes.Neg(self.parse_unary(False), lineno=lineno)
elif token_type == 'add':
- next(self.stream)
+ six.advance_iterator(self.stream)
node = nodes.Pos(self.parse_unary(False), lineno=lineno)
else:
node = self.parse_primary()
@@ -553,20 +552,20 @@
node = nodes.Const(None, lineno=token.lineno)
else:
node = nodes.Name(token.value, 'load', lineno=token.lineno)
- next(self.stream)
+ six.advance_iterator(self.stream)
elif token.type == 'string':
- next(self.stream)
+ six.advance_iterator(self.stream)
buf = [token.value]
lineno = token.lineno
while self.stream.current.type == 'string':
buf.append(self.stream.current.value)
- next(self.stream)
+ six.advance_iterator(self.stream)
node = nodes.Const(''.join(buf), lineno=lineno)
elif token.type in ('integer', 'float'):
- next(self.stream)
+ six.advance_iterator(self.stream)
node = nodes.Const(token.value, lineno=token.lineno)
elif token.type == 'lparen':
- next(self.stream)
+ six.advance_iterator(self.stream)
node = self.parse_tuple(explicit_parentheses=True)
self.stream.expect('rparen')
elif token.type == 'lbracket':
@@ -688,10 +687,10 @@
return node
def parse_subscript(self, node):
- token = next(self.stream)
+ token = six.advance_iterator(self.stream)
if token.type == 'dot':
attr_token = self.stream.current
- next(self.stream)
+ six.advance_iterator(self.stream)
if attr_token.type == 'name':
return nodes.Getattr(node, attr_token.value, 'load',
lineno=token.lineno)
@@ -717,13 +716,13 @@
lineno = self.stream.current.lineno
if self.stream.current.type == 'colon':
- next(self.stream)
+ six.advance_iterator(self.stream)
args = [None]
else:
node = self.parse_expression()
if self.stream.current.type != 'colon':
return node
- next(self.stream)
+ six.advance_iterator(self.stream)
args = [node]
if self.stream.current.type == 'colon':
@@ -734,7 +733,7 @@
args.append(None)
if self.stream.current.type == 'colon':
- next(self.stream)
+ six.advance_iterator(self.stream)
if self.stream.current.type not in ('rbracket', 'comma'):
args.append(self.parse_expression())
else:
@@ -764,11 +763,11 @@
break
if self.stream.current.type == 'mul':
ensure(dyn_args is None and dyn_kwargs is None)
- next(self.stream)
+ six.advance_iterator(self.stream)
dyn_args = self.parse_expression()
elif self.stream.current.type == 'pow':
ensure(dyn_kwargs is None)
- next(self.stream)
+ six.advance_iterator(self.stream)
dyn_kwargs = self.parse_expression()
else:
ensure(dyn_args is None and dyn_kwargs is None)
@@ -794,11 +793,11 @@
def parse_filter(self, node, start_inline=False):
while self.stream.current.type == 'pipe' or start_inline:
if not start_inline:
- next(self.stream)
+ six.advance_iterator(self.stream)
token = self.stream.expect('name')
name = token.value
while self.stream.current.type == 'dot':
- next(self.stream)
+ six.advance_iterator(self.stream)
name += '.' + self.stream.expect('name').value
if self.stream.current.type == 'lparen':
args, kwargs, dyn_args, dyn_kwargs = self.parse_call(None)
@@ -812,15 +811,15 @@
return node
def parse_test(self, node):
- token = next(self.stream)
+ token = six.advance_iterator(self.stream)
if self.stream.current.test('name:not'):
- next(self.stream)
+ six.advance_iterator(self.stream)
negated = True
else:
negated = False
name = self.stream.expect('name').value
while self.stream.current.type == 'dot':
- next(self.stream)
+ six.advance_iterator(self.stream)
name += '.' + self.stream.expect('name').value
dyn_args = dyn_kwargs = None
kwargs = []
@@ -863,14 +862,14 @@
if token.value:
add_data(nodes.TemplateData(token.value,
lineno=token.lineno))
- next(self.stream)
+ six.advance_iterator(self.stream)
elif token.type == 'variable_begin':
- next(self.stream)
+ six.advance_iterator(self.stream)
add_data(self.parse_tuple(with_condexpr=True))
self.stream.expect('variable_end')
elif token.type == 'block_begin':
flush_data()
- next(self.stream)
+ six.advance_iterator(self.stream)
if end_tokens is not None and \
self.stream.current.test_any(*end_tokens):
return body