$83 GRAYBYTE WORDPRESS FILE MANAGER $57

SERVER : vnpttt-amd7f72-h1.vietnix.vn #1 SMP Fri May 24 12:42:50 UTC 2024
SERVER IP : 103.200.23.149 | ADMIN IP 216.73.216.22
OPTIONS : CRL = ON | WGT = ON | SDO = OFF | PKEX = OFF
DEACTIVATED : NONE

/opt/alt/python37/lib/python3.7/site-packages/jinja2/

HOME
Current File : /opt/alt/python37/lib/python3.7/site-packages/jinja2//optimizer.py
"""The optimizer tries to constant fold expressions and modify the AST
in place so that it should be faster to evaluate.

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 scope. The solution would be a second syntax tree
that stored the scoping rules.
"""
import typing as t

from . import nodes
from .visitor import NodeTransformer

if t.TYPE_CHECKING:
    from .environment import Environment


def optimize(node: nodes.Node, environment: "Environment") -> nodes.Node:
    """The context hint can be used to perform an static optimization
    based on the context given."""
    optimizer = Optimizer(environment)
    return t.cast(nodes.Node, optimizer.visit(node))


class Optimizer(NodeTransformer):
    def __init__(self, environment: "t.Optional[Environment]") -> None:
        self.environment = environment

    def generic_visit(
        self, node: nodes.Node, *args: t.Any, **kwargs: t.Any
    ) -> nodes.Node:
        node = super().generic_visit(node, *args, **kwargs)

        # Do constant folding. Some other nodes besides Expr have
        # as_const, but folding them causes errors later on.
        if isinstance(node, nodes.Expr):
            try:
                return nodes.Const.from_untrusted(
                    node.as_const(args[0] if args else None),
                    lineno=node.lineno,
                    environment=self.environment,
                )
            except nodes.Impossible:
                pass

        return node

Current_dir [ NOT WRITEABLE ] Document_root [ WRITEABLE ]


[ Back ]
NAME
SIZE
LAST TOUCH
USER
CAN-I?
FUNCTIONS
..
--
18 Apr 2024 12.35 AM
root / 996
0755
__pycache__
--
31 Aug 2024 6.49 AM
root / 996
0755
__init__.py
2.153 KB
10 Nov 2021 3.25 AM
root / 996
0644
_identifier.py
1.733 KB
18 Feb 2020 12.14 AM
root / 996
0644
async_utils.py
1.901 KB
10 Nov 2021 12.17 AM
root / 996
0644
bccache.py
12.373 KB
5 Oct 2021 3.41 AM
root / 996
0644
compiler.py
70.517 KB
9 Nov 2021 11.37 PM
root / 996
0644
constants.py
1.399 KB
6 Apr 2021 12.47 AM
root / 996
0644
debug.py
8.295 KB
10 Nov 2021 12.17 AM
root / 996
0644
defaults.py
1.237 KB
10 May 2021 8.52 PM
root / 996
0644
environment.py
59.554 KB
10 Nov 2021 1.10 AM
root / 996
0644
exceptions.py
4.952 KB
10 May 2021 8.52 PM
root / 996
0644
ext.py
31.369 KB
14 May 2021 8.01 AM
root / 996
0644
filters.py
51.376 KB
5 Oct 2021 3.41 AM
root / 996
0644
idtracking.py
10.47 KB
10 Aug 2021 8.34 PM
root / 996
0644
lexer.py
29.229 KB
5 Oct 2021 3.41 AM
root / 996
0644
loaders.py
22.221 KB
10 Nov 2021 3.21 AM
root / 996
0644
meta.py
4.293 KB
10 May 2021 8.52 PM
root / 996
0644
nativetypes.py
3.876 KB
10 Nov 2021 12.17 AM
root / 996
0644
nodes.py
33.74 KB
10 Nov 2021 12.18 AM
root / 996
0644
optimizer.py
1.611 KB
10 May 2021 8.52 PM
root / 996
0644
parser.py
38.835 KB
14 May 2021 8.01 AM
root / 996
0644
py.typed
0 KB
10 May 2021 8.52 PM
root / 996
0644
runtime.py
34.232 KB
10 Aug 2021 8.34 PM
root / 996
0644
sandbox.py
14.258 KB
10 May 2021 8.52 PM
root / 996
0644
tests.py
5.767 KB
11 Apr 2021 12.20 AM
root / 996
0644
utils.py
26.339 KB
5 Oct 2021 3.41 AM
root / 996
0644
visitor.py
3.488 KB
10 May 2021 8.52 PM
root / 996
0644

GRAYBYTE WORDPRESS FILE MANAGER @ 2026 CONTACT ME
Static GIF