Skip to content

Upgrade all dependencies: Python 3.14, Node 24.14.1, ESLint 10, pytest 9#408

Merged
nikblanchet merged 2 commits into
mainfrom
deps/upgrade-all-march-2026
Mar 28, 2026
Merged

Upgrade all dependencies: Python 3.14, Node 24.14.1, ESLint 10, pytest 9#408
nikblanchet merged 2 commits into
mainfrom
deps/upgrade-all-march-2026

Conversation

@nikblanchet
Copy link
Copy Markdown
Owner

@nikblanchet nikblanchet commented Mar 28, 2026

Summary

  • Python 3.13 → 3.14 with all tooling updated (ruff, mypy targets, CI)
  • ESLint 9 → 10 with migration to eslint-plugin-import-x (only ESLint-10-compatible fork)
  • Node.js 24.11.0 → 24.14.1, uv 0.9.8 → 0.11.2 in CI
  • All other Python and Node.js packages updated to latest compatible versions

Details

Python

Package Before After
Python 3.13 3.14
pytest 8.4.2 9.0.2
pytest-cov 7.0.0 7.1.0
ruff 0.14.4 0.15.8
mypy 1.18.2 1.19.1
pydantic 2.12.4 2.12.5
uv (CI) 0.9.8 0.11.2

Node.js

Package Before After
Node.js 24.11.0 24.14.1
eslint 9.39.1 10.1.0
@typescript-eslint/* 8.46.3 8.57.2
eslint-plugin-unicorn 62.0.0 64.0.0
eslint-plugin-jsdoc 61.1.12 62.8.1
prettier 3.6.2 3.8.1
jest / @jest/globals 30.2.0 30.3.0
zod 4.1.12 4.3.6

Notable migrations

  • eslint-plugin-import -> eslint-plugin-import-x@4.16.2: the original package does not support ESLint 10; this is the actively maintained fork. Rule namespace updated: import/* -> import-x/* in eslint.config.mjs.
  • @eslint/js@10.0.1 added as explicit dependency (was bundled in ESLint 9, now separate).
  • eslint-import-resolver-typescript@4.4.4 added (required by eslint-plugin-import-x).
  • cli/.npmrc added with legacy-peer-deps=true: eslint-plugin-promise@7.2.1 hasn't formally declared ESLint 10 support yet but works fine with it. Remove once it does.
  • 11 unicorn/preserve-caught-error violations fixed (new rule in unicorn 64): added { cause: error } to re-thrown errors.
  • 1 no-useless-assignment fixed (new ESLint 10 core rule).
  • 18 Python type annotation modernizations auto-fixed by ruff 0.15.8 for Python 3.14 (UP037 forward reference quotes removed, UP045 Optional[X] -> X | None).
  • requirements-dev.txt: uncommented ruff/mypy entries (was marked "coming later").

Not upgraded

  • TypeScript stays at 5.x -- @typescript-eslint 8.x declares typescript: ">=4.8.4 <6.0.0" as peer dep; upgrade to TS 6 blocked until @typescript-eslint 9.x releases.

Test plan

  • uv run pytest analyzer/tests/ -- 668/668 passed
  • uv run mypy analyzer/src -- no issues
  • uv run ruff check analyzer/ -- clean
  • npm run build -- clean TypeScript compile
  • npm test -- 1024/1024 passed
  • npm run lint -- 0 errors (14 pre-existing warnings)
  • npm run format:check -- clean
  • End-to-end: node dist/index.js analyze ../examples -- OK

Generated with Claude Code

nikblanchet and others added 2 commits March 28, 2026 12:55
…t 9, ruff 0.15.8

Python:
- Python 3.13 -> 3.14 (.python-version, pyproject.toml, CI, ruff/mypy target)
- pytest 8.4.2 -> 9.0.2, pytest-cov 7.0.0 -> 7.1.0
- ruff 0.14.4 -> 0.15.8, mypy 1.18.2 -> 1.19.1
- pydantic 2.12.4 -> 2.12.5, anyio/certifi/coverage/jiter/packaging/pathspec updated
- uv in CI: 0.9.8 -> 0.11.2
- Fix 18 type annotation modernizations (UP037/UP045) for Python 3.14
- Uncomment ruff/mypy in requirements-dev.txt (no longer "coming later")

Node.js:
- Node.js 24.11.0 -> 24.14.1 (.nvmrc)
- ESLint 9.39.1 -> 10.1.0; add @eslint/js@10.0.1 (now explicit dep)
- Replace eslint-plugin-import with eslint-plugin-import-x@4.16.2
  (only actively maintained fork with ESLint 10 support)
- Add eslint-import-resolver-typescript@4.4.4 (required by import-x)
- Update import rule namespace: import/* -> import-x/* in eslint.config.mjs
- @typescript-eslint/* 8.46.3 -> 8.57.2 (supports ESLint 10)
- eslint-plugin-unicorn 62 -> 64, eslint-plugin-jsdoc 61 -> 62
- Fix 11 preserve-caught-error violations (unicorn 64 new rule)
- Fix 1 no-useless-assignment (ESLint 10 core rule)
- prettier 3.6.2 -> 3.8.1, jest 30.2.0 -> 30.3.0, ts-jest 29.4.5 -> 29.4.6
- zod 4.1.12 -> 4.3.6, ora/commander/lint-staged also updated

Note: TypeScript stays at 5.x (@typescript-eslint 8.x peer dep caps at <6.0.0)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…compat

eslint-plugin-promise@7.2.1 declares peer dep eslint: "^7||^8||^9" but works
fine with ESLint 10. npm ci in CI strict mode rejects this without the flag.
Remove once eslint-plugin-promise releases ESLint 10 support.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@nikblanchet nikblanchet merged commit 0998401 into main Mar 28, 2026
6 checks passed
@nikblanchet nikblanchet deleted the deps/upgrade-all-march-2026 branch March 28, 2026 20:42
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