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,844 @@
1
+ # Phase 3: Quality Audit & ReadTheDocs Integration
2
+
3
+ ## Objective
4
+ Audit the template-enhanced documentation system, eliminate any remaining quality issues, and implement full ReadTheDocs automation for seamless deployment on every push to master.
5
+
6
+ ## Context
7
+ After Phase 2, the template system provides persistent, physics-aware documentation. Phase 3 ensures professional quality output and establishes automated ReadTheDocs deployment pipeline.
8
+
9
+ ## Current State Assessment
10
+
11
+ ### Template System Status
12
+ - āœ… Enhanced templates implemented
13
+ - āœ… Physics sections added to core modules
14
+ - āœ… Build system integration complete
15
+ - āœ… Post-processing framework operational
16
+
17
+ ### ReadTheDocs Infrastructure
18
+ - āœ… `.readthedocs.yaml` configuration exists
19
+ - āœ… Sphinx documentation system operational
20
+ - āœ… GitHub integration configured
21
+ - āš ļø Need webhook validation and optimization
22
+
23
+ ## Implementation Strategy
24
+
25
+ ### Step 3.1: Post-Template Quality Audit (45 minutes)
26
+
27
+ **Comprehensive Documentation Build Analysis**:
28
+ ```bash
29
+ cd docs
30
+
31
+ # Clean build with enhanced templates
32
+ make clean
33
+ make api-enhanced
34
+
35
+ # Capture build warnings and errors
36
+ make html 2>&1 | tee build-audit.log
37
+
38
+ # Analyze Sphinx warnings
39
+ echo "šŸ“Š Sphinx Build Analysis:"
40
+ echo "========================="
41
+ grep -c "WARNING" build-audit.log || echo "No warnings found"
42
+ grep -c "ERROR" build-audit.log || echo "No errors found"
43
+
44
+ # Extract specific warning types
45
+ echo -e "\nšŸ” Warning Details:"
46
+ grep "WARNING" build-audit.log | sort | uniq -c | sort -nr
47
+ ```
48
+
49
+ **Template Output Validation**:
50
+ ```bash
51
+ # Verify physics sections appear correctly
52
+ echo -e "\nšŸ”¬ Physics Content Audit:"
53
+ echo "=========================="
54
+
55
+ # Check core physics classes
56
+ for class in plasma ions base; do
57
+ file="source/api/solarwindpy.core.${class}.rst"
58
+ if [ -f "$file" ]; then
59
+ echo "šŸ“‹ Checking $class module:"
60
+ grep -q "Physical Properties" "$file" && echo " āœ… Physical Properties section" || echo " āŒ Missing Physical Properties"
61
+ grep -q "Units and Dimensions" "$file" && echo " āœ… Units and Dimensions section" || echo " āŒ Missing Units and Dimensions"
62
+ grep -q "Physics Overview" "$file" && echo " āœ… Physics Overview section" || echo " ā„¹ļø No Physics Overview (may be normal)"
63
+ else
64
+ echo " āš ļø File not found: $file"
65
+ fi
66
+ done
67
+
68
+ # Check for mathematical expressions
69
+ echo -e "\nšŸ“ Mathematical Content:"
70
+ grep -r ":math:" source/api/ | wc -l | xargs echo "Math expressions found:"
71
+ grep -r ".. math::" source/api/ | wc -l | xargs echo "Math blocks found:"
72
+ ```
73
+
74
+ **HTML Rendering Verification**:
75
+ ```bash
76
+ # Verify HTML output quality
77
+ echo -e "\n🌐 HTML Output Verification:"
78
+ echo "============================="
79
+
80
+ # Check that physics sections render in HTML
81
+ for class in plasma ions base; do
82
+ html_file="_build/html/api/solarwindpy.core.${class}.html"
83
+ if [ -f "$html_file" ]; then
84
+ echo "šŸ” Checking HTML for $class:"
85
+ grep -q "Physical Properties" "$html_file" && echo " āœ… Physical Properties in HTML" || echo " āŒ Missing Physical Properties in HTML"
86
+ grep -q "Units and Dimensions" "$html_file" && echo " āœ… Units and Dimensions in HTML" || echo " āŒ Missing Units and Dimensions in HTML"
87
+ else
88
+ echo " āš ļø HTML file not found: $html_file"
89
+ fi
90
+ done
91
+
92
+ # Check for broken links
93
+ echo -e "\nšŸ”— Link Validation:"
94
+ sphinx-build -b linkcheck source _build/linkcheck 2>&1 | grep -E "(broken|redirected)" | head -10
95
+ ```
96
+
97
+ ### Step 3.2: ReadTheDocs Configuration Optimization (30 minutes)
98
+
99
+ **Enhanced `.readthedocs.yaml`**:
100
+ ```yaml
101
+ version: 2
102
+
103
+ build:
104
+ os: ubuntu-22.04
105
+ tools:
106
+ python: "3.11"
107
+ jobs:
108
+ post_checkout:
109
+ # Ensure git submodules if any
110
+ - git submodule update --init --recursive
111
+ post_install:
112
+ # Validate template system before build
113
+ - cd docs && python validate_templates.py
114
+
115
+ python:
116
+ install:
117
+ - requirements: requirements.txt
118
+ - requirements: docs/requirements.txt
119
+ - method: pip
120
+ path: .
121
+
122
+ sphinx:
123
+ configuration: docs/source/conf.py
124
+ builder: html
125
+ fail_on_warning: false
126
+
127
+ formats:
128
+ - pdf
129
+ - epub
130
+
131
+ search:
132
+ ranking:
133
+ api/*: -1
134
+ _templates/*: -1
135
+ ```
136
+
137
+ **Sphinx Configuration Enhancement**:
138
+
139
+ **Target**: `docs/source/conf.py` additions
140
+
141
+ ```python
142
+ # Enhanced configuration for ReadTheDocs
143
+ import os
144
+ import sys
145
+
146
+ # ReadTheDocs environment detection
147
+ on_rtd = os.environ.get('READTHEDOCS') == 'True'
148
+
149
+ if on_rtd:
150
+ # ReadTheDocs-specific settings
151
+ html_theme = 'sphinx_rtd_theme'
152
+ html_context = {
153
+ 'display_github': True,
154
+ 'github_user': 'space-physics', # Update with actual GitHub org
155
+ 'github_repo': 'solarwindpy',
156
+ 'github_version': 'master',
157
+ 'conf_py_path': '/docs/source/',
158
+ 'source_suffix': '.rst',
159
+ }
160
+
161
+ # Suppress warnings that are common on RTD
162
+ suppress_warnings = [
163
+ 'image.nonlocal_uri',
164
+ 'ref.ref',
165
+ ]
166
+ else:
167
+ # Local development settings
168
+ html_theme = 'sphinx_rtd_theme' # Consistent theme
169
+
170
+ # Physics-specific math rendering
171
+ mathjax3_config = {
172
+ 'tex': {
173
+ 'inlineMath': [['$', '$'], ['\\(', '\\)']],
174
+ 'displayMath': [['$$', '$$'], ['\\[', '\\]']],
175
+ 'processEscapes': True,
176
+ 'processEnvironments': True,
177
+ },
178
+ 'options': {
179
+ 'ignoreHtmlClass': 'tex2jax_ignore',
180
+ 'processHtmlClass': 'tex2jax_process'
181
+ }
182
+ }
183
+
184
+ # Enhanced intersphinx for physics packages
185
+ intersphinx_mapping = {
186
+ 'python': ('https://docs.python.org/3/', None),
187
+ 'numpy': ('https://numpy.org/doc/stable/', None),
188
+ 'scipy': ('https://docs.scipy.org/doc/scipy/', None),
189
+ 'matplotlib': ('https://matplotlib.org/stable/', None),
190
+ 'pandas': ('https://pandas.pydata.org/docs/', None),
191
+ 'astropy': ('https://docs.astropy.org/en/stable/', None),
192
+ }
193
+
194
+ # API documentation settings
195
+ autodoc_default_options = {
196
+ 'members': True,
197
+ 'member-order': 'bysource',
198
+ 'special-members': '__init__',
199
+ 'undoc-members': True,
200
+ 'exclude-members': '__weakref__',
201
+ 'show-inheritance': True,
202
+ }
203
+
204
+ # Enhanced autosummary settings
205
+ autosummary_generate = True
206
+ autosummary_generate_overwrite = True
207
+ autosummary_imported_members = False
208
+
209
+ # Physics-specific settings
210
+ numfig = True
211
+ numfig_format = {
212
+ 'figure': 'Figure %s',
213
+ 'table': 'Table %s',
214
+ 'code-block': 'Listing %s',
215
+ 'section': 'Section %s',
216
+ }
217
+ ```
218
+
219
+ ### Step 3.3: Automated Quality Validation (45 minutes)
220
+
221
+ **Create Documentation Quality Checker**:
222
+
223
+ **Target**: `docs/quality_check.py`
224
+
225
+ ```python
226
+ #!/usr/bin/env python3
227
+ """
228
+ Comprehensive documentation quality checker for ReadTheDocs deployment.
229
+ Validates template output, physics content, and build quality.
230
+ """
231
+
232
+ import os
233
+ import re
234
+ import subprocess
235
+ import sys
236
+ from pathlib import Path
237
+ from typing import List, Dict, Tuple, Optional
238
+
239
+ class DocumentationQualityChecker:
240
+ """Comprehensive quality checker for SolarWindPy documentation."""
241
+
242
+ def __init__(self, source_dir: str = "source", build_dir: str = "_build"):
243
+ self.source_dir = Path(source_dir)
244
+ self.build_dir = Path(build_dir)
245
+ self.api_dir = self.source_dir / "api"
246
+ self.html_dir = self.build_dir / "html"
247
+
248
+ self.errors: List[str] = []
249
+ self.warnings: List[str] = []
250
+ self.quality_metrics: Dict[str, int] = {
251
+ 'total_warnings': 0,
252
+ 'physics_sections_found': 0,
253
+ 'math_expressions': 0,
254
+ 'broken_links': 0,
255
+ 'missing_physics_content': 0,
256
+ 'template_errors': 0,
257
+ }
258
+
259
+ def check_sphinx_warnings(self) -> bool:
260
+ """Check for Sphinx build warnings and errors."""
261
+ print("šŸ” Checking Sphinx build warnings...")
262
+
263
+ try:
264
+ # Run Sphinx build and capture warnings
265
+ result = subprocess.run(
266
+ ['sphinx-build', '-b', 'html', '-W', str(self.source_dir), str(self.html_dir)],
267
+ capture_output=True, text=True, cwd=Path.cwd()
268
+ )
269
+
270
+ warnings = result.stderr.count('WARNING')
271
+ errors = result.stderr.count('ERROR')
272
+
273
+ self.quality_metrics['total_warnings'] = warnings
274
+
275
+ if errors > 0:
276
+ self.errors.append(f"Sphinx build failed with {errors} errors")
277
+ return False
278
+
279
+ if warnings > 0:
280
+ self.warnings.append(f"Sphinx build produced {warnings} warnings")
281
+ print(f"āš ļø {warnings} warnings found in build")
282
+ else:
283
+ print("āœ… No Sphinx warnings found")
284
+
285
+ return True
286
+
287
+ except Exception as e:
288
+ self.errors.append(f"Failed to run Sphinx build check: {e}")
289
+ return False
290
+
291
+ def check_physics_content(self) -> bool:
292
+ """Validate physics-specific content in generated documentation."""
293
+ print("šŸ”¬ Checking physics content quality...")
294
+
295
+ physics_modules = ['plasma', 'ions', 'base']
296
+ required_sections = {
297
+ 'Physical Properties': 0,
298
+ 'Units and Dimensions': 0,
299
+ 'Physics Overview': 0,
300
+ }
301
+
302
+ for module in physics_modules:
303
+ module_file = self.api_dir / f"solarwindpy.core.{module}.rst"
304
+
305
+ if module_file.exists():
306
+ with open(module_file, 'r') as f:
307
+ content = f.read()
308
+
309
+ for section in required_sections:
310
+ if section in content:
311
+ required_sections[section] += 1
312
+ self.quality_metrics['physics_sections_found'] += 1
313
+
314
+ # Check for mathematical content
315
+ math_inline = len(re.findall(r':math:`[^`]+`', content))
316
+ math_blocks = len(re.findall(r'\.\. math::', content))
317
+ self.quality_metrics['math_expressions'] += math_inline + math_blocks
318
+ else:
319
+ self.warnings.append(f"Physics module file not found: {module_file}")
320
+
321
+ # Validate physics content completeness
322
+ missing_content = 0
323
+ for section, count in required_sections.items():
324
+ if count == 0:
325
+ self.warnings.append(f"No '{section}' sections found across physics modules")
326
+ missing_content += 1
327
+ else:
328
+ print(f"āœ… {section}: found in {count} modules")
329
+
330
+ self.quality_metrics['missing_physics_content'] = missing_content
331
+
332
+ if missing_content > 0:
333
+ print(f"āš ļø {missing_content} physics content types missing")
334
+ else:
335
+ print("āœ… All physics content types found")
336
+
337
+ return missing_content == 0
338
+
339
+ def check_html_rendering(self) -> bool:
340
+ """Verify HTML rendering quality."""
341
+ print("🌐 Checking HTML rendering quality...")
342
+
343
+ if not self.html_dir.exists():
344
+ self.errors.append("HTML build directory not found")
345
+ return False
346
+
347
+ # Check critical HTML files exist
348
+ critical_files = [
349
+ 'index.html',
350
+ 'api/solarwindpy.core.plasma.html',
351
+ 'api/solarwindpy.core.ions.html',
352
+ 'api/solarwindpy.core.base.html',
353
+ ]
354
+
355
+ missing_files = []
356
+ for file_path in critical_files:
357
+ full_path = self.html_dir / file_path
358
+ if not full_path.exists():
359
+ missing_files.append(file_path)
360
+
361
+ if missing_files:
362
+ self.errors.append(f"Missing critical HTML files: {missing_files}")
363
+ return False
364
+
365
+ # Check physics content renders in HTML
366
+ physics_in_html = 0
367
+ for module in ['plasma', 'ions', 'base']:
368
+ html_file = self.html_dir / f"api/solarwindpy.core.{module}.html"
369
+ if html_file.exists():
370
+ with open(html_file, 'r') as f:
371
+ html_content = f.read()
372
+
373
+ if 'Physical Properties' in html_content:
374
+ physics_in_html += 1
375
+ print(f"āœ… Physics content found in {module} HTML")
376
+ else:
377
+ self.warnings.append(f"Physics content missing from {module} HTML")
378
+
379
+ print(f"šŸ“Š Physics content in HTML: {physics_in_html}/3 modules")
380
+ return physics_in_html >= 2 # Allow for some flexibility
381
+
382
+ def check_cross_references(self) -> bool:
383
+ """Check for broken cross-references and links."""
384
+ print("šŸ”— Checking cross-references and links...")
385
+
386
+ try:
387
+ # Run Sphinx linkcheck
388
+ result = subprocess.run(
389
+ ['sphinx-build', '-b', 'linkcheck', str(self.source_dir), str(self.build_dir / 'linkcheck')],
390
+ capture_output=True, text=True, cwd=Path.cwd()
391
+ )
392
+
393
+ # Count broken links
394
+ broken_links = result.stdout.count('broken')
395
+ redirected_links = result.stdout.count('redirected')
396
+
397
+ self.quality_metrics['broken_links'] = broken_links
398
+
399
+ if broken_links > 0:
400
+ self.warnings.append(f"Found {broken_links} broken links")
401
+ print(f"āš ļø {broken_links} broken links found")
402
+ else:
403
+ print("āœ… No broken links found")
404
+
405
+ if redirected_links > 0:
406
+ print(f"ā„¹ļø {redirected_links} redirected links (may need updating)")
407
+
408
+ return broken_links == 0
409
+
410
+ except Exception as e:
411
+ self.warnings.append(f"Could not run link check: {e}")
412
+ return True # Don't fail on linkcheck issues
413
+
414
+ def run_comprehensive_check(self) -> bool:
415
+ """Run all quality checks and return overall status."""
416
+ print("šŸš€ Starting comprehensive documentation quality check...")
417
+ print("=" * 60)
418
+
419
+ checks = [
420
+ ("Sphinx Warnings", self.check_sphinx_warnings),
421
+ ("Physics Content", self.check_physics_content),
422
+ ("HTML Rendering", self.check_html_rendering),
423
+ ("Cross References", self.check_cross_references),
424
+ ]
425
+
426
+ passed_checks = 0
427
+ total_checks = len(checks)
428
+
429
+ for check_name, check_function in checks:
430
+ print(f"\nšŸ“‹ Running {check_name} check...")
431
+ try:
432
+ if check_function():
433
+ print(f"āœ… {check_name} check passed")
434
+ passed_checks += 1
435
+ else:
436
+ print(f"āŒ {check_name} check failed")
437
+ except Exception as e:
438
+ print(f"šŸ’„ {check_name} check crashed: {e}")
439
+ self.errors.append(f"{check_name} check failed with exception: {e}")
440
+
441
+ self.print_summary(passed_checks, total_checks)
442
+
443
+ # Return True if most checks passed
444
+ return passed_checks >= (total_checks - 1) # Allow one failure
445
+
446
+ def print_summary(self, passed_checks: int, total_checks: int) -> None:
447
+ """Print comprehensive quality summary."""
448
+ print("\n" + "=" * 60)
449
+ print("šŸ“Š DOCUMENTATION QUALITY SUMMARY")
450
+ print("=" * 60)
451
+
452
+ print(f"šŸ“ˆ Overall Score: {passed_checks}/{total_checks} checks passed")
453
+
454
+ print(f"\nšŸ“Š Quality Metrics:")
455
+ print(f" • Sphinx warnings: {self.quality_metrics['total_warnings']}")
456
+ print(f" • Physics sections found: {self.quality_metrics['physics_sections_found']}")
457
+ print(f" • Math expressions: {self.quality_metrics['math_expressions']}")
458
+ print(f" • Broken links: {self.quality_metrics['broken_links']}")
459
+ print(f" • Missing physics content types: {self.quality_metrics['missing_physics_content']}")
460
+
461
+ if self.warnings:
462
+ print(f"\nāš ļø Warnings ({len(self.warnings)}):")
463
+ for warning in self.warnings:
464
+ print(f" • {warning}")
465
+
466
+ if self.errors:
467
+ print(f"\nāŒ Errors ({len(self.errors)}):")
468
+ for error in self.errors:
469
+ print(f" • {error}")
470
+
471
+ # Quality assessment
472
+ if passed_checks == total_checks:
473
+ print(f"\nšŸŽ‰ EXCELLENT: All quality checks passed!")
474
+ print(" Documentation is ready for ReadTheDocs deployment.")
475
+ elif passed_checks >= total_checks - 1:
476
+ print(f"\nāœ… GOOD: {passed_checks}/{total_checks} checks passed.")
477
+ print(" Documentation quality is acceptable for deployment.")
478
+ else:
479
+ print(f"\nāš ļø NEEDS WORK: Only {passed_checks}/{total_checks} checks passed.")
480
+ print(" Address issues before ReadTheDocs deployment.")
481
+
482
+ def main():
483
+ """Main quality check execution."""
484
+ checker = DocumentationQualityChecker()
485
+
486
+ success = checker.run_comprehensive_check()
487
+
488
+ if success:
489
+ print("\nšŸš€ Documentation ready for ReadTheDocs deployment!")
490
+ return 0
491
+ else:
492
+ print("\nšŸ”§ Documentation needs quality improvements before deployment.")
493
+ return 1
494
+
495
+ if __name__ == "__main__":
496
+ sys.exit(main())
497
+ ```
498
+
499
+ ### Step 3.4: ReadTheDocs Webhook Configuration (15 minutes)
500
+
501
+ **GitHub Webhook Verification**:
502
+ ```bash
503
+ # Check if ReadTheDocs webhook is configured
504
+ echo "šŸ”— Checking ReadTheDocs integration..."
505
+
506
+ # Verify .readthedocs.yaml is in repository root
507
+ if [ -f ".readthedocs.yaml" ]; then
508
+ echo "āœ… .readthedocs.yaml found"
509
+ cat .readthedocs.yaml
510
+ else
511
+ echo "āŒ .readthedocs.yaml not found"
512
+ fi
513
+
514
+ # Check GitHub repository settings (manual verification needed)
515
+ echo -e "\nšŸ“‹ Manual verification needed:"
516
+ echo "1. Go to GitHub repository Settings > Webhooks"
517
+ echo "2. Verify ReadTheDocs webhook is present and active"
518
+ echo "3. Check webhook URL points to docs.readthedocs.io"
519
+ echo "4. Verify webhook triggers on push events"
520
+ ```
521
+
522
+ **ReadTheDocs Project Settings**:
523
+ ```bash
524
+ # Document required ReadTheDocs project settings
525
+ cat > readthedocs-settings.md << 'EOF'
526
+ # ReadTheDocs Project Configuration
527
+
528
+ ## Project Settings
529
+ - **Name**: solarwindpy
530
+ - **Repository URL**: https://github.com/space-physics/solarwindpy
531
+ - **Branch**: master
532
+ - **Documentation Type**: Sphinx HTML
533
+
534
+ ## Advanced Settings
535
+ - **Install Project**: Yes
536
+ - **Requirements File**: requirements.txt
537
+ - **Python Version**: 3.11
538
+ - **Sphinx Configuration**: docs/source/conf.py
539
+
540
+ ## Build Environment
541
+ - **Build OS**: Ubuntu 22.04
542
+ - **Python**: 3.11
543
+ - **Additional Requirements**: docs/requirements.txt
544
+
545
+ ## Webhook Configuration
546
+ - **Trigger**: Push to master branch
547
+ - **Format**: JSON
548
+ - **Events**: Repository push
549
+ EOF
550
+
551
+ echo "šŸ“„ ReadTheDocs configuration documented in readthedocs-settings.md"
552
+ ```
553
+
554
+ ### Step 3.5: Automated Deployment Testing (30 minutes)
555
+
556
+ **End-to-End Deployment Test**:
557
+ ```bash
558
+ # Simulate ReadTheDocs build locally
559
+ echo "🧪 Testing ReadTheDocs deployment simulation..."
560
+
561
+ # Clean environment test
562
+ cd docs
563
+ rm -rf _build/
564
+
565
+ # Run quality check
566
+ python quality_check.py
567
+
568
+ # Simulate ReadTheDocs build process
569
+ echo -e "\nšŸ—ļø Simulating ReadTheDocs build process..."
570
+
571
+ # Step 1: Template validation
572
+ python validate_templates.py
573
+
574
+ # Step 2: API generation with enhanced templates
575
+ make api-enhanced
576
+
577
+ # Step 3: Full HTML build
578
+ make html
579
+
580
+ # Step 4: Final quality verification
581
+ python quality_check.py
582
+
583
+ echo -e "\nāœ… ReadTheDocs simulation complete"
584
+ echo "Check _build/html/index.html for final output"
585
+ ```
586
+
587
+ **Deployment Verification Script**:
588
+
589
+ **Target**: `docs/verify_deployment.py`
590
+
591
+ ```python
592
+ #!/usr/bin/env python3
593
+ """
594
+ Verify ReadTheDocs deployment readiness.
595
+ Final validation before automated deployment.
596
+ """
597
+
598
+ import os
599
+ import subprocess
600
+ import sys
601
+ from pathlib import Path
602
+
603
+ def verify_files_exist():
604
+ """Verify all required files exist."""
605
+ required_files = [
606
+ '.readthedocs.yaml',
607
+ 'docs/source/conf.py',
608
+ 'docs/requirements.txt',
609
+ 'requirements.txt',
610
+ 'docs/validate_templates.py',
611
+ 'docs/quality_check.py',
612
+ ]
613
+
614
+ missing = []
615
+ for file_path in required_files:
616
+ if not Path(file_path).exists():
617
+ missing.append(file_path)
618
+
619
+ if missing:
620
+ print(f"āŒ Missing required files: {missing}")
621
+ return False
622
+
623
+ print("āœ… All required files present")
624
+ return True
625
+
626
+ def verify_build_process():
627
+ """Verify complete build process works."""
628
+ try:
629
+ os.chdir('docs')
630
+
631
+ # Clean build
632
+ subprocess.run(['make', 'clean'], check=True)
633
+
634
+ # Enhanced API generation
635
+ subprocess.run(['make', 'api-enhanced'], check=True)
636
+
637
+ # HTML build
638
+ subprocess.run(['make', 'html'], check=True)
639
+
640
+ print("āœ… Build process verification successful")
641
+ return True
642
+
643
+ except subprocess.CalledProcessError as e:
644
+ print(f"āŒ Build process failed: {e}")
645
+ return False
646
+
647
+ def verify_readthedocs_config():
648
+ """Verify ReadTheDocs configuration."""
649
+ config_file = Path('.readthedocs.yaml')
650
+
651
+ if not config_file.exists():
652
+ print("āŒ .readthedocs.yaml not found")
653
+ return False
654
+
655
+ with open(config_file, 'r') as f:
656
+ config_content = f.read()
657
+
658
+ required_elements = [
659
+ 'version: 2',
660
+ 'python: "3.11"',
661
+ 'sphinx:',
662
+ 'configuration: docs/source/conf.py',
663
+ ]
664
+
665
+ missing_elements = []
666
+ for element in required_elements:
667
+ if element not in config_content:
668
+ missing_elements.append(element)
669
+
670
+ if missing_elements:
671
+ print(f"āŒ Missing ReadTheDocs config elements: {missing_elements}")
672
+ return False
673
+
674
+ print("āœ… ReadTheDocs configuration valid")
675
+ return True
676
+
677
+ def main():
678
+ """Main deployment verification."""
679
+ print("šŸš€ Verifying ReadTheDocs deployment readiness...")
680
+ print("=" * 50)
681
+
682
+ checks = [
683
+ ("Required Files", verify_files_exist),
684
+ ("ReadTheDocs Config", verify_readthedocs_config),
685
+ ("Build Process", verify_build_process),
686
+ ]
687
+
688
+ passed = 0
689
+ for check_name, check_func in checks:
690
+ print(f"\nšŸ“‹ {check_name}...")
691
+ if check_func():
692
+ passed += 1
693
+ else:
694
+ print(f"šŸ’„ {check_name} failed")
695
+
696
+ print(f"\nšŸ“Š Verification Summary: {passed}/{len(checks)} checks passed")
697
+
698
+ if passed == len(checks):
699
+ print("šŸŽ‰ ReadTheDocs deployment ready!")
700
+ return 0
701
+ else:
702
+ print("šŸ”§ Fix issues before deployment")
703
+ return 1
704
+
705
+ if __name__ == "__main__":
706
+ sys.exit(main())
707
+ ```
708
+
709
+ ## Phase Completion
710
+
711
+ ### Commit Changes
712
+ ```bash
713
+ # Add all quality and integration enhancements
714
+ git add .readthedocs.yaml \
715
+ docs/source/conf.py \
716
+ docs/quality_check.py \
717
+ docs/verify_deployment.py \
718
+ docs/readthedocs-settings.md
719
+
720
+ # Commit ReadTheDocs integration
721
+ git commit -m "feat: complete ReadTheDocs automation integration
722
+
723
+ Quality Assurance:
724
+ - Added comprehensive documentation quality checker
725
+ - Implemented physics content validation
726
+ - Added HTML rendering verification
727
+ - Created cross-reference link checking
728
+
729
+ ReadTheDocs Integration:
730
+ - Enhanced .readthedocs.yaml configuration
731
+ - Optimized Sphinx configuration for RTD
732
+ - Added deployment verification scripts
733
+ - Documented RTD project settings
734
+
735
+ Automation Features:
736
+ - End-to-end build testing
737
+ - Quality metrics and reporting
738
+ - Automated deployment readiness checks
739
+ - Physics-aware content validation
740
+
741
+ Phase 3 of ReadTheDocs automation: Professional quality assurance
742
+ and automated deployment pipeline established."
743
+ ```
744
+
745
+ ### Create Phase Boundary Compaction
746
+ ```bash
747
+ # Create compaction for phase transition
748
+ python .claude/hooks/create-compaction.py
749
+ ```
750
+
751
+ This creates git tag: `claude/compaction/readthedocs-phase-3`
752
+
753
+ ## Success Criteria
754
+
755
+ ### Quality Assurance
756
+ - [ ] Zero or minimal Sphinx warnings
757
+ - [ ] Physics content renders correctly in HTML
758
+ - [ ] Mathematical expressions display properly
759
+ - [ ] Cross-references work correctly
760
+ - [ ] Professional documentation quality achieved
761
+
762
+ ### ReadTheDocs Integration
763
+ - [ ] `.readthedocs.yaml` optimized for SolarWindPy
764
+ - [ ] Sphinx configuration ReadTheDocs-compatible
765
+ - [ ] Webhook configuration verified
766
+ - [ ] Automated build process functional
767
+ - [ ] Quality checks integrated into deployment
768
+
769
+ ### Automation Verification
770
+ - [ ] Local ReadTheDocs simulation successful
771
+ - [ ] Quality checker passes all tests
772
+ - [ ] Deployment verification succeeds
773
+ - [ ] Physics-aware content validated
774
+ - [ ] Professional output standards met
775
+
776
+ ## Expected Results
777
+
778
+ ### Documentation Quality
779
+ - **Professional Output**: Publication-ready documentation
780
+ - **Physics Accuracy**: Scientific content properly rendered
781
+ - **Mathematical Content**: Equations and expressions display correctly
782
+ - **Cross-References**: All internal links functional
783
+ - **Consistent Styling**: Uniform presentation across all modules
784
+
785
+ ### Automation Pipeline
786
+ - **Push-to-Deploy**: Master branch pushes trigger ReadTheDocs builds
787
+ - **Quality Assurance**: Automated validation prevents deployment issues
788
+ - **Physics Validation**: Scientific content automatically verified
789
+ - **Error Prevention**: Quality checks catch issues before deployment
790
+ - **Monitoring**: Comprehensive metrics and reporting
791
+
792
+ ### Developer Experience
793
+ - **Zero Maintenance**: No manual documentation updates needed
794
+ - **Immediate Feedback**: Quality issues identified quickly
795
+ - **Professional Results**: High-quality output without manual work
796
+ - **Confidence**: Automated validation ensures reliability
797
+ - **Scalability**: System grows with project automatically
798
+
799
+ ## ReadTheDocs Deployment Process
800
+
801
+ ### Automated Workflow
802
+ 1. **Developer Push** → GitHub master branch
803
+ 2. **GitHub Webhook** → Triggers ReadTheDocs build
804
+ 3. **ReadTheDocs Build**:
805
+ - Checkout repository
806
+ - Setup Python 3.11 environment
807
+ - Install requirements (requirements.txt + docs/requirements.txt)
808
+ - Validate templates (pre-build hook)
809
+ - Generate API docs with enhanced templates
810
+ - Build HTML with Sphinx
811
+ - Deploy to docs.readthedocs.io
812
+ 4. **Quality Validation** → Automated checks ensure quality
813
+ 5. **Live Documentation** → Updated docs available immediately
814
+
815
+ ### Monitoring and Maintenance
816
+ - **Build Status**: ReadTheDocs dashboard shows build success/failure
817
+ - **Quality Metrics**: Automated quality reports
818
+ - **Physics Validation**: Scientific content automatically verified
819
+ - **Template Persistence**: All customizations maintained across builds
820
+
821
+ ## Next Phase Preparation
822
+
823
+ Phase 3 completes the technical ReadTheDocs automation. Phase 4 will:
824
+ 1. **Audit existing plans** - Determine what work remains
825
+ 2. **Consolidate documentation efforts** - Single source of truth
826
+ 3. **Archive superseded plans** - Clean project state
827
+ 4. **Create follow-up plan** - If any significant work remains
828
+
829
+ The ReadTheDocs automation is now fully functional, providing automated, high-quality, physics-aware documentation deployment.
830
+
831
+ ---
832
+
833
+ ## Time and Impact Summary
834
+
835
+ | Component | Duration | Complexity | Impact |
836
+ |-----------|----------|------------|---------|
837
+ | Post-template audit | 45 min | Medium | Quality assurance |
838
+ | ReadTheDocs optimization | 30 min | Low-Medium | Deployment readiness |
839
+ | Quality validation framework | 45 min | Medium-High | Automated QA |
840
+ | Webhook configuration | 15 min | Low | Automation setup |
841
+ | Deployment testing | 30 min | Medium | Verification |
842
+ | **Total Phase 3** | **2.75 hours** | **Medium** | **Production-ready automation** |
843
+
844
+ **Strategic Achievement**: Transforms SolarWindPy documentation from manual maintenance to fully automated, professional-quality, physics-aware deployment pipeline with ReadTheDocs integration.