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.
Files changed (578) hide show
  1. cellpy-2.1.4/.issueflows/03-solved-issues/cycle_status_2026-09-05.md +27 -0
  2. cellpy-2.1.4/.issueflows/03-solved-issues/cycle_status_2026-09-07.md +22 -0
  3. cellpy-2.1.4/.issueflows/03-solved-issues/cycle_status_2026-09-08.md +28 -0
  4. cellpy-2.1.4/.issueflows/03-solved-issues/issue1000_original.md +9 -0
  5. cellpy-2.1.4/.issueflows/03-solved-issues/issue1000_plan.md +38 -0
  6. cellpy-2.1.4/.issueflows/03-solved-issues/issue1000_status.md +13 -0
  7. cellpy-2.1.4/.issueflows/03-solved-issues/issue937_original.md +61 -0
  8. cellpy-2.1.4/.issueflows/03-solved-issues/issue937_plan.md +44 -0
  9. cellpy-2.1.4/.issueflows/03-solved-issues/issue937_status.md +16 -0
  10. cellpy-2.1.4/.issueflows/03-solved-issues/issue938_original.md +73 -0
  11. cellpy-2.1.4/.issueflows/03-solved-issues/issue938_plan.md +117 -0
  12. cellpy-2.1.4/.issueflows/03-solved-issues/issue938_status.md +17 -0
  13. cellpy-2.1.4/.issueflows/03-solved-issues/issue948_original.md +41 -0
  14. cellpy-2.1.4/.issueflows/03-solved-issues/issue948_plan.md +80 -0
  15. cellpy-2.1.4/.issueflows/03-solved-issues/issue948_status.md +15 -0
  16. cellpy-2.1.4/.issueflows/03-solved-issues/issue949_original.md +9 -0
  17. cellpy-2.1.4/.issueflows/03-solved-issues/issue949_plan.md +126 -0
  18. cellpy-2.1.4/.issueflows/03-solved-issues/issue949_status.md +18 -0
  19. cellpy-2.1.4/.issueflows/03-solved-issues/issue960_original.md +7 -0
  20. cellpy-2.1.4/.issueflows/03-solved-issues/issue960_plan.md +42 -0
  21. cellpy-2.1.4/.issueflows/03-solved-issues/issue960_status.md +14 -0
  22. cellpy-2.1.4/.issueflows/03-solved-issues/issue982_original.md +7 -0
  23. cellpy-2.1.4/.issueflows/03-solved-issues/issue982_plan.md +39 -0
  24. cellpy-2.1.4/.issueflows/03-solved-issues/issue982_status.md +13 -0
  25. cellpy-2.1.4/.issueflows/03-solved-issues/issue983_original.md +23 -0
  26. cellpy-2.1.4/.issueflows/03-solved-issues/issue983_plan.md +76 -0
  27. cellpy-2.1.4/.issueflows/03-solved-issues/issue983_status.md +19 -0
  28. cellpy-2.1.4/.issueflows/03-solved-issues/issue989_original.md +15 -0
  29. cellpy-2.1.4/.issueflows/03-solved-issues/issue989_status.md +16 -0
  30. cellpy-2.1.4/.issueflows/03-solved-issues/issue990_original.md +50 -0
  31. cellpy-2.1.4/.issueflows/03-solved-issues/issue990_plan.md +37 -0
  32. cellpy-2.1.4/.issueflows/03-solved-issues/issue990_status.md +19 -0
  33. cellpy-2.1.4/.issueflows/03-solved-issues/issue991_original.md +40 -0
  34. cellpy-2.1.4/.issueflows/03-solved-issues/issue991_plan.md +36 -0
  35. cellpy-2.1.4/.issueflows/03-solved-issues/issue991_status.md +19 -0
  36. cellpy-2.1.4/.issueflows/03-solved-issues/issue993_original.md +59 -0
  37. cellpy-2.1.4/.issueflows/03-solved-issues/issue993_plan.md +40 -0
  38. cellpy-2.1.4/.issueflows/03-solved-issues/issue993_status.md +23 -0
  39. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/04-designs-and-guides/harmonized-raw-default.md +21 -0
  40. cellpy-2.1.4/.issueflows/04-designs-and-guides/instrument-availability.md +29 -0
  41. cellpy-2.1.4/.issueflows/04-designs-and-guides/optional-plotting-notebook.md +25 -0
  42. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/04-designs-and-guides/plotting-batch-summary.md +6 -0
  43. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/04-designs-and-guides/plotting-collected.md +7 -2
  44. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/04-designs-and-guides/test-registry.md +40 -1
  45. {cellpy-2.1.3.post3 → cellpy-2.1.4}/AGENTS.md +14 -4
  46. {cellpy-2.1.3.post3 → cellpy-2.1.4}/HISTORY.md +54 -0
  47. {cellpy-2.1.3.post3 → cellpy-2.1.4}/PKG-INFO +9 -4
  48. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/batch/_dbengine.py +30 -0
  49. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/batch/journal.py +35 -3
  50. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/cli_api.py +63 -64
  51. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/collect/collection.py +3 -1
  52. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/collect/collector.py +3 -1
  53. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/exceptions.py +3 -2
  54. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/plotting/backends/__init__.py +3 -1
  55. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/plotting/backends/mpl.py +25 -0
  56. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/plotting/batch_summary.py +81 -20
  57. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/plotting/collected.py +4 -0
  58. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/plotting/figures.py +10 -1
  59. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/plotting/labels.py +43 -15
  60. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/plotting/registry.py +1 -1
  61. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/capacity_curves.py +7 -0
  62. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/cellreader.py +26 -23
  63. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/data_structures.py +78 -36
  64. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/instruments/arbin_res.py +38 -4
  65. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/instruments/harmonize.py +23 -7
  66. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/utils/ocv_rlx.py +15 -2
  67. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/utils/plotutils.py +4 -1
  68. {cellpy-2.1.3.post3 → cellpy-2.1.4}/pyproject.toml +5 -4
  69. {cellpy-2.1.3.post3 → cellpy-2.1.4}/uv.lock +25 -13
  70. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.aliases +0 -0
  71. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.cursor/commands/build.md +0 -0
  72. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.cursor/commands/create-original-issue-file.md +0 -0
  73. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.cursor/rules/cellpy-core-migration.mdc +0 -0
  74. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.cursor/rules/cellpy-workspace.mdc +0 -0
  75. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.cursor/rules/graphify.mdc +0 -0
  76. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.cursor/rules/issueflow-rules.mdc +0 -0
  77. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.cursor/rules/kiss.mdc +0 -0
  78. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.cursor/rules/this-project.mdc +0 -0
  79. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.cursor/skills/caveman/SKILL.md +0 -0
  80. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.cursor/skills/gh-ci/SKILL.md +0 -0
  81. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.cursor/skills/grill-me/SKILL.md +0 -0
  82. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.cursor/skills/iflow/SKILL.md +0 -0
  83. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.cursor/skills/iflow-archive/SKILL.md +0 -0
  84. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.cursor/skills/iflow-auto/SKILL.md +0 -0
  85. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.cursor/skills/iflow-build/SKILL.md +0 -0
  86. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.cursor/skills/iflow-cleanup/SKILL.md +0 -0
  87. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.cursor/skills/iflow-close/SKILL.md +0 -0
  88. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.cursor/skills/iflow-comments/SKILL.md +0 -0
  89. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.cursor/skills/iflow-cycle/SKILL.md +0 -0
  90. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.cursor/skills/iflow-doctor/SKILL.md +0 -0
  91. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.cursor/skills/iflow-epic/SKILL.md +0 -0
  92. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.cursor/skills/iflow-fix/SKILL.md +0 -0
  93. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.cursor/skills/iflow-graphify/SKILL.md +0 -0
  94. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.cursor/skills/iflow-history-update/SKILL.md +0 -0
  95. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.cursor/skills/iflow-init/SKILL.md +0 -0
  96. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.cursor/skills/iflow-issue/SKILL.md +0 -0
  97. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.cursor/skills/iflow-pause/SKILL.md +0 -0
  98. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.cursor/skills/iflow-pick/SKILL.md +0 -0
  99. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.cursor/skills/iflow-plan/SKILL.md +0 -0
  100. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.cursor/skills/iflow-review/SKILL.md +0 -0
  101. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.cursor/skills/iflow-status/SKILL.md +0 -0
  102. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.cursor/skills/iflow-version-bump/SKILL.md +0 -0
  103. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.cursor/skills/iflow-yolo/SKILL.md +0 -0
  104. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.cursor/skills/issueflow-build/SKILL.md +0 -0
  105. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.dockerignore +0 -0
  106. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.editorconfig +0 -0
  107. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.env_example +0 -0
  108. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.gitattributes +0 -0
  109. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.gitignore +0 -0
  110. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/00-tools/.gitkeep +0 -0
  111. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/00-tools/README.md +0 -0
  112. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/00-tools/migrate_prms_calls.py +0 -0
  113. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/00-tools/scan_hardcoded_headers.py +0 -0
  114. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/00-tools/scan_member_usage.py +0 -0
  115. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/01-current-issues/.gitkeep +0 -0
  116. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/02-partly-solved-issues/.gitkeep +0 -0
  117. {cellpy-2.1.3.post3/.issueflows/01-current-issues → cellpy-2.1.4/.issueflows/02-partly-solved-issues}/issue985_original.md +0 -0
  118. {cellpy-2.1.3.post3/.issueflows/01-current-issues → cellpy-2.1.4/.issueflows/02-partly-solved-issues}/issue985_status.md +0 -0
  119. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/.gitkeep +0 -0
  120. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/2026-07-09_archived_issues.md +0 -0
  121. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/2026-07-31_archived_issues.md +0 -0
  122. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/cycle_status.md +0 -0
  123. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/cycle_status_2026-07-31.md +0 -0
  124. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/cycle_status_2026-08-08.md +0 -0
  125. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/cycle_status_2026-08-09.md +0 -0
  126. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/cycle_status_2026-08-25.md +0 -0
  127. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue459_original.md +0 -0
  128. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue786_original.md +0 -0
  129. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue786_plan.md +0 -0
  130. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue786_status.md +0 -0
  131. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue799_original.md +0 -0
  132. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue799_plan.md +0 -0
  133. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue799_status.md +0 -0
  134. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue800_original.md +0 -0
  135. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue800_plan.md +0 -0
  136. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue800_status.md +0 -0
  137. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue801_original.md +0 -0
  138. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue801_plan.md +0 -0
  139. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue801_status.md +0 -0
  140. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue802_original.md +0 -0
  141. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue802_plan.md +0 -0
  142. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue802_status.md +0 -0
  143. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue804_original.md +0 -0
  144. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue804_plan.md +0 -0
  145. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue804_status.md +0 -0
  146. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue809_original.md +0 -0
  147. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue809_plan.md +0 -0
  148. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue809_status.md +0 -0
  149. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue816_original.md +0 -0
  150. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue816_plan.md +0 -0
  151. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue816_status.md +0 -0
  152. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue817_original.md +0 -0
  153. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue817_plan.md +0 -0
  154. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue817_status.md +0 -0
  155. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue818_original.md +0 -0
  156. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue818_plan.md +0 -0
  157. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue818_status.md +0 -0
  158. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue819_original.md +0 -0
  159. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue819_plan.md +0 -0
  160. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue819_status.md +0 -0
  161. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue820_original.md +0 -0
  162. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue820_plan.md +0 -0
  163. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue820_status.md +0 -0
  164. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue821_original.md +0 -0
  165. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue821_plan.md +0 -0
  166. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue821_status.md +0 -0
  167. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue822_original.md +0 -0
  168. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue822_plan.md +0 -0
  169. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue822_status.md +0 -0
  170. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue825_original.md +0 -0
  171. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue825_plan.md +0 -0
  172. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue825_status.md +0 -0
  173. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue837_original.md +0 -0
  174. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue837_plan.md +0 -0
  175. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue837_status.md +0 -0
  176. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue839_original.md +0 -0
  177. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue839_plan.md +0 -0
  178. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue839_status.md +0 -0
  179. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue845_original.md +0 -0
  180. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue845_plan.md +0 -0
  181. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue845_status.md +0 -0
  182. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue846_original.md +0 -0
  183. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue846_plan.md +0 -0
  184. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue846_status.md +0 -0
  185. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue849_original.md +0 -0
  186. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue849_plan.md +0 -0
  187. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue849_status.md +0 -0
  188. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue850_original.md +0 -0
  189. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue850_plan.md +0 -0
  190. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue850_status.md +0 -0
  191. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue851_original.md +0 -0
  192. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue851_plan.md +0 -0
  193. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue851_status.md +0 -0
  194. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue853_original.md +0 -0
  195. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue853_plan.md +0 -0
  196. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue853_status.md +0 -0
  197. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue855_original.md +0 -0
  198. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue855_plan.md +0 -0
  199. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue855_status.md +0 -0
  200. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue862_original.md +0 -0
  201. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue862_plan.md +0 -0
  202. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue862_status.md +0 -0
  203. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue863_original.md +0 -0
  204. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue863_plan.md +0 -0
  205. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue863_status.md +0 -0
  206. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue866_original.md +0 -0
  207. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue866_status.md +0 -0
  208. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue867_original.md +0 -0
  209. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue867_plan.md +0 -0
  210. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue867_status.md +0 -0
  211. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue868_original.md +0 -0
  212. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue868_plan.md +0 -0
  213. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue868_status.md +0 -0
  214. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue869_original.md +0 -0
  215. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue869_plan.md +0 -0
  216. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue869_status.md +0 -0
  217. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue874_original.md +0 -0
  218. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue874_plan.md +0 -0
  219. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue874_status.md +0 -0
  220. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue875_original.md +0 -0
  221. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue875_plan.md +0 -0
  222. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue875_status.md +0 -0
  223. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue876_original.md +0 -0
  224. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue876_plan.md +0 -0
  225. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue876_status.md +0 -0
  226. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue878_original.md +0 -0
  227. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue878_plan.md +0 -0
  228. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue878_status.md +0 -0
  229. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue885_original.md +0 -0
  230. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue885_status.md +0 -0
  231. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue891_original.md +0 -0
  232. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue891_plan.md +0 -0
  233. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue891_status.md +0 -0
  234. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue892_original.md +0 -0
  235. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue892_status.md +0 -0
  236. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue912_original.md +0 -0
  237. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue912_plan.md +0 -0
  238. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue912_status.md +0 -0
  239. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue916_original.md +0 -0
  240. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue916_status.md +0 -0
  241. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue939_original.md +0 -0
  242. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue939_plan.md +0 -0
  243. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue939_status.md +0 -0
  244. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue940_original.md +0 -0
  245. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue940_plan.md +0 -0
  246. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue940_status.md +0 -0
  247. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue947_original.md +0 -0
  248. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue947_plan.md +0 -0
  249. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue947_status.md +0 -0
  250. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue950_original.md +0 -0
  251. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue950_plan.md +0 -0
  252. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue950_status.md +0 -0
  253. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue952_original.md +0 -0
  254. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue952_plan.md +0 -0
  255. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue952_status.md +0 -0
  256. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue961_original.md +0 -0
  257. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue961_plan.md +0 -0
  258. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue961_status.md +0 -0
  259. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue962_original.md +0 -0
  260. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue962_plan.md +0 -0
  261. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue962_status.md +0 -0
  262. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue963_original.md +0 -0
  263. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue963_plan.md +0 -0
  264. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue963_status.md +0 -0
  265. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue967_original.md +0 -0
  266. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue967_plan.md +0 -0
  267. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue967_status.md +0 -0
  268. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue971_original.md +0 -0
  269. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue971_plan.md +0 -0
  270. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/03-solved-issues/issue971_status.md +0 -0
  271. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/04-designs-and-guides/.gitkeep +0 -0
  272. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/04-designs-and-guides/atomic-file-writes.md +0 -0
  273. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/04-designs-and-guides/batch-load-orchestrator.md +0 -0
  274. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/04-designs-and-guides/bdf-export.md +0 -0
  275. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/04-designs-and-guides/build-and-versioning.md +0 -0
  276. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/04-designs-and-guides/cellpy-v2-architecture.excalidraw +0 -0
  277. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/04-designs-and-guides/cellpy-v2-branching.md +0 -0
  278. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/04-designs-and-guides/cellpy-v2-epic.md +0 -0
  279. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/04-designs-and-guides/cellpy-workspace-repos.md +0 -0
  280. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/04-designs-and-guides/cellpycell-di-restructuring.md +0 -0
  281. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/04-designs-and-guides/ci-tiers.md +0 -0
  282. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/04-designs-and-guides/cli-api-echo-binder.md +0 -0
  283. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/04-designs-and-guides/cli-light-startup.md +0 -0
  284. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/04-designs-and-guides/docs-on-master.md +0 -0
  285. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/04-designs-and-guides/essential-tests.md +0 -0
  286. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/04-designs-and-guides/filters-and-plot-filtering.md +0 -0
  287. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/04-designs-and-guides/marimo-docs.md +0 -0
  288. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/04-designs-and-guides/otherpath-upath.md +0 -0
  289. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/04-designs-and-guides/plotting-backends.md +0 -0
  290. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/04-designs-and-guides/plotting-cycle-legend.md +0 -0
  291. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/04-designs-and-guides/plotting-prepare.md +0 -0
  292. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/04-designs-and-guides/plotting-registry.md +0 -0
  293. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/04-designs-and-guides/release-procedure.md +0 -0
  294. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/04-designs-and-guides/testing-and-coverage.md +0 -0
  295. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/04-designs-and-guides/this-project.md +0 -0
  296. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/04-designs-and-guides/v2-cellpycore-pin-gate.md +0 -0
  297. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/05-epics/.gitkeep +0 -0
  298. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/05-epics/epic567_plan.md +0 -0
  299. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/05-epics/epic896_plan.md +0 -0
  300. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.issueflows/config.toml +0 -0
  301. {cellpy-2.1.3.post3 → cellpy-2.1.4}/.readthedocs.yaml +0 -0
  302. {cellpy-2.1.3.post3 → cellpy-2.1.4}/AUTHORS.md +0 -0
  303. {cellpy-2.1.3.post3 → cellpy-2.1.4}/CODE_OF_CONDUCT.md +0 -0
  304. {cellpy-2.1.3.post3 → cellpy-2.1.4}/CONTRIBUTING.md +0 -0
  305. {cellpy-2.1.3.post3 → cellpy-2.1.4}/DEPRECATIONS.md +0 -0
  306. {cellpy-2.1.3.post3 → cellpy-2.1.4}/LICENSE.md +0 -0
  307. {cellpy-2.1.3.post3 → cellpy-2.1.4}/README.md +0 -0
  308. {cellpy-2.1.3.post3 → cellpy-2.1.4}/_old_docs/_developers_guide/dev_cellpy_data_structure.md +0 -0
  309. {cellpy-2.1.3.post3 → cellpy-2.1.4}/_old_docs/_developers_guide/dev_cellpy_folder_structure.md +0 -0
  310. {cellpy-2.1.3.post3 → cellpy-2.1.4}/_old_docs/_developers_guide/dev_cellpy_packaging_pypi.md +0 -0
  311. {cellpy-2.1.3.post3 → cellpy-2.1.4}/_old_docs/_developers_guide/dev_cellpy_setup.md +0 -0
  312. {cellpy-2.1.3.post3 → cellpy-2.1.4}/_old_docs/_developers_guide/dev_conda_package.md +0 -0
  313. {cellpy-2.1.3.post3 → cellpy-2.1.4}/_old_docs/_developers_guide/dev_docs.md +0 -0
  314. {cellpy-2.1.3.post3 → cellpy-2.1.4}/_old_docs/_developers_guide/dev_loaders_and_instruments.md +0 -0
  315. {cellpy-2.1.3.post3 → cellpy-2.1.4}/_old_docs/_developers_guide/dev_various.md +0 -0
  316. {cellpy-2.1.3.post3 → cellpy-2.1.4}/_old_docs/_developers_guide/index.md +0 -0
  317. {cellpy-2.1.3.post3 → cellpy-2.1.4}/_old_docs/_examples_and_tutorials/basic_interactions/01_getting_started_tutorial.md +0 -0
  318. {cellpy-2.1.3.post3 → cellpy-2.1.4}/_old_docs/_examples_and_tutorials/basic_interactions/02_read_cell_data.md +0 -0
  319. {cellpy-2.1.3.post3 → cellpy-2.1.4}/_old_docs/_examples_and_tutorials/basic_interactions/03_more_about_get.md +0 -0
  320. {cellpy-2.1.3.post3 → cellpy-2.1.4}/_old_docs/_examples_and_tutorials/basic_interactions/04_other_interactions.md +0 -0
  321. {cellpy-2.1.3.post3 → cellpy-2.1.4}/_old_docs/_examples_and_tutorials/basic_interactions/05_configuring.md +0 -0
  322. {cellpy-2.1.3.post3 → cellpy-2.1.4}/_old_docs/_examples_and_tutorials/basic_interactions/06_pandas.md +0 -0
  323. {cellpy-2.1.3.post3 → cellpy-2.1.4}/_old_docs/_examples_and_tutorials/basic_interactions/07_data_mining.md +0 -0
  324. {cellpy-2.1.3.post3 → cellpy-2.1.4}/_old_docs/_examples_and_tutorials/basic_interactions/08_the_cellpy_cmd.md +0 -0
  325. {cellpy-2.1.3.post3 → cellpy-2.1.4}/_old_docs/_examples_and_tutorials/basics.md +0 -0
  326. {cellpy-2.1.3.post3 → cellpy-2.1.4}/_old_docs/_examples_and_tutorials/examples.md +0 -0
  327. {cellpy-2.1.3.post3 → cellpy-2.1.4}/_old_docs/_examples_and_tutorials/index.md +0 -0
  328. {cellpy-2.1.3.post3 → cellpy-2.1.4}/_old_docs/_examples_and_tutorials/loaders/01_arbin.md +0 -0
  329. {cellpy-2.1.3.post3 → cellpy-2.1.4}/_old_docs/_examples_and_tutorials/loaders/02_maccor.md +0 -0
  330. {cellpy-2.1.3.post3 → cellpy-2.1.4}/_old_docs/_examples_and_tutorials/loaders/03_PEC.md +0 -0
  331. {cellpy-2.1.3.post3 → cellpy-2.1.4}/_old_docs/_examples_and_tutorials/loaders/04_Neware.md +0 -0
  332. {cellpy-2.1.3.post3 → cellpy-2.1.4}/_old_docs/_examples_and_tutorials/loaders/05_biologics.md +0 -0
  333. {cellpy-2.1.3.post3 → cellpy-2.1.4}/_old_docs/_examples_and_tutorials/loaders/06_custom.md +0 -0
  334. {cellpy-2.1.3.post3 → cellpy-2.1.4}/_old_docs/_examples_and_tutorials/loaders.md +0 -0
  335. {cellpy-2.1.3.post3 → cellpy-2.1.4}/_old_docs/_examples_and_tutorials/notebooks/images/templates_jupyterlab_001.png +0 -0
  336. {cellpy-2.1.3.post3 → cellpy-2.1.4}/_old_docs/_examples_and_tutorials/notebooks/images/templates_jupyterlab_002.png +0 -0
  337. {cellpy-2.1.3.post3 → cellpy-2.1.4}/_old_docs/_examples_and_tutorials/notebooks/tutorial_get_cap.ipynb +0 -0
  338. {cellpy-2.1.3.post3 → cellpy-2.1.4}/_old_docs/_examples_and_tutorials/notebooks/tutorial_simple_plot.ipynb +0 -0
  339. {cellpy-2.1.3.post3 → cellpy-2.1.4}/_old_docs/_examples_and_tutorials/notebooks/tutorial_templates.ipynb +0 -0
  340. {cellpy-2.1.3.post3 → cellpy-2.1.4}/_old_docs/_examples_and_tutorials/notebooks/tutorial_xxx-checkpoint.ipynb +0 -0
  341. {cellpy-2.1.3.post3 → cellpy-2.1.4}/_old_docs/_examples_and_tutorials/notebooks.md +0 -0
  342. {cellpy-2.1.3.post3 → cellpy-2.1.4}/_old_docs/_examples_and_tutorials/tips_and_tricks.md +0 -0
  343. {cellpy-2.1.3.post3 → cellpy-2.1.4}/_old_docs/_examples_and_tutorials/utils/batch.md +0 -0
  344. {cellpy-2.1.3.post3 → cellpy-2.1.4}/_old_docs/_examples_and_tutorials/utils/collectors.md +0 -0
  345. {cellpy-2.1.3.post3 → cellpy-2.1.4}/_old_docs/_examples_and_tutorials/utils/custom_file_loaders.md +0 -0
  346. {cellpy-2.1.3.post3 → cellpy-2.1.4}/_old_docs/_examples_and_tutorials/utils/easyplot.md +0 -0
  347. {cellpy-2.1.3.post3 → cellpy-2.1.4}/_old_docs/_examples_and_tutorials/utils/figures/tutorials_utils_plotting_fig1.png +0 -0
  348. {cellpy-2.1.3.post3 → cellpy-2.1.4}/_old_docs/_examples_and_tutorials/utils/figures/tutorials_utils_plotting_fig2.png +0 -0
  349. {cellpy-2.1.3.post3 → cellpy-2.1.4}/_old_docs/_examples_and_tutorials/utils/ica.md +0 -0
  350. {cellpy-2.1.3.post3 → cellpy-2.1.4}/_old_docs/_examples_and_tutorials/utils/plotting.md +0 -0
  351. {cellpy-2.1.3.post3 → cellpy-2.1.4}/_old_docs/_examples_and_tutorials/utils/templates.md +0 -0
  352. {cellpy-2.1.3.post3 → cellpy-2.1.4}/_old_docs/_examples_and_tutorials/utils/tut_ocv_rlx.md +0 -0
  353. {cellpy-2.1.3.post3 → cellpy-2.1.4}/_old_docs/_examples_and_tutorials/utils.md +0 -0
  354. {cellpy-2.1.3.post3 → cellpy-2.1.4}/_old_docs/_main_description/formats.md +0 -0
  355. {cellpy-2.1.3.post3 → cellpy-2.1.4}/_old_docs/_main_description/index.md +0 -0
  356. {cellpy-2.1.3.post3 → cellpy-2.1.4}/_old_docs/_main_description/installation.md +0 -0
  357. {cellpy-2.1.3.post3 → cellpy-2.1.4}/_old_docs/_main_description/usage.md +0 -0
  358. {cellpy-2.1.3.post3 → cellpy-2.1.4}/_old_docs/index.md +0 -0
  359. {cellpy-2.1.3.post3 → cellpy-2.1.4}/benchmarks/README.md +0 -0
  360. {cellpy-2.1.3.post3 → cellpy-2.1.4}/benchmarks/__init__.py +0 -0
  361. {cellpy-2.1.3.post3 → cellpy-2.1.4}/benchmarks/baselines/v1x_ubuntu_py313.json +0 -0
  362. {cellpy-2.1.3.post3 → cellpy-2.1.4}/benchmarks/check_baseline.py +0 -0
  363. {cellpy-2.1.3.post3 → cellpy-2.1.4}/benchmarks/conftest.py +0 -0
  364. {cellpy-2.1.3.post3 → cellpy-2.1.4}/benchmarks/paths.py +0 -0
  365. {cellpy-2.1.3.post3 → cellpy-2.1.4}/benchmarks/test_performance.py +0 -0
  366. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/__init__.py +0 -0
  367. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/_deprecation.py +0 -0
  368. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/_version.py +0 -0
  369. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/batch/__init__.py +0 -0
  370. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/batch/aggregate.py +0 -0
  371. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/batch/db.py +0 -0
  372. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/batch/facade.py +0 -0
  373. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/batch/layout.py +0 -0
  374. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/batch/outputs.py +0 -0
  375. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/batch/policy.py +0 -0
  376. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/batch/progress.py +0 -0
  377. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/batch/qc.py +0 -0
  378. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/batch/result.py +0 -0
  379. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/batch/runner.py +0 -0
  380. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/batch/store.py +0 -0
  381. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/cli.py +0 -0
  382. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/cli_ui.py +0 -0
  383. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/collect/__init__.py +0 -0
  384. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/collect/_summary_ops.py +0 -0
  385. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/collect/cells.py +0 -0
  386. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/collect/curves.py +0 -0
  387. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/collect/dva.py +0 -0
  388. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/collect/ica.py +0 -0
  389. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/collect/options.py +0 -0
  390. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/collect/summary.py +0 -0
  391. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/config/__init__.py +0 -0
  392. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/config/credentials.py +0 -0
  393. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/config/legacy.py +0 -0
  394. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/config/loader.py +0 -0
  395. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/config/migrate.py +0 -0
  396. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/config/models.py +0 -0
  397. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/config/reference.py +0 -0
  398. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/config/session.py +0 -0
  399. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/config/sources.py +0 -0
  400. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/config/types.py +0 -0
  401. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/exporters/__init__.py +0 -0
  402. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/exporters/bdf.py +0 -0
  403. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/exporters/tabular.py +0 -0
  404. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/filters/__init__.py +0 -0
  405. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/filters/cycles.py +0 -0
  406. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/filters/summary.py +0 -0
  407. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/ica.py +0 -0
  408. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/internals/__init__.py +0 -0
  409. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/internals/connections.py +0 -0
  410. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/internals/otherpath.py +0 -0
  411. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/internals/progress.py +0 -0
  412. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/libs/__init__.py +0 -0
  413. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/libs/apipkg/__init__.py +0 -0
  414. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/libs/apipkg/_alias_module.py +0 -0
  415. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/libs/apipkg/_importing.py +0 -0
  416. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/libs/apipkg/_module.py +0 -0
  417. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/libs/apipkg/_syncronized.py +0 -0
  418. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/libs/apipkg/_version.py +0 -0
  419. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/libs/apipkg/py.typed +0 -0
  420. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/libs/local_fastnda/LICENSE +0 -0
  421. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/libs/local_fastnda/__init__.py +0 -0
  422. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/libs/local_fastnda/btsda.py +0 -0
  423. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/libs/local_fastnda/cli.py +0 -0
  424. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/libs/local_fastnda/dicts.py +0 -0
  425. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/libs/local_fastnda/formats.py +0 -0
  426. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/libs/local_fastnda/main.py +0 -0
  427. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/libs/local_fastnda/nda.py +0 -0
  428. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/libs/local_fastnda/ndax.py +0 -0
  429. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/libs/local_fastnda/utils.py +0 -0
  430. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/libs/local_fastnda/version.py +0 -0
  431. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/log.py +0 -0
  432. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/logging.json +0 -0
  433. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/parameters/.cellpy_prms_default.conf +0 -0
  434. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/parameters/__init__.py +0 -0
  435. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/parameters/cell_schema.py +0 -0
  436. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/parameters/internal_settings.py +0 -0
  437. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/parameters/legacy/__init__.py +0 -0
  438. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/parameters/legacy/update_headers.py +0 -0
  439. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/parameters/prmreader.py +0 -0
  440. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/parameters/prms.py +0 -0
  441. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/plotting/__init__.py +0 -0
  442. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/plotting/backends/base.py +0 -0
  443. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/plotting/backends/plotly.py +0 -0
  444. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/plotting/context.py +0 -0
  445. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/plotting/cycle_legend.py +0 -0
  446. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/plotting/headers.py +0 -0
  447. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/plotting/prepare/__init__.py +0 -0
  448. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/plotting/prepare/curves.py +0 -0
  449. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/plotting/prepare/ica.py +0 -0
  450. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/plotting/prepare/raw.py +0 -0
  451. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/plotting/prepare/steps.py +0 -0
  452. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/plotting/prepare/summary.py +0 -0
  453. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/plotting/spec.py +0 -0
  454. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/plotting/theme.py +0 -0
  455. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/__init__.py +0 -0
  456. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/cellpy_file/__init__.py +0 -0
  457. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/cellpy_file/atomic.py +0 -0
  458. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/cellpy_file/dtype.py +0 -0
  459. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/cellpy_file/fids.py +0 -0
  460. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/cellpy_file/format.py +0 -0
  461. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/cellpy_file/keys.py +0 -0
  462. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/cellpy_file/legacy_read.py +0 -0
  463. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/cellpy_file/meta.py +0 -0
  464. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/cellpy_file/meta_archive.py +0 -0
  465. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/cellpy_file/read.py +0 -0
  466. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/cellpy_file/selectors.py +0 -0
  467. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/cellpy_file/translate.py +0 -0
  468. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/cellpy_file/v9.py +0 -0
  469. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/cellpy_file/write.py +0 -0
  470. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/dbreader.py +0 -0
  471. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/do.py +0 -0
  472. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/filefinder.py +0 -0
  473. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/instruments/SQL Table IDs.txt +0 -0
  474. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/instruments/__init__.py +0 -0
  475. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/instruments/_aux_map.py +0 -0
  476. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/instruments/arbin_sql.py +0 -0
  477. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/instruments/arbin_sql_7.py +0 -0
  478. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/instruments/arbin_sql_config.py +0 -0
  479. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/instruments/arbin_sql_csv.py +0 -0
  480. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/instruments/arbin_sql_h5.py +0 -0
  481. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/instruments/arbin_sql_xlsx.py +0 -0
  482. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/instruments/base.py +0 -0
  483. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/instruments/batmo_bdf.py +0 -0
  484. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/instruments/biologics_mpr.py +0 -0
  485. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/instruments/config_declarations.py +0 -0
  486. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/instruments/configurations/__init__.py +0 -0
  487. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/instruments/configurations/batmo_bdf_bdf.py +0 -0
  488. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/instruments/configurations/maccor_txt_one.py +0 -0
  489. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/instruments/configurations/maccor_txt_three.py +0 -0
  490. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/instruments/configurations/maccor_txt_two.py +0 -0
  491. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/instruments/configurations/maccor_txt_zero.py +0 -0
  492. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/instruments/configurations/neware_txt_one.py +0 -0
  493. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/instruments/configurations/neware_txt_two.py +0 -0
  494. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/instruments/configurations/neware_txt_zero.py +0 -0
  495. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/instruments/contract.py +0 -0
  496. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/instruments/custom.py +0 -0
  497. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/instruments/declarations.py +0 -0
  498. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/instruments/ext_nda_reader.py +0 -0
  499. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/instruments/hooks.py +0 -0
  500. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/instruments/loader_specific_modules/__init__.py +0 -0
  501. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/instruments/loader_specific_modules/biologic_file_format.py +0 -0
  502. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/instruments/local_instrument.py +0 -0
  503. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/instruments/maccor_txt.py +0 -0
  504. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/instruments/maccor_txt_native.py +0 -0
  505. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/instruments/neware_nda.py +0 -0
  506. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/instruments/neware_txt.py +0 -0
  507. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/instruments/neware_xlsx.py +0 -0
  508. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/instruments/pec_csv.py +0 -0
  509. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/instruments/processors/__init__.py +0 -0
  510. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/instruments/processors/post_processors.py +0 -0
  511. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/instruments/processors/pre_processors.py +0 -0
  512. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/instruments/registry.py +0 -0
  513. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/instruments/testing.py +0 -0
  514. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/journal_layer.py +0 -0
  515. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/json_dbreader.py +0 -0
  516. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/merger.py +0 -0
  517. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/meta_resolver.py +0 -0
  518. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/native_core.py +0 -0
  519. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/provenance.py +0 -0
  520. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/slicing.py +0 -0
  521. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/sql_dbreader.py +0 -0
  522. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/readers/test_meta.py +0 -0
  523. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/units.py +0 -0
  524. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/utils/__init__.py +0 -0
  525. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/utils/batch.py +0 -0
  526. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/utils/collectors.py +0 -0
  527. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/utils/diagnostics.py +0 -0
  528. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/utils/example_data.py +0 -0
  529. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/utils/helpers.py +0 -0
  530. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/utils/ica.py +0 -0
  531. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/utils/live.py +0 -0
  532. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/utils/processor.py +0 -0
  533. {cellpy-2.1.3.post3 → cellpy-2.1.4}/cellpy/utils/template_registry.py +0 -0
  534. {cellpy-2.1.3.post3 → cellpy-2.1.4}/dev/backfill_notebook_plotly_pngs.py +0 -0
  535. {cellpy-2.1.3.post3 → cellpy-2.1.4}/dev/conda-recipes/README.md +0 -0
  536. {cellpy-2.1.3.post3 → cellpy-2.1.4}/dev/conda-recipes/cellpy/meta.yaml +0 -0
  537. {cellpy-2.1.3.post3 → cellpy-2.1.4}/dev/conda-recipes/cellpycore/meta.yaml +0 -0
  538. {cellpy-2.1.3.post3 → cellpy-2.1.4}/dev/make_bad_fixtures.py +0 -0
  539. {cellpy-2.1.3.post3 → cellpy-2.1.4}/dev/plot_preview_common.py +0 -0
  540. {cellpy-2.1.3.post3 → cellpy-2.1.4}/dev/preview_curve_plots.py +0 -0
  541. {cellpy-2.1.3.post3 → cellpy-2.1.4}/dev/preview_ica_plots.py +0 -0
  542. {cellpy-2.1.3.post3 → cellpy-2.1.4}/dev/preview_plots.py +0 -0
  543. {cellpy-2.1.3.post3 → cellpy-2.1.4}/dev/preview_summary_plots.py +0 -0
  544. {cellpy-2.1.3.post3 → cellpy-2.1.4}/dev/regenerate_goldens.py +0 -0
  545. {cellpy-2.1.3.post3 → cellpy-2.1.4}/dev/render_example_notebooks.py +0 -0
  546. {cellpy-2.1.3.post3 → cellpy-2.1.4}/dev/snapshot_cli_surface.py +0 -0
  547. {cellpy-2.1.3.post3 → cellpy-2.1.4}/dev/snapshot_figure_specs.py +0 -0
  548. {cellpy-2.1.3.post3 → cellpy-2.1.4}/dev/speed-test-01/.gitignore +0 -0
  549. {cellpy-2.1.3.post3 → cellpy-2.1.4}/dev/speed-test-01/NOTES.md +0 -0
  550. {cellpy-2.1.3.post3 → cellpy-2.1.4}/dev/speed-test-01/README.md +0 -0
  551. {cellpy-2.1.3.post3 → cellpy-2.1.4}/dev/speed-test-01/_common.py +0 -0
  552. {cellpy-2.1.3.post3 → cellpy-2.1.4}/dev/speed-test-01/summarize_importtime.py +0 -0
  553. {cellpy-2.1.3.post3 → cellpy-2.1.4}/dev/speed-test-01/time_arbin_h5.py +0 -0
  554. {cellpy-2.1.3.post3 → cellpy-2.1.4}/dev/speed-test-01/time_cellpy_io.py +0 -0
  555. {cellpy-2.1.3.post3 → cellpy-2.1.4}/dev/speed-test-01/time_executors.py +0 -0
  556. {cellpy-2.1.3.post3 → cellpy-2.1.4}/dev/speed-test-01/time_filefinder.py +0 -0
  557. {cellpy-2.1.3.post3 → cellpy-2.1.4}/dev/speed-test-01/time_imports.py +0 -0
  558. {cellpy-2.1.3.post3 → cellpy-2.1.4}/dev/speed-test-01/time_one_cell.py +0 -0
  559. {cellpy-2.1.3.post3 → cellpy-2.1.4}/dev/speed-test-01/time_otherpath.py +0 -0
  560. {cellpy-2.1.3.post3 → cellpy-2.1.4}/docker/Dockerfile.build-test +0 -0
  561. {cellpy-2.1.3.post3 → cellpy-2.1.4}/docker/sftp-test/README.md +0 -0
  562. {cellpy-2.1.3.post3 → cellpy-2.1.4}/docker/sftp-test/compose.yml +0 -0
  563. {cellpy-2.1.3.post3 → cellpy-2.1.4}/docker/sftp-test/data/hello.txt +0 -0
  564. {cellpy-2.1.3.post3 → cellpy-2.1.4}/docker/sftp-test/data/nested/sample.txt +0 -0
  565. {cellpy-2.1.3.post3 → cellpy-2.1.4}/environment.yml +0 -0
  566. {cellpy-2.1.3.post3 → cellpy-2.1.4}/environment_dev.yml +0 -0
  567. {cellpy-2.1.3.post3 → cellpy-2.1.4}/github_actions_environment.yml +0 -0
  568. {cellpy-2.1.3.post3 → cellpy-2.1.4}/noxfile.py +0 -0
  569. {cellpy-2.1.3.post3 → cellpy-2.1.4}/paper/.github/workflows/draft-pdf.yml +0 -0
  570. {cellpy-2.1.3.post3 → cellpy-2.1.4}/paper/.gitignore +0 -0
  571. {cellpy-2.1.3.post3 → cellpy-2.1.4}/paper/Figures/Cellpy-Utils.jpg +0 -0
  572. {cellpy-2.1.3.post3 → cellpy-2.1.4}/paper/Figures/CellpyCell.jpg +0 -0
  573. {cellpy-2.1.3.post3 → cellpy-2.1.4}/paper/Figures/CellpyData.jpg +0 -0
  574. {cellpy-2.1.3.post3 → cellpy-2.1.4}/paper/paper.bib +0 -0
  575. {cellpy-2.1.3.post3 → cellpy-2.1.4}/paper/paper.md +0 -0
  576. {cellpy-2.1.3.post3 → cellpy-2.1.4}/scripts/build_test.sh +0 -0
  577. {cellpy-2.1.3.post3 → cellpy-2.1.4}/scripts/dev_sync.sh +0 -0
  578. {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,13 @@
1
+ # Issue #1000 status
2
+
3
+ - [x] Done
4
+
5
+ ## What's done
6
+
7
+ - Journal JSON `version` key; missing → 1; writes `JOURNAL_FORMAT_VERSION`.
8
+ - Newer file version warns and still loads.
9
+ - Tests, docs, HISTORY.
10
+
11
+ ## Remaining work
12
+
13
+ - 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.