From 198339a3fa43dd1caf3ca341f5c605eb761c0837 Mon Sep 17 00:00:00 2001 From: Nikita Yakovlev Date: Fri, 12 Sep 2025 16:57:01 +0300 Subject: [PATCH 1/3] update redis version --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index b48d410..33ff11c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -11,7 +11,7 @@ license = "MIT" python = "^3.11" fastapi = ">=0.111.1,<1.0.0" pydantic = ">=1.7.4,<1.8 || >1.8,<1.8.1 || >1.8.1,<2.0.0 || >2.0.0,<2.0.1 || >2.0.1,<2.1.0 || >2.1.0,<3.0.0" -redis = { version = "^6.2.0", optional = true } +redis = { version = "^6.4.0", optional = true } [tool.poetry.extras] redis = ["redis"] From e6606cd3a20238857144d19c28276201327796c2 Mon Sep 17 00:00:00 2001 From: Nikita Yakovlev Date: Fri, 12 Sep 2025 16:57:18 +0300 Subject: [PATCH 2/3] add redis to dev dep --- poetry.lock | 19 +++++++++---------- pyproject.toml | 1 + 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/poetry.lock b/poetry.lock index 550c366..cee30c2 100644 --- a/poetry.lock +++ b/poetry.lock @@ -38,10 +38,10 @@ trio = ["trio (>=0.26.1)"] name = "async-timeout" version = "5.0.1" description = "Timeout context manager for asyncio programs" -optional = true +optional = false python-versions = ">=3.8" -groups = ["main"] -markers = "extra == \"redis\" and python_full_version < \"3.11.3\"" +groups = ["main", "dev"] +markers = "python_full_version < \"3.11.3\"" files = [ {file = "async_timeout-5.0.1-py3-none-any.whl", hash = "sha256:39e3809566ff85354557ec2398b55e096c8364bacac9405a7a1fa429e77fe76c"}, {file = "async_timeout-5.0.1.tar.gz", hash = "sha256:d9321a7a3d5a6a5e187e824d2fa0793ce379a202935782d555d6e9d2735677d3"}, @@ -1299,15 +1299,14 @@ pyyaml = "*" [[package]] name = "redis" -version = "6.2.0" +version = "6.4.0" description = "Python client for Redis database and key-value store" -optional = true +optional = false python-versions = ">=3.9" -groups = ["main"] -markers = "extra == \"redis\"" +groups = ["main", "dev"] files = [ - {file = "redis-6.2.0-py3-none-any.whl", hash = "sha256:c8ddf316ee0aab65f04a11229e94a64b2618451dab7a67cb2f77eb799d872d5e"}, - {file = "redis-6.2.0.tar.gz", hash = "sha256:e821f129b75dde6cb99dd35e5c76e8c49512a5a0d8dfdc560b2fbd44b85ca977"}, + {file = "redis-6.4.0-py3-none-any.whl", hash = "sha256:f0544fa9604264e9464cdf4814e7d4830f74b165d52f2a330a760a88dd248b7f"}, + {file = "redis-6.4.0.tar.gz", hash = "sha256:b01bc7282b8444e28ec36b261df5375183bb47a07eb9c603f284e89cbc5ef010"}, ] [package.dependencies] @@ -1554,4 +1553,4 @@ redis = ["redis"] [metadata] lock-version = "2.1" python-versions = "^3.11" -content-hash = "1e1f34c4553df9ae63631760951dcf4bec83184c03013ed1921c2d73cf2384ba" +content-hash = "23b9f84884c0af5518b7ebaca8064cf9e3473a35e0ce287577af5d4360b66a9d" diff --git a/pyproject.toml b/pyproject.toml index 33ff11c..fa75717 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -27,6 +27,7 @@ pytest-cov = "^4.1.0" httpx = "^0.28.1" uvicorn = "^0.34.3" types-redis = "^4.6.0.20241004" +redis = "^6.4.0" [tool.poetry.group.docs.dependencies] From 9515c150e4889a7a213ff074a096c233c7f631f6 Mon Sep 17 00:00:00 2001 From: Nikita Yakovlev Date: Fri, 12 Sep 2025 17:00:59 +0300 Subject: [PATCH 3/3] fix redis type --- fast_cache_middleware/storages/redis_storage.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/fast_cache_middleware/storages/redis_storage.py b/fast_cache_middleware/storages/redis_storage.py index b286d14..ccd88ee 100644 --- a/fast_cache_middleware/storages/redis_storage.py +++ b/fast_cache_middleware/storages/redis_storage.py @@ -4,9 +4,9 @@ from typing import Optional, Union try: - from redis.asyncio import Redis + import redis.asyncio as redis except ImportError: - Redis = None # type: ignore + redis = None # type: ignore from starlette.requests import Request from starlette.responses import Response @@ -26,11 +26,17 @@ class RedisStorage(BaseStorage): def __init__( self, - redis_client: Redis, + redis_client: redis.Redis, serializer: Optional[BaseSerializer] = None, ttl: Optional[Union[int, float]] = None, namespace: str = "cache", ) -> None: + if redis is None: + raise ImportError( + "Redis is required for RedisStorage. " + "Install with Redis: fast-cache-middleware[redis]" + ) + super().__init__(serializer, ttl) self._serializer = serializer or JSONSerializer()