Release notes for sbml4humans 0.2.0
The first release of sbml4humans from its own repository. Until sbmlutils 0.10.0 the application lived in the sbmlutils repository, the backend api was sbmlutils.report.api with version 0.1.2.
Breaking changes
- the backend is the
sbml4humansPython package inbackend/, installed withuv syncfrom apyproject.toml;backend/requirements.txtand theapi:apimodule are gone. The server starts withuvicorn sbml4humans.api:api - Python 3.14 is required
- the example list of
/api/examplesno longer exposes the server path of the example files
Fixes
- the backend did not start against pymetadata >= 0.6.0, which moved
BQBtopymetadata.core.miriam - uploaded and downloaded files were decoded as text, so COMBINE archives and gzipped SBML could not be reported; the content is handled as bytes and gzipped SBML is decompressed
- invalid content returned an empty report which broke the frontend, it returns an error payload with the libsbml messages now
- the examples were read at import time and the backend crashed without the curated BioModels, which are not part of the sbmlutils distribution; the BioModels are optional and the examples are read once on startup
- the example of a BioModels archive is its master SBML entry (or the first entry by location) instead of the first entry in an order which differed between machines
- CORS no longer combines
allow_origins=["*"]with credentials, which browsers reject - the reaction equation of models with a variable (NaN) or negative stoichiometry is created by sbmlutils >= 0.10.1
Development
- the backend is split into
report.py(report data),examples.py(example metadata),annotations.py(annotation resources) andapi.py(the http layer); failures are reported to the frontend by one exception handler instead of a try/except per route - 96 tests cover the report creation, the examples and every endpoint (
backend/tests), run withuv run pytest - ruff with the rule set of sbmlutils and ty for type checking, both clean; they run as GitHub Actions on every push together with the tests
- development runs against the sbmlutils checkout next to the repository (
[tool.uv.sources]inbackend/pyproject.toml), which provides the curated BioModels served as examples - the backend container installs the latest
developbranch of sbmlutils into/opt/sbmlutils, outside of the repository mount of docker compose - the version lives in
backend/sbml4humans/__init__.pyand is bumped withbump-my-version, which tags the release; a tag creates a GitHub release with the notes fromrelease-notes/ - dependencies updated to their current releases
Your sbml4humans team