cellpycore 0.2.2__tar.gz → 0.2.3__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 (253) hide show
  1. cellpycore-0.2.3/.issueflows/03-solved-issues/issue139_original.md +61 -0
  2. cellpycore-0.2.3/.issueflows/03-solved-issues/issue139_plan.md +119 -0
  3. cellpycore-0.2.3/.issueflows/03-solved-issues/issue139_status.md +18 -0
  4. cellpycore-0.2.3/.issueflows/04-designs-and-guides/legacy-raw-energy-mapping.md +24 -0
  5. {cellpycore-0.2.2 → cellpycore-0.2.3}/HISTORY.md +7 -0
  6. {cellpycore-0.2.2 → cellpycore-0.2.3}/PKG-INFO +1 -1
  7. {cellpycore-0.2.2 → cellpycore-0.2.3}/graphify-out/.graphify_labels.json +0 -4
  8. {cellpycore-0.2.2 → cellpycore-0.2.3}/graphify-out/GRAPH_REPORT.md +132 -133
  9. {cellpycore-0.2.2 → cellpycore-0.2.3}/graphify-out/graph.html +4 -4
  10. {cellpycore-0.2.2 → cellpycore-0.2.3}/graphify-out/graph.json +1238 -1048
  11. {cellpycore-0.2.2 → cellpycore-0.2.3}/graphify-out/manifest.json +13 -13
  12. {cellpycore-0.2.2 → cellpycore-0.2.3}/pyproject.toml +1 -1
  13. {cellpycore-0.2.2 → cellpycore-0.2.3}/src/cellpycore/legacy/mapping.py +4 -6
  14. {cellpycore-0.2.2 → cellpycore-0.2.3}/uv.lock +1 -1
  15. {cellpycore-0.2.2 → cellpycore-0.2.3}/.aliases +0 -0
  16. {cellpycore-0.2.2 → cellpycore-0.2.3}/.cursor/rules/cellpy-core-migration.mdc +0 -0
  17. {cellpycore-0.2.2 → cellpycore-0.2.3}/.cursor/rules/graphify.mdc +0 -0
  18. {cellpycore-0.2.2 → cellpycore-0.2.3}/.cursor/rules/issueflow-rules.mdc +0 -0
  19. {cellpycore-0.2.2 → cellpycore-0.2.3}/.cursor/rules/kiss.mdc +0 -0
  20. {cellpycore-0.2.2 → cellpycore-0.2.3}/.cursor/rules/this-project.mdc +0 -0
  21. {cellpycore-0.2.2 → cellpycore-0.2.3}/.cursor/skills/caveman/SKILL.md +0 -0
  22. {cellpycore-0.2.2 → cellpycore-0.2.3}/.cursor/skills/grill-me/SKILL.md +0 -0
  23. {cellpycore-0.2.2 → cellpycore-0.2.3}/.cursor/skills/iflow/SKILL.md +0 -0
  24. {cellpycore-0.2.2 → cellpycore-0.2.3}/.cursor/skills/iflow-archive/SKILL.md +0 -0
  25. {cellpycore-0.2.2 → cellpycore-0.2.3}/.cursor/skills/iflow-cleanup/SKILL.md +0 -0
  26. {cellpycore-0.2.2 → cellpycore-0.2.3}/.cursor/skills/iflow-close/SKILL.md +0 -0
  27. {cellpycore-0.2.2 → cellpycore-0.2.3}/.cursor/skills/iflow-comments/SKILL.md +0 -0
  28. {cellpycore-0.2.2 → cellpycore-0.2.3}/.cursor/skills/iflow-cycle/SKILL.md +0 -0
  29. {cellpycore-0.2.2 → cellpycore-0.2.3}/.cursor/skills/iflow-epic/SKILL.md +0 -0
  30. {cellpycore-0.2.2 → cellpycore-0.2.3}/.cursor/skills/iflow-fix/SKILL.md +0 -0
  31. {cellpycore-0.2.2 → cellpycore-0.2.3}/.cursor/skills/iflow-graphify/SKILL.md +0 -0
  32. {cellpycore-0.2.2 → cellpycore-0.2.3}/.cursor/skills/iflow-history-update/SKILL.md +0 -0
  33. {cellpycore-0.2.2 → cellpycore-0.2.3}/.cursor/skills/iflow-init/SKILL.md +0 -0
  34. {cellpycore-0.2.2 → cellpycore-0.2.3}/.cursor/skills/iflow-pause/SKILL.md +0 -0
  35. {cellpycore-0.2.2 → cellpycore-0.2.3}/.cursor/skills/iflow-pick/SKILL.md +0 -0
  36. {cellpycore-0.2.2 → cellpycore-0.2.3}/.cursor/skills/iflow-plan/SKILL.md +0 -0
  37. {cellpycore-0.2.2 → cellpycore-0.2.3}/.cursor/skills/iflow-start/SKILL.md +0 -0
  38. {cellpycore-0.2.2 → cellpycore-0.2.3}/.cursor/skills/iflow-status/SKILL.md +0 -0
  39. {cellpycore-0.2.2 → cellpycore-0.2.3}/.cursor/skills/iflow-version-bump/SKILL.md +0 -0
  40. {cellpycore-0.2.2 → cellpycore-0.2.3}/.cursor/skills/iflow-yolo/SKILL.md +0 -0
  41. {cellpycore-0.2.2 → cellpycore-0.2.3}/.gitattributes +0 -0
  42. {cellpycore-0.2.2 → cellpycore-0.2.3}/.gitignore +0 -0
  43. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/00-tools/.gitkeep +0 -0
  44. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/00-tools/README.md +0 -0
  45. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/01-current-issues/.gitkeep +0 -0
  46. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/02-partly-solved-issues/.gitkeep +0 -0
  47. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/02-partly-solved-issues/issue100_original.md +0 -0
  48. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/02-partly-solved-issues/issue100_plan.md +0 -0
  49. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/02-partly-solved-issues/issue100_status.md +0 -0
  50. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/.gitkeep +0 -0
  51. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue10_original.md +0 -0
  52. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue10_plan.md +0 -0
  53. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue10_status.md +0 -0
  54. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue110_original.md +0 -0
  55. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue110_plan.md +0 -0
  56. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue110_status.md +0 -0
  57. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue112_original.md +0 -0
  58. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue112_plan.md +0 -0
  59. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue112_status.md +0 -0
  60. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue114_original.md +0 -0
  61. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue114_plan.md +0 -0
  62. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue114_status.md +0 -0
  63. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue115_original.md +0 -0
  64. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue115_plan.md +0 -0
  65. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue115_status.md +0 -0
  66. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue116_original.md +0 -0
  67. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue116_plan.md +0 -0
  68. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue116_status.md +0 -0
  69. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue117_original.md +0 -0
  70. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue117_plan.md +0 -0
  71. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue117_status.md +0 -0
  72. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue118_original.md +0 -0
  73. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue118_plan.md +0 -0
  74. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue118_status.md +0 -0
  75. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue121_original.md +0 -0
  76. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue121_plan.md +0 -0
  77. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue121_status.md +0 -0
  78. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue12_original.md +0 -0
  79. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue12_plan.md +0 -0
  80. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue12_status.md +0 -0
  81. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue136_original.md +0 -0
  82. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue136_plan.md +0 -0
  83. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue136_status.md +0 -0
  84. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue13_original.md +0 -0
  85. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue13_plan.md +0 -0
  86. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue13_status.md +0 -0
  87. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue21_original.md +0 -0
  88. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue21_plan.md +0 -0
  89. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue21_status.md +0 -0
  90. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue22_original.md +0 -0
  91. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue22_plan.md +0 -0
  92. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue22_status.md +0 -0
  93. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue23_original.md +0 -0
  94. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue23_plan.md +0 -0
  95. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue23_status.md +0 -0
  96. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue24_original.md +0 -0
  97. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue24_status.md +0 -0
  98. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue29_original.md +0 -0
  99. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue29_plan.md +0 -0
  100. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue29_status.md +0 -0
  101. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue30_original.md +0 -0
  102. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue30_plan.md +0 -0
  103. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue30_status.md +0 -0
  104. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue32_original.md +0 -0
  105. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue32_plan.md +0 -0
  106. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue32_status.md +0 -0
  107. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue34_original.md +0 -0
  108. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue34_plan.md +0 -0
  109. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue36_original.md +0 -0
  110. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue36_status.md +0 -0
  111. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue39_original.md +0 -0
  112. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue39_plan.md +0 -0
  113. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue39_status.md +0 -0
  114. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue40_original.md +0 -0
  115. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue40_plan.md +0 -0
  116. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue40_status.md +0 -0
  117. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue41_original.md +0 -0
  118. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue41_plan.md +0 -0
  119. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue41_status.md +0 -0
  120. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue42_original.md +0 -0
  121. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue42_plan.md +0 -0
  122. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue42_status.md +0 -0
  123. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue43_original.md +0 -0
  124. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue43_plan.md +0 -0
  125. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue43_status.md +0 -0
  126. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue44_original.md +0 -0
  127. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue44_status.md +0 -0
  128. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue45_original.md +0 -0
  129. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue45_plan.md +0 -0
  130. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue45_status.md +0 -0
  131. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue50_original.md +0 -0
  132. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue50_plan.md +0 -0
  133. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue50_status.md +0 -0
  134. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue54_original.md +0 -0
  135. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue54_plan.md +0 -0
  136. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue54_status.md +0 -0
  137. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue55_original.md +0 -0
  138. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue55_plan.md +0 -0
  139. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue55_status.md +0 -0
  140. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue56_original.md +0 -0
  141. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue56_plan.md +0 -0
  142. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue56_status.md +0 -0
  143. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue62_original.md +0 -0
  144. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue62_plan.md +0 -0
  145. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue62_status.md +0 -0
  146. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue64_original.md +0 -0
  147. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue64_plan.md +0 -0
  148. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue64_status.md +0 -0
  149. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue66_original.md +0 -0
  150. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue66_plan.md +0 -0
  151. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue66_status.md +0 -0
  152. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue67_original.md +0 -0
  153. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue67_plan.md +0 -0
  154. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue67_status.md +0 -0
  155. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue68_original.md +0 -0
  156. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue68_plan.md +0 -0
  157. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue68_status.md +0 -0
  158. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue69_original.md +0 -0
  159. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue69_plan.md +0 -0
  160. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue69_status.md +0 -0
  161. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue70_original.md +0 -0
  162. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue70_plan.md +0 -0
  163. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue70_status.md +0 -0
  164. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue72_original.md +0 -0
  165. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue72_status.md +0 -0
  166. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue77_original.md +0 -0
  167. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue77_plan.md +0 -0
  168. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue77_status.md +0 -0
  169. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue82_original.md +0 -0
  170. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue82_status.md +0 -0
  171. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue84_original.md +0 -0
  172. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue84_plan.md +0 -0
  173. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue84_status.md +0 -0
  174. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue86_original.md +0 -0
  175. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue86_plan.md +0 -0
  176. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue86_status.md +0 -0
  177. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue91_original.md +0 -0
  178. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue91_plan.md +0 -0
  179. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue91_status.md +0 -0
  180. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue95_original.md +0 -0
  181. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue95_plan.md +0 -0
  182. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue95_status.md +0 -0
  183. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue96_original.md +0 -0
  184. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue96_plan.md +0 -0
  185. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue96_status.md +0 -0
  186. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue97_original.md +0 -0
  187. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue97_plan.md +0 -0
  188. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue97_status.md +0 -0
  189. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue98_original.md +0 -0
  190. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue98_plan.md +0 -0
  191. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue98_status.md +0 -0
  192. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue99_original.md +0 -0
  193. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue99_plan.md +0 -0
  194. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/03-solved-issues/issue99_status.md +0 -0
  195. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/04-designs-and-guides/.gitkeep +0 -0
  196. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/04-designs-and-guides/bdf-io-placement.md +0 -0
  197. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/04-designs-and-guides/cellpy-core-integration-into-cellpy.md +0 -0
  198. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/04-designs-and-guides/cellpy-core-integration-roadmap.md +0 -0
  199. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/04-designs-and-guides/cellpy-core-migration.md +0 -0
  200. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/04-designs-and-guides/code-review-2026-07.md +0 -0
  201. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/04-designs-and-guides/column-headers-review.md +0 -0
  202. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/04-designs-and-guides/legacy-bridge-test-id.md +0 -0
  203. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/04-designs-and-guides/metadata-scaffolding.md +0 -0
  204. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/04-designs-and-guides/nom-cap-naming.md +0 -0
  205. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/04-designs-and-guides/rawcols-dtype-map.md +0 -0
  206. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/04-designs-and-guides/release-procedure.md +0 -0
  207. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/04-designs-and-guides/selector-dead-code-deferral.md +0 -0
  208. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/04-designs-and-guides/step-c-rate-split.md +0 -0
  209. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/04-designs-and-guides/step-table-polars-migration.md +0 -0
  210. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/04-designs-and-guides/summary-extractors.md +0 -0
  211. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/04-designs-and-guides/test-data-and-fixtures.md +0 -0
  212. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/04-designs-and-guides/test-metadata-and-merging.md +0 -0
  213. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/04-designs-and-guides/this-project.md +0 -0
  214. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/04-designs-and-guides/zensical-docs.md +0 -0
  215. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/05-epics/.gitkeep +0 -0
  216. {cellpycore-0.2.2 → cellpycore-0.2.3}/.issueflows/config.toml +0 -0
  217. {cellpycore-0.2.2 → cellpycore-0.2.3}/.pre-commit-config.yaml +0 -0
  218. {cellpycore-0.2.2 → cellpycore-0.2.3}/.python-version +0 -0
  219. {cellpycore-0.2.2 → cellpycore-0.2.3}/.readthedocs.yaml +0 -0
  220. {cellpycore-0.2.2 → cellpycore-0.2.3}/.vscode/settings.json +0 -0
  221. {cellpycore-0.2.2 → cellpycore-0.2.3}/AGENTS.md +0 -0
  222. {cellpycore-0.2.2 → cellpycore-0.2.3}/LICENSE +0 -0
  223. {cellpycore-0.2.2 → cellpycore-0.2.3}/README.md +0 -0
  224. {cellpycore-0.2.2 → cellpycore-0.2.3}/ROADMAP.md +0 -0
  225. {cellpycore-0.2.2 → cellpycore-0.2.3}/SCRATCHPAD.md +0 -0
  226. {cellpycore-0.2.2 → cellpycore-0.2.3}/graphify-out/.graphify_root +0 -0
  227. {cellpycore-0.2.2 → cellpycore-0.2.3}/src/cellpycore/__init__.py +0 -0
  228. {cellpycore-0.2.2 → cellpycore-0.2.3}/src/cellpycore/cell_core.py +0 -0
  229. {cellpycore-0.2.2 → cellpycore-0.2.3}/src/cellpycore/config.py +0 -0
  230. {cellpycore-0.2.2 → cellpycore-0.2.3}/src/cellpycore/curves.py +0 -0
  231. {cellpycore-0.2.2 → cellpycore-0.2.3}/src/cellpycore/exceptions.py +0 -0
  232. {cellpycore-0.2.2 → cellpycore-0.2.3}/src/cellpycore/extractors.py +0 -0
  233. {cellpycore-0.2.2 → cellpycore-0.2.3}/src/cellpycore/legacy/__init__.py +0 -0
  234. {cellpycore-0.2.2 → cellpycore-0.2.3}/src/cellpycore/legacy/headers.py +0 -0
  235. {cellpycore-0.2.2 → cellpycore-0.2.3}/src/cellpycore/legacy/limits.py +0 -0
  236. {cellpycore-0.2.2 → cellpycore-0.2.3}/src/cellpycore/legacy/meta.py +0 -0
  237. {cellpycore-0.2.2 → cellpycore-0.2.3}/src/cellpycore/legacy/meta_mapping.py +0 -0
  238. {cellpycore-0.2.2 → cellpycore-0.2.3}/src/cellpycore/legacy/mock_core.py +0 -0
  239. {cellpycore-0.2.2 → cellpycore-0.2.3}/src/cellpycore/legacy/selectors.py +0 -0
  240. {cellpycore-0.2.2 → cellpycore-0.2.3}/src/cellpycore/merge.py +0 -0
  241. {cellpycore-0.2.2 → cellpycore-0.2.3}/src/cellpycore/metadata/__init__.py +0 -0
  242. {cellpycore-0.2.2 → cellpycore-0.2.3}/src/cellpycore/metadata/io.py +0 -0
  243. {cellpycore-0.2.2 → cellpycore-0.2.3}/src/cellpycore/metadata/models.py +0 -0
  244. {cellpycore-0.2.2 → cellpycore-0.2.3}/src/cellpycore/py.typed +0 -0
  245. {cellpycore-0.2.2 → cellpycore-0.2.3}/src/cellpycore/settings_base.py +0 -0
  246. {cellpycore-0.2.2 → cellpycore-0.2.3}/src/cellpycore/summarizers.py +0 -0
  247. {cellpycore-0.2.2 → cellpycore-0.2.3}/src/cellpycore/testing/__init__.py +0 -0
  248. {cellpycore-0.2.2 → cellpycore-0.2.3}/src/cellpycore/testing/mock_data.py +0 -0
  249. {cellpycore-0.2.2 → cellpycore-0.2.3}/src/cellpycore/timestamps.py +0 -0
  250. {cellpycore-0.2.2 → cellpycore-0.2.3}/src/cellpycore/units/__init__.py +0 -0
  251. {cellpycore-0.2.2 → cellpycore-0.2.3}/src/cellpycore/units/converters.py +0 -0
  252. {cellpycore-0.2.2 → cellpycore-0.2.3}/src/cellpycore/units/spec.py +0 -0
  253. {cellpycore-0.2.2 → cellpycore-0.2.3}/zensical.toml +0 -0
@@ -0,0 +1,61 @@
1
+ # Issue #139: legacy mapping: no entries for the energy columns (charge_energy_txt -> cumulative_charge_energy)
2
+
3
+ Source: https://github.com/cellpy/cellpy-core/issues/139
4
+
5
+ ## Original issue text
6
+
7
+ ## Summary
8
+
9
+ `cellpycore.legacy.mapping.LEGACY_ATTR_TO_SCHEMA["raw"]` has no entries for the
10
+ energy columns, although both sides exist:
11
+
12
+ - native schema defines `cumulative_charge_energy` and
13
+ `cumulative_discharge_energy`;
14
+ - cellpy's loader configurations declare `charge_energy_txt` and
15
+ `discharge_energy_txt`, and vendor files carry the data (Maccor `Watt-hr`,
16
+ Neware energy columns, …).
17
+
18
+ ```python
19
+ >>> from cellpycore.legacy import mapping
20
+ >>> {k: v for k, v in mapping.LEGACY_ATTR_TO_SCHEMA["raw"].items() if "energy" in k}
21
+ {}
22
+ ```
23
+
24
+ ## Why it matters now
25
+
26
+ Found while porting loaders to the `harmonize()` framework
27
+ (jepegit/cellpy#559 → #560). Consequences today:
28
+
29
+ 1. On the native runtime, `to_native()` passes the unmapped columns through
30
+ under their **legacy** names, so a native frame carries `charge_energy`
31
+ while the schema says the column should be `cumulative_charge_energy`.
32
+ Asking `c.schema.raw` for energy finds nothing.
33
+ 2. `harmonize()` drops undeclared columns by design, so a ported loader would
34
+ silently lose energy data unless it declares a passthrough — which is the
35
+ wrong long-term answer for a column the schema already has a name for.
36
+
37
+ ## Ask
38
+
39
+ Add the mapping entries:
40
+
41
+ | legacy attribute | native column |
42
+ |---|---|
43
+ | `charge_energy_txt` | `cumulative_charge_energy` |
44
+ | `discharge_energy_txt` | `cumulative_discharge_energy` |
45
+
46
+ Please confirm the reset-granularity convention for the energy columns matches
47
+ the capacity one (cycle-cumulative per direction, per the harmonized-raw spec's
48
+ *Capacity convention*) — the cellpy side will normalise them the same way.
49
+
50
+ ## Also unmapped (for a decision, not necessarily this issue)
51
+
52
+ These native raw columns have no legacy attribute mapped to them. Several are
53
+ correctly framework-owned or native-only, but `datetime_txt → epoch_time_utc`
54
+ looks like a genuine omission of the same kind:
55
+
56
+ `epoch_time_utc`, `step_type`, `step_mode`, `step_type_detail`, `cycle_type`,
57
+ `ref_potential`, `step_charge_power`, `step_discharge_power`, `aux_*`,
58
+ `source_*`, `mask`, `test_id`.
59
+
60
+ Cross-repo order per the cellpy 2 release plan §3: core PR → core release →
61
+ cellpy re-pin → cellpy consumes.
@@ -0,0 +1,119 @@
1
+ # Plan — issue #139 (legacy raw energy mapping)
2
+
3
+ ## Goal
4
+
5
+ Bridge legacy raw energy columns through the authoritative header map so
6
+ `charge_energy` / `discharge_energy` rename to
7
+ `cumulative_charge_energy` / `cumulative_discharge_energy` (same pattern as
8
+ capacity), enabling `to_native()` / `harmonize()` consumers to find them under
9
+ the native schema names.
10
+
11
+ ## Constraints
12
+
13
+ - Keep change to `mapping.py` + its existing totality / spot-check tests.
14
+ No loader work, no engine changes, no cycle/step energy columns.
15
+ - Totality discipline (#116): every legacy attr / column value is either mapped
16
+ or in an exception set — never both, never neither.
17
+ - Value-level pairs (`RAW_PAIRS`) drive DataFrame renames; attribute table
18
+ (`LEGACY_ATTR_TO_SCHEMA`) must stay in sync (`test_legacy_attr_matches_value_mapping`).
19
+ - Out of scope (issue itself): `datetime_txt → epoch_time_utc` and the other
20
+ unmapped native-only list — track separately if wanted.
21
+ - Cross-repo: core PR → core release → cellpy re-pin → cellpy consumes
22
+ (cellpy #560). This issue is the core PR only.
23
+ - Spec already states the reset convention (see Approach); record that as the
24
+ answer to the issue's ask — do not invent a new convention here.
25
+
26
+ ### Prior art
27
+
28
+ - `RAW_PAIRS` / `LEGACY_ATTR_TO_SCHEMA["raw"]` / exception sets —
29
+ [`src/cellpycore/legacy/mapping.py`](src/cellpycore/legacy/mapping.py).
30
+ Mirror capacity entries (`charge_capacity_txt` →
31
+ `cumulative_charge_capacity`).
32
+ - Totality + spot-check tests —
33
+ [`tests/test_header_mapping.py`](tests/test_header_mapping.py)
34
+ (`test_raw_*_totality`, `test_known_translations`,
35
+ `test_legacy_attr_*`).
36
+ - Spec Capacity convention —
37
+ [`docs/specifications/harmonized-raw.md`](docs/specifications/harmonized-raw.md)
38
+ (§ Capacity convention): energy columns share cycle-cumulative / per-direction
39
+ semantics with capacity.
40
+ - Issue #42 (solved): engine reset-granularity normalizer already covers
41
+ `cumulative_*_energy` when source granularity differs.
42
+ - Fixture helper already assumes the rename —
43
+ [`dev/make_harmonized_raw.py`](dev/make_harmonized_raw.py)
44
+ (`charge_energy` → `cumulative_charge_energy`).
45
+ - Issue #116 (solved): attribute-table + `LEGACY_ATTR_UNMAPPED` discipline.
46
+ - Toolbox: none relevant.
47
+ - Graph: community 87 (`mapping.py`) / 82 (legacy headers) — no extra modules.
48
+
49
+ **Note vs architecture-plan D3:** `cellpy2-native-headers-migration-plan.md`
50
+ still lists raw energy as passthrough ("not synthesized — different reset
51
+ semantics"). That is **stale relative to the harmonized-raw Capacity
52
+ convention + #42**. Mapping is a rename of already-supplied columns, not
53
+ synthesis. After Accept, add a one-line correction in
54
+ `.issueflows/04-designs-and-guides/` (or a comment in the plan status) so
55
+ future agents do not re-block the bridge; updating the architecture-plan
56
+ doc can be a tiny follow-up outside this PR if desired.
57
+
58
+ ## Approach
59
+
60
+ 1. **Confirm convention (recorded decision):** energy matches capacity —
61
+ cumulative per cycle, per direction, reset at cycle boundary
62
+ (`harmonized-raw.md` Capacity convention). Cellpy loaders normalize the
63
+ same way; if a source is step-cumulative, #42's normalizer is the path,
64
+ not leaving the columns unmapped.
65
+
66
+ 2. **Value map** — add to `RAW_PAIRS` (next to the capacity pairs):
67
+ ```python
68
+ ("cumulative_charge_energy", "charge_energy"),
69
+ ("cumulative_discharge_energy", "discharge_energy"),
70
+ ```
71
+
72
+ 3. **Exception sets** — remove from the raw exceptions so totality stays
73
+ exact:
74
+ - `LEGACY_ONLY_RAW`: drop `"charge_energy"`, `"discharge_energy"`
75
+ - `NATIVE_ONLY_RAW`: drop `"cumulative_charge_energy"`,
76
+ `"cumulative_discharge_energy"`
77
+
78
+ 4. **Attribute map** — add to `LEGACY_ATTR_TO_SCHEMA["raw"]`:
79
+ ```python
80
+ "charge_energy_txt": "cumulative_charge_energy",
81
+ "discharge_energy_txt": "cumulative_discharge_energy",
82
+ ```
83
+ and remove those attrs from `LEGACY_ATTR_UNMAPPED["raw"]`.
84
+
85
+ 5. **Do not touch** step/cycle maps (`NATIVE_ONLY_STEP` still has
86
+ `charge_energy` / `discharge_energy` as *step-table* base signals — different
87
+ columns).
88
+
89
+ 6. **Behavior:** `legacy_to_native_raw()` / bridge renames will translate
90
+ energy instead of leaving it as a passthrough extra. That is the intended
91
+ fix for native-schema lookup and `harmonize()`.
92
+
93
+ ## Files to touch
94
+
95
+ | Path | Change |
96
+ |------|--------|
97
+ | `src/cellpycore/legacy/mapping.py` | `RAW_PAIRS` + attr table + raw exception sets |
98
+ | `tests/test_header_mapping.py` | Extend `test_known_translations` expected dict with the two energy renames |
99
+ | `.issueflows/04-designs-and-guides/` (short note) | Optional: "raw energy bridged like capacity (#139)" so D3 staleness is local |
100
+
101
+ ## Test strategy
102
+
103
+ ```bash
104
+ uv run pytest tests/test_header_mapping.py
105
+ uv run ruff check && uv run ruff format --check
106
+ ```
107
+
108
+ Existing totality / attr-sync tests should go green once exceptions and pairs
109
+ move together. No new fixture goldens expected (energy was not in
110
+ `RAW_PAIRS` before; bridge goldens that omit energy columns stay unaffected).
111
+
112
+ ## Open questions
113
+
114
+ 1. **Energy reset convention = capacity?** **Recommended: yes** (spec + #42
115
+ already say so). Accepting this plan accepts that answer for the GitHub
116
+ issue ask.
117
+ 2. **Update architecture-plan D3 in this PR?** **Recommended: no** — keep
118
+ core PR small; optional local design-guide note only. Say if you want the
119
+ architecture-plan edit bundled.
@@ -0,0 +1,18 @@
1
+ # Issue #139 status
2
+
3
+ - [x] Done
4
+
5
+ ## What's done
6
+
7
+ - Plan accepted (energy reset = capacity convention).
8
+ - `RAW_PAIRS` + `LEGACY_ATTR_TO_SCHEMA["raw"]` energy entries added.
9
+ - Dropped energy from `LEGACY_ONLY_RAW` / `NATIVE_ONLY_RAW` /
10
+ `LEGACY_ATTR_UNMAPPED["raw"]`.
11
+ - `test_known_translations` updated.
12
+ - Design note: `.issueflows/04-designs-and-guides/legacy-raw-energy-mapping.md`.
13
+ - `uv run pytest` — 261 passed; ruff clean.
14
+ - Version bump `0.2.2` → `0.2.3`; `HISTORY.md` promoted.
15
+
16
+ ## Remaining work
17
+
18
+ - None (ship via PR).
@@ -0,0 +1,24 @@
1
+ # Legacy raw energy mapping (#139)
2
+
3
+ **Context.** Raw `charge_energy` / `discharge_energy` used to sit in
4
+ `LEGACY_ONLY_RAW` (passthrough). Architecture-plan D3 still says that and
5
+ claims different reset semantics vs native cumulative energy.
6
+
7
+ **Decision.** Bridge them like capacity via `RAW_PAIRS` /
8
+ `LEGACY_ATTR_TO_SCHEMA["raw"]`:
9
+
10
+ | legacy value | native |
11
+ |---|---|
12
+ | `charge_energy` | `cumulative_charge_energy` |
13
+ | `discharge_energy` | `cumulative_discharge_energy` |
14
+
15
+ Reset convention matches capacity: cycle-cumulative, per direction
16
+ (`docs/specifications/harmonized-raw.md` Capacity convention). Wrong source
17
+ granularity → issue #42 normalizer, not leaving columns unmapped.
18
+
19
+ **Alternatives.** Keep passthrough (rejected — breaks `to_native()` /
20
+ `harmonize()` schema lookup). Synthesize energy from other signals (rejected —
21
+ rename only).
22
+
23
+ **Refs.** #139; cellpy #560; supersedes architecture-plan D3 for these two
24
+ columns only.
@@ -4,6 +4,13 @@ All notable changes to this project will be documented in this file.
4
4
 
5
5
  ## [Unreleased]
6
6
 
7
+ ## [0.2.3] - 2026-07-19
8
+
9
+ - Bridge legacy raw ``charge_energy`` / ``discharge_energy`` to
10
+ ``cumulative_charge_energy`` / ``cumulative_discharge_energy`` via
11
+ ``RAW_PAIRS`` and ``LEGACY_ATTR_TO_SCHEMA``, matching the capacity
12
+ cycle-cumulative convention. (#139)
13
+
7
14
  ## [0.2.2] - 2026-07-17
8
15
 
9
16
  - Legacy bridge carries ``test_id`` through step and summary frames (identity
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cellpycore
3
- Version: 0.2.2
3
+ Version: 0.2.3
4
4
  Summary: Core engine for cellpy: fast, thread-safe step and cycle summarization of battery-cycling raw data
5
5
  License-Expression: MIT
6
6
  License-File: LICENSE
@@ -322,7 +322,6 @@
322
322
  "320": "Community 320",
323
323
  "321": "Community 321",
324
324
  "322": "Community 322",
325
- "323": "Community 323",
326
325
  "324": "Community 324",
327
326
  "325": "Community 325",
328
327
  "326": "Community 326",
@@ -351,14 +350,11 @@
351
350
  "349": "Community 349",
352
351
  "350": "Community 350",
353
352
  "351": "Community 351",
354
- "352": "Community 352",
355
353
  "353": "Community 353",
356
354
  "354": "Community 354",
357
- "355": "Community 355",
358
355
  "356": "Community 356",
359
356
  "357": "Community 357",
360
357
  "358": "Community 358",
361
- "359": "Community 359",
362
358
  "360": "Community 360",
363
359
  "361": "Community 361",
364
360
  "362": "Community 362",