solarwindpy 0.0.1.dev0__py3-none-any.whl → 0.1.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of solarwindpy might be problematic. Click here for more details.
- 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.0.dist-info/METADATA +181 -0
- solarwindpy-0.1.0.dist-info/RECORD +409 -0
- {solarwindpy-0.0.1.dev0.dist-info → solarwindpy-0.1.0.dist-info}/WHEEL +1 -1
- solarwindpy-0.1.0.dist-info/licenses/LICENSE.rst +32 -0
- solarwindpy-0.1.0.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,298 @@
|
|
|
1
|
+
# Phase 2: Configuration Setup
|
|
2
|
+
|
|
3
|
+
## Objective
|
|
4
|
+
Create robust doc8 configuration to standardize documentation formatting rules and prevent future linting failures.
|
|
5
|
+
|
|
6
|
+
## Rationale
|
|
7
|
+
|
|
8
|
+
### Why Configuration Matters
|
|
9
|
+
- **Consistency**: Uniform rules across all documentation
|
|
10
|
+
- **Clarity**: Explicit standards for contributors
|
|
11
|
+
- **Flexibility**: Customizable for project needs
|
|
12
|
+
- **Prevention**: Catches issues before they reach CI/CD
|
|
13
|
+
|
|
14
|
+
### Current State
|
|
15
|
+
- No `.doc8` configuration file exists
|
|
16
|
+
- Using doc8 defaults which may be too strict
|
|
17
|
+
- No documentation of formatting standards
|
|
18
|
+
- Inconsistent application of rules
|
|
19
|
+
|
|
20
|
+
## Configuration Design
|
|
21
|
+
|
|
22
|
+
### 2.1 Create `.doc8` Configuration File
|
|
23
|
+
|
|
24
|
+
**File location**: `/.doc8` (repository root)
|
|
25
|
+
|
|
26
|
+
**Recommended configuration**:
|
|
27
|
+
```ini
|
|
28
|
+
[doc8]
|
|
29
|
+
# Maximum line length for RST files
|
|
30
|
+
max-line-length = 100
|
|
31
|
+
|
|
32
|
+
# File encoding
|
|
33
|
+
file-encoding = utf-8
|
|
34
|
+
|
|
35
|
+
# Ignore certain error codes if needed
|
|
36
|
+
# D000 - Generic error (usually parsing issues)
|
|
37
|
+
# D001 - Line too long (controlled by max-line-length)
|
|
38
|
+
ignore = D000
|
|
39
|
+
|
|
40
|
+
# Paths to ignore during checking
|
|
41
|
+
# These are auto-generated or third-party files
|
|
42
|
+
ignore-path = docs/build,docs/source/api,docs/_build,.tox,venv
|
|
43
|
+
|
|
44
|
+
# File extensions to check
|
|
45
|
+
extensions = .rst,.txt
|
|
46
|
+
|
|
47
|
+
# Allow long lines in specific cases
|
|
48
|
+
# This helps with tables and URLs that can't be broken
|
|
49
|
+
allow-long-titles = true
|
|
50
|
+
|
|
51
|
+
# Ignore files matching these patterns
|
|
52
|
+
ignore-path-errors = docs/source/solarwindpy.solar_activity.tests.rst;D001
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### 2.2 Alternative: Setup.cfg Configuration
|
|
56
|
+
|
|
57
|
+
If preferring `setup.cfg` over `.doc8`:
|
|
58
|
+
|
|
59
|
+
**Addition to `/setup.cfg`**:
|
|
60
|
+
```ini
|
|
61
|
+
[doc8]
|
|
62
|
+
max-line-length = 100
|
|
63
|
+
file-encoding = utf-8
|
|
64
|
+
ignore = D000
|
|
65
|
+
ignore-path = docs/build,docs/source/api,docs/_build,.tox,venv
|
|
66
|
+
extensions = .rst,.txt
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### 2.3 Configuration Options Explained
|
|
70
|
+
|
|
71
|
+
| Option | Value | Justification |
|
|
72
|
+
|--------|-------|---------------|
|
|
73
|
+
| `max-line-length` | 100 | Balance between readability and flexibility for documentation |
|
|
74
|
+
| `file-encoding` | utf-8 | Standard encoding, prevents character issues |
|
|
75
|
+
| `ignore` | D000 | Skip generic parsing errors that may not be real issues |
|
|
76
|
+
| `ignore-path` | build dirs, api | Skip auto-generated and build artifacts |
|
|
77
|
+
| `extensions` | .rst,.txt | Focus on documentation files only |
|
|
78
|
+
| `allow-long-titles` | true | Titles/headers often need to be longer |
|
|
79
|
+
|
|
80
|
+
## Implementation Steps
|
|
81
|
+
|
|
82
|
+
### Step 2.1: Create Configuration File (3 minutes)
|
|
83
|
+
|
|
84
|
+
**Create `.doc8` file**:
|
|
85
|
+
```bash
|
|
86
|
+
cat > .doc8 << 'EOF'
|
|
87
|
+
[doc8]
|
|
88
|
+
# SolarWindPy Documentation Linting Configuration
|
|
89
|
+
# This file configures doc8 to check RST documentation formatting
|
|
90
|
+
|
|
91
|
+
# Maximum line length for RST files
|
|
92
|
+
# We use 100 as it's reasonable for documentation while fitting most screens
|
|
93
|
+
max-line-length = 100
|
|
94
|
+
|
|
95
|
+
# File encoding (utf-8 is standard)
|
|
96
|
+
file-encoding = utf-8
|
|
97
|
+
|
|
98
|
+
# Ignore certain error codes
|
|
99
|
+
# D000 - Generic error (often false positives)
|
|
100
|
+
ignore = D000
|
|
101
|
+
|
|
102
|
+
# Paths to ignore during checking
|
|
103
|
+
# docs/build - Sphinx build output
|
|
104
|
+
# docs/source/api - Auto-generated API documentation
|
|
105
|
+
# docs/_build - Alternative build directory
|
|
106
|
+
# .tox, venv - Virtual environments
|
|
107
|
+
ignore-path = docs/build,docs/source/api,docs/_build,.tox,venv
|
|
108
|
+
|
|
109
|
+
# File extensions to check
|
|
110
|
+
extensions = .rst,.txt
|
|
111
|
+
|
|
112
|
+
# Allow long titles (headers often need to be descriptive)
|
|
113
|
+
allow-long-titles = true
|
|
114
|
+
|
|
115
|
+
# Specific file error ignores (path;error_code)
|
|
116
|
+
# For files that have unavoidable issues
|
|
117
|
+
ignore-path-errors = docs/source/solarwindpy.solar_activity.tests.rst;D001
|
|
118
|
+
EOF
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
### Step 2.2: Update .gitignore (1 minute)
|
|
122
|
+
|
|
123
|
+
**Ensure `.doc8` is tracked**:
|
|
124
|
+
```bash
|
|
125
|
+
# Check if .doc8 is ignored
|
|
126
|
+
grep -q "^\.doc8$" .gitignore && echo ".doc8 is ignored" || echo ".doc8 will be tracked"
|
|
127
|
+
|
|
128
|
+
# If ignored, remove from .gitignore
|
|
129
|
+
sed -i '/^\.doc8$/d' .gitignore
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
### Step 2.3: Test Configuration (2 minutes)
|
|
133
|
+
|
|
134
|
+
**Validation commands**:
|
|
135
|
+
```bash
|
|
136
|
+
# Test with new configuration
|
|
137
|
+
doc8 --config .doc8 docs
|
|
138
|
+
|
|
139
|
+
# Test specific problem files
|
|
140
|
+
doc8 --config .doc8 docs/source/index.rst
|
|
141
|
+
doc8 --config .doc8 docs/source/_templates/
|
|
142
|
+
|
|
143
|
+
# Verbose output for debugging
|
|
144
|
+
doc8 --config .doc8 --verbose docs
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
**Expected output**:
|
|
148
|
+
```
|
|
149
|
+
Scanning...
|
|
150
|
+
docs/source/index.rst
|
|
151
|
+
docs/source/api_reference.rst
|
|
152
|
+
...
|
|
153
|
+
Total files scanned = 12
|
|
154
|
+
Total accumulated errors = 0
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
### Step 2.4: Document Configuration (2 minutes)
|
|
158
|
+
|
|
159
|
+
**Create `docs/FORMATTING.md`**:
|
|
160
|
+
```markdown
|
|
161
|
+
# Documentation Formatting Standards
|
|
162
|
+
|
|
163
|
+
This project uses `doc8` to enforce consistent RST documentation formatting.
|
|
164
|
+
|
|
165
|
+
## Configuration
|
|
166
|
+
|
|
167
|
+
See `.doc8` for the complete configuration. Key rules:
|
|
168
|
+
|
|
169
|
+
- **Line length**: Maximum 100 characters
|
|
170
|
+
- **File encoding**: UTF-8
|
|
171
|
+
- **Newlines**: Files must end with a newline
|
|
172
|
+
- **Whitespace**: No trailing whitespace
|
|
173
|
+
- **Extensions**: Checks .rst and .txt files
|
|
174
|
+
|
|
175
|
+
## Running Locally
|
|
176
|
+
|
|
177
|
+
```bash
|
|
178
|
+
# Install doc8
|
|
179
|
+
pip install doc8
|
|
180
|
+
|
|
181
|
+
# Check all documentation
|
|
182
|
+
doc8 docs
|
|
183
|
+
|
|
184
|
+
# Check specific file
|
|
185
|
+
doc8 docs/source/index.rst
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
## Common Issues and Fixes
|
|
189
|
+
|
|
190
|
+
### Line too long (D001)
|
|
191
|
+
Break long lines at natural points (commas, operators).
|
|
192
|
+
|
|
193
|
+
### No newline at end of file (D005)
|
|
194
|
+
Add a blank line at the end of the file.
|
|
195
|
+
|
|
196
|
+
### Trailing whitespace (D002)
|
|
197
|
+
Remove spaces at the end of lines.
|
|
198
|
+
|
|
199
|
+
## Exceptions
|
|
200
|
+
|
|
201
|
+
Auto-generated files in `docs/source/api/` are excluded from checking.
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
### Step 2.5: Integration with CI/CD (2 minutes)
|
|
205
|
+
|
|
206
|
+
**Update workflow to use configuration**:
|
|
207
|
+
|
|
208
|
+
In `.github/workflows/docs.yml`, update line 41:
|
|
209
|
+
```yaml
|
|
210
|
+
- name: Lint documentation with doc8
|
|
211
|
+
run: |
|
|
212
|
+
# Use project configuration
|
|
213
|
+
doc8 --config .doc8 README.rst docs CITATION.rst
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
## Validation Checklist
|
|
217
|
+
|
|
218
|
+
### Configuration Testing
|
|
219
|
+
- [ ] `.doc8` file created and valid
|
|
220
|
+
- [ ] Configuration parses without errors
|
|
221
|
+
- [ ] doc8 runs successfully with config
|
|
222
|
+
- [ ] Appropriate files are checked
|
|
223
|
+
- [ ] Appropriate files are ignored
|
|
224
|
+
|
|
225
|
+
### Rule Validation
|
|
226
|
+
- [ ] Line length limit is appropriate (100 chars)
|
|
227
|
+
- [ ] Build directories are excluded
|
|
228
|
+
- [ ] Auto-generated API docs are excluded
|
|
229
|
+
- [ ] File encoding is correct
|
|
230
|
+
|
|
231
|
+
### Documentation
|
|
232
|
+
- [ ] Configuration is documented
|
|
233
|
+
- [ ] Team is aware of standards
|
|
234
|
+
- [ ] Local testing instructions provided
|
|
235
|
+
|
|
236
|
+
## Success Metrics
|
|
237
|
+
|
|
238
|
+
| Metric | Before | After | Target |
|
|
239
|
+
|--------|--------|-------|--------|
|
|
240
|
+
| Configuration files | 0 | 1 | ✅ |
|
|
241
|
+
| Documented standards | No | Yes | ✅ |
|
|
242
|
+
| Consistent rules | No | Yes | ✅ |
|
|
243
|
+
| False positives | High | Low | ✅ |
|
|
244
|
+
| Developer clarity | Low | High | ✅ |
|
|
245
|
+
|
|
246
|
+
## Rollback Plan
|
|
247
|
+
|
|
248
|
+
If configuration causes issues:
|
|
249
|
+
|
|
250
|
+
```bash
|
|
251
|
+
# Remove configuration file
|
|
252
|
+
rm .doc8
|
|
253
|
+
|
|
254
|
+
# Or rename to disable
|
|
255
|
+
mv .doc8 .doc8.disabled
|
|
256
|
+
|
|
257
|
+
# Revert workflow changes
|
|
258
|
+
git checkout -- .github/workflows/docs.yml
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
## Configuration Maintenance
|
|
262
|
+
|
|
263
|
+
### Regular Reviews (Quarterly)
|
|
264
|
+
- Review error patterns
|
|
265
|
+
- Adjust line length if needed
|
|
266
|
+
- Update ignore patterns
|
|
267
|
+
- Document exceptions
|
|
268
|
+
|
|
269
|
+
### When to Update Configuration
|
|
270
|
+
- New documentation structure added
|
|
271
|
+
- Team feedback on rules
|
|
272
|
+
- Tool updates with new checks
|
|
273
|
+
- False positive patterns identified
|
|
274
|
+
|
|
275
|
+
## Expected Outcomes
|
|
276
|
+
|
|
277
|
+
### Immediate
|
|
278
|
+
- ✅ Consistent linting rules applied
|
|
279
|
+
- ✅ Fewer false positives
|
|
280
|
+
- ✅ Clear standards for contributors
|
|
281
|
+
|
|
282
|
+
### Long-term
|
|
283
|
+
- ✅ Reduced formatting issues
|
|
284
|
+
- ✅ Faster PR reviews
|
|
285
|
+
- ✅ Better documentation quality
|
|
286
|
+
- ✅ Less time spent on formatting
|
|
287
|
+
|
|
288
|
+
## Next Steps
|
|
289
|
+
|
|
290
|
+
1. Implement configuration file
|
|
291
|
+
2. Test with current documentation
|
|
292
|
+
3. Update CI/CD to use configuration
|
|
293
|
+
4. Document standards for team
|
|
294
|
+
5. Proceed to Phase 3 (Pre-commit hooks)
|
|
295
|
+
|
|
296
|
+
---
|
|
297
|
+
|
|
298
|
+
*This phase establishes the foundation for consistent documentation formatting standards.*
|
|
@@ -0,0 +1,382 @@
|
|
|
1
|
+
# Phase 3: Pre-commit Hook Integration
|
|
2
|
+
|
|
3
|
+
## Objective
|
|
4
|
+
Implement pre-commit hooks to catch and fix documentation formatting issues before they reach the repository, preventing CI/CD failures.
|
|
5
|
+
|
|
6
|
+
## Rationale
|
|
7
|
+
|
|
8
|
+
### Why Pre-commit Hooks
|
|
9
|
+
- **Shift-left approach**: Catch issues at the earliest point
|
|
10
|
+
- **Automatic fixing**: Many issues can be auto-corrected
|
|
11
|
+
- **Developer efficiency**: No need to remember formatting rules
|
|
12
|
+
- **CI/CD protection**: Reduces load on build systems
|
|
13
|
+
- **Consistency**: Same rules for all contributors
|
|
14
|
+
|
|
15
|
+
### Expected Benefits
|
|
16
|
+
- 90% reduction in formatting-related CI failures
|
|
17
|
+
- Zero-friction formatting compliance
|
|
18
|
+
- Automatic issue resolution
|
|
19
|
+
- Improved developer experience
|
|
20
|
+
|
|
21
|
+
## Pre-commit Configuration Design
|
|
22
|
+
|
|
23
|
+
### 3.1 Create Pre-commit Configuration
|
|
24
|
+
|
|
25
|
+
**File**: `/.pre-commit-config.yaml`
|
|
26
|
+
|
|
27
|
+
```yaml
|
|
28
|
+
# Pre-commit hooks for SolarWindPy
|
|
29
|
+
# Ensures code and documentation quality before commits
|
|
30
|
+
|
|
31
|
+
# See https://pre-commit.com for more information
|
|
32
|
+
# See https://pre-commit.com/hooks.html for more hooks
|
|
33
|
+
|
|
34
|
+
# To install: pip install pre-commit && pre-commit install
|
|
35
|
+
# To run manually: pre-commit run --all-files
|
|
36
|
+
|
|
37
|
+
default_language_version:
|
|
38
|
+
python: python3
|
|
39
|
+
|
|
40
|
+
repos:
|
|
41
|
+
# General file fixes
|
|
42
|
+
- repo: https://github.com/pre-commit/pre-commit-hooks
|
|
43
|
+
rev: v4.5.0
|
|
44
|
+
hooks:
|
|
45
|
+
# Fix trailing whitespace
|
|
46
|
+
- id: trailing-whitespace
|
|
47
|
+
types: [text]
|
|
48
|
+
exclude: \.md$|\.rst$ # Handle separately for docs
|
|
49
|
+
|
|
50
|
+
# Ensure files end with newline
|
|
51
|
+
- id: end-of-file-fixer
|
|
52
|
+
types: [text]
|
|
53
|
+
|
|
54
|
+
# Check for large files
|
|
55
|
+
- id: check-added-large-files
|
|
56
|
+
args: ['--maxkb=1000']
|
|
57
|
+
|
|
58
|
+
# Fix mixed line endings
|
|
59
|
+
- id: mixed-line-ending
|
|
60
|
+
args: ['--fix=lf']
|
|
61
|
+
|
|
62
|
+
# Check YAML syntax
|
|
63
|
+
- id: check-yaml
|
|
64
|
+
|
|
65
|
+
# Check JSON syntax
|
|
66
|
+
- id: check-json
|
|
67
|
+
|
|
68
|
+
# Documentation-specific hooks
|
|
69
|
+
- repo: https://github.com/pre-commit/pre-commit-hooks
|
|
70
|
+
rev: v4.5.0
|
|
71
|
+
hooks:
|
|
72
|
+
# Documentation-specific trailing whitespace
|
|
73
|
+
- id: trailing-whitespace
|
|
74
|
+
name: Fix RST trailing whitespace
|
|
75
|
+
files: \.(rst|txt)$
|
|
76
|
+
exclude: docs/source/api/
|
|
77
|
+
|
|
78
|
+
# Documentation-specific EOF fixer
|
|
79
|
+
- id: end-of-file-fixer
|
|
80
|
+
name: Fix RST file endings
|
|
81
|
+
files: \.(rst|txt)$
|
|
82
|
+
exclude: docs/source/api/
|
|
83
|
+
|
|
84
|
+
# RST specific linting with doc8
|
|
85
|
+
- repo: https://github.com/PyCQA/doc8
|
|
86
|
+
rev: v1.1.1
|
|
87
|
+
hooks:
|
|
88
|
+
- id: doc8
|
|
89
|
+
name: Check RST documentation formatting
|
|
90
|
+
args: [
|
|
91
|
+
'--max-line-length=100',
|
|
92
|
+
'--ignore=D000',
|
|
93
|
+
'--ignore-path=docs/build',
|
|
94
|
+
'--ignore-path=docs/source/api',
|
|
95
|
+
'--ignore-path=docs/_build'
|
|
96
|
+
]
|
|
97
|
+
files: \.(rst|txt)$
|
|
98
|
+
exclude: docs/source/api/
|
|
99
|
+
|
|
100
|
+
# Python code formatting (optional but recommended)
|
|
101
|
+
- repo: https://github.com/psf/black
|
|
102
|
+
rev: 23.12.1
|
|
103
|
+
hooks:
|
|
104
|
+
- id: black
|
|
105
|
+
language_version: python3
|
|
106
|
+
exclude: docs/
|
|
107
|
+
|
|
108
|
+
# Python linting (optional but recommended)
|
|
109
|
+
- repo: https://github.com/PyCQA/flake8
|
|
110
|
+
rev: 7.0.0
|
|
111
|
+
hooks:
|
|
112
|
+
- id: flake8
|
|
113
|
+
args: ['--config=setup.cfg']
|
|
114
|
+
exclude: docs/
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
### 3.2 Simplified Minimal Configuration
|
|
118
|
+
|
|
119
|
+
For teams wanting to start simple:
|
|
120
|
+
|
|
121
|
+
```yaml
|
|
122
|
+
# Minimal pre-commit configuration for documentation
|
|
123
|
+
repos:
|
|
124
|
+
- repo: https://github.com/pre-commit/pre-commit-hooks
|
|
125
|
+
rev: v4.5.0
|
|
126
|
+
hooks:
|
|
127
|
+
- id: trailing-whitespace
|
|
128
|
+
- id: end-of-file-fixer
|
|
129
|
+
|
|
130
|
+
- repo: https://github.com/PyCQA/doc8
|
|
131
|
+
rev: v1.1.1
|
|
132
|
+
hooks:
|
|
133
|
+
- id: doc8
|
|
134
|
+
args: ['--config=.doc8']
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
## Implementation Steps
|
|
138
|
+
|
|
139
|
+
### Step 3.1: Install Pre-commit (3 minutes)
|
|
140
|
+
|
|
141
|
+
**For developers**:
|
|
142
|
+
```bash
|
|
143
|
+
# Install pre-commit package
|
|
144
|
+
pip install pre-commit
|
|
145
|
+
|
|
146
|
+
# Or add to requirements-dev.txt
|
|
147
|
+
echo "pre-commit>=3.5.0" >> requirements-dev.txt
|
|
148
|
+
pip install -r requirements-dev.txt
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
### Step 3.2: Create Configuration File (2 minutes)
|
|
152
|
+
|
|
153
|
+
```bash
|
|
154
|
+
# Create the configuration file
|
|
155
|
+
cat > .pre-commit-config.yaml << 'EOF'
|
|
156
|
+
# [Insert configuration from 3.1 above]
|
|
157
|
+
EOF
|
|
158
|
+
|
|
159
|
+
# Verify file created
|
|
160
|
+
ls -la .pre-commit-config.yaml
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
### Step 3.3: Install Git Hooks (2 minutes)
|
|
164
|
+
|
|
165
|
+
```bash
|
|
166
|
+
# Install the git hook scripts
|
|
167
|
+
pre-commit install
|
|
168
|
+
|
|
169
|
+
# Verify installation
|
|
170
|
+
ls -la .git/hooks/pre-commit
|
|
171
|
+
|
|
172
|
+
# Expected output shows symlink or script
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
### Step 3.4: Initial Run and Fixes (5 minutes)
|
|
176
|
+
|
|
177
|
+
```bash
|
|
178
|
+
# Run on all files to establish baseline
|
|
179
|
+
pre-commit run --all-files
|
|
180
|
+
|
|
181
|
+
# This will:
|
|
182
|
+
# 1. Download required tools
|
|
183
|
+
# 2. Check all files
|
|
184
|
+
# 3. Auto-fix what it can
|
|
185
|
+
# 4. Report what needs manual fixing
|
|
186
|
+
|
|
187
|
+
# Run again to verify all issues fixed
|
|
188
|
+
pre-commit run --all-files
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
### Step 3.5: Configure CI Integration (3 minutes)
|
|
192
|
+
|
|
193
|
+
**Add to `.github/workflows/docs.yml`**:
|
|
194
|
+
|
|
195
|
+
```yaml
|
|
196
|
+
pre-commit:
|
|
197
|
+
runs-on: ubuntu-latest
|
|
198
|
+
steps:
|
|
199
|
+
- uses: actions/checkout@v3
|
|
200
|
+
- uses: actions/setup-python@v5
|
|
201
|
+
with:
|
|
202
|
+
python-version: "3.12"
|
|
203
|
+
- name: Run pre-commit
|
|
204
|
+
uses: pre-commit/action@v3.0.0
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
Or as a step in existing job:
|
|
208
|
+
|
|
209
|
+
```yaml
|
|
210
|
+
- name: Run pre-commit checks
|
|
211
|
+
run: |
|
|
212
|
+
pip install pre-commit
|
|
213
|
+
pre-commit run --all-files --show-diff-on-failure
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
## Developer Workflow
|
|
217
|
+
|
|
218
|
+
### Standard Workflow
|
|
219
|
+
1. **Make changes** to documentation
|
|
220
|
+
2. **Stage changes**: `git add docs/`
|
|
221
|
+
3. **Commit**: `git commit -m "docs: update"`
|
|
222
|
+
4. **Pre-commit runs automatically**
|
|
223
|
+
- Fixes issues if possible
|
|
224
|
+
- Blocks commit if manual fixes needed
|
|
225
|
+
5. **Review changes** if any made
|
|
226
|
+
6. **Commit succeeds** if all checks pass
|
|
227
|
+
|
|
228
|
+
### Manual Usage
|
|
229
|
+
```bash
|
|
230
|
+
# Check specific files
|
|
231
|
+
pre-commit run --files docs/source/index.rst
|
|
232
|
+
|
|
233
|
+
# Check all staged files
|
|
234
|
+
pre-commit run
|
|
235
|
+
|
|
236
|
+
# Check everything
|
|
237
|
+
pre-commit run --all-files
|
|
238
|
+
|
|
239
|
+
# Update hook versions
|
|
240
|
+
pre-commit autoupdate
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
### Bypassing Hooks (Emergency Only)
|
|
244
|
+
```bash
|
|
245
|
+
# Skip pre-commit hooks (use sparingly)
|
|
246
|
+
git commit --no-verify -m "emergency: critical fix"
|
|
247
|
+
|
|
248
|
+
# Or set environment variable
|
|
249
|
+
SKIP=doc8 git commit -m "docs: update"
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
## Team Adoption Strategy
|
|
253
|
+
|
|
254
|
+
### Gradual Rollout
|
|
255
|
+
1. **Week 1**: Optional - developers can install if desired
|
|
256
|
+
2. **Week 2**: Recommended - encourage installation
|
|
257
|
+
3. **Week 3**: Expected - soft requirement
|
|
258
|
+
4. **Week 4**: Required - add to CI/CD
|
|
259
|
+
|
|
260
|
+
### Developer Onboarding
|
|
261
|
+
```markdown
|
|
262
|
+
# Add to CONTRIBUTING.md
|
|
263
|
+
|
|
264
|
+
## Pre-commit Hooks
|
|
265
|
+
|
|
266
|
+
This project uses pre-commit hooks to maintain code and documentation quality.
|
|
267
|
+
|
|
268
|
+
### Setup (one-time)
|
|
269
|
+
```bash
|
|
270
|
+
pip install pre-commit
|
|
271
|
+
pre-commit install
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
### Usage
|
|
275
|
+
Hooks run automatically on `git commit`. To run manually:
|
|
276
|
+
```bash
|
|
277
|
+
pre-commit run --all-files
|
|
278
|
+
```
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
### Training Materials
|
|
282
|
+
- Quick setup guide (5 minutes)
|
|
283
|
+
- Common issues and solutions
|
|
284
|
+
- Benefits explanation
|
|
285
|
+
- Demo video/GIF
|
|
286
|
+
|
|
287
|
+
## Troubleshooting
|
|
288
|
+
|
|
289
|
+
### Common Issues
|
|
290
|
+
|
|
291
|
+
| Issue | Cause | Solution |
|
|
292
|
+
|-------|-------|----------|
|
|
293
|
+
| "pre-commit: command not found" | Not installed | `pip install pre-commit` |
|
|
294
|
+
| Hooks not running | Not installed in repo | `pre-commit install` |
|
|
295
|
+
| Hooks failing on old files | Historical issues | `pre-commit run --all-files` then commit fixes |
|
|
296
|
+
| Slow first run | Downloading tools | One-time delay, cached after |
|
|
297
|
+
| Can't commit urgent fix | Hooks blocking | Use `--no-verify` flag (sparingly) |
|
|
298
|
+
|
|
299
|
+
### Debug Commands
|
|
300
|
+
```bash
|
|
301
|
+
# Verbose output
|
|
302
|
+
pre-commit run --all-files --verbose
|
|
303
|
+
|
|
304
|
+
# Show diff of changes
|
|
305
|
+
pre-commit run --all-files --show-diff-on-failure
|
|
306
|
+
|
|
307
|
+
# Check specific hook
|
|
308
|
+
pre-commit run doc8 --all-files
|
|
309
|
+
|
|
310
|
+
# Update hooks to latest versions
|
|
311
|
+
pre-commit autoupdate
|
|
312
|
+
```
|
|
313
|
+
|
|
314
|
+
## Metrics and Monitoring
|
|
315
|
+
|
|
316
|
+
### Success Metrics
|
|
317
|
+
| Metric | Before | Target | Measurement |
|
|
318
|
+
|--------|--------|--------|-------------|
|
|
319
|
+
| Formatting failures in CI | 100% | <5% | GitHub Actions logs |
|
|
320
|
+
| Time to fix formatting | 10 min | 0 min | Automatic |
|
|
321
|
+
| Developer adoption | 0% | 90% | Survey/git hooks |
|
|
322
|
+
| PR rejections for formatting | High | Near zero | PR reviews |
|
|
323
|
+
|
|
324
|
+
### Monitoring
|
|
325
|
+
- Track CI/CD failure rate for doc8
|
|
326
|
+
- Survey developers on experience
|
|
327
|
+
- Monitor pre-commit skip usage
|
|
328
|
+
- Review commit patterns
|
|
329
|
+
|
|
330
|
+
## Rollback Plan
|
|
331
|
+
|
|
332
|
+
### Partial Rollback
|
|
333
|
+
```bash
|
|
334
|
+
# Disable specific hooks
|
|
335
|
+
# Edit .pre-commit-config.yaml and comment out problematic hooks
|
|
336
|
+
|
|
337
|
+
# Uninstall from local repo
|
|
338
|
+
pre-commit uninstall
|
|
339
|
+
```
|
|
340
|
+
|
|
341
|
+
### Complete Rollback
|
|
342
|
+
```bash
|
|
343
|
+
# Remove configuration
|
|
344
|
+
rm .pre-commit-config.yaml
|
|
345
|
+
|
|
346
|
+
# Uninstall hooks
|
|
347
|
+
pre-commit uninstall
|
|
348
|
+
|
|
349
|
+
# Remove from requirements
|
|
350
|
+
sed -i '/pre-commit/d' requirements-dev.txt
|
|
351
|
+
```
|
|
352
|
+
|
|
353
|
+
## Cost-Benefit Analysis
|
|
354
|
+
|
|
355
|
+
### Costs
|
|
356
|
+
- Initial setup: 15 minutes per developer
|
|
357
|
+
- Learning curve: 1-2 days to adapt
|
|
358
|
+
- Occasional bypass needed: 1-2 times/month
|
|
359
|
+
|
|
360
|
+
### Benefits
|
|
361
|
+
- Prevent 95% of formatting issues
|
|
362
|
+
- Save 10 minutes per PR
|
|
363
|
+
- Reduce CI/CD failures by 50%
|
|
364
|
+
- Improve code review focus on content
|
|
365
|
+
|
|
366
|
+
### ROI
|
|
367
|
+
- Break-even: After 2 prevented failures
|
|
368
|
+
- Monthly savings: 5 hours team-wide
|
|
369
|
+
- Annual savings: 60 hours
|
|
370
|
+
|
|
371
|
+
## Next Steps
|
|
372
|
+
|
|
373
|
+
1. Create and test configuration
|
|
374
|
+
2. Document in CONTRIBUTING.md
|
|
375
|
+
3. Announce to team with benefits
|
|
376
|
+
4. Provide setup support
|
|
377
|
+
5. Monitor adoption and effectiveness
|
|
378
|
+
6. Proceed to Phase 4 (Workflow improvements)
|
|
379
|
+
|
|
380
|
+
---
|
|
381
|
+
|
|
382
|
+
*This phase provides proactive protection against documentation formatting issues at the source.*
|