Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

DatasetInfo.read_from_directory reads the deprecated FieldDescriptor.label eagerly, warning on every open

Abierto Apto para principiantes
#11,245 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

@jabrailkhalil ya está trabajando en esto.

Desde el 12/10/2026.

  • #11246 de @jabrailkhalil — abierto

Evaluación

Dificultad
2/5
Tiempo estimado
1-3 horas
Aptitud para principiantes
82/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
python, tensorflow
Área
backend, data

Línea de trabajo

Lee tensorflow_datasets/core/dataset_info.py alrededor de las líneas 788–792 y comprueba cómo read_from_directory restaura cada campo. Reproduce el problema con el comando python -W error::DeprecationWarning del issue sobre un dataset preparado. El issue queda resuelto cuando, al restaurar los campos, ya no se lee label si is_repeated está disponible y el comando termina sin la advertencia.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

DatasetInfo.read_from_directory evaluates the deprecated protobuf label fallback eagerly on every field it restores, so every open of a prepared dataset emits a protobuf DeprecationWarning (and fails under -W error), even on protobuf versions that provide is_repeated.

tensorflow_datasets/core/dataset_info.py (master, and 4.9.10, lines ~788-792):

is_repeated = getattr(
    field,
    "is_repeated",
    getattr(field, "label", None) == getattr(field, "LABEL_REPEATED", 3),
)

The third argument to getattr is evaluated before getattr runs, so field.label is read even when field.is_repeated exists. With protobuf releases that deprecate FieldDescriptor.label, this warns once per restored field:

DeprecationWarning: label() is deprecated. Use is_required() or is_repeated() instead.

Suggested fix: evaluate the fallback only when is_repeated is missing, e.g.

if hasattr(field, "is_repeated"):
  is_repeated = field.is_repeated
else:
  is_repeated = field.label == field.LABEL_REPEATED

Reproduction: with tensorflow-datasets 4.9.10 and a current protobuf, python -W error::DeprecationWarning -c "import tensorflow_datasets as tfds; tfds.builder('mnist', data_dir=<a prepared dir>).info" raises from dataset_info.py:791.

Lenguaje dominante
Python
Estrellas
4.6k
Forks
1.6k
Merge medio
9 h
PR fusionados (30 d)
8

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de tensorflow/datasets

Todos los issues de tensorflow/datasets

Issues similares

Más issues de Python

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.