Skip to content

Add SolarWindPy to the PyHC project list (requested tier: Bronze) - #399

Open
blalterman wants to merge 1 commit into
heliophysicsPy:mainfrom
blalterman:add-solarwindpy
Open

blalterman wants to merge 1 commit into
heliophysicsPy:mainfrom
blalterman:add-solarwindpy

Conversation

@blalterman

Copy link
Copy Markdown
Contributor

Project

SolarWindPy (https://github.com/blalterman/SolarWindPy, docs https://solarwindpy.readthedocs.io) is a BSD-3-Clause Python library for in situ solar wind data analysis. It is installable from PyPI (pip install solarwindpy) and conda-forge (conda install -c conda-forge solarwindpy); the current release is 0.5.1.

Scope, from the source:

  • Data model. Plasma, Ion, Vector, Tensor, and Spacecraft classes over a three-level (measurement, component, species) pandas MultiIndex, for multi-species ion data plus the magnetic field (core/).
  • Derived quantities. Per-species and bulk plasma parameters (for example thermal speeds, plasma beta, Alfvénic turbulence quantities, abundances) (core/).
  • Instabilities. Temperature-anisotropy instability thresholds (Verscharen et al. 2016) (instabilities/).
  • Fitting. A fit-function framework (Gaussians, exponentials, power laws, lines, hinge and trend fits) with plotting and TeX output (fitfunctions/).
  • Plotting and binning. 1D and 2D binned histograms, scatter, and adaptive spiral meshes (plotting/).
  • Solar-activity context. SIDC sunspot-number loader with cycle extrema, and the HELIO4CAST ICMECAT loader (solar_activity/).
  • I/O. HDF5 save and load of Plasma objects.

The package is mission-agnostic: it has no mission-specific data loader.

Requested tier: Bronze

PHEP 4's Bronze requirements are a self-evaluation against the PyHC standards, no PyHC-pyOpenSci review, and compliance with applicable standards. This PR provides the self-evaluation. Every "must" clause of the PyHC standards is met; the one gap is the PHEP 3 recommendation described below. The site does not yet have a tier field or a launched re-designation process (PHEP 4 announcement, 2026-06-02), so the request is stated here and the entry uses the current projects.yml format.

Self-evaluation grades

Category Grade
Community Good
Documentation Good
Testing Good
Software Maturity Good
PHEP 3 Partially met (entered under the python3 key, as all current entries do)
License Good

Evidence

  • Community: Contributor Covenant 2.1 code of conduct; CONTRIBUTING.md gives setup, style, testing and documentation guidelines and states when a contribution is not accepted. Both are linked from the README and published on the docs site.
  • Documentation: every public module, class, method, function and property has a numpydoc docstring; every method that takes arguments documents them, and return values are documented; a test enforces this on every commit. The public entry points carry examples that run as doctests in CI. The docs site has installation, quickstart, usage, missing-data and citation guides, an API reference, and the contributing guide.
  • Testing: about 6,600 tests with 98% line coverage. CI runs the suite on every PR on Linux, and on Windows for PRs that change code. The release workflow tests Linux, macOS and Windows on Python 3.12, 3.13 and 3.14, and all nine cells pass on the v0.5.1 tag.
  • Software maturity: ruff (pycodestyle, pyflakes, mccabe, pydocstyle with the numpy convention) and ruff format pass; import-linter layering contracts hold. Releases are tagged and published automatically to PyPI, with conda-forge following.
  • PHEP 3: phep3-check (pyhc-actions v1.2.0) reports 3 errors, one per documented deviation below, and 4 warnings; with the three deviations ignored it passes. On every PR and every push to master, CI runs the PHEP 3 compliance action and a minimum-versions job that runs the full suite at the lowest declared dependency versions on Linux; both pass on the current master. pyhc-env-compat-check passes with no conflicts.

Grade below Good, with plan

PHEP 3 (Partially met). Python 3.12, 3.13, and 3.14 are supported, as are the newest NumPy, SciPy, pandas, and matplotlib releases. The three floors that the checker flags are deliberate, documented deviations:

  • scipy>=1.16 excludes SciPy 1.15 to keep SciPy's CODATA 2022 physical constants.
  • pandas>=3 excludes pandas 2.3 because the code uses pandas-3-only API. It ends when pandas 2.3 leaves the PHEP 3 window in mid-2027.
  • matplotlib>=3.11 excludes matplotlib 3.10 because the package relies on contour raising on unknown keywords, which starts in 3.11. It ends on 2026-12-14, when matplotlib 3.10 leaves the window.

The dependency policy, with these deviations, is in CONTRIBUTING.md. CI runs the PHEP 3 compliance action, with only these three packages exempted, and a minimum-versions job that installs the lowest version of each dependency pyproject.toml allows and runs the full suite.

Links

🤖 Generated with Claude Code

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@sapols

sapols commented Nov 6, 2026

Copy link
Copy Markdown
Contributor

Thanks for the submission, @blalterman! At first glance it seems like a cool project. Just wanted to let you know I've seen this, although with holiday craziness it'll probably take me a few weeks to get around to reviewing it.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants