You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			32 lines
		
	
	
		
			954 B
		
	
	
	
		
			Python
		
	
			
		
		
	
	
			32 lines
		
	
	
		
			954 B
		
	
	
	
		
			Python
		
	
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)
 |