cellpycore 0.2.1__tar.gz → 0.2.2__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.
- cellpycore-0.2.2/.gitattributes +14 -0
- cellpycore-0.2.2/.issueflows/03-solved-issues/issue136_original.md +60 -0
- cellpycore-0.2.2/.issueflows/03-solved-issues/issue136_plan.md +87 -0
- cellpycore-0.2.2/.issueflows/03-solved-issues/issue136_status.md +18 -0
- cellpycore-0.2.2/.issueflows/04-designs-and-guides/legacy-bridge-test-id.md +15 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/04-designs-and-guides/this-project.md +10 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/HISTORY.md +9 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/PKG-INFO +1 -1
- {cellpycore-0.2.1 → cellpycore-0.2.2}/graphify-out/.graphify_labels.json +31 -1
- {cellpycore-0.2.1 → cellpycore-0.2.2}/graphify-out/GRAPH_REPORT.md +250 -148
- cellpycore-0.2.2/graphify-out/graph.html +305 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/graphify-out/graph.json +10586 -4989
- {cellpycore-0.2.1 → cellpycore-0.2.2}/graphify-out/manifest.json +66 -38
- {cellpycore-0.2.1 → cellpycore-0.2.2}/pyproject.toml +1 -1
- {cellpycore-0.2.1 → cellpycore-0.2.2}/src/cellpycore/cell_core.py +23 -3
- {cellpycore-0.2.1 → cellpycore-0.2.2}/src/cellpycore/legacy/headers.py +2 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/src/cellpycore/legacy/mapping.py +10 -8
- {cellpycore-0.2.1 → cellpycore-0.2.2}/src/cellpycore/merge.py +28 -1
- {cellpycore-0.2.1 → cellpycore-0.2.2}/uv.lock +1 -1
- cellpycore-0.2.1/graphify-out/graph.html +0 -305
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.aliases +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.cursor/rules/cellpy-core-migration.mdc +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.cursor/rules/graphify.mdc +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.cursor/rules/issueflow-rules.mdc +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.cursor/rules/kiss.mdc +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.cursor/rules/this-project.mdc +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.cursor/skills/caveman/SKILL.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.cursor/skills/grill-me/SKILL.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.cursor/skills/iflow/SKILL.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.cursor/skills/iflow-archive/SKILL.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.cursor/skills/iflow-cleanup/SKILL.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.cursor/skills/iflow-close/SKILL.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.cursor/skills/iflow-comments/SKILL.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.cursor/skills/iflow-cycle/SKILL.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.cursor/skills/iflow-epic/SKILL.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.cursor/skills/iflow-fix/SKILL.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.cursor/skills/iflow-graphify/SKILL.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.cursor/skills/iflow-history-update/SKILL.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.cursor/skills/iflow-init/SKILL.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.cursor/skills/iflow-pause/SKILL.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.cursor/skills/iflow-pick/SKILL.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.cursor/skills/iflow-plan/SKILL.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.cursor/skills/iflow-start/SKILL.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.cursor/skills/iflow-status/SKILL.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.cursor/skills/iflow-version-bump/SKILL.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.cursor/skills/iflow-yolo/SKILL.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.gitignore +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/00-tools/.gitkeep +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/00-tools/README.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/01-current-issues/.gitkeep +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/02-partly-solved-issues/.gitkeep +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/02-partly-solved-issues/issue100_original.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/02-partly-solved-issues/issue100_plan.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/02-partly-solved-issues/issue100_status.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/.gitkeep +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue10_original.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue10_plan.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue10_status.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue110_original.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue110_plan.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue110_status.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue112_original.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue112_plan.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue112_status.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue114_original.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue114_plan.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue114_status.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue115_original.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue115_plan.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue115_status.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue116_original.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue116_plan.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue116_status.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue117_original.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue117_plan.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue117_status.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue118_original.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue118_plan.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue118_status.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue121_original.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue121_plan.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue121_status.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue12_original.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue12_plan.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue12_status.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue13_original.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue13_plan.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue13_status.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue21_original.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue21_plan.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue21_status.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue22_original.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue22_plan.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue22_status.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue23_original.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue23_plan.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue23_status.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue24_original.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue24_status.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue29_original.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue29_plan.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue29_status.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue30_original.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue30_plan.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue30_status.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue32_original.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue32_plan.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue32_status.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue34_original.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue34_plan.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue36_original.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue36_status.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue39_original.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue39_plan.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue39_status.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue40_original.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue40_plan.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue40_status.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue41_original.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue41_plan.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue41_status.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue42_original.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue42_plan.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue42_status.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue43_original.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue43_plan.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue43_status.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue44_original.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue44_status.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue45_original.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue45_plan.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue45_status.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue50_original.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue50_plan.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue50_status.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue54_original.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue54_plan.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue54_status.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue55_original.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue55_plan.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue55_status.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue56_original.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue56_plan.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue56_status.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue62_original.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue62_plan.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue62_status.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue64_original.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue64_plan.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue64_status.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue66_original.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue66_plan.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue66_status.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue67_original.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue67_plan.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue67_status.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue68_original.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue68_plan.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue68_status.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue69_original.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue69_plan.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue69_status.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue70_original.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue70_plan.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue70_status.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue72_original.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue72_status.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue77_original.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue77_plan.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue77_status.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue82_original.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue82_status.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue84_original.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue84_plan.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue84_status.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue86_original.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue86_plan.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue86_status.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue91_original.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue91_plan.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue91_status.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue95_original.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue95_plan.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue95_status.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue96_original.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue96_plan.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue96_status.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue97_original.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue97_plan.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue97_status.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue98_original.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue98_plan.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue98_status.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue99_original.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue99_plan.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/03-solved-issues/issue99_status.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/04-designs-and-guides/.gitkeep +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/04-designs-and-guides/bdf-io-placement.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/04-designs-and-guides/cellpy-core-integration-into-cellpy.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/04-designs-and-guides/cellpy-core-integration-roadmap.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/04-designs-and-guides/cellpy-core-migration.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/04-designs-and-guides/code-review-2026-07.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/04-designs-and-guides/column-headers-review.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/04-designs-and-guides/metadata-scaffolding.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/04-designs-and-guides/nom-cap-naming.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/04-designs-and-guides/rawcols-dtype-map.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/04-designs-and-guides/release-procedure.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/04-designs-and-guides/selector-dead-code-deferral.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/04-designs-and-guides/step-c-rate-split.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/04-designs-and-guides/step-table-polars-migration.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/04-designs-and-guides/summary-extractors.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/04-designs-and-guides/test-data-and-fixtures.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/04-designs-and-guides/test-metadata-and-merging.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/04-designs-and-guides/zensical-docs.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/05-epics/.gitkeep +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.issueflows/config.toml +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.pre-commit-config.yaml +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.python-version +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.readthedocs.yaml +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/.vscode/settings.json +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/AGENTS.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/LICENSE +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/README.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/ROADMAP.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/SCRATCHPAD.md +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/graphify-out/.graphify_root +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/src/cellpycore/__init__.py +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/src/cellpycore/config.py +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/src/cellpycore/curves.py +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/src/cellpycore/exceptions.py +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/src/cellpycore/extractors.py +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/src/cellpycore/legacy/__init__.py +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/src/cellpycore/legacy/limits.py +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/src/cellpycore/legacy/meta.py +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/src/cellpycore/legacy/meta_mapping.py +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/src/cellpycore/legacy/mock_core.py +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/src/cellpycore/legacy/selectors.py +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/src/cellpycore/metadata/__init__.py +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/src/cellpycore/metadata/io.py +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/src/cellpycore/metadata/models.py +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/src/cellpycore/py.typed +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/src/cellpycore/settings_base.py +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/src/cellpycore/summarizers.py +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/src/cellpycore/testing/__init__.py +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/src/cellpycore/testing/mock_data.py +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/src/cellpycore/timestamps.py +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/src/cellpycore/units/__init__.py +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/src/cellpycore/units/converters.py +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/src/cellpycore/units/spec.py +0 -0
- {cellpycore-0.2.1 → cellpycore-0.2.2}/zensical.toml +0 -0
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# GitHub Linguist: keep language stats focused on library source.
|
|
2
|
+
# Without this, graphify-out/graph.html (~3.8MB) dominates as HTML.
|
|
3
|
+
|
|
4
|
+
graphify-out/** linguist-generated
|
|
5
|
+
docs/** linguist-documentation
|
|
6
|
+
tests/** linguist-documentation
|
|
7
|
+
.issueflows/** linguist-documentation
|
|
8
|
+
dev/** linguist-documentation
|
|
9
|
+
scripts/** linguist-documentation
|
|
10
|
+
|
|
11
|
+
# Cross-platform line endings for shell helpers
|
|
12
|
+
.aliases text eol=lf
|
|
13
|
+
*.sh text eol=lf
|
|
14
|
+
*.lock text eol=lf
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# Issue #136: Legacy bridge: preserve test_id through steps/summary output; legacy-schema support for merge_data
|
|
2
|
+
|
|
3
|
+
Source: https://github.com/cellpy/cellpy-core/issues/136
|
|
4
|
+
|
|
5
|
+
## Original issue text
|
|
6
|
+
|
|
7
|
+
## Summary
|
|
8
|
+
|
|
9
|
+
The `OldCellpyCellCore` legacy bridge strips `test_id` from the outbound
|
|
10
|
+
step/summary frames, which degrades multi-test (campaign-merged) objects to
|
|
11
|
+
cycle-only summary grouping. cellpy #507 works around it; these requests make
|
|
12
|
+
the workaround unnecessary and unblock campaign merges that keep original
|
|
13
|
+
per-test cycle numbers.
|
|
14
|
+
|
|
15
|
+
## Details
|
|
16
|
+
|
|
17
|
+
1. **Outbound `test_id` stripping.** `_native_steps_to_legacy` re-projects to a
|
|
18
|
+
fixed legacy column order (cell_core.py ~781-815) and the summary path
|
|
19
|
+
filters to `_legacy_summary_column_order` (~928-1065); `test_id` is in
|
|
20
|
+
`NATIVE_ONLY_STEP` / `NATIVE_ONLY_CYCLE` (mapping.py ~191-196, 227-231). The
|
|
21
|
+
inbound side is fine: a raw `test_id` column passes through (exception
|
|
22
|
+
lists, mapping.py ~129-144) and `make_step_table` groups on
|
|
23
|
+
`(test_id, cycle_num, step_num)` (proven by the cycler_small golden).
|
|
24
|
+
2. **Bridge summary rebuilds native steps from the stripped legacy steps**
|
|
25
|
+
(`make_core_summary`, cell_core.py ~1010-1012), so
|
|
26
|
+
`use_tid` (summarizers.py ~792) is always False through the bridge —
|
|
27
|
+
cycle-only grouping, no per-test windowing, and cross-test collision when
|
|
28
|
+
cycle numbers overlap. cellpy #507's workaround: re-stamp `test_id` onto the
|
|
29
|
+
legacy steps frame post-bridge (depends on the inbound step rename staying
|
|
30
|
+
rename-only with no column filtering — please treat that as a contract or
|
|
31
|
+
provide the fix below).
|
|
32
|
+
3. **`_add_legacy_summary_cruft`** (cell_core.py ~960-978) does global pandas
|
|
33
|
+
cumsums (cumulated CE, shifted_*, cumulated_ric*) even when the engine
|
|
34
|
+
windowed per test — these columns are wrong for multi-test objects.
|
|
35
|
+
4. **`merge_data(schema=<legacy Schema>)` raises `AttributeError`** —
|
|
36
|
+
`HeadersNormal` lacks the native attribute names (`datapoint_num`,
|
|
37
|
+
`cycle_num`, `test_id`), and passing the native schema instead silently
|
|
38
|
+
skips offsets on legacy-named frames (`_max_column` returns 0 for missing
|
|
39
|
+
columns). Either document legacy schemas as unsupported for merge/update, or
|
|
40
|
+
add attribute aliases so bridge consumers can call
|
|
41
|
+
`merge_data`/`update_data` directly (cellpy #507 mirrors the semantics in
|
|
42
|
+
pandas instead).
|
|
43
|
+
|
|
44
|
+
## Requests
|
|
45
|
+
|
|
46
|
+
- [ ] Carry `test_id` through the legacy step output (or have
|
|
47
|
+
`make_core_summary` reuse the native steps it already computed instead of
|
|
48
|
+
rebuilding from the stripped legacy frame).
|
|
49
|
+
- [ ] Optionally expose `test_id` in the legacy summary output behind a flag.
|
|
50
|
+
- [ ] Window `_add_legacy_summary_cruft` per `test_id` when present.
|
|
51
|
+
- [ ] Resolve the `merge_data` legacy-schema story (docs or aliases).
|
|
52
|
+
- [ ] Together these unblock `renumber_cycles=False` (original per-test cycle
|
|
53
|
+
numbers) for cellpy's campaign merge ahead of the native-schema path
|
|
54
|
+
(cellpy #511).
|
|
55
|
+
|
|
56
|
+
## Refs
|
|
57
|
+
|
|
58
|
+
cellpy jepegit/cellpy#507 (campaign merge + workaround), jepegit/cellpy#511
|
|
59
|
+
(native schema opt-in), core tests test_golden.py (cycler_small composite-key
|
|
60
|
+
golden), test_merge.py / test_e2e.py (native multi-test invariants).
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
# Issue #136 — plan
|
|
2
|
+
|
|
3
|
+
Source: https://github.com/cellpy/cellpy-core/issues/136
|
|
4
|
+
|
|
5
|
+
## Goal
|
|
6
|
+
|
|
7
|
+
Legacy bridge keeps `test_id` on outbound steps (and summary when present) so
|
|
8
|
+
campaign-merged multi-test objects get per-test summary windowing through the
|
|
9
|
+
bridge — no cellpy #507 re-stamp workaround. Also fix legacy-cruft cumsums and
|
|
10
|
+
clarify `merge_data` + legacy schema.
|
|
11
|
+
|
|
12
|
+
## Constraints
|
|
13
|
+
|
|
14
|
+
- Back-compat: single-test objects already have `test_id=0` on raw; emitting
|
|
15
|
+
`test_id` on steps/summary is **additive** (extra column). Goldens that pin
|
|
16
|
+
exact column sets may need updates.
|
|
17
|
+
- Mapping totality (`NATIVE_ONLY_*` / attr maps) must stay consistent.
|
|
18
|
+
- Do not change native engine behaviour; bridge-only (+ headers/mapping).
|
|
19
|
+
- Unblocks cellpy #510 V2-15 pin after a **new** cellpycore PyPI release.
|
|
20
|
+
|
|
21
|
+
### Prior art
|
|
22
|
+
|
|
23
|
+
| Hit | Role | Plan |
|
|
24
|
+
|-----|------|------|
|
|
25
|
+
| [`OldCellpyCellCore._native_steps_to_legacy`](../../src/cellpycore/cell_core.py) / `_legacy_step_column_order` | Drops unknown cols via fixed order | **Extend** order with `test_id` when present |
|
|
26
|
+
| [`make_core_summary`](../../src/cellpycore/cell_core.py) rebuilds native steps from legacy `data.steps` | `use_tid` false after strip | Fixed once steps carry `test_id` through rename |
|
|
27
|
+
| [`_add_legacy_summary_cruft`](../../src/cellpycore/cell_core.py) | Global pandas cumsums | **Window** by `test_id` when column present |
|
|
28
|
+
| [`NATIVE_ONLY_STEP` / `NATIVE_ONLY_CYCLE`](../../src/cellpycore/legacy/mapping.py) | Declares `test_id` intentionally unbridged | **Remove** `test_id`; add identity scalar/cycle pairs |
|
|
29
|
+
| [`HeadersStepTable` / `HeadersSummary`](../../src/cellpycore/legacy/headers.py) | No `test_id` field today | **Add** `test_id: str = "test_id"` |
|
|
30
|
+
| cellpy [`cellreader.make_step_table` re-stamp](../../../cellpy/cellpy/readers/cellreader.py) (~2293) | Workaround | Becomes redundant after this; leave for a cellpy follow-up |
|
|
31
|
+
| [`merge_data`](../../src/cellpycore/merge.py) | Expects native `Schema` attrs | **Document + hard error** on legacy header schema (cellpy already uses pandas merge) |
|
|
32
|
+
| Toolbox `00-tools/` | Empty | None |
|
|
33
|
+
| Graph | Bridge / mapping communities | Touch `cell_core` + `legacy/mapping` + `legacy/headers` |
|
|
34
|
+
|
|
35
|
+
## Approach
|
|
36
|
+
|
|
37
|
+
1. **Steps outbound:** Add `HeadersStepTable.test_id`. Put `test_id` early in
|
|
38
|
+
`_legacy_step_column_order` (before cycle/step). Add identity
|
|
39
|
+
`STEP_SCALAR_PAIRS` entry `("test_id", "test_id")`; drop `test_id` from
|
|
40
|
+
`NATIVE_ONLY_STEP`. Update attr maps (`LEGACY_ATTR_TO_SCHEMA` /
|
|
41
|
+
`LEGACY_ATTR_UNMAPPED`) for the new header field.
|
|
42
|
+
2. **Summary outbound:** Add `HeadersSummary.test_id`. Include in
|
|
43
|
+
`_legacy_summary_column_order` (near `cycle_index`) when present after rename.
|
|
44
|
+
Add identity `CYCLE_PAIRS` entry; drop `test_id` from `NATIVE_ONLY_CYCLE`.
|
|
45
|
+
No flag — always pass through when the native summary has it (single-test →
|
|
46
|
+
all `0`).
|
|
47
|
+
3. **Cruft:** In `_add_legacy_summary_cruft`, if `test_id` in summary columns and
|
|
48
|
+
`nunique > 1` (or always when column present): compute cumsums / shifted /
|
|
49
|
+
ric **per group**; else keep today's global behaviour.
|
|
50
|
+
4. **`merge_data` + legacy schema:** At entry, if `schema.raw` is
|
|
51
|
+
`HeadersNormal` (or lacks `datapoint_num` / `cycle_num` / `test_id`), raise
|
|
52
|
+
`TypeError` with a clear message: use `config.default_schema()` / native
|
|
53
|
+
`Schema`. Document in `merge_data` docstring. No full legacy-schema merge
|
|
54
|
+
implementation in this issue (cellpy does not call it).
|
|
55
|
+
5. **Tests:** Bridge multi-test fixture (or reuse schema/e2e multi-test raw) →
|
|
56
|
+
`make_core_step_table` / `make_core_summary` → assert `test_id` on steps and
|
|
57
|
+
summary `{0,1}`; assert summary cumulatives restart per test. Mapping
|
|
58
|
+
totality tests update with the exception-set moves. One test that
|
|
59
|
+
`merge_data(..., schema=legacy.schema)` raises the new TypeError.
|
|
60
|
+
|
|
61
|
+
## Files to touch
|
|
62
|
+
|
|
63
|
+
| Path | Change |
|
|
64
|
+
|------|--------|
|
|
65
|
+
| `src/cellpycore/legacy/headers.py` | `test_id` on step + summary headers |
|
|
66
|
+
| `src/cellpycore/legacy/mapping.py` | pairs / `NATIVE_ONLY_*` / attr maps + comments |
|
|
67
|
+
| `src/cellpycore/cell_core.py` | column order, cruft windowing |
|
|
68
|
+
| `tests/test_*.py` (bridge / mapping / merge) | new + update totality |
|
|
69
|
+
| `CHANGELOG` / HISTORY if present | note for 0.2.2 release |
|
|
70
|
+
|
|
71
|
+
## Test strategy
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
uv run pytest
|
|
75
|
+
uv run ruff check && uv run ruff format --check
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
Focus: new bridge multi-test test + `tests/test_header_mapping.py` totality +
|
|
79
|
+
`tests/test_merge.py` legacy-schema error.
|
|
80
|
+
|
|
81
|
+
## Decisions (confirmed 2026-07-17)
|
|
82
|
+
|
|
83
|
+
1. **Summary `test_id`:** always when present (no flag).
|
|
84
|
+
2. **`merge_data` legacy schema:** hard `TypeError` + docstring (also
|
|
85
|
+
`update_data`).
|
|
86
|
+
3. **Cruft windowing:** when `test_id` column exists (groupby).
|
|
87
|
+
4. **Goldens:** regenerate stage-B step/summary snapshots (additive `test_id`).
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Issue #136 — status
|
|
2
|
+
|
|
3
|
+
- [x] Done
|
|
4
|
+
|
|
5
|
+
## What's done
|
|
6
|
+
|
|
7
|
+
- Plan confirmed (2026-07-17): carry `test_id` on steps+summary; window cruft;
|
|
8
|
+
hard-error legacy schema on merge/update; regenerate goldens.
|
|
9
|
+
- Implemented on `136-legacy-bridge-preserve-test-id`.
|
|
10
|
+
- Version bumped `0.2.1` → `0.2.2` (static `pyproject.toml`); HISTORY promoted.
|
|
11
|
+
- `uv run pytest` 261 passed; ruff clean.
|
|
12
|
+
- Close: commit + PR; PyPI release via `release` from `main` after merge
|
|
13
|
+
(see `release-procedure.md`).
|
|
14
|
+
|
|
15
|
+
## Remaining work
|
|
16
|
+
|
|
17
|
+
- None for the code issue. Post-merge: `iflow cleanup` + cut GitHub/PyPI
|
|
18
|
+
release for `0.2.2`, then re-pin cellpy.
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# Legacy bridge carries `test_id` (#136)
|
|
2
|
+
|
|
3
|
+
**Context.** `OldCellpyCellCore` used to drop `test_id` from outbound steps /
|
|
4
|
+
summary via fixed column orders + `NATIVE_ONLY_*` exceptions. That forced cellpy
|
|
5
|
+
#507 to re-stamp steps so campaign summaries could window per test.
|
|
6
|
+
|
|
7
|
+
**Decision.** Bridge `test_id` as an identity column on steps and summary when
|
|
8
|
+
present. Window `_add_legacy_summary_cruft` by `test_id`. `merge_data` /
|
|
9
|
+
`update_data` require native `config.Schema` (hard `TypeError` on `Headers*`).
|
|
10
|
+
|
|
11
|
+
**Alternatives.** Opt-in flag for summary `test_id` — rejected (additive is
|
|
12
|
+
enough). Full legacy-schema merge aliases — rejected (step/cycle attrs incomplete;
|
|
13
|
+
cellpy uses pandas merge).
|
|
14
|
+
|
|
15
|
+
**Refs.** cellpy #507 / #510 / #511; release after this → re-pin cellpy.
|
|
@@ -79,3 +79,13 @@ uv run pre-commit install
|
|
|
79
79
|
the public API.
|
|
80
80
|
- Per-step stat column names (`<signal>_<stat>`) are a fixed engine contract,
|
|
81
81
|
not schema-injected (issue #70).
|
|
82
|
+
|
|
83
|
+
## Release & version bump
|
|
84
|
+
|
|
85
|
+
Static version in ``pyproject.toml`` (``project.version``). Bump with::
|
|
86
|
+
|
|
87
|
+
uv version --bump patch|minor|major
|
|
88
|
+
|
|
89
|
+
Cut a GitHub release from ``main`` after merge (``release`` alias / see
|
|
90
|
+
``release-procedure.md``) so ``release.yml`` publishes ``cellpycore`` to PyPI.
|
|
91
|
+
|
|
@@ -4,6 +4,15 @@ All notable changes to this project will be documented in this file.
|
|
|
4
4
|
|
|
5
5
|
## [Unreleased]
|
|
6
6
|
|
|
7
|
+
## [0.2.2] - 2026-07-17
|
|
8
|
+
|
|
9
|
+
- Legacy bridge carries ``test_id`` through step and summary frames (identity
|
|
10
|
+
mapping) so campaign-merged multi-test objects keep per-test summary
|
|
11
|
+
windowing without a consumer re-stamp. ``_add_legacy_summary_cruft`` cumsums
|
|
12
|
+
are windowed per ``test_id`` when present. ``merge_data`` / ``update_data``
|
|
13
|
+
raise ``TypeError`` on legacy ``Headers*`` schemas (require native
|
|
14
|
+
``config.Schema``). Golden step/summary snapshots regenerated. (#136)
|
|
15
|
+
|
|
7
16
|
## [0.2.1] - 2026-07-15
|
|
8
17
|
|
|
9
18
|
- Fix `OldCellpyCellCore.make_core_summary` to pass `test_mode` into
|
|
@@ -297,15 +297,18 @@
|
|
|
297
297
|
"295": "Community 295",
|
|
298
298
|
"296": "Community 296",
|
|
299
299
|
"297": "Community 297",
|
|
300
|
+
"298": "Community 298",
|
|
300
301
|
"299": "Community 299",
|
|
301
302
|
"300": "Community 300",
|
|
302
303
|
"301": "Community 301",
|
|
303
304
|
"302": "Community 302",
|
|
305
|
+
"303": "Community 303",
|
|
304
306
|
"304": "Community 304",
|
|
305
307
|
"305": "Community 305",
|
|
306
308
|
"306": "Community 306",
|
|
307
309
|
"307": "Community 307",
|
|
308
310
|
"308": "Community 308",
|
|
311
|
+
"309": "Community 309",
|
|
309
312
|
"310": "Community 310",
|
|
310
313
|
"311": "Community 311",
|
|
311
314
|
"312": "Community 312",
|
|
@@ -313,13 +316,16 @@
|
|
|
313
316
|
"314": "Community 314",
|
|
314
317
|
"315": "Community 315",
|
|
315
318
|
"316": "Community 316",
|
|
319
|
+
"317": "Community 317",
|
|
316
320
|
"318": "Community 318",
|
|
317
321
|
"319": "Community 319",
|
|
318
322
|
"320": "Community 320",
|
|
323
|
+
"321": "Community 321",
|
|
319
324
|
"322": "Community 322",
|
|
320
325
|
"323": "Community 323",
|
|
321
326
|
"324": "Community 324",
|
|
322
327
|
"325": "Community 325",
|
|
328
|
+
"326": "Community 326",
|
|
323
329
|
"327": "Community 327",
|
|
324
330
|
"328": "Community 328",
|
|
325
331
|
"329": "Community 329",
|
|
@@ -337,5 +343,29 @@
|
|
|
337
343
|
"341": "Community 341",
|
|
338
344
|
"342": "Community 342",
|
|
339
345
|
"343": "Community 343",
|
|
340
|
-
"344": "Community 344"
|
|
346
|
+
"344": "Community 344",
|
|
347
|
+
"345": "Community 345",
|
|
348
|
+
"346": "Community 346",
|
|
349
|
+
"347": "Community 347",
|
|
350
|
+
"348": "Community 348",
|
|
351
|
+
"349": "Community 349",
|
|
352
|
+
"350": "Community 350",
|
|
353
|
+
"351": "Community 351",
|
|
354
|
+
"352": "Community 352",
|
|
355
|
+
"353": "Community 353",
|
|
356
|
+
"354": "Community 354",
|
|
357
|
+
"355": "Community 355",
|
|
358
|
+
"356": "Community 356",
|
|
359
|
+
"357": "Community 357",
|
|
360
|
+
"358": "Community 358",
|
|
361
|
+
"359": "Community 359",
|
|
362
|
+
"360": "Community 360",
|
|
363
|
+
"361": "Community 361",
|
|
364
|
+
"362": "Community 362",
|
|
365
|
+
"363": "Community 363",
|
|
366
|
+
"364": "Community 364",
|
|
367
|
+
"365": "Community 365",
|
|
368
|
+
"366": "Community 366",
|
|
369
|
+
"367": "Community 367",
|
|
370
|
+
"368": "Community 368"
|
|
341
371
|
}
|