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,72 @@
1
+ # Solar cycle extrema calculated using 13-Month Smoothed values from SILSO [1]
2
+ #
3
+ # References
4
+ # -----
5
+ # [1] <http://sidc.oma.be/silso/DATA/Cycles/TableCyclesMiMa.txt>
6
+ #
7
+ # To update extrema, use the following an manually copy
8
+ #
9
+ # extrema = pd.read_csv(
10
+ # "http://sidc.oma.be/silso/DATA/Cycles/TableCyclesMiMa.txt",
11
+ # header=None,
12
+ # sep="\s+",
13
+ # skiprows=2,
14
+ # )
15
+ # cols = pd.MultiIndex.from_tuples(
16
+ # (
17
+ # ("Number", ""),
18
+ # ("Min", "Year"),
19
+ # ("Min", "Month"),
20
+ # ("Min", "SSN"),
21
+ # ("Max", "Year"),
22
+ # ("Max", "Month"),
23
+ # ("Max", "SSN"),
24
+ # ("Duration", "Years"),
25
+ # ("Duration", "Months"),
26
+ # )
27
+ # )
28
+ # extrema.index += 1
29
+ # extrema.index.name = "Number"
30
+ # extrema.columns = cols
31
+ # minima = (
32
+ # extrema.loc[:, ("Min", "Year")].astype(str)
33
+ # + "-"
34
+ # + extrema.loc[:, ("Min", "Month")].astype(str)
35
+ # + "-01"
36
+ # )
37
+ # maxima = (
38
+ # extrema.loc[:, ("Max", "Year")].astype(str)
39
+ # + "-"
40
+ # + extrema.loc[:, ("Max", "Month")].astype(str)
41
+ # + "-01"
42
+ # )
43
+ #
44
+ # extrema = pd.concat({"Min": pd.to_datetime(minima), "Max": pd.to_datetime(maxima)}, axis=1)
45
+ # extrema.to_csv("tmp.csv")
46
+
47
+ Number,Min,Max
48
+ 1,1755-02-01,1761-06-01
49
+ 2,1766-06-01,1769-09-01
50
+ 3,1775-06-01,1778-05-01
51
+ 4,1784-09-01,1788-02-01
52
+ 5,1798-04-01,1805-02-01
53
+ 6,1810-07-01,1816-05-01
54
+ 7,1823-05-01,1829-11-01
55
+ 8,1833-11-01,1837-03-01
56
+ 9,1843-07-01,1848-02-01
57
+ 10,1855-12-01,1860-02-01
58
+ 11,1867-03-01,1870-08-01
59
+ 12,1878-12-01,1883-12-01
60
+ 13,1890-03-01,1894-01-01
61
+ 14,1902-01-01,1906-02-01
62
+ 15,1913-07-01,1917-08-01
63
+ 16,1923-08-01,1928-04-01
64
+ 17,1933-09-01,1937-04-01
65
+ 18,1944-02-01,1947-05-01
66
+ 19,1954-04-01,1958-03-01
67
+ 20,1964-10-01,1968-11-01
68
+ 21,1976-03-01,1979-12-01
69
+ 22,1986-09-01,1989-11-01
70
+ 23,1996-08-01,2001-11-01
71
+ 24,2008-12-01,2014-04-01
72
+ 25,2019-12-01,2030-12-01
@@ -0,0 +1,72 @@
1
+ # Solar cycle extrema calculated using 13-Month Smoothed values from SILSO [1]
2
+ #
3
+ # References
4
+ # -----
5
+ # [1] <http://sidc.oma.be/silso/DATA/Cycles/TableCyclesMiMa.txt>
6
+ #
7
+ # To update extrema, use the following an manually copy
8
+ #
9
+ # extrema = pd.read_csv(
10
+ # "http://sidc.oma.be/silso/DATA/Cycles/TableCyclesMiMa.txt",
11
+ # header=None,
12
+ # sep="\s+",
13
+ # skiprows=2,
14
+ # )
15
+ # cols = pd.MultiIndex.from_tuples(
16
+ # (
17
+ # ("Number", ""),
18
+ # ("Min", "Year"),
19
+ # ("Min", "Month"),
20
+ # ("Min", "SSN"),
21
+ # ("Max", "Year"),
22
+ # ("Max", "Month"),
23
+ # ("Max", "SSN"),
24
+ # ("Duration", "Years"),
25
+ # ("Duration", "Months"),
26
+ # )
27
+ # )
28
+ # extrema.index += 1
29
+ # extrema.index.name = "Number"
30
+ # extrema.columns = cols
31
+ # minima = (
32
+ # extrema.loc[:, ("Min", "Year")].astype(str)
33
+ # + "-"
34
+ # + extrema.loc[:, ("Min", "Month")].astype(str)
35
+ # + "-01"
36
+ # )
37
+ # maxima = (
38
+ # extrema.loc[:, ("Max", "Year")].astype(str)
39
+ # + "-"
40
+ # + extrema.loc[:, ("Max", "Month")].astype(str)
41
+ # + "-01"
42
+ # )
43
+ #
44
+ # extrema = pd.concat({"Min": pd.to_datetime(minima), "Max": pd.to_datetime(maxima)}, axis=1)
45
+ # extrema.to_csv("tmp.csv")
46
+
47
+ Number,Min,Max
48
+ 1,1755-02-01,1761-06-01
49
+ 2,1766-06-01,1769-09-01
50
+ 3,1775-06-01,1778-05-01
51
+ 4,1784-09-01,1788-02-01
52
+ 5,1798-04-01,1805-02-01
53
+ 6,1810-07-01,1816-05-01
54
+ 7,1823-05-01,1829-11-01
55
+ 8,1833-11-01,1837-03-01
56
+ 9,1843-07-01,1848-02-01
57
+ 10,1855-12-01,1860-02-01
58
+ 11,1867-03-01,1870-08-01
59
+ 12,1878-12-01,1883-12-01
60
+ 13,1890-03-01,1894-01-01
61
+ 14,1902-01-01,1906-02-01
62
+ 15,1913-07-01,1917-08-01
63
+ 16,1923-08-01,1928-04-01
64
+ 17,1933-09-01,1937-04-01
65
+ 18,1944-02-01,1947-05-01
66
+ 19,1954-04-01,1958-03-01
67
+ 20,1964-10-01,1968-11-01
68
+ 21,1976-03-01,1979-12-01
69
+ 22,1986-09-01,1989-11-01
70
+ 23,1996-08-01,2001-11-01
71
+ 24,2008-12-01,2014-04-01
72
+ 25,2019-12-01, 2030-12-01
@@ -0,0 +1,162 @@
1
+ #!/usr/bin/env python
2
+ """Utility functions for manipulating solar wind data.
3
+
4
+ This module contains helper functions that are not yet organized into
5
+ their own submodules. The functions are primarily used for handling
6
+ proton data and for converting log-normal parameters to their normal
7
+ form.
8
+
9
+ Functions
10
+ ---------
11
+ swap_protons
12
+ Swap beam and core proton labels when the beam density exceeds the
13
+ core density.
14
+ normal_parameters
15
+ Convert log-normal distribution parameters to normal parameters.
16
+
17
+ Examples
18
+ --------
19
+ >>> import pandas as pd
20
+ >>> import numpy as np
21
+ >>> columns = pd.MultiIndex.from_tuples([
22
+ ... ('n', '', 'p1'), ('n', '', 'p2')
23
+ ... ], names=['M', 'C', 'S'])
24
+ >>> df = pd.DataFrame([[1, 0.1], [2, 0.2]], columns=columns)
25
+ >>> new_df, mask = swap_protons(df)
26
+ >>> 'swapped_protons' in new_df.columns.get_level_values('M')
27
+ True
28
+ """
29
+
30
+ import pdb # noqa: F401
31
+ import logging
32
+ import numpy as np
33
+ import pandas as pd
34
+
35
+
36
+ def swap_protons(data, logger=None):
37
+ """Swap beam and core proton labels when the beam density dominates.
38
+
39
+ Parameters
40
+ ----------
41
+ data : pandas.DataFrame
42
+ Data containing proton information. Proton species are stored in the
43
+ ``S`` level of the column index.
44
+ logger : logging.Logger, optional
45
+ Logger used to report indices of swapped protons. If ``None`` a simple
46
+ logger is created.
47
+
48
+ Returns
49
+ -------
50
+ new_data : pandas.DataFrame
51
+ Copy of ``data`` with ``p1`` and ``p2`` columns swapped where the beam
52
+ density exceeds the core density.
53
+ swap : pandas.Series
54
+ Boolean mask indicating where swaps occurred.
55
+
56
+ Examples
57
+ --------
58
+ >>> import pandas as pd
59
+ >>> import numpy as np
60
+ >>> columns = pd.MultiIndex.from_tuples([
61
+ ... ('n', '', 'p1'), ('n', '', 'p2')
62
+ ... ], names=['M', 'C', 'S'])
63
+ >>> df = pd.DataFrame([[2, 1], [1, 2]], columns=columns) # p1 < p2 in first row
64
+ >>> new_df, mask = swap_protons(df)
65
+ >>> mask.iloc[0] # First row should be swapped
66
+ True
67
+ """
68
+ p1 = data.xs("p1", axis=1, level="S")
69
+ p2 = data.xs("p2", axis=1, level="S")
70
+
71
+ n1 = p1.n
72
+ n2 = p2.n
73
+
74
+ swap = n2.divide(n1) > 1.0
75
+ swapped = swap.to_frame(name=("swapped_protons", "", ""))
76
+
77
+ p1_into_p2 = p1.where(swap, axis=0).dropna(axis=0, how="all")
78
+ p2_into_p1 = p2.where(swap, axis=0).dropna(axis=0, how="all")
79
+
80
+ p1 = p1.mask(swap, p2_into_p1, axis=0)
81
+
82
+ p2 = p2.mask(swap, p1_into_p2, axis=0)
83
+
84
+ new_protons = (
85
+ pd.concat([p1, p2], axis=1, keys=["p1", "p2"], names=["S"])
86
+ .reorder_levels(["M", "C", "S"], axis=1)
87
+ .sort_index(axis=1)
88
+ )
89
+
90
+ new_data = pd.concat(
91
+ [data.drop(["p1", "p2"], axis=1, level="S"), new_protons, swapped], axis=1
92
+ ).sort_index(axis=1)
93
+
94
+ chk = new_data.loc[:, ("n", "", "p2")].divide(
95
+ new_data.loc[:, ("n", "", "p2")], axis=0
96
+ )
97
+ assert (chk.dropna() <= 1.0).all()
98
+
99
+ if logger is None:
100
+ logger = logging.getLogger("main.{}".format(__name__))
101
+ hdlr = logging.StreamHandler()
102
+ hdlr.setLevel(logging.INFO)
103
+
104
+ logger.addHandler(hdlr)
105
+ logger.setLevel(logging.DEBUG)
106
+
107
+ assert isinstance(logger, logging.Logger)
108
+ stats = pd.Series(
109
+ {"mean": swap.mean(), "count": swap.sum()}, name="stats", dtype=object
110
+ ) # `dtype=object` lets the count print as an int.
111
+ logger.info("Swap proton labels when n2/n1 > 1\nstats\n%s", stats.to_string())
112
+
113
+ return new_data, swap
114
+
115
+
116
+ def normal_parameters(m, s):
117
+ r"""Convert log-normal parameters to normal distribution parameters.
118
+
119
+ Parameters
120
+ ----------
121
+ m : pandas.Series or numpy.ndarray
122
+ Mean of the log-normal distribution.
123
+ s : pandas.Series or numpy.ndarray
124
+ Standard deviation of the log-normal distribution.
125
+
126
+ Returns
127
+ -------
128
+ pandas.DataFrame
129
+ Data frame with columns ``mu`` and ``sigma``.
130
+
131
+ Notes
132
+ -----
133
+ The conversion uses
134
+
135
+ .. math::
136
+ \mu = \exp[m + s^2/2]
137
+
138
+ .. math::
139
+ \sigma = \sqrt{\exp[s^2 + 2m]\,(\exp[s^2] - 1)}
140
+
141
+ These expressions apply to both natural logarithms and base-10 logarithms.
142
+
143
+ Examples
144
+ --------
145
+ >>> import numpy as np
146
+ >>> m, s = 1.0, 0.5 # log-normal parameters
147
+ >>> mu, sigma = normal_parameters(m, s)
148
+ >>> mu > 1.0 # Normal mean should be > 1
149
+ True
150
+ """
151
+ mu = np.exp(m + ((s**2.0) / 2.0))
152
+ sigma = np.exp(s**2.0 + 2.0 * m)
153
+ sigma *= np.exp(s**2.0) - 1.0
154
+ sigma = np.sqrt(sigma)
155
+
156
+ out = {"mu": mu, "sigma": sigma}
157
+ try:
158
+ out = pd.concat(out, axis=1)
159
+ except TypeError:
160
+ out = pd.Series(out)
161
+
162
+ return out
@@ -0,0 +1,181 @@
1
+ Metadata-Version: 2.4
2
+ Name: solarwindpy
3
+ Version: 0.1.1
4
+ Summary: Python package for solar wind data analysis.
5
+ Author-email: "B. L. Alterman" <blaltermanphd@gmail.com>
6
+ License: LICENSE
7
+ =======
8
+
9
+ BSD 3-Clause License
10
+
11
+ Copyright (c) 2019, B. L. Alterman
12
+ All rights reserved.
13
+
14
+ Redistribution and use in source and binary forms, with or without
15
+ modification, are permitted provided that the following conditions are met:
16
+
17
+ * Redistributions of source code must retain the above copyright notice, this
18
+ list of conditions and the following disclaimer.
19
+
20
+ * Redistributions in binary form must reproduce the above copyright notice,
21
+ this list of conditions and the following disclaimer in the documentation
22
+ and/or other materials provided with the distribution.
23
+
24
+ * Neither the name of the copyright holder nor the names of its
25
+ contributors may be used to endorse or promote products derived from
26
+ this software without specific prior written permission.
27
+
28
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
29
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
30
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
31
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
32
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
33
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
34
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
35
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
36
+ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
37
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
38
+
39
+ Project-URL: Bug Tracker, https://github.com/blalterman/SolarWindPy/issues
40
+ Project-URL: Source, https://github.com/blalterman/SolarWindPy
41
+ Keywords: plasma,physics,solar wind,measurements,in situ,spacecraft
42
+ Classifier: Development Status :: 3 - Alpha
43
+ Classifier: Intended Audience :: Developers
44
+ Classifier: License :: OSI Approved :: BSD License
45
+ Classifier: Programming Language :: Python :: 3
46
+ Classifier: Programming Language :: Python :: 3.10
47
+ Classifier: Programming Language :: Python :: 3.11
48
+ Classifier: Programming Language :: Python :: 3.12
49
+ Classifier: Intended Audience :: Science/Research
50
+ Classifier: Intended Audience :: Education
51
+ Classifier: Topic :: Scientific/Engineering
52
+ Classifier: Topic :: Scientific/Engineering :: Physics
53
+ Requires-Python: <4,>=3.10
54
+ Description-Content-Type: text/x-rst
55
+ License-File: LICENSE.rst
56
+ Requires-Dist: numpy
57
+ Requires-Dist: scipy
58
+ Requires-Dist: pandas
59
+ Requires-Dist: numexpr
60
+ Requires-Dist: bottleneck
61
+ Requires-Dist: h5py
62
+ Requires-Dist: pyyaml
63
+ Requires-Dist: matplotlib
64
+ Requires-Dist: astropy
65
+ Requires-Dist: numba
66
+ Requires-Dist: tabulate
67
+ Provides-Extra: dev
68
+ Requires-Dist: pytest>=7.4.4; extra == "dev"
69
+ Requires-Dist: pytest-cov>=4.1.0; extra == "dev"
70
+ Requires-Dist: black; extra == "dev"
71
+ Requires-Dist: flake8; extra == "dev"
72
+ Requires-Dist: doc8; extra == "dev"
73
+ Requires-Dist: flake8-docstrings; extra == "dev"
74
+ Requires-Dist: pydocstyle; extra == "dev"
75
+ Requires-Dist: numpydoc; extra == "dev"
76
+ Requires-Dist: sphinx; extra == "dev"
77
+ Requires-Dist: sphinx_rtd_theme; extra == "dev"
78
+ Requires-Dist: sphinxcontrib-spelling; extra == "dev"
79
+ Requires-Dist: sphinxcontrib-bibtex; extra == "dev"
80
+ Provides-Extra: test
81
+ Requires-Dist: pytest>=7.4.4; extra == "test"
82
+ Requires-Dist: pytest-cov>=4.1.0; extra == "test"
83
+ Dynamic: license-file
84
+
85
+ ###########
86
+ SolarWindPy
87
+ ###########
88
+
89
+ |Build Status| |Docs Status| |License| |Black Code|
90
+
91
+ Python data analysis tools for solar wind measurements.
92
+
93
+ Installation
94
+ ============
95
+
96
+ SolarWindPy requires Python 3.10 or later.
97
+
98
+ SolarWindPy will soon be installable from pip via
99
+ ``pip install solarwindpy``. We plant to target conda quickly there
100
+ after, most likely through the ``conda-forge`` channel.
101
+
102
+ User
103
+ ----
104
+
105
+ Install from pip (when available):
106
+
107
+ .. code-block:: bash
108
+
109
+ pip install solarwindpy # Requires Python 3.10+
110
+
111
+ Development
112
+ -----------
113
+
114
+ 1. Fork the repository and clone your fork.
115
+ 2. Create a Conda environment using the provided YAML file (Python 3.10+):
116
+
117
+ .. code-block:: bash
118
+
119
+ conda env create -f solarwindpy-20250403.yml # Python 3.10+
120
+ conda activate solarwindpy-20250403
121
+ pip install -e .
122
+
123
+ Alternatively generate the environment from ``requirements-dev.txt``:
124
+
125
+ .. code-block:: bash
126
+
127
+ python scripts/requirements_to_conda_env.py --name solarwindpy-dev
128
+ conda env create -f solarwindpy-dev.yml
129
+ conda activate solarwindpy-dev
130
+ pip install -e .
131
+
132
+ 3. Run the test suite with ``pytest``:
133
+
134
+ .. code-block:: bash
135
+
136
+ pytest -q
137
+
138
+ 4. Regenerate the Conda recipe if the version or dependencies change:
139
+
140
+ .. code-block:: bash
141
+
142
+ python scripts/update_conda_recipe.py
143
+
144
+ 5. Optionally install the pre-commit hooks:
145
+
146
+ .. code-block:: bash
147
+
148
+ pre-commit install
149
+
150
+ This will run ``black`` and ``flake8`` automatically when committing.
151
+
152
+ 6. Build the documentation and fail on warnings:
153
+
154
+ .. code-block:: bash
155
+
156
+ cd docs
157
+ make html SPHINXOPTS=-W
158
+
159
+
160
+ License
161
+ =======
162
+
163
+ SolarWindPy is licensed under a standard 3-clause BSD license. See
164
+ `LICENSE.rst`_.
165
+
166
+ Acknowledging and Citing SolarWindPy
167
+ ====================================
168
+
169
+ See `CITATION.rst`_ for instructions on citing SolarWindPy.
170
+
171
+ .. _LICENSE.rst: ./LICENSE.rst
172
+ .. _CITATION.rst: ./CITATION.rst
173
+
174
+ .. |Build Status| image:: https://github.com/blalterman/SolarWindPy/actions/workflows/continuous-integration.yml/badge.svg?branch=master
175
+ :target: https://github.com/blalterman/SolarWindPy/actions/workflows/continuous-integration.yml
176
+ .. |Docs Status| image:: https://readthedocs.org/projects/solarwindpy/badge/?version=latest
177
+ :target: https://solarwindpy.readthedocs.io/en/latest/?badge=latest
178
+ .. |License| image:: https://img.shields.io/badge/License-BSD%203--Clause-blue.svg
179
+ :target: ./LICENSE.rst
180
+ .. |Black Code| image:: https://img.shields.io/badge/code%20style-black-000000.svg
181
+ :target: https://github.com/psf/black