tfds-nightly 4.9.9.dev202507220045__py3-none-any.whl → 4.9.9.dev202507240045__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -134,10 +134,11 @@ def datatype_converter(
134
134
  np.float32.
135
135
 
136
136
  Returns:
137
- Converted datatype for TFDS.
137
+ Converted datatype for TFDS, or None when a Field does not specify a type.
138
138
 
139
139
  Raises:
140
- NotImplementedError
140
+ NotImplementedError when the feature is not supported yet, or ValueError
141
+ when a Field is malformed.
141
142
  """
142
143
  if field.is_enumeration:
143
144
  raise NotImplementedError('Not implemented yet.')
@@ -151,7 +152,7 @@ def datatype_converter(
151
152
  field_data_type = field.data_type
152
153
 
153
154
  if not field_data_type:
154
- # Fields with sub fields are of type None
155
+ # Fields with sub fields are of type None.
155
156
  if field.sub_fields:
156
157
  feature = features_dict.FeaturesDict(
157
158
  {
@@ -170,8 +171,8 @@ def datatype_converter(
170
171
  feature = dtype_mapping[field_data_type]
171
172
  elif enp.lazy.is_np_dtype(field_data_type):
172
173
  feature = field_data_type
173
- # We return a text feature for mlc.DataType.DATE and mlc.DataType.TIME
174
- # features.
174
+ # We return a text feature for date-time features (mlc.DataType.DATE,
175
+ # mlc.DataType.DATETIME, and mlc.DataType.TIME).
175
176
  elif field_data_type == pd.Timestamp or field_data_type == datetime.time:
176
177
  feature = text_feature.Text(doc=field.description)
177
178
  elif field_data_type == mlc.DataType.IMAGE_OBJECT:
@@ -195,7 +196,9 @@ def datatype_converter(
195
196
  doc=field.description, sample_rate=field.source.sampling_rate
196
197
  )
197
198
  else:
198
- raise ValueError(f'Unknown data type: {field_data_type}.')
199
+ raise ValueError(
200
+ f'Unknown data type: {field_data_type} for field {field.id}.'
201
+ )
199
202
 
200
203
  if feature and field.is_array:
201
204
  feature = array_datatype_converter(
@@ -211,7 +214,7 @@ def datatype_converter(
211
214
  return feature
212
215
 
213
216
 
214
- def _extract_license(license_: Any) -> str | None:
217
+ def _extract_license(license_: Any) -> str:
215
218
  """Extracts the full terms of a license as a string.
216
219
 
217
220
  In case the license is a CreativeWork, we join the name, description and url
@@ -231,12 +234,13 @@ def _extract_license(license_: Any) -> str | None:
231
234
  fields = [field for field in possible_fields if field]
232
235
  return '[' + ']['.join(fields) + ']'
233
236
  raise ValueError(
234
- f'license_ should be mlc.CreativeWork | str. Got {type(license_)}'
237
+ 'license_ should be mlc.CreativeWork | str. Got'
238
+ f' {type(license_)}: {license_}.'
235
239
  )
236
240
 
237
241
 
238
242
  def _get_license(metadata: Any) -> str | None:
239
- """Gets the license from the metadata."""
243
+ """Gets the license from the metadata (if any) else returns None."""
240
244
  if not isinstance(metadata, mlc.Metadata):
241
245
  raise ValueError(f'metadata should be mlc.Metadata. Got {type(metadata)}')
242
246
  licenses = metadata.license
@@ -32,6 +32,8 @@ from tensorflow_datasets.core.utils.lazy_imports_utils import mlcroissant as mlc
32
32
 
33
33
  FileFormat = file_adapters.FileFormat
34
34
 
35
+ DUMMY_DESCRIPTION = "Dummy description."
36
+
35
37
 
36
38
  DUMMY_ENTRIES = [
37
39
  {
@@ -51,8 +53,30 @@ DUMMY_ENTRIES_WITH_CONVERTED_NONE_VALUES = [
51
53
  ]
52
54
 
53
55
 
56
+ def _create_mlc_field(
57
+ data_types: mlc.DataType | list[mlc.DataType],
58
+ description: str,
59
+ is_array: bool = False,
60
+ array_shape: str | None = None,
61
+ repeated: bool = False,
62
+ source: mlc.Source | None = None,
63
+ sub_fields: list[mlc.Field] | None = None,
64
+ ) -> mlc.Field:
65
+ field = mlc.Field(
66
+ data_types=data_types,
67
+ description=description,
68
+ is_array=is_array,
69
+ array_shape=array_shape,
70
+ repeated=repeated,
71
+ sub_fields=sub_fields,
72
+ )
73
+ if source is not None:
74
+ field.source = source
75
+ return field
76
+
77
+
54
78
  @pytest.mark.parametrize(
55
- ["field", "expected_feature", "int_dtype", "float_dtype"],
79
+ ["mlc_field", "expected_feature", "int_dtype", "float_dtype"],
56
80
  [
57
81
  (
58
82
  mlc.Field(
@@ -121,18 +145,18 @@ DUMMY_ENTRIES_WITH_CONVERTED_NONE_VALUES = [
121
145
  ],
122
146
  )
123
147
  def test_simple_datatype_converter(
124
- field, expected_feature, int_dtype, float_dtype
148
+ mlc_field, expected_feature, int_dtype, float_dtype
125
149
  ):
126
150
  actual_feature = croissant_builder.datatype_converter(
127
- field,
151
+ mlc_field,
128
152
  int_dtype=int_dtype or np.int64,
129
153
  float_dtype=float_dtype or np.float32,
130
154
  )
131
155
  assert actual_feature == expected_feature
132
156
 
133
157
 
134
- def test_bbox_datatype_converter():
135
- field = mlc.Field(
158
+ def test_datatype_converter_bbox():
159
+ field = _create_mlc_field(
136
160
  data_types=mlc.DataType.BOUNDING_BOX,
137
161
  description="Bounding box feature",
138
162
  source=mlc.Source(format="XYWH"),
@@ -142,8 +166,8 @@ def test_bbox_datatype_converter():
142
166
  assert actual_feature.bbox_format == bb_utils.BBoxFormat.XYWH
143
167
 
144
168
 
145
- def test_bbox_datatype_converter_with_invalid_format():
146
- field = mlc.Field(
169
+ def test_datatype_converter_bbox_with_invalid_format():
170
+ field = _create_mlc_field(
147
171
  data_types=mlc.DataType.BOUNDING_BOX,
148
172
  description="Bounding box feature",
149
173
  source=mlc.Source(format="InvalidFormat"),
@@ -153,7 +177,7 @@ def test_bbox_datatype_converter_with_invalid_format():
153
177
 
154
178
 
155
179
  @pytest.mark.parametrize(
156
- ["field", "feature_type", "subfield_types"],
180
+ ["mlc_field", "feature_type", "subfield_types"],
157
181
  [
158
182
  (
159
183
  mlc.Field(data_types=mlc.DataType.TEXT, description="Text feature"),
@@ -165,6 +189,13 @@ def test_bbox_datatype_converter_with_invalid_format():
165
189
  text_feature.Text,
166
190
  None,
167
191
  ),
192
+ (
193
+ mlc.Field(
194
+ data_types=mlc.DataType.DATETIME, description="DateTime feature"
195
+ ),
196
+ text_feature.Text,
197
+ None,
198
+ ),
168
199
  (
169
200
  mlc.Field(data_types=mlc.DataType.TIME, description="Time feature"),
170
201
  text_feature.Text,
@@ -212,79 +243,153 @@ def test_bbox_datatype_converter_with_invalid_format():
212
243
  ),
213
244
  ],
214
245
  )
215
- def test_complex_datatype_converter(field, feature_type, subfield_types):
216
- actual_feature = croissant_builder.datatype_converter(field)
217
- assert actual_feature.doc.desc == field.description
246
+ def test_datatype_converter_complex(mlc_field, feature_type, subfield_types):
247
+ actual_feature = croissant_builder.datatype_converter(mlc_field)
248
+ assert actual_feature.doc.desc == mlc_field.description
218
249
  assert isinstance(actual_feature, feature_type)
219
- if subfield_types:
250
+ if subfield_types is not None:
220
251
  for feature_name in actual_feature.keys():
221
252
  assert isinstance(
222
253
  actual_feature[feature_name], subfield_types[feature_name]
223
254
  )
224
255
 
225
256
 
226
- def test_multidimensional_datatype_converter():
257
+ def test_datatype_converter_none():
227
258
  field = mlc.Field(
259
+ name="my_field", id="my_field", description="Field with empty data type."
260
+ )
261
+ assert croissant_builder.datatype_converter(field) is None
262
+
263
+
264
+ def test_multidimensional_datatype_converter():
265
+ mlc_field = _create_mlc_field(
228
266
  data_types=mlc.DataType.TEXT,
229
267
  description="Text feature",
230
268
  is_array=True,
231
269
  array_shape="2,2",
232
270
  )
233
- actual_feature = croissant_builder.datatype_converter(field)
271
+ actual_feature = croissant_builder.datatype_converter(mlc_field)
234
272
  assert isinstance(actual_feature, tensor_feature.Tensor)
235
273
  assert actual_feature.shape == (2, 2)
236
274
  assert actual_feature.dtype == np.str_
237
275
 
238
276
 
239
277
  def test_multidimensional_datatype_converter_image_object():
240
- field = mlc.Field(
278
+ mlc_field = _create_mlc_field(
241
279
  data_types=mlc.DataType.IMAGE_OBJECT,
242
280
  description="Text feature",
243
281
  is_array=True,
244
282
  array_shape="2,2",
245
283
  )
246
- actual_feature = croissant_builder.datatype_converter(field)
284
+ actual_feature = croissant_builder.datatype_converter(mlc_field)
247
285
  assert isinstance(actual_feature, sequence_feature.Sequence)
248
286
  assert isinstance(actual_feature.feature, sequence_feature.Sequence)
249
287
  assert isinstance(actual_feature.feature.feature, image_feature.Image)
250
288
 
251
289
 
252
290
  def test_multidimensional_datatype_converter_plain_list():
253
- field = mlc.Field(
291
+ mlc_field = _create_mlc_field(
254
292
  data_types=mlc.DataType.TEXT,
255
293
  description="Text feature",
256
294
  is_array=True,
257
295
  array_shape="-1",
258
296
  )
259
- actual_feature = croissant_builder.datatype_converter(field)
297
+ actual_feature = croissant_builder.datatype_converter(mlc_field)
260
298
  assert isinstance(actual_feature, sequence_feature.Sequence)
261
299
  assert isinstance(actual_feature.feature, text_feature.Text)
262
300
 
263
301
 
264
302
  def test_multidimensional_datatype_converter_unknown_shape():
265
- field = mlc.Field(
303
+ mlc_field = _create_mlc_field(
266
304
  data_types=mlc.DataType.TEXT,
267
305
  description="Text feature",
268
306
  is_array=True,
269
307
  array_shape="-1,2",
270
308
  )
271
- actual_feature = croissant_builder.datatype_converter(field)
309
+ actual_feature = croissant_builder.datatype_converter(mlc_field)
272
310
  assert isinstance(actual_feature, sequence_feature.Sequence)
273
311
  assert isinstance(actual_feature.feature, sequence_feature.Sequence)
274
312
  assert isinstance(actual_feature.feature.feature, text_feature.Text)
275
313
 
276
314
 
277
315
  def test_sequence_feature_datatype_converter():
278
- field = mlc.Field(
316
+ mlc_field = _create_mlc_field(
279
317
  data_types=mlc.DataType.TEXT,
280
318
  description="Text feature",
281
319
  repeated=True,
282
320
  )
283
- actual_feature = croissant_builder.datatype_converter(field)
321
+ actual_feature = croissant_builder.datatype_converter(mlc_field)
284
322
  assert isinstance(actual_feature, sequence_feature.Sequence)
285
323
  assert isinstance(actual_feature.feature, text_feature.Text)
286
324
 
287
325
 
326
+ @pytest.mark.parametrize(
327
+ ["license_", "expected_license"],
328
+ [
329
+ ("MIT", "MIT"),
330
+ (
331
+ mlc.CreativeWork(
332
+ name="Creative Commons",
333
+ description="Attribution 4.0 International",
334
+ url="https://creativecommons.org/licenses/by/4.0/",
335
+ ),
336
+ (
337
+ "[Creative Commons][Attribution 4.0"
338
+ " International][https://creativecommons.org/licenses/by/4.0/]"
339
+ ),
340
+ ),
341
+ (
342
+ mlc.CreativeWork(
343
+ name="Creative Commons",
344
+ ),
345
+ "[Creative Commons]",
346
+ ),
347
+ (
348
+ mlc.CreativeWork(
349
+ description="Attribution 4.0 International",
350
+ ),
351
+ "[Attribution 4.0 International]",
352
+ ),
353
+ (
354
+ mlc.CreativeWork(
355
+ url="https://creativecommons.org/licenses/by/4.0/",
356
+ ),
357
+ "[https://creativecommons.org/licenses/by/4.0/]",
358
+ ),
359
+ (
360
+ mlc.CreativeWork(),
361
+ "[]",
362
+ ),
363
+ ],
364
+ )
365
+ def test_extract_license(license_, expected_license):
366
+ actual_license = croissant_builder._extract_license(license_)
367
+ assert actual_license == expected_license
368
+
369
+
370
+ def test_extract_license_with_invalid_input():
371
+ with pytest.raises(
372
+ ValueError, match="^license_ should be mlc.CreativeWork | str"
373
+ ):
374
+ croissant_builder._extract_license(123)
375
+
376
+
377
+ def test_get_license():
378
+ metadata = mlc.Metadata(license=["MIT", "Apache 2.0"])
379
+ actual_license = croissant_builder._get_license(metadata)
380
+ assert actual_license == "MIT, Apache 2.0"
381
+
382
+
383
+ def test_get_license_with_invalid_input():
384
+ with pytest.raises(ValueError, match="metadata should be mlc.Metadata"):
385
+ croissant_builder._get_license(123)
386
+
387
+
388
+ def test_get_license_with_empty_license():
389
+ metadata = mlc.Metadata(license=[])
390
+ assert croissant_builder._get_license(metadata) is None
391
+
392
+
288
393
  def test_version_converter(tmp_path):
289
394
  with testing.dummy_croissant_file(version="1.0") as croissant_file:
290
395
  builder = croissant_builder.CroissantBuilder(
@@ -330,7 +435,7 @@ def test_croissant_builder(crs_builder):
330
435
  crs_builder._info().citation
331
436
  == "@article{dummyarticle, title={title}, author={author}, year={2020}}"
332
437
  )
333
- assert crs_builder._info().description == "Dummy description."
438
+ assert crs_builder._info().description == DUMMY_DESCRIPTION
334
439
  assert crs_builder._info().homepage == "https://dummy_url"
335
440
  assert crs_builder._info().redistribution_info.license == "Public"
336
441
  # One `split` and one `jsonl` recordset.
@@ -119,7 +119,7 @@ def even_splits(
119
119
  not evenly divisible by `n`. If `False`, examples are distributed evenly
120
120
  across subsplits, starting by the first. For example, if there is 11
121
121
  examples with `n=3`, splits will contain `[4, 4, 3]` examples
122
- respectivelly.
122
+ respectively.
123
123
 
124
124
  Returns:
125
125
  The list of subsplits. Those splits can be combined together (with
@@ -169,7 +169,7 @@ def split_for_jax_process(
169
169
  not evenly divisible by `n`. If `False`, examples are distributed evenly
170
170
  across subsplits, starting by the first. For example, if there is 11
171
171
  examples with `n=3`, splits will contain `[4, 4, 3]` examples
172
- respectivelly.
172
+ respectively.
173
173
 
174
174
  Returns:
175
175
  subsplit: The sub-split of the given `split` for the current
@@ -191,7 +191,7 @@ class DatasetBuilderTestCase(
191
191
  # The `dl_manager.download` and `dl_manager.download_and_extract` are
192
192
  # patched to record the urls in `_download_urls`.
193
193
  # Calling `dl_manager.download_checksums` stop the url
194
- # registration (as checksums are stored remotelly)
194
+ # registration (as checksums are stored remotely)
195
195
  # `_test_checksums` validates the recorded urls.
196
196
  self._download_urls = set()
197
197
  self._stop_record_download = False
@@ -291,7 +291,7 @@ class DatasetBuilderTestCase(
291
291
  def _add_url(self, url_or_urls):
292
292
  if self._stop_record_download:
293
293
  # Stop record the checksums if dl_manager.download_checksums has been
294
- # called (as checksums may be stored remotelly)
294
+ # called (as checksums may be stored remotely).
295
295
  return
296
296
  if isinstance(url_or_urls, download.resource.Resource):
297
297
  self._download_urls.add(url_or_urls.url)
@@ -147,7 +147,7 @@ class MockFs(object):
147
147
  with self._mock() as m:
148
148
  yield m
149
149
  self._tmp_dir = None
150
- # TODO(epot): recursivelly record all
150
+ # TODO(epot): recursively record all.
151
151
 
152
152
  def _to_tmp(self, p, *, with_state: bool = False):
153
153
  """Normalize the path by returning `tmp_path / p`."""
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: tfds-nightly
3
- Version: 4.9.9.dev202507220045
3
+ Version: 4.9.9.dev202507240045
4
4
  Summary: tensorflow/datasets is a library of datasets ready to use with TensorFlow.
5
5
  Home-page: https://github.com/tensorflow/datasets
6
6
  Download-URL: https://github.com/tensorflow/datasets/tags
@@ -104,7 +104,7 @@ tensorflow_datasets/core/split_builder.py,sha256=cpz-YowMhmiZZVp7eQPNrh23KvE0-Ef
104
104
  tensorflow_datasets/core/split_builder_test.py,sha256=kBUVUnQQB_c82AhgjhK3hoYfiAqLt7tDFTzsvZRGQCw,3223
105
105
  tensorflow_datasets/core/splits.py,sha256=O3jK4Dalp4tEPeZ9AHbkpW1UkJ6uv5m4YRu2x_ZZTJ4,29418
106
106
  tensorflow_datasets/core/splits_test.py,sha256=KrM82r0YsJRTGfpYUCkBxiGDC7BjZFcTvJ-Hbo6HwF0,24987
107
- tensorflow_datasets/core/subsplits_utils.py,sha256=BPHVPAvHlqt4d3HUr4J2Znn8G63pXLPQ29TBi484MOE,6127
107
+ tensorflow_datasets/core/subsplits_utils.py,sha256=6mVCr-QNZfNgX0Ka_htsqmr-JgFXJXJ7IFfl1ytCQio,6125
108
108
  tensorflow_datasets/core/subsplits_utils_test.py,sha256=TIRLtfaf2n38pByhpqYTXEEvs8hrWe2eXk9RFdBMrFQ,5159
109
109
  tensorflow_datasets/core/tf_compat.py,sha256=qdZUtaO9FsZUds7Wf0w0MoRydPPRsuZ0_8ebRJg19gg,1820
110
110
  tensorflow_datasets/core/units.py,sha256=m3ht8oM8wr6oTU3tCbKOj1yaPyXn1MCu7dUjzw0LrPY,1975
@@ -141,8 +141,8 @@ tensorflow_datasets/core/data_sources/python_test.py,sha256=O3yqMPx40JlHN0uFfZPN
141
141
  tensorflow_datasets/core/dataset_builders/__init__.py,sha256=StTA3euephqDZdpTzJQgfWNqB5inZosrAhaWg2BOeio,1945
142
142
  tensorflow_datasets/core/dataset_builders/adhoc_builder.py,sha256=QVE8wWGPOgILPTC27Q28QZ3KIi5N64OGOfKpTq4W4_0,9216
143
143
  tensorflow_datasets/core/dataset_builders/adhoc_builder_test.py,sha256=yhRwrznK78MvHeWGRggnMTiyx_SlR1z30iD5VU3Gweo,13096
144
- tensorflow_datasets/core/dataset_builders/croissant_builder.py,sha256=0lVl7ZP8tc1zUNZAVoUCw9jV_RAo1O9Mc2iFM21WVSM,16674
145
- tensorflow_datasets/core/dataset_builders/croissant_builder_test.py,sha256=4jFx88qcAi6mTU1fk_Kj9PpEPdhFEAYvZQFDD-AK8gw,11758
144
+ tensorflow_datasets/core/dataset_builders/croissant_builder.py,sha256=sWSjouj98I2yCUtr8KbmHtR_dp8tgnbBA7BvBKZeI1Q,16918
145
+ tensorflow_datasets/core/dataset_builders/croissant_builder_test.py,sha256=AgNmnmnHOAhsdIzuwN7EugeoDe83_8G_95WSmDXJIIA,14803
146
146
  tensorflow_datasets/core/dataset_builders/huggingface_dataset_builder.py,sha256=Loq3qeGk1Ias-d2oT_dK47BRNgTA4LKJchNGh7aA4a0,18313
147
147
  tensorflow_datasets/core/dataset_builders/huggingface_dataset_builder_test.py,sha256=6N3DLsry9LhDqhpleaoXrrhaGiLJMBgUlwDnAji-1fI,4389
148
148
  tensorflow_datasets/core/dataset_builders/view_builder.py,sha256=eaCtjN5Vg4rK8JD3auA4PhF9mjH5HvQ9dslDX8LbwyM,11907
@@ -2122,7 +2122,7 @@ tensorflow_datasets/summarization/media_sum/media_sum.py,sha256=CIhR_cfQb1aEfu9B
2122
2122
  tensorflow_datasets/summarization/summscreen/__init__.py,sha256=ADxohrpUPJjug4r2kGCCJEWZzVD4s2S0smqLfjkc8YY,718
2123
2123
  tensorflow_datasets/summarization/summscreen/summscreen.py,sha256=DfwGr3vsRhOC62ODJ1Sp7-v219bPjJ93KK043YReV7I,884
2124
2124
  tensorflow_datasets/testing/__init__.py,sha256=aSwY_kciK-EZXp1D_JRkuuCJwtbFljGZ72c9YNB6yfE,6049
2125
- tensorflow_datasets/testing/dataset_builder_testing.py,sha256=Ers73TcGgVjjLWvpfuKmr34QSBl6QB3Z9qvFPzSHjSE,25094
2125
+ tensorflow_datasets/testing/dataset_builder_testing.py,sha256=ziE2twrc1-LQExGp4g5Nbq9hlbFow3VdX8RTC83R6bM,25093
2126
2126
  tensorflow_datasets/testing/dataset_builder_testing_test.py,sha256=Nf7Ykg5bY5o9ZatQKrRJhr-qGTtNKle4aZph4rt72i4,1283
2127
2127
  tensorflow_datasets/testing/dataset_collection_builder_testing.py,sha256=tUv2l53rc9GEo4sWvM9OP9r-Ze54dcDakeLQBMS7yos,4825
2128
2128
  tensorflow_datasets/testing/dataset_collection_builder_testing_test.py,sha256=Dw5tACaDjVt9CZi0V84tMAh2JJexrRwWF1N3DID1Mbs,1155
@@ -2132,7 +2132,7 @@ tensorflow_datasets/testing/mocking.py,sha256=4mIq0ngxfs3w0hFlosGOSTp-mAQVfBfoFw
2132
2132
  tensorflow_datasets/testing/mocking_test.py,sha256=9DMkxcQw_dZTKULNHiKv91e0VcBsUTa6FIhUOLvJKls,13796
2133
2133
  tensorflow_datasets/testing/test_case.py,sha256=_H_M3pp6Vp3dbtPyVy5Um7X8S4V4EKPLrao1mbS2IdU,2554
2134
2134
  tensorflow_datasets/testing/test_case_in_context.py,sha256=7YrdTI_rqR01Q-ToVqewIm1OKDwvxIidPhaffYmjP1E,1872
2135
- tensorflow_datasets/testing/test_utils.py,sha256=wFWG9jryWFA3NnNBrEva4u6HWRu9yfQbXQdYpHkDNKw,26736
2135
+ tensorflow_datasets/testing/test_utils.py,sha256=sQTTXa8YHPXml514vayxiu_E6qHFQ_1Maizy3OR0J8Y,26736
2136
2136
  tensorflow_datasets/testing/test_utils_test.py,sha256=nL2niozCO5Gh4cWPWbDW5_w3w-mHRYZEQmmfej2fpjY,9576
2137
2137
  tensorflow_datasets/testing/version_test.py,sha256=fNMSX1FSNs_66MHcRGAWzoPZWJ-sAvmc-rceKXGK-uM,2791
2138
2138
  tensorflow_datasets/text/__init__.py,sha256=_PtJTw2LQqgxFNVeBCEXrLGF2qg5NNOiXTW9oKZR_ZA,5319
@@ -2468,10 +2468,10 @@ tensorflow_datasets/vision_language/wit/wit_test.py,sha256=PXS8DMNW-MDrT2p5oy4Ic
2468
2468
  tensorflow_datasets/vision_language/wit_kaggle/__init__.py,sha256=vGwSGeM8WE4Q-l0-eEE1sBojmk6YT0l1OO60AWa4Q40,719
2469
2469
  tensorflow_datasets/vision_language/wit_kaggle/wit_kaggle.py,sha256=q-vX_FBzIwsFxL4sY9vuyQ3UQD2PLM4yhUR4U6l-qao,16903
2470
2470
  tensorflow_datasets/vision_language/wit_kaggle/wit_kaggle_test.py,sha256=ZymHT1NkmD-pUnh3BmM3_g30c5afsWYnmqDD9dVyDSA,1778
2471
- tfds_nightly-4.9.9.dev202507220045.dist-info/licenses/AUTHORS,sha256=nvBG4WwfgjuOu1oZkuQKw9kg7X6rve679ObS-YDDmXg,309
2472
- tfds_nightly-4.9.9.dev202507220045.dist-info/licenses/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
2473
- tfds_nightly-4.9.9.dev202507220045.dist-info/METADATA,sha256=fjPYKkMek2RLp_EgZpG6zzwuTw74Pz-VNaNeZuCGScc,11694
2474
- tfds_nightly-4.9.9.dev202507220045.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
2475
- tfds_nightly-4.9.9.dev202507220045.dist-info/entry_points.txt,sha256=eHEL7nF5y1uCY2FgkuYIdE062epJXlAQTSdq89px4p4,73
2476
- tfds_nightly-4.9.9.dev202507220045.dist-info/top_level.txt,sha256=bAevmk9209s_oxVZVlN6hSDIVS423qrMQvmcWSvW4do,20
2477
- tfds_nightly-4.9.9.dev202507220045.dist-info/RECORD,,
2471
+ tfds_nightly-4.9.9.dev202507240045.dist-info/licenses/AUTHORS,sha256=nvBG4WwfgjuOu1oZkuQKw9kg7X6rve679ObS-YDDmXg,309
2472
+ tfds_nightly-4.9.9.dev202507240045.dist-info/licenses/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
2473
+ tfds_nightly-4.9.9.dev202507240045.dist-info/METADATA,sha256=i6hLozWdLo7f5LL_H3jd_y2Hx-nZ0xZ6YPYGelS2jXM,11694
2474
+ tfds_nightly-4.9.9.dev202507240045.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
2475
+ tfds_nightly-4.9.9.dev202507240045.dist-info/entry_points.txt,sha256=eHEL7nF5y1uCY2FgkuYIdE062epJXlAQTSdq89px4p4,73
2476
+ tfds_nightly-4.9.9.dev202507240045.dist-info/top_level.txt,sha256=bAevmk9209s_oxVZVlN6hSDIVS423qrMQvmcWSvW4do,20
2477
+ tfds_nightly-4.9.9.dev202507240045.dist-info/RECORD,,