| 12345678910111213141516171819202122232425262728293031 |
- from typing import Dict, Tuple, Callable
- CacheValues = Tuple[str, str, str]
- CacheValuesCallback = Callable[[], CacheValues]
- _cache: Dict[str, Dict[str, CacheValues]] = {}
- def save_entry(module_name: str, name: str, cache: CacheValues) -> None:
- try:
- module_cache = _cache[module_name]
- except KeyError:
- module_cache = _cache[module_name] = {}
- module_cache[name] = cache
- def _create_get_from_cache(number: int) -> Callable[[str, str, CacheValuesCallback], str]:
- def _get_from_cache(module_name: str, name: str, get_cache_values: CacheValuesCallback) -> str:
- try:
- return _cache[module_name][name][number]
- except KeyError:
- v = get_cache_values()
- save_entry(module_name, name, v)
- return v[number]
- return _get_from_cache
- get_type = _create_get_from_cache(0)
- get_docstring_signature = _create_get_from_cache(1)
- get_docstring = _create_get_from_cache(2)
|