pydicom Changelog

What's new in pydicom 2.4.0

Jun 13, 2023
  • Do not use pytest.warns(None) by @mrbean-bremen in #1623
  • Add alphabetic property to PersonName VR by @bernardopericacho in #1634
  • Use a next-gen Docker convenience CircleCI image by @bernardopericacho in #1635
  • Use sensible chunk size for test data download by @mrbean-bremen in #1636
  • Fix length validation of DS values by @mrbean-bremen in #1633
  • Prevent crash due to invalid private creator by @mrbean-bremen in #1639
  • Add validation for numerical VR values by @mrbean-bremen in #1640
  • json_key method for BaseTag by @sanjaymjoshi in #1648
  • Fix source comment typo by @luzpaz in #1663
  • Avoid multi-megabyte error message by @chris-remedy in #1683
  • Codify Ensures distinct names by @darcymason in #1674
  • Catch error in creating a dataelement in to_json_dict by @mrbean-bremen in #1694
  • Fix reading of 1 byte Big Endian data with OW by @mrbean-bremen in #1687
  • Add CI builds for Python 3.11 by @mrbean-bremen in #1659
  • Handle invalid DICOMDIR dataset by @mrbean-bremen in #1707
  • Skip jpeg-ls tests for Python 3.11 by @mrbean-bremen in #1708
  • Add more information about pydicom purpose by @mrbean-bremen in #1709
  • Add lint-action workflow by @mrbean-bremen in #1711
  • IS float by @darcymason in #1720
  • Pytest deprecations by @darcymason in #1730
  • Correct waveform calculation. Closes #1667 by @MartinFLH in #1715
  • Nested seq speed by @darcymason in #1734
  • cut LUTData to expected size by @rgsoda in #1747
  • Fix decoding of multibyte text with backslash by @ykszk in #1724
  • Removed inactive gitter badge by @ZviBaratz in #1756
  • [DOC] Minor fixes and suggestions by @ZviBaratz in #1761
  • [DOC] File-set tutorial styling suggestions by @ZviBaratz in #1764
  • Ensure AT DataElements are encoded properly by code_dataelem by @suever in #1768
  • GitHub Actions: Upgrade to Python v3.11 production release by @cclauss in #1777
  • GitHub Action to lint Python code with ruff by @cclauss in #1771
  • small bugfix in example pydicomtree.py by @Grarie in #1787
  • Exclude CharPyLS for Python 3.11 by @mrbean-bremen in #1791
  • Switch build to pyproject.toml by @darcymason in #1792
  • Use CharPyLS fork with newer cython version by @mrbean-bremen in #1794
  • Use wheel packages to install pyjpegls by @mrbean-bremen in #1797
  • Update DICOM and UID dicts to Dicom2023b by @darcymason in #1803

New in pydicom 2.1.2 (Dec 10, 2020)

  • Updated minimum Python version to exclude Python 3.6.0.

New in pydicom 2.1.0 (Nov 3, 2020)

  • Some of the changes in pydicom 2.1.0:
  • Dropped support for Python 3.5 (only Python 3.6+ supported)
  • Added keyword property for the new UID keywords in version 2020d of the DICOM Standard
  • Added testing of the variable names used when setting Dataset attributes and INVALID_KEYWORD_BEHAVIOR config option to allow customizing the behavior when a camel case variable name is used that isn’t a known element keyword (#1014)
  • Added INVALID_KEY_BEHAVIOR config option to allow customizing the behavior when an invalid key is used with the Dataset in operator (#1200)
  • Implemented full support (loading, accessing, modifying, writing) of DICOM File-sets and their DICOMDIR files via the FileSet class (#9, #243, #1093)
  • Data dictionaries updated to version 2020d of the DICOM Standard

New in pydicom 2.0.0 (May 30, 2020)

  • Dropped support for Python 2 (only Python 3.5+ supported)
  • Changes to Dataset.file_meta; new FileMetaDataset class
  • Allow PathLike objects for filename argument in dcmread, dcmwrite and Dataset.save_as
  • can configure to use numpy arrays for multi-value DS and IS data elements
  • many other fixes and enhancements

New in pydicom 0.9.9 (Aug 2, 2018)

  • All dicom dictionaries updated (standard dictionary, UID dictionary, and private dictionaries)
  • Dicom commands also added to dictionary
  • Ability to work with DICOMDIR: read_dicomdir() function and DicomDir class. Example file show_dicomdir.py file added to examples subdirectory.
  • codify.py: Produce python/pydicom source code from a dicom file.
  • a number of python 3 compatibility enhancements
  • setup.py uses ez_setup only if setuptools not already installed
  • exceptions carry tag info with them, to aid in debugging

New in pydicom 0.9.8 (Jan 21, 2013)

  • Major changes:
  • Requires python 2.6 or later, in preparation for python 3 compatibility experimental python 3 compatibility (unofficial at this point) -- uncomment the two indicated lines in setup.py to use it. Please provide feedback to the issues list.
  • DS values reverted to using float as default (issue 114) due to slow performance using python Decimal. Speed tests show approx factor of 10 improvement compared with pydicom 0.9.7
  • streamlined much code internally taking advantage of modern python constructs: decorators, generators, etc
  • Bug fixes:
  • Fix for duplicate logger
  • Fix rewind behavior in find_bytes
  • Fix error in nested private sequences
  • Enhancements:
  • UID generator added
  • new PersonName3 class for python 3
  • Contrib file changes:
  • Fix for pydicom_series for DS decimal
  • new dcm_qt_tree.py module - tree display of dicom files using PySide and Qt.

New in pydicom 0.9.7 (May 30, 2012)

  • pydicom 0.9.7 resolves some remaining bugs before moving to python 3 compatibility
  • It is the last version which will run with python < 2.6 (it will run with python2.4 to python2.7)
  • NOTE: there may be some backwords compatibility issues with the new DS and IS handling. In particular, DS, derived from Decimal, may give type errors for math operations with floats. One solution is to cast the DS value to float before combining with other float operations
  • Major changes:
  • Added DICOM 2011 keywords. Old "named tags" still work, but will be deprecated in future versions. Most names are identical, but some have changed
  • For example: SamplesperPixel becomes SamplesPerPixel (capital 'P' on 'Per') or Beams becomes BeamSequence (and similar for all sequences)
  • Decimal and integer strings handled much better (revisions 4ed698a7bfbe and c313d2befb08):
  • New classes for VR of types DS and IS (DS is derived from python Decimal). As mentioned above, you may often have to convert DS values to float to do mathematical operations with float numbers
  • New MultiValue class, enforcing all values of same type
  • New config.py file with user-definable parameters
  • allow_DS_float (default False) for controlling whether float values can be used to construct DS or IS strings
  • enforce_valid_values (default True) for ensuring IS, DS meet DICOM standard limits. To change these, use 'import dicom.config, then dicom.config. ={True|False} before setting values of data elements
  • Users are encouraged to switch to the official DICOM keywords, as these are now part of the standard, and promote consistency across programming languages and libraries
  • Bug fixes:
  • New way to read file meta information, not using the group length, instead reading until end of group 2 data elements. If group length dose not match, log a warning (revision b6b3658f3b14)
  • Fix bug in copying raw private data elements (issue 98)
  • Force logging level to warning on 'import dicom' ( issue 102 )
  • Deferred read fixed to work with gzipped files ( issue 103 )
  • Setting individual items in a DS or IS list now saves to file correctly
  • Japanese and Korean encoding fixes ( issue 110 )
  • Other Enhancements:
  • New Sequence class which verifies items are Datasets ( issue 52 )
  • Assignment to SQ data element checks value is a Sequence or can be converted to one ( issue 111 )
  • dir(ds) now includes methods and properties as well as DICOM named tags. Work only on Python >= 2.6 as previous versions do not call dir method ( issue 95 )
  • Added much more debugging info and simplified reading of data elements (revision b6b3658f3b14)
  • updated example files to DICOM 2011 keywords; fixed bugs
  • Many of the bug fixes/enhancements were submitted by users. Many thanks to those who contributed

New in pydicom 0.9.6 (Mar 9, 2012)

  • Major changes:
  • updated the dictionary to the DICOM 2011 standard's dictionary.
  • Bug fixes:
  • Fixed bug in Dataset.file_metadata() and deprecated in favor of FileDataset ( issue 93 )
  • Fixed UID comparisons against non-string values ( issue 96 )
  • catch exceptions on reading undefined length private data elements ( issue 91 , issue 97 )
  • Fixed bug in raising exception for unknown tag
  • Otherl
  • added example file write_new.py to show how to create DICOM files from scratch
  • updated other example files
  • more PEP-8 style changes