Unreleased changes
PlasmaPy v0.1.dev419+g26b9e51 (2025-06-12)
New Features
Enabled
particle_input()to convert particle-list-like arguments passed to parameters decorated withParticleListLikeintoParticleListinstances. (#2790)The new method
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
detector_vdirkeyword toTrackerto explicitly define the detector’s vertical surface vector. Added thesource_vdirkeyword to thecreate_particlesmethod ofTrackerto explicitly define the orientation of the mean velocity of the source particles. (#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 the second function to
plasmapy.formulary.laser,intensity, which calculates intensity from the electric field amplitude. (#3032)
Documentation Improvements
Incorporated the
plasmapy_themevia theplasmapy_sphinx.themeextension. (#1643)Incorporated
sphinxextensionsplasmapy_sphinx.ext.autodocandplasmapy_sphinx.ext.directives. (#1643)Added
plasmapy_sphinxas adocsdependency. (#1643)Created a GitHub Action (in
weekly.ymlandnoxfile.py) to build documentation using the latest development version ofplasmapy_sphinxon a weekly basis. (#1643)Removed
docs/plasmapy_sphinxand putplasmapy_sphinxinto 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.equivalenciesmodule in the docs. Astropy now considers this file to be private API, and wants its contents imported through theunitsmodule 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
ParticleTrackerandTrackerhave been updated such thatn*is nownum_*, e.g.nparticlesis nownum_particles. Similarly,v_initis nowv0to be consistent withx0. (#2911)ParticleTrackerno longer takes the keywordreq_quantities, but instead automatically requires quantitities required by the tracker for the given setup. Users wishing to require quantitities may use the methodrequire_quantities. (#2911)The method
add_stoppingargumentImust now be a list ofQuantityobjects rather than a singleQuantityarray. This is becauseNoneentries are now also accepted to that keyword as placeholders for grids on which stopping will not be applied. (#2911)
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)
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)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)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, in alignment with PEP 723. (#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.toml. (#2974)Added a Nox session to perform security audits of GitHub workflows with
zizmorin CI. (#2975)Enabled a
pre-commithook formdformatto automatically format GitHub-flavored Markdown files. (#2981)Updated
.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)
Additional Changes
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)