Skip to content

chore: repo refresh (2026-10) - #38

Merged
tlambert03 merged 5 commits into
pyapp-kit:mainfrom
tlambert03:refresh/2026-10-26
Oct 26, 2026
Merged

tlambert03 merged 5 commits into
pyapp-kit:mainfrom
tlambert03:refresh/2026-10-26

Conversation

@tlambert03

@tlambert03 tlambert03 commented Oct 26, 2026 •

Copy link
Copy Markdown
Member

periodic tooling refresh. one commit per step, so they should be easy to review (or revert/cherry-pick) individually.

ci: autoupdate pre-commit hooks

  • validate-pyproject v0.23 -> v0.27
  • ruff v0.9.4 -> v0.17.2
  • black 25.1.0 -> 26.10.1
  • mypy v1.14.1 -> v2.4.0

style: fix lint errors from hook updates

the only thing the new hooks flagged was RUF043 in tests/test_pyconify.py: the pytest.raises(match=...) patterns ended in an unescaped . ... so they're raw strings with \. now. no new noqas or ignores.

ci: bump GitHub Actions

  • actions/checkout v4 -> v7
  • actions/setup-python v5 -> v7
  • softprops/action-gh-release v2 -> v3

these are all in the deploy job. the majors are mostly the move to the Node 24 runtime (setup-python v7 also removed the pip-install input, which we don't use), so I don't expect any behavior change. pyapp-kit/workflows@v2 is already on the latest major.

chore: drop Python 3.9 and 3.10, add 3.14 and 3.15

3.9 and 3.10 are both EOL now (3.10 as of this month), and 3.14 and 3.15 are released.

  • requires-python = ">=3.11", classifiers updated, ruff target-version = "py311"
  • test matrix is now 3.11 through 3.15 on ubuntu, and the windows/macos rows moved from 3.9 to 3.11
  • test-qt moved from 3.10 to 3.11

refactor: modernize syntax for Python >= 3.11

just what ruff check --fix (UP035) did with the new target: Callable from collections.abc, and Required from typing instead of typing_extensions. ruff leaves TypedDict and Unpack on typing_extensions until a py312/py313 target... they're TYPE_CHECKING-only imports anyway, and typing_extensions was never a runtime dep.

tests pass locally on 3.11 (19 passed, 4 qt tests skipped).

needs attention

  • test-qt (PySide2) passes on 3.11 (and the test actually runs, it's not skipped)... but only because pip falls back to PySide2 5.13.2: the last release, 5.15.2.1, declares requires-python <3.11. on main (3.10) it was testing 5.15.2.1. so it's now testing a pretty ancient PySide2. could keep it like that, or just drop PySide2 from the qt matrix (superqt dropped it when it went to 3.11). your call.
  • pyapp-kit/workflows test-pyrepo.yml@v2 still uses actions/setup-python@v5 internally. not touched here (different repo), but it'll want the same bump.
  • the ruff hook still uses the ruff id, which ruff-pre-commit now calls a "legacy alias" of ruff-check. still works, so I left it.
  • no branch protection changes needed (the only required check is pre-commit.ci - pr).

superseded

Closes #37

Related: #33 ... this has every hook at the same or a newer rev, but #33 also switches psf/black to psf/black-pre-commit-mirror, which prek update didn't do.

🤖 Generated with Claude Code

tlambert03 and others added 5 commits October 26, 2026 21:05
- abravalheri/validate-pyproject: v0.23 -> v0.27
- astral-sh/ruff-pre-commit: v0.9.4 -> v0.17.2
- psf/black: 25.1.0 -> 26.10.1
- pre-commit/mirrors-mypy: v1.14.1 -> v2.4.0

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
RUF043 (ruff 0.17): escape the trailing `.` in `pytest.raises(match=...)`
patterns and make them raw strings.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- actions/checkout: v4 -> v7
- actions/setup-python: v5 -> v7
- softprops/action-gh-release: v2 -> v3

All three majors are mainly the Node 24 runtime move; none of the inputs
used here (fetch-depth, python-version, generate_release_notes, files)
changed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- 3.9 (EOL 2025-10-31) and 3.10 (EOL 2026-10) are end-of-life: dropped.
- 3.14 and 3.15 are released: added to classifiers and the CI matrix.
- requires-python >=3.11; ruff target-version py311.
- CI: main list keeps its shape (full 5-version list, now 3.11-3.15);
  windows/macos include rows move from 3.9 to the new minimum 3.11;
  test-qt moves from 3.10 to 3.11.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
ruff check --fix with target-version py311 (UP035):
- Callable from collections.abc instead of typing
- Required from typing instead of typing_extensions (TypedDict/Unpack stay
  on typing_extensions, which ruff only replaces for py312/py313 targets;
  both are TYPE_CHECKING-only imports)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@codecov

codecov Bot commented Oct 26, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 100.00%. Comparing base (34ee576) to head (331e5a7).

Additional details and impacted files
@@            Coverage Diff            @@
##              main       #38   +/-   ##
=========================================
  Coverage   100.00%   100.00%           
=========================================
  Files            4         4           
  Lines          276       276           
=========================================
  Hits           276       276           

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@tlambert03
tlambert03 merged commit b0ed34f into pyapp-kit:main Oct 26, 2026
15 checks passed
@tlambert03
tlambert03 deleted the refresh/2026-10-26 branch October 26, 2026 21:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant