__  __    __   __  _____      _            _          _____ _          _ _ 
 |  \/  |   \ \ / / |  __ \    (_)          | |        / ____| |        | | |
 | \  / |_ __\ V /  | |__) | __ ___   ____ _| |_ ___  | (___ | |__   ___| | |
 | |\/| | '__|> <   |  ___/ '__| \ \ / / _` | __/ _ \  \___ \| '_ \ / _ \ | |
 | |  | | |_ / . \  | |   | |  | |\ V / (_| | ||  __/  ____) | | | |  __/ | |
 |_|  |_|_(_)_/ \_\ |_|   |_|  |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1
 if you need WebShell for Seo everyday contact me on Telegram
 Telegram Address : @jackleet
        
        
For_More_Tools: Telegram: @jackleet | Bulk Smtp support mail sender | Business Mail Collector | Mail Bouncer All Mail | Bulk Office Mail Validator | Html Letter private



Upload:

Command:

[email protected]: ~ $
# Copyright 2023-2024 Free Software Foundation, Inc.

# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.

# A simple runtime type checker.

import collections.abc
import functools
import typing


# 'isinstance' won't work in general for type variables, so we
# implement the subset that is needed by DAP.
def _check_instance(value, typevar):
    base = typing.get_origin(typevar)
    if base is None:
        return isinstance(value, typevar)
    arg_types = typing.get_args(typevar)
    if base == collections.abc.Mapping or base == typing.Mapping:
        if not isinstance(value, collections.abc.Mapping):
            return False
        assert len(arg_types) == 2
        (keytype, valuetype) = arg_types
        return all(
            _check_instance(k, keytype) and _check_instance(v, valuetype)
            for k, v in value.items()
        )
    elif base == collections.abc.Sequence or base == typing.Sequence:
        # In some places we simply use 'Sequence' without arguments.
        if not isinstance(value, base):
            return False
        if len(arg_types) == 0:
            return True
        assert len(arg_types) == 1
        arg_type = arg_types[0]
        return all(_check_instance(item, arg_type) for item in value)
    elif base == typing.Union:
        return any(_check_instance(value, arg_type) for arg_type in arg_types)
    raise TypeError("unsupported type variable '" + str(typevar) + "'")


def type_check(func):
    """A decorator that checks FUNC's argument types at runtime."""

    # The type checker relies on 'typing.get_origin', which was added
    # in Python 3.8.  (It also relies on 'typing.get_args', but that
    # was added at the same time.)
    if not hasattr(typing, "get_origin"):
        return func

    hints = typing.get_type_hints(func)
    # We don't check the return type, but we allow it in case someone
    # wants to use it on a function definition.
    if "return" in hints:
        del hints["return"]

    # Note that keyword-only is fine for our purposes, because this is
    # only used for DAP requests, and those are always called this
    # way.
    @functools.wraps(func)
    def check_arguments(**kwargs):
        for key in hints:
            # The argument might not be passed in; we could type-check
            # any default value here, but it seems fine to just rely
            # on the code being correct -- the main goal of this
            # checking is to verify JSON coming from the client.
            if key in kwargs and not _check_instance(kwargs[key], hints[key]):
                raise TypeError(
                    "value for '"
                    + key
                    + "' does not have expected type '"
                    + str(hints[key])
                    + "'"
                )
        return func(**kwargs)

    return check_arguments

Filemanager

Name Type Size Permission Actions
__init__.py File 3.49 KB 0644
breakpoint.py File 14.08 KB 0644
bt.py File 5.7 KB 0644
disassemble.py File 3.4 KB 0644
evaluate.py File 4.49 KB 0644
events.py File 8.38 KB 0644
frames.py File 5.03 KB 0644
globalvars.py File 2.81 KB 0644
io.py File 2.79 KB 0644
launch.py File 5.57 KB 0644
locations.py File 1.9 KB 0644
memory.py File 1.48 KB 0644
modules.py File 1.82 KB 0644
next.py File 3.32 KB 0644
pause.py File 882 B 0644
scopes.py File 5.64 KB 0644
server.py File 24.65 KB 0644
sources.py File 3.07 KB 0644
startup.py File 6.55 KB 0644
state.py File 951 B 0644
threads.py File 1.21 KB 0644
typecheck.py File 3.35 KB 0644
varref.py File 9.85 KB 0644
Filemanager