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,395 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ Test Suite Parser for SolarWindPy Physics-Focused Test Audit
4
+ Systematically parses all test files to extract test functions and metadata.
5
+ """
6
+
7
+ import ast
8
+ import os
9
+ import re
10
+ import csv
11
+ from pathlib import Path
12
+ from typing import List, Dict, Tuple, Any
13
+ from dataclasses import dataclass
14
+
15
+
16
+ @dataclass
17
+ class TestFunction:
18
+ """Represents a test function with metadata."""
19
+ file_path: str
20
+ function_name: str
21
+ line_number: int
22
+ docstring: str
23
+ decorators: List[str]
24
+ has_parametrize: bool
25
+ parametrize_count: int
26
+ test_type: str # unit, physics, edge, integration, performance
27
+ physics_module: str # plasma, ions, magnetic_field, instabilities, etc.
28
+ complexity: str # simple, moderate, complex
29
+ estimated_coverage: float
30
+
31
+
32
+ class TestFileParser:
33
+ """Parses Python test files to extract test function metadata."""
34
+
35
+ def __init__(self, base_path: str):
36
+ self.base_path = Path(base_path)
37
+ self.test_functions: List[TestFunction] = []
38
+
39
+ def parse_file(self, file_path: Path) -> List[TestFunction]:
40
+ """Parse a single test file and return test functions."""
41
+ try:
42
+ with open(file_path, 'r', encoding='utf-8') as f:
43
+ content = f.read()
44
+
45
+ tree = ast.parse(content)
46
+ functions = []
47
+
48
+ for node in ast.walk(tree):
49
+ if isinstance(node, ast.FunctionDef) and node.name.startswith('test_'):
50
+ func = self._extract_function_metadata(node, file_path, content)
51
+ functions.append(func)
52
+
53
+ return functions
54
+
55
+ except Exception as e:
56
+ print(f"Error parsing {file_path}: {e}")
57
+ return []
58
+
59
+ def _extract_function_metadata(self, node: ast.FunctionDef, file_path: Path, content: str) -> TestFunction:
60
+ """Extract metadata from a test function AST node."""
61
+
62
+ # Basic info
63
+ relative_path = str(file_path.relative_to(self.base_path))
64
+
65
+ # Docstring
66
+ docstring = ast.get_docstring(node) or ""
67
+
68
+ # Decorators
69
+ decorators = []
70
+ parametrize_count = 1
71
+ has_parametrize = False
72
+
73
+ for decorator in node.decorator_list:
74
+ if isinstance(decorator, ast.Name):
75
+ decorators.append(decorator.id)
76
+ elif isinstance(decorator, ast.Attribute):
77
+ decorators.append(f"{decorator.attr}")
78
+ if decorator.attr == 'parametrize':
79
+ has_parametrize = True
80
+ # Try to count parameters
81
+ parametrize_count = self._count_parametrize(decorator, content)
82
+ elif isinstance(decorator, ast.Call):
83
+ if hasattr(decorator.func, 'attr'):
84
+ decorators.append(decorator.func.attr)
85
+ if decorator.func.attr == 'parametrize':
86
+ has_parametrize = True
87
+ parametrize_count = self._count_parametrize(decorator, content)
88
+
89
+ # Classification
90
+ test_type = self._classify_test_type(node.name, docstring, relative_path)
91
+ physics_module = self._classify_physics_module(relative_path, node.name, docstring)
92
+ complexity = self._assess_complexity(node, docstring, decorators)
93
+
94
+ # Estimated coverage impact
95
+ estimated_coverage = self._estimate_coverage_impact(node, parametrize_count, complexity)
96
+
97
+ return TestFunction(
98
+ file_path=relative_path,
99
+ function_name=node.name,
100
+ line_number=node.lineno,
101
+ docstring=docstring,
102
+ decorators=decorators,
103
+ has_parametrize=has_parametrize,
104
+ parametrize_count=parametrize_count,
105
+ test_type=test_type,
106
+ physics_module=physics_module,
107
+ complexity=complexity,
108
+ estimated_coverage=estimated_coverage
109
+ )
110
+
111
+ def _count_parametrize(self, decorator, content: str) -> int:
112
+ """Estimate number of parametrized test cases."""
113
+ try:
114
+ # Simple heuristic - count commas in parametrize decorator
115
+ lines = content.split('\n')
116
+ # This is a rough estimate
117
+ return max(1, content.count('parametrize') * 3) # Conservative estimate
118
+ except:
119
+ return 1
120
+
121
+ def _classify_test_type(self, func_name: str, docstring: str, file_path: str) -> str:
122
+ """Classify test type based on name, docstring, and context."""
123
+
124
+ # Performance tests
125
+ if 'performance' in file_path or 'benchmark' in func_name.lower():
126
+ return 'performance'
127
+
128
+ # Integration tests
129
+ if 'integration' in file_path or 'integration' in func_name.lower():
130
+ return 'integration'
131
+
132
+ # Edge case tests
133
+ edge_indicators = ['edge', 'boundary', 'limit', 'extreme', 'invalid', 'error']
134
+ if any(indicator in func_name.lower() for indicator in edge_indicators):
135
+ return 'edge'
136
+
137
+ # Physics validation tests
138
+ physics_indicators = ['physics', 'thermal', 'alfven', 'plasma', 'magnetic', 'temperature']
139
+ if any(indicator in func_name.lower() for indicator in physics_indicators):
140
+ return 'physics'
141
+
142
+ # Default to unit test
143
+ return 'unit'
144
+
145
+ def _classify_physics_module(self, file_path: str, func_name: str, docstring: str) -> str:
146
+ """Classify which physics module/domain the test belongs to."""
147
+
148
+ path_lower = file_path.lower()
149
+ func_lower = func_name.lower()
150
+ doc_lower = docstring.lower()
151
+
152
+ # Core physics modules
153
+ if 'plasma' in path_lower or 'plasma' in func_lower:
154
+ return 'plasma'
155
+ elif 'ions' in path_lower or 'ion' in func_lower:
156
+ return 'ions'
157
+ elif 'magnetic' in path_lower or 'magnetic' in func_lower or 'alfven' in func_lower:
158
+ return 'magnetic_field'
159
+ elif 'instabilities' in path_lower:
160
+ return 'instabilities'
161
+ elif 'spacecraft' in path_lower:
162
+ return 'spacecraft'
163
+ elif 'alfvenic' in path_lower or 'turbulence' in path_lower:
164
+ return 'alfvenic_turbulence'
165
+
166
+ # Utility modules
167
+ elif 'fitfunctions' in path_lower:
168
+ return 'fitfunctions'
169
+ elif 'plotting' in path_lower:
170
+ return 'plotting'
171
+ elif 'solar_activity' in path_lower:
172
+ return 'solar_activity'
173
+ elif 'base' in path_lower:
174
+ return 'base_framework'
175
+
176
+ # General tests
177
+ else:
178
+ return 'general'
179
+
180
+ def _assess_complexity(self, node: ast.FunctionDef, docstring: str, decorators: List[str]) -> str:
181
+ """Assess test complexity based on AST analysis."""
182
+
183
+ # Count lines of code (rough estimate)
184
+ body_lines = len(node.body)
185
+
186
+ # Count assert statements
187
+ assert_count = 0
188
+ for child in ast.walk(node):
189
+ if isinstance(child, ast.Assert):
190
+ assert_count += 1
191
+
192
+ # Complexity indicators
193
+ has_loops = any(isinstance(child, (ast.For, ast.While)) for child in ast.walk(node))
194
+ has_conditionals = any(isinstance(child, ast.If) for child in ast.walk(node))
195
+ has_fixtures = 'fixture' in decorators or len(decorators) > 1
196
+
197
+ # Complex if many lines, multiple asserts, control flow
198
+ if body_lines > 20 or assert_count > 5 or (has_loops and has_conditionals):
199
+ return 'complex'
200
+ elif body_lines > 8 or assert_count > 2 or has_fixtures:
201
+ return 'moderate'
202
+ else:
203
+ return 'simple'
204
+
205
+ def _estimate_coverage_impact(self, node: ast.FunctionDef, parametrize_count: int, complexity: str) -> float:
206
+ """Estimate coverage percentage impact of this test."""
207
+
208
+ base_impact = {
209
+ 'simple': 0.1,
210
+ 'moderate': 0.3,
211
+ 'complex': 0.8
212
+ }.get(complexity, 0.1)
213
+
214
+ # Parametrized tests have multiplicative effect
215
+ return base_impact * parametrize_count
216
+
217
+ def parse_all_files(self, test_files: List[str]) -> List[TestFunction]:
218
+ """Parse all test files and return comprehensive metadata."""
219
+
220
+ all_functions = []
221
+
222
+ for file_path in test_files:
223
+ full_path = self.base_path / file_path
224
+ if full_path.exists():
225
+ functions = self.parse_file(full_path)
226
+ all_functions.extend(functions)
227
+ print(f"Parsed {len(functions)} functions from {file_path}")
228
+
229
+ self.test_functions = all_functions
230
+ return all_functions
231
+
232
+ def generate_csv_report(self, output_path: str):
233
+ """Generate CSV inventory report."""
234
+
235
+ with open(output_path, 'w', newline='', encoding='utf-8') as csvfile:
236
+ fieldnames = [
237
+ 'file_path', 'function_name', 'line_number', 'test_type',
238
+ 'physics_module', 'complexity', 'has_parametrize',
239
+ 'parametrize_count', 'estimated_coverage', 'decorators', 'docstring'
240
+ ]
241
+
242
+ writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
243
+ writer.writeheader()
244
+
245
+ for func in self.test_functions:
246
+ writer.writerow({
247
+ 'file_path': func.file_path,
248
+ 'function_name': func.function_name,
249
+ 'line_number': func.line_number,
250
+ 'test_type': func.test_type,
251
+ 'physics_module': func.physics_module,
252
+ 'complexity': func.complexity,
253
+ 'has_parametrize': func.has_parametrize,
254
+ 'parametrize_count': func.parametrize_count,
255
+ 'estimated_coverage': func.estimated_coverage,
256
+ 'decorators': ';'.join(func.decorators),
257
+ 'docstring': func.docstring.replace('\n', ' ')[:200] # Truncate for CSV
258
+ })
259
+
260
+ def generate_summary_stats(self) -> Dict[str, Any]:
261
+ """Generate summary statistics for the test suite."""
262
+
263
+ total_functions = len(self.test_functions)
264
+
265
+ # Type distribution
266
+ type_counts = {}
267
+ for func in self.test_functions:
268
+ type_counts[func.test_type] = type_counts.get(func.test_type, 0) + 1
269
+
270
+ # Physics module distribution
271
+ physics_counts = {}
272
+ for func in self.test_functions:
273
+ physics_counts[func.physics_module] = physics_counts.get(func.physics_module, 0) + 1
274
+
275
+ # Complexity distribution
276
+ complexity_counts = {}
277
+ for func in self.test_functions:
278
+ complexity_counts[func.complexity] = complexity_counts.get(func.complexity, 0) + 1
279
+
280
+ # File distribution
281
+ file_counts = {}
282
+ for func in self.test_functions:
283
+ file_counts[func.file_path] = file_counts.get(func.file_path, 0) + 1
284
+
285
+ return {
286
+ 'total_functions': total_functions,
287
+ 'total_files': len(file_counts),
288
+ 'type_distribution': type_counts,
289
+ 'physics_distribution': physics_counts,
290
+ 'complexity_distribution': complexity_counts,
291
+ 'file_distribution': file_counts,
292
+ 'parametrized_tests': sum(1 for f in self.test_functions if f.has_parametrize),
293
+ 'estimated_total_test_cases': sum(f.parametrize_count for f in self.test_functions)
294
+ }
295
+
296
+
297
+ if __name__ == '__main__':
298
+
299
+ # Test file list (from glob results)
300
+ test_files = [
301
+ 'tests/core/test_alfvenic_turbulence.py',
302
+ 'tests/core/test_base.py',
303
+ 'tests/core/test_base_head_tail.py',
304
+ 'tests/core/test_base_mi_tuples.py',
305
+ 'tests/core/test_core_verify_datetimeindex.py',
306
+ 'tests/core/test_ions.py',
307
+ 'tests/core/test_plasma.py',
308
+ 'tests/core/test_plasma_io.py',
309
+ 'tests/core/test_quantities.py',
310
+ 'tests/core/test_spacecraft.py',
311
+ 'tests/core/test_units_constants.py',
312
+ 'tests/fitfunctions/test_core.py',
313
+ 'tests/fitfunctions/test_exponentials.py',
314
+ 'tests/fitfunctions/test_gaussians.py',
315
+ 'tests/fitfunctions/test_lines.py',
316
+ 'tests/fitfunctions/test_moyal.py',
317
+ 'tests/fitfunctions/test_plots.py',
318
+ 'tests/fitfunctions/test_power_laws.py',
319
+ 'tests/fitfunctions/test_tex_info.py',
320
+ 'tests/fitfunctions/test_trend_fit_properties.py',
321
+ 'tests/fitfunctions/test_trend_fits.py',
322
+ 'tests/plotting/labels/test_chemistry.py',
323
+ 'tests/plotting/labels/test_composition.py',
324
+ 'tests/plotting/labels/test_datetime.py',
325
+ 'tests/plotting/labels/test_elemental_abundance.py',
326
+ 'tests/plotting/labels/test_init.py',
327
+ 'tests/plotting/labels/test_labels_base.py',
328
+ 'tests/plotting/labels/test_special.py',
329
+ 'tests/plotting/test_agg_plot.py',
330
+ 'tests/plotting/test_base.py',
331
+ 'tests/plotting/test_fixtures_utilities.py',
332
+ 'tests/plotting/test_histograms.py',
333
+ 'tests/plotting/test_integration.py',
334
+ 'tests/plotting/test_orbits.py',
335
+ 'tests/plotting/test_performance.py',
336
+ 'tests/plotting/test_scatter.py',
337
+ 'tests/plotting/test_select_data_from_figure.py',
338
+ 'tests/plotting/test_spiral.py',
339
+ 'tests/plotting/test_tools.py',
340
+ 'tests/plotting/test_visual_validation.py',
341
+ 'tests/solar_activity/lisird/test_extrema_calculator.py',
342
+ 'tests/solar_activity/lisird/test_lisird_id.py',
343
+ 'tests/solar_activity/sunspot_number/test_init.py',
344
+ 'tests/solar_activity/sunspot_number/test_sidc.py',
345
+ 'tests/solar_activity/sunspot_number/test_sidc_id.py',
346
+ 'tests/solar_activity/sunspot_number/test_sidc_loader.py',
347
+ 'tests/solar_activity/sunspot_number/test_ssn_extrema.py',
348
+ 'tests/solar_activity/test_base.py',
349
+ 'tests/solar_activity/test_init.py',
350
+ 'tests/solar_activity/test_plots.py',
351
+ 'tests/test_circular_imports.py',
352
+ 'tests/test_issue_titles.py',
353
+ 'tests/test_planning_agents_architecture.py',
354
+ 'tests/test_statusline.py'
355
+ ]
356
+
357
+ base_path = '/Users/balterma/observatories/code/SolarWindPy-2'
358
+ parser = TestFileParser(base_path)
359
+
360
+ print("SolarWindPy Test Suite Parser")
361
+ print("=" * 50)
362
+ print(f"Parsing {len(test_files)} test files...")
363
+
364
+ # Parse all test files
365
+ all_functions = parser.parse_all_files(test_files)
366
+
367
+ print(f"\nDiscovered {len(all_functions)} test functions")
368
+
369
+ # Generate summary statistics
370
+ stats = parser.generate_summary_stats()
371
+
372
+ print("\nSummary Statistics:")
373
+ print(f"Total test functions: {stats['total_functions']}")
374
+ print(f"Total test files: {stats['total_files']}")
375
+ print(f"Parametrized tests: {stats['parametrized_tests']}")
376
+ print(f"Estimated test cases: {stats['estimated_total_test_cases']}")
377
+
378
+ print("\nTest Type Distribution:")
379
+ for test_type, count in sorted(stats['type_distribution'].items()):
380
+ print(f" {test_type}: {count}")
381
+
382
+ print("\nPhysics Module Distribution:")
383
+ for module, count in sorted(stats['physics_distribution'].items()):
384
+ print(f" {module}: {count}")
385
+
386
+ print("\nComplexity Distribution:")
387
+ for complexity, count in sorted(stats['complexity_distribution'].items()):
388
+ print(f" {complexity}: {count}")
389
+
390
+ # Generate CSV report
391
+ csv_path = '/Users/balterma/observatories/code/SolarWindPy-2/plans/tests-audit/artifacts/TEST_INVENTORY.csv'
392
+ parser.generate_csv_report(csv_path)
393
+ print(f"\nCSV inventory saved to: {csv_path}")
394
+
395
+ print("\nTest discovery and enumeration complete!")
solarwindpy/README.md ADDED
@@ -0,0 +1,3 @@
1
+ # SolarWindPy
2
+
3
+ Directory containing PlasmaPy code and modules.
@@ -0,0 +1,54 @@
1
+ {
2
+ "cells": [
3
+ {
4
+ "cell_type": "code",
5
+ "execution_count": 1,
6
+ "id": "316be97b-027b-4bc6-84b9-5b488a33c088",
7
+ "metadata": {},
8
+ "outputs": [
9
+ {
10
+ "name": "stderr",
11
+ "output_type": "stream",
12
+ "text": [
13
+ "/Users/balterma/observatories/code/SolarWindPy/solarwindpy/instabilities/verscharen2016.py:83: FutureWarning: The previous implementation of stack is deprecated and will be removed in a future version of pandas. See the What's New notes for pandas 2.1.0 for details. Specify future_stack=True to adopt the new implementation and silence this warning.\n",
14
+ " ).stack(\"Growth Rate\")\n",
15
+ "/Users/balterma/observatories/code/SolarWindPy/solarwindpy/__init__.py:30: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
16
+ " pd.set_option(\"mode.use_inf_as_na\", True)\n"
17
+ ]
18
+ }
19
+ ],
20
+ "source": [
21
+ "import solarwindpy as swp"
22
+ ]
23
+ },
24
+ {
25
+ "cell_type": "code",
26
+ "execution_count": null,
27
+ "id": "9efb6805-a5b8-4b90-a09d-56a7c15134b9",
28
+ "metadata": {},
29
+ "outputs": [],
30
+ "source": []
31
+ }
32
+ ],
33
+ "metadata": {
34
+ "kernelspec": {
35
+ "display_name": "Python 3 (ipykernel)",
36
+ "language": "python",
37
+ "name": "python3"
38
+ },
39
+ "language_info": {
40
+ "codemirror_mode": {
41
+ "name": "ipython",
42
+ "version": 3
43
+ },
44
+ "file_extension": ".py",
45
+ "mimetype": "text/x-python",
46
+ "name": "python",
47
+ "nbconvert_exporter": "python",
48
+ "pygments_lexer": "ipython3",
49
+ "version": "3.13.2"
50
+ }
51
+ },
52
+ "nbformat": 4,
53
+ "nbformat_minor": 5
54
+ }
@@ -0,0 +1,74 @@
1
+ r"""Package for solar wind data analysis.
2
+
3
+ Primary focus is in situ solar wind measurements and the additional tools necessary for
4
+ context (e.g. solar activity indicies) and some simple plotting methods.
5
+ """
6
+
7
+ import pdb # noqa: F401
8
+
9
+ from importlib.metadata import PackageNotFoundError, version
10
+
11
+ import pandas as pd
12
+
13
+ from .core import (
14
+ units_constants,
15
+ base,
16
+ vector,
17
+ tensor,
18
+ ions,
19
+ plasma,
20
+ spacecraft,
21
+ alfvenic_turbulence,
22
+ )
23
+ from . import core, plotting, solar_activity, tools, fitfunctions
24
+ from . import instabilities # noqa: F401
25
+
26
+
27
+ def _configure_pandas() -> None:
28
+ """Configure global pandas options used throughout SolarWindPy."""
29
+ pd.set_option("mode.chained_assignment", "raise")
30
+
31
+
32
+ _configure_pandas()
33
+
34
+ Plasma = core.plasma.Plasma
35
+ at = alfvenic_turbulence
36
+ sc = spacecraft
37
+ pp = plotting
38
+ sa = solar_activity
39
+ Hist1D = plotting.histograms.Hist1D
40
+ Hist2D = plotting.histograms.Hist2D
41
+ TeXlabel = plotting.labels.TeXlabel
42
+
43
+ __all__ = [
44
+ "core",
45
+ "plasma",
46
+ "ions",
47
+ "tensor",
48
+ "vector",
49
+ "spacecraft",
50
+ "sc",
51
+ "alfvenic_turbulence",
52
+ "at",
53
+ "base",
54
+ "units_constants",
55
+ "plotting",
56
+ "pp",
57
+ "solar_activity",
58
+ "sa",
59
+ "tools",
60
+ "fitfunctions",
61
+ "instabilities",
62
+ ]
63
+
64
+ __author__ = "B. L. Alterman <balterma@umich.edu>"
65
+
66
+ __name__ = "solarwindpy"
67
+
68
+ try:
69
+ __version__ = version(__name__)
70
+ except PackageNotFoundError:
71
+ # package is not installed
72
+ __version__ = "unknown"
73
+
74
+ # __version__ = "0.0.1.dev"
@@ -0,0 +1,23 @@
1
+ """Core classes and utilities for :mod:`solarwindpy`."""
2
+
3
+ from .base import Base, Core
4
+ from .vector import Vector
5
+ from .tensor import Tensor
6
+ from .ions import Ion
7
+ from .plasma import Plasma
8
+ from .spacecraft import Spacecraft
9
+ from .units_constants import Units, Constants
10
+ from .alfvenic_turbulence import AlfvenicTurbulence
11
+
12
+ __all__ = [
13
+ "Base",
14
+ "Core",
15
+ "Vector",
16
+ "Tensor",
17
+ "Ion",
18
+ "Plasma",
19
+ "Spacecraft",
20
+ "Units",
21
+ "Constants",
22
+ "AlfvenicTurbulence",
23
+ ]