from typing import Callable, Iterable, Union, Any from tqdm import tqdm def njit(f: Union[Callable, str] = None, *args, **kwargs) -> Callable: def decorator(func: Callable) -> Any: return func if callable(f): return f return decorator def tqdm_iter(iter: Iterable, desc: str): return tqdm(iter, leave = False, desc = desc)