cellpy 2.0.0a2__tar.gz → 2.0.0a3__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 (399) hide show
  1. cellpy-2.0.0a3/.issueflows/03-solved-issues/issue537_original.md +28 -0
  2. cellpy-2.0.0a3/.issueflows/03-solved-issues/issue537_plan.md +38 -0
  3. cellpy-2.0.0a3/.issueflows/03-solved-issues/issue537_status.md +27 -0
  4. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/DEPRECATIONS.md +0 -1
  5. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/HISTORY.md +26 -0
  6. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/PKG-INFO +1 -1
  7. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/_deprecation.py +2 -6
  8. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/filters/summary.py +9 -1
  9. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/cellreader.py +4 -15
  10. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/utils/batch_tools/batch_plotters.py +2 -2
  11. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/utils/helpers.py +36 -34
  12. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/utils/ocv_rlx.py +6 -4
  13. cellpy-2.0.0a2/cellpy/utils/easyplot.py +0 -1945
  14. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.aliases +0 -0
  15. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.cursor/commands/build.md +0 -0
  16. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.cursor/commands/create-original-issue-file.md +0 -0
  17. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.cursor/rules/cellpy-core-migration.mdc +0 -0
  18. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.cursor/rules/cellpy-workspace.mdc +0 -0
  19. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.cursor/rules/graphify.mdc +0 -0
  20. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.cursor/rules/issueflow-rules.mdc +0 -0
  21. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.cursor/rules/kiss.mdc +0 -0
  22. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.cursor/rules/this-project.mdc +0 -0
  23. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.cursor/skills/caveman/SKILL.md +0 -0
  24. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.cursor/skills/grill-me/SKILL.md +0 -0
  25. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.cursor/skills/iflow/SKILL.md +0 -0
  26. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.cursor/skills/iflow-archive/SKILL.md +0 -0
  27. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.cursor/skills/iflow-cleanup/SKILL.md +0 -0
  28. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.cursor/skills/iflow-close/SKILL.md +0 -0
  29. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.cursor/skills/iflow-comments/SKILL.md +0 -0
  30. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.cursor/skills/iflow-cycle/SKILL.md +0 -0
  31. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.cursor/skills/iflow-epic/SKILL.md +0 -0
  32. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.cursor/skills/iflow-fix/SKILL.md +0 -0
  33. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.cursor/skills/iflow-graphify/SKILL.md +0 -0
  34. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.cursor/skills/iflow-history-update/SKILL.md +0 -0
  35. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.cursor/skills/iflow-init/SKILL.md +0 -0
  36. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.cursor/skills/iflow-pause/SKILL.md +0 -0
  37. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.cursor/skills/iflow-pick/SKILL.md +0 -0
  38. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.cursor/skills/iflow-plan/SKILL.md +0 -0
  39. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.cursor/skills/iflow-start/SKILL.md +0 -0
  40. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.cursor/skills/iflow-status/SKILL.md +0 -0
  41. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.cursor/skills/iflow-version-bump/SKILL.md +0 -0
  42. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.cursor/skills/iflow-yolo/SKILL.md +0 -0
  43. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.cursor/skills/issueflow-build/SKILL.md +0 -0
  44. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.dockerignore +0 -0
  45. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.editorconfig +0 -0
  46. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.env_example +0 -0
  47. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.gitattributes +0 -0
  48. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.gitignore +0 -0
  49. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/00-tools/.gitkeep +0 -0
  50. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/00-tools/README.md +0 -0
  51. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/00-tools/migrate_prms_calls.py +0 -0
  52. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/00-tools/scan_hardcoded_headers.py +0 -0
  53. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/00-tools/scan_member_usage.py +0 -0
  54. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/01-current-issues/.gitkeep +0 -0
  55. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/02-partly-solved-issues/.gitkeep +0 -0
  56. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/02-partly-solved-issues/issue453_original.md +0 -0
  57. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/02-partly-solved-issues/issue453_plan.md +0 -0
  58. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/02-partly-solved-issues/issue453_status.md +0 -0
  59. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/02-partly-solved-issues/issue459_original.md +0 -0
  60. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/.gitkeep +0 -0
  61. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/2026-07-09_archived_issues.md +0 -0
  62. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue372_original.md +0 -0
  63. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue372_plan.md +0 -0
  64. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue372_status.md +0 -0
  65. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue375_original.md +0 -0
  66. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue375_plan.md +0 -0
  67. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue375_status.md +0 -0
  68. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue381_original.md +0 -0
  69. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue381_plan.md +0 -0
  70. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue381_status.md +0 -0
  71. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue391_original.md +0 -0
  72. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue391_plan.md +0 -0
  73. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue391_status.md +0 -0
  74. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue407_original.md +0 -0
  75. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue407_plan.md +0 -0
  76. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue407_status.md +0 -0
  77. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue415_original.md +0 -0
  78. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue415_plan.md +0 -0
  79. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue415_status.md +0 -0
  80. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue425_original.md +0 -0
  81. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue425_status.md +0 -0
  82. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue428_original.md +0 -0
  83. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue428_plan.md +0 -0
  84. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue428_status.md +0 -0
  85. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue429_original.md +0 -0
  86. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue429_plan.md +0 -0
  87. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue429_status.md +0 -0
  88. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue430_original.md +0 -0
  89. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue430_plan.md +0 -0
  90. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue430_status.md +0 -0
  91. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue431_original.md +0 -0
  92. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue431_plan.md +0 -0
  93. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue431_status.md +0 -0
  94. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue432_original.md +0 -0
  95. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue432_plan.md +0 -0
  96. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue432_status.md +0 -0
  97. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue433_original.md +0 -0
  98. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue433_plan.md +0 -0
  99. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue433_status.md +0 -0
  100. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue434_original.md +0 -0
  101. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue434_plan.md +0 -0
  102. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue434_status.md +0 -0
  103. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue435_original.md +0 -0
  104. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue435_plan.md +0 -0
  105. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue435_status.md +0 -0
  106. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue436_original.md +0 -0
  107. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue436_plan.md +0 -0
  108. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue436_status.md +0 -0
  109. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue437_original.md +0 -0
  110. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue437_plan.md +0 -0
  111. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue437_status.md +0 -0
  112. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue438_original.md +0 -0
  113. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue438_plan.md +0 -0
  114. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue438_status.md +0 -0
  115. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue439_original.md +0 -0
  116. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue439_plan.md +0 -0
  117. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue439_status.md +0 -0
  118. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue446_original.md +0 -0
  119. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue446_plan.md +0 -0
  120. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue446_status.md +0 -0
  121. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue447_original.md +0 -0
  122. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue447_plan.md +0 -0
  123. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue447_status.md +0 -0
  124. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue449_original.md +0 -0
  125. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue449_plan.md +0 -0
  126. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue449_status.md +0 -0
  127. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue450_original.md +0 -0
  128. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue450_plan.md +0 -0
  129. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue450_status.md +0 -0
  130. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue451_original.md +0 -0
  131. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue451_plan.md +0 -0
  132. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue451_status.md +0 -0
  133. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue452_original.md +0 -0
  134. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue452_plan.md +0 -0
  135. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue452_status.md +0 -0
  136. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue454_original.md +0 -0
  137. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue454_plan.md +0 -0
  138. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue454_status.md +0 -0
  139. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue455_original.md +0 -0
  140. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue455_plan.md +0 -0
  141. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue455_status.md +0 -0
  142. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue457_original.md +0 -0
  143. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue457_plan.md +0 -0
  144. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue457_status.md +0 -0
  145. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue458_original.md +0 -0
  146. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue458_plan.md +0 -0
  147. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue458_status.md +0 -0
  148. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue465_original.md +0 -0
  149. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue465_plan.md +0 -0
  150. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue465_status.md +0 -0
  151. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue466_original.md +0 -0
  152. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue466_plan.md +0 -0
  153. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue466_status.md +0 -0
  154. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue467_original.md +0 -0
  155. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue476_original.md +0 -0
  156. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue476_plan.md +0 -0
  157. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue476_status.md +0 -0
  158. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue479_original.md +0 -0
  159. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue479_plan.md +0 -0
  160. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue479_status.md +0 -0
  161. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue491_original.md +0 -0
  162. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue491_status.md +0 -0
  163. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue510_original.md +0 -0
  164. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue510_plan.md +0 -0
  165. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue510_status.md +0 -0
  166. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/04-designs-and-guides/.gitkeep +0 -0
  167. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/04-designs-and-guides/bdf-export.md +0 -0
  168. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/04-designs-and-guides/build-and-versioning.md +0 -0
  169. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/04-designs-and-guides/cellpy-v2-architecture.excalidraw +0 -0
  170. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/04-designs-and-guides/cellpy-v2-branching.md +0 -0
  171. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/04-designs-and-guides/cellpy-v2-epic.md +0 -0
  172. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/04-designs-and-guides/cellpy-workspace-repos.md +0 -0
  173. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/04-designs-and-guides/cellpycell-di-restructuring.md +0 -0
  174. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/04-designs-and-guides/ci-tiers.md +0 -0
  175. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/04-designs-and-guides/filters-and-plot-filtering.md +0 -0
  176. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/04-designs-and-guides/otherpath-upath.md +0 -0
  177. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/04-designs-and-guides/release-procedure.md +0 -0
  178. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/04-designs-and-guides/testing-and-coverage.md +0 -0
  179. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/04-designs-and-guides/this-project.md +0 -0
  180. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/04-designs-and-guides/v2-cellpycore-pin-gate.md +0 -0
  181. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/05-epics/.gitkeep +0 -0
  182. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.readthedocs.yaml +0 -0
  183. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/AGENTS.md +0 -0
  184. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/AUTHORS.md +0 -0
  185. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/CODE_OF_CONDUCT.md +0 -0
  186. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/CONTRIBUTING.md +0 -0
  187. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/LICENSE.md +0 -0
  188. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/README.md +0 -0
  189. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/_old_docs/_developers_guide/dev_cellpy_data_structure.md +0 -0
  190. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/_old_docs/_developers_guide/dev_cellpy_folder_structure.md +0 -0
  191. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/_old_docs/_developers_guide/dev_cellpy_packaging_pypi.md +0 -0
  192. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/_old_docs/_developers_guide/dev_cellpy_setup.md +0 -0
  193. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/_old_docs/_developers_guide/dev_conda_package.md +0 -0
  194. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/_old_docs/_developers_guide/dev_docs.md +0 -0
  195. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/_old_docs/_developers_guide/dev_loaders_and_instruments.md +0 -0
  196. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/_old_docs/_developers_guide/dev_various.md +0 -0
  197. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/_old_docs/_developers_guide/index.md +0 -0
  198. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/_old_docs/_examples_and_tutorials/basic_interactions/01_getting_started_tutorial.md +0 -0
  199. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/_old_docs/_examples_and_tutorials/basic_interactions/02_read_cell_data.md +0 -0
  200. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/_old_docs/_examples_and_tutorials/basic_interactions/03_more_about_get.md +0 -0
  201. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/_old_docs/_examples_and_tutorials/basic_interactions/04_other_interactions.md +0 -0
  202. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/_old_docs/_examples_and_tutorials/basic_interactions/05_configuring.md +0 -0
  203. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/_old_docs/_examples_and_tutorials/basic_interactions/06_pandas.md +0 -0
  204. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/_old_docs/_examples_and_tutorials/basic_interactions/07_data_mining.md +0 -0
  205. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/_old_docs/_examples_and_tutorials/basic_interactions/08_the_cellpy_cmd.md +0 -0
  206. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/_old_docs/_examples_and_tutorials/basics.md +0 -0
  207. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/_old_docs/_examples_and_tutorials/examples.md +0 -0
  208. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/_old_docs/_examples_and_tutorials/index.md +0 -0
  209. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/_old_docs/_examples_and_tutorials/loaders/01_arbin.md +0 -0
  210. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/_old_docs/_examples_and_tutorials/loaders/02_maccor.md +0 -0
  211. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/_old_docs/_examples_and_tutorials/loaders/03_PEC.md +0 -0
  212. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/_old_docs/_examples_and_tutorials/loaders/04_Neware.md +0 -0
  213. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/_old_docs/_examples_and_tutorials/loaders/05_biologics.md +0 -0
  214. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/_old_docs/_examples_and_tutorials/loaders/06_custom.md +0 -0
  215. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/_old_docs/_examples_and_tutorials/loaders.md +0 -0
  216. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/_old_docs/_examples_and_tutorials/notebooks/images/templates_jupyterlab_001.png +0 -0
  217. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/_old_docs/_examples_and_tutorials/notebooks/images/templates_jupyterlab_002.png +0 -0
  218. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/_old_docs/_examples_and_tutorials/notebooks/tutorial_get_cap.ipynb +0 -0
  219. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/_old_docs/_examples_and_tutorials/notebooks/tutorial_simple_plot.ipynb +0 -0
  220. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/_old_docs/_examples_and_tutorials/notebooks/tutorial_templates.ipynb +0 -0
  221. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/_old_docs/_examples_and_tutorials/notebooks/tutorial_xxx-checkpoint.ipynb +0 -0
  222. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/_old_docs/_examples_and_tutorials/notebooks.md +0 -0
  223. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/_old_docs/_examples_and_tutorials/tips_and_tricks.md +0 -0
  224. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/_old_docs/_examples_and_tutorials/utils/batch.md +0 -0
  225. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/_old_docs/_examples_and_tutorials/utils/collectors.md +0 -0
  226. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/_old_docs/_examples_and_tutorials/utils/custom_file_loaders.md +0 -0
  227. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/_old_docs/_examples_and_tutorials/utils/easyplot.md +0 -0
  228. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/_old_docs/_examples_and_tutorials/utils/figures/tutorials_utils_plotting_fig1.png +0 -0
  229. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/_old_docs/_examples_and_tutorials/utils/figures/tutorials_utils_plotting_fig2.png +0 -0
  230. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/_old_docs/_examples_and_tutorials/utils/ica.md +0 -0
  231. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/_old_docs/_examples_and_tutorials/utils/plotting.md +0 -0
  232. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/_old_docs/_examples_and_tutorials/utils/templates.md +0 -0
  233. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/_old_docs/_examples_and_tutorials/utils/tut_ocv_rlx.md +0 -0
  234. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/_old_docs/_examples_and_tutorials/utils.md +0 -0
  235. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/_old_docs/_main_description/formats.md +0 -0
  236. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/_old_docs/_main_description/index.md +0 -0
  237. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/_old_docs/_main_description/installation.md +0 -0
  238. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/_old_docs/_main_description/usage.md +0 -0
  239. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/_old_docs/index.md +0 -0
  240. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/benchmarks/README.md +0 -0
  241. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/benchmarks/__init__.py +0 -0
  242. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/benchmarks/baselines/v1x_ubuntu_py313.json +0 -0
  243. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/benchmarks/check_baseline.py +0 -0
  244. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/benchmarks/conftest.py +0 -0
  245. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/benchmarks/paths.py +0 -0
  246. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/benchmarks/test_performance.py +0 -0
  247. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/__init__.py +0 -0
  248. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/_version.py +0 -0
  249. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/cli.py +0 -0
  250. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/config/__init__.py +0 -0
  251. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/config/legacy.py +0 -0
  252. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/config/loader.py +0 -0
  253. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/config/migrate.py +0 -0
  254. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/config/models.py +0 -0
  255. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/config/session.py +0 -0
  256. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/config/sources.py +0 -0
  257. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/config/types.py +0 -0
  258. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/exceptions.py +0 -0
  259. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/exporters/__init__.py +0 -0
  260. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/exporters/bdf.py +0 -0
  261. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/exporters/tabular.py +0 -0
  262. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/filters/__init__.py +0 -0
  263. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/filters/cycles.py +0 -0
  264. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/internals/__init__.py +0 -0
  265. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/internals/connections.py +0 -0
  266. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/internals/otherpath.py +0 -0
  267. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/libs/__init__.py +0 -0
  268. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/libs/apipkg/__init__.py +0 -0
  269. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/libs/apipkg/_alias_module.py +0 -0
  270. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/libs/apipkg/_importing.py +0 -0
  271. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/libs/apipkg/_module.py +0 -0
  272. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/libs/apipkg/_syncronized.py +0 -0
  273. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/libs/apipkg/_version.py +0 -0
  274. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/libs/apipkg/py.typed +0 -0
  275. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/libs/local_fastnda/LICENSE +0 -0
  276. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/libs/local_fastnda/__init__.py +0 -0
  277. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/libs/local_fastnda/btsda.py +0 -0
  278. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/libs/local_fastnda/cli.py +0 -0
  279. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/libs/local_fastnda/dicts.py +0 -0
  280. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/libs/local_fastnda/formats.py +0 -0
  281. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/libs/local_fastnda/main.py +0 -0
  282. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/libs/local_fastnda/nda.py +0 -0
  283. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/libs/local_fastnda/ndax.py +0 -0
  284. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/libs/local_fastnda/utils.py +0 -0
  285. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/libs/local_fastnda/version.py +0 -0
  286. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/log.py +0 -0
  287. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/logging.json +0 -0
  288. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/parameters/.cellpy_prms_default.conf +0 -0
  289. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/parameters/__init__.py +0 -0
  290. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/parameters/_shim.py +0 -0
  291. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/parameters/internal_settings.py +0 -0
  292. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/parameters/legacy/__init__.py +0 -0
  293. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/parameters/legacy/update_headers.py +0 -0
  294. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/parameters/prmreader.py +0 -0
  295. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/parameters/prms.py +0 -0
  296. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/__init__.py +0 -0
  297. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/capacity_curves.py +0 -0
  298. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/cellpy_file/__init__.py +0 -0
  299. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/cellpy_file/dtype.py +0 -0
  300. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/cellpy_file/fids.py +0 -0
  301. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/cellpy_file/format.py +0 -0
  302. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/cellpy_file/keys.py +0 -0
  303. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/cellpy_file/legacy_read.py +0 -0
  304. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/cellpy_file/meta.py +0 -0
  305. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/cellpy_file/meta_archive.py +0 -0
  306. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/cellpy_file/read.py +0 -0
  307. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/cellpy_file/selectors.py +0 -0
  308. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/cellpy_file/translate.py +0 -0
  309. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/cellpy_file/v9.py +0 -0
  310. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/cellpy_file/write.py +0 -0
  311. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/data_structures.py +0 -0
  312. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/dbreader.py +0 -0
  313. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/do.py +0 -0
  314. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/filefinder.py +0 -0
  315. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/instruments/SQL Table IDs.txt +0 -0
  316. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/instruments/__init__.py +0 -0
  317. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/instruments/arbin_res.py +0 -0
  318. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/instruments/arbin_sql.py +0 -0
  319. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/instruments/arbin_sql_7.py +0 -0
  320. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/instruments/arbin_sql_config.py +0 -0
  321. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/instruments/arbin_sql_csv.py +0 -0
  322. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/instruments/arbin_sql_h5.py +0 -0
  323. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/instruments/arbin_sql_xlsx.py +0 -0
  324. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/instruments/base.py +0 -0
  325. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/instruments/batmo_bdf.py +0 -0
  326. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/instruments/biologics_mpr.py +0 -0
  327. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/instruments/configurations/__init__.py +0 -0
  328. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/instruments/configurations/batmo_bdf_bdf.py +0 -0
  329. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/instruments/configurations/maccor_txt_one.py +0 -0
  330. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/instruments/configurations/maccor_txt_three.py +0 -0
  331. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/instruments/configurations/maccor_txt_two.py +0 -0
  332. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/instruments/configurations/maccor_txt_zero.py +0 -0
  333. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/instruments/configurations/neware_txt_one.py +0 -0
  334. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/instruments/configurations/neware_txt_two.py +0 -0
  335. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/instruments/configurations/neware_txt_zero.py +0 -0
  336. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/instruments/custom.py +0 -0
  337. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/instruments/ext_nda_reader.py +0 -0
  338. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/instruments/loader_specific_modules/__init__.py +0 -0
  339. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/instruments/loader_specific_modules/biologic_file_format.py +0 -0
  340. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/instruments/local_instrument.py +0 -0
  341. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/instruments/maccor_txt.py +0 -0
  342. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/instruments/neware_nda.py +0 -0
  343. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/instruments/neware_txt.py +0 -0
  344. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/instruments/neware_xlsx.py +0 -0
  345. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/instruments/pec_csv.py +0 -0
  346. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/instruments/processors/__init__.py +0 -0
  347. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/instruments/processors/post_processors.py +0 -0
  348. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/instruments/processors/pre_processors.py +0 -0
  349. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/json_dbreader.py +0 -0
  350. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/merger.py +0 -0
  351. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/native_core.py +0 -0
  352. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/slicing.py +0 -0
  353. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/sql_dbreader.py +0 -0
  354. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/test_meta.py +0 -0
  355. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/utils/__init__.py +0 -0
  356. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/utils/batch.py +0 -0
  357. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/utils/batch_tools/__init__.py +0 -0
  358. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/utils/batch_tools/batch_analyzers.py +0 -0
  359. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/utils/batch_tools/batch_core.py +0 -0
  360. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/utils/batch_tools/batch_experiments.py +0 -0
  361. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/utils/batch_tools/batch_exporters.py +0 -0
  362. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/utils/batch_tools/batch_helpers.py +0 -0
  363. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/utils/batch_tools/batch_journals.py +0 -0
  364. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/utils/batch_tools/batch_reporters.py +0 -0
  365. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/utils/batch_tools/dumpers.py +0 -0
  366. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/utils/batch_tools/engines.py +0 -0
  367. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/utils/batch_tools/sqlite_from_excel_db.py +0 -0
  368. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/utils/collectors.py +0 -0
  369. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/utils/diagnostics.py +0 -0
  370. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/utils/example_data.py +0 -0
  371. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/utils/ica.py +0 -0
  372. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/utils/live.py +0 -0
  373. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/utils/plotutils.py +0 -0
  374. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/utils/processor.py +0 -0
  375. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/utils/template_registry.py +0 -0
  376. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/dev/conda-recipes/README.md +0 -0
  377. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/dev/conda-recipes/cellpy/meta.yaml +0 -0
  378. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/dev/conda-recipes/cellpycore/meta.yaml +0 -0
  379. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/dev/regenerate_goldens.py +0 -0
  380. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/docker/Dockerfile.build-test +0 -0
  381. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/docker/sftp-test/README.md +0 -0
  382. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/docker/sftp-test/compose.yml +0 -0
  383. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/docker/sftp-test/data/hello.txt +0 -0
  384. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/docker/sftp-test/data/nested/sample.txt +0 -0
  385. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/environment.yml +0 -0
  386. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/environment_dev.yml +0 -0
  387. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/github_actions_environment.yml +0 -0
  388. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/noxfile.py +0 -0
  389. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/paper/.github/workflows/draft-pdf.yml +0 -0
  390. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/paper/.gitignore +0 -0
  391. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/paper/Figures/Cellpy-Utils.jpg +0 -0
  392. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/paper/Figures/CellpyCell.jpg +0 -0
  393. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/paper/Figures/CellpyData.jpg +0 -0
  394. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/paper/paper.bib +0 -0
  395. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/paper/paper.md +0 -0
  396. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/pyproject.toml +0 -0
  397. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/scripts/build_test.sh +0 -0
  398. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/scripts/dev_sync.sh +0 -0
  399. {cellpy-2.0.0a2 → cellpy-2.0.0a3}/uv.lock +0 -0
@@ -0,0 +1,28 @@
1
+ # Issue #537: v2 pre-flip: replace hardcoded journal-page column literals with HeadersJournal
2
+
3
+ Source: https://github.com/jepegit/cellpy/issues/537
4
+
5
+ ## Original issue text
6
+
7
+ ## Context
8
+
9
+ Phase-3 flip prerequisite (native-headers plan Phase 0, item 2; hardcoded-column-headers-report §8 priority 1). Audited 2026-07-17 with `.issueflows/00-tools/scan_hardcoded_headers.py`; remaining `HeadersJournal`-family findings:
10
+
11
+ | File | Findings (all families) |
12
+ |---|---|
13
+ | `cellpy/utils/batch_tools/batch_plotters.py` | 32 |
14
+ | `cellpy/utils/helpers.py` | 34 (journal subset only in this issue) |
15
+ | `cellpy/utils/collectors.py` | 16 (journal subset) |
16
+ | `cellpy/utils/batch_tools/batch_journals.py` | 1 |
17
+ | `cellpy/utils/batch.py` | 0 — already clean, keep it that way |
18
+
19
+ ## Work
20
+
21
+ Mechanical 1:1: each literal flagged as `HeadersJournal` by the scan tool becomes an attribute access on the already-imported `hdr_journal` / `get_headers_journal()`. No behavior change. Leave non-journal findings in the same files for the sibling issue (steps/raw/summary literals).
22
+
23
+ ## Acceptance
24
+
25
+ - [ ] Scan tool reports **zero `HeadersJournal` findings** for the files above
26
+ - [ ] Full suite green (behavior unchanged — this is a pure rename-to-lookup)
27
+
28
+ 🤖 Generated with [Claude Code](https://claude.com/claude-code)
@@ -0,0 +1,38 @@
1
+ # Issue #537 plan — journal-page column literals → HeadersJournal
2
+
3
+ ## Goal
4
+
5
+ Remove the hard-coded journal column-name string literals flagged by
6
+ `.issueflows/00-tools/scan_hardcoded_headers.py` as `HeadersJournal`, so a
7
+ later header rename touches the header class only (native-headers Phase-0
8
+ prerequisite).
9
+
10
+ ## Scope (verified with the scan tool, 2026-07-17)
11
+
12
+ Only **6 findings, on 3 lines** — all are string-keyed subscripts into the
13
+ already-imported `hdr_journal` object (the §6 "semi-sanctioned" pattern):
14
+
15
+ - `cellpy/utils/batch_tools/batch_plotters.py:53` — `hdr_journal["mass"]`,
16
+ `["loading"]`, `["label"]`
17
+ - `cellpy/utils/batch_tools/batch_plotters.py:76` — `hdr_journal["group"]`,
18
+ `["sub_group"]`
19
+ - `cellpy/utils/helpers.py:278` — `hdr_journal["loading"]`
20
+
21
+ Non-journal (raw/steps/summary) literals in the same files are **out of
22
+ scope** — they belong to #538.
23
+
24
+ ## Approach
25
+
26
+ Mechanical `hdr_journal["<name>"]` → `hdr_journal.<name>`. Verified all five
27
+ attribute values equal their subscript values (`HeadersJournal` is a dataclass
28
+ exposing both), so behavior is byte-identical.
29
+
30
+ ## Files to touch
31
+
32
+ - `cellpy/utils/batch_tools/batch_plotters.py`
33
+ - `cellpy/utils/helpers.py`
34
+
35
+ ## Test strategy
36
+
37
+ Behavior-preserving rename-to-lookup; the full suite is the oracle. Confirm
38
+ the scan tool reports **zero `HeadersJournal` findings** for both files after.
@@ -0,0 +1,27 @@
1
+ # Issue #537 status — journal-page column literals → HeadersJournal
2
+
3
+ - [x] Done
4
+
5
+ ## Outcome
6
+
7
+ All 6 `HeadersJournal` scan findings removed (3 lines):
8
+
9
+ - `cellpy/utils/batch_tools/batch_plotters.py` — `hdr_journal["mass"|"loading"|"label"]`
10
+ and `["group"|"sub_group"]` → attribute access.
11
+ - `cellpy/utils/helpers.py` — `hdr_journal["loading"]` → `hdr_journal.loading`.
12
+
13
+ Scan tool now reports **0 `HeadersJournal` findings** for both files.
14
+
15
+ ## Verification
16
+
17
+ - Attribute values confirmed equal to subscript values (byte-identical behavior).
18
+ - `tests/test_batch.py` + `tests/test_helpers.py`: 58 passed post-edit.
19
+ - Full suite baseline green (668 passed; the single Windows-only HDF5
20
+ `driver lock request failed` setup error on `test_has_no_full_duplicates` is
21
+ a pre-existing test-isolation flake — passes in isolation, not on the Linux
22
+ CI gate).
23
+ - ruff: no new findings vs master.
24
+
25
+ ## Out of scope (other issues)
26
+
27
+ - Raw/steps/summary literals in the same files → #538.
@@ -8,5 +8,4 @@ uv run python -m cellpy._deprecation
8
8
 
9
9
  | Name | Replacement | Introduced | Removal |
10
10
  | --- | --- | --- | --- |
11
- | `cellpy.utils.easyplot` | `cellpy.utils.plotutils and cellpy.utils.collectors` | 1.1 | 2.0 |
12
11
  | `make_new_cell` | `CellpyCell.vacant` | 2.0 | 2.1 |
@@ -2,6 +2,32 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
+ * Removed the deprecated `cellpy.utils.easyplot` module (#544). It was
6
+ deprecated since 1.1 with removal scheduled for 2.0; use
7
+ `cellpy.utils.plotutils` and `cellpy.utils.collectors` instead. The module,
8
+ its tests, its docs entry, and its `DEPRECATIONS.md` row are gone.
9
+
10
+ * Step-type string literals use the `cellpycore` vocabulary (#543, native-
11
+ headers Phase-0 prerequisite): `CellpyCell.list_of_step_types` is now
12
+ `list(config.STEP_TYPES)` (was a hand-maintained duplicate of the 13
13
+ step-type names), and the step-table `type` comparisons in `utils/ocv_rlx.py`
14
+ / `utils/helpers.py` use `StepType.CHARGE.value` / `.DISCHARGE.value` instead
15
+ of bare `"charge"` / `"discharge"` literals. Behavior-identical.
16
+
17
+ * Header column literals in `utils/helpers.py` and `filters/summary.py` use
18
+ header-object attributes (#538, native-headers Phase-0 prerequisite): the
19
+ base-name string-keyed `hdr_summary["charge_capacity"]`-style lookups become
20
+ attribute access, and `filter_summary`'s `rate_columns` default is resolved
21
+ from `HeadersSummary` (was a hard-coded `("charge_c_rate", "discharge_c_rate")`
22
+ tuple). Postfix/specific columns (`*_gravimetric`, `areal_*`) keep string-key
23
+ composition. Behavior-identical.
24
+
25
+ * Journal-page column literals use `HeadersJournal` attributes (#537, native-
26
+ headers Phase-0 prerequisite): the string-keyed `hdr_journal["mass"]`-style
27
+ lookups in `batch_plotters.py` and `helpers.py` become attribute access
28
+ (`hdr_journal.mass`, …) so a journal-header rename touches the header class
29
+ only. Behavior-identical.
30
+
5
31
  * Remote paths via `universal_pathlib` (#375, #371): `OtherPath` is now a thin
6
32
  wrapper around `UPath` (fsspec/Paramiko) instead of Fabric. Supported schemes
7
33
  remain `ssh://` / `sftp://` / `scp://` (scp aliased to sftp). Remote
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cellpy
3
- Version: 2.0.0a2
3
+ Version: 2.0.0a3
4
4
  Summary: Extract and manipulate data from battery data testers.
5
5
  Project-URL: Homepage, https://github.com/jepegit/cellpy
6
6
  Project-URL: Repository, https://github.com/jepegit/cellpy
@@ -94,12 +94,8 @@ def write_deprecations_md(path: str | Path) -> None:
94
94
  def _seed_known_deprecations() -> None:
95
95
  """Register deprecations that exist before any runtime call (for doc generation)."""
96
96
  _register("make_new_cell", "CellpyCell.vacant", removal="2.1")
97
- _register(
98
- "cellpy.utils.easyplot",
99
- "cellpy.utils.plotutils and cellpy.utils.collectors",
100
- removal="2.0",
101
- introduced="1.1",
102
- )
97
+ # cellpy.utils.easyplot was removed in 2.0 (#544); it is no longer a
98
+ # pending deprecation, so it is dropped from the registry / DEPRECATIONS.md.
103
99
 
104
100
 
105
101
  if __name__ == "__main__":
@@ -29,6 +29,8 @@ import logging
29
29
  from collections.abc import Mapping, Sequence
30
30
  from typing import Any, Callable, Optional, Union
31
31
 
32
+ from cellpy.parameters.internal_settings import get_headers_summary
33
+
32
34
  import pandas as pd
33
35
 
34
36
  logger = logging.getLogger(__name__)
@@ -145,7 +147,7 @@ def filter_summary(
145
147
  df: pd.DataFrame,
146
148
  *,
147
149
  rate: RangeArg = None,
148
- rate_columns: ColumnsArg = ("charge_c_rate", "discharge_c_rate"),
150
+ rate_columns: ColumnsArg = None,
149
151
  **extra_filters: Any,
150
152
  ) -> pd.DataFrame:
151
153
  """Filter rows of a cellpy summary DataFrame.
@@ -159,6 +161,8 @@ def filter_summary(
159
161
  mapping ``{"value": v, "delta": d}`` (keep rows with
160
162
  ``v - d < value <= v + d``).
161
163
  rate_columns: Which column(s) the ``rate`` filter applies to.
164
+ ``None`` (default) resolves to the summary C-rate columns
165
+ (``HeadersSummary.charge_c_rate`` / ``.discharge_c_rate``).
162
166
  A single string is coerced to a one-element tuple. With more
163
167
  than one column the predicate is AND-ed across columns - a
164
168
  row is kept only if *every* listed column lies in range.
@@ -176,6 +180,10 @@ def filter_summary(
176
180
  argument is malformed.
177
181
  TypeError: A range argument has an unsupported type.
178
182
  """
183
+ if rate_columns is None:
184
+ hdr_summary = get_headers_summary()
185
+ rate_columns = (hdr_summary.charge_c_rate, hdr_summary.discharge_c_rate)
186
+
179
187
  range_kwargs = {k: v for k, v in extra_filters.items() if not k.endswith("_columns")}
180
188
  column_kwargs = {k: v for k, v in extra_filters.items() if k.endswith("_columns")}
181
189
 
@@ -58,6 +58,7 @@ from cellpy.parameters.internal_settings import (
58
58
  # still expects. cellpy-core's __init__ is intentionally empty, so import submodules.
59
59
  from cellpycore import units as core_units
60
60
  from cellpycore.cell_core import OldCellpyCellCore
61
+ from cellpycore.config import STEP_TYPES
61
62
 
62
63
  from cellpy.readers.cellpy_file import dtype as cellpy_file_dtype
63
64
  from cellpy.readers.cellpy_file import fids as cellpy_file_fids
@@ -297,21 +298,9 @@ class CellpyCell:
297
298
 
298
299
  self.capacity_modifiers = ["reset"]
299
300
 
300
- self.list_of_step_types = [
301
- "charge",
302
- "discharge",
303
- "cv_charge",
304
- "cv_discharge",
305
- "taper_charge",
306
- "taper_discharge",
307
- "charge_cv",
308
- "discharge_cv",
309
- "ocvrlx_up",
310
- "ocvrlx_down",
311
- "ir",
312
- "rest",
313
- "not_known",
314
- ]
301
+ # single source of the step-type vocabulary (cellpycore #543);
302
+ # was a hand-maintained duplicate of config.STEP_TYPES.
303
+ self.list_of_step_types = list(STEP_TYPES)
315
304
  # - options
316
305
  self.force_step_table_creation = config.reader.force_step_table_creation
317
306
  self.force_all = config.reader.force_all
@@ -50,7 +50,7 @@ def create_legend(info, c, option="clean", use_index=False):
50
50
 
51
51
  logging.debug(" - creating legends")
52
52
  mass, loading, label = info.loc[
53
- c, [hdr_journal["mass"], hdr_journal["loading"], hdr_journal["label"]]
53
+ c, [hdr_journal.mass, hdr_journal.loading, hdr_journal.label]
54
54
  ]
55
55
 
56
56
  if use_index or not label:
@@ -73,7 +73,7 @@ def create_legend(info, c, option="clean", use_index=False):
73
73
 
74
74
  def look_up_group(info, c):
75
75
  logging.debug(" - looking up groups")
76
- g, sg = info.loc[c, [hdr_journal["group"], hdr_journal["sub_group"]]]
76
+ g, sg = info.loc[c, [hdr_journal.group, hdr_journal.sub_group]]
77
77
  return int(g), int(sg)
78
78
 
79
79
 
@@ -9,6 +9,8 @@ import numpy as np
9
9
  import pandas as pd
10
10
  from scipy import stats
11
11
 
12
+ from cellpycore.config import StepType
13
+
12
14
  import cellpy
13
15
  import cellpy.config as config
14
16
  from cellpy import prms
@@ -37,8 +39,8 @@ def _make_average_legacy(
37
39
  ):
38
40
  if key_index_bounds is None:
39
41
  key_index_bounds = [1, -2]
40
- hdr_norm_cycle = hdr_summary["normalized_cycle_index"]
41
- hdr_cum_charge = hdr_summary["cumulated_charge_capacity"]
42
+ hdr_norm_cycle = hdr_summary.normalized_cycle_index
43
+ hdr_cum_charge = hdr_summary.cumulated_charge_capacity
42
44
  cell_id = ""
43
45
  not_a_number = np.nan
44
46
  new_frames = []
@@ -103,7 +105,7 @@ def _make_average(
103
105
  skip_st_dev_for_equivalent_cycle_index=True,
104
106
  average_method="mean",
105
107
  ):
106
- hdr_norm_cycle = hdr_summary["normalized_cycle_index"]
108
+ hdr_norm_cycle = hdr_summary.normalized_cycle_index
107
109
  not_a_number = np.nan
108
110
  new_frames = []
109
111
 
@@ -225,7 +227,7 @@ def add_normalized_cycle_index(summary, nom_cap, column_name=None):
225
227
  Returns:
226
228
  data object now with normalized cycle index in its summary.
227
229
  """
228
- hdr_norm_cycle = hdr_summary["normalized_cycle_index"]
230
+ hdr_norm_cycle = hdr_summary.normalized_cycle_index
229
231
  hdr_cum_charge = hdr_summary["cumulated_charge_capacity_gravimetric"]
230
232
 
231
233
  if column_name is None:
@@ -260,7 +262,7 @@ def add_c_rate(cell, nom_cap=None, column_name=None):
260
262
  # now also included in step_table
261
263
  # TODO: remove this function
262
264
  if column_name is None:
263
- column_name = hdr_steps["rate_avr"]
265
+ column_name = hdr_steps.rate_avr
264
266
  if nom_cap is None:
265
267
  nom_cap = cell.data.nom_cap
266
268
 
@@ -275,13 +277,13 @@ def add_c_rate(cell, nom_cap=None, column_name=None):
275
277
  def add_areal_capacity(cell, cell_id, journal):
276
278
  """Adds areal capacity to the summary."""
277
279
 
278
- loading = journal.pages.loc[cell_id, hdr_journal["loading"]]
280
+ loading = journal.pages.loc[cell_id, hdr_journal.loading]
279
281
 
280
282
  cell.data.summary[hdr_summary["areal_charge_capacity"]] = (
281
- cell.data.summary[hdr_summary["charge_capacity"]] * loading / 1000
283
+ cell.data.summary[hdr_summary.charge_capacity] * loading / 1000
282
284
  )
283
285
  cell.data.summary[hdr_summary["areal_discharge_capacity"]] = (
284
- cell.data.summary[hdr_summary["discharge_capacity"]] * loading / 1000
286
+ cell.data.summary[hdr_summary.discharge_capacity] * loading / 1000
285
287
  )
286
288
  return cell
287
289
 
@@ -303,7 +305,7 @@ def remove_outliers_from_summary_on_window(
303
305
  ):
304
306
  """Removes outliers based on neighbours"""
305
307
  if col_name is None:
306
- col = hdr_summary["charge_capacity"]
308
+ col = hdr_summary.charge_capacity
307
309
 
308
310
  else:
309
311
  col = hdr_summary[col_name]
@@ -344,8 +346,8 @@ def remove_outliers_from_summary_on_nn_distance(
344
346
  """
345
347
  if filter_cols is None:
346
348
  filter_cols = [
347
- hdr_summary["charge_capacity"],
348
- hdr_summary["discharge_capacity"],
349
+ hdr_summary.charge_capacity,
350
+ hdr_summary.discharge_capacity,
349
351
  ]
350
352
 
351
353
  def neighbour_window(y):
@@ -391,8 +393,8 @@ def remove_outliers_from_summary_on_zscore(
391
393
 
392
394
  if filter_cols is None:
393
395
  filter_cols = [
394
- hdr_summary["charge_capacity"],
395
- hdr_summary["discharge_capacity"],
396
+ hdr_summary.charge_capacity,
397
+ hdr_summary.discharge_capacity,
396
398
  ]
397
399
 
398
400
  s2 = s[filter_cols].copy()
@@ -424,8 +426,8 @@ def remove_outliers_from_summary_on_value(
424
426
  """
425
427
  if filter_cols is None:
426
428
  filter_cols = [
427
- hdr_summary["charge_capacity"],
428
- hdr_summary["discharge_capacity"],
429
+ hdr_summary.charge_capacity,
430
+ hdr_summary.discharge_capacity,
429
431
  ]
430
432
 
431
433
  s2 = s[filter_cols].copy()
@@ -756,7 +758,7 @@ def concatenate_summaries(
756
758
  group_nest.append(b.pages.group.to_list())
757
759
 
758
760
  default_columns = [hdr_summary["charge_capacity_gravimetric"]]
759
- hdr_norm_cycle = hdr_summary["normalized_cycle_index"]
761
+ hdr_norm_cycle = hdr_summary.normalized_cycle_index
760
762
 
761
763
  if columns is None:
762
764
  columns = []
@@ -786,16 +788,16 @@ def concatenate_summaries(
786
788
 
787
789
  if normalize_capacity_on is not None:
788
790
  normalize_capacity_headers = [
789
- hdr_summary["normalized_charge_capacity"],
790
- hdr_summary["normalized_discharge_capacity"],
791
+ hdr_summary.normalized_charge_capacity,
792
+ hdr_summary.normalized_discharge_capacity,
791
793
  ]
792
794
  output_columns = [
793
795
  col
794
796
  for col in output_columns
795
797
  if col
796
798
  not in [
797
- hdr_summary["charge_capacity"],
798
- hdr_summary["discharge_capacity"],
799
+ hdr_summary.charge_capacity,
800
+ hdr_summary.discharge_capacity,
799
801
  ]
800
802
  ]
801
803
  output_columns.extend(normalize_capacity_headers)
@@ -917,7 +919,7 @@ def _partition_summary_based_on_cv_steps(
917
919
  import pandas as pd
918
920
 
919
921
  if not x:
920
- x = hdr_summary["cycle_index"]
922
+ x = hdr_summary.cycle_index
921
923
 
922
924
  summary = c.data.summary.copy()
923
925
 
@@ -1081,7 +1083,7 @@ def concat_summaries(
1081
1083
  group_nest.append(pages.group.to_list())
1082
1084
 
1083
1085
  default_columns = [hdr_summary["charge_capacity_gravimetric"]]
1084
- hdr_norm_cycle = hdr_summary["normalized_cycle_index"]
1086
+ hdr_norm_cycle = hdr_summary.normalized_cycle_index
1085
1087
 
1086
1088
  if columns is None:
1087
1089
  columns = []
@@ -1111,16 +1113,16 @@ def concat_summaries(
1111
1113
 
1112
1114
  if normalize_capacity_on is not None:
1113
1115
  normalize_capacity_headers = [
1114
- hdr_summary["normalized_charge_capacity"],
1115
- hdr_summary["normalized_discharge_capacity"],
1116
+ hdr_summary.normalized_charge_capacity,
1117
+ hdr_summary.normalized_discharge_capacity,
1116
1118
  ]
1117
1119
  output_columns = [
1118
1120
  col
1119
1121
  for col in output_columns
1120
1122
  if col
1121
1123
  not in [
1122
- hdr_summary["charge_capacity"],
1123
- hdr_summary["discharge_capacity"],
1124
+ hdr_summary.charge_capacity,
1125
+ hdr_summary.discharge_capacity,
1124
1126
  ]
1125
1127
  ]
1126
1128
  output_columns.extend(normalize_capacity_headers)
@@ -1456,16 +1458,16 @@ def select_summary_based_on_rate(
1456
1458
  filtered summary (Pandas.DataFrame).
1457
1459
  """
1458
1460
  if on is None:
1459
- on = ["charge"]
1461
+ on = [StepType.CHARGE.value]
1460
1462
  else:
1461
1463
  if not isinstance(on, (list, tuple)):
1462
1464
  on = [on]
1463
1465
 
1464
1466
  if rate_column is None:
1465
- rate_column = hdr_steps["rate_avr"]
1467
+ rate_column = hdr_steps.rate_avr
1466
1468
 
1467
1469
  if on:
1468
- on_column = hdr_steps["type"]
1470
+ on_column = hdr_steps.type
1469
1471
 
1470
1472
  if rate is None:
1471
1473
  rate = 0.05
@@ -1473,7 +1475,7 @@ def select_summary_based_on_rate(
1473
1475
  if rate_std is None:
1474
1476
  rate_std = 0.1 * rate
1475
1477
 
1476
- cycle_number_header = hdr_summary["cycle_index"]
1478
+ cycle_number_header = hdr_summary.cycle_index
1477
1479
 
1478
1480
  step_table = cell.data.steps
1479
1481
 
@@ -1545,10 +1547,10 @@ def add_normalized_capacity(
1545
1547
  if norm_cycles is None:
1546
1548
  norm_cycles = [1, 2, 3, 4, 5]
1547
1549
 
1548
- col_name_charge = hdr_summary["charge_capacity"]
1549
- col_name_discharge = hdr_summary["discharge_capacity"]
1550
- col_name_norm_charge = hdr_summary["normalized_charge_capacity"]
1551
- col_name_norm_discharge = hdr_summary["normalized_discharge_capacity"]
1550
+ col_name_charge = hdr_summary.charge_capacity
1551
+ col_name_discharge = hdr_summary.discharge_capacity
1552
+ col_name_norm_charge = hdr_summary.normalized_charge_capacity
1553
+ col_name_norm_discharge = hdr_summary.normalized_discharge_capacity
1552
1554
 
1553
1555
  try:
1554
1556
  norm_val_charge = cell.data.summary.loc[norm_cycles, col_name_charge].mean()
@@ -18,6 +18,8 @@ import matplotlib.pyplot as plt
18
18
  import numpy as np
19
19
  import pandas as pd
20
20
 
21
+ from cellpycore.config import StepType
22
+
21
23
  from cellpy import cellreader
22
24
  from cellpy.parameters.internal_settings import get_headers_normal, get_headers_step_table
23
25
 
@@ -371,21 +373,21 @@ class MultiCycleOcvFit:
371
373
  if direction == "up":
372
374
  end_voltage = step_table[
373
375
  (step_table[hdr_steps.cycle] == cycle)
374
- & (step_table[hdr_steps.type].isin(["discharge"]))
376
+ & (step_table[hdr_steps.type].isin([StepType.DISCHARGE.value]))
375
377
  ][hdr.voltage + "_last"].values[0]
376
378
 
377
379
  end_current = step_table[
378
380
  (step_table[hdr_steps.cycle] == cycle)
379
- & (step_table[hdr_steps.type].isin(["discharge"]))
381
+ & (step_table[hdr_steps.type].isin([StepType.DISCHARGE.value]))
380
382
  ][hdr.current + "_last"].values[0]
381
383
 
382
384
  elif direction == "down":
383
385
  end_voltage = step_table[
384
- (step_table[hdr_steps.cycle] == cycle) & (step_table[hdr_steps.type].isin(["charge"]))
386
+ (step_table[hdr_steps.cycle] == cycle) & (step_table[hdr_steps.type].isin([StepType.CHARGE.value]))
385
387
  ][hdr.voltage + "_last"].values[0]
386
388
 
387
389
  end_current = step_table[
388
- (step_table[hdr_steps.cycle] == cycle) & (step_table[hdr_steps.type].isin(["charge"]))
390
+ (step_table[hdr_steps.cycle] == cycle) & (step_table[hdr_steps.type].isin([StepType.CHARGE.value]))
389
391
  ][hdr.current + "_last"].values[0]
390
392
 
391
393
  return end_current, end_voltage