v2026.3.1 (2026-03-31) ====================== Backwards Incompatible Changes ------------------------------ - Removed the `bapsflib.plasma` sub-module from the default `bapsflib` namespace. (`#183 `_) Features -------- - Created sub-module `bapsflib.phys180E` and initialized it with the `~bapsflib.phys180E._hdf.file_.File` class. (`#183 `_) - Added ``__str__`` and ``__repr__`` dunders to `~bapsflib._hdf.maps.digitizers.map_digis.HDFMapDigitizers` and `~bapsflib._hdf.maps.controls.map_controls.HDFMapControls` to display brief table summaries of the mapped devices. (`#184 `_) - Created `~bapsflib.utils.TableDisplay` to aid in generating table summaries for `~bapsflib._hdf.maps.digitizers.map_digis.HDFMapDigitizers` and `~bapsflib._hdf.maps.controls.map_controls.HDFMapControls`. (`#184 `_) - Created digitizer mapper `~bapsflib._hdf.maps.digitizers.lecroy.HDFMapDigiLeCroy180E` to map the associated HDF5 data generated by the LeCroy X-Stream oscilloscopes used in the UCLA Physics 180E lab. (`#185 `_) - Introduced a scheme to allow the ``'shotnum'`` mapping configuration key, :attr:`~bapsflib._hdf.maps.digitizers.templates.HDFMapDigiTemplate.configs`, to contain a value of `None` for digitizers that do NOT record shot number information in their header datasets. This also required updates to `~bapsflib._hdf.utils.hdfreaddata.HDFReadData`, `~bapsflib._hdf.utils.helpers.build_shotnum_dset_relation`, and `~bapsflib._hdf.utils.helpers.condition_shotnum`. (`#185 `_) - Introduced a scheme to allow the ``'bit'`` mapping configuration key, :attr:`~bapsflib._hdf.maps.digitizers.templates.HDFMapDigiTemplate.configs`, to contain a value of `None` for digitizers that record voltage into the HDF5 files, instead of bits. This also required an update `~bapsflib._hdf.utils.hdfreaddata.HDFReadData`, so it would default to ``keep_bits=True`` without issuing a warning. (`#185 `_) - Introduced a scheme to allow the ``'clock rate'`` mapping configuration key, :attr:`~bapsflib._hdf.maps.digitizers.templates.HDFMapDigiTemplate.configs`, to contain a value of `None` for digitizers that do NOT record clock or sample rate information into the HDF5 files. (`#185 `_) - Introduced the configuration key ``'channel_labels'``, :attr:`~bapsflib._hdf.maps.digitizers.templates.HDFMapDigiTemplate.configs`, to contain store any channel label meta-data recorded in the HDF5 file. (`#185 `_) - Introduced the configuration key ``'time_dset_path'``, :attr:`~bapsflib._hdf.maps.digitizers.templates.HDFMapDigiTemplate.configs`, to contain store a relative path to a time array dataset associated with the channel datasets. The relative path is relative to the digitizer group path. (`#185 `_) - Created the method :meth:`~bapsflib._hdf.utils.file.File.get_time_array` to generate or retrieve the time series data associated with a specified digitized signal. (`#186 `_) - Created `~bapsflib._hdf.maps.controls.positions180e.HDFMapControlPositions180E` to map the ``"Positions"`` control group generated by the Physics 180E lab. (`#187 `_) - Introduced the class attribute ``HDFMapControlTemplate._EXPECTED_GROUP_NAME`` to define the expected / default group name associated with the control device being mapped. (`#187 `_) - Updated the mapping scheme of `~bapsflib._hdf.maps.controls.map_controls.HDFMapControls` so a group is identified based on matching the group name to either the identifying key in ``HDFMapControls._defined_mapping_classes`` or the ``_EXPECTED_GROUP_NAME`` of a mapping class. (`#187 `_) Bug Fixes --------- - .. py:currentmodule:: bapsflib._hdf Fixed bug where the information dictionary returned by :meth:`~.maps.digitizers.templates.HDFMapDigiTemplate.construct_dataset_name` could modify the :attr:`~.maps.digitizers.templates.HDFMapDigiTemplate.configs` dictionary if the information dictionary were to be modified. (`#186 `_) Documentation Improvements -------------------------- - Created the "Package Features" section in the RTD sidebar. (`#181 `_) - Created documentation stub files for the `bapsflib.phys180E` sub-module. (`#183 `_) - Added `bapsflib.phys180E` to the "Package Features" section of the documentation sidebar. (`#183 `_) - Removed `sphinx` extension `sphinx-hoverxref`, and replaced with the `Read the Docs addon "Link previews" `_\ . (`#188 `_) - Integrated the `plasmapy_sphinx` extensions and theme: `plasmapy_sphinx.ext.autodoc`, `plasmapy_sphinx.ext.directives`, and `plasmapy_sphinx.theme`. (`#188 `_) - Re-titled the sidebar section names to be **First Steps**, **Package Features**, **Developer Documentation**, and **All the Rest**. (`#188 `_) - Dropped the explicit use of the :rst:role:`py:obj`, :rst:role:`py:mod`, and :rst:role:`py:class` roles in favor of just using single back-ticks. (`#188 `_) - Dropped the explicit use of the :rst:role:`code` role in favor of just using double back-ticks. (`#188 `_) - Removed documentation stub file :file:`api_static/bapsflib.lapd.ConType.rst`. (`#188 `_) - Added the `nbsphinx` extension to the documentation. (`#190 `_) - Created an example notebook for the `bapsflib.phys180e.File` functionality, and placed it in the "First Steps" section of the sidebar. (`#190 `_) - Set the documentation theme to ``plasmapy_theme``. (`#191 `_) - Removed unused documentation templates, ``docs/_templates/*``. (`#191 `_) - Moved and renamed the CSS override file, :file:`docs/_static/rtd_theme_overrides.css` -> :file:`docs/_static/css/overrides.css`. (`#191 `_) - Moved Sphinx role definitions from the :confval:`rst_prolog` configuration variable to the ``setup()`` function using the `~sphinx.application.Sphinx` `~sphinx.application.Sphinx.add_role` method. (`#191 `_) Trivial/Internal Changes ------------------------ - Added return annotations for key `~bapsflib._hdf.utils.file.File` methods, `~bapsflib._hdf.utils.file.File.overview`, `~bapsflib._hdf.utils.file.File.read_controls`, `~bapsflib._hdf.utils.file.File.read_data`, and `~bapsflib._hdf.utils.file.File.read_msi`. This was done on both `bapsflib._hdf.utils.file.File` and `bapsflib.lapd._hdf.file.File`. (`#182 `_) - Replaced some instances of the ``Union[]`` annotation with the newer pipe ``|`` notation. (`#182 `_) - Forced mapped board and channel values for `~bapsflib._hdf.maps.digitizers.sis3301.HDFMapDigiSIS3301` to be type `int` instead of `numpy.integer`. (`#184 `_) - .. py:currentmodule:: bapsflib._hdf Updated method :meth:`~.utils.file.File.get_digitizer_specs` to generate the information dictionary using the `~.maps.digitizers.templates.HDFMapDigiTemplate` method :meth:`~.maps.digitizers.templates.HDFMapDigiTemplate.construct_dataset_name` instead of :meth:`~.maps.digitizers.templates.HDFMapDigiTemplate.get_adc_info` to maintain consistency with the :attr:`~.utils.hdfreaddata.HDFReadData.info` dictionary generated by `~.utils.hdfreaddata.HDFReadData`. (`#186 `_) Package Management ------------------ - Bumped `black` version from ``==v24.3.0`` to ``==v26.3.1``. (`#178 `_) - Removed documentation dependency `sphinx-hoverxref`. (`#188 `_) - Added documentation dependency `plasmapy_sphinx`. (`#188 `_) - Made `nbsphinx`, `ipykernel`, and `matplotlib` documentation dependencies. (`#190 `_) - Update :file:`.readthedocs.yml` so the Read the Docs documentation builds are done with Python 3.14. (`#191 `_)