PlasmaPy v2024.2.0 (2024-02-06) =============================== Backwards Incompatible Changes ------------------------------ - Created new ``plasmapy.simulation.particle_tracker.ParticleTracker`` object for general particle pushing simulations involving electromagnetic fields. The tracker replaces the old ``plasmapy.simulation.particletracker.ParticleTracker``. (:pr:`2245`) - Imports of classes and functions from `plasmapy.utils` must now be made directly from the subpackages and modules, rather than from `plasmapy.utils` itself. (:pr:`2403`) - Moved ``mass_density`` and its alias ``rho_`` from `plasmapy.formulary.misc` to `plasmapy.formulary.densities`. (:pr:`2410`) Features -------- - Added a ``notch`` argument to `~plasmapy.diagnostics.thomson.spectral_density`, which allows users to output spectrum over one or multiple wavelength ranges to correspond to a notch filter commonly applied to experimentally measured Thomson scattering spectra. Changed the `~plasmapy.diagnostics.thomson.spectral_density_model` function to allow ``notch`` to be applied during fitting. (:pr:`2058`) - Changed unit annotations to |Quantity| type hint annotations. (:pr:`2421`) - Enabled |particle_input| to decorate functions which have variadic positional arguments followed by keyword arguments. (:pr:`2428`; see also :issue:`2150`) - Added a ``random_seed`` keyword in the `~plasmapy.diagnostics.charged_particle_radiography.synthetic_radiography.Tracker.create_particles` method of the `~plasmapy.diagnostics.charged_particle_radiography.synthetic_radiography.Tracker` class to make the function deterministic to resolve intermittent test failures. (:pr:`2487`) Bug Fixes --------- - Enabled |particle_input| to be compatible with postponed evaluation of annotations (see :pep:`563`). (:pr:`2479`) Improved Documentation ---------------------- - Switched from ``sphinx_toolbox.collapse`` to ``sphinx_collapse`` for including collapsible content in our documentation. (:pr:`2387`) - Added a discussion of |type hint annotations| in the |testing guide| within the |contributor guide|. (:pr:`2440`) Trivial/Internal Changes ------------------------ - Added Python 3.12 to the suite of continuous integration tests. (:pr:`2368`) - Added a GitHub Action that will create an issue containing a release checklist, which will largely supersede the release process outlined in the |contributor guide|. (:pr:`2376`) - Separated the GitHub Action for checking hyperlinks in the documentation into its own GitHub Action. (:pr:`2392`) - Replaced ``black`` with |ruff| in the |pre-commit| configuration. (:pr:`2394`) - Modified the ``__exit__`` method of ``HDF5Reader`` for context management. (:pr:`2402`) - Added an initial configuration for |mypy| that temporarily ignores existing errors. (:pr:`2424`) - Added a tox environment for running |mypy|. (:pr:`2431`) - Added |mypy| to the suite of continuous integration checks. (:pr:`2432`) - Used ``autotyping`` to implement |type hint annotations| for special methods like ``__init__`` and ``__str__``, and changed :py:`-> typing.NoReturn` annotations to :py:`-> None`. (:pr:`2437`) - Used ``autotyping`` to add :py:`-> None` return annotations to functions and methods with no :py:`return` statement. (:pr:`2439`) - Added a stub file containing |type hint annotations| for ``@wrapt.decorator``. (:pr:`2442`) - Improved |type hint annotations| for `plasmapy.particles.decorators`, which includes |particle_input|, and the corresponding tests. (:pr:`2443`) - Dropped the |pre-commit| hook for ``isort`` and enabled all ``isort`` rules in |ruff|. (:pr:`2453`) - Added a :file:`py.typed` marker file to indicate that PlasmaPy contains type hint annotations as per :pep:`561`. (:pr:`2473`) - Changed ``_nearest_neighbor_interpolator`` method in `~plasmapy.plasma.grids` to interpolate quantities array instead of producing an intermediate index. (:pr:`2475`) - Enabled the ``sphinx`` linkchecker in quiet mode to make it easier to find problem links from the console output. (:pr:`2476`) - Bumped the minimum versions of dependencies to drop support for minor releases older than two years old. In particular, the minimum version of NumPy was bumped to ``1.23.0``. (:pr:`2488`)