Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

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

Đang mở Phù hợp với người mới
#11,245 1 bình luận 0 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 1 ngày

@jabrailkhalil đang làm issue này rồi.

Từ ngày 12/10/2026.

  • #11246 của @jabrailkhalil — đang mở

Đánh giá

Độ khó
2/5
Thời gian dự kiến
1-3 giờ
Mức phù hợp với người mới
82/100
Loại issue
Lỗi
Độ rõ ràng
Đặc tả rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
python, tensorflow
Lĩnh vực
backend, data

Hướng nghiên cứu

Đọc tensorflow_datasets/core/dataset_info.py quanh các dòng 788–792 và kiểm tra cách read_from_directory khôi phục từng trường. Tái hiện lỗi bằng lệnh python -W error::DeprecationWarning trong issue trên một dataset đã chuẩn bị. Issue được giải quyết khi quá trình khôi phục các trường không còn đọc label nếu is_repeated có sẵn và lệnh chạy xong mà không có cảnh báo.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

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.

Ngôn ngữ chính
Python
Star
4.6k
Fork
1.6k
Merge trung bình
9 giờ
Pull request đã merge (30 ngày)
8

Chuẩn bị môi trường

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của tensorflow/datasets

Tất cả issue của tensorflow/datasets

Issue tương tự

Thêm issue về Python

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.