cellpy 2.1.3.post3__tar.gz → 2.1.4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- cellpy-2.1.4/.issueflows/03-solved-issues/cycle_status_2026-09-05.md +27 -0
- cellpy-2.1.4/.issueflows/03-solved-issues/cycle_status_2026-09-07.md +22 -0
- cellpy-2.1.4/.issueflows/03-solved-issues/cycle_status_2026-09-08.md +28 -0
- cellpy-2.1.4/.issueflows/03-solved-issues/issue1000_original.md +9 -0
- cellpy-2.1.4/.issueflows/03-solved-issues/issue1000_plan.md +38 -0
- cellpy-2.1.4/.issueflows/03-solved-issues/issue1000_status.md +13 -0
- cellpy-2.1.4/.issueflows/03-solved-issues/issue937_original.md +61 -0
- cellpy-2.1.4/.issueflows/03-solved-issues/issue937_plan.md +44 -0
- cellpy-2.1.4/.issueflows/03-solved-issues/issue937_status.md +16 -0
- cellpy-2.1.4/.issueflows/03-solved-issues/issue938_original.md +73 -0
- cellpy-2.1.4/.issueflows/03-solved-issues/issue938_plan.md +117 -0
- cellpy-2.1.4/.issueflows/03-solved-issues/issue938_status.md +17 -0
- cellpy-2.1.4/.issueflows/03-solved-issues/issue948_original.md +41 -0
- cellpy-2.1.4/.issueflows/03-solved-issues/issue948_plan.md +80 -0
- cellpy-2.1.4/.issueflows/03-solved-issues/issue948_status.md +15 -0
- cellpy-2.1.4/.issueflows/03-solved-issues/issue949_original.md +9 -0
- cellpy-2.1.4/.issueflows/03-solved-issues/issue949_plan.md +126 -0
- cellpy-2.1.4/.issueflows/03-solved-issues/issue949_status.md +18 -0
- cellpy-2.1.4/.issueflows/03-solved-issues/issue960_original.md +7 -0
- cellpy-2.1.4/.issueflows/03-solved-issues/issue960_plan.md +42 -0
- cellpy-2.1.4/.issueflows/03-solved-issues/issue960_status.md +14 -0
- cellpy-2.1.4/.issueflows/03-solved-issues/issue982_original.md +7 -0
- cellpy-2.1.4/.issueflows/03-solved-issues/issue982_plan.md +39 -0
- cellpy-2.1.4/.issueflows/03-solved-issues/issue982_status.md +13 -0
- cellpy-2.1.4/.issueflows/03-solved-issues/issue983_original.md +23 -0
- cellpy-2.1.4/.issueflows/03-solved-issues/issue983_plan.md +76 -0
- cellpy-2.1.4/.issueflows/03-solved-issues/issue983_status.md +19 -0
- cellpy-2.1.4/.issueflows/03-solved-issues/issue989_original.md +15 -0
- cellpy-2.1.4/.issueflows/03-solved-issues/issue989_status.md +16 -0
- cellpy-2.1.4/.issueflows/03-solved-issues/issue990_original.md +50 -0
- cellpy-2.1.4/.issueflows/03-solved-issues/issue990_plan.md +37 -0
- cellpy-2.1.4/.issueflows/03-solved-issues/issue990_status.md +19 -0
- cellpy-2.1.4/.issueflows/03-solved-issues/issue991_original.md +40 -0
- cellpy-2.1.4/.issueflows/03-solved-issues/issue991_plan.md +36 -0
- cellpy-2.1.4/.issueflows/03-solved-issues/issue991_status.md +19 -0
- cellpy-2.1.4/.issueflows/03-solved-issues/issue993_original.md +59 -0
- cellpy-2.1.4/.issueflows/03-solved-issues/issue993_plan.md +40 -0
- cellpy-2.1.4/.issueflows/03-solved-issues/issue993_status.md +23 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/04-designs-and-guides/harmonized-raw-default.md +21 -0
- cellpy-2.1.4/.issueflows/04-designs-and-guides/instrument-availability.md +29 -0
- cellpy-2.1.4/.issueflows/04-designs-and-guides/optional-plotting-notebook.md +25 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/04-designs-and-guides/plotting-batch-summary.md +6 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/04-designs-and-guides/plotting-collected.md +7 -2
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/04-designs-and-guides/test-registry.md +40 -1
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/AGENTS.md +14 -4
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/HISTORY.md +54 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/PKG-INFO +9 -4
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/batch/_dbengine.py +30 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/batch/journal.py +35 -3
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/cli_api.py +63 -64
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/collect/collection.py +3 -1
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/collect/collector.py +3 -1
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/exceptions.py +3 -2
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/plotting/backends/__init__.py +3 -1
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/plotting/backends/mpl.py +25 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/plotting/batch_summary.py +81 -20
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/plotting/collected.py +4 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/plotting/figures.py +10 -1
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/plotting/labels.py +43 -15
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/plotting/registry.py +1 -1
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/capacity_curves.py +7 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/cellreader.py +26 -23
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/data_structures.py +78 -36
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/instruments/arbin_res.py +38 -4
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/instruments/harmonize.py +23 -7
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/utils/ocv_rlx.py +15 -2
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/utils/plotutils.py +4 -1
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/pyproject.toml +5 -4
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/uv.lock +25 -13
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.aliases +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.cursor/commands/build.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.cursor/commands/create-original-issue-file.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.cursor/rules/cellpy-core-migration.mdc +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.cursor/rules/cellpy-workspace.mdc +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.cursor/rules/graphify.mdc +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.cursor/rules/issueflow-rules.mdc +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.cursor/rules/kiss.mdc +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.cursor/rules/this-project.mdc +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.cursor/skills/caveman/SKILL.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.cursor/skills/gh-ci/SKILL.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.cursor/skills/grill-me/SKILL.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.cursor/skills/iflow/SKILL.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.cursor/skills/iflow-archive/SKILL.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.cursor/skills/iflow-auto/SKILL.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.cursor/skills/iflow-build/SKILL.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.cursor/skills/iflow-cleanup/SKILL.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.cursor/skills/iflow-close/SKILL.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.cursor/skills/iflow-comments/SKILL.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.cursor/skills/iflow-cycle/SKILL.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.cursor/skills/iflow-doctor/SKILL.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.cursor/skills/iflow-epic/SKILL.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.cursor/skills/iflow-fix/SKILL.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.cursor/skills/iflow-graphify/SKILL.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.cursor/skills/iflow-history-update/SKILL.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.cursor/skills/iflow-init/SKILL.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.cursor/skills/iflow-issue/SKILL.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.cursor/skills/iflow-pause/SKILL.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.cursor/skills/iflow-pick/SKILL.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.cursor/skills/iflow-plan/SKILL.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.cursor/skills/iflow-review/SKILL.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.cursor/skills/iflow-status/SKILL.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.cursor/skills/iflow-version-bump/SKILL.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.cursor/skills/iflow-yolo/SKILL.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.cursor/skills/issueflow-build/SKILL.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.dockerignore +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.editorconfig +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.env_example +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.gitattributes +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.gitignore +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/00-tools/.gitkeep +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/00-tools/README.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/00-tools/migrate_prms_calls.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/00-tools/scan_hardcoded_headers.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/00-tools/scan_member_usage.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/01-current-issues/.gitkeep +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/02-partly-solved-issues/.gitkeep +0 -0
- {cellpy-2.1.3.post3/.issueflows/01-current-issues → cellpy-2.1.4/.issueflows/02-partly-solved-issues}/issue985_original.md +0 -0
- {cellpy-2.1.3.post3/.issueflows/01-current-issues → cellpy-2.1.4/.issueflows/02-partly-solved-issues}/issue985_status.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/.gitkeep +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/2026-07-09_archived_issues.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/2026-07-31_archived_issues.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/cycle_status.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/cycle_status_2026-07-31.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/cycle_status_2026-08-08.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/cycle_status_2026-08-09.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/cycle_status_2026-08-25.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue459_original.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue786_original.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue786_plan.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue786_status.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue799_original.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue799_plan.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue799_status.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue800_original.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue800_plan.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue800_status.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue801_original.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue801_plan.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue801_status.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue802_original.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue802_plan.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue802_status.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue804_original.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue804_plan.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue804_status.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue809_original.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue809_plan.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue809_status.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue816_original.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue816_plan.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue816_status.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue817_original.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue817_plan.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue817_status.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue818_original.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue818_plan.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue818_status.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue819_original.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue819_plan.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue819_status.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue820_original.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue820_plan.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue820_status.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue821_original.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue821_plan.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue821_status.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue822_original.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue822_plan.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue822_status.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue825_original.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue825_plan.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue825_status.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue837_original.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue837_plan.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue837_status.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue839_original.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue839_plan.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue839_status.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue845_original.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue845_plan.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue845_status.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue846_original.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue846_plan.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue846_status.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue849_original.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue849_plan.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue849_status.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue850_original.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue850_plan.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue850_status.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue851_original.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue851_plan.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue851_status.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue853_original.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue853_plan.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue853_status.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue855_original.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue855_plan.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue855_status.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue862_original.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue862_plan.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue862_status.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue863_original.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue863_plan.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue863_status.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue866_original.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue866_status.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue867_original.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue867_plan.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue867_status.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue868_original.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue868_plan.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue868_status.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue869_original.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue869_plan.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue869_status.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue874_original.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue874_plan.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue874_status.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue875_original.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue875_plan.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue875_status.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue876_original.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue876_plan.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue876_status.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue878_original.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue878_plan.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue878_status.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue885_original.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue885_status.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue891_original.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue891_plan.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue891_status.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue892_original.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue892_status.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue912_original.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue912_plan.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue912_status.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue916_original.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue916_status.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue939_original.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue939_plan.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue939_status.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue940_original.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue940_plan.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue940_status.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue947_original.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue947_plan.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue947_status.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue950_original.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue950_plan.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue950_status.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue952_original.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue952_plan.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue952_status.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue961_original.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue961_plan.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue961_status.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue962_original.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue962_plan.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue962_status.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue963_original.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue963_plan.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue963_status.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue967_original.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue967_plan.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue967_status.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue971_original.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue971_plan.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue971_status.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/04-designs-and-guides/.gitkeep +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/04-designs-and-guides/atomic-file-writes.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/04-designs-and-guides/batch-load-orchestrator.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/04-designs-and-guides/bdf-export.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/04-designs-and-guides/build-and-versioning.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/04-designs-and-guides/cellpy-v2-architecture.excalidraw +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/04-designs-and-guides/cellpy-v2-branching.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/04-designs-and-guides/cellpy-v2-epic.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/04-designs-and-guides/cellpy-workspace-repos.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/04-designs-and-guides/cellpycell-di-restructuring.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/04-designs-and-guides/ci-tiers.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/04-designs-and-guides/cli-api-echo-binder.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/04-designs-and-guides/cli-light-startup.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/04-designs-and-guides/docs-on-master.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/04-designs-and-guides/essential-tests.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/04-designs-and-guides/filters-and-plot-filtering.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/04-designs-and-guides/marimo-docs.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/04-designs-and-guides/otherpath-upath.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/04-designs-and-guides/plotting-backends.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/04-designs-and-guides/plotting-cycle-legend.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/04-designs-and-guides/plotting-prepare.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/04-designs-and-guides/plotting-registry.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/04-designs-and-guides/release-procedure.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/04-designs-and-guides/testing-and-coverage.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/04-designs-and-guides/this-project.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/04-designs-and-guides/v2-cellpycore-pin-gate.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/05-epics/.gitkeep +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/05-epics/epic567_plan.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/05-epics/epic896_plan.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/config.toml +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/.readthedocs.yaml +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/AUTHORS.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/CODE_OF_CONDUCT.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/CONTRIBUTING.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/DEPRECATIONS.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/LICENSE.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/README.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/_old_docs/_developers_guide/dev_cellpy_data_structure.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/_old_docs/_developers_guide/dev_cellpy_folder_structure.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/_old_docs/_developers_guide/dev_cellpy_packaging_pypi.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/_old_docs/_developers_guide/dev_cellpy_setup.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/_old_docs/_developers_guide/dev_conda_package.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/_old_docs/_developers_guide/dev_docs.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/_old_docs/_developers_guide/dev_loaders_and_instruments.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/_old_docs/_developers_guide/dev_various.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/_old_docs/_developers_guide/index.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/_old_docs/_examples_and_tutorials/basic_interactions/01_getting_started_tutorial.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/_old_docs/_examples_and_tutorials/basic_interactions/02_read_cell_data.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/_old_docs/_examples_and_tutorials/basic_interactions/03_more_about_get.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/_old_docs/_examples_and_tutorials/basic_interactions/04_other_interactions.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/_old_docs/_examples_and_tutorials/basic_interactions/05_configuring.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/_old_docs/_examples_and_tutorials/basic_interactions/06_pandas.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/_old_docs/_examples_and_tutorials/basic_interactions/07_data_mining.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/_old_docs/_examples_and_tutorials/basic_interactions/08_the_cellpy_cmd.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/_old_docs/_examples_and_tutorials/basics.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/_old_docs/_examples_and_tutorials/examples.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/_old_docs/_examples_and_tutorials/index.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/_old_docs/_examples_and_tutorials/loaders/01_arbin.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/_old_docs/_examples_and_tutorials/loaders/02_maccor.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/_old_docs/_examples_and_tutorials/loaders/03_PEC.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/_old_docs/_examples_and_tutorials/loaders/04_Neware.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/_old_docs/_examples_and_tutorials/loaders/05_biologics.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/_old_docs/_examples_and_tutorials/loaders/06_custom.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/_old_docs/_examples_and_tutorials/loaders.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/_old_docs/_examples_and_tutorials/notebooks/images/templates_jupyterlab_001.png +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/_old_docs/_examples_and_tutorials/notebooks/images/templates_jupyterlab_002.png +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/_old_docs/_examples_and_tutorials/notebooks/tutorial_get_cap.ipynb +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/_old_docs/_examples_and_tutorials/notebooks/tutorial_simple_plot.ipynb +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/_old_docs/_examples_and_tutorials/notebooks/tutorial_templates.ipynb +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/_old_docs/_examples_and_tutorials/notebooks/tutorial_xxx-checkpoint.ipynb +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/_old_docs/_examples_and_tutorials/notebooks.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/_old_docs/_examples_and_tutorials/tips_and_tricks.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/_old_docs/_examples_and_tutorials/utils/batch.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/_old_docs/_examples_and_tutorials/utils/collectors.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/_old_docs/_examples_and_tutorials/utils/custom_file_loaders.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/_old_docs/_examples_and_tutorials/utils/easyplot.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/_old_docs/_examples_and_tutorials/utils/figures/tutorials_utils_plotting_fig1.png +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/_old_docs/_examples_and_tutorials/utils/figures/tutorials_utils_plotting_fig2.png +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/_old_docs/_examples_and_tutorials/utils/ica.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/_old_docs/_examples_and_tutorials/utils/plotting.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/_old_docs/_examples_and_tutorials/utils/templates.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/_old_docs/_examples_and_tutorials/utils/tut_ocv_rlx.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/_old_docs/_examples_and_tutorials/utils.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/_old_docs/_main_description/formats.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/_old_docs/_main_description/index.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/_old_docs/_main_description/installation.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/_old_docs/_main_description/usage.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/_old_docs/index.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/benchmarks/README.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/benchmarks/__init__.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/benchmarks/baselines/v1x_ubuntu_py313.json +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/benchmarks/check_baseline.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/benchmarks/conftest.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/benchmarks/paths.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/benchmarks/test_performance.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/__init__.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/_deprecation.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/_version.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/batch/__init__.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/batch/aggregate.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/batch/db.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/batch/facade.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/batch/layout.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/batch/outputs.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/batch/policy.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/batch/progress.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/batch/qc.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/batch/result.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/batch/runner.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/batch/store.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/cli.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/cli_ui.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/collect/__init__.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/collect/_summary_ops.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/collect/cells.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/collect/curves.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/collect/dva.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/collect/ica.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/collect/options.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/collect/summary.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/config/__init__.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/config/credentials.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/config/legacy.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/config/loader.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/config/migrate.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/config/models.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/config/reference.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/config/session.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/config/sources.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/config/types.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/exporters/__init__.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/exporters/bdf.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/exporters/tabular.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/filters/__init__.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/filters/cycles.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/filters/summary.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/ica.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/internals/__init__.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/internals/connections.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/internals/otherpath.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/internals/progress.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/libs/__init__.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/libs/apipkg/__init__.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/libs/apipkg/_alias_module.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/libs/apipkg/_importing.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/libs/apipkg/_module.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/libs/apipkg/_syncronized.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/libs/apipkg/_version.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/libs/apipkg/py.typed +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/libs/local_fastnda/LICENSE +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/libs/local_fastnda/__init__.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/libs/local_fastnda/btsda.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/libs/local_fastnda/cli.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/libs/local_fastnda/dicts.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/libs/local_fastnda/formats.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/libs/local_fastnda/main.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/libs/local_fastnda/nda.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/libs/local_fastnda/ndax.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/libs/local_fastnda/utils.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/libs/local_fastnda/version.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/log.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/logging.json +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/parameters/.cellpy_prms_default.conf +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/parameters/__init__.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/parameters/cell_schema.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/parameters/internal_settings.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/parameters/legacy/__init__.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/parameters/legacy/update_headers.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/parameters/prmreader.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/parameters/prms.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/plotting/__init__.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/plotting/backends/base.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/plotting/backends/plotly.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/plotting/context.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/plotting/cycle_legend.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/plotting/headers.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/plotting/prepare/__init__.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/plotting/prepare/curves.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/plotting/prepare/ica.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/plotting/prepare/raw.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/plotting/prepare/steps.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/plotting/prepare/summary.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/plotting/spec.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/plotting/theme.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/__init__.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/cellpy_file/__init__.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/cellpy_file/atomic.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/cellpy_file/dtype.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/cellpy_file/fids.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/cellpy_file/format.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/cellpy_file/keys.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/cellpy_file/legacy_read.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/cellpy_file/meta.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/cellpy_file/meta_archive.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/cellpy_file/read.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/cellpy_file/selectors.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/cellpy_file/translate.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/cellpy_file/v9.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/cellpy_file/write.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/dbreader.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/do.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/filefinder.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/instruments/SQL Table IDs.txt +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/instruments/__init__.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/instruments/_aux_map.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/instruments/arbin_sql.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/instruments/arbin_sql_7.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/instruments/arbin_sql_config.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/instruments/arbin_sql_csv.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/instruments/arbin_sql_h5.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/instruments/arbin_sql_xlsx.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/instruments/base.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/instruments/batmo_bdf.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/instruments/biologics_mpr.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/instruments/config_declarations.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/instruments/configurations/__init__.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/instruments/configurations/batmo_bdf_bdf.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/instruments/configurations/maccor_txt_one.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/instruments/configurations/maccor_txt_three.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/instruments/configurations/maccor_txt_two.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/instruments/configurations/maccor_txt_zero.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/instruments/configurations/neware_txt_one.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/instruments/configurations/neware_txt_two.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/instruments/configurations/neware_txt_zero.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/instruments/contract.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/instruments/custom.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/instruments/declarations.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/instruments/ext_nda_reader.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/instruments/hooks.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/instruments/loader_specific_modules/__init__.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/instruments/loader_specific_modules/biologic_file_format.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/instruments/local_instrument.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/instruments/maccor_txt.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/instruments/maccor_txt_native.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/instruments/neware_nda.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/instruments/neware_txt.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/instruments/neware_xlsx.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/instruments/pec_csv.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/instruments/processors/__init__.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/instruments/processors/post_processors.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/instruments/processors/pre_processors.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/instruments/registry.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/instruments/testing.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/journal_layer.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/json_dbreader.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/merger.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/meta_resolver.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/native_core.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/provenance.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/slicing.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/sql_dbreader.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/test_meta.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/units.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/utils/__init__.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/utils/batch.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/utils/collectors.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/utils/diagnostics.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/utils/example_data.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/utils/helpers.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/utils/ica.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/utils/live.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/utils/processor.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/utils/template_registry.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/dev/backfill_notebook_plotly_pngs.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/dev/conda-recipes/README.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/dev/conda-recipes/cellpy/meta.yaml +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/dev/conda-recipes/cellpycore/meta.yaml +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/dev/make_bad_fixtures.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/dev/plot_preview_common.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/dev/preview_curve_plots.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/dev/preview_ica_plots.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/dev/preview_plots.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/dev/preview_summary_plots.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/dev/regenerate_goldens.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/dev/render_example_notebooks.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/dev/snapshot_cli_surface.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/dev/snapshot_figure_specs.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/dev/speed-test-01/.gitignore +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/dev/speed-test-01/NOTES.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/dev/speed-test-01/README.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/dev/speed-test-01/_common.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/dev/speed-test-01/summarize_importtime.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/dev/speed-test-01/time_arbin_h5.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/dev/speed-test-01/time_cellpy_io.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/dev/speed-test-01/time_executors.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/dev/speed-test-01/time_filefinder.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/dev/speed-test-01/time_imports.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/dev/speed-test-01/time_one_cell.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/dev/speed-test-01/time_otherpath.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/docker/Dockerfile.build-test +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/docker/sftp-test/README.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/docker/sftp-test/compose.yml +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/docker/sftp-test/data/hello.txt +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/docker/sftp-test/data/nested/sample.txt +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/environment.yml +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/environment_dev.yml +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/github_actions_environment.yml +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/noxfile.py +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/paper/.github/workflows/draft-pdf.yml +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/paper/.gitignore +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/paper/Figures/Cellpy-Utils.jpg +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/paper/Figures/CellpyCell.jpg +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/paper/Figures/CellpyData.jpg +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/paper/paper.bib +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/paper/paper.md +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/scripts/build_test.sh +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/scripts/dev_sync.sh +0 -0
- {cellpy-2.1.3.post3 → cellpy-2.1.4}/zensical.toml +0 -0
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# Cycle status
|
|
2
|
+
|
|
3
|
+
- Queue spec: `yolo` (resolved `label:yolo`)
|
|
4
|
+
- Repo: `jepegit/cellpy` (`C:\scripting\cellpy-workspace\cellpy`), default branch `master`
|
|
5
|
+
- Failure policy: `onfail:stop`
|
|
6
|
+
- Started: 2026-09-05T19:25:00+02:00
|
|
7
|
+
- Finished: 2026-09-05T22:20:00+02:00
|
|
8
|
+
- Confirmed: yes (single consolidated confirm, 3 issues)
|
|
9
|
+
|
|
10
|
+
- [x] Done
|
|
11
|
+
|
|
12
|
+
## Queue (ordered)
|
|
13
|
+
|
|
14
|
+
- [x] #990 — cellpy new: honour no_input when the project directory does not exist — merged https://github.com/jepegit/cellpy/pull/994
|
|
15
|
+
- [x] #991 — Add cli_api.list_templates() returning the batch templates as data — merged https://github.com/jepegit/cellpy/pull/995
|
|
16
|
+
- [x] #993 — Docstring cross-references lost their module paths in #968 — merged https://github.com/jepegit/cellpy/pull/996
|
|
17
|
+
|
|
18
|
+
Blocked: none. Skipped (closed): none. No stop condition tripped.
|
|
19
|
+
|
|
20
|
+
## Notes
|
|
21
|
+
|
|
22
|
+
- Leftover `issue985_*` group (`- [ ] Done`) was swept from `01-current-issues/`
|
|
23
|
+
to `02-partly-solved-issues/` by the first `/iflow-init`.
|
|
24
|
+
- Every PR needed one `gh pr checks --watch` pass before `gh pr merge --squash`
|
|
25
|
+
succeeded (base branch policy requires the `essential` + `full` checks).
|
|
26
|
+
- Local branches `990-no-input-project-dir`, `991-list-templates-data`,
|
|
27
|
+
`993-dotted-docstring-refs` are left for `/iflow-cleanup`.
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# Cycle status
|
|
2
|
+
|
|
3
|
+
- queue: yolo
|
|
4
|
+
- resolved: label:yolo
|
|
5
|
+
- repo: jepegit/cellpy
|
|
6
|
+
- onfail: stop
|
|
7
|
+
- started: 2026-09-07T19:33:00Z
|
|
8
|
+
- stopped: 2026-09-07T20:10:00Z
|
|
9
|
+
|
|
10
|
+
## Queue
|
|
11
|
+
|
|
12
|
+
- [x] #937 — Notebook tooling (ipykernel, matplotlib) is a hard runtime dependency — ~90 MB in a headless server image — merged https://github.com/jepegit/cellpy/pull/1002
|
|
13
|
+
- [~] #938 — Missing external tools fail silently: mdb-export raises bare FileNotFoundError, pyodbc ImportError hides two loaders — failed: not yolo-small (three independent deliverables; see 02-partly-solved-issues)
|
|
14
|
+
- [ ] #960 — Possible bugs in cellpy setup and configuration — not reached
|
|
15
|
+
- [ ] #982 — Default group name from cellpy_db — not reached
|
|
16
|
+
- [ ] #1000 — prepare for changes in batch journal json file — not reached
|
|
17
|
+
|
|
18
|
+
## Stop reason
|
|
19
|
+
|
|
20
|
+
Yolo scope check on #938 aborted: issue body is two features (mdb-export typed error + `list_instruments` availability API) plus an owner comment adding a third (`examplesdir` default). Cycle `onfail:stop`. Branch `938-missing-external-tools` holds the capture.
|
|
21
|
+
|
|
22
|
+
- [x] Done
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Cycle status
|
|
2
|
+
|
|
3
|
+
- queue: yolo (resolved `label:yolo`)
|
|
4
|
+
- repo: jepegit/cellpy
|
|
5
|
+
- onfail: stop
|
|
6
|
+
- started: 2026-09-08T06:58:00+02:00
|
|
7
|
+
- stopped: 2026-09-08T08:45:00+02:00
|
|
8
|
+
|
|
9
|
+
## Queue
|
|
10
|
+
|
|
11
|
+
- [x] #960 — Possible bugs in cellpy setup and configuration — merged https://github.com/jepegit/cellpy/pull/1004
|
|
12
|
+
- [x] #982 — Default group name from cellpy_db — merged https://github.com/jepegit/cellpy/pull/1005
|
|
13
|
+
- [x] #1000 — prepare for changes in batch journal json file — merged https://github.com/jepegit/cellpy/pull/1006
|
|
14
|
+
|
|
15
|
+
blocked: none
|
|
16
|
+
skipped: none
|
|
17
|
+
|
|
18
|
+
## Result
|
|
19
|
+
|
|
20
|
+
All three queued issues went through the full yolo chain and merged. Cycle never halted.
|
|
21
|
+
|
|
22
|
+
- #960 → https://github.com/jepegit/cellpy/pull/1004
|
|
23
|
+
- #982 → https://github.com/jepegit/cellpy/pull/1005
|
|
24
|
+
- #1000 → https://github.com/jepegit/cellpy/pull/1006
|
|
25
|
+
|
|
26
|
+
Local close of #1000 hit dirty `AGENTS.md` (unrelated indent). Discarded, then `git switch master` + `git pull --ff-only` landed squash `3d199790`.
|
|
27
|
+
|
|
28
|
+
- [x] Done
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# Issue #1000: prepare for changes in batch journal json file
|
|
2
|
+
|
|
3
|
+
Source: https://github.com/jepegit/cellpy/issues/1000
|
|
4
|
+
|
|
5
|
+
## Original issue text
|
|
6
|
+
|
|
7
|
+
We do not have any version label for the batch journal file. We should add it. Let us say that if the file misses the version label, it is version 1 (i.e. 1). It can also have the version label with 1 (and new files should be saved with the version number. Then when we decide to change the format, we can bump the version number.
|
|
8
|
+
|
|
9
|
+
Obviously, we also need to implement reading and saving the version number and prepare for possible version bumps.
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# Issue #1000 — plan: journal JSON version field
|
|
2
|
+
|
|
3
|
+
## Goal
|
|
4
|
+
|
|
5
|
+
Batch journal JSON files carry a format `version`. Missing → 1. New writes
|
|
6
|
+
use `JOURNAL_FORMAT_VERSION` (currently 1). Reads store it and warn when the
|
|
7
|
+
file is newer than this cellpy.
|
|
8
|
+
|
|
9
|
+
## Constraints
|
|
10
|
+
|
|
11
|
+
- Existing journals without `version` keep loading.
|
|
12
|
+
- Do not implement a v2 schema in this issue — only the hook.
|
|
13
|
+
|
|
14
|
+
### Prior art
|
|
15
|
+
|
|
16
|
+
- `JOURNAL_FORMAT_VERSION = 1` already in `cellpy/batch/journal.py` but unused.
|
|
17
|
+
- `read_journal` / `write_journal` — top-level `info_df` / `metadata` / `session`.
|
|
18
|
+
|
|
19
|
+
## Approach
|
|
20
|
+
|
|
21
|
+
1. Top-level JSON key `"version"` (integer).
|
|
22
|
+
2. `Journal.version` defaults to 1; `read_journal` fills it (`raw.get("version", 1)`).
|
|
23
|
+
3. `write_journal` always writes `JOURNAL_FORMAT_VERSION`.
|
|
24
|
+
4. If file version > `JOURNAL_FORMAT_VERSION`, `UserWarning` and still load.
|
|
25
|
+
|
|
26
|
+
## Files to touch
|
|
27
|
+
|
|
28
|
+
- `cellpy/batch/journal.py`
|
|
29
|
+
- `tests/test_batch_v3.py`
|
|
30
|
+
- `HISTORY.md` (close)
|
|
31
|
+
|
|
32
|
+
## Test strategy
|
|
33
|
+
|
|
34
|
+
`uv run pytest tests/test_batch_v3.py` plus `uv run pytest -m essential`.
|
|
35
|
+
|
|
36
|
+
## Open questions
|
|
37
|
+
|
|
38
|
+
None.
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# Issue #937: Notebook tooling (ipykernel, matplotlib) is a hard runtime dependency — ~90 MB in a headless server image
|
|
2
|
+
|
|
3
|
+
Source: https://github.com/jepegit/cellpy/issues/937
|
|
4
|
+
|
|
5
|
+
## Original issue text
|
|
6
|
+
|
|
7
|
+
Found while building a container image for a cellpy-based web app
|
|
8
|
+
([cellpy-simple-gui#121](https://github.com/cellpy/cellpy-simple-gui/issues/121)).
|
|
9
|
+
Not a bug — a packaging pain-point for anyone deploying cellpy headless.
|
|
10
|
+
|
|
11
|
+
## What we measured
|
|
12
|
+
|
|
13
|
+
The app plots with plotly, runs FastAPI, and never opens a notebook. Yet the
|
|
14
|
+
image carries an interactive-notebook stack, traced with `importlib.metadata`
|
|
15
|
+
rather than guessed:
|
|
16
|
+
|
|
17
|
+
```
|
|
18
|
+
debugpy <- ipykernel
|
|
19
|
+
ipykernel <- cellpy
|
|
20
|
+
ipython <- ipykernel
|
|
21
|
+
jedi <- ipython
|
|
22
|
+
matplotlib <- cellpy
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
Sizes in the built image (`python:3.13-slim-bookworm`, 128 packages, 1.18 GB venv):
|
|
26
|
+
|
|
27
|
+
| package | MB |
|
|
28
|
+
|---|---|
|
|
29
|
+
| `matplotlib` | 35 |
|
|
30
|
+
| `jedi` | 34 |
|
|
31
|
+
| `debugpy` | 22 |
|
|
32
|
+
|
|
33
|
+
~90 MB, plus `ipython`, `ipykernel`, `pyzmq`, `tornado`, `fontTools` (27 MB) and
|
|
34
|
+
friends behind them. None of it is reachable from the code paths a headless
|
|
35
|
+
server actually uses.
|
|
36
|
+
|
|
37
|
+
## Why it matters beyond size
|
|
38
|
+
|
|
39
|
+
- **Container images and frozen apps.** The same weight lands in a PyInstaller
|
|
40
|
+
bundle, where it is also ~4000 extra files to scan on first run.
|
|
41
|
+
- **Attack surface.** `debugpy` in a server image is not something a deployer
|
|
42
|
+
would choose.
|
|
43
|
+
- **Cold start.** Not import-time cost (these are lazy), but real disk and pull time.
|
|
44
|
+
|
|
45
|
+
## Suggestion
|
|
46
|
+
|
|
47
|
+
Move the interactive pieces to extras and import them where they are used:
|
|
48
|
+
|
|
49
|
+
```toml
|
|
50
|
+
[project.optional-dependencies]
|
|
51
|
+
notebook = ["ipykernel", "ipython"]
|
|
52
|
+
plotting-mpl = ["matplotlib"]
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
`cellpy[notebook]` would keep the current experience for notebook users — who
|
|
56
|
+
are surely the majority — while letting an app or a container install the
|
|
57
|
+
analysis core alone. If some module imports `matplotlib` at module scope, a
|
|
58
|
+
local import inside the plotting function would be enough to make the extra
|
|
59
|
+
genuinely optional.
|
|
60
|
+
|
|
61
|
+
Happy to test a branch against our container build and report the delta.
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# Issue #937 plan
|
|
2
|
+
|
|
3
|
+
## Goal
|
|
4
|
+
|
|
5
|
+
Drop `ipykernel` and `matplotlib` from the required pip install so a headless
|
|
6
|
+
app image does not pay ~90 MB for notebook/debug tooling it never uses.
|
|
7
|
+
|
|
8
|
+
## Constraints
|
|
9
|
+
|
|
10
|
+
- Do not change conda env files (conda-forge still ships the full stack).
|
|
11
|
+
- `uv sync` (dev group) must still install matplotlib so tests/CI keep working.
|
|
12
|
+
- Typed `OptionalDependencyError` naming the extra, same pattern as `legacy-files`.
|
|
13
|
+
- ### Prior art
|
|
14
|
+
- `require_hdf5_support` in `cellpy/readers/cellpy_file/format.py` + `OptionalDependencyError`
|
|
15
|
+
- `test_dependency_budget.py` manifest pins for extras moved out of required
|
|
16
|
+
- `cellpy.plotting.collected` already `try/except ImportError` around matplotlib
|
|
17
|
+
- `ipykernel` is never imported by library code; only listed in `[project.dependencies]`
|
|
18
|
+
|
|
19
|
+
## Approach
|
|
20
|
+
|
|
21
|
+
1. Remove `matplotlib` and `ipykernel` from `[project.dependencies]`.
|
|
22
|
+
2. Add extras `notebook = ["ipykernel", "ipython"]` and `plotting-mpl = ["matplotlib"]`.
|
|
23
|
+
3. Add both packages to the `all` extra; add `matplotlib` to the `dev` group (`ipykernel` is already there).
|
|
24
|
+
4. Add `require_matplotlib(context)` next to the matplotlib backend; call it from `get_backend("matplotlib")`.
|
|
25
|
+
5. Guard the four remaining module-scope matplotlib imports (`figures.py`, `batch_summary.py`, `plotutils.py`, `ocv_rlx.py`) with `try/except ImportError`.
|
|
26
|
+
6. Extend the dependency-budget tests; do not rewrite conda manifests.
|
|
27
|
+
|
|
28
|
+
## Files to touch
|
|
29
|
+
|
|
30
|
+
- `pyproject.toml` / `uv.lock` — extras + lock
|
|
31
|
+
- `cellpy/plotting/backends/mpl.py` — `require_matplotlib`
|
|
32
|
+
- `cellpy/plotting/backends/__init__.py` — call it from `get_backend`
|
|
33
|
+
- `cellpy/plotting/figures.py`, `cellpy/plotting/batch_summary.py`, `cellpy/utils/plotutils.py`, `cellpy/utils/ocv_rlx.py` — optional import
|
|
34
|
+
- `tests/test_dependency_budget.py` — pin the new extras
|
|
35
|
+
- `docs/getting_started/agents.md` — one install note
|
|
36
|
+
- `.issueflows/04-designs-and-guides/optional-plotting-notebook.md` — short decision
|
|
37
|
+
|
|
38
|
+
## Test strategy
|
|
39
|
+
|
|
40
|
+
`uv run pytest -m essential` plus the new dependency-budget tests. Full suite stays on CI.
|
|
41
|
+
|
|
42
|
+
## Open questions
|
|
43
|
+
|
|
44
|
+
None — extras names match the issue (`notebook`, `plotting-mpl`).
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Issue #937 status
|
|
2
|
+
|
|
3
|
+
- [x] Done
|
|
4
|
+
|
|
5
|
+
## What's done
|
|
6
|
+
|
|
7
|
+
- Removed `matplotlib` and `ipykernel` from `[project.dependencies]`.
|
|
8
|
+
- Added extras `plotting-mpl` and `notebook`; both included in `all`.
|
|
9
|
+
- `matplotlib` stays in the `dev` group so `uv sync` / CI keep Agg tests.
|
|
10
|
+
- `require_matplotlib` raises `OptionalDependencyError` naming `cellpy[plotting-mpl]`.
|
|
11
|
+
- Guarded the four remaining module-scope matplotlib imports.
|
|
12
|
+
- Dependency-budget tests + docs (`agents.md`, installation extras table).
|
|
13
|
+
|
|
14
|
+
## Remaining work
|
|
15
|
+
|
|
16
|
+
- None.
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# Issue #938: Missing external tools fail silently: mdb-export raises bare FileNotFoundError, pyodbc ImportError hides two loaders
|
|
2
|
+
|
|
3
|
+
Source: https://github.com/jepegit/cellpy/issues/938
|
|
4
|
+
|
|
5
|
+
## Original issue text
|
|
6
|
+
|
|
7
|
+
Two related findings from deploying cellpy in a Linux container
|
|
8
|
+
([cellpy-simple-gui#121](https://github.com/cellpy/cellpy-simple-gui/issues/121)).
|
|
9
|
+
Both are cases where a missing *system* dependency produces a failure that is
|
|
10
|
+
easy to mistake for success.
|
|
11
|
+
|
|
12
|
+
## 1. `mdb-export` missing → bare `FileNotFoundError`
|
|
13
|
+
|
|
14
|
+
On posix, `arbin_res` reads `.res` by shelling out to `mdb-export` (mdbtools).
|
|
15
|
+
When it is not installed:
|
|
16
|
+
|
|
17
|
+
```
|
|
18
|
+
[Errno 2] No such file or directory: 'mdb-export'
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
An app catching that has to know that "mdb-export" means "install mdbtools", and
|
|
22
|
+
a user reading it in a toast has no chance. It cost us a genuinely misleading
|
|
23
|
+
green tick: our smoke test asserted the import job completed, the job *did*
|
|
24
|
+
complete, and zero cells were imported.
|
|
25
|
+
|
|
26
|
+
**Suggestion:** raise something named and actionable when the tool is absent,
|
|
27
|
+
e.g.
|
|
28
|
+
|
|
29
|
+
```
|
|
30
|
+
CellpyDependencyError:
|
|
31
|
+
Reading Arbin .res on Linux/macOS needs mdbtools (provides `mdb-export`).
|
|
32
|
+
Debian/Ubuntu: apt install mdbtools
|
|
33
|
+
macOS: brew install mdbtools
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
A `shutil.which("mdb-export")` check before the call would be enough, and could
|
|
37
|
+
also feed a capability probe (below).
|
|
38
|
+
|
|
39
|
+
## 2. `libodbc.so.2` missing → two loaders disappear from discovery
|
|
40
|
+
|
|
41
|
+
`arbin_sql` and `arbin_sql_7` raise at import:
|
|
42
|
+
|
|
43
|
+
```
|
|
44
|
+
ImportError: libodbc.so.2: cannot open shared object file: No such file or directory
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
Anything enumerating instruments therefore sees **11 loaders instead of 13**,
|
|
48
|
+
with no indication that two were dropped or why. Our instrument picker simply
|
|
49
|
+
did not offer them, and nothing in the UI could explain the difference between
|
|
50
|
+
the Windows build and the container.
|
|
51
|
+
|
|
52
|
+
**Suggestion:** let discovery report unavailable loaders rather than omit them —
|
|
53
|
+
something like `(id, available: bool, reason: str)` — so a UI can grey the entry
|
|
54
|
+
out with a tooltip instead of silently narrowing the list. `registry.families()`
|
|
55
|
+
already does something like this well for plots (2.1.2, #868); the same shape
|
|
56
|
+
would suit instruments.
|
|
57
|
+
|
|
58
|
+
## What this looks like fixed
|
|
59
|
+
|
|
60
|
+
An app could then ask cellpy "what can you actually read here?" and show the
|
|
61
|
+
answer, instead of discovering the gaps one confused user at a time.
|
|
62
|
+
|
|
63
|
+
(For the record, the container fix is `apt install mdbtools unixodbc` — but the
|
|
64
|
+
point is that we found it by instrumenting our own test, not from any message
|
|
65
|
+
cellpy produced.)
|
|
66
|
+
|
|
67
|
+
## Comments (curated summary)
|
|
68
|
+
|
|
69
|
+
- **Additional tasks**: make the default `paths.examplesdir` absolute (`Path.home() / "cellpy_data" / "examples"`). A relative default resolves against process cwd, so a frozen Windows app wrote demo cells into its install folder.
|
|
70
|
+
- **Clarifications / constraints**: `config.reload()` after setting `CELLPY_PATHS__EXAMPLESDIR` is the workaround that already works; creating the relative directory is not a fix.
|
|
71
|
+
|
|
72
|
+
_Note: this section is an interpretive summary of the comment thread, not a verbatim dump. Source comments: 1, last comment by @jepegit on 2026-08-16._
|
|
73
|
+
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
# Issue #938 plan
|
|
2
|
+
|
|
3
|
+
Replaces the yolo-abort stub (same filename, in place).
|
|
4
|
+
|
|
5
|
+
## Goal
|
|
6
|
+
|
|
7
|
+
Missing *system* tools must be visible: loading an Arbin `.res` without
|
|
8
|
+
`mdb-export` raises a named, installable error; `list_instruments()` still
|
|
9
|
+
lists loaders that failed to import (e.g. `arbin_sql*` without `libodbc.so.2`)
|
|
10
|
+
with `available=False` and a reason a UI can show.
|
|
11
|
+
|
|
12
|
+
## Constraints
|
|
13
|
+
|
|
14
|
+
- Stay quiet: `list_instruments` must not emit WARNING spam (#786). Unavailable
|
|
15
|
+
rows are data, not log noise.
|
|
16
|
+
- Additive listing keys only — existing `id` / `label` / `models` / `suffixes`
|
|
17
|
+
stay. Apps that ignore unknown keys keep working.
|
|
18
|
+
- Do not change conda env files or add pip extras for mdbtools/unixodbc
|
|
19
|
+
(system packages).
|
|
20
|
+
- Windows bundled `mdb-export.exe` path stays as-is; the POSIX `PATH` name
|
|
21
|
+
`"mdb-export"` is the missing-tool case.
|
|
22
|
+
- Public listing shape is documented in `docs/getting_started/agents.md` —
|
|
23
|
+
update it in the same PR (AGENTS.md “Using cellpy” pointer if the short
|
|
24
|
+
facts mention the key set).
|
|
25
|
+
- **Out of scope unless Open questions say otherwise:** the comment’s
|
|
26
|
+
`examplesdir` default. That is cwd/relative-path config, not a missing
|
|
27
|
+
tool. #960 is a different bug (legacy config file format).
|
|
28
|
+
|
|
29
|
+
### Prior art
|
|
30
|
+
|
|
31
|
+
- `OptionalDependencyError` (`cellpy/exceptions.py`) — named missing-dep
|
|
32
|
+
error used for `tables` / matplotlib; reuse for mdbtools (message names
|
|
33
|
+
apt/brew, not a pip extra).
|
|
34
|
+
- `arbin_res._loader_posix` already catches `FileNotFoundError`, logs
|
|
35
|
+
“install mdbtools”, then **re-raises the bare** `FileNotFoundError`
|
|
36
|
+
(`cellpy/readers/instruments/arbin_res.py`).
|
|
37
|
+
- `cli_api` already probes `command -v mdb-export` on posix (check path
|
|
38
|
+
only; not used at load time).
|
|
39
|
+
- `InstrumentFactory.create_all(quiet=True)` swallows create failures —
|
|
40
|
+
that is why `arbin_sql` / `arbin_sql_7` vanish
|
|
41
|
+
(`cellpy/readers/data_structures.py`).
|
|
42
|
+
- `list_instruments()` (#786) — app picker; tests pin exact key set in
|
|
43
|
+
`tests/test_instrument_registering.py`.
|
|
44
|
+
- Plot `registry.families()` (#868) lists names that exist; it does **not**
|
|
45
|
+
actually return `(available, reason)` — mirror the *intent* (UI can enumerate
|
|
46
|
+
gaps), not the tuple shape.
|
|
47
|
+
- `cellpy.readers.instruments.registry` is the entry-point loader path;
|
|
48
|
+
built-ins still go through `InstrumentFactory`. Do not mix the two in this
|
|
49
|
+
issue.
|
|
50
|
+
- Toolbox: no helper for this.
|
|
51
|
+
|
|
52
|
+
## Approach
|
|
53
|
+
|
|
54
|
+
**1. Named error when `mdb-export` is missing**
|
|
55
|
+
|
|
56
|
+
- Small helper next to the loader (e.g. `require_mdb_export(path)`): if `path`
|
|
57
|
+
is the bare command `mdb-export` (posix) and `shutil.which` is `None`, raise
|
|
58
|
+
`OptionalDependencyError` naming mdbtools + `apt install mdbtools` /
|
|
59
|
+
`brew install mdbtools`.
|
|
60
|
+
- If `path` is an absolute/relative file (Windows bundled exe), keep today’s
|
|
61
|
+
`os.path.isfile` / `FileNotFoundError` behaviour.
|
|
62
|
+
- Call the helper in `_loader_posix` **before** `subprocess.call`, replacing
|
|
63
|
+
the re-raise of the raw `FileNotFoundError`.
|
|
64
|
+
- Do not lazy-rewrite the whole Arbin loader.
|
|
65
|
+
|
|
66
|
+
**2. Discovery reports unavailable loaders**
|
|
67
|
+
|
|
68
|
+
- After `register_builder` for every production loader, iterate **registered
|
|
69
|
+
ids**, not only `create_all` successes.
|
|
70
|
+
- Success → existing row plus `available: True`, `reason: None`.
|
|
71
|
+
- `create()` / import failure (the `libodbc.so.2` `ImportError`) → still emit
|
|
72
|
+
a row: `available: False`, `reason: <short exception text>`, empty
|
|
73
|
+
`models` / `suffixes` if unknown.
|
|
74
|
+
- Expected skips (`local_instrument`, missing `DataLoader`) stay omitted.
|
|
75
|
+
- Optional cheap probe: if `arbin_res` created OK but posix `mdb-export` is
|
|
76
|
+
missing, mark that row `available: False` with the same mdbtools reason
|
|
77
|
+
(capability probe the issue asked for). Same helper as part 1.
|
|
78
|
+
- Keep `quiet=True` / DEBUG for the underlying create failures.
|
|
79
|
+
|
|
80
|
+
**3. Docs / tests**
|
|
81
|
+
|
|
82
|
+
- `list_instruments` docstring + `agents.md` picker bullet: keys become
|
|
83
|
+
`{id, label, models, suffixes, available, reason}`.
|
|
84
|
+
- Tests: monkeypatch `shutil.which` → `OptionalDependencyError`; monkeypatch
|
|
85
|
+
factory create for `arbin_sql` → row present with `available is False`;
|
|
86
|
+
existing quiet + shape tests updated for the new keys.
|
|
87
|
+
|
|
88
|
+
## Files to touch
|
|
89
|
+
|
|
90
|
+
| Path | Change |
|
|
91
|
+
| --- | --- |
|
|
92
|
+
| `cellpy/readers/instruments/arbin_res.py` | `require_mdb_export`; call before subprocess |
|
|
93
|
+
| `cellpy/readers/data_structures.py` | `list_instruments` includes failed creates + `available`/`reason` |
|
|
94
|
+
| `tests/test_instrument_registering.py` | shape keys; unavailable-row test; keep quiet contract |
|
|
95
|
+
| `tests/` (small new or next to arbin tests) | missing `mdb-export` raises named error |
|
|
96
|
+
| `docs/getting_started/agents.md` | picker dict keys |
|
|
97
|
+
| `.issueflows/04-designs-and-guides/instrument-availability.md` | short decision (listing unavailable vs omit) |
|
|
98
|
+
|
|
99
|
+
## Test strategy
|
|
100
|
+
|
|
101
|
+
- `uv run pytest -m essential`
|
|
102
|
+
- New/updated tests above; mark essential (public `list_instruments` + load
|
|
103
|
+
error are app-facing).
|
|
104
|
+
- Full suite on CI.
|
|
105
|
+
|
|
106
|
+
## Open questions
|
|
107
|
+
|
|
108
|
+
1. **`examplesdir` comment (frozen-app cwd trap)** — **Recommend: defer.**
|
|
109
|
+
Different subsystem; #960 is not this bug. Say **include here** if you
|
|
110
|
+
want a third bullet (`PathsConfig` default + resolve relative →
|
|
111
|
+
`Path.home() / "cellpy_data" / "examples"` in `example_data`).
|
|
112
|
+
2. **Exception class** — **Recommend: `OptionalDependencyError`.** New
|
|
113
|
+
`CellpyDependencyError` name from the issue is extra surface for one
|
|
114
|
+
caller.
|
|
115
|
+
3. **Mark `arbin_res` unavailable when mdbtools is missing?** — **Recommend:
|
|
116
|
+
yes** (same helper). Listing would otherwise claim the loader works on a
|
|
117
|
+
container without mdbtools.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# Issue #938 status
|
|
2
|
+
|
|
3
|
+
- [x] Done
|
|
4
|
+
|
|
5
|
+
## What's done
|
|
6
|
+
|
|
7
|
+
- `require_mdb_export` / `mdb_export_unavailable_reason` in `arbin_res.py`;
|
|
8
|
+
posix `.res` load raises `OptionalDependencyError` naming mdbtools.
|
|
9
|
+
- `list_instruments()` walks registered ids; failed creates emit
|
|
10
|
+
`available=False` + `reason`; expected skips stay omitted; quiet (#786).
|
|
11
|
+
- `arbin_res` listed unavailable when posix `mdb-export` is missing.
|
|
12
|
+
- Tests (essential), `agents.md`, design note `instrument-availability.md`.
|
|
13
|
+
- `examplesdir` deferred (not a missing tool).
|
|
14
|
+
|
|
15
|
+
## Remaining work
|
|
16
|
+
|
|
17
|
+
- None.
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# Issue #948: Problems with custom_group_labels in summary_collector
|
|
2
|
+
|
|
3
|
+
Source: https://github.com/jepegit/cellpy/issues/948
|
|
4
|
+
|
|
5
|
+
## Original issue text
|
|
6
|
+
|
|
7
|
+
Running this:
|
|
8
|
+
```
|
|
9
|
+
cap_summaries = summary_collector(
|
|
10
|
+
b,
|
|
11
|
+
#max_cycle=50,
|
|
12
|
+
columns=[
|
|
13
|
+
"charge_capacity_gravimetric",
|
|
14
|
+
"discharge_capacity_gravimetric",
|
|
15
|
+
"coulombic_efficiency",
|
|
16
|
+
],
|
|
17
|
+
group_it=True,
|
|
18
|
+
custom_group_labels={
|
|
19
|
+
1: "run-14",
|
|
20
|
+
2: "run-15",
|
|
21
|
+
},
|
|
22
|
+
)
|
|
23
|
+
|
|
24
|
+
cap_summaries.plot(height=800)
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
produces expected result with legend labels saying run-14 and run-15, while, if I do:
|
|
28
|
+
|
|
29
|
+
`cap_summaries.plot(height=800, spread=True)`
|
|
30
|
+
|
|
31
|
+
changing the the last line to include the standard deviation, the group labels go back to 1 and 2 (The custom_group_labels are still set to run-14 and run-15.) (Showing the standard deviation works)
|
|
32
|
+
|
|
33
|
+
## Comments (curated summary)
|
|
34
|
+
|
|
35
|
+
- **Additional tasks**:
|
|
36
|
+
- Check that `spread=True` still accepts the supported per-panel y-limits (`y_ranges=` / `share_y=False`). The thread's `fig.update_yaxes(..., row=N)` workaround is not the public API and must not become the fix.
|
|
37
|
+
- **Clarifications / constraints**:
|
|
38
|
+
- Std bands themselves work; only the legend text regresses.
|
|
39
|
+
- Manual `row=` y-axis edits look wrong on spread because `spread_plot` builds `make_subplots` (row 1 = top) while the workaround assumed the non-spread facet row numbering.
|
|
40
|
+
|
|
41
|
+
_Note: this section is an interpretive summary of the comment thread, not a verbatim dump. Source comments: 1, last comment by @inger-emma on 2026-09-01._
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
# Issue #948 plan
|
|
2
|
+
|
|
3
|
+
## Goal
|
|
4
|
+
|
|
5
|
+
`summary_collector(..., group_it=True, custom_group_labels={1: "run-14",
|
|
6
|
+
2: "run-15"}).plot(spread=True)` shows **run-14 / run-15** in the Plotly
|
|
7
|
+
legend, same as `.plot()` without spread.
|
|
8
|
+
|
|
9
|
+
## Constraints
|
|
10
|
+
|
|
11
|
+
- Additive. Non-spread grouped summaries stay as they are (#923 / #947).
|
|
12
|
+
- Do not invent a second label API. `custom_group_labels=` on collect +
|
|
13
|
+
`group_label` on the frame is the source of truth.
|
|
14
|
+
- Per-panel y-limits stay `y_ranges=` / `share_y=` (#804 / #817). Do not
|
|
15
|
+
teach or copy the thread's `fig.update_yaxes(..., row=N)` workaround.
|
|
16
|
+
- Public get/schema/CLI surface unchanged — no agents.md rewrite.
|
|
17
|
+
|
|
18
|
+
### Prior art
|
|
19
|
+
|
|
20
|
+
- `cellpy.plotting.collected._spread_series_column` — prefers
|
|
21
|
+
`group_label` when any value is non-null, else `cell`, else `group`.
|
|
22
|
+
- `spread_plot` — `make_subplots`; `name` / `legendgroup` = groupby key.
|
|
23
|
+
- `summary_plotter` — for `group_it` frames, sets `z` to `group_label`
|
|
24
|
+
when present (px.line path). Spread does **not** use `z`; it calls
|
|
25
|
+
`_spread_series_column` on the frame that reaches `sequence_plotter`.
|
|
26
|
+
- `collect_summaries` / `_with_group_label` — writes `group_label` on
|
|
27
|
+
the averaged long frame from `custom_group_labels` (int or str keys).
|
|
28
|
+
- Tests already cover **Collection**.plot(spread=True) labels
|
|
29
|
+
(`tests/test_collected_summary_groups.py::test_spread_plot_legend_uses_custom_group_labels`)
|
|
30
|
+
and **summary_collector**.plot() **without** spread
|
|
31
|
+
(`test_summary_collector_plot_uses_custom_group_labels_and_units`).
|
|
32
|
+
The issue snippet — `summary_collector(...).plot(spread=True)` — is
|
|
33
|
+
**not** locked.
|
|
34
|
+
- Toolbox: none. Graph: none.
|
|
35
|
+
|
|
36
|
+
## Approach
|
|
37
|
+
|
|
38
|
+
1. Add the missing essential test: reuse the `summary_collector` batch
|
|
39
|
+
fixture from `test_summary_collector_plot_uses_custom_group_labels_and_units`,
|
|
40
|
+
call `.plot(spread=True)`, assert legend names are `run-14` / `run-15`
|
|
41
|
+
(mean traces with `showlegend`).
|
|
42
|
+
2. Run it. Two outcomes:
|
|
43
|
+
- **Red** — `group_label` is missing or all-null on the frame
|
|
44
|
+
`spread_plot` sees (likely dropped in the summary melt / id-vars
|
|
45
|
+
list, which omits `group_label`). Keep `group_label` as an id
|
|
46
|
+
column, or ensure `_spread_series_column` sees the same `z` that
|
|
47
|
+
`summary_plotter` already resolved. Prefer passing the resolved
|
|
48
|
+
series column into `spread_plot` over a second lookup.
|
|
49
|
+
- **Green** — already fixed on `master` by #923 / #947; keep the
|
|
50
|
+
test as the lock and close.
|
|
51
|
+
3. Comment / y-axes: confirm existing
|
|
52
|
+
`tests/test_collected_summary_axes.py` spread + `y_ranges` tests.
|
|
53
|
+
If green, one docstring line on `Collection.plot` / `spread_plot`:
|
|
54
|
+
use `y_ranges=`, not manual `row=`. No start_cell change (spread
|
|
55
|
+
row 1 = top; tests already assert that order).
|
|
56
|
+
|
|
57
|
+
## Files to touch
|
|
58
|
+
|
|
59
|
+
- `tests/test_collected_summary_groups.py` — `summary_collector` +
|
|
60
|
+
`spread=True` legend test (`@pytest.mark.essential`).
|
|
61
|
+
- `cellpy/plotting/collected.py` — only if the new test is red
|
|
62
|
+
(`spread_plot` / `_spread_series_column` / melt id-vars).
|
|
63
|
+
- `cellpy/collect/collection.py` — optional one-line `y_ranges=` note
|
|
64
|
+
on `plot`.
|
|
65
|
+
- `.issueflows/04-designs-and-guides/plotting-collected.md` — spread +
|
|
66
|
+
`custom_group_labels` / `y_ranges` sentence if code changes.
|
|
67
|
+
|
|
68
|
+
## Test strategy
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
uv sync --extra batch
|
|
72
|
+
MPLBACKEND=Agg uv run pytest tests/test_collected_summary_groups.py tests/test_collected_summary_axes.py -m essential
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
## Open questions
|
|
76
|
+
|
|
77
|
+
- **Comment scope:** treat the y-axis screenshot as “use `y_ranges=`”
|
|
78
|
+
(recommended) vs also change spread `start_cell` to match the
|
|
79
|
+
workaround’s row numbers (would invert existing facet-order tests —
|
|
80
|
+
reject unless you want that).
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# Issue #948 status
|
|
2
|
+
|
|
3
|
+
- [x] Done
|
|
4
|
+
|
|
5
|
+
## What's done
|
|
6
|
+
|
|
7
|
+
- Plan accepted.
|
|
8
|
+
- `summary_collector(...).plot(spread=True)` legend test — **green** on
|
|
9
|
+
current master (#923 / #947 already did the plotter work). Test is the lock.
|
|
10
|
+
- `y_ranges=` note on `Collection.plot` / `spread_plot`.
|
|
11
|
+
- HISTORY Unreleased bullet.
|
|
12
|
+
|
|
13
|
+
## Remaining work
|
|
14
|
+
|
|
15
|
+
- None.
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# Issue #949: b.plot not showing ir
|
|
2
|
+
|
|
3
|
+
Source: https://github.com/jepegit/cellpy/issues/949
|
|
4
|
+
|
|
5
|
+
## Original issue text
|
|
6
|
+
|
|
7
|
+
`b.plot(rate=True, ir=True, direction="discharge")`
|
|
8
|
+
|
|
9
|
+
does not display the IR. The plot looks fine otherwise, and other optional parameters I know of works.
|