mirror of
https://github.com/long2ice/fastapi-cache.git
synced 2026-03-25 13:07:53 +00:00
Ruff handles black, flake8 and isort in one package, and is way faster. The isort rules had not been enforced, so this commit includes a lot of import resorting changes. I switched to flake8-bugbear and the standard black-compatible line length of 80 + 10% (so max 88 characters), so some line reflowing is included too. Finally, because bugbear rightly points out that `setattr()` is less performant, I've switched the `__signature__` assigment back to using a direct assignment with type ignore comment.
41 lines
1.1 KiB
Python
41 lines
1.1 KiB
Python
import abc
|
|
from typing import Any, Awaitable, Callable, Dict, Optional, Tuple, Union
|
|
|
|
from starlette.requests import Request
|
|
from starlette.responses import Response
|
|
from typing_extensions import Protocol
|
|
|
|
_Func = Callable[..., Any]
|
|
|
|
|
|
class KeyBuilder(Protocol):
|
|
def __call__(
|
|
self,
|
|
__function: _Func,
|
|
__namespace: str = ...,
|
|
*,
|
|
request: Optional[Request] = ...,
|
|
response: Optional[Response] = ...,
|
|
args: Tuple[Any, ...],
|
|
kwargs: Dict[str, Any],
|
|
) -> Union[Awaitable[str], str]:
|
|
...
|
|
|
|
|
|
class Backend(abc.ABC):
|
|
@abc.abstractmethod
|
|
async def get_with_ttl(self, key: str) -> Tuple[int, Optional[bytes]]:
|
|
raise NotImplementedError
|
|
|
|
@abc.abstractmethod
|
|
async def get(self, key: str) -> Optional[bytes]:
|
|
raise NotImplementedError
|
|
|
|
@abc.abstractmethod
|
|
async def set(self, key: str, value: bytes, expire: Optional[int] = None) -> None:
|
|
raise NotImplementedError
|
|
|
|
@abc.abstractmethod
|
|
async def clear(self, namespace: Optional[str] = None, key: Optional[str] = None) -> int:
|
|
raise NotImplementedError
|