Unreleased changes

PlasmaPy v0.1.dev419+g26b9e51 (2025-06-12)

New Features

Documentation Improvements

  • Incorporated the plasmapy_theme via the plasmapy_sphinx.theme extension. (#1643)

  • Incorporated sphinx extensions plasmapy_sphinx.ext.autodoc and plasmapy_sphinx.ext.directives. (#1643)

  • Added plasmapy_sphinx as a docs dependency. (#1643)

  • Created a GitHub Action (in weekly.yml and noxfile.py) to build documentation using the latest development version of plasmapy_sphinx on a weekly basis. (#1643)

  • Removed docs/plasmapy_sphinx and put plasmapy_sphinx into its own repository, https://github.com/PlasmaPy/plasmapy_sphinx. (#1643)

  • Removed upper dependency limit on sphinx, and added lower limit of >=8.2.3. (#1643)

  • Updated author metadata in CITATION.cff. (#2890)

  • Removed duplicate section headers for example notebooks in documentation for plasmapy.formulary. (#2892)

  • Added acknowledgements to several organizations that have supported PlasmaPy or are aligned with its mission. (#2895)

  • Fixed formatting problems and improved verb tense consistency in prior changelog entries. (#2901)

  • Fixed references to the astropy.units.equivalencies module in the docs. Astropy now considers this file to be private API, and wants its contents imported through the units module namespace, which broke PlasmaPy’s intersphinx links. This PR changes those links to a direct URL to the page in the astropy docs: Astropy Equivalencies. (#2915)

  • Added a sentence to introduce what a dispersion relation is and why it’s useful. (#2932)

  • Updated how to access test results and documentation previews in the Contributor Guide after recent changes to GitHub’s user interface. (#2935)

  • Put office hours an an indefinite hiatus due to the conclusion of the NSF award supporting the development of PlasmaPy. (#3013)

Backwards Incompatible Changes

  • Variables in ParticleTracker and Tracker have been updated such that n* is now num_*, e.g. nparticles is now num_particles. Similarly, v_init is now v0 to be consistent with x0. (#2911)

  • ParticleTracker no longer takes the keyword req_quantities, but instead automatically requires quantitities required by the tracker for the given setup. Users wishing to require quantitities may use the method require_quantities. (#2911)

  • The method add_stopping argument I must now be a list of Quantity objects rather than a single Quantity array. This is because None entries are now also accepted to that keyword as placeholders for grids on which stopping will not be applied. (#2911)

Deprecations and Planned Removals

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)

  • 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)

  • 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, in alignment with PEP 723. (#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. (#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)

  • Updated .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)

Additional Changes

  • 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)