PlasmaPy v2025.8.0 (2025-08-07)

New Features

Documentation Improvements

Backwards Incompatible Changes

Deprecations and Planned Removals

Bug Fixes

Internal Changes and Refactorings

  • Dropped support for Python 3.10 and bumped the minimum required versions of several dependencies following SPEC 0. (#2880)

  • Updated the release checklist following the v2024.10.0 release. (#2886)

  • Used typing.Self for type hint annotations for Particle and CustomParticle. (#2887)

  • Modified tests for spectral_density to cover the case of multiple electron species. (#2906)

  • The internal structure of ParticleTracker was optimized by caching some variables (e.g., tracked_particle_mask) which are then reset after every push cycle by a _reset_cache method. Instead of adding zero arrays for missing quantities, only quantities provided on the grid are interpolated, and other required quantities are filled in with an array of zeros automatically. Particle stopping can now be enabled on a subset of the provided grids. Adaptive time steps do not include magnetic field candidates if a magnetic field does not exist on the grid. The adaptive timestep is now set to that of the highest resolution grid for particles that are not currently on any grid. (#2911)

  • Added User-Agent to the header of Downloader to resolve an issue with GitHub blocking API access. (#2915)

  • Updated validators.py. (#2919)

  • Began using uv.lock to pin the versions of dependencies used in tests and documentation builds. Previously, pinned requirements had been stored in requirements.txt style files in ci_requirements/ that were generated with uv pip compile for each operating system, Python version, and dependency set. Using uv.lock lets us store requirements information for different operating systems, Python versions, and dependency sets in a single file. (#2937)

  • Switched from using actions/setup-python to astral-sh/setup-uv in GitHub workflows. (#2959)

  • Enabled noxfile.py to be run as a script. The commands python noxfile.py -s 'tests-3.13(all)' and nox -s 'tests-3.13(all)' can now both be used to run all tests for Python 3.13. (#2961)

  • Updated the requirements session for Nox so that the GitHub workflow now includes a table of the old and new versions of dependencies in the body of the pull request. (#2964)

  • Enabled pyproject-fmt as an autoformatter and validate-pyproject as a validator for pyproject.toml via pre-commit. (#2974)

  • Added a Nox session to perform security audits of GitHub workflows with zizmor in CI. (#2975)

  • Enabled a pre-commit hook for mdformat to automatically format GitHub-flavored Markdown files. (#2981)

  • Added a security policy at .github/SECURITY.md and enabled private security reporting through GitHub. (#2985)

  • Reorganized .gitignore to put content that is custom or PlasmaPy-specific at the top of the file, followed by content adapted from .gitignore templates at the bottom. (#2997)

  • Set uv as the sole backend to Nox, and changed the docs and tests dependency sets to include nox[uv] instead of nox. (#2998)

  • Refactored tests for the charged_particle_radiography module to reduce test runtime. (#3039)

  • Removed upper limits on the allowed versions of Astropy and xarray. (#3065)

  • Parametrized tests within tests/utils/decorators.test_checks.py. (#3065)

  • Updated tests/utils/decorators/test_checks.py for compatibility with updates to how astropy.units.Equivalency handles equality comparisons. (#3065)

Additional Changes

  • The ax#, dx# and *_si properties of AbstractGrid are now cached properties for faster access, since these attributes do not change after the grid has been initialized. (#2911)

  • Updated the configuration to automatically label pull requests on GitHub. (#2984)