/
opt
/
alt
/
python27
/
lib
/
python2.7
/
site-packages
/
jinja2
/
/opt/alt/python27/lib/python2.7/site-packages/jinja2
mkdir
upload
Name
Size
Mode
Actions
testsuite/
-
0755
rm
bccache.py
12334
0644
edit
dl
rm
bccache.pyc
14557
0644
edit
dl
rm
bccache.pyo
14605
0644
edit
dl
rm
compiler.py
61785
0644
edit
dl
rm
compiler.pyc
56040
0644
edit
dl
rm
compiler.pyo
56552
0644
edit
dl
rm
constants.py
1626
0644
edit
dl
rm
constants.pyc
1707
0644
edit
dl
rm
constants.pyo
1707
0644
edit
dl
rm
debug.py
10980
0644
edit
dl
rm
debug.pyc
11091
0644
edit
dl
rm
debug.pyo
11019
0644
edit
dl
rm
defaults.py
1068
0644
edit
dl
rm
defaults.pyc
1670
0644
edit
dl
rm
defaults.pyo
1678
0644
edit
dl
rm
environment.py
47244
0644
edit
dl
rm
environment.pyc
47013
0644
edit
dl
rm
environment.pyo
46819
0644
edit
dl
rm
exceptions.py
4428
0644
edit
dl
rm
exceptions.pyc
6521
0644
edit
dl
rm
exceptions.pyo
6551
0644
edit
dl
rm
ext.py
25078
0644
edit
dl
rm
ext.pyc
24801
0644
edit
dl
rm
ext.pyo
24734
0644
edit
dl
rm
filters.py
29836
0644
edit
dl
rm
filters.pyc
34780
0644
edit
dl
rm
filters.pyo
34966
0644
edit
dl
rm
lexer.py
28393
0644
edit
dl
rm
lexer.pyc
23165
0644
edit
dl
rm
lexer.pyo
23226
0644
edit
dl
rm
loaders.py
17036
0644
edit
dl
rm
loaders.pyc
19499
0644
edit
dl
rm
loaders.pyo
19583
0644
edit
dl
rm
meta.py
4190
0644
edit
dl
rm
meta.pyc
4122
0644
edit
dl
rm
meta.pyo
4122
0644
edit
dl
rm
nodes.py
28875
0644
edit
dl
rm
nodes.pyc
43653
0644
edit
dl
rm
nodes.pyo
43839
0644
edit
dl
rm
optimizer.py
2302
0644
edit
dl
rm
optimizer.pyc
2929
0644
edit
dl
rm
optimizer.pyo
2939
0644
edit
dl
rm
parser.py
35186
0644
edit
dl
rm
parser.pyc
31913
0644
edit
dl
rm
parser.pyo
32334
0644
edit
dl
rm
runtime.py
19558
0644
edit
dl
rm
runtime.pyc
23785
0644
edit
dl
rm
runtime.pyo
23984
0644
edit
dl
rm
sandbox.py
13445
0644
edit
dl
rm
sandbox.pyc
12271
0644
edit
dl
rm
sandbox.pyo
12271
0644
edit
dl
rm
tests.py
3444
0644
edit
dl
rm
tests.pyc
5257
0644
edit
dl
rm
tests.pyo
5259
0644
edit
dl
rm
utils.py
16165
0644
edit
dl
rm
utils.pyc
20165
0644
edit
dl
rm
utils.pyo
20307
0644
edit
dl
rm
visitor.py
3316
0644
edit
dl
rm
visitor.pyc
3916
0644
edit
dl
rm
visitor.pyo
3938
0644
edit
dl
rm
_compat.py
4042
0644
edit
dl
rm
_compat.pyc
6421
0644
edit
dl
rm
_compat.pyo
6431
0644
edit
dl
rm
_stringdefs.py
404291
0644
edit
dl
rm
_stringdefs.pyc
208605
0644
edit
dl
rm
_stringdefs.pyo
208605
0644
edit
dl
rm
__init__.py
2270
0644
edit
dl
rm
__init__.pyc
2445
0644
edit
dl
rm
__init__.pyo
2445
0644
edit
dl
rm
Edit:
/opt/alt/python27/lib/python2.7/site-packages/jinja2/optimizer.py
(2302B)
# -*- coding: utf-8 -*- """ jinja2.optimizer ~~~~~~~~~~~~~~~~ The jinja optimizer is currently trying to constant fold a few expressions and modify the AST in place so that it should be easier to evaluate it. Because the AST does not contain all the scoping information and the compiler has to find that out, we cannot do all the optimizations we want. For example loop unrolling doesn't work because unrolled loops would have a different scoping. The solution would be a second syntax tree that has the scoping rules stored. :copyright: (c) 2010 by the Jinja Team. :license: BSD. """ from jinja2 import nodes from jinja2.visitor import NodeTransformer def optimize(node, environment): """The context hint can be used to perform an static optimization based on the context given.""" optimizer = Optimizer(environment) return optimizer.visit(node) class Optimizer(NodeTransformer): def __init__(self, environment): self.environment = environment def visit_If(self, node): """Eliminate dead code.""" # do not optimize ifs that have a block inside so that it doesn't # break super(). if node.find(nodes.Block) is not None: return self.generic_visit(node) try: val = self.visit(node.test).as_const() except nodes.Impossible: return self.generic_visit(node) if val: body = node.body else: body = node.else_ result = [] for node in body: result.extend(self.visit_list(node)) return result def fold(self, node): """Do constant folding.""" node = self.generic_visit(node) try: return nodes.Const.from_untrusted(node.as_const(), lineno=node.lineno, environment=self.environment) except nodes.Impossible: return node visit_Add = visit_Sub = visit_Mul = visit_Div = visit_FloorDiv = \ visit_Pow = visit_Mod = visit_And = visit_Or = visit_Pos = visit_Neg = \ visit_Not = visit_Compare = visit_Getitem = visit_Getattr = visit_Call = \ visit_Filter = visit_Test = visit_CondExpr = fold del fold
Save
cmd:
run