# Version 2.4.0

## Changes

- Removed support for Python 3.6 (EOL since December 2021)

## Enhancements

- Added attribute `alphabetic` (#1634)

- Added attribute `json_key` (#1648)

- Added value validation for numerical VRs, add type validation for all validated VRs (#1414)

- CLI commands now accept pydicom charset test files and CLI help shows Python Version (#1674)

- Added support for Python 3.11 (#1658)

- Added `ISfloat` to allow non-strict reading of existing files with float IS values (#1661)

- Improved speed of creating and accessing highly nested structures (#1728, #1734)

- Switched to a pyproject.toml build process (#1792)

- Updated DICOM and UID dicts to DICOM 2023b (#1803)

## Fixes

- Fixed length validation of DS values with maximum length without a leading zero (#1632)

- Increased download speed with progress bar for test data (#1611)

- Fixed crash due to invalid private creator (#1638)

- Fixed extremely long BytesLengthException error messages (#1683)

- In codify, ensure unique variable names for DICOM keywords repeated in sequences, and handle unicode characters correctly (#1670)

- Fixed handling of some invalid values in `to_json_dict()` if suppress_invalid_tags is set to True (#1693)

- Fixed reading of data with 8 bits allocated, encoded in Big Endian transfer syntax using VR `OW` (#1680)

- Fixed crash if reading regular dataset that has the SOP Class of a DICOMDIR (#1702)

- Fixed wrong waveform data calculation when as_raw=False and baseline!=0 (#1667)

- Fixed reading LUTData to expected size (#1747)

- Fixed handling of AT VRs when codifying data elements (#1738)

## Pydicom Internals

- In test suites, renamed ‘setup’ and ‘teardown’ methods, deprecated starting in pytest 7.2

- Use own fork of CharPyLS to handle builds with Python 3.11 (#1788)