PlasmaPy v2023.5.0 (2023-05-31) =============================== Backwards Incompatible Changes ------------------------------ - The signature of `~plasmapy.formulary.relativity.relativistic_energy` has changed. The parameter ``m`` has been replaced with ``particle``, which now accepts a broader variety of |particle-like| arguments, including but not limited to a |Quantity| representing mass. The parameter ``v`` has been replaced with ``V`` for consistency with other functionality. (:pr:`1871`) - Changed the minimum required version of Python from 3.8 to 3.9. Accordingly, increased the minimum versions of ``numpy`` to ``1.21.0``, ``pandas`` to ``1.2.0``, ``h5py`` to ``3.1.0``, ``scipy`` to ``1.6.0``, ``voila`` to ``0.3.0``, and ``xarray`` to ``0.17.0``. (:pr:`1885`) - Made |ParticleList| raise a `TypeError` when provided with a string. This change was made to avoid potentially ambiguous situations like :py:`ParticleList("He")` which was previously equivalent to :py:`ParticleList(["H", "e"])` instead of the possibly expected value of :py:`ParticleList(["He"])`. (:pr:`1892`) - In `~plasmapy.dispersion.analytical.two_fluid_.two_fluid`, `~plasmapy.dispersion.numerical.hollweg_.hollweg`, and `~plasmapy.dispersion.numerical.kinetic_alfven_.kinetic_alfven` in `plasmapy.dispersion`, providing the |charge number| as a keyword argument (now ``Z``, formerly ``z_mean``) will no longer override the charge number provided in ``ion``. (:pr:`2022`, :pr:`2181`, :pr:`2182`) - |particle_input| no longer enforces that |parameters| named ``ionic_level`` are ions or neutral atoms. For equivalent behavior, name the parameter ``ion`` instead. (:pr:`2034`) - Removed ``plasmapy.utils.pytest_helpers`` from PlasmaPy's public API. It is still available as ``plasmapy.utils._pytest_helpers``, but might be removed in the future. (:pr:`2114`) - Removed ``plasmapy.tests.helpers`` from PlasmaPy's public API. It is still available as ``plasmapy.tests._helpers``, but might be removed in the future. (:pr:`2114`) - The ``ion_species`` |parameter| to `~plasmapy.formulary.radiation.thermal_bremsstrahlung` has been renamed to ``ion`` in order to provide a more consistent API to functions that accept ions as arguments. (:pr:`2135`) Deprecations and Removals ------------------------- - In `plasmapy.dispersion`, the ``z_mean`` parameter to `~plasmapy.dispersion.analytical.two_fluid_.two_fluid`, `~plasmapy.dispersion.numerical.hollweg_.hollweg`, and `~plasmapy.dispersion.numerical.kinetic_alfven_.kinetic_alfven` has been deprecated. Provide the |charge number| to ``Z`` instead. (:pr:`2022`, :pr:`2181`, :pr:`2182`) - When a function decorated with |particle_input| is provided with ``z_mean`` as a keyword |argument|, it will change ``z_mean`` to ``Z`` and issue a `~plasmapy.utils.exceptions.PlasmaPyDeprecationWarning` if the decorated function accepts ``Z`` as a parameter. This capability is intended to temporarily preserve the current behavior of several functions in `plasmapy.dispersion` and `plasmapy.formulary` as they get decorated with |particle_input| over the next few releases. (:pr:`2027`) - The ``z_mean`` parameter to `~plasmapy.formulary.speeds.ion_sound_speed` and `~plasmapy.formulary.speeds.Alfven_speed` has been deprecated and may be removed in a future release. Use ``Z`` instead. (:pr:`2134`, :pr:`2179`) Features -------- - Added `~plasmapy.dispersion.numerical.kinetic_alfven_.kinetic_alfven`, which numerically solves dispersion relations for kinetic Alfvén waves. (:pr:`1665`) - Added the :file:`stix_dispersion.ipynb` notebook which contains Stix cold-plasma dispersion examples. (:pr:`1693`) - Added the `~plasmapy.formulary.frequencies.Buchsbaum_frequency` function. (:pr:`1828`) - Decorated `~plasmapy.formulary.frequencies.gyrofrequency` with |particle_input| so that it can accept a broader variety of |particle-like| arguments. (:pr:`1869`) - After having been decorated with |particle_input|, the `~plasmapy.formulary.relativity.relativistic_energy` function now accepts a broader variety of |particle-like| objects rather than only |Quantity| objects representing mass. (:pr:`1871`) - After having been decorated with |particle_input|, |RelativisticBody| now accepts a broader variety of |particle-like| objects. (:pr:`1871`) - Enabled |particle_input| to accept values of the |charge number| that are real numbers but not integers. This capability can now be used by many of the functions in `plasmapy.formulary` and elsewhere that are decorated with |particle_input|. (:pr:`1884`) - Decorated `~plasmapy.particles.atomic.reduced_mass` with |particle_input| so that it can now accept a broader variety of |particle-like| arguments. (:pr:`1921`) - Added the `plasmapy.analysis.time_series.excess_statistics` module including the `~plasmapy.analysis.time_series.excess_statistics.ExcessStatistics` class for calculating excess statistics of time series. (:pr:`1984`) - Added `plasmapy.formulary.collisions.helio.collisional_analysis`. (:pr:`1986`) - Enabled |ParticleList| to accept |Quantity| objects of physical type mass or electrical charge. (:pr:`1987`) - The following functions have been decorated with |particle_input| and now accept a broader variety of |particle-like| arguments (see also :issue:`341`): - `~plasmapy.dispersion.analytical.two_fluid_.two_fluid` (:pr:`2022`) - `~plasmapy.formulary.frequencies.plasma_frequency` (:pr:`2026`) - `~plasmapy.formulary.speeds.ion_sound_speed` (:pr:`2134`) - `~plasmapy.formulary.speeds.kappa_thermal_speed` (:pr:`2136`) - `~plasmapy.formulary.speeds.Alfven_speed` (:pr:`2179`) - `~plasmapy.dispersion.numerical.hollweg_.hollweg` (:pr:`2181`) - `~plasmapy.dispersion.numerical.kinetic_alfven_.kinetic_alfven` (:pr:`2182`) - Refactored `~plasmapy.formulary.lengths.gyroradius` to reduce cognitive complexity and increase readability. (:pr:`2031`) - Added ``mass_numb`` and ``Z`` as parameters to functions decorated with |particle_input| in `plasmapy.formulary.lengths` and `plasmapy.formulary.distribution`. (:pr:`2140`) Bug Fixes --------- - When attempting to create a |Particle| object representing a proton, calls like :py:`Particle("H", Z=1, mass_numb=1)` no longer incorrectly issue a |ParticleWarning| for redundant particle information. (:pr:`1992`) - Updated the docstring of `~plasmapy.dispersion.numerical.kinetic_alfven_.kinetic_alfven`. (:pr:`2016`) - Fixed a slight error in `~plasmapy.formulary.frequencies.plasma_frequency` and `~plasmapy.formulary.speeds.Alfven_speed` when the charge number was provided via ``z_mean`` (or now ``Z``) and inconsistent with the charge number provided to ``particle`` (or zero, if ``particle`` represented an element or isotope with no charge information. Previously, if we represented a proton with :py:`particle="H-1"` and :py:`z_mean=1`, then the mass used to calculate the plasma frequency would have been the mass of a neutral hydrogen atom rather than the mass of a proton. However, using :py:`particle="p+"` would have produced the correct mass. This behavior has been corrected by decorating this function with |particle_input|. See also :issue:`2178` and :pr:`2179`. (:pr:`2026`) - The ``plasmapy.analysis.nullpoint._vector_space`` function now returns a list for its delta values instead of an array. (:pr:`2133`) Improved Documentation ---------------------- - Enabled `sphinx-codeautolink `_ to make code examples clickable and give quick access to API documentation. (:pr:`1410`) - Added an example notebook on ionization states in the solar wind. (:pr:`1513`) - Moved the location of the changelog pages for past releases from :file:`docs/whatsnew/` to :file:`docs/changelog/`, and set up appropriate redirects. (:pr:`1639`) - Removed outdated instructions on installing the development version of PlasmaPy contained in :file:`docs/contributing/install_dev.rst`. (:pr:`1656`) - Converted :file:`docs/CONTRIBUTING.rst` to :file:`.github/contributing.md`. (:pr:`1656`) - Added a new page to the |contributor guide| on the |code contribution workflow|, replacing content previously contained in the |coding guide|. (:pr:`1656`) - Added a page to the |contributor guide| on |getting ready to contribute|. (:pr:`1656`) - Updated docstrings in `plasmapy.formulary.collisions.frequencies`. (:pr:`1793`) - Updated the docstring for |particle_input|. (:pr:`1883`) - Updated the introductory paragraphs to the |contributor guide|. (:pr:`2014`) - Moved PlasmaPy's `vision statement `__ from the online documentation to a Zenodo record. (:pr:`2017`) - Restructured the |documentation guide| by putting information on writing documentation prior to instructions for building documentation. (:pr:`2038`) - Restructured the |testing guide| by putting information on writing tests prior to instructions for running tests. (:pr:`2041`) - Updated the introduction on the documentation landing page and the citation instructions. (:pr:`2055`) - Updated the |changelog guide|. (:pr:`2059`) - Added admonitions for functionality that is under development and for which backwards incompatible changes might occur in the future. (:pr:`2112`) - Updated the code contribution workflow instructions in the |contributor guide| to reflect that first-time contributors should add themselves to the author list in :file:`CITATION.cff` instead of in ``docs/about/credits.rst``. (:pr:`2155`) - Added functionality to automatically generate the author list included in ``docs/about/credits.rst`` directly from :file:`CITATION.cff`. The script is located at :file:`docs/cff_to_rst.py`. (:pr:`2156`) Trivial/Internal Changes ------------------------ - Included Python 3.11 in continuous integration tests. (:pr:`1775`) - Turned the root-level :file:`requirements.txt` into a lockfile for continuous integration purposes. (:pr:`1864`) - Enabled the particle creation factory in ``plasmapy.particles._factory`` used by |particle_input| to create |CustomParticle| instances of an element or isotope with a |charge number| that is a real number but not an integer. (:pr:`1884`) - Implemented the new private |CustomParticle| constructor from :pr:`1881` into the private particle creation factory used by |particle_input|. (:pr:`1884`) - Dropped ``dlint`` from the tests requirements, as it is no longer being maintained. (:pr:`1906`) - Modified |particle_input| to allow |CustomParticle|\ -like objects with a defined charge to be passed through to decorated functions when a |parameter| to that function annotated with |ParticleLike| is named ``ion``. Previously, only |Particle| objects representing ions or neutral atoms were allowed to pass through when the parameter was named ``ion``. (:pr:`2034`) - Updated package metadata in :file:`pyproject.toml`. (:pr:`2075`) - Set minimum versions for all explicitly listed dependencies. (:pr:`2075`) - Enabled and applied changes for additional rule sets for |ruff|, and removed corresponding ``flake8`` extensions. (:pr:`2080`) - Changed from ``indexserver`` to ``PIP_INDEX_URL`` to index nightly `numpy` builds (:pr:`2138`) - Updated the function and docstring of `~plasmapy.formulary.collisions.helio.collisional_analysis`. (:pr:`2151`) - Dropped ``flake8`` and its extensions as linters. Instead, |ruff| is now used as the primary linter. (:pr:`2170`) - Expanded the variety of arguments that could be provided to a function decorated by `~plasmapy.utils.decorators.converter.angular_freq_to_hz`, and refactored this decorator to use ``wrapt``. (:pr:`2175`)