solarwindpy 0.0.1.dev0__py3-none-any.whl → 0.1.1__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.1.dist-info/METADATA +181 -0
  341. solarwindpy-0.1.1.dist-info/RECORD +409 -0
  342. {solarwindpy-0.0.1.dev0.dist-info → solarwindpy-0.1.1.dist-info}/WHEEL +1 -1
  343. solarwindpy-0.1.1.dist-info/licenses/LICENSE.rst +32 -0
  344. solarwindpy-0.1.1.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,766 @@
1
+ # Phase 3: Build System Integration
2
+
3
+ ## Objective
4
+ Optimize and enhance the documentation build system to seamlessly integrate with the enhanced templates, ensuring robust automated processing and CI/CD compatibility.
5
+
6
+ ## Current Build System Analysis
7
+
8
+ ### Build Pipeline Overview
9
+ ```
10
+ sphinx-apidoc → add_no_index.py → Sphinx HTML Build → Deployment
11
+ ↓ ↓ ↓ ↓
12
+ RST Generation Post-processing HTML Generation Publishing
13
+ ```
14
+
15
+ ### Current Components
16
+
17
+ #### 3.1 Makefile Integration (`docs/Makefile`)
18
+
19
+ **Current Build Targets**:
20
+ ```makefile
21
+ # Line 15: HTML build depends on API generation
22
+ html: api
23
+
24
+ # Lines 18-22: API generation with post-processing
25
+ api:
26
+ @echo "Generating API documentation..."
27
+ sphinx-apidoc -f -o $(SOURCEDIR)/api ../../solarwindpy/solarwindpy --separate
28
+ @echo "Post-processing API files..."
29
+ python add_no_index.py
30
+ ```
31
+
32
+ **Analysis**:
33
+ - ✅ **Dependency management**: HTML build properly depends on API generation
34
+ - ✅ **Post-processing integration**: Automated post-processing step
35
+ - ✅ **Clean separation**: API generation separate from HTML build
36
+ - ❌ **No template validation**: No verification that templates are working
37
+ - ❌ **No physics content validation**: No checking of enhanced content
38
+
39
+ #### 3.2 Post-Processing Script (`docs/add_no_index.py`)
40
+
41
+ **Current Functionality**:
42
+ ```python
43
+ # Lines 30-43: Add :no-index: to automodule directives
44
+ pattern = r'(\.\. automodule:: .+?)(\n :members:)'
45
+ replacement = r'\1\n :no-index:\2'
46
+
47
+ for file_path in glob.glob('source/api/*.rst'):
48
+ # Process each generated RST file
49
+ content = re.sub(pattern, replacement, content)
50
+ ```
51
+
52
+ **Analysis**:
53
+ - ✅ **Functional**: Successfully adds :no-index: directives
54
+ - ✅ **Comprehensive**: Processes all API files
55
+ - ✅ **Reliable**: Handles edge cases correctly
56
+ - ❌ **Limited scope**: Only handles :no-index: addition
57
+ - ❌ **No template-specific processing**: Doesn't handle enhanced template content
58
+
59
+ #### 3.3 CI/CD Integration (`.github/workflows/docs.yml`)
60
+
61
+ **Current Workflow**:
62
+ ```yaml
63
+ # Lines 54-55: Full clean build
64
+ - name: Build documentation
65
+ run: |
66
+ cd docs
67
+ make clean
68
+ make html
69
+
70
+ # Lines 105-106: Deployment build
71
+ - name: Deploy documentation
72
+ run: |
73
+ cd docs
74
+ make clean && make html
75
+ ```
76
+
77
+ **Analysis**:
78
+ - ✅ **Clean builds**: Ensures fresh documentation generation
79
+ - ✅ **Dependency installation**: Proper Python environment setup
80
+ - ✅ **Artifact management**: Handles build outputs correctly
81
+ - ❌ **No validation steps**: Missing template and content validation
82
+ - ❌ **No performance monitoring**: No build time or size tracking
83
+
84
+ ## Enhanced Build System Design
85
+
86
+ ### 3.1 Enhanced Post-Processing Framework
87
+
88
+ #### Enhanced `add_no_index.py` Script
89
+
90
+ **Current Limitations**:
91
+ - Only processes :no-index: directives
92
+ - No validation of template-generated content
93
+ - No physics-specific content enhancement
94
+ - No error reporting for template issues
95
+
96
+ **Enhanced Script Design**:
97
+
98
+ ```python
99
+ #!/usr/bin/env python3
100
+ """
101
+ Enhanced post-processing script for SolarWindPy documentation.
102
+ Handles template-generated content validation and physics-specific enhancements.
103
+ """
104
+
105
+ import os
106
+ import re
107
+ import glob
108
+ import sys
109
+ from pathlib import Path
110
+ from typing import List, Dict, Tuple
111
+
112
+ class DocumentationProcessor:
113
+ """Enhanced documentation post-processor."""
114
+
115
+ def __init__(self, source_dir: str = "source/api"):
116
+ self.source_dir = Path(source_dir)
117
+ self.errors: List[str] = []
118
+ self.warnings: List[str] = []
119
+ self.stats: Dict[str, int] = {
120
+ 'files_processed': 0,
121
+ 'physics_sections_added': 0,
122
+ 'cross_references_fixed': 0,
123
+ 'validation_warnings': 0
124
+ }
125
+
126
+ def process_no_index_directives(self, content: str) -> str:
127
+ """Add :no-index: directives to automodule declarations."""
128
+ pattern = r'(\.\. automodule:: .+?)(\n :members:)'
129
+ replacement = r'\1\n :no-index:\2'
130
+ return re.sub(pattern, replacement, content)
131
+
132
+ def validate_physics_sections(self, content: str, filename: str) -> str:
133
+ """Validate and enhance physics-specific sections."""
134
+ # Check for physics classes that should have enhanced sections
135
+ physics_classes = ['Plasma', 'Ion', 'Base']
136
+
137
+ for physics_class in physics_classes:
138
+ if f'autoclass:: solarwindpy.core.{physics_class.lower()}' in content:
139
+ if 'Physical Properties' not in content:
140
+ self.warnings.append(f"{filename}: Missing Physical Properties section for {physics_class}")
141
+ self.stats['validation_warnings'] += 1
142
+ else:
143
+ self.stats['physics_sections_added'] += 1
144
+
145
+ return content
146
+
147
+ def fix_cross_references(self, content: str) -> str:
148
+ """Fix and enhance cross-references for physics concepts."""
149
+ # Fix common cross-reference patterns
150
+ cross_ref_fixes = {
151
+ r'solarwindpy\.core\.plasma\.Plasma': r':py:class:`~solarwindpy.core.plasma.Plasma`',
152
+ r'solarwindpy\.core\.ions\.Ion': r':py:class:`~solarwindpy.core.ions.Ion`',
153
+ r'solarwindpy\.core\.base\.Base': r':py:class:`~solarwindpy.core.base.Base`',
154
+ }
155
+
156
+ for pattern, replacement in cross_ref_fixes.items():
157
+ if re.search(pattern, content) and not re.search(replacement.replace('\\', ''), content):
158
+ content = re.sub(pattern, replacement, content)
159
+ self.stats['cross_references_fixed'] += 1
160
+
161
+ return content
162
+
163
+ def process_file(self, file_path: Path) -> None:
164
+ """Process a single RST file."""
165
+ try:
166
+ with open(file_path, 'r', encoding='utf-8') as f:
167
+ content = f.read()
168
+
169
+ # Apply all processing steps
170
+ content = self.process_no_index_directives(content)
171
+ content = self.validate_physics_sections(content, file_path.name)
172
+ content = self.fix_cross_references(content)
173
+
174
+ with open(file_path, 'w', encoding='utf-8') as f:
175
+ f.write(content)
176
+
177
+ self.stats['files_processed'] += 1
178
+
179
+ except Exception as e:
180
+ error_msg = f"Error processing {file_path}: {e}"
181
+ self.errors.append(error_msg)
182
+ print(f"❌ {error_msg}", file=sys.stderr)
183
+
184
+ def process_all_files(self) -> bool:
185
+ """Process all RST files in the API directory."""
186
+ rst_files = list(self.source_dir.glob("*.rst"))
187
+
188
+ if not rst_files:
189
+ self.errors.append(f"No RST files found in {self.source_dir}")
190
+ return False
191
+
192
+ print(f"🔄 Processing {len(rst_files)} documentation files...")
193
+
194
+ for rst_file in rst_files:
195
+ self.process_file(rst_file)
196
+
197
+ return len(self.errors) == 0
198
+
199
+ def print_summary(self) -> None:
200
+ """Print processing summary."""
201
+ print(f"\n📊 Documentation Processing Summary:")
202
+ print(f" • Files processed: {self.stats['files_processed']}")
203
+ print(f" • Physics sections validated: {self.stats['physics_sections_added']}")
204
+ print(f" • Cross-references fixed: {self.stats['cross_references_fixed']}")
205
+ print(f" • Warnings: {self.stats['validation_warnings']}")
206
+ print(f" • Errors: {len(self.errors)}")
207
+
208
+ if self.warnings:
209
+ print(f"\n⚠️ Warnings:")
210
+ for warning in self.warnings:
211
+ print(f" • {warning}")
212
+
213
+ if self.errors:
214
+ print(f"\n❌ Errors:")
215
+ for error in self.errors:
216
+ print(f" • {error}")
217
+
218
+ def main():
219
+ """Main processing function."""
220
+ processor = DocumentationProcessor()
221
+
222
+ success = processor.process_all_files()
223
+ processor.print_summary()
224
+
225
+ if success:
226
+ print("\n✅ Documentation processing completed successfully!")
227
+ return 0
228
+ else:
229
+ print("\n❌ Documentation processing failed!")
230
+ return 1
231
+
232
+ if __name__ == "__main__":
233
+ sys.exit(main())
234
+ ```
235
+
236
+ **Enhancement Benefits**:
237
+ 1. **Comprehensive Processing**: Handles multiple post-processing tasks
238
+ 2. **Physics Validation**: Validates template-generated physics content
239
+ 3. **Cross-reference Fixing**: Automatically fixes broken references
240
+ 4. **Error Reporting**: Detailed error and warning reporting
241
+ 5. **Statistics Tracking**: Provides build metrics and insights
242
+
243
+ ### 3.2 Build System Validation Framework
244
+
245
+ #### Template Validation Integration
246
+
247
+ **Build Target Enhancement**:
248
+
249
+ ```makefile
250
+ # Enhanced Makefile with validation
251
+ .PHONY: validate-templates
252
+ validate-templates:
253
+ @echo "🔍 Validating documentation templates..."
254
+ python validate_templates.py
255
+ @echo "✅ Template validation complete"
256
+
257
+ .PHONY: api-enhanced
258
+ api-enhanced: validate-templates
259
+ @echo "🔧 Generating enhanced API documentation..."
260
+ sphinx-apidoc -f -o $(SOURCEDIR)/api ../../solarwindpy/solarwindpy --separate
261
+ @echo "⚙️ Post-processing with enhanced framework..."
262
+ python add_no_index.py
263
+ @echo "🔍 Validating generated documentation..."
264
+ python validate_generated_docs.py
265
+ @echo "✅ Enhanced API generation complete"
266
+
267
+ # Update HTML target to use enhanced API
268
+ html: api-enhanced
269
+ @echo "🏗️ Building HTML documentation..."
270
+ $(SPHINXBUILD) -b html $(SOURCEDIR) $(BUILDDIR)/html $(SPHINXOPTS)
271
+ @echo "✅ HTML documentation build complete"
272
+ ```
273
+
274
+ #### Generated Documentation Validator
275
+
276
+ **`docs/validate_generated_docs.py`**:
277
+
278
+ ```python
279
+ #!/usr/bin/env python3
280
+ """
281
+ Validation script for generated documentation content.
282
+ Ensures template enhancements are properly applied.
283
+ """
284
+
285
+ import os
286
+ import re
287
+ import sys
288
+ from pathlib import Path
289
+ from typing import List, Dict
290
+
291
+ class GeneratedDocValidator:
292
+ """Validator for template-generated documentation."""
293
+
294
+ def __init__(self, api_dir: str = "source/api"):
295
+ self.api_dir = Path(api_dir)
296
+ self.validation_results: Dict[str, List[str]] = {
297
+ 'passed': [],
298
+ 'warnings': [],
299
+ 'failed': []
300
+ }
301
+
302
+ def validate_physics_sections(self, file_path: Path) -> bool:
303
+ """Validate physics-specific sections in class documentation."""
304
+ with open(file_path, 'r') as f:
305
+ content = f.read()
306
+
307
+ # Check for core physics classes
308
+ physics_classes = ['plasma.rst', 'ions.rst', 'base.rst']
309
+
310
+ if any(cls in file_path.name for cls in physics_classes):
311
+ required_sections = ['Physical Properties', 'Units and Dimensions']
312
+ missing_sections = []
313
+
314
+ for section in required_sections:
315
+ if section not in content:
316
+ missing_sections.append(section)
317
+
318
+ if missing_sections:
319
+ self.validation_results['warnings'].append(
320
+ f"{file_path.name}: Missing sections: {', '.join(missing_sections)}"
321
+ )
322
+ return False
323
+ else:
324
+ self.validation_results['passed'].append(
325
+ f"{file_path.name}: All physics sections present"
326
+ )
327
+ return True
328
+
329
+ return True
330
+
331
+ def validate_cross_references(self, file_path: Path) -> bool:
332
+ """Validate cross-references are properly formatted."""
333
+ with open(file_path, 'r') as f:
334
+ content = f.read()
335
+
336
+ # Look for broken reference patterns
337
+ broken_patterns = [
338
+ r'solarwindpy\.[a-zA-Z.]+[A-Z][a-zA-Z]+', # Unformatted class references
339
+ r'\.\. autoclass:: [^\n]*\n(?!\s*:)', # Missing options
340
+ ]
341
+
342
+ issues = []
343
+ for i, pattern in enumerate(broken_patterns):
344
+ matches = re.findall(pattern, content)
345
+ if matches:
346
+ issues.extend(matches)
347
+
348
+ if issues:
349
+ self.validation_results['warnings'].append(
350
+ f"{file_path.name}: Potential reference issues: {len(issues)}"
351
+ )
352
+ return False
353
+
354
+ return True
355
+
356
+ def validate_template_application(self, file_path: Path) -> bool:
357
+ """Validate that templates were properly applied."""
358
+ with open(file_path, 'r') as f:
359
+ content = f.read()
360
+
361
+ # Check for template artifacts that indicate proper processing
362
+ template_indicators = [':no-index:', 'rubric::']
363
+
364
+ has_indicators = any(indicator in content for indicator in template_indicators)
365
+
366
+ if not has_indicators:
367
+ self.validation_results['failed'].append(
368
+ f"{file_path.name}: No template processing indicators found"
369
+ )
370
+ return False
371
+
372
+ return True
373
+
374
+ def validate_all_files(self) -> bool:
375
+ """Validate all generated documentation files."""
376
+ rst_files = list(self.api_dir.glob("*.rst"))
377
+
378
+ if not rst_files:
379
+ self.validation_results['failed'].append("No RST files found for validation")
380
+ return False
381
+
382
+ print(f"🔍 Validating {len(rst_files)} generated documentation files...")
383
+
384
+ all_valid = True
385
+ for rst_file in rst_files:
386
+ file_valid = True
387
+ file_valid &= self.validate_physics_sections(rst_file)
388
+ file_valid &= self.validate_cross_references(rst_file)
389
+ file_valid &= self.validate_template_application(rst_file)
390
+
391
+ if not file_valid:
392
+ all_valid = False
393
+
394
+ return all_valid
395
+
396
+ def print_results(self) -> None:
397
+ """Print validation results."""
398
+ print(f"\n📊 Documentation Validation Results:")
399
+ print(f" ✅ Passed: {len(self.validation_results['passed'])}")
400
+ print(f" ⚠️ Warnings: {len(self.validation_results['warnings'])}")
401
+ print(f" ❌ Failed: {len(self.validation_results['failed'])}")
402
+
403
+ for category, messages in self.validation_results.items():
404
+ if messages and category != 'passed':
405
+ print(f"\n{category.title()}:")
406
+ for message in messages:
407
+ print(f" • {message}")
408
+
409
+ def main():
410
+ """Main validation function."""
411
+ validator = GeneratedDocValidator()
412
+
413
+ success = validator.validate_all_files()
414
+ validator.print_results()
415
+
416
+ if success:
417
+ print("\n✅ All documentation validation checks passed!")
418
+ return 0
419
+ else:
420
+ print("\n⚠️ Some validation issues found (see details above)")
421
+ return 0 # Don't fail build for warnings, only for critical errors
422
+
423
+ if __name__ == "__main__":
424
+ sys.exit(main())
425
+ ```
426
+
427
+ ### 3.3 Performance Optimization
428
+
429
+ #### Build Time Monitoring
430
+
431
+ **Build Performance Script** (`docs/monitor_build.py`):
432
+
433
+ ```python
434
+ #!/usr/bin/env python3
435
+ """
436
+ Build performance monitoring for documentation system.
437
+ Tracks build times and identifies bottlenecks.
438
+ """
439
+
440
+ import time
441
+ import subprocess
442
+ import sys
443
+ from pathlib import Path
444
+
445
+ class BuildMonitor:
446
+ """Monitor documentation build performance."""
447
+
448
+ def __init__(self):
449
+ self.timings = {}
450
+ self.start_time = None
451
+
452
+ def start_timer(self, operation: str):
453
+ """Start timing an operation."""
454
+ self.start_time = time.time()
455
+ print(f"⏱️ Starting {operation}...")
456
+
457
+ def end_timer(self, operation: str):
458
+ """End timing and record result."""
459
+ if self.start_time:
460
+ duration = time.time() - self.start_time
461
+ self.timings[operation] = duration
462
+ print(f"✅ {operation} completed in {duration:.2f}s")
463
+ self.start_time = None
464
+
465
+ def run_timed_command(self, command: list, operation: str):
466
+ """Run a command with timing."""
467
+ self.start_timer(operation)
468
+ try:
469
+ result = subprocess.run(command, check=True, capture_output=True, text=True)
470
+ self.end_timer(operation)
471
+ return result
472
+ except subprocess.CalledProcessError as e:
473
+ print(f"❌ {operation} failed: {e}")
474
+ return None
475
+
476
+ def print_summary(self):
477
+ """Print build performance summary."""
478
+ if not self.timings:
479
+ print("No timing data collected")
480
+ return
481
+
482
+ total_time = sum(self.timings.values())
483
+
484
+ print(f"\n📊 Build Performance Summary:")
485
+ print(f" Total build time: {total_time:.2f}s")
486
+ print(f" Individual operations:")
487
+
488
+ for operation, duration in sorted(self.timings.items(), key=lambda x: x[1], reverse=True):
489
+ percentage = (duration / total_time) * 100
490
+ print(f" • {operation}: {duration:.2f}s ({percentage:.1f}%)")
491
+
492
+ def main():
493
+ """Monitor a full documentation build."""
494
+ monitor = BuildMonitor()
495
+
496
+ # Change to docs directory
497
+ os.chdir('docs')
498
+
499
+ # Clean build
500
+ monitor.run_timed_command(['make', 'clean'], 'Clean build directory')
501
+
502
+ # Template validation
503
+ monitor.run_timed_command(['python', 'validate_templates.py'], 'Template validation')
504
+
505
+ # API generation
506
+ monitor.run_timed_command(['make', 'api-enhanced'], 'Enhanced API generation')
507
+
508
+ # HTML build
509
+ monitor.run_timed_command(['make', 'html'], 'HTML generation')
510
+
511
+ # Print results
512
+ monitor.print_summary()
513
+
514
+ return 0
515
+
516
+ if __name__ == "__main__":
517
+ sys.exit(main())
518
+ ```
519
+
520
+ ### 3.4 CI/CD Integration Enhancement
521
+
522
+ #### Enhanced GitHub Actions Workflow
523
+
524
+ **Updated `.github/workflows/docs.yml`**:
525
+
526
+ ```yaml
527
+ name: Documentation Build and Deploy
528
+
529
+ on:
530
+ push:
531
+ branches: [main, master]
532
+ pull_request:
533
+ branches: [main, master]
534
+
535
+ jobs:
536
+ build-docs:
537
+ runs-on: ubuntu-latest
538
+ steps:
539
+ - uses: actions/checkout@v4
540
+ with:
541
+ fetch-depth: 0
542
+
543
+ - uses: actions/setup-python@v5
544
+ with:
545
+ python-version: '3.11'
546
+
547
+ - name: Install dependencies
548
+ run: |
549
+ python -m pip install --upgrade pip
550
+ pip install -r requirements-dev.txt
551
+ pip install -r docs/requirements.txt
552
+ pip install -e .
553
+
554
+ # Template validation step
555
+ - name: Validate documentation templates
556
+ run: |
557
+ cd docs
558
+ python validate_templates.py
559
+
560
+ # Enhanced build with monitoring
561
+ - name: Build documentation with monitoring
562
+ run: |
563
+ cd docs
564
+ python monitor_build.py
565
+
566
+ # Validation of generated docs
567
+ - name: Validate generated documentation
568
+ run: |
569
+ cd docs
570
+ python validate_generated_docs.py
571
+
572
+ # Check for build warnings
573
+ - name: Check for Sphinx warnings
574
+ run: |
575
+ cd docs
576
+ make html 2>&1 | tee build.log
577
+ if grep -q "WARNING" build.log; then
578
+ echo "⚠️ Sphinx warnings found:"
579
+ grep "WARNING" build.log
580
+ else
581
+ echo "✅ No Sphinx warnings"
582
+ fi
583
+
584
+ - name: Upload documentation artifacts
585
+ uses: actions/upload-artifact@v4
586
+ with:
587
+ name: documentation
588
+ path: docs/_build/html/
589
+ retention-days: 30
590
+
591
+ - name: Upload build logs
592
+ if: always()
593
+ uses: actions/upload-artifact@v4
594
+ with:
595
+ name: build-logs
596
+ path: docs/build.log
597
+ retention-days: 7
598
+ ```
599
+
600
+ **Enhancement Benefits**:
601
+ 1. **Template Validation**: Catches template issues before build
602
+ 2. **Performance Monitoring**: Tracks build performance over time
603
+ 3. **Generated Content Validation**: Ensures template enhancements work
604
+ 4. **Warning Detection**: Identifies Sphinx warnings automatically
605
+ 5. **Comprehensive Artifacts**: Saves both docs and build logs
606
+
607
+ ### 3.5 Local Development Integration
608
+
609
+ #### Enhanced Development Makefile Targets
610
+
611
+ **Additional Makefile Targets**:
612
+
613
+ ```makefile
614
+ # Development-specific targets for enhanced build system
615
+
616
+ .PHONY: dev-build
617
+ dev-build: validate-templates api-enhanced
618
+ @echo "🔧 Development build with full validation..."
619
+ $(SPHINXBUILD) -b html $(SOURCEDIR) $(BUILDDIR)/html $(SPHINXOPTS) -W
620
+ @echo "🌐 Opening documentation in browser..."
621
+ python -c "import webbrowser; webbrowser.open('file://$(PWD)/_build/html/index.html')"
622
+
623
+ .PHONY: fast-build
624
+ fast-build:
625
+ @echo "⚡ Fast build (skip validation)..."
626
+ sphinx-apidoc -f -o $(SOURCEDIR)/api ../../solarwindpy/solarwindpy --separate
627
+ python add_no_index.py
628
+ $(SPHINXBUILD) -b html $(SOURCEDIR) $(BUILDDIR)/html $(SPHINXOPTS)
629
+
630
+ .PHONY: monitor-build
631
+ monitor-build:
632
+ @echo "📊 Building with performance monitoring..."
633
+ python monitor_build.py
634
+
635
+ .PHONY: validate-all
636
+ validate-all: validate-templates
637
+ @echo "🔍 Comprehensive validation..."
638
+ make api-enhanced
639
+ python validate_generated_docs.py
640
+ @echo "✅ All validation checks complete"
641
+
642
+ # Watch for template changes and rebuild
643
+ .PHONY: watch-templates
644
+ watch-templates:
645
+ @echo "👀 Watching templates for changes..."
646
+ @echo "Run 'make dev-build' in another terminal when templates change"
647
+ python -c "
648
+ import time
649
+ from pathlib import Path
650
+ from watchdog.observers import Observer
651
+ from watchdog.events import FileSystemEventHandler
652
+
653
+ class TemplateHandler(FileSystemEventHandler):
654
+ def on_modified(self, event):
655
+ if event.src_path.endswith('.rst'):
656
+ print(f'🔄 Template changed: {event.src_path}')
657
+ print(' Run: make dev-build')
658
+
659
+ observer = Observer()
660
+ observer.schedule(TemplateHandler(), 'source/_templates', recursive=True)
661
+ observer.start()
662
+
663
+ try:
664
+ while True:
665
+ time.sleep(1)
666
+ except KeyboardInterrupt:
667
+ observer.stop()
668
+ observer.join()
669
+ "
670
+ ```
671
+
672
+ ## Success Criteria
673
+
674
+ ### Build System Integration Validation
675
+
676
+ - [ ] **Enhanced post-processing** handles template-generated content correctly
677
+ - [ ] **Template validation** catches syntax errors before build
678
+ - [ ] **Generated content validation** ensures physics sections are present
679
+ - [ ] **Performance monitoring** provides build time insights
680
+ - [ ] **CI/CD integration** works seamlessly with enhancements
681
+ - [ ] **Local development** workflow is improved and streamlined
682
+
683
+ ### Quality Assurance
684
+
685
+ - [ ] **No build failures** introduced by integration changes
686
+ - [ ] **No regression** in existing documentation quality
687
+ - [ ] **Enhanced physics content** appears in generated documentation
688
+ - [ ] **Cross-references work** correctly after processing
689
+ - [ ] **Warning-free builds** for all documentation
690
+ - [ ] **Fast build times** maintained despite enhancements
691
+
692
+ ### Developer Experience
693
+
694
+ - [ ] **Clear error messages** when template issues occur
695
+ - [ ] **Automated validation** prevents common mistakes
696
+ - [ ] **Performance feedback** helps optimize build process
697
+ - [ ] **Development targets** streamline local workflow
698
+ - [ ] **Comprehensive logging** aids in debugging issues
699
+
700
+ ## Implementation Timeline
701
+
702
+ | Task | Duration | Dependencies | Validation |
703
+ |------|----------|--------------|------------|
704
+ | **Enhanced post-processing script** | 60 min | Phase 2 templates | Script testing |
705
+ | **Validation framework creation** | 45 min | Enhanced script | Framework testing |
706
+ | **Makefile target enhancements** | 30 min | Validation framework | Build testing |
707
+ | **Performance monitoring setup** | 30 min | Makefile changes | Performance validation |
708
+ | **CI/CD workflow updates** | 30 min | All components | Workflow testing |
709
+ | **Local development integration** | 30 min | CI/CD changes | Developer testing |
710
+
711
+ **Total Phase 3 Time**: 3.5 hours
712
+
713
+ ## Commit Tracking
714
+
715
+ - Enhanced post-processing: `<checksum_enhanced_processing>`
716
+ - Validation framework: `<checksum_validation_framework>`
717
+ - Makefile enhancements: `<checksum_makefile_enhanced>`
718
+ - Performance monitoring: `<checksum_performance_monitoring>`
719
+ - CI/CD integration: `<checksum_cicd_integration>`
720
+ - Local development tools: `<checksum_local_dev_tools>`
721
+ - Phase 3 completion: `<checksum_phase3_complete>`
722
+
723
+ ## Risk Mitigation
724
+
725
+ ### Integration Risks
726
+
727
+ | Risk | Probability | Impact | Mitigation |
728
+ |------|-------------|--------|------------|
729
+ | **Build system breakage** | Low | High | Incremental testing + rollback plan |
730
+ | **Performance degradation** | Medium | Medium | Performance monitoring + optimization |
731
+ | **CI/CD pipeline failures** | Low | High | Staged deployment + validation |
732
+ | **Developer workflow disruption** | Medium | Low | Clear documentation + training |
733
+
734
+ ### Rollback Strategy
735
+
736
+ ```bash
737
+ # Emergency rollback for build system issues
738
+
739
+ # 1. Restore original post-processing
740
+ git checkout HEAD~1 -- docs/add_no_index.py
741
+
742
+ # 2. Restore original Makefile
743
+ git checkout HEAD~1 -- docs/Makefile
744
+
745
+ # 3. Restore original CI/CD workflow
746
+ git checkout HEAD~1 -- .github/workflows/docs.yml
747
+
748
+ # 4. Test basic build
749
+ cd docs
750
+ make clean
751
+ make html
752
+
753
+ # 5. If successful, commit rollback
754
+ git add . && git commit -m "Emergency rollback of build system changes"
755
+ ```
756
+
757
+ ## Next Phase Preparation
758
+
759
+ Phase 4 (Testing & Validation) should focus on:
760
+ 1. **Comprehensive build testing** across different environments
761
+ 2. **Template content validation** for scientific accuracy
762
+ 3. **Performance regression testing** to ensure efficiency
763
+ 4. **CI/CD integration testing** with multiple scenarios
764
+ 5. **User acceptance testing** with physics documentation users
765
+
766
+ The enhanced build system provides robust infrastructure for persistent, high-quality physics documentation with comprehensive validation and monitoring capabilities.