solarwindpy 0.0.1.dev0__py3-none-any.whl → 0.1.0__py3-none-any.whl

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.

Potentially problematic release.


This version of solarwindpy might be problematic. Click here for more details.

Files changed (412) hide show
  1. plans/.velocity/metrics.json +96 -0
  2. plans/0-overview-template.md +268 -0
  3. plans/N-phase-template.md +106 -0
  4. plans/PLAN_AUDIT_SUMMARY.md +173 -0
  5. plans/TEMPLATE-USAGE-GUIDE.md +198 -0
  6. plans/__init__.py +1 -0
  7. plans/abandoned/compaction-agent-system/0-Overview.md +123 -0
  8. plans/abandoned/compaction-agent-system/agents-index-update-plan.md +109 -0
  9. plans/abandoned/compaction-agent-system/compacted_state.md +85 -0
  10. plans/abandoned/compaction-agent-system/implementation-plan.md +107 -0
  11. plans/abandoned/compaction-agent-system/system-validation-report.md +159 -0
  12. plans/abandoned/compaction-agent-system/usage-guide.md +210 -0
  13. plans/abandoned/hook-system-enhancement/0-Overview.md +214 -0
  14. plans/abandoned/hook-system-enhancement/1-Phase1-Core-Infrastructure.md +313 -0
  15. plans/abandoned/hook-system-enhancement/2-Phase2-Intelligent-Testing.md +385 -0
  16. plans/abandoned/hook-system-enhancement/3-Phase3-Physics-Validation.md +444 -0
  17. plans/abandoned/hook-system-enhancement/4-Phase4-Performance-Monitoring.md +458 -0
  18. plans/abandoned/hook-system-enhancement/5-Phase5-Developer-Experience.md +532 -0
  19. plans/abandoned/hook-system-enhancement/6-Implementation-Timeline.md +274 -0
  20. plans/abandoned/hook-system-enhancement/7-Risk-Management.md +376 -0
  21. plans/abandoned/hook-system-enhancement/8-Testing-Strategy.md +579 -0
  22. plans/abandoned/readthedocs-automation/0-Overview.md +247 -0
  23. plans/abandoned/readthedocs-automation/1-Emergency-Documentation-Fixes.md +270 -0
  24. plans/abandoned/readthedocs-automation/2-Template-System-Enhancement.md +811 -0
  25. plans/abandoned/readthedocs-automation/3-Quality-Audit-ReadTheDocs-Integration.md +844 -0
  26. plans/abandoned/readthedocs-automation/4-Plan-Consolidation-Cleanup.md +632 -0
  27. plans/abandoned/readthedocs-automation/9-Closeout.md +207 -0
  28. plans/abandoned/readthedocs-automation/ABANDONMENT_REASON.md +72 -0
  29. plans/cicd-architecture-redesign/0-Overview.md +193 -0
  30. plans/cicd-architecture-redesign/1-Workflow-Creation.md +103 -0
  31. plans/cicd-architecture-redesign/2-Version-Detection.md +123 -0
  32. plans/cicd-architecture-redesign/3-Deployment-Gates.md +169 -0
  33. plans/cicd-architecture-redesign/4-RC-Testing.md +194 -0
  34. plans/cicd-architecture-redesign/5-TestPyPI-Validation.md +264 -0
  35. plans/cicd-architecture-redesign/6-Production-Release.md +263 -0
  36. plans/cicd-architecture-redesign/7-Cleanup.md +243 -0
  37. plans/cicd-architecture-redesign/8-Documentation.md +285 -0
  38. plans/cicd-architecture-redesign/Closeout.md +225 -0
  39. plans/closeout-template.md +259 -0
  40. plans/completed/circular-import-audit/0-Overview.md +152 -0
  41. plans/completed/circular-import-audit/1-Static-Dependency-Analysis.md +62 -0
  42. plans/completed/circular-import-audit/2-Dynamic-Import-Testing.md +56 -0
  43. plans/completed/circular-import-audit/3-Performance-Impact-Assessment.md +56 -0
  44. plans/completed/circular-import-audit/4-Issue-Remediation.md +78 -0
  45. plans/completed/circular-import-audit/5-Preventive-Infrastructure.md +89 -0
  46. plans/completed/claude-settings-ecosystem-alignment/0-Overview.md +162 -0
  47. plans/completed/claude-settings-ecosystem-alignment/1-Security-Foundation.md +148 -0
  48. plans/completed/claude-settings-ecosystem-alignment/2-Hook-Integration.md +158 -0
  49. plans/completed/claude-settings-ecosystem-alignment/3-Agent-System-Integration.md +177 -0
  50. plans/completed/claude-settings-ecosystem-alignment/4-Enhanced-Workflow-Automation.md +159 -0
  51. plans/completed/claude-settings-ecosystem-alignment/5-Validation-Monitoring.md +181 -0
  52. plans/completed/claude-settings-ecosystem-alignment/compacted_session_state.md +290 -0
  53. plans/completed/combined_plan_with_checklist_documentation/1-Overview-and-Goals.md +51 -0
  54. plans/completed/combined_plan_with_checklist_documentation/2-Toolchain-and-Hosting.md +69 -0
  55. plans/completed/combined_plan_with_checklist_documentation/3-Repository-Structure.md +61 -0
  56. plans/completed/combined_plan_with_checklist_documentation/4-Configuration-and-Standards.md +70 -0
  57. plans/completed/combined_plan_with_checklist_documentation/5-Documentation-Content.md +62 -0
  58. plans/completed/combined_plan_with_checklist_documentation/6-CI-CD-and-Validation.md +58 -0
  59. plans/completed/combined_plan_with_checklist_documentation/7-Maintenance.md +55 -0
  60. plans/completed/combined_test_plan_with_checklist_fitfunctions/0-Overview.md +135 -0
  61. plans/completed/combined_test_plan_with_checklist_fitfunctions/1-Common-fixtures.md +59 -0
  62. plans/completed/combined_test_plan_with_checklist_fitfunctions/10-power_laws.md +56 -0
  63. plans/completed/combined_test_plan_with_checklist_fitfunctions/2-core.py-FitFunction.md +118 -0
  64. plans/completed/combined_test_plan_with_checklist_fitfunctions/3-gaussians.py-Gaussian-GaussianNormalized-GaussianLn.md +69 -0
  65. plans/completed/combined_test_plan_with_checklist_fitfunctions/4-trend_fits.py-TrendFit.md +99 -0
  66. plans/completed/combined_test_plan_with_checklist_fitfunctions/5-plots.py-FFPlot.md +98 -0
  67. plans/completed/combined_test_plan_with_checklist_fitfunctions/6-tex_info.py-TeXinfo.md +79 -0
  68. plans/completed/combined_test_plan_with_checklist_fitfunctions/7-Justification.md +49 -0
  69. plans/completed/combined_test_plan_with_checklist_fitfunctions/8-exponentials.md +64 -0
  70. plans/completed/combined_test_plan_with_checklist_fitfunctions/9-lines.md +58 -0
  71. plans/completed/combined_test_plan_with_checklist_plotting/0-Overview.md +142 -0
  72. plans/completed/combined_test_plan_with_checklist_plotting/1-base.py.md +90 -0
  73. plans/completed/combined_test_plan_with_checklist_plotting/10-labels-special.py.md +102 -0
  74. plans/completed/combined_test_plan_with_checklist_plotting/11-labels-chemistry.py.md +212 -0
  75. plans/completed/combined_test_plan_with_checklist_plotting/12-labels-composition.py.md +242 -0
  76. plans/completed/combined_test_plan_with_checklist_plotting/13-labels-datetime.py.md +247 -0
  77. plans/completed/combined_test_plan_with_checklist_plotting/14-labels-elemental_abundance.py.md +274 -0
  78. plans/completed/combined_test_plan_with_checklist_plotting/15-visual-validation.md +256 -0
  79. plans/completed/combined_test_plan_with_checklist_plotting/16-integration-testing.md +266 -0
  80. plans/completed/combined_test_plan_with_checklist_plotting/17-performance-benchmarks.md +267 -0
  81. plans/completed/combined_test_plan_with_checklist_plotting/18-Fixtures-and-Utilities.md +86 -0
  82. plans/completed/combined_test_plan_with_checklist_plotting/2-agg_plot.py.md +90 -0
  83. plans/completed/combined_test_plan_with_checklist_plotting/3-histograms.py.md +201 -0
  84. plans/completed/combined_test_plan_with_checklist_plotting/4-scatter.py.md +167 -0
  85. plans/completed/combined_test_plan_with_checklist_plotting/5-spiral.py.md +216 -0
  86. plans/completed/combined_test_plan_with_checklist_plotting/6-orbits.py.md +108 -0
  87. plans/completed/combined_test_plan_with_checklist_plotting/7-tools.py.md +86 -0
  88. plans/completed/combined_test_plan_with_checklist_plotting/8-select_data_from_figure.py.md +97 -0
  89. plans/completed/combined_test_plan_with_checklist_plotting/9-labels-base.py.md +88 -0
  90. plans/completed/combined_test_plan_with_checklist_solar_activity/.gitkeep +0 -0
  91. plans/completed/combined_test_plan_with_checklist_solar_activity/0-Overview.md +170 -0
  92. plans/completed/combined_test_plan_with_checklist_solar_activity/1-Package-Entry-Point-__init__.py.md +121 -0
  93. plans/completed/combined_test_plan_with_checklist_solar_activity/2-Core-Base-Classes-base.py.md +142 -0
  94. plans/completed/combined_test_plan_with_checklist_solar_activity/3-Plotting-Helpers-plots.py.md +123 -0
  95. plans/completed/combined_test_plan_with_checklist_solar_activity/4-LISIRD-Sub-package.md +119 -0
  96. plans/completed/combined_test_plan_with_checklist_solar_activity/5-Extrema-Calculator.md +103 -0
  97. plans/completed/combined_test_plan_with_checklist_solar_activity/6-Sunspot-Number-Sub-package.md +163 -0
  98. plans/completed/combined_test_plan_with_checklist_solar_activity/7-Sunspot-Number-Init.py.md +217 -0
  99. plans/completed/combined_test_plan_with_checklist_solar_activity/compacted_state.md +52 -0
  100. plans/completed/compaction-agent-modernization/0-Overview.md +156 -0
  101. plans/completed/compaction-agent-modernization/1-Architecture-Audit-Gap-Analysis.md +132 -0
  102. plans/completed/compaction-agent-modernization/2-Token-Baseline-Recalibration.md +153 -0
  103. plans/completed/compaction-agent-modernization/3-Agent-Reference-Updates.md +184 -0
  104. plans/completed/compaction-agent-modernization/4-Compression-Algorithm-Modernization.md +238 -0
  105. plans/completed/compaction-agent-modernization/5-Workflow-Integration-Streamlining.md +252 -0
  106. plans/completed/compaction-agent-modernization/6-Template-Structure-Optimization.md +240 -0
  107. plans/completed/compaction-agent-modernization/7-Integration-Testing-Validation.md +292 -0
  108. plans/completed/compaction-hook-enhancement/0-Overview.md +150 -0
  109. plans/completed/compaction-hook-enhancement/1-Token-Estimation-Enhancement.md +179 -0
  110. plans/completed/compaction-hook-enhancement/2-Compression-Intelligence.md +294 -0
  111. plans/completed/compaction-hook-enhancement/3-Git-Integration-Metadata.md +310 -0
  112. plans/completed/compaction-hook-enhancement/4-Session-Continuity-Features.md +358 -0
  113. plans/completed/compaction-hook-enhancement/5-Testing-Strategy.md +404 -0
  114. plans/completed/compaction-hook-enhancement/6-Integration-Roadmap.md +319 -0
  115. plans/completed/compaction-hook-enhancement/compacted_state.md +142 -0
  116. plans/completed/docstring-audit-enhancement/0-Overview.md +274 -0
  117. plans/completed/docstring-audit-enhancement/1-Infrastructure-Setup-and-Validation-Tools.md +206 -0
  118. plans/completed/docstring-audit-enhancement/2-Core-Physics-Modules-Enhancement.md +237 -0
  119. plans/completed/docstring-audit-enhancement/3-Fitfunctions-Mathematical-Modules-Enhancement.md +188 -0
  120. plans/completed/docstring-audit-enhancement/4-Plotting-Visualization-Modules-Enhancement.md +243 -0
  121. plans/completed/docstring-audit-enhancement/5-Specialized-Modules-Enhancement.md +216 -0
  122. plans/completed/docstring-audit-enhancement/6-Validation-and-Integration.md +216 -0
  123. plans/completed/fitfunctions-testing-implementation/0-Overview.md +130 -0
  124. plans/completed/fitfunctions-testing-implementation/1-Test-Infrastructure-Setup.md +79 -0
  125. plans/completed/fitfunctions-testing-implementation/2-Common-Fixtures-Test-Utilities.md +104 -0
  126. plans/completed/fitfunctions-testing-implementation/3-Core-FitFunction-Testing.md +168 -0
  127. plans/completed/fitfunctions-testing-implementation/4-Specialized-Function-Classes.md +210 -0
  128. plans/completed/fitfunctions-testing-implementation/5-Advanced-Classes-Testing.md +214 -0
  129. plans/completed/fitfunctions-testing-implementation/6-Plotting-Integration-Testing.md +231 -0
  130. plans/completed/fitfunctions-testing-implementation/7-Extended-Coverage-BONUS.md +184 -0
  131. plans/completed/numpy-docstring-conversion-plan/numpy-docstring-conversion-plan.md +118 -0
  132. plans/completed/pr-review-remediation/0-Overview.md +138 -0
  133. plans/completed/pr-review-remediation/1-Critical-Safety-Improvements.md +179 -0
  134. plans/completed/pr-review-remediation/2-Smart-Timeouts-Validation.md +399 -0
  135. plans/completed/pr-review-remediation/3-Enhanced-GitHub-Integration.md +258 -0
  136. plans/completed/pr-review-remediation/compacted_state.md +66 -0
  137. plans/completed/python-310-migration/0-Overview.md +390 -0
  138. plans/completed/python-310-migration/1-Planning-Setup.md +164 -0
  139. plans/completed/python-310-migration/2-Implementation.md +256 -0
  140. plans/completed/python-310-migration/3-Testing-Validation.md +335 -0
  141. plans/completed/python-310-migration/4-Documentation-Release.md +274 -0
  142. plans/completed/python-310-migration/5-Closeout.md +252 -0
  143. plans/completed/requirements-management-consolidation/0-Overview.md +118 -0
  144. plans/completed/requirements-management-consolidation/1-Documentation-Validation-Environment-Setup.md +116 -0
  145. plans/completed/requirements-management-consolidation/2-Requirements-Consolidation.md +161 -0
  146. plans/completed/requirements-management-consolidation/3-Workflow-Automation-Final-Integration.md +196 -0
  147. plans/completed/single-ecosystem-plan-implementation/0-Overview.md +83 -0
  148. plans/completed/single-ecosystem-plan-implementation/1-Plan-Preservation-Session-Management.md +38 -0
  149. plans/completed/single-ecosystem-plan-implementation/2-File-Structure-Optimization.md +43 -0
  150. plans/completed/single-ecosystem-plan-implementation/3-Plan-Migration-Archive-Setup.md +82 -0
  151. plans/completed/single-ecosystem-plan-implementation/4-Agent-System-Transformation.md +108 -0
  152. plans/completed/single-ecosystem-plan-implementation/5-Template-System-Enhancement.md +131 -0
  153. plans/completed/single-ecosystem-plan-implementation/6-Final-Validation-Testing.md +120 -0
  154. plans/completed/test-directory-consolidation/0-Overview.md +51 -0
  155. plans/completed/test-directory-consolidation/1-Structure-Preparation.md +82 -0
  156. plans/completed/test-directory-consolidation/2-File-Migration.md +100 -0
  157. plans/completed/test-directory-consolidation/3-Import-Transformation.md +117 -0
  158. plans/completed/test-directory-consolidation/4-Configuration-Consolidation.md +140 -0
  159. plans/completed/test-directory-consolidation/5-Validation.md +152 -0
  160. plans/completed/test-directory-consolidation/6-Cleanup.md +156 -0
  161. plans/completed/test-planning-agents-architecture/0-Overview.md +79 -0
  162. plans/completed/test-planning-agents-architecture/1-Branch-Isolation-Testing.md +49 -0
  163. plans/completed/test-planning-agents-architecture/2-Cross-Branch-Coordination.md +51 -0
  164. plans/completed/test-planning-agents-architecture/3-Merge-Workflow-Testing.md +48 -0
  165. plans/deployment-semver-pypi-rtd/0-Overview.md +463 -0
  166. plans/deployment-semver-pypi-rtd/1-Semantic-Versioning-Foundation.md +136 -0
  167. plans/deployment-semver-pypi-rtd/2-PyPI-Deployment-Infrastructure.md +168 -0
  168. plans/deployment-semver-pypi-rtd/3-Release-Automation.md +214 -0
  169. plans/deployment-semver-pypi-rtd/4-Plan-Closeout.md +543 -0
  170. plans/deployment-semver-pypi-rtd/compacted_session_state.md +172 -0
  171. plans/deployment-semver-pypi-rtd/compacted_state.md +131 -0
  172. plans/documentation-code-audit/0-Overview.md +393 -0
  173. plans/documentation-code-audit/1-Discovery-Inventory.md +183 -0
  174. plans/documentation-code-audit/2-Execution-Environment-Setup.md +263 -0
  175. plans/documentation-code-audit/3-Systematic-Validation.md +322 -0
  176. plans/documentation-code-audit/4-Code-Example-Remediation.md +358 -0
  177. plans/documentation-code-audit/5-Physics-MultiIndex-Compliance.md +464 -0
  178. plans/documentation-code-audit/6-Doctest-Integration.md +523 -0
  179. plans/documentation-code-audit/7-Reporting-Documentation.md +498 -0
  180. plans/documentation-code-audit/8-Closeout.md +456 -0
  181. plans/documentation-rebuild-session/compacted_state.md +109 -0
  182. plans/documentation-rendering-fixes/0-Overview.md +104 -0
  183. plans/documentation-rendering-fixes/1-Sphinx-Build-Diagnostics-Warning-Audit.md +101 -0
  184. plans/documentation-rendering-fixes/2-Configuration-Infrastructure-Fixes.md +113 -0
  185. plans/documentation-rendering-fixes/3-Docstring-Syntax-Audit-Repair.md +131 -0
  186. plans/documentation-rendering-fixes/4-HTML-Page-Rendering-Verification.md +113 -0
  187. plans/documentation-rendering-fixes/5-Advanced-Documentation-Quality-Assurance.md +119 -0
  188. plans/documentation-rendering-fixes/6-Documentation-Build-Optimization-Testing.md +129 -0
  189. plans/documentation-rendering-fixes/compacted_state.md +132 -0
  190. plans/documentation-template-fix/0-Overview.md +197 -0
  191. plans/documentation-template-fix/1-Template-System-Analysis.md +269 -0
  192. plans/documentation-template-fix/2-Template-Modification.md +609 -0
  193. plans/documentation-template-fix/3-Build-System-Integration.md +766 -0
  194. plans/documentation-template-fix/4-Testing-Validation.md +1399 -0
  195. plans/documentation-template-fix/5-Documentation-Training.md +602 -0
  196. plans/documentation-workflow-fix/0-Overview.md +222 -0
  197. plans/documentation-workflow-fix/1-Immediate-Fixes.md +238 -0
  198. plans/documentation-workflow-fix/2-Configuration-Setup.md +298 -0
  199. plans/documentation-workflow-fix/3-Pre-commit-Integration.md +382 -0
  200. plans/documentation-workflow-fix/4-Workflow-Improvements.md +446 -0
  201. plans/documentation-workflow-fix/5-Documentation-and-Training.md +527 -0
  202. plans/duplicate-object-warnings-fix-plan.md +130 -0
  203. plans/github-issues-migration/0-Overview.md +510 -0
  204. plans/github-issues-migration/1-Foundation-Label-System.md +180 -0
  205. plans/github-issues-migration/2-Migration-Tool-Rewrite.md +235 -0
  206. plans/github-issues-migration/3-CLI-Integration-Automation.md +169 -0
  207. plans/github-issues-migration/4-Validated-Migration.md +252 -0
  208. plans/github-issues-migration/5-Documentation-Training.md +171 -0
  209. plans/github-issues-migration/6-Closeout.md +179 -0
  210. plans/github-workflows-repair/repair-plan.md +299 -0
  211. plans/issues_from_plans.py +342 -0
  212. plans/pr-270-doc-validation-fixes/0-Overview.md +354 -0
  213. plans/pr-270-doc-validation-fixes/1-Critical-PR-Fixes.md +117 -0
  214. plans/pr-270-doc-validation-fixes/2-Framework-Right-Sizing.md +129 -0
  215. plans/pr-270-doc-validation-fixes/3-Sustainable-Documentation.md +126 -0
  216. plans/pr-270-doc-validation-fixes/4-Closeout-Migration.md +143 -0
  217. plans/pr-270-doc-validation-fixes/PLAN_COMPLETED.md +149 -0
  218. plans/python-310-migration/0-Overview.md +390 -0
  219. plans/python-310-migration/1-Planning-Setup.md +164 -0
  220. plans/python-310-migration/2-Implementation.md +256 -0
  221. plans/python-310-migration/3-Testing-Validation.md +335 -0
  222. plans/python-310-migration/4-Documentation-Release.md +274 -0
  223. plans/python-310-migration/5-Closeout.md +252 -0
  224. plans/readthedocs-simplified/0-Overview.md +243 -0
  225. plans/readthedocs-simplified/1-Immediate-Fixes.md +216 -0
  226. plans/readthedocs-simplified/2-Template-Simplification.md +278 -0
  227. plans/readthedocs-simplified/3-ReadTheDocs-Setup.md +298 -0
  228. plans/readthedocs-simplified/4-Testing-Validation.md +328 -0
  229. plans/readthedocs-simplified/5-Closeout.md +231 -0
  230. plans/readthedocs-simplified/compacted_state.md +127 -0
  231. plans/session-compaction-2025-08-12/compacted_state.md +114 -0
  232. plans/session-compaction-2025-08-13/compacted_state.md +145 -0
  233. plans/session-continuity-protocol/0-Overview.md +35 -0
  234. plans/session-continuity-protocol/1-Core-Principles-Framework.md +40 -0
  235. plans/session-continuity-protocol/2-Pre-Session-Validation-System.md +79 -0
  236. plans/session-continuity-protocol/3-Context-Switching-Prevention.md +87 -0
  237. plans/session-continuity-protocol/4-Progress-Tracking-Recovery.md +100 -0
  238. plans/sphinx-warnings-analysis.md +222 -0
  239. plans/systemprompt-optimization/0-Overview.md +447 -0
  240. plans/systemprompt-optimization/1-Deploy-SystemPrompt.md +114 -0
  241. plans/systemprompt-optimization/2-Documentation-Alignment.md +198 -0
  242. plans/systemprompt-optimization/3-Monitoring-Infrastructure.md +396 -0
  243. plans/systemprompt-optimization/4-Implementation-Script.md +450 -0
  244. plans/systemprompt-optimization/9-Closeout.md +165 -0
  245. plans/systemprompt-optimization/compacted_state.md +143 -0
  246. plans/template-value-propositions/0-Overview.md +357 -0
  247. plans/template-value-propositions/1-Value-Proposition-Framework-Design.md +144 -0
  248. plans/template-value-propositions/2-Plan-Template-Enhancement.md +178 -0
  249. plans/template-value-propositions/3-Value-Generator-Hook-Implementation.md +291 -0
  250. plans/template-value-propositions/4-Value-Validator-Hook-Implementation.md +274 -0
  251. plans/template-value-propositions/5-Documentation-Agent-Updates.md +219 -0
  252. plans/template-value-propositions/6-Integration-Testing-Validation.md +247 -0
  253. plans/tests-audit/0-Overview.md +410 -0
  254. plans/tests-audit/1-Discovery-Inventory.md +170 -0
  255. plans/tests-audit/2-Physics-Validation-Audit.md +195 -0
  256. plans/tests-audit/3-Architecture-Compliance.md +195 -0
  257. plans/tests-audit/4-Numerical-Stability-Analysis.md +203 -0
  258. plans/tests-audit/5-Documentation-Enhancement.md +220 -0
  259. plans/tests-audit/6-Audit-Deliverables.md +220 -0
  260. plans/tests-audit/7-Closeout.md +252 -0
  261. plans/tests-audit/artifacts/ARCHITECTURE_COMPLIANCE_REPORT.md +315 -0
  262. plans/tests-audit/artifacts/ARCHITECTURE_RECOMMENDATIONS.md +943 -0
  263. plans/tests-audit/artifacts/COMPREHENSIVE_AUDIT_REPORT.md +356 -0
  264. plans/tests-audit/artifacts/CONTRIBUTING_ENHANCED_TEMPLATE.md +419 -0
  265. plans/tests-audit/artifacts/COVERAGE_GAP_ANALYSIS.md +152 -0
  266. plans/tests-audit/artifacts/DOCUMENTATION_ENHANCEMENT_REPORT.md +502 -0
  267. plans/tests-audit/artifacts/EXECUTIVE_AUDIT_SUMMARY.md +129 -0
  268. plans/tests-audit/artifacts/IMPLEMENTATION_ROADMAP.md +647 -0
  269. plans/tests-audit/artifacts/NUMERICAL_RECOMMENDATIONS.md +739 -0
  270. plans/tests-audit/artifacts/NUMERICAL_STABILITY_GUIDE_TEMPLATE.rst +451 -0
  271. plans/tests-audit/artifacts/NUMERICAL_STABILITY_REPORT.md +301 -0
  272. plans/tests-audit/artifacts/PHASE_3_SUMMARY.md +280 -0
  273. plans/tests-audit/artifacts/PHASE_4_SUMMARY.md +229 -0
  274. plans/tests-audit/artifacts/PHASE_5_SUMMARY.md +292 -0
  275. plans/tests-audit/artifacts/PHASE_6_CLOSEOUT.md +278 -0
  276. plans/tests-audit/artifacts/PHYSICS_GUIDE_TEMPLATE.rst +268 -0
  277. plans/tests-audit/artifacts/PHYSICS_VALIDATION_REPORT.md +235 -0
  278. plans/tests-audit/artifacts/TECHNICAL_DELIVERABLES_PACKAGE.md +2502 -0
  279. plans/tests-audit/artifacts/TEST_INVENTORY.csv +1204 -0
  280. plans/tests-audit/artifacts/TEST_INVENTORY.md +135 -0
  281. plans/tests-audit/artifacts/test_discovery_analysis.py +231 -0
  282. plans/tests-audit/artifacts/test_parser.py +395 -0
  283. solarwindpy/README.md +3 -0
  284. solarwindpy/Untitled.ipynb +54 -0
  285. solarwindpy/__init__.py +74 -0
  286. solarwindpy/core/__init__.py +23 -0
  287. solarwindpy/core/alfvenic_turbulence.py +804 -0
  288. solarwindpy/core/base.py +267 -0
  289. solarwindpy/core/ions.py +309 -0
  290. solarwindpy/core/plasma.py +2133 -0
  291. solarwindpy/core/spacecraft.py +256 -0
  292. solarwindpy/core/tensor.py +90 -0
  293. solarwindpy/core/units_constants.py +199 -0
  294. solarwindpy/core/vector.py +328 -0
  295. solarwindpy/fitfunctions/__init__.py +20 -0
  296. solarwindpy/fitfunctions/core.py +734 -0
  297. solarwindpy/fitfunctions/exponentials.py +188 -0
  298. solarwindpy/fitfunctions/gaussians.py +264 -0
  299. solarwindpy/fitfunctions/lines.py +116 -0
  300. solarwindpy/fitfunctions/moyal.py +71 -0
  301. solarwindpy/fitfunctions/plots.py +751 -0
  302. solarwindpy/fitfunctions/power_laws.py +209 -0
  303. solarwindpy/fitfunctions/tex_info.py +568 -0
  304. solarwindpy/fitfunctions/trend_fits.py +482 -0
  305. solarwindpy/instabilities/__init__.py +16 -0
  306. solarwindpy/instabilities/beta_ani.py +82 -0
  307. solarwindpy/instabilities/verscharen2016.py +631 -0
  308. solarwindpy/plotting/__init__.py +33 -0
  309. solarwindpy/plotting/agg_plot.py +489 -0
  310. solarwindpy/plotting/base.py +465 -0
  311. solarwindpy/plotting/hist1d.py +405 -0
  312. solarwindpy/plotting/hist2d.py +1035 -0
  313. solarwindpy/plotting/histograms.py +1845 -0
  314. solarwindpy/plotting/labels/__init__.py +104 -0
  315. solarwindpy/plotting/labels/base.py +686 -0
  316. solarwindpy/plotting/labels/chemistry.py +19 -0
  317. solarwindpy/plotting/labels/composition.py +100 -0
  318. solarwindpy/plotting/labels/datetime.py +235 -0
  319. solarwindpy/plotting/labels/elemental_abundance.py +73 -0
  320. solarwindpy/plotting/labels/special.py +794 -0
  321. solarwindpy/plotting/orbits.py +515 -0
  322. solarwindpy/plotting/scatter.py +99 -0
  323. solarwindpy/plotting/select_data_from_figure.py +329 -0
  324. solarwindpy/plotting/spiral.py +980 -0
  325. solarwindpy/plotting/tools.py +434 -0
  326. solarwindpy/scripts/__init__.py +1 -0
  327. solarwindpy/scripts/logs/.gitignore +1 -0
  328. solarwindpy/solar_activity/__init__.py +53 -0
  329. solarwindpy/solar_activity/base.py +605 -0
  330. solarwindpy/solar_activity/lisird/__init__.py +3 -0
  331. solarwindpy/solar_activity/lisird/extrema_calculator.py +394 -0
  332. solarwindpy/solar_activity/lisird/lisird.py +319 -0
  333. solarwindpy/solar_activity/plots.py +116 -0
  334. solarwindpy/solar_activity/sunspot_number/.DS_Store +0 -0
  335. solarwindpy/solar_activity/sunspot_number/__init__.py +3 -0
  336. solarwindpy/solar_activity/sunspot_number/sidc.py +556 -0
  337. solarwindpy/solar_activity/sunspot_number/ssn_extrema.csv +72 -0
  338. solarwindpy/solar_activity/sunspot_number/ssn_extrema.csv.silso +72 -0
  339. solarwindpy/tools/__init__.py +162 -0
  340. solarwindpy-0.1.0.dist-info/METADATA +181 -0
  341. solarwindpy-0.1.0.dist-info/RECORD +409 -0
  342. {solarwindpy-0.0.1.dev0.dist-info → solarwindpy-0.1.0.dist-info}/WHEEL +1 -1
  343. solarwindpy-0.1.0.dist-info/licenses/LICENSE.rst +32 -0
  344. solarwindpy-0.1.0.dist-info/top_level.txt +3 -0
  345. tests/__init__.py +1 -0
  346. tests/conftest.py +10 -0
  347. tests/core/__init__.py +1 -0
  348. tests/core/test_alfvenic_turbulence.py +544 -0
  349. tests/core/test_base.py +112 -0
  350. tests/core/test_base_head_tail.py +29 -0
  351. tests/core/test_base_mi_tuples.py +11 -0
  352. tests/core/test_core_verify_datetimeindex.py +32 -0
  353. tests/core/test_ions.py +325 -0
  354. tests/core/test_plasma.py +2581 -0
  355. tests/core/test_plasma_io.py +12 -0
  356. tests/core/test_quantities.py +507 -0
  357. tests/core/test_spacecraft.py +210 -0
  358. tests/core/test_units_constants.py +22 -0
  359. tests/data/epoch.csv +4 -0
  360. tests/data/plasma.csv +4 -0
  361. tests/data/spacecraft.csv +4 -0
  362. tests/fitfunctions/conftest.py +60 -0
  363. tests/fitfunctions/test_core.py +193 -0
  364. tests/fitfunctions/test_exponentials.py +342 -0
  365. tests/fitfunctions/test_gaussians.py +142 -0
  366. tests/fitfunctions/test_lines.py +349 -0
  367. tests/fitfunctions/test_moyal.py +258 -0
  368. tests/fitfunctions/test_plots.py +258 -0
  369. tests/fitfunctions/test_power_laws.py +365 -0
  370. tests/fitfunctions/test_tex_info.py +183 -0
  371. tests/fitfunctions/test_trend_fit_properties.py +31 -0
  372. tests/fitfunctions/test_trend_fits.py +244 -0
  373. tests/plotting/__init__.py +1 -0
  374. tests/plotting/labels/__init__.py +1 -0
  375. tests/plotting/labels/test_chemistry.py +243 -0
  376. tests/plotting/labels/test_composition.py +345 -0
  377. tests/plotting/labels/test_datetime.py +445 -0
  378. tests/plotting/labels/test_elemental_abundance.py +366 -0
  379. tests/plotting/labels/test_init.py +66 -0
  380. tests/plotting/labels/test_labels_base.py +347 -0
  381. tests/plotting/labels/test_special.py +550 -0
  382. tests/plotting/test_agg_plot.py +602 -0
  383. tests/plotting/test_base.py +752 -0
  384. tests/plotting/test_fixtures_utilities.py +775 -0
  385. tests/plotting/test_histograms.py +546 -0
  386. tests/plotting/test_integration.py +675 -0
  387. tests/plotting/test_orbits.py +435 -0
  388. tests/plotting/test_performance.py +708 -0
  389. tests/plotting/test_scatter.py +752 -0
  390. tests/plotting/test_select_data_from_figure.py +1209 -0
  391. tests/plotting/test_spiral.py +573 -0
  392. tests/plotting/test_tools.py +607 -0
  393. tests/plotting/test_visual_validation.py +465 -0
  394. tests/solar_activity/__init__.py +1 -0
  395. tests/solar_activity/lisird/__init__.py +1 -0
  396. tests/solar_activity/lisird/test_extrema_calculator.py +593 -0
  397. tests/solar_activity/lisird/test_lisird_id.py +187 -0
  398. tests/solar_activity/sunspot_number/__init__.py +1 -0
  399. tests/solar_activity/sunspot_number/test_init.py +399 -0
  400. tests/solar_activity/sunspot_number/test_sidc.py +465 -0
  401. tests/solar_activity/sunspot_number/test_sidc_id.py +223 -0
  402. tests/solar_activity/sunspot_number/test_sidc_loader.py +275 -0
  403. tests/solar_activity/sunspot_number/test_ssn_extrema.py +406 -0
  404. tests/solar_activity/test_base.py +656 -0
  405. tests/solar_activity/test_init.py +396 -0
  406. tests/solar_activity/test_plots.py +371 -0
  407. tests/test_circular_imports.py +408 -0
  408. tests/test_issue_titles.py +25 -0
  409. tests/test_statusline.py +298 -0
  410. solarwindpy-0.0.1.dev0.dist-info/METADATA +0 -14
  411. solarwindpy-0.0.1.dev0.dist-info/RECORD +0 -4
  412. solarwindpy-0.0.1.dev0.dist-info/top_level.txt +0 -1
@@ -0,0 +1,811 @@
1
+ # Phase 2: Template System Enhancement
2
+
3
+ ## Objective
4
+ Implement a robust, physics-aware template system that eliminates manual RST editing by making all documentation customizations persistent through templates that survive build regeneration.
5
+
6
+ ## Context
7
+ After Phase 1, documentation builds are functional. Phase 2 establishes the template foundation that enables automated, consistent documentation generation while preserving scientific context and customizations.
8
+
9
+ ## Current Template Infrastructure
10
+
11
+ ### Existing Components
12
+ - **Template directory**: `docs/source/_templates/autosummary/`
13
+ - **Template files**: `module.rst`, `class.rst`
14
+ - **Sphinx configuration**: `autosummary_generate = True`
15
+ - **Post-processing**: `docs/add_no_index.py` script
16
+ - **Build integration**: Makefile with `api` target
17
+
18
+ ### Template Processing Pipeline
19
+ ```
20
+ sphinx-apidoc → Template Application → Post-processing → HTML Generation
21
+ ↓ ↓ ↓ ↓
22
+ RST Generation Template Merge add_no_index.py Final Docs
23
+ ```
24
+
25
+ ## Implementation Strategy
26
+
27
+ ### Step 2.1: Template Analysis and Baseline (30 minutes)
28
+
29
+ **Current Template Assessment**:
30
+ ```bash
31
+ # Examine existing templates
32
+ ls -la docs/source/_templates/autosummary/
33
+ cat docs/source/_templates/autosummary/module.rst
34
+ cat docs/source/_templates/autosummary/class.rst
35
+ ```
36
+
37
+ **Identify Enhancement Areas**:
38
+ 1. **Physics Context**: Add scientific documentation sections
39
+ 2. **Cross-references**: Improve linking between physics concepts
40
+ 3. **Units and Dimensions**: Standardize physical quantity documentation
41
+ 4. **Examples**: Template-driven example generation
42
+ 5. **Bibliography**: Physics-specific references
43
+
44
+ ### Step 2.2: Enhanced Module Template (60 minutes)
45
+
46
+ **Target**: `docs/source/_templates/autosummary/module.rst`
47
+
48
+ **Enhanced Template Structure**:
49
+ ```rst
50
+ {{ fullname | escape | underline}}
51
+
52
+ {% if members %}
53
+ .. currentmodule:: {{ fullname }}
54
+
55
+ {% if fullname.endswith('.core') %}
56
+ Physics Overview
57
+ ================
58
+
59
+ This module provides core physics functionality for solar wind analysis.
60
+
61
+ Physical Principles
62
+ -------------------
63
+
64
+ {% if 'plasma' in fullname %}
65
+ **Plasma Physics Context**:
66
+ - Multi-species plasma analysis
67
+ - Kinetic theory applications
68
+ - Thermal properties and distributions
69
+ - Magnetic field interactions
70
+
71
+ **Key Physical Relationships**:
72
+ - Thermal speed: :math:`v_{th} = \sqrt{2kT/m}` (SolarWindPy convention)
73
+ - Alfvén speed: :math:`V_A = B/\sqrt{\mu_0 \rho}`
74
+ - Plasma beta: :math:`\beta = 2\mu_0 nkT/B^2`
75
+
76
+ {% elif 'ions' in fullname %}
77
+ **Ion Species Analysis**:
78
+ - Multi-species moment calculations
79
+ - Composition and abundance
80
+ - Temperature and velocity distributions
81
+ - Species-specific physical properties
82
+
83
+ **Physical Quantities**:
84
+ - Number density: particles per cubic meter
85
+ - Bulk velocity: km/s (converted for display)
86
+ - Temperature: Kelvin or eV (configurable)
87
+ - Thermal speed: km/s (mw² = 2kT convention)
88
+
89
+ {% endif %}
90
+
91
+ Units and Conventions
92
+ ---------------------
93
+
94
+ **SolarWindPy Physics Standards**:
95
+ - **Internal units**: SI base units throughout
96
+ - **Display units**: Convenient units for solar wind context
97
+ - **Missing data**: NaN (never 0 or -999)
98
+ - **Time series**: Chronological order maintained
99
+ - **Thermal speed**: mw² = 2kT convention consistently applied
100
+
101
+ {% endif %}
102
+
103
+ {% block modules %}
104
+ {% if modules %}
105
+ .. rubric:: Modules
106
+
107
+ .. autosummary::
108
+ :toctree:
109
+ :template: module.rst
110
+ {% for item in modules %}
111
+ {{ item }}
112
+ {%- endfor %}
113
+ {% endif %}
114
+ {% endblock %}
115
+
116
+ {% block classes %}
117
+ {% if classes %}
118
+ .. rubric:: Classes
119
+
120
+ .. autosummary::
121
+ :toctree:
122
+ :template: class.rst
123
+ {% for item in classes %}
124
+ {{ item }}
125
+ {%- endfor %}
126
+ {% endif %}
127
+ {% endblock %}
128
+
129
+ {% block functions %}
130
+ {% if functions %}
131
+ .. rubric:: Functions
132
+
133
+ .. autosummary::
134
+ :toctree:
135
+ {% for item in functions %}
136
+ {{ item }}
137
+ {%- endfor %}
138
+ {% endif %}
139
+ {% endblock %}
140
+
141
+ {% block exceptions %}
142
+ {% if exceptions %}
143
+ .. rubric:: Exceptions
144
+
145
+ .. autosummary::
146
+ :toctree:
147
+ {% for item in exceptions %}
148
+ {{ item }}
149
+ {%- endfor %}
150
+ {% endif %}
151
+ {% endblock %}
152
+
153
+ {% endif %}
154
+ ```
155
+
156
+ ### Step 2.3: Enhanced Class Template (90 minutes)
157
+
158
+ **Target**: `docs/source/_templates/autosummary/class.rst`
159
+
160
+ **Physics-Aware Class Template**:
161
+ ```rst
162
+ {{ fullname | escape | underline}}
163
+
164
+ .. currentmodule:: {{ module }}
165
+
166
+ .. autoclass:: {{ objname }}
167
+ :no-index:
168
+
169
+ {% if objname in ['Plasma', 'Ion', 'Base'] %}
170
+
171
+ Physical Properties
172
+ ===================
173
+
174
+ {% if objname == 'Plasma' %}
175
+
176
+ **Multi-Species Plasma Container**
177
+
178
+ The Plasma class represents a collection of ion species and magnetic field data,
179
+ providing comprehensive analysis capabilities for solar wind plasma physics.
180
+
181
+ **Physical Context**:
182
+ - Contains multiple Ion instances representing different species
183
+ - Manages magnetic field vector data and derived quantities
184
+ - Provides plasma-level calculations and analysis methods
185
+ - Maintains temporal coherence across all plasma components
186
+
187
+ **Key Physical Relationships**:
188
+
189
+ .. math::
190
+
191
+ \rho = \sum_i n_i m_i \quad \text{(total mass density)}
192
+
193
+ V_A = \frac{B}{\sqrt{\mu_0 \rho}} \quad \text{(Alfvén velocity)}
194
+
195
+ \beta = \frac{2\mu_0 \sum_i n_i k T_i}{B^2} \quad \text{(plasma beta)}
196
+
197
+ {% elif objname == 'Ion' %}
198
+
199
+ **Single Ion Species Analysis**
200
+
201
+ The Ion class represents a single ion species with its associated physical
202
+ properties, moments, and derived quantities for solar wind analysis.
203
+
204
+ **Physical Properties**:
205
+ - Number density (n): particles per cubic meter
206
+ - Bulk velocity (V): three-component vector in km/s
207
+ - Temperature (T): scalar or tensor in Kelvin
208
+ - Thermal speed (w): based on mw² = 2kT convention
209
+
210
+ **Moment Calculations**:
211
+
212
+ .. math::
213
+
214
+ n = \int f(\mathbf{v}) d^3v \quad \text{(zeroth moment)}
215
+
216
+ \mathbf{V} = \frac{1}{n} \int \mathbf{v} f(\mathbf{v}) d^3v \quad \text{(first moment)}
217
+
218
+ T = \frac{m}{3nk} \int |\mathbf{v} - \mathbf{V}|^2 f(\mathbf{v}) d^3v \quad \text{(temperature)}
219
+
220
+ {% elif objname == 'Base' %}
221
+
222
+ **Foundation Physics Class**
223
+
224
+ The Base class provides fundamental physics constants, unit conversions,
225
+ and common functionality shared across all SolarWindPy physics classes.
226
+
227
+ **Physical Constants**:
228
+ - Fundamental constants (k, c, mp, me, etc.)
229
+ - Unit conversion factors
230
+ - Standard solar wind reference values
231
+
232
+ **Conventions**:
233
+ - SI units for all internal calculations
234
+ - Consistent treatment of missing data (NaN)
235
+ - Thermal speed convention: mw² = 2kT
236
+
237
+ {% endif %}
238
+
239
+ Units and Dimensions
240
+ ====================
241
+
242
+ **Internal Representation** (SI base units):
243
+ - Length: meters
244
+ - Time: seconds
245
+ - Mass: kilograms
246
+ - Temperature: Kelvin
247
+ - Magnetic field: Tesla
248
+
249
+ **Display Units** (solar wind context):
250
+ - Velocity: km/s
251
+ - Number density: particles/cm³
252
+ - Magnetic field: nT
253
+ - Temperature: K or eV
254
+
255
+ **Data Quality Standards**:
256
+ - Missing values: NaN (numpy.nan)
257
+ - Invalid values: Never 0 or -999
258
+ - Time series: Monotonic time ordering
259
+ - Physical constraints: Positive definite quantities
260
+
261
+ {% endif %}
262
+
263
+ .. rubric:: Methods
264
+
265
+ .. autosummary::
266
+ {% for item in methods %}
267
+ ~{{ name }}.{{ item }}
268
+ {%- endfor %}
269
+
270
+ .. rubric:: Attributes
271
+
272
+ .. autosummary::
273
+ {% for item in attributes %}
274
+ ~{{ name }}.{{ item }}
275
+ {%- endfor %}
276
+ ```
277
+
278
+ ### Step 2.4: Enhanced Post-Processing (45 minutes)
279
+
280
+ **Target**: `docs/add_no_index.py`
281
+
282
+ **Enhanced Post-Processing Framework**:
283
+ ```python
284
+ #!/usr/bin/env python3
285
+ """
286
+ Enhanced post-processing for SolarWindPy documentation.
287
+ Handles template-generated content validation and physics-specific enhancements.
288
+ """
289
+
290
+ import os
291
+ import re
292
+ import glob
293
+ import sys
294
+ from pathlib import Path
295
+ from typing import List, Dict, Tuple
296
+
297
+ class DocumentationProcessor:
298
+ """Enhanced documentation post-processor for physics content."""
299
+
300
+ def __init__(self, source_dir: str = "source/api"):
301
+ self.source_dir = Path(source_dir)
302
+ self.errors: List[str] = []
303
+ self.warnings: List[str] = []
304
+ self.stats: Dict[str, int] = {
305
+ 'files_processed': 0,
306
+ 'physics_sections_added': 0,
307
+ 'cross_references_fixed': 0,
308
+ 'validation_warnings': 0,
309
+ 'no_index_added': 0
310
+ }
311
+
312
+ def process_no_index_directives(self, content: str) -> str:
313
+ """Add :no-index: directives to automodule declarations."""
314
+ pattern = r'(\.\. automodule:: .+?)(\n :members:)'
315
+ replacement = r'\1\n :no-index:\2'
316
+ new_content = re.sub(pattern, replacement, content)
317
+
318
+ if new_content != content:
319
+ self.stats['no_index_added'] += 1
320
+
321
+ return new_content
322
+
323
+ def validate_physics_sections(self, content: str, filename: str) -> str:
324
+ """Validate and enhance physics-specific sections."""
325
+ physics_classes = ['Plasma', 'Ion', 'Base']
326
+ physics_modules = ['plasma', 'ions', 'base']
327
+
328
+ # Check for physics classes
329
+ for physics_class in physics_classes:
330
+ if f'autoclass:: solarwindpy.core.{physics_class.lower()}.{physics_class}' in content:
331
+ if 'Physical Properties' not in content:
332
+ self.warnings.append(f"{filename}: Missing Physical Properties section for {physics_class}")
333
+ self.stats['validation_warnings'] += 1
334
+ else:
335
+ self.stats['physics_sections_added'] += 1
336
+
337
+ # Check for physics modules
338
+ for physics_module in physics_modules:
339
+ if f'solarwindpy.core.{physics_module}' in content:
340
+ if 'Physics Overview' not in content and 'module.rst' in filename:
341
+ self.warnings.append(f"{filename}: Missing Physics Overview for {physics_module}")
342
+ self.stats['validation_warnings'] += 1
343
+
344
+ return content
345
+
346
+ def fix_cross_references(self, content: str) -> str:
347
+ """Fix and enhance cross-references for physics concepts."""
348
+ cross_ref_patterns = {
349
+ # Fix unlinked class references
350
+ r'(?<!:py:class:`~)solarwindpy\.core\.plasma\.Plasma(?!`)':
351
+ r':py:class:`~solarwindpy.core.plasma.Plasma`',
352
+ r'(?<!:py:class:`~)solarwindpy\.core\.ions\.Ion(?!`)':
353
+ r':py:class:`~solarwindpy.core.ions.Ion`',
354
+ r'(?<!:py:class:`~)solarwindpy\.core\.base\.Base(?!`)':
355
+ r':py:class:`~solarwindpy.core.base.Base`',
356
+
357
+ # Fix physics units
358
+ r'km/s(?! |$|\.)': r'km/s',
359
+ r'nT(?! |$|\.)': r'nT',
360
+ r'particles/cm³': r'particles/cm³',
361
+ }
362
+
363
+ for pattern, replacement in cross_ref_patterns.items():
364
+ if re.search(pattern, content):
365
+ content = re.sub(pattern, replacement, content)
366
+ self.stats['cross_references_fixed'] += 1
367
+
368
+ return content
369
+
370
+ def process_file(self, file_path: Path) -> None:
371
+ """Process a single RST file with all enhancements."""
372
+ try:
373
+ with open(file_path, 'r', encoding='utf-8') as f:
374
+ content = f.read()
375
+
376
+ original_content = content
377
+
378
+ # Apply all processing steps
379
+ content = self.process_no_index_directives(content)
380
+ content = self.validate_physics_sections(content, file_path.name)
381
+ content = self.fix_cross_references(content)
382
+
383
+ # Only write if content changed
384
+ if content != original_content:
385
+ with open(file_path, 'w', encoding='utf-8') as f:
386
+ f.write(content)
387
+
388
+ self.stats['files_processed'] += 1
389
+
390
+ except Exception as e:
391
+ error_msg = f"Error processing {file_path}: {e}"
392
+ self.errors.append(error_msg)
393
+ print(f"❌ {error_msg}", file=sys.stderr)
394
+
395
+ def process_all_files(self) -> bool:
396
+ """Process all RST files in the API directory."""
397
+ rst_files = list(self.source_dir.glob("*.rst"))
398
+
399
+ if not rst_files:
400
+ self.errors.append(f"No RST files found in {self.source_dir}")
401
+ return False
402
+
403
+ print(f"🔄 Processing {len(rst_files)} documentation files...")
404
+
405
+ for rst_file in rst_files:
406
+ self.process_file(rst_file)
407
+
408
+ return len(self.errors) == 0
409
+
410
+ def print_summary(self) -> None:
411
+ """Print processing summary with physics-specific metrics."""
412
+ print(f"\n📊 Enhanced Documentation Processing Summary:")
413
+ print(f" • Files processed: {self.stats['files_processed']}")
414
+ print(f" • :no-index: directives added: {self.stats['no_index_added']}")
415
+ print(f" • Physics sections validated: {self.stats['physics_sections_added']}")
416
+ print(f" • Cross-references fixed: {self.stats['cross_references_fixed']}")
417
+ print(f" • Validation warnings: {self.stats['validation_warnings']}")
418
+ print(f" • Processing errors: {len(self.errors)}")
419
+
420
+ if self.warnings:
421
+ print(f"\n⚠️ Physics Validation Warnings:")
422
+ for warning in self.warnings:
423
+ print(f" • {warning}")
424
+
425
+ if self.errors:
426
+ print(f"\n❌ Processing Errors:")
427
+ for error in self.errors:
428
+ print(f" • {error}")
429
+
430
+ def main():
431
+ """Main processing function with enhanced capabilities."""
432
+ processor = DocumentationProcessor()
433
+
434
+ success = processor.process_all_files()
435
+ processor.print_summary()
436
+
437
+ if success:
438
+ print("\n✅ Enhanced documentation processing completed successfully!")
439
+ print(" 📋 Physics sections validated")
440
+ print(" 🔗 Cross-references standardized")
441
+ print(" 📚 Template enhancements applied")
442
+ return 0
443
+ else:
444
+ print("\n❌ Documentation processing failed!")
445
+ return 1
446
+
447
+ if __name__ == "__main__":
448
+ sys.exit(main())
449
+ ```
450
+
451
+ ### Step 2.5: Build System Integration (45 minutes)
452
+
453
+ **Enhanced Makefile Integration**:
454
+
455
+ **Target**: `docs/Makefile` - Add enhanced API generation target
456
+
457
+ ```makefile
458
+ # Enhanced API documentation generation with template validation
459
+ .PHONY: api-enhanced
460
+ api-enhanced:
461
+ @echo "🔍 Validating documentation templates..."
462
+ @python -c "
463
+ import os
464
+ from pathlib import Path
465
+ templates = Path('source/_templates/autosummary')
466
+ required = ['module.rst', 'class.rst']
467
+ missing = [t for t in required if not (templates / t).exists()]
468
+ if missing:
469
+ print('❌ Missing templates:', missing)
470
+ exit(1)
471
+ else:
472
+ print('✅ Templates validated')
473
+ "
474
+ @echo "🔧 Generating enhanced API documentation..."
475
+ sphinx-apidoc -f -o $(SOURCEDIR)/api ../../solarwindpy/solarwindpy --separate
476
+ @echo "⚙️ Applying physics-aware post-processing..."
477
+ python add_no_index.py
478
+ @echo "✅ Enhanced API generation complete"
479
+
480
+ # Update HTML target to use enhanced API
481
+ html: api-enhanced
482
+ @echo "🏗️ Building HTML documentation with enhanced templates..."
483
+ $(SPHINXBUILD) -b html $(SOURCEDIR) $(BUILDDIR)/html $(SPHINXOPTS)
484
+ @echo "✅ Enhanced HTML documentation build complete"
485
+
486
+ # Development target with validation
487
+ .PHONY: dev-build
488
+ dev-build: api-enhanced
489
+ @echo "🔧 Development build with physics validation..."
490
+ $(SPHINXBUILD) -b html $(SOURCEDIR) $(BUILDDIR)/html $(SPHINXOPTS) -W
491
+ @echo "🌐 Opening documentation..."
492
+ python -c "import webbrowser; webbrowser.open('file://$(PWD)/_build/html/index.html')"
493
+ ```
494
+
495
+ ### Step 2.6: Template Validation (30 minutes)
496
+
497
+ **Create Template Validation Script**:
498
+
499
+ **Target**: `docs/validate_templates.py`
500
+
501
+ ```python
502
+ #!/usr/bin/env python3
503
+ """
504
+ Template validation script for SolarWindPy documentation system.
505
+ Ensures template syntax and physics content requirements.
506
+ """
507
+
508
+ import os
509
+ import re
510
+ import sys
511
+ from pathlib import Path
512
+ from typing import List, Dict, Tuple
513
+
514
+ class TemplateValidator:
515
+ """Validator for documentation templates."""
516
+
517
+ def __init__(self, template_dir: str = "source/_templates/autosummary"):
518
+ self.template_dir = Path(template_dir)
519
+ self.errors: List[str] = []
520
+ self.warnings: List[str] = []
521
+ self.stats: Dict[str, int] = {
522
+ 'templates_checked': 0,
523
+ 'physics_sections_found': 0,
524
+ 'syntax_errors': 0,
525
+ 'missing_requirements': 0
526
+ }
527
+
528
+ def validate_template_syntax(self, template_path: Path) -> bool:
529
+ """Validate Jinja2 template syntax."""
530
+ try:
531
+ with open(template_path, 'r', encoding='utf-8') as f:
532
+ content = f.read()
533
+
534
+ # Basic Jinja2 syntax validation
535
+ jinja_patterns = [
536
+ r'{%.*%}', # Control structures
537
+ r'{{.*}}', # Variables
538
+ r'{#.*#}', # Comments
539
+ ]
540
+
541
+ # Check for unmatched brackets
542
+ open_control = content.count('{%')
543
+ close_control = content.count('%}')
544
+ open_var = content.count('{{')
545
+ close_var = content.count('}}')
546
+
547
+ if open_control != close_control:
548
+ self.errors.append(f"{template_path.name}: Unmatched control brackets")
549
+ return False
550
+
551
+ if open_var != close_var:
552
+ self.errors.append(f"{template_path.name}: Unmatched variable brackets")
553
+ return False
554
+
555
+ return True
556
+
557
+ except Exception as e:
558
+ self.errors.append(f"{template_path.name}: Syntax error - {e}")
559
+ return False
560
+
561
+ def validate_physics_content(self, template_path: Path) -> bool:
562
+ """Validate physics-specific content requirements."""
563
+ try:
564
+ with open(template_path, 'r', encoding='utf-8') as f:
565
+ content = f.read()
566
+
567
+ template_name = template_path.name
568
+ issues_found = False
569
+
570
+ if template_name == 'class.rst':
571
+ # Check for physics sections in class template
572
+ required_sections = ['Physical Properties', 'Units and Dimensions']
573
+
574
+ for section in required_sections:
575
+ if section not in content:
576
+ self.warnings.append(f"{template_name}: Missing '{section}' section")
577
+ self.stats['missing_requirements'] += 1
578
+ issues_found = True
579
+ else:
580
+ self.stats['physics_sections_found'] += 1
581
+
582
+ # Check for physics classes handling
583
+ physics_classes = ['Plasma', 'Ion', 'Base']
584
+ for cls in physics_classes:
585
+ if cls in content:
586
+ self.stats['physics_sections_found'] += 1
587
+
588
+ elif template_name == 'module.rst':
589
+ # Check for physics overview in module template
590
+ if 'Physics Overview' in content:
591
+ self.stats['physics_sections_found'] += 1
592
+ else:
593
+ self.warnings.append(f"{template_name}: Consider adding Physics Overview section")
594
+
595
+ return not issues_found
596
+
597
+ except Exception as e:
598
+ self.errors.append(f"{template_path.name}: Physics validation error - {e}")
599
+ return False
600
+
601
+ def validate_all_templates(self) -> bool:
602
+ """Validate all templates in the directory."""
603
+ template_files = list(self.template_dir.glob("*.rst"))
604
+
605
+ if not template_files:
606
+ self.errors.append(f"No template files found in {self.template_dir}")
607
+ return False
608
+
609
+ print(f"🔍 Validating {len(template_files)} documentation templates...")
610
+
611
+ all_valid = True
612
+ for template_file in template_files:
613
+ print(f" Checking {template_file.name}...")
614
+
615
+ syntax_valid = self.validate_template_syntax(template_file)
616
+ physics_valid = self.validate_physics_content(template_file)
617
+
618
+ if syntax_valid and physics_valid:
619
+ print(f" ✅ {template_file.name}")
620
+ else:
621
+ print(f" ⚠️ {template_file.name}")
622
+ all_valid = False
623
+
624
+ self.stats['templates_checked'] += 1
625
+
626
+ return all_valid
627
+
628
+ def print_summary(self) -> None:
629
+ """Print validation summary."""
630
+ print(f"\n📊 Template Validation Summary:")
631
+ print(f" • Templates checked: {self.stats['templates_checked']}")
632
+ print(f" • Physics sections found: {self.stats['physics_sections_found']}")
633
+ print(f" • Missing requirements: {self.stats['missing_requirements']}")
634
+ print(f" • Syntax errors: {self.stats['syntax_errors']}")
635
+
636
+ if self.warnings:
637
+ print(f"\n⚠️ Validation Warnings:")
638
+ for warning in self.warnings:
639
+ print(f" • {warning}")
640
+
641
+ if self.errors:
642
+ print(f"\n❌ Validation Errors:")
643
+ for error in self.errors:
644
+ print(f" • {error}")
645
+
646
+ def main():
647
+ """Main validation function."""
648
+ validator = TemplateValidator()
649
+
650
+ success = validator.validate_all_templates()
651
+ validator.print_summary()
652
+
653
+ if success:
654
+ print("\n✅ All template validation checks passed!")
655
+ print(" 📋 Syntax validated")
656
+ print(" 🔬 Physics content verified")
657
+ return 0
658
+ else:
659
+ print("\n⚠️ Some template validation issues found")
660
+ print(" Review warnings above before proceeding")
661
+ return 0 # Don't fail build for warnings
662
+
663
+ if __name__ == "__main__":
664
+ sys.exit(main())
665
+ ```
666
+
667
+ ## Testing and Validation
668
+
669
+ ### Step 2.7: Template Testing (30 minutes)
670
+
671
+ **Test Enhanced Templates**:
672
+ ```bash
673
+ cd docs
674
+
675
+ # Validate templates
676
+ python validate_templates.py
677
+
678
+ # Generate with enhanced templates
679
+ make clean
680
+ make api-enhanced
681
+
682
+ # Verify physics sections appear
683
+ grep -r "Physical Properties" source/api/
684
+ grep -r "Physics Overview" source/api/
685
+ grep -r "Units and Dimensions" source/api/
686
+
687
+ # Build HTML to test rendering
688
+ make html
689
+
690
+ # Check for enhanced content in HTML
691
+ grep -r "Physical Properties" _build/html/
692
+ ```
693
+
694
+ **Expected Results**:
695
+ - Templates pass validation
696
+ - Physics sections appear in generated RST
697
+ - HTML renders correctly with enhanced content
698
+ - Cross-references work properly
699
+
700
+ ## Phase Completion
701
+
702
+ ### Commit Changes
703
+ ```bash
704
+ # Add all template enhancements
705
+ git add docs/source/_templates/autosummary/module.rst \
706
+ docs/source/_templates/autosummary/class.rst \
707
+ docs/add_no_index.py \
708
+ docs/validate_templates.py \
709
+ docs/Makefile
710
+
711
+ # Commit template system enhancements
712
+ git commit -m "feat: implement physics-aware documentation template system
713
+
714
+ Template Enhancements:
715
+ - Enhanced module.rst with physics overview sections
716
+ - Enhanced class.rst with physical properties documentation
717
+ - Added physics context for Plasma, Ion, Base classes
718
+ - Implemented units and dimensions standardization
719
+ - Added cross-reference improvements
720
+
721
+ Processing Improvements:
722
+ - Enhanced add_no_index.py with physics validation
723
+ - Added template syntax validation script
724
+ - Improved cross-reference handling
725
+ - Added physics-specific content validation
726
+
727
+ Build System:
728
+ - Enhanced Makefile with template validation
729
+ - Added development build targets
730
+ - Integrated physics-aware processing pipeline
731
+
732
+ Phase 2 of ReadTheDocs automation: Template persistence achieved.
733
+ All documentation customizations now survive build regeneration."
734
+ ```
735
+
736
+ ### Create Phase Boundary Compaction
737
+ ```bash
738
+ # Create compaction for phase transition
739
+ python .claude/hooks/create-compaction.py
740
+ ```
741
+
742
+ This creates git tag: `claude/compaction/readthedocs-phase-2`
743
+
744
+ ## Success Criteria
745
+
746
+ ### Template System Validation
747
+ - [ ] Enhanced templates pass syntax validation
748
+ - [ ] Physics sections appear in generated documentation
749
+ - [ ] Template changes persist across rebuilds
750
+ - [ ] Cross-references work correctly
751
+ - [ ] Build system integration functional
752
+
753
+ ### Physics Content Validation
754
+ - [ ] Plasma class shows Physical Properties section
755
+ - [ ] Ion class shows moment calculation equations
756
+ - [ ] Base class shows physics constants
757
+ - [ ] Units and dimensions documented consistently
758
+ - [ ] Scientific notation renders correctly
759
+
760
+ ### Build Process Validation
761
+ - [ ] `make api-enhanced` generates physics-aware docs
762
+ - [ ] Post-processing adds physics validations
763
+ - [ ] Template validation catches syntax errors
764
+ - [ ] Development workflow improved
765
+
766
+ ## Expected Results
767
+
768
+ ### Documentation Quality
769
+ - **Scientific Context**: Physics principles documented
770
+ - **Consistency**: Standardized units and conventions
771
+ - **Persistence**: All customizations survive rebuilds
772
+ - **Professional Quality**: Publication-ready documentation
773
+
774
+ ### Developer Experience
775
+ - **No Manual Editing**: All changes through templates
776
+ - **Validation Feedback**: Clear error messages for template issues
777
+ - **Enhanced Workflow**: Development targets for testing
778
+ - **Physics Awareness**: Domain-specific documentation
779
+
780
+ ### System Benefits
781
+ - **Maintenance Efficiency**: 90% reduction in manual documentation work
782
+ - **Quality Assurance**: Automated validation of physics content
783
+ - **Scalability**: Template system scales with codebase growth
784
+ - **Integration Ready**: Foundation for ReadTheDocs automation
785
+
786
+ ## Next Phase Preparation
787
+
788
+ Phase 2 establishes the persistent template foundation. Phase 3 will:
789
+ 1. **Audit template output** - Verify all physics content renders correctly
790
+ 2. **Configure ReadTheDocs** - Set up automated deployment
791
+ 3. **Implement quality checks** - Automated validation pipeline
792
+ 4. **Test automation** - End-to-end deployment verification
793
+
794
+ The template system ensures that all documentation customizations are permanent and automatically applied, eliminating the manual RST editing problem.
795
+
796
+ ---
797
+
798
+ ## Time and Complexity Summary
799
+
800
+ | Component | Duration | Complexity | Value Delivered |
801
+ |-----------|----------|------------|-----------------|
802
+ | Template analysis | 30 min | Low | Understanding current state |
803
+ | Module template enhancement | 60 min | Medium | Physics-aware modules |
804
+ | Class template enhancement | 90 min | Medium-High | Detailed physics documentation |
805
+ | Post-processing framework | 45 min | Medium | Automated validation |
806
+ | Build system integration | 45 min | Medium | Seamless workflow |
807
+ | Template validation | 30 min | Low-Medium | Quality assurance |
808
+ | Testing and validation | 30 min | Low | System verification |
809
+ | **Total Phase 2** | **5.5 hours** | **Medium** | **Persistent template system** |
810
+
811
+ **Strategic Value**: Transforms ephemeral documentation into a persistent, physics-aware system that scales with the project and eliminates manual maintenance overhead.