$75 GRAYBYTE WORDPRESS FILE MANAGER $84

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/cloudlinux/venv/lib/python3.11/site-packages/testfixtures/

HOME
Current File : /opt/cloudlinux/venv/lib/python3.11/site-packages/testfixtures//utils.py
import sys
from functools import wraps
from textwrap import dedent

from inspect import getfullargspec
from typing import Callable, Sequence, Any

from . import singleton

DEFAULT = singleton('DEFAULT')
defaults = [DEFAULT]


try:
    from .mock import DEFAULT
except ImportError:  # pragma: no cover
    pass
else:
    defaults.append(DEFAULT)


def generator(*args):
    """
    A utility function for creating a generator that will yield the
    supplied arguments.
    """
    for i in args:
        yield i


class Wrapping:

    attribute_name = None
    new = DEFAULT

    def __init__(self, before: Callable[[], None], after: Callable[[], None]):
        self.before, self.after = before, after

    def __enter__(self):
        return self.before()

    def __exit__(self, exc_type=None, exc_val=None, exc_tb=None):
        if self.after is not None:
            self.after()


def wrap(before: Callable[[], Any], after: Callable[[], Any] = None):
    """
    A decorator that causes the supplied callables to be called before
    or after the wrapped callable, as appropriate.
    """

    wrapping = Wrapping(before, after)

    def wrapper(func):
        if hasattr(func, 'patchings'):
            func.patchings.append(wrapping)
            return func

        @wraps(func)
        def patched(*args, **keywargs):
            extra_args = []
            entered_patchers = []

            to_add = len(getfullargspec(func).args[len(args):])
            added = 0

            exc_info = (None, None, None)
            try:
                for patching in patched.patchings:
                    arg = patching.__enter__()
                    entered_patchers.append(patching)
                    if patching.attribute_name is not None:
                        keywargs.update(arg)
                    elif patching.new in defaults and added < to_add:
                        extra_args.append(arg)
                        added += 1

                args += tuple(extra_args)
                return func(*args, **keywargs)
            except:
                # Pass the exception to __exit__
                exc_info = sys.exc_info()
                # re-raise the exception
                raise
            finally:
                for patching in reversed(entered_patchers):
                    patching.__exit__(*exc_info)

        patched.patchings = [wrapping]
        return patched

    return wrapper


def extend_docstring(docstring: str, objs: Sequence):
    for obj in objs:
        obj.__doc__ = dedent(obj.__doc__) + docstring


def indent(text: str, indent_size: int = 2):
    indented = []
    for do_indent, line in enumerate(text.splitlines(True)):
        if do_indent:
            line = ' '*indent_size + line
        indented.append(line)
    return ''.join(indented)

Current_dir [ NOT WRITEABLE ] Document_root [ WRITEABLE ]


[ Back ]
NAME
SIZE
LAST TOUCH
USER
CAN-I?
FUNCTIONS
..
--
17 Dec 2025 3.08 AM
root / root
0755
__pycache__
--
14 Aug 2025 9.24 PM
root / root
0755
tests
--
14 Aug 2025 9.24 PM
root / root
0755
__init__.py
1.194 KB
17 Apr 2025 8.10 PM
root / root
0644
comparison.py
39.142 KB
17 Apr 2025 8.10 PM
root / root
0644
compat.py
0.219 KB
17 Apr 2025 8.10 PM
root / root
0644
components.py
1.306 KB
17 Apr 2025 8.10 PM
root / root
0644
datetime.py
24.423 KB
17 Apr 2025 8.10 PM
root / root
0644
django.py
2.885 KB
17 Apr 2025 8.10 PM
root / root
0644
logcapture.py
10.755 KB
17 Apr 2025 8.10 PM
root / root
0644
mock.py
1.205 KB
17 Apr 2025 8.10 PM
root / root
0644
outputcapture.py
4.688 KB
17 Apr 2025 8.10 PM
root / root
0644
popen.py
9.887 KB
17 Apr 2025 8.10 PM
root / root
0644
replace.py
12.149 KB
17 Apr 2025 8.10 PM
root / root
0644
resolve.py
2.054 KB
17 Apr 2025 8.10 PM
root / root
0644
rmtree.py
2.523 KB
17 Apr 2025 8.10 PM
root / root
0644
shouldraise.py
3.578 KB
17 Apr 2025 8.10 PM
root / root
0644
shouldwarn.py
2.213 KB
17 Apr 2025 8.10 PM
root / root
0644
sybil.py
2.279 KB
17 Apr 2025 8.10 PM
root / root
0644
tempdirectory.py
12.887 KB
17 Apr 2025 8.10 PM
root / root
0644
twisted.py
4.8 KB
17 Apr 2025 8.10 PM
root / root
0644
utils.py
2.737 KB
17 Apr 2025 8.10 PM
root / root
0644
version.txt
0.006 KB
17 Apr 2025 8.10 PM
root / root
0644

GRAYBYTE WORDPRESS FILE MANAGER @ 2026 CONTACT ME
Static GIF