[ Avaa Bypassed ]




Upload:

Command:

www-data@18.227.161.207: ~ $
import functools
import logging
import time

LOG = logging.getLogger(__name__)


class Timed:
    """
    A context manager which measures and optionally logs context run time.

    :param msg: A message that describes the thing that is being measured
    :param threshold: Threshold, in seconds. When the context exceeds this
        threshold, a log will be made.
    :param log_mode: Control whether to log. Defaults to "threshold". Possible
        values include:
        "always" - Always log 'msg', even when 'threshold' is not reached.
        "threshold" - Log when context time exceeds 'threshold'.
        "skip" - Do not log. Context time and message are stored in the
            'output' and 'delta' attributes, respectively. Used to manually
            coalesce with other logs at the call site.

    usage:

        this call:
        ```
        with Timed("Configuring the network"):
            run_configure()
        ```

        might produce this log:
        ```
            Configuring the network took 0.100 seconds
        ```
    """

    def __init__(
        self,
        msg: str,
        *,
        threshold: float = 0.01,
        log_mode: str = "threshold",
    ):
        self.msg = msg
        self.threshold = threshold
        self.log_mode = log_mode
        self.output = ""
        self.start = 0.0
        self.delta = 0.0

    def __enter__(self):
        self.start = time.monotonic()
        return self

    def __exit__(self, exc_type, exc_val, exc_tb):
        self.delta = time.monotonic() - self.start
        suffix = f"took {self.delta:.3f} seconds"
        if "always" == self.log_mode:
            LOG.debug("%s %s", self.msg, suffix)
        elif "skip" == self.log_mode:
            return
        elif "threshold" == self.log_mode:
            if self.delta > self.threshold:
                LOG.debug("%s %s", self.msg, suffix)
                self.output = f"{self.msg} {suffix}"
        else:
            raise ValueError(
                f"Invalid Timed log_mode value: '{self.log_mode}'."
            )


def timed(msg: str, *, threshold: float = 0.01, log_mode: str = "threshold"):
    """
    A decorator which measures and optionally logs context run time.

    :param msg: A message that describes the thing that is being measured
    :param threshold: Threshold, in seconds. When the context exceeds this
        threshold, a log will be made.
    :param log_mode: Control whether to log. Defaults to "threshold". Possible
        values include:
        "always" - Always log 'msg', even when 'threshold' is not reached.
        "threshold" - Log when context time exceeds 'threshold'.

    usage:

        this call:
        ```
        @timed("Configuring the network")
        def run_configure():
            ...
        ```

        might produce this log:
        ```
            Configuring the network took 0.100 seconds
        ```
    """

    def wrapper(func):
        @functools.wraps(func)
        def decorator(*args, **kwargs):
            with Timed(msg, threshold=threshold, log_mode=log_mode):
                return func(*args, **kwargs)

        return decorator

    return wrapper

Filemanager

Name Type Size Permission Actions
__pycache__ Folder 0755
analyze Folder 0755
cmd Folder 0755
config Folder 0755
distros Folder 0755
filters Folder 0755
handlers Folder 0755
log Folder 0755
mergers Folder 0755
net Folder 0755
reporting Folder 0755
sources Folder 0755
__init__.py File 0 B 0644
apport.py File 8.27 KB 0644
atomic_helper.py File 2.79 KB 0644
cloud.py File 3.22 KB 0644
dmi.py File 7.86 KB 0644
event.py File 2 KB 0644
features.py File 4.87 KB 0644
gpg.py File 7.99 KB 0644
helpers.py File 16.16 KB 0644
importer.py File 2.43 KB 0644
lifecycle.py File 7.78 KB 0644
netinfo.py File 24.02 KB 0644
performance.py File 3.1 KB 0644
persistence.py File 2.52 KB 0644
registry.py File 1022 B 0644
safeyaml.py File 10.11 KB 0644
settings.py File 2.12 KB 0644
signal_handler.py File 1.75 KB 0644
simpletable.py File 1.93 KB 0644
socket.py File 5.93 KB 0644
ssh_util.py File 22.22 KB 0644
stages.py File 41.53 KB 0644
subp.py File 12.36 KB 0644
temp_utils.py File 2.94 KB 0644
templater.py File 7.8 KB 0644
type_utils.py File 703 B 0644
url_helper.py File 34.7 KB 0644
user_data.py File 14.44 KB 0644
util.py File 90.43 KB 0644
version.py File 564 B 0644
warnings.py File 3.76 KB 0644