You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
CI: test the supported Python range, and run ruff + mypy #42
CI currently runs a single job — pytest on Python 3.12 only. Two gaps worth closing.
1. Test the supported Python range
pyproject.toml declares requires-python = ">=3.10", but .github/workflows/ci.yml pins one version with no matrix:
- name: Set up Pythonrun: uv python install 3.12
So neither end of the supported range is exercised: 3.10 and 3.11 are untested, and local development is currently on 3.14.6 (what uv resolves by default), which CI never sees either. Worth a matrix over 3.10–3.12 at minimum, and probably 3.13/3.14 too since that is what the code is actually being written against.
Low but non-zero risk today — the package uses from __future__ import annotations throughout and X | None syntax, so 3.10 compatibility is plausible but unverified.
2. Run ruff and mypy in CI
Both are dev dependencies and both are configured ([tool.ruff.lint] with a decent rule selection, [tool.mypy] with strict = true), but neither runs in CI. Lint and type regressions can land on main freely.
Blocker to be aware of for mypy: there are currently 18 pre-existing errors, all no-untyped-def (missing return annotations) in test files:
Package source (hotdata_langchain/) is clean. So adding mypy to CI needs those test annotations added first, or a baseline — it cannot just be switched on. Ruff passes clean today and can be added immediately.
Context
Worth doing, not urgent — filed after a deliberate decision to prioritise capability work while the package has no external consumers. The gap became visible while validating the hotdata-framework 0.9.0 bump (#35): its green check covered 24 tests on one Python version and none of them touched upload_parquet, the one function whose internals actually changed. The 0.4.1 breakage it fixed was found by running against the live engine, not by CI — so this is about catching regressions cheaply, not about replacing live verification.
The mypy blocker in this issue is stale, and by enough to change how the work is planned.
It says 18 pre-existing errors. Measured on origin/main at v0.13.0, in a clean worktree:
$ uv run mypy hotdata_langchain tests
Found 59 errors in 5 files (checked 25 source files)
Still all in tests, still almost all no-untyped-def, and package source is still clean — so the shape of the problem is unchanged and the recommendation in the issue (annotate the tests, or take a baseline) still holds. It is just three times the work the issue budgets for.
Two notes for whoever picks it up:
The count grows with every test file added, because the existing files' style is unannotated and new tests tend to match their neighbours. That is an argument for doing this sooner rather than later, or for gating source-only first and tests behind a baseline.
Activity
rohan-hotdata commentedon Aug 26, 2026
The mypy blocker in this issue is stale, and by enough to change how the work is planned.
It says 18 pre-existing errors. Measured on
origin/mainat v0.13.0, in a clean worktree:Still all in tests, still almost all
no-untyped-def, and package source is still clean — so the shape of the problem is unchanged and the recommendation in the issue (annotate the tests, or take a baseline) still holds. It is just three times the work the issue budgets for.Two notes for whoever picks it up:
mainrather than assumed, so it is a real baseline to diff against, not a drifting one.Ruff is genuinely clean and could be switched on independently today —
ruff checkandruff format --checkboth pass onmain.ci: test the supported Python range, and gate ruff and mypy (#92)