From 3eaffd40312e0b07a535d0da92c87439744be277 Mon Sep 17 00:00:00 2001 From: plutopulp Date: Wed, 17 Dec 2025 18:31:35 +0100 Subject: [PATCH] chore: prepare v0.7.0 release (retry handler, py3.11+) - Update changelog for v0.7.0 - Bump version to 0.7.0 and set minimum Python to 3.11 - Align docs/badges and CI/mypy to the new version range - Add release notes for v0.7.0 --- CHANGELOG.md | 20 ++++++++++++++++++++ pyproject.toml | 2 +- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 46f34eb..7a9014d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,26 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [0.7.0] - 2025-12-17 + +### ⚠️ Breaking Changes + +- **Minimum Python version is now 3.11+**: Type checking and runtime features (e.g., `StrEnum`, `asyncio.Timeout`, `typing.Unpack`) require Python 3.11 or later. CI and metadata updated accordingly. + +### Added + +- **Manager-level retry handler configuration**: `DownloadManager` now accepts `retry_handler` and threads it through `WorkerPool` and workers. Retry events flow through the shared emitter. Added integration tests and example `07_retry_handling.py` covering basic retries, custom policies, and no-retry behaviour. + +### Changed + +- **Docs and badges**: Reordered badges, added "commits since release" badge, and refreshed retry documentation to show manager-level configuration and custom policies. +- **Tooling**: Mypy target and CI matrix aligned to Python 3.11–3.14; packaging metadata updated. + +### Removed + +- **Legacy scripts/fixtures**: Deleted unused `src/rheo/main.py` demo script and `tests/fixtures/` data. +- **Dead config**: Removed `FileConfig.max_retries` field (unused). + ## [0.6.0] - 2025-12-17 ### ⚠️ BREAKING CHANGES diff --git a/pyproject.toml b/pyproject.toml index 5d69666..4739ab4 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "rheopy" -version = "0.6.0" +version = "0.7.0" description = "Concurrent HTTP download orchestration with async I/O" authors = [ {name = "plutopulp", email = "plutopulped@gmail.com"}