diff --git a/CHANGELOG.md b/CHANGELOG.md index 01043e782..645192151 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,9 @@ All notable changes to this project are documented in this file. The format is b ## [Unreleased] ### Changed +- `simple_module_hosting[redis]` and `simple_module_background_tasks` accept + `redis` 7 and 8 (`redis>=5,<9`); the lockfile moves to redis 8.1.0 with + kombu 5.7.0, the first stable kombu that supports it (#665). - OIDC and Keycloak share provider-neutral protocol helpers in `auth.oidc_common`. **Keycloak hardening:** required JWT claims and a 10-second clock leeway, last-good RSA JWKS diff --git a/framework/hosting/pyproject.toml b/framework/hosting/pyproject.toml index 49df5a899..65248e7b6 100644 --- a/framework/hosting/pyproject.toml +++ b/framework/hosting/pyproject.toml @@ -39,7 +39,7 @@ dependencies = [ [project.optional-dependencies] # Shared rate-limiter store (SM_REDIS_URL). Without it the limiter counts per worker. -redis = ["redis>=5,<7"] +redis = ["redis>=5,<9"] # Error reporting (SM_SENTRY_DSN). Never imported unless the DSN is set. sentry = ["sentry-sdk[fastapi,celery]>=2.20,<3"] diff --git a/modules/background_tasks/pyproject.toml b/modules/background_tasks/pyproject.toml index 1a64106f4..20d8e28b9 100644 --- a/modules/background_tasks/pyproject.toml +++ b/modules/background_tasks/pyproject.toml @@ -26,7 +26,7 @@ dependencies = [ "simple_module_hosting==0.0.42", "simple_module_settings==0.0.42", "celery[redis]>=5.4,<6", - "redis>=5,<7", + "redis>=5,<9", ] [project.entry-points.simple_module] diff --git a/uv.lock b/uv.lock index d3ccc0af4..ed16b46cc 100644 --- a/uv.lock +++ b/uv.lock @@ -1,5 +1,5 @@ version = 1 -revision = 5 +revision = 3 requires-python = ">=3.12" resolution-markers = [ "python_full_version >= '3.14'", @@ -287,14 +287,14 @@ wheels = [ [[package]] name = "amqp" -version = "5.4.1" +version = "5.4.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "vine" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/66/41/63526ffa542b7dbeb671ab2252fb38e26cd2dbc68c0775cdc5ba11af78a7/amqp-5.4.1.tar.gz", hash = "sha256:79a9c0ab70e71745667f127ff80666894a734c26236b6f33149c964b096f0b20", size = 132240, upload-time = "2026-10-05T14:03:23.415Z" } +sdist = { url = "https://files.pythonhosted.org/packages/4b/46/64c69cdd9705a5b312920cf76c3cb7c2c4718ffeafbfbcf87a842890765e/amqp-5.4.2.tar.gz", hash = "sha256:9362660c4a31150cf18e78cae2ce8aa1e929fc6c6739e69f6dd5dbea9c3edc82", size = 133663, upload-time = "2026-11-02T10:34:18.483Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/28/8e/25f762f8cf0da76c7b1a66a9cadc291168537598c533954b0e2c9de3a0a3/amqp-5.4.1-py3-none-any.whl", hash = "sha256:ac2b816a14a380ed10c5ebbf85a334fd68111fa476496867a5ccd2fd09926d5e", size = 51858, upload-time = "2026-10-05T14:03:18.61Z" }, + { url = "https://files.pythonhosted.org/packages/e1/1d/2da3a059d2736e2ad8104762f93ad2145b6b0586aaa6be5290bab5d96c68/amqp-5.4.2-py3-none-any.whl", hash = "sha256:e6e756b15c89c86818b48a4947a424706238afbf67d457428d3269bc4590db9e", size = 51956, upload-time = "2026-11-02T10:34:16.66Z" }, ] [[package]] @@ -1625,21 +1625,21 @@ wheels = [ [[package]] name = "kombu" -version = "5.6.2" +version = "5.7.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "amqp" }, - { name = "packaging" }, - { name = "tzdata" }, + { name = "tzdata", marker = "sys_platform == 'win32'" }, { name = "vine" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/b6/a5/607e533ed6c83ae1a696969b8e1c137dfebd5759a2e9682e26ff1b97740b/kombu-5.6.2.tar.gz", hash = "sha256:8060497058066c6f5aed7c26d7cd0d3b574990b09de842a8c5aaed0b92cc5a55", size = 472594, upload-time = "2025-12-29T20:30:07.779Z" } +sdist = { url = "https://files.pythonhosted.org/packages/57/31/3e632ebce43c684dcc6eead4660b33307e6153be87e33c14e1ed9875deff/kombu-5.7.0.tar.gz", hash = "sha256:31e62fdfd2381caa3422f8e02b84a491d9a2180ddda74507b57f4cb1e1c2c2c9", size = 627051, upload-time = "2026-11-03T05:58:33.446Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/fb/0f/834427d8c03ff1d7e867d3db3d176470c64871753252b21b4f4897d1fa45/kombu-5.6.2-py3-none-any.whl", hash = "sha256:efcfc559da324d41d61ca311b0c64965ea35b4c55cc04ee36e55386145dace93", size = 214219, upload-time = "2025-12-29T20:30:05.74Z" }, + { url = "https://files.pythonhosted.org/packages/84/20/f73d8e0bff9708b0f2337220be1b5d7ebd738bc3a89b63cf44d257157014/kombu-5.7.0-py3-none-any.whl", hash = "sha256:dede73bff4c89175be382c4203d2f167cf7017c384396ec75c36a1b5678f1587", size = 266635, upload-time = "2026-11-03T05:58:31.475Z" }, ] [package.optional-dependencies] redis = [ + { name = "packaging" }, { name = "redis" }, ] @@ -2966,11 +2966,11 @@ wheels = [ [[package]] name = "redis" -version = "6.4.0" +version = "8.1.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/0d/d6/e8b92798a5bd67d659d51a18170e91c16ac3b59738d91894651ee255ed49/redis-6.4.0.tar.gz", hash = "sha256:b01bc7282b8444e28ec36b261df5375183bb47a07eb9c603f284e89cbc5ef010", size = 4647399, upload-time = "2025-08-07T08:10:11.441Z" } +sdist = { url = "https://files.pythonhosted.org/packages/a8/99/604f0b666d4c616d891cf77ebb9db6bb21601344c051aebf1b72b9ff915f/redis-8.1.0.tar.gz", hash = "sha256:6e1a19beef9225c83efd689c7e6b7da2d5215b1f42cd13b7fc3714d0a09c7b25", size = 5254356, upload-time = "2026-07-30T08:51:00.269Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e8/02/89e2ed7e85db6c93dfa9e8f691c5087df4e3551ab39081a4d7c6d1f90e05/redis-6.4.0-py3-none-any.whl", hash = "sha256:f0544fa9604264e9464cdf4814e7d4830f74b165d52f2a330a760a88dd248b7f", size = 279847, upload-time = "2025-08-07T08:10:09.84Z" }, + { url = "https://files.pythonhosted.org/packages/66/9d/c5731f6e3608663d4d3656fd8d3aecee8b509c3082818f5a13eae925baea/redis-8.1.0-py3-none-any.whl", hash = "sha256:a4fe1aac3d3b3cc791d4b3d5931c5a956045dc951ee74d1c913ee3ac4d2ee9fb", size = 560618, upload-time = "2026-07-30T08:50:58.497Z" }, ] [[package]] @@ -3165,7 +3165,7 @@ dependencies = [ [package.metadata] requires-dist = [ { name = "celery", extras = ["redis"], specifier = ">=5.4,<6" }, - { name = "redis", specifier = ">=5,<7" }, + { name = "redis", specifier = ">=5,<9" }, { name = "simple-module-core", editable = "framework/core" }, { name = "simple-module-db", editable = "framework/db" }, { name = "simple-module-hosting", editable = "framework/hosting" }, @@ -3400,7 +3400,7 @@ requires-dist = [ { name = "httpx", specifier = ">=0.27,<0.29" }, { name = "itsdangerous", specifier = ">=2.0,<3" }, { name = "jinja2", specifier = ">=3.1,<4" }, - { name = "redis", marker = "extra == 'redis'", specifier = ">=5,<7" }, + { name = "redis", marker = "extra == 'redis'", specifier = ">=5,<9" }, { name = "sentry-sdk", extras = ["fastapi", "celery"], marker = "extra == 'sentry'", specifier = ">=2.20,<3" }, { name = "simple-module-core", editable = "framework/core" }, { name = "simple-module-db", editable = "framework/db" },