Developer notes
Extension points
Add a new input format by writing a parser that returns ODEModel.
flowchart LR
New[New input format] --> Parser[New parser]
Parser --> IR[ODEModel]
IR --> SBML[SBML writer]
IR --> PEtab[PEtab writer]
Do not make exporters depend on input-specific structures.
Testing strategy
Recommended test layers:
- Unit-test
ODEModelvalidation. - Unit-test parser conversion for each convention.
- Snapshot-test SBML strings for small models.
- Validate generated SBML with libSBML.
- Smoke-test PEtab bundle generation.
CI example
name: tests
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.12"
- run: pip install -e ".[test,docs]"
- run: pytest
- run: mkdocs build --strict
Strict docs build
Use mkdocs build --strict in CI so broken links, invalid mkdocstrings references, and malformed Mermaid blocks are caught early.
Release checklist
- All tests pass.
- Example models convert to SBML.
- Generated SBML validates.
- PEtab example writes expected files.
mkdocs build --strictpasses.- Version and changelog are updated.