# ------------------------------- # Difficult Rocket # Copyright © 2021-2022 by shenjackyuanjie 3695888@qq.com # All rights reserved # ------------------------------- import threading from types import FrameType from typing import Union, List, Optional, Iterable class ThreadLock: # with ThreadLock def __init__(self, the_lock: threading.Lock, time_out: Union[float, int] = 1 / 60) -> None: ... def __enter__(self) -> "ThreadLock": ... def __exit__(self, exc_type, exc_val, exc_tb) -> None: ... class ListCache: """一个线程安全的列表缓存""" def __init__(self, lock: ThreadLock) -> None: ... def __call__(self, *args, **kwargs) -> List[str]: ... # ListCache() def __iter__(self) -> "ListCache": ... def __next__(self) -> str: ... # support for x in ListCache def __bool__(self) -> bool: ... # True if have cache def __getitem__(self, item: int) -> str: ... # ListCache[int] def append(self, value: Union[str, Iterable[str]]): ... # ListCache.append('abc' | ['abc']) @property def cache(self) -> List[str]: ... # ListCache.cache def clear(self) -> None: ... # ListCache.clear() class LogFileCache: ... class Logger: ... def test_logger(the_logger: Logger) -> None: ...