chore(deps): consolidate all Renovate dependency updates#10
Merged
Conversation
Combines all open Renovate PRs (#4-#9) into a single branch: - GitHub Actions majors (#4): checkout v4->v7, setup-python v5->v6, setup-uv v6->v8.2.0, codecov-action v5->v7, attest-build-provenance v2->v4 - Security updates: starlette ->1.3.1 (#5), pygments ->2.20.0 (#8), pytest ->9.x (#9) - Lock file maintenance (#6, #7): full `uv lock --upgrade` Adapt tests/test_server.py for ruff 0.15 (new UP042): use enum.StrEnum instead of the (str, Enum) mixin. All 58 tests pass; ruff check, ruff format, and build are clean. The library's WebSocket client already uses the modern websockets API; remaining deprecation warnings originate inside uvicorn.
This was referenced Jun 18, 2026
Full hydration follow-up to the consolidated dependency update. Bumps every pyproject floor to the latest version that still supports the project's minimum Python (>=3.11), verified by a clean import of the full stack under 3.11: - runtime: fastapi>=0.137.2, starlette>=1.3.1, uvicorn>=0.49.0, websockets>=16.0 (httpx already latest at 0.28.1) - dev: pytest>=9.1.0, pytest-asyncio>=1.4.0, pytest-cov>=7.1.0, pydantic>=2.13.4, ruff>=0.15.17, restructuredtext-lint>=2.0.2, pygments>=2.20.0 - build: hatchling>=1.30.1 CI: bump pinned uv 0.5.11 -> 0.11.13 (0.5.11 cannot parse the current revision=3 lockfile) and define UV_VERSION in release.yml, which previously referenced it undefined. gitignore: ignore .DS_Store. Resolved versions unchanged from the prior commit; lock delta is only the embedded constraint metadata. 58 tests pass; ruff and build clean.
Add a pull_request trigger (PRs never ran CI before; the workflow only fired on push to master) plus a concurrency group to cancel superseded runs on the same ref.
Welcome to Codecov 🎉Once you merge this PR into your default branch, you're all set! Codecov will compare coverage reports and display results in all future pull requests. Thanks for integrating Codecov - We've got you covered ☂️ |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Consolidates all open Renovate PRs into a single branch, as requested. Each package was checked for breaking changes (context7 + upstream release notes) and verified against the full test suite.
What's included
The lock file was regenerated with
uv lock --upgrade, which captures the security updates and the lock-maintenance bumps in one consistent resolution (pyproject>=floors unchanged). Highlights:fastapi 0.116→0.137,starlette 0.47→1.3.1,uvicorn 0.35→0.49,websockets 15→16,pytest 8.4→9.x,pytest-asyncio 1.1→1.4,ruff 0.12→0.15.GitHub Actions (#4)
actions/checkoutv4 → v7actions/setup-pythonv5 → v6astral-sh/setup-uvv6 → v8.2.0 (v8 dropped moving tags, so the full version is required — already pinned by Renovate)codecov/codecov-actionv5 → v7actions/attest-build-provenancev2 → v4Breaking-change review
[tool.pytest.ini_options]is still supported, so no config change. The new "test returns non-None / yields → error" rules only affecttest_*functions; allreturn/yieldhere are in route handlers, fixtures, and lifespans. Confirmed by a green run.event_loop_policyoverride, which this project does not use.websockets.asyncio.clientAPI. The remainingwebsockets.legacydeprecation warnings come from uvicorn's server-side implementation, not our code, and are harmless.Code adaptation
tests/test_server.py:ItemStatus(str, Enum)→enum.StrEnumto satisfy ruff 0.15's stabilizedUP042.Verification
ruff checkclean,ruff format --checkcleanuv buildsucceeds,uv lock --checkconsistentSupersedes #4, #5, #6, #7, #8, #9.
Update: full hydration + floor bump (2nd commit)
After consolidation, raised every
pyproject.tomlfloor to the latest release that still supports the minimum Python (>=3.11), and verified the full stack imports cleanly under Python 3.11.13. Resolved versions are unchanged from the first commit — the lock delta is only the embedded constraint metadata.fastapi>=0.137.2,starlette>=1.3.1,uvicorn>=0.49.0,websockets>=16.0(httpxalready latest at 0.28.1)pytest>=9.1.0,pytest-asyncio>=1.4.0,pytest-cov>=7.1.0,pydantic>=2.13.4,ruff>=0.15.17,restructuredtext-lint>=2.0.2,pygments>=2.20.0hatchling>=1.30.1Pinned-version audit
==pins exist inpyproject.toml(all>=floors).UV_VERSIONwas0.5.11, which cannot parse the currentrevision = 3lockfile — bumped to0.11.13(the version that generated the lock). Also definedUV_VERSIONinrelease.yml, where it was previously referenced but never set..gitignore: now ignores.DS_Store.Note:
PYTHON_VERSIONstays at 3.13 (build-test) / 3.11 (release) — left as-is intentionally.