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.
- plans/.velocity/metrics.json +96 -0
- plans/0-overview-template.md +268 -0
- plans/N-phase-template.md +106 -0
- plans/PLAN_AUDIT_SUMMARY.md +173 -0
- plans/TEMPLATE-USAGE-GUIDE.md +198 -0
- plans/__init__.py +1 -0
- plans/abandoned/compaction-agent-system/0-Overview.md +123 -0
- plans/abandoned/compaction-agent-system/agents-index-update-plan.md +109 -0
- plans/abandoned/compaction-agent-system/compacted_state.md +85 -0
- plans/abandoned/compaction-agent-system/implementation-plan.md +107 -0
- plans/abandoned/compaction-agent-system/system-validation-report.md +159 -0
- plans/abandoned/compaction-agent-system/usage-guide.md +210 -0
- plans/abandoned/hook-system-enhancement/0-Overview.md +214 -0
- plans/abandoned/hook-system-enhancement/1-Phase1-Core-Infrastructure.md +313 -0
- plans/abandoned/hook-system-enhancement/2-Phase2-Intelligent-Testing.md +385 -0
- plans/abandoned/hook-system-enhancement/3-Phase3-Physics-Validation.md +444 -0
- plans/abandoned/hook-system-enhancement/4-Phase4-Performance-Monitoring.md +458 -0
- plans/abandoned/hook-system-enhancement/5-Phase5-Developer-Experience.md +532 -0
- plans/abandoned/hook-system-enhancement/6-Implementation-Timeline.md +274 -0
- plans/abandoned/hook-system-enhancement/7-Risk-Management.md +376 -0
- plans/abandoned/hook-system-enhancement/8-Testing-Strategy.md +579 -0
- plans/abandoned/readthedocs-automation/0-Overview.md +247 -0
- plans/abandoned/readthedocs-automation/1-Emergency-Documentation-Fixes.md +270 -0
- plans/abandoned/readthedocs-automation/2-Template-System-Enhancement.md +811 -0
- plans/abandoned/readthedocs-automation/3-Quality-Audit-ReadTheDocs-Integration.md +844 -0
- plans/abandoned/readthedocs-automation/4-Plan-Consolidation-Cleanup.md +632 -0
- plans/abandoned/readthedocs-automation/9-Closeout.md +207 -0
- plans/abandoned/readthedocs-automation/ABANDONMENT_REASON.md +72 -0
- plans/cicd-architecture-redesign/0-Overview.md +193 -0
- plans/cicd-architecture-redesign/1-Workflow-Creation.md +103 -0
- plans/cicd-architecture-redesign/2-Version-Detection.md +123 -0
- plans/cicd-architecture-redesign/3-Deployment-Gates.md +169 -0
- plans/cicd-architecture-redesign/4-RC-Testing.md +194 -0
- plans/cicd-architecture-redesign/5-TestPyPI-Validation.md +264 -0
- plans/cicd-architecture-redesign/6-Production-Release.md +263 -0
- plans/cicd-architecture-redesign/7-Cleanup.md +243 -0
- plans/cicd-architecture-redesign/8-Documentation.md +285 -0
- plans/cicd-architecture-redesign/Closeout.md +225 -0
- plans/closeout-template.md +259 -0
- plans/completed/circular-import-audit/0-Overview.md +152 -0
- plans/completed/circular-import-audit/1-Static-Dependency-Analysis.md +62 -0
- plans/completed/circular-import-audit/2-Dynamic-Import-Testing.md +56 -0
- plans/completed/circular-import-audit/3-Performance-Impact-Assessment.md +56 -0
- plans/completed/circular-import-audit/4-Issue-Remediation.md +78 -0
- plans/completed/circular-import-audit/5-Preventive-Infrastructure.md +89 -0
- plans/completed/claude-settings-ecosystem-alignment/0-Overview.md +162 -0
- plans/completed/claude-settings-ecosystem-alignment/1-Security-Foundation.md +148 -0
- plans/completed/claude-settings-ecosystem-alignment/2-Hook-Integration.md +158 -0
- plans/completed/claude-settings-ecosystem-alignment/3-Agent-System-Integration.md +177 -0
- plans/completed/claude-settings-ecosystem-alignment/4-Enhanced-Workflow-Automation.md +159 -0
- plans/completed/claude-settings-ecosystem-alignment/5-Validation-Monitoring.md +181 -0
- plans/completed/claude-settings-ecosystem-alignment/compacted_session_state.md +290 -0
- plans/completed/combined_plan_with_checklist_documentation/1-Overview-and-Goals.md +51 -0
- plans/completed/combined_plan_with_checklist_documentation/2-Toolchain-and-Hosting.md +69 -0
- plans/completed/combined_plan_with_checklist_documentation/3-Repository-Structure.md +61 -0
- plans/completed/combined_plan_with_checklist_documentation/4-Configuration-and-Standards.md +70 -0
- plans/completed/combined_plan_with_checklist_documentation/5-Documentation-Content.md +62 -0
- plans/completed/combined_plan_with_checklist_documentation/6-CI-CD-and-Validation.md +58 -0
- plans/completed/combined_plan_with_checklist_documentation/7-Maintenance.md +55 -0
- plans/completed/combined_test_plan_with_checklist_fitfunctions/0-Overview.md +135 -0
- plans/completed/combined_test_plan_with_checklist_fitfunctions/1-Common-fixtures.md +59 -0
- plans/completed/combined_test_plan_with_checklist_fitfunctions/10-power_laws.md +56 -0
- plans/completed/combined_test_plan_with_checklist_fitfunctions/2-core.py-FitFunction.md +118 -0
- plans/completed/combined_test_plan_with_checklist_fitfunctions/3-gaussians.py-Gaussian-GaussianNormalized-GaussianLn.md +69 -0
- plans/completed/combined_test_plan_with_checklist_fitfunctions/4-trend_fits.py-TrendFit.md +99 -0
- plans/completed/combined_test_plan_with_checklist_fitfunctions/5-plots.py-FFPlot.md +98 -0
- plans/completed/combined_test_plan_with_checklist_fitfunctions/6-tex_info.py-TeXinfo.md +79 -0
- plans/completed/combined_test_plan_with_checklist_fitfunctions/7-Justification.md +49 -0
- plans/completed/combined_test_plan_with_checklist_fitfunctions/8-exponentials.md +64 -0
- plans/completed/combined_test_plan_with_checklist_fitfunctions/9-lines.md +58 -0
- plans/completed/combined_test_plan_with_checklist_plotting/0-Overview.md +142 -0
- plans/completed/combined_test_plan_with_checklist_plotting/1-base.py.md +90 -0
- plans/completed/combined_test_plan_with_checklist_plotting/10-labels-special.py.md +102 -0
- plans/completed/combined_test_plan_with_checklist_plotting/11-labels-chemistry.py.md +212 -0
- plans/completed/combined_test_plan_with_checklist_plotting/12-labels-composition.py.md +242 -0
- plans/completed/combined_test_plan_with_checklist_plotting/13-labels-datetime.py.md +247 -0
- plans/completed/combined_test_plan_with_checklist_plotting/14-labels-elemental_abundance.py.md +274 -0
- plans/completed/combined_test_plan_with_checklist_plotting/15-visual-validation.md +256 -0
- plans/completed/combined_test_plan_with_checklist_plotting/16-integration-testing.md +266 -0
- plans/completed/combined_test_plan_with_checklist_plotting/17-performance-benchmarks.md +267 -0
- plans/completed/combined_test_plan_with_checklist_plotting/18-Fixtures-and-Utilities.md +86 -0
- plans/completed/combined_test_plan_with_checklist_plotting/2-agg_plot.py.md +90 -0
- plans/completed/combined_test_plan_with_checklist_plotting/3-histograms.py.md +201 -0
- plans/completed/combined_test_plan_with_checklist_plotting/4-scatter.py.md +167 -0
- plans/completed/combined_test_plan_with_checklist_plotting/5-spiral.py.md +216 -0
- plans/completed/combined_test_plan_with_checklist_plotting/6-orbits.py.md +108 -0
- plans/completed/combined_test_plan_with_checklist_plotting/7-tools.py.md +86 -0
- plans/completed/combined_test_plan_with_checklist_plotting/8-select_data_from_figure.py.md +97 -0
- plans/completed/combined_test_plan_with_checklist_plotting/9-labels-base.py.md +88 -0
- plans/completed/combined_test_plan_with_checklist_solar_activity/.gitkeep +0 -0
- plans/completed/combined_test_plan_with_checklist_solar_activity/0-Overview.md +170 -0
- plans/completed/combined_test_plan_with_checklist_solar_activity/1-Package-Entry-Point-__init__.py.md +121 -0
- plans/completed/combined_test_plan_with_checklist_solar_activity/2-Core-Base-Classes-base.py.md +142 -0
- plans/completed/combined_test_plan_with_checklist_solar_activity/3-Plotting-Helpers-plots.py.md +123 -0
- plans/completed/combined_test_plan_with_checklist_solar_activity/4-LISIRD-Sub-package.md +119 -0
- plans/completed/combined_test_plan_with_checklist_solar_activity/5-Extrema-Calculator.md +103 -0
- plans/completed/combined_test_plan_with_checklist_solar_activity/6-Sunspot-Number-Sub-package.md +163 -0
- plans/completed/combined_test_plan_with_checklist_solar_activity/7-Sunspot-Number-Init.py.md +217 -0
- plans/completed/combined_test_plan_with_checklist_solar_activity/compacted_state.md +52 -0
- plans/completed/compaction-agent-modernization/0-Overview.md +156 -0
- plans/completed/compaction-agent-modernization/1-Architecture-Audit-Gap-Analysis.md +132 -0
- plans/completed/compaction-agent-modernization/2-Token-Baseline-Recalibration.md +153 -0
- plans/completed/compaction-agent-modernization/3-Agent-Reference-Updates.md +184 -0
- plans/completed/compaction-agent-modernization/4-Compression-Algorithm-Modernization.md +238 -0
- plans/completed/compaction-agent-modernization/5-Workflow-Integration-Streamlining.md +252 -0
- plans/completed/compaction-agent-modernization/6-Template-Structure-Optimization.md +240 -0
- plans/completed/compaction-agent-modernization/7-Integration-Testing-Validation.md +292 -0
- plans/completed/compaction-hook-enhancement/0-Overview.md +150 -0
- plans/completed/compaction-hook-enhancement/1-Token-Estimation-Enhancement.md +179 -0
- plans/completed/compaction-hook-enhancement/2-Compression-Intelligence.md +294 -0
- plans/completed/compaction-hook-enhancement/3-Git-Integration-Metadata.md +310 -0
- plans/completed/compaction-hook-enhancement/4-Session-Continuity-Features.md +358 -0
- plans/completed/compaction-hook-enhancement/5-Testing-Strategy.md +404 -0
- plans/completed/compaction-hook-enhancement/6-Integration-Roadmap.md +319 -0
- plans/completed/compaction-hook-enhancement/compacted_state.md +142 -0
- plans/completed/docstring-audit-enhancement/0-Overview.md +274 -0
- plans/completed/docstring-audit-enhancement/1-Infrastructure-Setup-and-Validation-Tools.md +206 -0
- plans/completed/docstring-audit-enhancement/2-Core-Physics-Modules-Enhancement.md +237 -0
- plans/completed/docstring-audit-enhancement/3-Fitfunctions-Mathematical-Modules-Enhancement.md +188 -0
- plans/completed/docstring-audit-enhancement/4-Plotting-Visualization-Modules-Enhancement.md +243 -0
- plans/completed/docstring-audit-enhancement/5-Specialized-Modules-Enhancement.md +216 -0
- plans/completed/docstring-audit-enhancement/6-Validation-and-Integration.md +216 -0
- plans/completed/fitfunctions-testing-implementation/0-Overview.md +130 -0
- plans/completed/fitfunctions-testing-implementation/1-Test-Infrastructure-Setup.md +79 -0
- plans/completed/fitfunctions-testing-implementation/2-Common-Fixtures-Test-Utilities.md +104 -0
- plans/completed/fitfunctions-testing-implementation/3-Core-FitFunction-Testing.md +168 -0
- plans/completed/fitfunctions-testing-implementation/4-Specialized-Function-Classes.md +210 -0
- plans/completed/fitfunctions-testing-implementation/5-Advanced-Classes-Testing.md +214 -0
- plans/completed/fitfunctions-testing-implementation/6-Plotting-Integration-Testing.md +231 -0
- plans/completed/fitfunctions-testing-implementation/7-Extended-Coverage-BONUS.md +184 -0
- plans/completed/numpy-docstring-conversion-plan/numpy-docstring-conversion-plan.md +118 -0
- plans/completed/pr-review-remediation/0-Overview.md +138 -0
- plans/completed/pr-review-remediation/1-Critical-Safety-Improvements.md +179 -0
- plans/completed/pr-review-remediation/2-Smart-Timeouts-Validation.md +399 -0
- plans/completed/pr-review-remediation/3-Enhanced-GitHub-Integration.md +258 -0
- plans/completed/pr-review-remediation/compacted_state.md +66 -0
- plans/completed/python-310-migration/0-Overview.md +390 -0
- plans/completed/python-310-migration/1-Planning-Setup.md +164 -0
- plans/completed/python-310-migration/2-Implementation.md +256 -0
- plans/completed/python-310-migration/3-Testing-Validation.md +335 -0
- plans/completed/python-310-migration/4-Documentation-Release.md +274 -0
- plans/completed/python-310-migration/5-Closeout.md +252 -0
- plans/completed/requirements-management-consolidation/0-Overview.md +118 -0
- plans/completed/requirements-management-consolidation/1-Documentation-Validation-Environment-Setup.md +116 -0
- plans/completed/requirements-management-consolidation/2-Requirements-Consolidation.md +161 -0
- plans/completed/requirements-management-consolidation/3-Workflow-Automation-Final-Integration.md +196 -0
- plans/completed/single-ecosystem-plan-implementation/0-Overview.md +83 -0
- plans/completed/single-ecosystem-plan-implementation/1-Plan-Preservation-Session-Management.md +38 -0
- plans/completed/single-ecosystem-plan-implementation/2-File-Structure-Optimization.md +43 -0
- plans/completed/single-ecosystem-plan-implementation/3-Plan-Migration-Archive-Setup.md +82 -0
- plans/completed/single-ecosystem-plan-implementation/4-Agent-System-Transformation.md +108 -0
- plans/completed/single-ecosystem-plan-implementation/5-Template-System-Enhancement.md +131 -0
- plans/completed/single-ecosystem-plan-implementation/6-Final-Validation-Testing.md +120 -0
- plans/completed/test-directory-consolidation/0-Overview.md +51 -0
- plans/completed/test-directory-consolidation/1-Structure-Preparation.md +82 -0
- plans/completed/test-directory-consolidation/2-File-Migration.md +100 -0
- plans/completed/test-directory-consolidation/3-Import-Transformation.md +117 -0
- plans/completed/test-directory-consolidation/4-Configuration-Consolidation.md +140 -0
- plans/completed/test-directory-consolidation/5-Validation.md +152 -0
- plans/completed/test-directory-consolidation/6-Cleanup.md +156 -0
- plans/completed/test-planning-agents-architecture/0-Overview.md +79 -0
- plans/completed/test-planning-agents-architecture/1-Branch-Isolation-Testing.md +49 -0
- plans/completed/test-planning-agents-architecture/2-Cross-Branch-Coordination.md +51 -0
- plans/completed/test-planning-agents-architecture/3-Merge-Workflow-Testing.md +48 -0
- plans/deployment-semver-pypi-rtd/0-Overview.md +463 -0
- plans/deployment-semver-pypi-rtd/1-Semantic-Versioning-Foundation.md +136 -0
- plans/deployment-semver-pypi-rtd/2-PyPI-Deployment-Infrastructure.md +168 -0
- plans/deployment-semver-pypi-rtd/3-Release-Automation.md +214 -0
- plans/deployment-semver-pypi-rtd/4-Plan-Closeout.md +543 -0
- plans/deployment-semver-pypi-rtd/compacted_session_state.md +172 -0
- plans/deployment-semver-pypi-rtd/compacted_state.md +131 -0
- plans/documentation-code-audit/0-Overview.md +393 -0
- plans/documentation-code-audit/1-Discovery-Inventory.md +183 -0
- plans/documentation-code-audit/2-Execution-Environment-Setup.md +263 -0
- plans/documentation-code-audit/3-Systematic-Validation.md +322 -0
- plans/documentation-code-audit/4-Code-Example-Remediation.md +358 -0
- plans/documentation-code-audit/5-Physics-MultiIndex-Compliance.md +464 -0
- plans/documentation-code-audit/6-Doctest-Integration.md +523 -0
- plans/documentation-code-audit/7-Reporting-Documentation.md +498 -0
- plans/documentation-code-audit/8-Closeout.md +456 -0
- plans/documentation-rebuild-session/compacted_state.md +109 -0
- plans/documentation-rendering-fixes/0-Overview.md +104 -0
- plans/documentation-rendering-fixes/1-Sphinx-Build-Diagnostics-Warning-Audit.md +101 -0
- plans/documentation-rendering-fixes/2-Configuration-Infrastructure-Fixes.md +113 -0
- plans/documentation-rendering-fixes/3-Docstring-Syntax-Audit-Repair.md +131 -0
- plans/documentation-rendering-fixes/4-HTML-Page-Rendering-Verification.md +113 -0
- plans/documentation-rendering-fixes/5-Advanced-Documentation-Quality-Assurance.md +119 -0
- plans/documentation-rendering-fixes/6-Documentation-Build-Optimization-Testing.md +129 -0
- plans/documentation-rendering-fixes/compacted_state.md +132 -0
- plans/documentation-template-fix/0-Overview.md +197 -0
- plans/documentation-template-fix/1-Template-System-Analysis.md +269 -0
- plans/documentation-template-fix/2-Template-Modification.md +609 -0
- plans/documentation-template-fix/3-Build-System-Integration.md +766 -0
- plans/documentation-template-fix/4-Testing-Validation.md +1399 -0
- plans/documentation-template-fix/5-Documentation-Training.md +602 -0
- plans/documentation-workflow-fix/0-Overview.md +222 -0
- plans/documentation-workflow-fix/1-Immediate-Fixes.md +238 -0
- plans/documentation-workflow-fix/2-Configuration-Setup.md +298 -0
- plans/documentation-workflow-fix/3-Pre-commit-Integration.md +382 -0
- plans/documentation-workflow-fix/4-Workflow-Improvements.md +446 -0
- plans/documentation-workflow-fix/5-Documentation-and-Training.md +527 -0
- plans/duplicate-object-warnings-fix-plan.md +130 -0
- plans/github-issues-migration/0-Overview.md +510 -0
- plans/github-issues-migration/1-Foundation-Label-System.md +180 -0
- plans/github-issues-migration/2-Migration-Tool-Rewrite.md +235 -0
- plans/github-issues-migration/3-CLI-Integration-Automation.md +169 -0
- plans/github-issues-migration/4-Validated-Migration.md +252 -0
- plans/github-issues-migration/5-Documentation-Training.md +171 -0
- plans/github-issues-migration/6-Closeout.md +179 -0
- plans/github-workflows-repair/repair-plan.md +299 -0
- plans/issues_from_plans.py +342 -0
- plans/pr-270-doc-validation-fixes/0-Overview.md +354 -0
- plans/pr-270-doc-validation-fixes/1-Critical-PR-Fixes.md +117 -0
- plans/pr-270-doc-validation-fixes/2-Framework-Right-Sizing.md +129 -0
- plans/pr-270-doc-validation-fixes/3-Sustainable-Documentation.md +126 -0
- plans/pr-270-doc-validation-fixes/4-Closeout-Migration.md +143 -0
- plans/pr-270-doc-validation-fixes/PLAN_COMPLETED.md +149 -0
- plans/python-310-migration/0-Overview.md +390 -0
- plans/python-310-migration/1-Planning-Setup.md +164 -0
- plans/python-310-migration/2-Implementation.md +256 -0
- plans/python-310-migration/3-Testing-Validation.md +335 -0
- plans/python-310-migration/4-Documentation-Release.md +274 -0
- plans/python-310-migration/5-Closeout.md +252 -0
- plans/readthedocs-simplified/0-Overview.md +243 -0
- plans/readthedocs-simplified/1-Immediate-Fixes.md +216 -0
- plans/readthedocs-simplified/2-Template-Simplification.md +278 -0
- plans/readthedocs-simplified/3-ReadTheDocs-Setup.md +298 -0
- plans/readthedocs-simplified/4-Testing-Validation.md +328 -0
- plans/readthedocs-simplified/5-Closeout.md +231 -0
- plans/readthedocs-simplified/compacted_state.md +127 -0
- plans/session-compaction-2025-08-12/compacted_state.md +114 -0
- plans/session-compaction-2025-08-13/compacted_state.md +145 -0
- plans/session-continuity-protocol/0-Overview.md +35 -0
- plans/session-continuity-protocol/1-Core-Principles-Framework.md +40 -0
- plans/session-continuity-protocol/2-Pre-Session-Validation-System.md +79 -0
- plans/session-continuity-protocol/3-Context-Switching-Prevention.md +87 -0
- plans/session-continuity-protocol/4-Progress-Tracking-Recovery.md +100 -0
- plans/sphinx-warnings-analysis.md +222 -0
- plans/systemprompt-optimization/0-Overview.md +447 -0
- plans/systemprompt-optimization/1-Deploy-SystemPrompt.md +114 -0
- plans/systemprompt-optimization/2-Documentation-Alignment.md +198 -0
- plans/systemprompt-optimization/3-Monitoring-Infrastructure.md +396 -0
- plans/systemprompt-optimization/4-Implementation-Script.md +450 -0
- plans/systemprompt-optimization/9-Closeout.md +165 -0
- plans/systemprompt-optimization/compacted_state.md +143 -0
- plans/template-value-propositions/0-Overview.md +357 -0
- plans/template-value-propositions/1-Value-Proposition-Framework-Design.md +144 -0
- plans/template-value-propositions/2-Plan-Template-Enhancement.md +178 -0
- plans/template-value-propositions/3-Value-Generator-Hook-Implementation.md +291 -0
- plans/template-value-propositions/4-Value-Validator-Hook-Implementation.md +274 -0
- plans/template-value-propositions/5-Documentation-Agent-Updates.md +219 -0
- plans/template-value-propositions/6-Integration-Testing-Validation.md +247 -0
- plans/tests-audit/0-Overview.md +410 -0
- plans/tests-audit/1-Discovery-Inventory.md +170 -0
- plans/tests-audit/2-Physics-Validation-Audit.md +195 -0
- plans/tests-audit/3-Architecture-Compliance.md +195 -0
- plans/tests-audit/4-Numerical-Stability-Analysis.md +203 -0
- plans/tests-audit/5-Documentation-Enhancement.md +220 -0
- plans/tests-audit/6-Audit-Deliverables.md +220 -0
- plans/tests-audit/7-Closeout.md +252 -0
- plans/tests-audit/artifacts/ARCHITECTURE_COMPLIANCE_REPORT.md +315 -0
- plans/tests-audit/artifacts/ARCHITECTURE_RECOMMENDATIONS.md +943 -0
- plans/tests-audit/artifacts/COMPREHENSIVE_AUDIT_REPORT.md +356 -0
- plans/tests-audit/artifacts/CONTRIBUTING_ENHANCED_TEMPLATE.md +419 -0
- plans/tests-audit/artifacts/COVERAGE_GAP_ANALYSIS.md +152 -0
- plans/tests-audit/artifacts/DOCUMENTATION_ENHANCEMENT_REPORT.md +502 -0
- plans/tests-audit/artifacts/EXECUTIVE_AUDIT_SUMMARY.md +129 -0
- plans/tests-audit/artifacts/IMPLEMENTATION_ROADMAP.md +647 -0
- plans/tests-audit/artifacts/NUMERICAL_RECOMMENDATIONS.md +739 -0
- plans/tests-audit/artifacts/NUMERICAL_STABILITY_GUIDE_TEMPLATE.rst +451 -0
- plans/tests-audit/artifacts/NUMERICAL_STABILITY_REPORT.md +301 -0
- plans/tests-audit/artifacts/PHASE_3_SUMMARY.md +280 -0
- plans/tests-audit/artifacts/PHASE_4_SUMMARY.md +229 -0
- plans/tests-audit/artifacts/PHASE_5_SUMMARY.md +292 -0
- plans/tests-audit/artifacts/PHASE_6_CLOSEOUT.md +278 -0
- plans/tests-audit/artifacts/PHYSICS_GUIDE_TEMPLATE.rst +268 -0
- plans/tests-audit/artifacts/PHYSICS_VALIDATION_REPORT.md +235 -0
- plans/tests-audit/artifacts/TECHNICAL_DELIVERABLES_PACKAGE.md +2502 -0
- plans/tests-audit/artifacts/TEST_INVENTORY.csv +1204 -0
- plans/tests-audit/artifacts/TEST_INVENTORY.md +135 -0
- plans/tests-audit/artifacts/test_discovery_analysis.py +231 -0
- plans/tests-audit/artifacts/test_parser.py +395 -0
- solarwindpy/README.md +3 -0
- solarwindpy/Untitled.ipynb +54 -0
- solarwindpy/__init__.py +74 -0
- solarwindpy/core/__init__.py +23 -0
- solarwindpy/core/alfvenic_turbulence.py +804 -0
- solarwindpy/core/base.py +267 -0
- solarwindpy/core/ions.py +309 -0
- solarwindpy/core/plasma.py +2133 -0
- solarwindpy/core/spacecraft.py +256 -0
- solarwindpy/core/tensor.py +90 -0
- solarwindpy/core/units_constants.py +199 -0
- solarwindpy/core/vector.py +328 -0
- solarwindpy/fitfunctions/__init__.py +20 -0
- solarwindpy/fitfunctions/core.py +734 -0
- solarwindpy/fitfunctions/exponentials.py +188 -0
- solarwindpy/fitfunctions/gaussians.py +264 -0
- solarwindpy/fitfunctions/lines.py +116 -0
- solarwindpy/fitfunctions/moyal.py +71 -0
- solarwindpy/fitfunctions/plots.py +751 -0
- solarwindpy/fitfunctions/power_laws.py +209 -0
- solarwindpy/fitfunctions/tex_info.py +568 -0
- solarwindpy/fitfunctions/trend_fits.py +482 -0
- solarwindpy/instabilities/__init__.py +16 -0
- solarwindpy/instabilities/beta_ani.py +82 -0
- solarwindpy/instabilities/verscharen2016.py +631 -0
- solarwindpy/plotting/__init__.py +33 -0
- solarwindpy/plotting/agg_plot.py +489 -0
- solarwindpy/plotting/base.py +465 -0
- solarwindpy/plotting/hist1d.py +405 -0
- solarwindpy/plotting/hist2d.py +1035 -0
- solarwindpy/plotting/histograms.py +1845 -0
- solarwindpy/plotting/labels/__init__.py +104 -0
- solarwindpy/plotting/labels/base.py +686 -0
- solarwindpy/plotting/labels/chemistry.py +19 -0
- solarwindpy/plotting/labels/composition.py +100 -0
- solarwindpy/plotting/labels/datetime.py +235 -0
- solarwindpy/plotting/labels/elemental_abundance.py +73 -0
- solarwindpy/plotting/labels/special.py +794 -0
- solarwindpy/plotting/orbits.py +515 -0
- solarwindpy/plotting/scatter.py +99 -0
- solarwindpy/plotting/select_data_from_figure.py +329 -0
- solarwindpy/plotting/spiral.py +980 -0
- solarwindpy/plotting/tools.py +434 -0
- solarwindpy/scripts/__init__.py +1 -0
- solarwindpy/scripts/logs/.gitignore +1 -0
- solarwindpy/solar_activity/__init__.py +53 -0
- solarwindpy/solar_activity/base.py +605 -0
- solarwindpy/solar_activity/lisird/__init__.py +3 -0
- solarwindpy/solar_activity/lisird/extrema_calculator.py +394 -0
- solarwindpy/solar_activity/lisird/lisird.py +319 -0
- solarwindpy/solar_activity/plots.py +116 -0
- solarwindpy/solar_activity/sunspot_number/.DS_Store +0 -0
- solarwindpy/solar_activity/sunspot_number/__init__.py +3 -0
- solarwindpy/solar_activity/sunspot_number/sidc.py +556 -0
- solarwindpy/solar_activity/sunspot_number/ssn_extrema.csv +72 -0
- solarwindpy/solar_activity/sunspot_number/ssn_extrema.csv.silso +72 -0
- solarwindpy/tools/__init__.py +162 -0
- solarwindpy-0.1.1.dist-info/METADATA +181 -0
- solarwindpy-0.1.1.dist-info/RECORD +409 -0
- {solarwindpy-0.0.1.dev0.dist-info โ solarwindpy-0.1.1.dist-info}/WHEEL +1 -1
- solarwindpy-0.1.1.dist-info/licenses/LICENSE.rst +32 -0
- solarwindpy-0.1.1.dist-info/top_level.txt +3 -0
- tests/__init__.py +1 -0
- tests/conftest.py +10 -0
- tests/core/__init__.py +1 -0
- tests/core/test_alfvenic_turbulence.py +544 -0
- tests/core/test_base.py +112 -0
- tests/core/test_base_head_tail.py +29 -0
- tests/core/test_base_mi_tuples.py +11 -0
- tests/core/test_core_verify_datetimeindex.py +32 -0
- tests/core/test_ions.py +325 -0
- tests/core/test_plasma.py +2581 -0
- tests/core/test_plasma_io.py +12 -0
- tests/core/test_quantities.py +507 -0
- tests/core/test_spacecraft.py +210 -0
- tests/core/test_units_constants.py +22 -0
- tests/data/epoch.csv +4 -0
- tests/data/plasma.csv +4 -0
- tests/data/spacecraft.csv +4 -0
- tests/fitfunctions/conftest.py +60 -0
- tests/fitfunctions/test_core.py +193 -0
- tests/fitfunctions/test_exponentials.py +342 -0
- tests/fitfunctions/test_gaussians.py +142 -0
- tests/fitfunctions/test_lines.py +349 -0
- tests/fitfunctions/test_moyal.py +258 -0
- tests/fitfunctions/test_plots.py +258 -0
- tests/fitfunctions/test_power_laws.py +365 -0
- tests/fitfunctions/test_tex_info.py +183 -0
- tests/fitfunctions/test_trend_fit_properties.py +31 -0
- tests/fitfunctions/test_trend_fits.py +244 -0
- tests/plotting/__init__.py +1 -0
- tests/plotting/labels/__init__.py +1 -0
- tests/plotting/labels/test_chemistry.py +243 -0
- tests/plotting/labels/test_composition.py +345 -0
- tests/plotting/labels/test_datetime.py +445 -0
- tests/plotting/labels/test_elemental_abundance.py +366 -0
- tests/plotting/labels/test_init.py +66 -0
- tests/plotting/labels/test_labels_base.py +347 -0
- tests/plotting/labels/test_special.py +550 -0
- tests/plotting/test_agg_plot.py +602 -0
- tests/plotting/test_base.py +752 -0
- tests/plotting/test_fixtures_utilities.py +775 -0
- tests/plotting/test_histograms.py +546 -0
- tests/plotting/test_integration.py +675 -0
- tests/plotting/test_orbits.py +435 -0
- tests/plotting/test_performance.py +708 -0
- tests/plotting/test_scatter.py +752 -0
- tests/plotting/test_select_data_from_figure.py +1209 -0
- tests/plotting/test_spiral.py +573 -0
- tests/plotting/test_tools.py +607 -0
- tests/plotting/test_visual_validation.py +465 -0
- tests/solar_activity/__init__.py +1 -0
- tests/solar_activity/lisird/__init__.py +1 -0
- tests/solar_activity/lisird/test_extrema_calculator.py +593 -0
- tests/solar_activity/lisird/test_lisird_id.py +187 -0
- tests/solar_activity/sunspot_number/__init__.py +1 -0
- tests/solar_activity/sunspot_number/test_init.py +399 -0
- tests/solar_activity/sunspot_number/test_sidc.py +465 -0
- tests/solar_activity/sunspot_number/test_sidc_id.py +223 -0
- tests/solar_activity/sunspot_number/test_sidc_loader.py +275 -0
- tests/solar_activity/sunspot_number/test_ssn_extrema.py +406 -0
- tests/solar_activity/test_base.py +656 -0
- tests/solar_activity/test_init.py +396 -0
- tests/solar_activity/test_plots.py +371 -0
- tests/test_circular_imports.py +408 -0
- tests/test_issue_titles.py +25 -0
- tests/test_statusline.py +298 -0
- solarwindpy-0.0.1.dev0.dist-info/METADATA +0 -14
- solarwindpy-0.0.1.dev0.dist-info/RECORD +0 -4
- solarwindpy-0.0.1.dev0.dist-info/top_level.txt +0 -1
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
# Physics-Focused Test Suite Audit - Test Inventory Report
|
|
2
|
+
|
|
3
|
+
## Executive Summary
|
|
4
|
+
|
|
5
|
+
**Date**: 2025-08-21
|
|
6
|
+
**Phase**: 1 - Discovery & Inventory
|
|
7
|
+
**Status**: โ
COMPLETED
|
|
8
|
+
|
|
9
|
+
### Key Findings
|
|
10
|
+
|
|
11
|
+
- **Total Test Files**: 54 (Expected: 63) - Variance: -14.3%
|
|
12
|
+
- **Total Test Functions**: 1,128 (Expected: 1,132) - Variance: -0.35%
|
|
13
|
+
- **Current Test Coverage**: 77.1% (Baseline established)
|
|
14
|
+
- **Physics-Focused Tests**: 316 functions (28.0% of total)
|
|
15
|
+
- **Target Coverage**: โฅ95% (Est. ~200 additional tests needed)
|
|
16
|
+
|
|
17
|
+
## Test Suite Architecture
|
|
18
|
+
|
|
19
|
+
### File Distribution
|
|
20
|
+
```
|
|
21
|
+
tests/
|
|
22
|
+
โโโ core/ 12 files (plasma, ions, alfvenic turbulence, base classes)
|
|
23
|
+
โโโ fitfunctions/ 10 files (curve fitting, statistical analysis)
|
|
24
|
+
โโโ plotting/ 20 files (visualization, labels, tools)
|
|
25
|
+
โโโ solar_activity/ 10 files (sunspot data, LISIRD integration)
|
|
26
|
+
โโโ root level/ 2 files (imports, architecture validation)
|
|
27
|
+
โโโ [missing modules] 9 files (instabilities/, tools/ test coverage)
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
### Test Function Classification
|
|
31
|
+
|
|
32
|
+
#### By Test Type
|
|
33
|
+
- **Unit Tests**: 817 functions (72.4%) - Core component testing
|
|
34
|
+
- **Physics Tests**: 229 functions (20.3%) - Domain-specific validation
|
|
35
|
+
- **Edge Cases**: 48 functions (4.3%) - Boundary condition testing
|
|
36
|
+
- **Integration**: 18 functions (1.6%) - Cross-module interaction testing
|
|
37
|
+
- **Performance**: 16 functions (1.4%) - Computational efficiency validation
|
|
38
|
+
|
|
39
|
+
#### By Physics Domain
|
|
40
|
+
- **Visualization**: 636 functions (56.4%) - Plotting and figure generation
|
|
41
|
+
- **Solar Activity**: 196 functions (17.4%) - Sunspot and LISIRD data analysis
|
|
42
|
+
- **Fitting Functions**: 129 functions (11.4%) - Statistical and curve fitting
|
|
43
|
+
- **General/Utility**: 75 functions (6.6%) - Core utilities and base classes
|
|
44
|
+
- **Plasma Physics**: 42 functions (3.7%) - Core plasma calculations
|
|
45
|
+
- **Alfvรฉnic Turbulence**: 25 functions (2.2%) - Turbulence analysis
|
|
46
|
+
- **Ion Species**: 13 functions (1.2%) - Ion-specific calculations
|
|
47
|
+
- **Spacecraft**: 12 functions (1.1%) - Spacecraft data handling
|
|
48
|
+
|
|
49
|
+
#### By Complexity
|
|
50
|
+
- **Simple**: 959 functions (85.0%) - Basic validation, โค20 lines
|
|
51
|
+
- **Moderate**: 149 functions (13.2%) - Multi-step validation, 21-50 lines
|
|
52
|
+
- **Complex**: 20 functions (1.8%) - Comprehensive validation, >50 lines
|
|
53
|
+
|
|
54
|
+
## Coverage Analysis
|
|
55
|
+
|
|
56
|
+
### Current Baseline (pytest-cov)
|
|
57
|
+
- **Total Coverage**: 77.1% (6,966 lines total, 1,594 missing)
|
|
58
|
+
- **Test Results**: 1,552 passed, 23 failed, 6 skipped, 2 errors
|
|
59
|
+
- **Critical Gaps**: Missing instabilities/ and tools/ test modules
|
|
60
|
+
|
|
61
|
+
### Physics Validation Coverage Gaps
|
|
62
|
+
Based on test function analysis, the following physics areas need enhancement:
|
|
63
|
+
|
|
64
|
+
#### High Priority Physics Gaps
|
|
65
|
+
1. **SI Unit Consistency**: Only 12 explicit unit validation tests
|
|
66
|
+
2. **Thermal Speed Convention**: 3 tests validate mwยฒ = 2kT formula
|
|
67
|
+
3. **Alfvรฉn Speed Formula**: 8 tests for V_A = B/โ(ฮผโฯ) calculations
|
|
68
|
+
4. **Conservation Laws**: 5 tests for energy/momentum conservation
|
|
69
|
+
5. **Numerical Stability**: 48 edge case tests (needs expansion for Bโ0, nโ0)
|
|
70
|
+
|
|
71
|
+
#### Missing Test Modules
|
|
72
|
+
- `instabilities/` module: 0 test files (expected ~8-10 files)
|
|
73
|
+
- `tools/` module: Limited coverage (1 partial test)
|
|
74
|
+
- Advanced plasma physics calculations
|
|
75
|
+
- MultiIndex DataFrame edge cases
|
|
76
|
+
- Physics constraint validation
|
|
77
|
+
|
|
78
|
+
## Test Quality Assessment
|
|
79
|
+
|
|
80
|
+
### Strengths
|
|
81
|
+
โ
**Comprehensive visualization testing** (636 functions)
|
|
82
|
+
โ
**Good solar activity coverage** (196 functions)
|
|
83
|
+
โ
**Robust fitting function validation** (129 functions)
|
|
84
|
+
โ
**Systematic test organization** by module structure
|
|
85
|
+
|
|
86
|
+
### Areas for Improvement
|
|
87
|
+
โ ๏ธ **Limited physics constraint testing** - Need systematic validation
|
|
88
|
+
โ ๏ธ **Missing instabilities module tests** - Critical gap for plasma physics
|
|
89
|
+
โ ๏ธ **Insufficient numerical stability testing** - Only 48 edge case tests
|
|
90
|
+
โ ๏ธ **Sparse MultiIndex architecture validation** - Core data structure needs more testing
|
|
91
|
+
|
|
92
|
+
## Phase 1 Deliverables
|
|
93
|
+
|
|
94
|
+
### Generated Artifacts
|
|
95
|
+
1. **TEST_INVENTORY.csv** - Machine-readable complete test metadata (1,128 rows)
|
|
96
|
+
2. **TEST_INVENTORY.md** - This human-readable summary report
|
|
97
|
+
3. **test_discovery_analysis.py** - Reusable discovery and analysis script
|
|
98
|
+
|
|
99
|
+
### Coverage Baseline Established
|
|
100
|
+
- **Current**: 77.1% code coverage across 6,966 source lines
|
|
101
|
+
- **Target**: โฅ95% coverage (requires ~1,594 โ ~349 missing lines reduction)
|
|
102
|
+
- **Estimated Additional Tests**: ~200 functions focused on physics validation
|
|
103
|
+
|
|
104
|
+
### Classification Matrix
|
|
105
|
+
Complete classification of all 1,128 test functions by:
|
|
106
|
+
- Test type (unit, physics, edge, integration, performance)
|
|
107
|
+
- Physics domain (plasma, ions, turbulence, fitting, visualization, etc.)
|
|
108
|
+
- Complexity level (simple, moderate, complex)
|
|
109
|
+
- Physics focus flags (is_physics_test, is_edge_case, etc.)
|
|
110
|
+
|
|
111
|
+
## Recommendations for Phase 2
|
|
112
|
+
|
|
113
|
+
### Immediate Priorities
|
|
114
|
+
1. **Physics Validation Audit**: Focus PhysicsValidator agent on 316 physics-focused tests
|
|
115
|
+
2. **Missing Module Testing**: Priority on instabilities/ and tools/ modules
|
|
116
|
+
3. **Unit Consistency**: Systematic SI unit validation across plasma calculations
|
|
117
|
+
4. **Thermal Speed Validation**: Expand mwยฒ = 2kT convention testing
|
|
118
|
+
5. **Conservation Law Testing**: Energy, momentum, and mass conservation validation
|
|
119
|
+
|
|
120
|
+
### Coverage Improvement Strategy
|
|
121
|
+
- **Primary Gap**: Missing 1,594 lines of coverage (22.9% of codebase)
|
|
122
|
+
- **Physics Focus**: Prioritize plasma physics calculations and edge cases
|
|
123
|
+
- **Architecture Focus**: MultiIndex DataFrame operations and edge cases
|
|
124
|
+
- **Numerical Focus**: Bโ0, nโ0, extreme temperature boundary conditions
|
|
125
|
+
|
|
126
|
+
---
|
|
127
|
+
|
|
128
|
+
## Phase 1 Completion Status: โ
COMPLETED
|
|
129
|
+
|
|
130
|
+
**Next Phase**: Phase 2 - Physics Validation Audit with PhysicsValidator agent
|
|
131
|
+
**Handoff Ready**: Complete test inventory and baseline metrics established
|
|
132
|
+
**Audit Foundation**: Systematic test classification and gap analysis complete
|
|
133
|
+
|
|
134
|
+
*Generated by TestEngineer agent - Phase 1 of Physics-Focused Test Suite Audit*
|
|
135
|
+
*Artifacts Location: `plans/tests-audit/artifacts/`*
|
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""
|
|
3
|
+
Test Discovery and Analysis Script for Physics-Focused Test Suite Audit
|
|
4
|
+
Phase 1: Discovery & Inventory
|
|
5
|
+
|
|
6
|
+
This script systematically discovers and analyzes all test functions in the SolarWindPy test suite
|
|
7
|
+
to create comprehensive inventory artifacts for the audit process.
|
|
8
|
+
"""
|
|
9
|
+
|
|
10
|
+
import os
|
|
11
|
+
import ast
|
|
12
|
+
import csv
|
|
13
|
+
import glob
|
|
14
|
+
import pandas as pd
|
|
15
|
+
from pathlib import Path
|
|
16
|
+
from collections import defaultdict
|
|
17
|
+
from typing import Dict, List, Tuple, Set
|
|
18
|
+
|
|
19
|
+
class TestFunctionDiscovery:
|
|
20
|
+
"""Discovers and analyzes test functions in the SolarWindPy test suite."""
|
|
21
|
+
|
|
22
|
+
def __init__(self, tests_root: str = "tests"):
|
|
23
|
+
self.tests_root = Path(tests_root)
|
|
24
|
+
self.test_files = []
|
|
25
|
+
self.test_functions = []
|
|
26
|
+
self.classification_data = []
|
|
27
|
+
|
|
28
|
+
def discover_test_files(self) -> List[Path]:
|
|
29
|
+
"""Discover all test files in the test directory."""
|
|
30
|
+
pattern = str(self.tests_root / "**" / "test_*.py")
|
|
31
|
+
files = glob.glob(pattern, recursive=True)
|
|
32
|
+
self.test_files = [Path(f) for f in sorted(files)]
|
|
33
|
+
return self.test_files
|
|
34
|
+
|
|
35
|
+
def extract_test_functions(self, file_path: Path) -> List[Dict]:
|
|
36
|
+
"""Extract test functions from a Python file using AST parsing."""
|
|
37
|
+
functions = []
|
|
38
|
+
try:
|
|
39
|
+
with open(file_path, 'r', encoding='utf-8') as f:
|
|
40
|
+
content = f.read()
|
|
41
|
+
|
|
42
|
+
tree = ast.parse(content, filename=str(file_path))
|
|
43
|
+
|
|
44
|
+
for node in ast.walk(tree):
|
|
45
|
+
if isinstance(node, ast.FunctionDef) and node.name.startswith('test_'):
|
|
46
|
+
# Extract docstring if present
|
|
47
|
+
docstring = ""
|
|
48
|
+
if (node.body and isinstance(node.body[0], ast.Expr)
|
|
49
|
+
and isinstance(node.body[0].value, ast.Str)):
|
|
50
|
+
docstring = node.body[0].value.s
|
|
51
|
+
elif (node.body and isinstance(node.body[0], ast.Expr)
|
|
52
|
+
and isinstance(node.body[0].value, ast.Constant)
|
|
53
|
+
and isinstance(node.body[0].value.value, str)):
|
|
54
|
+
docstring = node.body[0].value.value
|
|
55
|
+
|
|
56
|
+
# Count lines of code in function
|
|
57
|
+
func_lines = node.end_lineno - node.lineno + 1 if hasattr(node, 'end_lineno') else 1
|
|
58
|
+
|
|
59
|
+
functions.append({
|
|
60
|
+
'file_path': str(file_path),
|
|
61
|
+
'function_name': node.name,
|
|
62
|
+
'line_number': node.lineno,
|
|
63
|
+
'docstring': docstring,
|
|
64
|
+
'num_lines': func_lines,
|
|
65
|
+
'args': len(node.args.args)
|
|
66
|
+
})
|
|
67
|
+
|
|
68
|
+
except Exception as e:
|
|
69
|
+
print(f"Error parsing {file_path}: {e}")
|
|
70
|
+
|
|
71
|
+
return functions
|
|
72
|
+
|
|
73
|
+
def classify_test_function(self, func_data: Dict) -> Dict:
|
|
74
|
+
"""Classify a test function by type and physics domain."""
|
|
75
|
+
func_name = func_data['function_name']
|
|
76
|
+
file_path = func_data['file_path']
|
|
77
|
+
docstring = func_data['docstring'].lower()
|
|
78
|
+
|
|
79
|
+
# Initialize classification
|
|
80
|
+
classification = {
|
|
81
|
+
'test_type': 'unit', # Default
|
|
82
|
+
'physics_domain': 'general',
|
|
83
|
+
'complexity': 'simple',
|
|
84
|
+
'is_physics_test': False,
|
|
85
|
+
'is_edge_case': False,
|
|
86
|
+
'is_integration': False,
|
|
87
|
+
'is_performance': False
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
# Classify by test type based on function name patterns
|
|
91
|
+
if any(keyword in func_name.lower() for keyword in ['edge', 'boundary', 'extreme', 'invalid']):
|
|
92
|
+
classification['test_type'] = 'edge'
|
|
93
|
+
classification['is_edge_case'] = True
|
|
94
|
+
elif any(keyword in func_name.lower() for keyword in ['integration', 'end_to_end', 'full']):
|
|
95
|
+
classification['test_type'] = 'integration'
|
|
96
|
+
classification['is_integration'] = True
|
|
97
|
+
elif any(keyword in func_name.lower() for keyword in ['performance', 'speed', 'benchmark', 'timing']):
|
|
98
|
+
classification['test_type'] = 'performance'
|
|
99
|
+
classification['is_performance'] = True
|
|
100
|
+
elif any(keyword in func_name.lower() for keyword in ['physics', 'thermal', 'alfven', 'magnetic', 'plasma']):
|
|
101
|
+
classification['test_type'] = 'physics'
|
|
102
|
+
classification['is_physics_test'] = True
|
|
103
|
+
|
|
104
|
+
# Classify by physics domain based on file path and function name
|
|
105
|
+
if 'core/test_plasma' in file_path:
|
|
106
|
+
classification['physics_domain'] = 'plasma'
|
|
107
|
+
classification['is_physics_test'] = True
|
|
108
|
+
elif 'core/test_ions' in file_path:
|
|
109
|
+
classification['physics_domain'] = 'ions'
|
|
110
|
+
classification['is_physics_test'] = True
|
|
111
|
+
elif 'core/test_alfvenic' in file_path:
|
|
112
|
+
classification['physics_domain'] = 'alfvenic_turbulence'
|
|
113
|
+
classification['is_physics_test'] = True
|
|
114
|
+
elif 'core/test_spacecraft' in file_path:
|
|
115
|
+
classification['physics_domain'] = 'spacecraft'
|
|
116
|
+
elif 'fitfunctions' in file_path:
|
|
117
|
+
classification['physics_domain'] = 'fitting'
|
|
118
|
+
elif 'plotting' in file_path:
|
|
119
|
+
classification['physics_domain'] = 'visualization'
|
|
120
|
+
elif 'solar_activity' in file_path:
|
|
121
|
+
classification['physics_domain'] = 'solar_activity'
|
|
122
|
+
elif 'instabilities' in file_path:
|
|
123
|
+
classification['physics_domain'] = 'instabilities'
|
|
124
|
+
classification['is_physics_test'] = True
|
|
125
|
+
|
|
126
|
+
# Assess complexity based on function characteristics
|
|
127
|
+
if func_data['num_lines'] > 50:
|
|
128
|
+
classification['complexity'] = 'complex'
|
|
129
|
+
elif func_data['num_lines'] > 20 or func_data['args'] > 3:
|
|
130
|
+
classification['complexity'] = 'moderate'
|
|
131
|
+
|
|
132
|
+
# Physics-specific classifications
|
|
133
|
+
physics_keywords = ['thermal_speed', 'alfven_speed', 'density', 'velocity', 'temperature',
|
|
134
|
+
'magnetic_field', 'pressure', 'beta', 'ma', 'conservation', 'units']
|
|
135
|
+
if any(keyword in func_name.lower() or keyword in docstring for keyword in physics_keywords):
|
|
136
|
+
classification['is_physics_test'] = True
|
|
137
|
+
if classification['test_type'] == 'unit':
|
|
138
|
+
classification['test_type'] = 'physics'
|
|
139
|
+
|
|
140
|
+
return classification
|
|
141
|
+
|
|
142
|
+
def analyze_test_suite(self) -> Dict:
|
|
143
|
+
"""Complete analysis of the test suite."""
|
|
144
|
+
print("๐ Discovering test files...")
|
|
145
|
+
self.discover_test_files()
|
|
146
|
+
|
|
147
|
+
print(f"๐ Found {len(self.test_files)} test files")
|
|
148
|
+
|
|
149
|
+
print("๐ Extracting test functions...")
|
|
150
|
+
all_functions = []
|
|
151
|
+
for file_path in self.test_files:
|
|
152
|
+
functions = self.extract_test_functions(file_path)
|
|
153
|
+
all_functions.extend(functions)
|
|
154
|
+
|
|
155
|
+
print(f"๐งช Found {len(all_functions)} test functions")
|
|
156
|
+
|
|
157
|
+
print("๐ท๏ธ Classifying test functions...")
|
|
158
|
+
for func_data in all_functions:
|
|
159
|
+
classification = self.classify_test_function(func_data)
|
|
160
|
+
func_data.update(classification)
|
|
161
|
+
self.classification_data.append(func_data)
|
|
162
|
+
|
|
163
|
+
# Generate summary statistics
|
|
164
|
+
summary = {
|
|
165
|
+
'total_files': len(self.test_files),
|
|
166
|
+
'total_functions': len(self.classification_data),
|
|
167
|
+
'by_type': defaultdict(int),
|
|
168
|
+
'by_domain': defaultdict(int),
|
|
169
|
+
'by_complexity': defaultdict(int),
|
|
170
|
+
'physics_tests': 0,
|
|
171
|
+
'edge_tests': 0,
|
|
172
|
+
'integration_tests': 0
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
for func in self.classification_data:
|
|
176
|
+
summary['by_type'][func['test_type']] += 1
|
|
177
|
+
summary['by_domain'][func['physics_domain']] += 1
|
|
178
|
+
summary['by_complexity'][func['complexity']] += 1
|
|
179
|
+
if func['is_physics_test']:
|
|
180
|
+
summary['physics_tests'] += 1
|
|
181
|
+
if func['is_edge_case']:
|
|
182
|
+
summary['edge_tests'] += 1
|
|
183
|
+
if func['is_integration']:
|
|
184
|
+
summary['integration_tests'] += 1
|
|
185
|
+
|
|
186
|
+
return summary
|
|
187
|
+
|
|
188
|
+
def main():
|
|
189
|
+
"""Main execution function."""
|
|
190
|
+
print("๐ Starting Phase 1: Test Suite Discovery & Inventory")
|
|
191
|
+
print("=" * 60)
|
|
192
|
+
|
|
193
|
+
# Initialize discovery
|
|
194
|
+
discoverer = TestFunctionDiscovery()
|
|
195
|
+
|
|
196
|
+
# Perform complete analysis
|
|
197
|
+
summary = discoverer.analyze_test_suite()
|
|
198
|
+
|
|
199
|
+
# Print summary
|
|
200
|
+
print(f"\n๐ DISCOVERY SUMMARY:")
|
|
201
|
+
print(f"Total test files: {summary['total_files']}")
|
|
202
|
+
print(f"Total test functions: {summary['total_functions']}")
|
|
203
|
+
print(f"Physics-focused tests: {summary['physics_tests']}")
|
|
204
|
+
print(f"Edge case tests: {summary['edge_tests']}")
|
|
205
|
+
print(f"Integration tests: {summary['integration_tests']}")
|
|
206
|
+
|
|
207
|
+
print(f"\n๐ท๏ธ By Test Type:")
|
|
208
|
+
for test_type, count in sorted(summary['by_type'].items()):
|
|
209
|
+
print(f" {test_type}: {count}")
|
|
210
|
+
|
|
211
|
+
print(f"\n๐งช By Physics Domain:")
|
|
212
|
+
for domain, count in sorted(summary['by_domain'].items()):
|
|
213
|
+
print(f" {domain}: {count}")
|
|
214
|
+
|
|
215
|
+
print(f"\n๐ By Complexity:")
|
|
216
|
+
for complexity, count in sorted(summary['by_complexity'].items()):
|
|
217
|
+
print(f" {complexity}: {count}")
|
|
218
|
+
|
|
219
|
+
# Save detailed data to CSV
|
|
220
|
+
output_dir = Path('plans/tests-audit/artifacts')
|
|
221
|
+
output_dir.mkdir(parents=True, exist_ok=True)
|
|
222
|
+
|
|
223
|
+
csv_path = output_dir / 'TEST_INVENTORY.csv'
|
|
224
|
+
df = pd.DataFrame(discoverer.classification_data)
|
|
225
|
+
df.to_csv(csv_path, index=False)
|
|
226
|
+
print(f"\n๐พ Detailed inventory saved to: {csv_path}")
|
|
227
|
+
|
|
228
|
+
return summary, discoverer.classification_data
|
|
229
|
+
|
|
230
|
+
if __name__ == "__main__":
|
|
231
|
+
summary, data = main()
|