Skip to content

v14.0.0

@SkyeAv SkyeAv tagged this 24 Aug 23:27
Cut 14.0.0 and bump the package version in pyproject.toml, uv.lock, and
CITATION.cff.

Major: one breaking change since 13.0.0. Generated edges no longer duplicate each
nested `sources` entry's provenance identifier into `sources[].id`; `resource_id`
is now the sole identifier on a retrieval-source entry (#115). The pinned Biolink
model still requires the inherited `Entity.id` on `RetrievalSource`, so the
validator supplies it to an in-memory compatibility copy only, and neither the
decoded record nor the written NDJSON carries it.

Also ships the explicit retrieval-`sources` template with `{edge_id}` record-URL
interpolation (#116) and the negative-log p-value un-logging fix (#114).

Changelog:
- The Unreleased section was missing #116 entirely; added it under `Added`, and
  gave the two existing entries their PR links plus a reader migration note for
  the `sources[].id` removal.

Docs:
- `docs/configuration/table.md`'s automatic-coercion section documented neither
  half of #114: added a `Negative-log P value` row to the recognition table and a
  bullet covering the un-logging (`p = 10 ** -x` on rename and on banding), the
  complete-token requirement, the deliberate pass on unmarked `log10` spellings,
  raw-beats-alias selection, and the Float64 underflow floor. Every documented
  spelling was checked against `is_neglog10_column` and `pvalue_target`.
- `docs/cli.md`'s validate-kgx section explained the pending-field count but not
  the mirror case #115 introduced; added the `RetrievalSource` compatibility
  alias, including that it stops being applied once a model release drops the
  requirement.
- Removed the five em-dashes #115 and #116 reintroduced into the two doc pages,
  restoring the docs-wide convention set in abb042a.

Known gap, deliberately not fixed here: `PVALUE_TOKEN_PATTERN` anchors on `\b`,
which does not fire after an underscore, so `raw_pvalue` / `adj_pvalue` /
`fdr_pvalue` / `negative_log10_pvalue` are not recognized as p-value columns at
all, even though the same names with a separated token (`gene_p_value`) and the
bare-P forms (`raw_p`) are. It predates this window and changing recognition
would shift behavior for existing configs, so it wants its own PR.

Testing:
- uv run pytest -q -> 1078 passed, 15 skipped (94% coverage)
- uv run ruff check . && uv run ruff format --check . && uv run pyright -> clean / 0 errors
- uv lock --check -> up to date
- uv run mkdocs build --strict -> clean

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RRefj7KvacA9PGQYMCt6wy
Assets 2
Loading