404

[ Avaa Bypassed ]




Upload:

Command:

elspacio@3.133.160.239: ~ $
# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html
# For details: https://github.com/PyCQA/astroid/blob/main/LICENSE
# Copyright (c) https://github.com/PyCQA/astroid/blob/main/CONTRIBUTORS.txt

from __future__ import annotations

import ast
import sys
import types
from collections.abc import Callable
from functools import partial
from typing import NamedTuple

from astroid.const import PY38_PLUS, Context

if sys.version_info >= (3, 8):
    # On Python 3.8, typed_ast was merged back into `ast`
    _ast_py3: types.ModuleType | None = ast
else:
    try:
        import typed_ast.ast3 as _ast_py3
    except ImportError:
        _ast_py3 = None


class FunctionType(NamedTuple):
    argtypes: list[ast.expr]
    returns: ast.expr


class ParserModule(NamedTuple):
    module: types.ModuleType
    unary_op_classes: dict[type[ast.unaryop], str]
    cmp_op_classes: dict[type[ast.cmpop], str]
    bool_op_classes: dict[type[ast.boolop], str]
    bin_op_classes: dict[type[ast.operator], str]
    context_classes: dict[type[ast.expr_context], Context]

    def parse(self, string: str, type_comments: bool = True) -> ast.Module:
        parse_func: Callable[[str], ast.Module]
        if self.module is _ast_py3:
            if PY38_PLUS:
                parse_func = partial(self.module.parse, type_comments=type_comments)
            else:
                parse_func = partial(
                    self.module.parse, feature_version=sys.version_info.minor
                )
        else:
            parse_func = self.module.parse
        return parse_func(string)


def parse_function_type_comment(type_comment: str) -> FunctionType | None:
    """Given a correct type comment, obtain a FunctionType object."""
    if _ast_py3 is None:
        return None

    func_type = _ast_py3.parse(type_comment, "<type_comment>", "func_type")  # type: ignore[attr-defined]
    return FunctionType(argtypes=func_type.argtypes, returns=func_type.returns)


def get_parser_module(type_comments: bool = True) -> ParserModule:
    parser_module = ast
    if type_comments and _ast_py3:
        parser_module = _ast_py3

    unary_op_classes = _unary_operators_from_module(parser_module)
    cmp_op_classes = _compare_operators_from_module(parser_module)
    bool_op_classes = _bool_operators_from_module(parser_module)
    bin_op_classes = _binary_operators_from_module(parser_module)
    context_classes = _contexts_from_module(parser_module)

    return ParserModule(
        parser_module,
        unary_op_classes,
        cmp_op_classes,
        bool_op_classes,
        bin_op_classes,
        context_classes,
    )


def _unary_operators_from_module(
    module: types.ModuleType,
) -> dict[type[ast.unaryop], str]:
    return {module.UAdd: "+", module.USub: "-", module.Not: "not", module.Invert: "~"}


def _binary_operators_from_module(
    module: types.ModuleType,
) -> dict[type[ast.operator], str]:
    binary_operators = {
        module.Add: "+",
        module.BitAnd: "&",
        module.BitOr: "|",
        module.BitXor: "^",
        module.Div: "/",
        module.FloorDiv: "//",
        module.MatMult: "@",
        module.Mod: "%",
        module.Mult: "*",
        module.Pow: "**",
        module.Sub: "-",
        module.LShift: "<<",
        module.RShift: ">>",
    }
    return binary_operators


def _bool_operators_from_module(
    module: types.ModuleType,
) -> dict[type[ast.boolop], str]:
    return {module.And: "and", module.Or: "or"}


def _compare_operators_from_module(
    module: types.ModuleType,
) -> dict[type[ast.cmpop], str]:
    return {
        module.Eq: "==",
        module.Gt: ">",
        module.GtE: ">=",
        module.In: "in",
        module.Is: "is",
        module.IsNot: "is not",
        module.Lt: "<",
        module.LtE: "<=",
        module.NotEq: "!=",
        module.NotIn: "not in",
    }


def _contexts_from_module(
    module: types.ModuleType,
) -> dict[type[ast.expr_context], Context]:
    return {
        module.Load: Context.Load,
        module.Store: Context.Store,
        module.Del: Context.Del,
        module.Param: Context.Store,
    }

Filemanager

Name Type Size Permission Actions
__pycache__ Folder 0755
brain Folder 0755
interpreter Folder 0755
nodes Folder 0755
__init__.py File 4.98 KB 0644
__pkginfo__.py File 274 B 0644
_ast.py File 4.05 KB 0644
_backport_stdlib_names.py File 6.85 KB 0644
_cache.py File 786 B 0644
arguments.py File 12.65 KB 0644
astroid_manager.py File 572 B 0644
bases.py File 24.99 KB 0644
builder.py File 18.35 KB 0644
const.py File 1.07 KB 0644
constraint.py File 4.92 KB 0644
context.py File 5.85 KB 0644
decorators.py File 9.85 KB 0644
exceptions.py File 12.78 KB 0644
filter_statements.py File 9.42 KB 0644
helpers.py File 11.07 KB 0644
inference.py File 44.06 KB 0644
inference_tip.py File 2.82 KB 0644
manager.py File 17.54 KB 0644
mixins.py File 1.15 KB 0644
modutils.py File 22.96 KB 0644
node_classes.py File 1.8 KB 0644
objects.py File 12.46 KB 0644
protocols.py File 32.2 KB 0644
raw_building.py File 22.34 KB 0644
rebuilder.py File 77.86 KB 0644
scoped_nodes.py File 958 B 0644
test_utils.py File 2.38 KB 0644
transforms.py File 3.19 KB 0644
typing.py File 1.94 KB 0644
util.py File 4.62 KB 0644