404

[ Avaa Bypassed ]




Upload:

Command:

elspacio@3.139.234.68: ~ $
import inspect
import typing as t
from functools import wraps

from .utils import _PassArg
from .utils import pass_eval_context

V = t.TypeVar("V")


def async_variant(normal_func):  # type: ignore
    def decorator(async_func):  # type: ignore
        pass_arg = _PassArg.from_obj(normal_func)
        need_eval_context = pass_arg is None

        if pass_arg is _PassArg.environment:

            def is_async(args: t.Any) -> bool:
                return t.cast(bool, args[0].is_async)

        else:

            def is_async(args: t.Any) -> bool:
                return t.cast(bool, args[0].environment.is_async)

        @wraps(normal_func)
        def wrapper(*args, **kwargs):  # type: ignore
            b = is_async(args)

            if need_eval_context:
                args = args[1:]

            if b:
                return async_func(*args, **kwargs)

            return normal_func(*args, **kwargs)

        if need_eval_context:
            wrapper = pass_eval_context(wrapper)

        wrapper.jinja_async_variant = True
        return wrapper

    return decorator


_common_primitives = {int, float, bool, str, list, dict, tuple, type(None)}


async def auto_await(value: t.Union[t.Awaitable["V"], "V"]) -> "V":
    # Avoid a costly call to isawaitable
    if type(value) in _common_primitives:
        return t.cast("V", value)

    if inspect.isawaitable(value):
        return await t.cast("t.Awaitable[V]", value)

    return t.cast("V", value)


async def auto_aiter(
    iterable: "t.Union[t.AsyncIterable[V], t.Iterable[V]]",
) -> "t.AsyncIterator[V]":
    if hasattr(iterable, "__aiter__"):
        async for item in t.cast("t.AsyncIterable[V]", iterable):
            yield item
    else:
        for item in t.cast("t.Iterable[V]", iterable):
            yield item


async def auto_to_list(
    value: "t.Union[t.AsyncIterable[V], t.Iterable[V]]",
) -> t.List["V"]:
    return [x async for x in auto_aiter(value)]

Filemanager

Name Type Size Permission Actions
__pycache__ Folder 0755
__init__.py File 2.15 KB 0644
_identifier.py File 1.73 KB 0644
async_utils.py File 1.9 KB 0644
bccache.py File 12.37 KB 0644
compiler.py File 70.52 KB 0644
constants.py File 1.4 KB 0644
debug.py File 8.29 KB 0644
defaults.py File 1.24 KB 0644
environment.py File 59.55 KB 0644
exceptions.py File 4.95 KB 0644
ext.py File 31.37 KB 0644
filters.py File 51.38 KB 0644
idtracking.py File 10.47 KB 0644
lexer.py File 29.23 KB 0644
loaders.py File 22.22 KB 0644
meta.py File 4.29 KB 0644
nativetypes.py File 3.88 KB 0644
nodes.py File 33.74 KB 0644
optimizer.py File 1.61 KB 0644
parser.py File 38.83 KB 0644
py.typed File 0 B 0644
runtime.py File 34.23 KB 0644
sandbox.py File 14.26 KB 0644
tests.py File 5.77 KB 0644
utils.py File 26.34 KB 0644
visitor.py File 3.49 KB 0644