Support MPD_NOW_PLAYABLE_CACHE setting (Redis or Memcached)

This commit is contained in:
Danielle McLean 2024-05-14 13:25:13 +10:00
parent c7773bf324
commit 55d82c72c3
Signed by: 00dani
GPG key ID: 6854781A0488421C
7 changed files with 118 additions and 36 deletions

7
stubs/aiocache/base.pyi Normal file
View file

@ -0,0 +1,7 @@
from typing import Generic, TypeVar
T = TypeVar("T")
class BaseCache(Generic[T]):
@staticmethod
def parse_uri_path(path: str) -> dict[str, str]: ...

View file

@ -1,8 +1,25 @@
from typing import Generic, Optional, TypeVar
from typing import ClassVar, Optional, TypeVar
T = TypeVar('T')
from .base import BaseCache
from .serializers import BaseSerializer
class Cache(Generic[T]):
async def add(self, key: str, value: T, ttl: Optional[int]) -> None: ...
async def set(self, key: str, value: T, ttl: Optional[int]) -> None: ... # noqa: A003
async def get(self, key: str, default: T | None = None) -> T | None: ...
T = TypeVar("T")
class Cache(BaseCache[T]):
MEMORY: ClassVar[type[BaseCache]]
REDIS: ClassVar[type[BaseCache] | None]
MEMCACHED: ClassVar[type[BaseCache] | None]
def __new__(
cls,
cache_class: type[BaseCache] = MEMORY,
*,
serializer: Optional[BaseSerializer] = None,
namespace: str = "",
**kwargs,
) -> Cache[T]: ...
@staticmethod
def get_scheme_class(scheme: str) -> type[BaseCache]: ...
async def add(self, key: str, value: T, ttl: Optional[int]) -> None: ...
async def set(self, key: str, value: T, ttl: Optional[int]) -> None: ... # noqa: A003
async def get(self, key: str, default: T | None = None) -> T | None: ...

View file

@ -0,0 +1,14 @@
from abc import ABC, abstractmethod
from typing import Any, Optional
class BaseSerializer(ABC):
DEFAULT_ENCODING: Optional[str] = "utf-8"
@abstractmethod
def dumps(self, value: Any, /) -> Any: ...
@abstractmethod
def loads(self, value: Any, /) -> Any: ...
class PickleSerializer(BaseSerializer):
DEFAULT_ENCODING = None
def dumps(self, value: Any, /) -> Any: ...
def loads(self, value: Any, /) -> Any: ...