Maintenance and release verification¶
Checks¶
Run just check for lint, formatting verification, type checking, and tests.
Run uv run --group docs mkdocs build --strict for documentation validation.
The test suite executes examples from the getting-started and analysis pages.
Distributions and CI¶
Build distributions with uv build --out-dir dist, then run
uv run python scripts/verify_distribution.py dist. Use a clean output
directory containing one wheel and one source archive. Verification checks
the pure Python wheel and its typing marker, checks source archive exclusions,
and installs the wheel into a temporary environment outside the checkout.
It exercises DDA, DIA, and PRM extraction with the bundled fixtures. Runtime
dependencies must be available in the uv cache or from the package index.
CI tests Linux on Python 3.12, 3.13, and 3.14, plus macOS and Windows on 3.13, a lowest-dependency job, a strict docs build, and the MCP extra on all three platforms. A separate job uploads coverage and JUnit output. The release workflow checks the tagged revision and its installed artifacts before upload. Numba's compiled code is not fully represented by ordinary coverage tracing.
Reference data¶
Independent reference values must remain independent. The calibration generator
is disabled because its former import path now resolves to tdfpy's own reader.
Do not replace tests/data/calibration_golden.json or peaks_golden.json with
values produced by the implementation being tested. Any future external capture
must record the reference implementation version, acquisition checksums,
calibration and pressure settings, and a separate output path. Review new
captures before extending the committed references.
An independent raw-decoding reference set and broader instrument fixtures remain external validation work. Prioritize calibration changes, negative polarity, empty frames, and acquisition boundaries. Cross-version agreement between two tdfpy builds is useful regression evidence, but is not vendor validation.
Publishing¶
Releases publish to PyPI with Trusted Publishing (OIDC, no API token). Publishing a
GitHub release runs .github/workflows/publish.yml, which checks that the tag, version
and changelog agree, runs the tests, builds and verifies the distributions, and uploads
them from the pypi environment. See the
PyPI trusted publisher documentation.
Benchmarks¶
Benchmark a fixed acquisition with
uv run python scripts/benchmark_reader.py tests/data/example_dia.d.
The JSON output records acquisition checksums, versions, opening time, raw
decoding throughput, first and warm centroid calls, repeated-window timings,
and process peak RSS where supported. The first centroid call only measures
fresh compilation if it runs in a fresh process with an empty NUMBA_CACHE_DIR.
RSS includes imports and all benchmark stages. Timings are measurements, not
portable CI pass/fail thresholds.
Compatibility¶
Changes that affect downstream callers (types, corrected values, newly rejected parameters) are listed per release in the changelog. Local checks and benchmark commands do not publish releases.