[ Avaa Bypassed ]




Upload:

Command:

hmhc3928@3.143.255.57: ~ $
from ast import literal_eval
from itertools import chain
from itertools import islice

from . import nodes
from ._compat import text_type
from .compiler import CodeGenerator
from .compiler import has_safe_repr
from .environment import Environment
from .environment import Template


def native_concat(nodes):
    """Return a native Python type from the list of compiled nodes. If
    the result is a single node, its value is returned. Otherwise, the
    nodes are concatenated as strings. If the result can be parsed with
    :func:`ast.literal_eval`, the parsed value is returned. Otherwise,
    the string is returned.

    :param nodes: Iterable of nodes to concatenate.
    """
    head = list(islice(nodes, 2))

    if not head:
        return None

    if len(head) == 1:
        raw = head[0]
    else:
        raw = u"".join([text_type(v) for v in chain(head, nodes)])

    try:
        return literal_eval(raw)
    except (ValueError, SyntaxError, MemoryError):
        return raw


class NativeCodeGenerator(CodeGenerator):
    """A code generator which renders Python types by not adding
    ``to_string()`` around output nodes.
    """

    @staticmethod
    def _default_finalize(value):
        return value

    def _output_const_repr(self, group):
        return repr(u"".join([text_type(v) for v in group]))

    def _output_child_to_const(self, node, frame, finalize):
        const = node.as_const(frame.eval_ctx)

        if not has_safe_repr(const):
            raise nodes.Impossible()

        if isinstance(node, nodes.TemplateData):
            return const

        return finalize.const(const)

    def _output_child_pre(self, node, frame, finalize):
        if finalize.src is not None:
            self.write(finalize.src)

    def _output_child_post(self, node, frame, finalize):
        if finalize.src is not None:
            self.write(")")


class NativeEnvironment(Environment):
    """An environment that renders templates to native Python types."""

    code_generator_class = NativeCodeGenerator


class NativeTemplate(Template):
    environment_class = NativeEnvironment

    def render(self, *args, **kwargs):
        """Render the template to produce a native Python type. If the
        result is a single node, its value is returned. Otherwise, the
        nodes are concatenated as strings. If the result can be parsed
        with :func:`ast.literal_eval`, the parsed value is returned.
        Otherwise, the string is returned.
        """
        vars = dict(*args, **kwargs)

        try:
            return native_concat(self.root_render_func(self.new_context(vars)))
        except Exception:
            return self.environment.handle_exception()


NativeEnvironment.template_class = NativeTemplate

Filemanager

Name Type Size Permission Actions
__pycache__ Folder 0755
__init__.py File 1.51 KB 0644
_compat.py File 3.12 KB 0644
_identifier.py File 1.73 KB 0644
asyncfilters.py File 4.15 KB 0644
asyncsupport.py File 7.04 KB 0644
bccache.py File 11.85 KB 0644
compiler.py File 64.73 KB 0644
constants.py File 1.42 KB 0644
debug.py File 8.33 KB 0644
defaults.py File 1.1 KB 0644
environment.py File 49.44 KB 0644
exceptions.py File 5.3 KB 0644
ext.py File 25.82 KB 0644
filters.py File 40.44 KB 0644
idtracking.py File 9 KB 0644
lexer.py File 29.62 KB 0644
loaders.py File 17.25 KB 0644
meta.py File 4.03 KB 0644
nativetypes.py File 2.69 KB 0644
nodes.py File 30.37 KB 0644
optimizer.py File 1.42 KB 0644
parser.py File 34.82 KB 0644
runtime.py File 29.9 KB 0644
sandbox.py File 16.73 KB 0644
tests.py File 4.69 KB 0644
utils.py File 21.99 KB 0644
visitor.py File 3.16 KB 0644