DatasetInfo.read_from_directory reads the deprecated FieldDescriptor.label eagerly, warning on every open
メンテナーはふだん 1 日以内に返信
評価
- 難易度
- 2/5
- 見積もり時間
- 1〜3時間
- 初心者へのやさしさ
- 82/100
- issue の種類
- バグ
- 明瞭さ
- 明確に書かれている
- 活発さ
- 活発
- 技術スタック
- python, tensorflow
調査の方向性
tensorflow_datasets/core/dataset_info.pyの788~792行付近を読み、read_from_directoryが各フィールドをどのように復元するか確認してください。用意したデータセットに対して、issueにあるコマンドpython -W error::DeprecationWarningで再現してください。フィールドの復元時に、is_repeatedが利用可能であれば非推奨のlabelを読み取らなくなり、コマンドが警告なしで完了すれば、issueは解決です。
索引モデルが issue の本文から書いたものです。
説明
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.
- 主要言語
- Python
- スター
- 4.6k
- フォーク
- 1.6k
- 平均マージ
- 9時間
- マージ済み PR(30日)
- 8
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートあり
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
tensorflow/datasets のほかの issue
-
required dependency on importlib_resources missing対応中かも @ArS377 が 84 日前に担当しました。 オープンbug
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
tensorflow/datasets#11212 · コメント 2 件 · リアクション 1 件 ·
メンテナーはふだん 1 日以内に返信
-
tfds.features.Audio eagerly imports TensorFlow in _AudioDecoder.__init__, breaking TensorFlow-less usage対応中かも @raashish1601 が 10 日前に担当しました。 オープン
難易度 3/5 1〜2日 初心者へのやさしさ 76/100
tensorflow/datasets#11233 ·
メンテナーはふだん 1 日以内に返信
-
dataset request
難易度 4/5 3〜5日 初心者へのやさしさ 20/100
tensorflow/datasets#11228 ·
メンテナーはふだん 1 日以内に返信
-
QM9 download links are broken対応中かも @mylonasc が 122 日前に担当しました。 オープンbug
難易度 2/5 1〜3時間 初心者へのやさしさ 55/100
tensorflow/datasets#11210 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
難易度 5/5 1週間以上 初心者へのやさしさ 1/100
tensorflow/datasets#11196 ·
メンテナーはふだん 1 日以内に返信
tensorflow/datasets の issue をすべて見る
似ている issue
-
bot-triaged module: LrScheduler module: optimizer triaged
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
メンテナーはふだん 1 日以内に返信
-
documentation glm5 llm-model
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
vllm-project/vllm-ascend#19062 ·
メンテナーはふだん 1 日以内に返信
-
author-page correction
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
acl-org/acl-anthology#10496 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
Issue Type: Bug Report
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
celery/celery#10875 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
enhancement good first issue
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
SasanLabs/VulnerableApp#836 ·
メンテナーはふだん 1 日以内に返信