Module pyboiler.decor

Expand source code
import functools
import time
from typing import Any, Callable

from .logger import Level, Logger

# def example(decor_args, or_multiple) -> Callable[..., Any]:
#     def decorator(func: Callable[..., Any]):
#         @functools.wraps(func)
#         def wrapper(*args, **kwargs) -> Any:
#             # stuff before func
#             func(*args, **kwargs)
#             # stuff after func
#         return wrapper
#     return decorator


def benchmark(itter: int = 1):
    def decorator(func: Callable[..., Any]):
        @functools.wraps(func)
        def wrapper(*args, **kwargs):
            duration = time.perf_counter()
            for _ in range(0, itter):
                func(*args, **kwargs)
            duration = time.perf_counter() - duration

        return wrapper

    return decorator


def with_logging(log: Logger):

    def decorator(func: Callable[..., Any]):
        @functools.wraps(func)
        def wrapper(*args, **kwargs):
            func(*args, **kwargs, log=log)

        return wrapper

    return decorator

Functions

def benchmark(itter: int = 1)
Expand source code
def benchmark(itter: int = 1):
    def decorator(func: Callable[..., Any]):
        @functools.wraps(func)
        def wrapper(*args, **kwargs):
            duration = time.perf_counter()
            for _ in range(0, itter):
                func(*args, **kwargs)
            duration = time.perf_counter() - duration

        return wrapper

    return decorator
def with_logging(log: Logger)
Expand source code
def with_logging(log: Logger):

    def decorator(func: Callable[..., Any]):
        @functools.wraps(func)
        def wrapper(*args, **kwargs):
            func(*args, **kwargs, log=log)

        return wrapper

    return decorator