Description
The Wave 3 currency pass found AnyIO 4.14.2 locked through the direct runtime requirement at pyproject.toml:16, while 4.15.0 is available. Its release changes task-name defaults, lazy imports, cancellation behavior and pytest-plugin handling. Those areas intersect this exporter’s bounded admission, request cancellation, lifespan shutdown and async test harness, so the bump was not treated as mechanical despite no declared breaking heading.
Acceptance Criteria
- #1 AnyIO 4.15.0 is exercised against request cancellation, lifespan shutdown, managed task groups and the pytest async harness before the lockfile moves
- #2 Focused async/concurrency tests and the full repository gate pass without weakening timeouts, cancellation assertions or shutdown bounds
- #3 Behavioral changes found during the bump are documented or split into self-contained follow-up work
Definition of Done
- #1 just check (ruff format –check, ruff check, mypy, generated-doc drift, offline API conformance, and the marker-filtered pytest run with the 80% coverage floor — this is exactly what the CI
testjob runs) - #2 just gen, when metrics, config, endpoints, collectors, the settings schema or the chart config changed —
just checkincludes the drift gate and CI fails the build on it - #3 Grafana queries in grafana/dashboards/*.json and grafana/alerts/ updated, if a metric or label name changed
Implementation Plan
Exercise AnyIO 4.15.0 against cancellation, lifespan shutdown, managed task groups and the async pytest harness; apply only if focused concurrency checks and the full gate pass unchanged.
Final Summary
Accepted AnyIO 4.15.0 in 4cc1f6e. An isolated focused suite passed 74 tests; the applied checkout passed a broader 100-test slice covering request cancellation, lifespan shutdown, ManagedTaskGroup behavior, and the async pytest harness, then just check passed 2,958 selected tests at 91.49% coverage without changing timeouts or assertions. AnyIO 4.15.0 exposes a new third-party Starlette deprecation warning for the anyio.abc.BlockingPortal alias; no exporter behavior changed and the existing FastAPI-TestClient warning remains separate.