Summary
Parent epic for cellpy v2.0: the consumer-side upgrade that builds on the finished v1→cellpy-core integration. cellpy keeps loaders, plotting, batch, CLI, and HDF5 — but adopts keyed per-test metadata, thins CellpyCell to orchestration, and retires legacy duplication.
Planning doc (source of truth): .issueflows/04-designs-and-guides/cellpy-v2-epic.md
Companion docs live in the cellpy-core repo under .issueflows/04-designs-and-guides/ (integration strategy, migration guide, metadata model).
Goal
Ship cellpy v2.0 as a behaviour-compatible upgrade where CellpyCell orchestrates cellpy-core, supports merged multi-test campaigns via test_id + TestMetaCollection, simplifies the public API, and enforces parity through tests — not vigilance.
Gate (Phase 0 — must complete before v2 feature work)
Epic phases (child issues to be carved out)
| Phase |
Focus |
Theme IDs |
| 1 |
Data model: TestMetaCollection, per-test cycle_mode, v1 compat |
V2-01 … V2-04 |
| 2 |
Loaders + harmonized raw + multi-file merge |
V2-05 … V2-08 |
| 3 |
Thin CellpyCell, public API cleanup, native schema opt-in |
V2-09 … V2-12 |
| 4 |
HDF5 v2, metadata persistence, release pin + migration guide |
V2-13 … V2-15 |
Proposed child issues (not yet filed)
| Slug |
Themes |
Blocks |
v2-gate-parity-and-legacy-cleanup |
Phase 0 |
everything |
v2-testmeta-on-data |
V2-01, V2-02, V2-04 |
merge, loaders |
v2-composite-keys-merge |
V2-03, V2-07 |
release |
v2-loader-harmonized-raw |
V2-05, V2-06, V2-08 |
merge |
v2-slim-cellpycell-api |
V2-09, V2-10, V2-12 |
release |
v2-file-format-and-persistence |
V2-13, V2-14, V2-15 |
v2.0 tag |
v2-native-schema-opt-in |
V2-11 |
optional |
Prerequisites already done (integration roadmap)
Parallel hardening (cellpy-core)
Success criteria (v2.0 release)
See the epic doc checklist. Key points: no dual compute engine, merged campaigns work with composite (test_id, cycle_num, step_num, …) keys, v1 files load with test_id=0, exact cellpycore== pin at release.
Non-goals
- Rewriting plot/batch/CLI
- Engine re-port (lives in cellpy-core)
- Merging branch 334
- Requiring populated metadata on core's hot path
Summary
Parent epic for cellpy v2.0: the consumer-side upgrade that builds on the finished v1→
cellpy-coreintegration. cellpy keeps loaders, plotting, batch, CLI, and HDF5 — but adopts keyed per-test metadata, thinsCellpyCellto orchestration, and retires legacy duplication.Planning doc (source of truth):
.issueflows/04-designs-and-guides/cellpy-v2-epic.mdCompanion docs live in the
cellpy-corerepo under.issueflows/04-designs-and-guides/(integration strategy, migration guide, metadata model).Goal
Ship cellpy v2.0 as a behaviour-compatible upgrade where
CellpyCellorchestratescellpy-core, supports merged multi-test campaigns viatest_id+TestMetaCollection, simplifies the public API, and enforces parity through tests — not vigilance.Gate (Phase 0 — must complete before v2 feature work)
cellpycore==0.1.5)cellpycore.unitscellpy-core#334 as superseded by Prepare cellpy to consume cellpy-core (isolate the Data object via a core seam) #377Epic phases (child issues to be carved out)
TestMetaCollection, per-testcycle_mode, v1 compatCellpyCell, public API cleanup, native schema opt-inProposed child issues (not yet filed)
v2-gate-parity-and-legacy-cleanupv2-testmeta-on-datav2-composite-keys-mergev2-loader-harmonized-rawv2-slim-cellpycell-apiv2-file-format-and-persistencev2-native-schema-opt-inPrerequisites already done (integration roadmap)
OldCellpyCellCorecellpycore==0.1.5)assert_value_parity)cellpycore>=0.1.2on PyPI; editable path for local devtest_idin schemas (Update coverage to 4.4 #41), polars engine (Tutorial #13)Parallel hardening (cellpy-core)
CellMetaAPIcycle_modedefault polaritySuccess criteria (v2.0 release)
See the epic doc checklist. Key points: no dual compute engine, merged campaigns work with composite
(test_id, cycle_num, step_num, …)keys, v1 files load withtest_id=0, exactcellpycore==pin at release.Non-goals