pep8speaks: Hello @scaramallion! Thanks for opening this PR. We checked the lines you've touched for [PEP 8](https://www.python.org/dev/peps/pep-0008) issues, and found:



* In the file [`pydicom/tests/test_filereader.py`](https://github.com/pydicom/pydicom/blob/6cdf6a627720818098ac06afd83cc6e579e0acab/pydicom/tests/test_filereader.py):

> [Line 684:27](https://github.com/pydicom/pydicom/blob/6cdf6a627720818098ac06afd83cc6e579e0acab/pydicom/tests/test_filereader.py#L684): [E711](https://duckduckgo.com/?q=pep8%20E711) comparison to None should be 'if cond is None:'


diff --git a/doc/release_notes/v2.0.0.rst b/doc/release_notes/v2.0.0.rst
index b01df1926..82b405932 100644
--- a/doc/release_notes/v2.0.0.rst
+++ b/doc/release_notes/v2.0.0.rst
@@ -12,3 +12,5 @@ Fixes
 .....
 * Fixed reading of datasets with an empty `Specific Character Set` tag
   (regression, :issue:`1038`)
+* Fix failure to parse dataset with an empty *LUT Descriptor* or
+  *Red/Green/Blue Palette Color LUT Descriptor* element. (:issue:`1049`)
diff --git a/pydicom/dataelem.py b/pydicom/dataelem.py
index e0b303005..2387c3c2b 100644
--- a/pydicom/dataelem.py
+++ b/pydicom/dataelem.py
@@ -741,9 +741,13 @@ def DataElement_from_raw(raw_data_element, encoding=None):
     except NotImplementedError as e:
         raise NotImplementedError("{0:s} in tag {1!r}".format(str(e), raw.tag))
 
-    if raw.tag in _LUT_DESCRIPTOR_TAGS and value[0] < 0:
+    if raw.tag in _LUT_DESCRIPTOR_TAGS and value:
         # We only fix the first value as the third value is 8 or 16
-        value[0] += 65536
+        try:
+            if value[0] < 0:
+                value[0] += 65536
+        except TypeError:
+            pass
 
     return DataElement(raw.tag, VR, value, raw.value_tell,
                        raw.length == 0xFFFFFFFF, already_converted=True)

LUT Descriptor tag with no value yields TypeError
**Describe the bug**
I have a DICOM image with the following tag (copied from ImageJ)

```
0028,1101  Red Palette Color Lookup Table Descriptor: 
```

which corresponds to the raw data element, produced by [`DataElement_from_raw`](https://github.com/pydicom/pydicom/blob/v1.4.1/pydicom/dataelem.py#L699):
```
RawDataElement(tag=(0028, 1101), VR='US', length=0, value=None, value_tell=1850, is_implicit_VR=False, is_little_endian=True)
```

Because this tag is matched by the [LUT Descriptor tags](https://github.com/pydicom/pydicom/blob/v1.4.1/pydicom/dataelem.py#L696) and the value is empty (`None`), the [following line](https://github.com/pydicom/pydicom/blob/v1.4.1/pydicom/dataelem.py#L761):
```
if raw.tag in _LUT_DESCRIPTOR_TAGS and value[0] < 0:
```
results in 
```
TypeError: 'NoneType' object is not subscriptable
```

**Expected behavior**

Given that I discovered this by parsing what seems to be a set of faulty DICOMs (mangled pixel data), I'm not sure if an error should be raised if the colour attribute value is not provided.

However, given that `value` can be `None` for other tags, the simple fix is

```python
try:
    if raw.tag in _LUT_DESCRIPTOR_TAGS and value[0] < 0:
        # We only fix the first value as the third value is 8 or 16
        value[0] += 65536
except TypeError:
    pass
```

(or test if `value` is iterable).

**Your environment**
```
Darwin-19.3.0-x86_64-i386-64bit
Python  3.7.6 | packaged by conda-forge | (default, Jan  7 2020, 22:05:27)
[Clang 9.0.1 ]
pydicom  1.4.1
```

Many thanks!
diff --git a/pydicom/tests/test_filereader.py b/pydicom/tests/test_filereader.py
index d7d86cf5e..d27f30725 100644
--- a/pydicom/tests/test_filereader.py
+++ b/pydicom/tests/test_filereader.py
@@ -674,6 +674,27 @@ class TestReader(object):
             assert elem.VR == 'SS'
             assert elem.value == [62720, -2048, 16]
 
+    def test_lut_descriptor_empty(self):
+        """Regression test for #1049: LUT empty raises."""
+        bs = DicomBytesIO(b'\x28\x00\x01\x11\x53\x53\x00\x00')
+        bs.is_little_endian = True
+        bs.is_implicit_VR = False
+        ds = dcmread(bs, force=True)
+        elem = ds[0x00281101]
+        assert elem.value is None
+        assert elem.VR == 'SS'
+
+    def test_lut_descriptor_singleton(self):
+        """Test LUT Descriptor with VM = 1"""
+        bs = DicomBytesIO(b'\x28\x00\x01\x11\x53\x53\x02\x00\x00\xf5')
+        bs.is_little_endian = True
+        bs.is_implicit_VR = False
+        ds = dcmread(bs, force=True)
+        elem = ds[0x00281101]
+        # No conversion to US if not a triplet
+        assert elem.value == -2816
+        assert elem.VR == 'SS'
+
 
 class TestIncorrectVR(object):
     def setup(self):

pip install -e .
parse_log_pytest
pytest
numpy>=1.16.0 pytest pytest-cov
apt-get update apt-get install -y gcc
3.9
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
coverage==7.8.0
exceptiongroup @ file:///croot/exceptiongroup_1706031385326/work
iniconfig @ file:///home/linux1/recipes/ci/iniconfig_1610983019677/work
numpy==2.0.2
packaging @ file:///croot/packaging_1734472117206/work
pluggy @ file:///croot/pluggy_1733169602837/work
-e git+https://github.com/pydicom/pydicom.git@00c248441ffb8b7d46c6d855b723e696a8f5aada#egg=pydicom
pytest @ file:///croot/pytest_1738938843180/work
pytest-cov==6.0.0
tomli @ file:///opt/conda/conda-bld/tomli_1657175507142/work

name: pydicom
channels:
  - defaults
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=main
  - _openmp_mutex=5.1=1_gnu
  - ca-certificates=2025.2.25=h06a4308_0
  - exceptiongroup=1.2.0=py39h06a4308_0
  - iniconfig=1.1.1=pyhd3eb1b0_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - libffi=3.4.4=h6a678d5_1
  - libgcc-ng=11.2.0=h1234567_1
  - libgomp=11.2.0=h1234567_1
  - libstdcxx-ng=11.2.0=h1234567_1
  - ncurses=6.4=h6a678d5_0
  - openssl=3.0.16=h5eee18b_0
  - packaging=24.2=py39h06a4308_0
  - pip=25.0=py39h06a4308_0
  - pluggy=1.5.0=py39h06a4308_0
  - pytest=8.3.4=py39h06a4308_0
  - python=3.9.21=he870216_1
  - readline=8.2=h5eee18b_0
  - setuptools=75.8.0=py39h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - tomli=2.0.1=py39h06a4308_0
  - tzdata=2025a=h04d1e81_0
  - wheel=0.45.1=py39h06a4308_0
  - xz=5.6.4=h5eee18b_1
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - coverage==7.8.0
      - numpy==2.0.2
      - pytest-cov==6.0.0
prefix: /opt/conda/envs/pydicom

pydicom/tests/test_filereader.py::TestReader::test_lut_descriptor_empty pydicom/tests/test_filereader.py::TestReader::test_lut_descriptor_singleton
pydicom/tests/test_filereader.py::TestReader::test_long_specific_char_set pydicom/tests/test_filereader.py::TestReader::test_file_meta_dataset_implicit_vr pydicom/tests/test_filereader.py::TestIncorrectVR::test_implicit_vr_expected_explicit_used pydicom/tests/test_filereader.py::TestIncorrectVR::test_implicit_vr_expected_explicit_used_strict pydicom/tests/test_filereader.py::TestIncorrectVR::test_explicit_vr_expected_implicit_used pydicom/tests/test_filereader.py::TestIncorrectVR::test_explicit_vr_expected_implicit_used_strict pydicom/tests/test_filereader.py::TestReadDataElement::test_read_OD_implicit_little pydicom/tests/test_filereader.py::TestReadDataElement::test_read_OD_explicit_little pydicom/tests/test_filereader.py::TestReadDataElement::test_read_OL_implicit_little pydicom/tests/test_filereader.py::TestReadDataElement::test_read_OL_explicit_little pydicom/tests/test_filereader.py::TestReadDataElement::test_read_UC_implicit_little pydicom/tests/test_filereader.py::TestReadDataElement::test_read_UC_explicit_little pydicom/tests/test_filereader.py::TestReadDataElement::test_read_UR_implicit_little pydicom/tests/test_filereader.py::TestReadDataElement::test_read_UR_explicit_little pydicom/tests/test_filereader.py::TestReadDataElement::test_read_AE pydicom/tests/test_filereader.py::TestReadDataElement::test_read_OV_implicit_little pydicom/tests/test_filereader.py::TestReadDataElement::test_read_OV_explicit_little pydicom/tests/test_filereader.py::TestReadDataElement::test_read_SV_implicit_little pydicom/tests/test_filereader.py::TestReadDataElement::test_read_UV_implicit_little pydicom/tests/test_filereader.py::TestReadDataElement::test_read_UV_explicit_little pydicom/tests/test_filereader.py::TestDeferredRead::test_time_check pydicom/tests/test_filereader.py::TestDeferredRead::test_file_exists pydicom/tests/test_filereader.py::TestDeferredRead::test_values_identical
pydicom/tests/test_filereader.py::TestReader::test_empty_numbers_tag pydicom/tests/test_filereader.py::TestReader::test_UTF8_filename pydicom/tests/test_filereader.py::TestReader::test_RTPlan pydicom/tests/test_filereader.py::TestReader::test_RTDose pydicom/tests/test_filereader.py::TestReader::test_CT pydicom/tests/test_filereader.py::TestReader::test_CT_PixelData pydicom/tests/test_filereader.py::TestReader::test_no_force pydicom/tests/test_filereader.py::TestReader::test_RTStruct pydicom/tests/test_filereader.py::TestReader::test_dir pydicom/tests/test_filereader.py::TestReader::test_MR pydicom/tests/test_filereader.py::TestReader::test_deflate pydicom/tests/test_filereader.py::TestReader::test_no_pixels_read pydicom/tests/test_filereader.py::TestReader::test_specific_tags pydicom/tests/test_filereader.py::TestReader::test_specific_tags_with_unknown_length_SQ pydicom/tests/test_filereader.py::TestReader::test_specific_tags_with_unknown_length_tag pydicom/tests/test_filereader.py::TestReader::test_tag_with_unknown_length_tag_too_short pydicom/tests/test_filereader.py::TestReader::test_private_SQ pydicom/tests/test_filereader.py::TestReader::test_nested_private_SQ pydicom/tests/test_filereader.py::TestReader::test_no_meta_group_length pydicom/tests/test_filereader.py::TestReader::test_no_transfer_syntax_in_meta pydicom/tests/test_filereader.py::TestReader::test_explicit_VR_little_endian_no_meta pydicom/tests/test_filereader.py::TestReader::test_explicit_VR_big_endian_no_meta pydicom/tests/test_filereader.py::TestReader::test_planar_config pydicom/tests/test_filereader.py::TestReader::test_correct_ambiguous_vr pydicom/tests/test_filereader.py::TestReader::test_correct_ambiguous_explicit_vr pydicom/tests/test_filereader.py::TestReader::test_correct_ambiguous_vr_compressed pydicom/tests/test_filereader.py::TestReader::test_no_preamble_file_meta_dataset pydicom/tests/test_filereader.py::TestReader::test_no_preamble_command_group_dataset pydicom/tests/test_filereader.py::TestReader::test_group_length_wrong pydicom/tests/test_filereader.py::TestReader::test_preamble_command_meta_no_dataset pydicom/tests/test_filereader.py::TestReader::test_preamble_meta_no_dataset pydicom/tests/test_filereader.py::TestReader::test_preamble_commandset_no_dataset pydicom/tests/test_filereader.py::TestReader::test_meta_no_dataset pydicom/tests/test_filereader.py::TestReader::test_commandset_no_dataset pydicom/tests/test_filereader.py::TestReader::test_no_dataset pydicom/tests/test_filereader.py::TestReader::test_empty_file pydicom/tests/test_filereader.py::TestReader::test_empty_specific_character_set pydicom/tests/test_filereader.py::TestReader::test_dcmread_does_not_raise pydicom/tests/test_filereader.py::TestReader::test_lut_descriptor pydicom/tests/test_filereader.py::TestIncorrectVR::test_seq_item_looks_like_explicit_VR pydicom/tests/test_filereader.py::TestUnknownVR::test_fail_decode_msg[\x00A-0x00 pydicom/tests/test_filereader.py::TestUnknownVR::test_fail_decode_msg[@A-0x40 pydicom/tests/test_filereader.py::TestUnknownVR::test_fail_decode_msg[[A-0x5b pydicom/tests/test_filereader.py::TestUnknownVR::test_fail_decode_msg[`A-0x60 pydicom/tests/test_filereader.py::TestUnknownVR::test_fail_decode_msg[{A-0x7b pydicom/tests/test_filereader.py::TestUnknownVR::test_fail_decode_msg[\xffA-0xff pydicom/tests/test_filereader.py::TestUnknownVR::test_fail_decode_msg[A\x00-0x41 pydicom/tests/test_filereader.py::TestUnknownVR::test_fail_decode_msg[Z\x00-0x5a pydicom/tests/test_filereader.py::TestUnknownVR::test_fail_decode_msg[a\x00-0x61 pydicom/tests/test_filereader.py::TestUnknownVR::test_fail_decode_msg[z\x00-0x7a pydicom/tests/test_filereader.py::TestUnknownVR::test_fail_decode_msg[\x00Z-0x00 pydicom/tests/test_filereader.py::TestUnknownVR::test_fail_decode_msg[\x00a-0x00 pydicom/tests/test_filereader.py::TestUnknownVR::test_fail_decode_msg[\x00z-0x00 pydicom/tests/test_filereader.py::TestUnknownVR::test_fail_decode_msg[AA-AA] pydicom/tests/test_filereader.py::TestUnknownVR::test_fail_decode_msg[AZ-AZ] pydicom/tests/test_filereader.py::TestUnknownVR::test_fail_decode_msg[ZA-ZA] pydicom/tests/test_filereader.py::TestUnknownVR::test_fail_decode_msg[ZZ-ZZ] pydicom/tests/test_filereader.py::TestUnknownVR::test_fail_decode_msg[Aa-Aa] pydicom/tests/test_filereader.py::TestUnknownVR::test_fail_decode_msg[Az-Az] pydicom/tests/test_filereader.py::TestUnknownVR::test_fail_decode_msg[aA-aA] pydicom/tests/test_filereader.py::TestUnknownVR::test_fail_decode_msg[aZ-aZ] pydicom/tests/test_filereader.py::TestUnknownVR::test_fail_decode_msg[aa-aa] pydicom/tests/test_filereader.py::TestUnknownVR::test_fail_decode_msg[az-az] pydicom/tests/test_filereader.py::TestUnknownVR::test_fail_decode_msg[Za-Za] pydicom/tests/test_filereader.py::TestUnknownVR::test_fail_decode_msg[Zz-Zz] pydicom/tests/test_filereader.py::TestUnknownVR::test_fail_decode_msg[zA-zA] pydicom/tests/test_filereader.py::TestUnknownVR::test_fail_decode_msg[zZ-zZ] pydicom/tests/test_filereader.py::TestUnknownVR::test_fail_decode_msg[za-za] pydicom/tests/test_filereader.py::TestUnknownVR::test_fail_decode_msg[zz-zz] pydicom/tests/test_filereader.py::TestDeferredRead::test_zipped_deferred pydicom/tests/test_filereader.py::TestDeferredRead::test_filelike_deferred pydicom/tests/test_filereader.py::TestReadTruncatedFile::testReadFileWithMissingPixelData pydicom/tests/test_filereader.py::TestReadTruncatedFile::testReadFileWithMissingPixelDataArray pydicom/tests/test_filereader.py::TestFileLike::test_read_file_given_file_object pydicom/tests/test_filereader.py::TestFileLike::test_read_file_given_file_like_object pydicom/tests/test_filereader.py::TestDataElementGenerator::test_little_endian_explicit pydicom/tests/test_filereader.py::TestDataElementGenerator::test_little_endian_implicit pydicom/tests/test_filereader.py::TestDataElementGenerator::test_big_endian_explicit
pydicom/dataelem.py doc/release_notes/v2.0.0.rst
pydicom/dataelem.py doc/release_notes/v2.0.0.rst