Version 2.3.0
=================================

Changes
-------
* :meth:`DataElement.description<pydicom.dataelem.DataElement.description>` is
  deprecated and will be removed in v3.0, use
  :attr:`DataElement.name<pydicom.dataelem.DataElement.name>` instead
* Updated the private dictionary
* :attr:`~pydicom.config.enforce_valid_values` is deprecated in favor of
  :attr:`~pydicom.config.settings.reading_validation_mode`
* Added `download` parameter to :func:`~pydicom.data.get_testdata_file`
  to allow skipping downloading the file if missed locally (:pr:`1617`)

Enhancements
------------
* Values are now validated for valid length, allowed character set and format
  on reading and writing. Depending on the value of
  :attr:`~pydicom.config.settings.reading_validation_mode`
  and :attr:`~pydicom.config.settings.writing_validation_mode`
  a warning is logged, an exception is raised, or the validation is skipped.
* Added :class:`~pydicom.valuerep.VR` enum (:pr:`1500`)
* UIDs for all Storage SOP Classes have been added to the ``uid`` module
  (:issue:`1498`)
* Use rle_handler as last resort handler for decoding RLE encoded data as it is
  the slowest handler (:issue:`1487`)
* Added, enhanced, or removed a number of Mitra private dictionary entries (:pr:`1588`)
* Added support for unpacking bit-packed data without using NumPy to
  :func:`~pydicom.pixel_data_handlers.utils.unpack_bits`(:pr:`1594`)
* Added :func:`~pydicom.pixel_data_handlers.util.expand_ybr422` for expanding
  uncompressed ``YBR_FULL_422`` data to ``YBR_FULL`` (:pr:`1593`)
* Replacement of ``UN`` VR with ``SQ`` VR for undefined length data elements
  (introduced in 2.2.2), can now be configured via
  :attr:`~pydicom.config.settings.infer_sq_for_un_vr`
* Updated dictionaries to DICOM 2022a

Fixes
-----
* Fixed odd-length **OB** values not being padded during write (:issue:`1511`)
* Fixed Hologic private dictionary entry (0019xx43)
* Fixed Mitra global patient ID private dictionary entry (:pr:`1588`)
* Fixed :meth:`~pydicom.dataset.Dataset.compress` not setting the correct
  encoding for the rest of the dataset (:issue:`1565`)
* Fixed `AttributeError` on deep copy of :class:`~pydicom.dataset.FileDataset`
  (:issue:`1571`)
* Fixed an exception during pixel decoding if using GDCM < 2.8.8 on Windows
  (:issue:`1581`)
* Fixed crashes on Windows and MacOS when using the GDCM plugin to compress
  into *RLE Lossless* (:issue:`1581`)
* Fixed ``dir(Dataset())`` not returning class attributes (:issue:`1599`)
* Fixed bad DICOMDIR offsets when using :meth:`FileSet.write()
  <pydicom.fileset.FileSet.write>` with a *Directory Record Sequence* using
  undefined length items (:issue:`1596`)
* Assigning a list of length one as tag value is now correctly handled as
  assigning the single value (:issue:`1606`)
* Fixed an exception with multiple deferred reads with file-like objects
  (:issue:`1609`)

