mirror of
https://github.com/long2ice/fastapi-cache.git
synced 2026-03-24 20:47:54 +00:00
- Compatibility with older Python versions - use `Optional` and `Union` instead of `... | None` and `a | b` - use `typing_extensions.Protocol` instead of `typing.Protocol` - use `typing.Dict`, `typing.List`, etc. instead of the concrete types. - Fix backend `.get()` annotations; not all were marked as `Optional[str]` - Don't return anything from `Backend.set()` methods. - The `Coder.decode_as_type()` type parameter must be a type to be compatible with `ModelField(..., type_=...)`. - Clean up `Optional[]` use, remove where it is not needed. - Clean up variable use in decorator, keeping the raw cached value separate from the return value from the wrapped endpoint. - Annotate the wrapper as returning either the original type _or_ a Response (returning a 304 Not Modified response). - Clean up small edge-case where `response` could be `None`. - Correct type annotation on `JsonCoder.decode()` to match `Coder.decode()`.
23 lines
563 B
Python
23 lines
563 B
Python
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]:
|
|
...
|