What's Changed
[0.10.0] - 2026-04-22
Added
- Write RDF annotations in CellDesigner writer (celldesigner.io)
- Add package facade with re-exports (celldesigner)
- Read/write SQUARE_CLOSEUP_* compartments (celldesigner.io)
- Add closeup compartment layouts (celldesigner)
- Check parent dir exists before writing / rendering (utils)
Changed
- Migrate utils callers to get_child_layout_elements (sbgn, celldesigner)
- Drop tuple values from layout_model_mapping (celldesigner.io.celldesigner)
- Drop tuple values from layout_model_mapping (sbgn.io.sbgnml)
- Add get_child_layout_elements and make _singleton_to_key a SurjectionDict (core.mapping)
- Update type annotations and isinstance checks (rendering,styling,positioning)
- Replace new_element with new_builder_object in readers (io)
- Drop pre-made map/model/layout builders (sbgn,celldesigner,sbml)
- Remove PointBuilder and BboxBuilder module-level names (geometry)
- Remove pre-made builder classes and convenience methods (core)
- Copy user-defined dunders to generated builders (builder)
- Expose readers and writers via format subpackage init facades (io)
- Move registry and helpers to core, expose via init facade (rendering)
- Move registry and helpers to core, expose via init facade (io)
- Move registry logic to core, keep init as facade (rendering)
- Move registry logic to core, keep init as facade (io)
- Promote styling module to subpackage with facade (styling)
- Convert pd/af module bodies to from-imports (sbgn)
- Add subpackage facade and update callers after restructur (sbgn)
- Split af.py into af/ subpackage (model/layout/map + facade) (sbgn)
- Split pd.py into pd/ subpackage (model/layout/map + facade) (sbgn)
- Split core.py into elements/model/layout/map (sbgn)
- Update callers after sbml/core.py removal (sbml)
- Split core.py into elements/model, mirror momapy.core layout (sbml)
- Update callers after core.py removal (celldesigner)
- Split core.py into elements/map, mirror momapy.core layout (celldesigner)
- Split core.py into core/model/layout (celldesigner)
- Migrate core submodules and init facade to absolute from-imports (core)
- Drop unused IOResult.exceptions field (io.core)
- Add type hints to public methods (rendering.svg_native)
- Add type hints to public functions (coloring)
- Hoist WritingContext base to momapy.io.utils (io)
- Normalize type hints to PEP 604 union syntax (sbgn.af)
- Annotate file_path on SBGN-ML and CellDesigner writers (io)
- Drop dead None checks after get_reader/get_writer (io.core)
- Include unsupported type in TypeError messages (positioning)
- Remove no-op pass branch in modulation reader (celldesigner.io)
- Use isinstance_or_builder helper (sbgn.utils)
- Align stroke/fill NoneValue checks with skia (rendering.cairo)
- Consolidate format-specific pickle readers into one pickle handler (io pickle)
Documentation
- Describe uniform layout_model_mapping scheme
- Update CODEBASE_SPEC and demos for builder refactor
- Fix misleading init docstring (meta)
- Flag sbml subpackage as partial skeleton in package docstring (sbml)
- Document subpackage layout and exposed stylesheets (sbgn.styling)
- Codify absolute-from-imports policy
- Codify absolute-imports rule with init.py re-export carve-out (claude)
- Require ruff format after edits (claude)
- Expand terse model subclass docstrings (sbgn.af)
- Add docstrings to reader helper functions (celldesigner.io)
- Add docstrings to anchor methods (celldesigner.core)
- Note filter effects are unsupported (rendering.cairo)
- Replace commented-out example with runnable one (plugins.core)
- Mark CellDesigner as read/write (readme)
Fixed
- Read source files as UTF-8 in super discipline test (tests)
- Harden coordinate frames against degenerate geometry (celldesigner.io)
- Remap pre-4.0 modifier types to KnownOrUnknownModulator subclasses (celldesigner.io)
- Restore _writing module import in writer (celldesigner.io)
- Read gene/RNA/AntisenseRNA templates without type attribute (celldesigner.io)
- Narrow unsupported-map-type error reporting (sbgn.io.sbgnml)
- Return map when set_nodes_to_fit_labels is a no-op (sbgn.utils)
- Set font_weight initial value to FontWeight.NORMAL (rendering)
- Correct RBG/RBGA typos in error messages (coloring)
- Stop swallowing exceptions in super_or_builder (builder)
- Drop duplicate LineTo in _TruncatedProteinShape (celldesigner)
Miscellaneous
- Remove unused imports in pd/af layouts and models (sbgn)
- Extend default style to new compartment layouts (celldesigner.utils)
- Remove Claude sandbox artifact gitignore entries
- Drop unused with_styles reader parameter (sbgn.io.sbgnml)
- Drop unused lxml import (celldesigner.io)
Styling
- Ruff-format unrelated test/conftest files
- Ruffed demos
- Apply ruff format across src/
Testing
- Assert singleton participant mappings (sbgn.io.sbgnml)
- Forbid raw super(...) in the frozen hierarchy
Installation
pip install momapy==0.10.0
Links