From 0875864d9865bdf721e5c6ecb533cc33c6cc689d Mon Sep 17 00:00:00 2001 From: Artur Shiriev Date: Mon, 29 Jun 2026 23:32:04 +0300 Subject: [PATCH] docs: release notes for 0.4.0 (Python 3.11/3.12 support) Co-Authored-By: Claude Opus 4.8 (1M context) --- planning/releases/0.4.0.md | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 planning/releases/0.4.0.md diff --git a/planning/releases/0.4.0.md b/planning/releases/0.4.0.md new file mode 100644 index 0000000..d62402d --- /dev/null +++ b/planning/releases/0.4.0.md @@ -0,0 +1,36 @@ +# faststream-redis-timers 0.4.0 — Python 3.11 & 3.12 support + +The supported-Python floor drops from 3.13 to **3.11**, so the package now +installs and runs on 3.11, 3.12, 3.13, and 3.14. This release also fixes a +start-up task leak found while adding the wider CI matrix. + +## Python 3.11 & 3.12 support + +- `requires-python` lowered to `>=3.11,<4`; 3.11 and 3.12 classifiers added. +- Two 3.12-only constructs are backported via `typing-extensions` (now a direct + dependency, `>=4.12.0`): the `@override` decorators and the `RedisClient` type + alias (the latter via `typing.TypeAlias`, stdlib since 3.10). `typing.Self` and + `datetime.UTC` already exist in the 3.11 stdlib and are unchanged. +- CI now runs the full test suite on all four interpreters (3.11–3.14). +- No public-API change. The package is pure-Python; this is a compatibility and + packaging change for everyone already on 3.13/3.14, and a new option for + 3.11/3.12 users. + +## Bug fix + +- **Failed broker start no longer orphans the poll task.** When `start()` timed + out (`start_timeout` elapsed before the subscriber signalled ready), the + background `_consume` poll task it had already spawned was left running, + holding a Redis connection. On slow runners this could deadlock teardown. + `start()` now cancels and awaits that task before re-raising, so a failed start + leaves nothing behind. Covered by a deterministic regression test. + +## Downstream + +Upgrading is a drop-in. If you were pinned to Python 3.13+ only because of this +package, you can now run it on 3.11 or 3.12. `typing-extensions>=4.12.0` is +pulled in automatically (it was already a transitive dependency via faststream). + +## Internals + +- 100% test coverage maintained (now 150 tests).