from collections import OrderedDict from typing import Any, Callable, Dict, List, Optional, Union from django.core.exceptions import ImproperlyConfigured class InvalidCacheBackendError(ImproperlyConfigured): ... class CacheKeyWarning(RuntimeWarning): ... DEFAULT_TIMEOUT: Any MEMCACHE_MAX_KEY_LENGTH: int def default_key_func( key: Union[int, str], key_prefix: str, version: Union[int, str] ) -> str: ... def get_key_func(key_func: Optional[Union[Callable, str]]) -> Callable: ... class BaseCache: default_timeout: int = ... key_prefix: str = ... version: int = ... key_func: Callable = ... def __init__( self, params: Dict[str, Optional[Union[Callable, Dict[str, int], int, str]]], ) -> None: ... def get_backend_timeout(self, timeout: Any = ...) -> Optional[float]: ... def make_key( self, key: Union[int, str], version: Optional[Union[int, str]] = ... ) -> str: ... def add( self, key: Any, value: Any, timeout: Any = ..., version: Optional[Any] = ..., ) -> None: ... def get( self, key: Any, default: Optional[Any] = ..., version: Optional[Any] = ..., ) -> None: ... def set( self, key: Any, value: Any, timeout: Any = ..., version: Optional[Any] = ..., ) -> None: ... def touch( self, key: Any, timeout: Any = ..., version: Optional[Any] = ... ) -> None: ... def delete(self, key: Any, version: Optional[Any] = ...) -> None: ... def get_many( self, keys: List[str], version: Optional[int] = ... ) -> Dict[str, Union[int, str]]: ... def get_or_set( self, key: str, default: Optional[Union[Callable, int, str]], timeout: Any = ..., version: Optional[int] = ..., ) -> Optional[Union[int, str]]: ... def has_key(self, key: Any, version: Optional[Any] = ...): ... def incr( self, key: str, delta: int = ..., version: Optional[int] = ... ) -> int: ... def decr( self, key: str, delta: int = ..., version: Optional[int] = ... ) -> int: ... def __contains__(self, key: str) -> bool: ... def set_many( self, data: Union[ Dict[str, bytes], Dict[str, int], Dict[str, str], OrderedDict ], timeout: Any = ..., version: Optional[Union[int, str]] = ..., ) -> List[Any]: ... def delete_many( self, keys: Union[Dict[str, str], List[str]], version: None = ... ) -> None: ... def clear(self) -> None: ... def validate_key(self, key: str) -> None: ... def incr_version( self, key: str, delta: int = ..., version: Optional[int] = ... ) -> int: ... def decr_version( self, key: str, delta: int = ..., version: Optional[int] = ... ) -> int: ... def close(self, **kwargs: Any) -> None: ...