lsst-utils v24.0.0 (2022-08-26)
===============================

New Features
------------

- Add option to ignore NaNs in ``lsst.utils.tests.assertFloatsAlmostEqual``. (`DM-29370 <https://jira.lsstcorp.org/browse/DM-29370>`_)
- Add test decorators to operate on cartesian product. (`DM-31141 <https://jira.lsstcorp.org/browse/DM-31141>`_)
- * Several new packages added from ``pipe_base`` and ``daf_butler``:

    * ``lsst.utils.timer``
    * ``lsst.utils.classes``
    * ``lsst.utils.introspection``
    * ``lsst.utils.iteration``
    * ``lsst.utils.logging``
  * Added ``lsst.utils.doImportType`` to import a python type from a string and guarantee it is not a module.
  * ``lsst.utils.get_caller_name`` is now deprecated in its current location and has been relocated to ``lsst.utils.introspection``. (`DM-31722 <https://jira.lsstcorp.org/browse/DM-31722>`_)
- Add `lsst.logging.set_trace_at` to control ``TRACE``-level loggers. (`DM-32142 <https://jira.lsstcorp.org/browse/DM-32142>`_)
- Builds using ``setuptools`` now calculate versions from the Git repository, including the use of alpha releases for those associated with weekly tags. (`DM-32408 <https://jira.lsstcorp.org/browse/DM-32408>`_)
- Context manager ``lsst.utils.timer.time_this`` can now include memory usage in its report. (`DM-33331 <https://jira.lsstcorp.org/browse/DM-33331>`_)
- A new package `lsst.utils.packages` has been added to allow system package versions to be obtained.
  This code has been relocated from ``lsst.base``. (`DM-33403 <https://jira.lsstcorp.org/browse/DM-33403>`_)
- Add ``lsst.utils.threads`` for control of threads.
  Use `lsst.utils.threads.disable_implicit_threading()` to disable implicit threading.
  This function should be used in place of ``lsst.base.disableImplicitThreading()`` in all new code.
  This package now depends on the `threadpoolctl` package. (`DM-33622 <https://jira.lsstcorp.org/browse/DM-33622>`_)
- Added a new class `lsst.utils.logging.PeriodicLogger` to allow a user to issue log messages after some time interval has elapsed. (`DM-33919 <https://jira.lsstcorp.org/browse/DM-33919>`_)
- Added ``lsst.utils.logging.getTraceLogger`` to simplify the creation of a trace logger that uses a ``TRACEn`` prefix for the logger name. (`DM-34208 <https://jira.lsstcorp.org/browse/DM-34208>`_)


API Changes
-----------

- The values for max resident set size stored in metadata are now consistently reported as bytes.
  Previously the units were platform specific (kibibytes on Liux and bytes on macOS). (`DM-20970 <https://jira.lsstcorp.org/browse/DM-20970>`_)
- ``deprecate_pybind11`` now requires a ``version`` parameter.
  This matches the upstream requirement from ``deprecated.deprecated`` (`DM-29701 <https://jira.lsstcorp.org/browse/DM-29701>`_)
- Add parameter to `~lsst.utils.packages.getEnvironmentPackages` to return all EUPS packages rather than just those that are locally setup. (`DM-33934 <https://jira.lsstcorp.org/browse/DM-33934>`_)


Performance Enhancement
-----------------------

- Fixed an optimization when using `lsst.utils.TemplateMeta` classes with `isinstance` or `issubclass`. (`DM-32661 <https://jira.lsstcorp.org/browse/DM-32661>`_)


lsst-utils v23.0.0 (2021-09-27)
===============================

- Moved all C++ code out of this package and into ``cpputils`` package and changed license to BSD 3-clause. (`DM-31721 <https://jira.lsstcorp.org/browse/DM-31721>`_)

lsst-utils v22.0 (2021-07-09)
=============================

Bug fix
-------

* Error reporting in `~lsst.utils.doImport` has been improved. [DM-27638]

lsst-utils v21.0 (2020-12-08)
=============================

New Features
------------

* Added a temporary directory context manager `lsst.utils.tests.temporaryDirectory`. [DM-26774]

API Change
----------

* Add an optional ``version`` parameter to `lsst.utils.deprecate_pybind11`. [DM-26285]