PlasmaPy v2025.8.0 (2025-08-07)
New Features
Enabled
particle_input()to convert particle-list-like arguments passed to parameters decorated withParticleListLikeintoParticleListinstances. (#2790)The new method
plasmapy.plasma.grids.CartesianGrid.soften_edgesapplies an error function mask to the edges of all quantities on a grid. This is useful for any application where the grid must go to zero smoothly at the edges (e.g., for particle tracking withParticleTracker). (#2911)Added the
source_vdirkeyword to thecreate_particlesmethod ofTrackerto explicitly define the orientation of the mean velocity of the source particles. (#2968)Added the
detector_vdirkeyword toTrackerto explicitly define the detector’s vertical surface vector. (#2968)Added a new module,
plasmapy.formulary.laser, to make calculations related to laser pulses. Added the first function,electric_field_amplitude, which calculates the electric field strength from intensity. (#3021)Added
plasmapy.formulary.laser.intensityto calculate intensity from the electric field amplitude for a laser. (#3032)Added helper function
sort_sweep_arraystoplasmapy.analysis.swept_langmuir. (#3034)Added
em_wavelength,em_angular_frequency,Gaussian_beam_waist_radius,Gaussian_spot_size_FWHM,Gaussian_power,Gaussian_Rayleigh_length, andnormalized_vector_potentialtoplasmapy.formulary.laser. (#3036)Added helper function
merge_voltage_clusterstoplasmapy.analysis.swept_langmuir. (#3037)
Documentation Improvements
Incorporated the
plasmapy_themevia theplasmapy_sphinx.themeextension. (#1643)Removed
docs/plasmapy_sphinxand putplasmapy_sphinxinto its own repository at https://github.com/PlasmaPy/plasmapy_sphinx. (#1643)Added
plasmapy_sphinxas adocsdependency. (#1643)Removed upper dependency limit on
sphinx, and added lower limit of>=8.2.3. (#1643)Created a GitHub workflow (in
weekly.ymlandnoxfile.py) to build documentation using the latest development version ofplasmapy_sphinxon a weekly basis. (#1643)Incorporated
sphinxextensionsplasmapy_sphinx.ext.autodocandplasmapy_sphinx.ext.directives. (#1643)Updated author metadata in
CITATION.cff. (#2890)Removed duplicate section headers for example notebooks in the 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.equivalenciesmodule in the docs. Astropy now considers this file to be private API (which broke PlasmaPy’s intersphinx links), and recommends that its contents be imported through theastropy.unitsnamespace. This pull request changes those links to a direct URL to Astropy Equivalencies. (#2915)Added a sentence to the documentation for
plasmapy.dispersionto describe dispersion relations and their usefulness. (#2932)Updated the instructions for accessing test results and documentation previews in the Contributor Guide after recent changes to GitHub’s user interface. (#2935)
Expanded the docstring of
Hall_parameter. (#2938)Bumped the Python version for documentation builds from 3.12 to 3.13. (#2943)
Updated the instructions on how to install PlasmaPy. (#2999)
Put office hours on an indefinite hiatus. (#3013)
Removed the sphinx-hoverxref Sphinx extension, since it has been deprecated in favor of the Read the Docs add-on for Link Previews. (#3024)
Fixed broken hyperlinks and permanent redirects. (#3056)
Summarized the dependency support policy from SPEC 0 at the end of the installation instructions. (#3059)
Updated the Contributor Guide pages on the code contribution workflow and using pre-commit. (#3068)
Upgraded PlasmaPy’s Code of Conduct to version 3.0 of the Contributor Covenant. (#3069)
Updated the Feedback and Communication page. (#3070)
Limited the allowed version of Sphinx to
sphinx>=8.2.3,<8.3because planned breaking changes to Sphinx are causing documentation build errors due to incompatibilities with some extensions. (#3073)
Backwards Incompatible Changes
Variables in
ParticleTrackerandTrackerhave been updated such thatn*is nownum_*(e.g.,nparticlesis nownum_particles). Similarly,v_initis nowv0to be consistent withx0. (#2911)The method
plasmapy.simulation.particle_tracker.particle_tracker.ParticleTracker.add_stoppingrequires that the argumentImust now be a list ofQuantityobjects rather than a singleQuantityarray. This change is needed becauseNoneentries are now also accepted to that keyword as placeholders for grids on which stopping will not be applied. (#2911)ParticleTrackerno longer accepts the parameterreq_quantities, but instead automatically requires quantities required by the tracker for the given setup. Users wishing to require quantities may use the methodrequire_quantities. (#2911)Removed the prototype plasma calculator from PlasmaPy so that it can be included in the plasmapy-calculator standalone package. (#3060)
Deprecations and Planned Removals
Removed
src/plasmapy/dispersion/dispersionfunction.py, which was deprecated inv2023.10.0. The functionality for the plasma dispersion function is inplasmapy.dispersion.dispersion_functions. (#2897)
Bug Fixes
Enabled
Particleto accept anumpy.integerobject as the first argument to indicate the atomic number. (#3045)Fixed a possible bug when using
plasmapy.plasma.grids.AbstractGrid.add_quantitiesalongside newer versions of xarray. (#3065)
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.0release. (#2886)Used
typing.Selffor type hint annotations forParticleandCustomParticle. (#2887)Modified tests for
spectral_densityto cover the case of multiple electron species. (#2906)The internal structure of
ParticleTrackerwas optimized by caching some variables (e.g.,tracked_particle_mask) which are then reset after every push cycle by a_reset_cachemethod. 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-Agentto the header ofDownloaderto resolve an issue with GitHub blocking API access. (#2915)Updated
validators.py. (#2919)Began using
uv.lockto pin the versions of dependencies used in tests and documentation builds. Previously, pinned requirements had been stored inrequirements.txtstyle files inci_requirements/that were generated withuv pip compilefor each operating system, Python version, and dependency set. Usinguv.locklets us store requirements information for different operating systems, Python versions, and dependency sets in a single file. (#2937)Switched from using
actions/setup-pythontoastral-sh/setup-uvin GitHub workflows. (#2959)Enabled
noxfile.pyto be run as a script. The commandspython noxfile.py -s 'tests-3.13(all)'andnox -s 'tests-3.13(all)'can now both be used to run all tests for Python 3.13. (#2961)Updated the
requirementssession 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-fmtas an autoformatter andvalidate-pyprojectas a validator forpyproject.tomlvia pre-commit. (#2974)Added a Nox session to perform security audits of GitHub workflows with
zizmorin CI. (#2975)Enabled a pre-commit hook for
mdformatto automatically format GitHub-flavored Markdown files. (#2981)Added a security policy at
.github/SECURITY.mdand enabled private security reporting through GitHub. (#2985)Reorganized
.gitignoreto put content that is custom or PlasmaPy-specific at the top of the file, followed by content adapted from.gitignoretemplates at the bottom. (#2997)Set uv as the sole backend to Nox, and changed the
docsandtestsdependency sets to includenox[uv]instead ofnox. (#2998)Refactored tests for the
charged_particle_radiographymodule 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.pyfor compatibility with updates to howastropy.units.Equivalencyhandles equality comparisons. (#3065)
Additional Changes
The
ax#,dx#and*_siproperties ofAbstractGridare 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)