Skip to content

0.6.0: multivalued output_ids, no test_env on test cases, Python 3.10+ - #43

Merged
maximusunc merged 4 commits into
mainfrom
claude/hopeful-darwin-3kmynk
Oct 29, 2026
Merged

maximusunc merged 4 commits into
mainfrom
claude/hopeful-darwin-3kmynk

Conversation

@maximusunc

@maximusunc maximusunc commented Oct 29, 2026 •

Copy link
Copy Markdown
Collaborator

Three breaking changes, released together as 0.6.0 so the Tests repo, the Test Harness and the Information Radiator switch over once.

TestAsset.output_id → output_ids

An expected output can now be named by several CURIEs, any of which counts as the expected answer. For example, sirolimus is CHEBI:9168 and PUBCHEM.COMPOUND:5284616; node normalization no longer merges these, so Translator returns them as separate answers with their evidence split.

  • output_ids is a multivalued uriorcurie that defaults to [] (performance assets have no expected output).
  • Data still using output_id is rejected, and a single CURIE has to be a one-item list.
  • The examples are converted, and there's a new two-CURIE sirolimus example (Good-TestAsset-002.json).

test_env removed from test cases

A suite is the same in every environment, so test cases no longer say which one they run in. The Test Harness is told instead (--env).

  • test_env is removed from TestCase and PathfinderTestCase, so from every test case class.
  • TestRunSession keeps it, since a record of a run should say where it ran.

Python 3.10+

CI was failing because snok/install-poetry installs the latest Poetry, and since 2.3.0 that needs Python 3.10, so the 3.9 job couldn't start.

  • The package now requires Python >=3.10,<3.13.
  • CI tests 3.10, 3.11 and 3.12 with the latest Poetry, and the docs and release workflows run on 3.10.
  • poetry.lock is relocked with Poetry 2.5.1. Every package keeps its version; importlib-metadata and zipp, needed only on 3.9, drop out. The lock format is now 2.1, which needs Poetry 2.0 or later.

Also

  • The datamodels and project/ artifacts are regenerated with linkml 1.7.8, the version in poetry.lock. I checked that it reproduces the committed Pydantic model exactly before the change. The large OWL/SHACL diffs are the generators reordering lines; the only real changes in them are the two slots above.
  • New tests: tests/test_output_ids.py and tests/test_test_env.py.
  • Version bumped to 0.6.0.

Testing

  • CI steps: poetry install --no-root, poetry install and make test, run locally with Poetry 2.5.1 on Python 3.10, 3.11 and 3.12. All pass, with 39 tests and 4 skipped as before.
  • Release build: the release workflow's poetry build, run with poetry-dynamic-versioning and a v0.6.0 tag, gives translator_testing_model-0.6.0 with Requires-Python: >=3.10,<3.13.
  • Docs install: poetry install -E docs resolves.

Rollout

  1. Merge this, then create the v0.6.0 release, which publishes to PyPI.
  2. Multi-CURIE expected outputs, a run-level --env, and shared suites in the radiator TestHarness#62 pins translator-testing-model==0.6.0; its CI can't install until the release is out. The harness image is on Python 3.11.
  3. NCATSTranslator/Tests is converted with a migration script, merged in the same window as the harness deploy.

🤖 Generated with Claude Code

https://claude.ai/code/session_01S2yuREtzxTuRqVGp8Q8a6d

An expected output can now be named by several CURIEs, any one of which
counts as the expected answer. For example, sirolimus is CHEBI:9168 and
PUBCHEM.COMPOUND:5284616; node normalization no longer merges these, so
Translator returns them as separate answers.

This is a breaking change: data still using output_id is rejected by the
Pydantic model, and a single CURIE must be given as a one-item list.

- schema: output_id -> output_ids (multivalued uriorcurie)
- regenerate the datamodels and project artifacts with linkml 1.7.8
- convert the examples, add a two-CURIE sirolimus example, and test the
  Pydantic model's handling of the new slot
- bump version to 0.6.0

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01S2yuREtzxTuRqVGp8Q8a6d
A suite is the same in every environment, so test cases no longer say
which one they run in: the TestHarness is told. TestCase and
PathfinderTestCase (and so every test case class) drop test_env, and
data that still has it is rejected. TestRunSession keeps it, since a
record of a run says where it ran.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01S2yuREtzxTuRqVGp8Q8a6d
snok/install-poetry installs the latest Poetry, and since 2.3.0 that
needs Python 3.10+, so the Python 3.9 test job (and the docs deploy,
also on 3.9) failed before running anything. poetry.lock was written by
Poetry 1.8, and 1.8.5 is the last 1.x release.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01S2yuREtzxTuRqVGp8Q8a6d
Poetry 2.3+ needs Python 3.10+, so rather than pinning an old Poetry in
CI, require Python 3.10. CI tests 3.10 to 3.12 (all the package
supports) with the latest Poetry again, and the docs and release
workflows run on 3.10. poetry.lock is relocked with Poetry 2.5.1: every
package keeps its version; importlib-metadata and zipp, needed only on
3.9, drop out.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01S2yuREtzxTuRqVGp8Q8a6d
@maximusunc maximusunc changed the title 0.6.0: multivalued output_ids, and no test_env on test cases 0.6.0: multivalued output_ids, no test_env on test cases, Python 3.10+ Oct 29, 2026
@maximusunc
maximusunc merged commit 23ff9d8 into main Oct 29, 2026
3 checks passed
@maximusunc
maximusunc deleted the claude/hopeful-darwin-3kmynk branch October 29, 2026 17:26
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.

2 participants