def lru_dict_arg_cache(func: Callable) -> Callable:
# TODO? wrapper that allows maxsize
def unpacking_func(func: Callable, arg: frozenset) -> Any:
return func(dict(arg))
_unpacking_func = _lru_cache_wrapper(partial(unpacking_func, func), # type: ignore
64, False, _CacheInfo)
def packing_func(arg: Dict[Hashable, Hashable]) -> Any:
return _unpacking_func(frozenset(arg.items()))
update_wrapper(packing_func, func)
packing_func.cache_info = _unpacking_func.cache_info # type: ignore
return packing_func
评论列表
文章目录