Source code for redis_func_cache.typing
from __future__ import annotations
import sys
from collections.abc import Callable
from typing import TYPE_CHECKING, Literal, TypeVar, Union
if sys.version_info < (3, 10): # pragma: no cover
from typing_extensions import TypeGuard
else: # pragma: no cover
from typing import TypeGuard
if TYPE_CHECKING: # pragma: no cover
from typing import Protocol
if sys.version_info < (3, 11): # pragma: no cover
from typing_extensions import Self
else: # pragma: no cover
from typing import Self
from _typeshed import ReadableBuffer
import redis.asyncio.client
import redis.asyncio.cluster
import redis.client
import redis.cluster
import redis.commands.core
CallableTV = TypeVar("CallableTV", bound=Callable)
RedisSyncClientTypes = redis.client.Redis, redis.cluster.RedisCluster
RedisSyncClientT = Union[redis.client.Redis, redis.cluster.RedisCluster]
RedisAsyncClientTypes = redis.asyncio.client.Redis, redis.asyncio.cluster.RedisCluster
RedisAsyncClientT = Union[redis.asyncio.client.Redis, redis.asyncio.cluster.RedisCluster]
RedisClusterClientTypes = redis.cluster.RedisCluster, redis.asyncio.cluster.RedisCluster
RedisClusterClientT = Union[redis.cluster.RedisCluster, redis.asyncio.cluster.RedisCluster]
RedisClientTypes = (
redis.client.Redis,
redis.cluster.RedisCluster,
redis.asyncio.client.Redis,
redis.asyncio.cluster.RedisCluster,
)
RedisClientT = Union[
redis.client.Redis, redis.asyncio.client.Redis, redis.cluster.RedisCluster, redis.asyncio.cluster.RedisCluster
]
RedisClientTV = TypeVar("RedisClientTV", bound=RedisClientT)
RedisScriptT = Union[redis.commands.core.Script, redis.commands.core.AsyncScript]
SerializerName = Literal["json", "pickle", "dill", "bson", "msgpack", "yaml", "cbor", "cloudpickle"]
if TYPE_CHECKING: # pragma: no cover
[docs]
class Hash(Protocol):
[docs]
def update(self, data: ReadableBuffer, /) -> None: ...
[docs]
def digest(self) -> bytes: ...
[docs]
def hexdigest(self) -> str: ...
[docs]
def copy(self) -> Self: ...
[docs]
def is_redis_async_client(client: RedisClientT) -> TypeGuard[RedisAsyncClientT]:
"""
Returns True if the given Redis client is an asynchronous client.
"""
return isinstance(client, RedisAsyncClientTypes)
[docs]
def is_redis_sync_client(client: RedisClientT) -> TypeGuard[RedisSyncClientT]:
"""
Returns True if the given Redis client is a synchronous client.
"""
return isinstance(client, RedisSyncClientTypes)
[docs]
def is_redis_cluster_client(client: RedisClientT) -> TypeGuard[RedisClusterClientT]:
"""
Returns True if the given Redis client is a cluster client.
"""
return isinstance(client, RedisClusterClientTypes)
[docs]
def is_redis_sync_script(script: RedisScriptT) -> TypeGuard[redis.commands.core.Script]:
"""
Returns True if the given Redis script is a synchronous script.
"""
return isinstance(script, redis.commands.core.Script)
[docs]
def is_redis_async_script(script: RedisScriptT) -> TypeGuard[redis.commands.core.AsyncScript]:
"""
Returns True if the given Redis script is an asynchronous script.
"""
return isinstance(script, redis.commands.core.AsyncScript)