Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 27 additions & 3 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

## [7.1.0] - 2026-07-26

### Security

- **Every zizmor finding fixed, and the gate tightened to match.** The
Expand Down Expand Up @@ -65,9 +67,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
replace them, so the writer and the cache reader compose names from one
place. `_computed_eigen_pairs` drops seven parameters as a result.

- **`save_kinship=True` without `kinship_output_dir` now raises**, matching
`write_eigen`/`eigen_dir`. The docstring already called the directory
required; nothing enforced it, and the write was silently skipped.
- **`save_kinship=True` without `kinship_output_dir` now raises** instead of
silently writing nothing, matching `write_eigen`/`eigen_dir`.

Released as a minor rather than a major bump. The behaviour it removes is a
silent no-op: `_computed_eigen_pairs` tested `save_kinship and
kinship_output_dir is not None` and skipped the write when the pair was
half-set, so no caller could have been depending on it for output. The
field's own docstring already called the directory required, and
`LocoConfig` first shipped one release ago in 7.0.0, so the window in which
anyone could have written that call is a single version.

- **`loco.py` split into three modules.** It had reached 1000 lines.
`LocoConfig` and `DEFAULT_LOCO_CONFIG` move to `jamma.lmm.loco_config`, the
Expand Down Expand Up @@ -95,6 +104,21 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
was a second copy of `LocoConfig`'s default. Now keyword-only with `config`,
`col_chunk_size` and `chr_name` required.

### Internal

- **pyrefly baseline down from 269 errors to 171.** Two root causes accounted
for 98 of them: `test_telemetry.py` passed partial `BenchmarkRecord` dicts
to a TypedDict whose five required keys `append_benchmark_record` never
fills in (one error per missing key, hence 56 from 14 call sites), and three
`tests/lmm_accel` modules called `Callable[..., Any] | None` C bindings
without narrowing, behind runtime `skipif` gates a type checker cannot
follow. Test-only; no shipped code changed.

Note for anyone reading the tooling output: `pyrefly check --baseline`
reports `0 errors (28 suppressed)`, and that count is inline suppressions —
it appears identically with and without the baseline. Run without
`--baseline` to see the real backlog.

## [7.0.0] - 2026-07-25

### Changed
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ build-backend = "hatchling.build"

[project]
name = "jamma"
version = "7.0.0"
version = "7.1.0"
description = "Highly-Accelerated Multi-method Mixed-Model Association for large-scale GWAS"
readme = "README.md"
requires-python = ">=3.11"
Expand Down
2 changes: 1 addition & 1 deletion uv.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading