← All tasks
pythonhuggingface/datasets #6881Not a task: already works

AttributeError: module 'PIL.Image' has no attribute 'ExifTags'

envgap__huggingface__datasets-6881

01 / FAILURE SIGNATURE

As reported upstream

AttributeError: module 'PIL.Image' has no attribute 'ExifTags'
Not a benchmark task.
  • The project already builds and runs before the fix, so there is nothing to repair.

02 / ENVIRONMENT RECIPE

Base commit
871eabc7b23c27d677bc06ae2cc1ec3a2a04b10f
Manifest
setup.py
Reproduce
Awaiting issue-specific recipe
Run under trace
Awaiting a meaningful runtime command

03 / ORIGINAL ISSUE TEXT

huggingface/datasets #6881 · read the original issue
When trying to load an image dataset in an old Python environment (with Pillow-8.4.0), an error is raised:

```Python traceback

AttributeError: module 'PIL.Image' has no attribute 'ExifTags'

```

The error traceback:

```Python traceback

~/huggingface/datasets/src/datasets/iterable_dataset.py in __iter__(self)

   1391                 # `IterableDataset` automatically fills missing columns with None.

   1392                 # This is done with `_apply_feature_types_on_example`.

-> 1393                 example = _apply_feature_types_on_example(

   1394                     example, self.features, token_per_repo_id=self._token_per_repo_id

   1395                 )



~/huggingface/datasets/src/datasets/iterable_dataset.py in _apply_feature_types_on_example(example, features, token_per_repo_id)

   1080     encoded_example = features.encode_example(example)

   1081     # Decode example for Audio feature, e.g.

-> 1082     decoded_example = features.decode_example(encoded_example, token_per_repo_id=token_per_repo_id)

   1083     return decoded_example

   1084 



~/huggingface/datasets/src/datasets/features/features.py in decode_example(self, example, token_per_repo_id)

   1974 

-> 1975         return {

   1976             column_name: decode_nested_example(feature, value, token_per_repo_id=token_per_repo_id)

   1977             if self._column_requires_decoding[column_name]



~/huggingface/datasets/src/datasets/features/features.py in <dictcomp>(.0)

   1974 

   1975         return {

-> 1976             column_name: decode_nested_example(feature, value, token_per_repo_id=token_per_repo_id)

   1977             if self._column_requires_decoding[column_name]

   1978             else value



~/huggingface/datasets/src/datasets/features/features.py in decode_nested_example(schema, obj, token_per_repo_id)

   1339         # we pass the token to read and decode files from private repositories in streaming mode

   1340         if obj is not None and schema.decode:

-> 1341             return schema.decode_example(obj, token_per_repo_id=token_per_repo_id)

   1342     return obj

   1343 



~/huggingface/datasets/src/datasets/features/image.py in decode_example(self, value, token_per_repo_id)

    187             image = PIL.Image.open(BytesIO(bytes_))

    188         image.load()  # to avoid "Too many open files" errors

--> 189         if image.getexif().get(PIL.Image.ExifTags.Base.Orientation) is not None:

    190             image = PIL.ImageOps.exif_transpose(image)

    191         if self.mode and self.mode != image.mode:



~/huggingface/datasets/venv/lib/python3.9/site-packages/PIL/Image.py in __getattr__(name)

     75                 )

     76                 return categories[name]

---> 77         raise AttributeError(f"module '{__name__}' has no attribute '{name}'")

     78 

     79 



AttributeError: module 'PIL.Image' has no attribute 'ExifTags'

```



### Environment info



Since datasets 2.19.0
Continue on GitHub ↗

04 / LABELS

Labels from the report text only; not yet run

No supported category has been assigned.

Label rules and the text that matched
[]