JustCaptain kod-buduschego
4abf428db282a82f6419bf2c3d8b27580eeca244
Перейти к файлу
Код
kod-buduschego Python 2025-20264.4. Декораторprojectmain.py
anc update c70a58f 8 октября 2026 г.
main.py
import json
from time import time
from typing import Any


def logger_function(path: str, query: dict | None = None) -> Any:

    def logger(func: Any) -> Any:
        def write(data: dict) -> None:
            with open(path, "w", encoding="utf-8") as file:
                json.dump(obj=data, fp=file, ensure_ascii=False, indent=2)

        def wrapper(*args, **kwargs) -> Any:
            if query is None:
                result = func(*args, **kwargs)
                return result
            brif: dict = {}
            if query.get("name"):
                brif["function_name"] = func.__name__
            if query.get("arguments"):
                brif["arguments"] = {"args": args, "kwargs": kwargs}
            start_time = time()
            result = func(*args, **kwargs)
            end_time = time() - start_time
            if query.get("time"):
                brif["time"] = end_time
            if query.get("result"):
                brif["result"] = result

            write(data=brif)
            return result

        return wrapper

    return logger


def type_check(func):

    def wrapper(*args, **kwargs):
        print(dir(func))
        print(func.__annotate__)
        print(func.__annotations__)
        result = func(*args, **kwargs)
        return result

    return wrapper


# @logger_function(
#    path="info.json", query={"name": 1, "arguments": 1, "time": 1, "result": 1}
# )


@type_check
def sqrt_numbers(numbers: list[int], flag: bool) -> list[int | str]:
    result: list[int] = []
    for x in numbers:
        result.append(x**2)
    return [x**2 for x in numbers]


print(sqrt_numbers([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], flag=False))