3333from __future__ import annotations
3434
3535import abc
36+ from collections .abc import Iterable
3637import dataclasses
3738import json
3839import os
3940import posixpath
4041import tempfile
4142import time
42- from typing import Any , Dict , Iterable , List , Optional , Tuple , Union
43+ from typing import Any , Optional
4344
4445from absl import logging
4546from etils import epath
47+ from etils import epy
4648from tensorflow_datasets .core import constants
4749from tensorflow_datasets .core import file_adapters
4850from tensorflow_datasets .core import lazy_imports_lib
5254from tensorflow_datasets .core .features import feature as feature_lib
5355from tensorflow_datasets .core .features import top_level_feature
5456from tensorflow_datasets .core .proto import dataset_info_pb2
55- from tensorflow_datasets .core .utils import file_utils
56- from tensorflow_datasets .core .utils import gcs_utils
5757from tensorflow_datasets .core .utils .lazy_imports_utils import apache_beam as beam
5858from tensorflow_datasets .core .utils .lazy_imports_utils import tensorflow as tf
5959
60- from google .protobuf import json_format
60+ with epy .lazy_imports ():
61+ # pylint: disable=g-import-not-at-top
62+ from tensorflow_datasets .core .utils import file_utils
63+ from tensorflow_datasets .core .utils import gcs_utils
64+
65+ from google .protobuf import json_format
66+ # pylint: enable=g-import-not-at-top
67+
6168
6269# TODO(b/109648354): Remove the "pytype: disable" comment.
63- Nest = Union [ Tuple [ "Nest" , ...], Dict [str , "Nest" ], str ] # pytype: disable=not-supported-yet
64- SupervisedKeysType = Union [ Tuple [ Nest , Nest ], Tuple [Nest , Nest , Nest ] ]
70+ Nest = tuple [ "Nest" , ...] | dict [str , "Nest" ] | str # pytype: disable=not-supported-yet
71+ SupervisedKeysType = tuple [ Nest , Nest ] | tuple [Nest , Nest , Nest ]
6572
6673
6774def dataset_info_path (dataset_info_dir : epath .PathLike ) -> epath .Path :
@@ -108,7 +115,7 @@ class DatasetIdentity:
108115 config_name : str | None = None
109116 config_description : str | None = None
110117 config_tags : list [str ] | None = None
111- release_notes : Dict [str , str ] | None = None
118+ release_notes : dict [str , str ] | None = None
112119
113120 @classmethod
114121 def from_builder (cls , builder ) -> "DatasetIdentity" :
@@ -176,16 +183,16 @@ def __init__(
176183 # LINT.IfChange(dataset_info_args)
177184 self ,
178185 * ,
179- builder : Union [ DatasetIdentity , Any ] ,
180- description : Optional [ str ] = None ,
186+ builder : DatasetIdentity | Any ,
187+ description : str | None = None ,
181188 features : Optional [feature_lib .FeatureConnector ] = None ,
182189 supervised_keys : Optional [SupervisedKeysType ] = None ,
183190 disable_shuffling : bool = False ,
184- homepage : Optional [ str ] = None ,
185- citation : Optional [ str ] = None ,
186- metadata : Optional [ Metadata ] = None ,
187- license : Optional [ str ] = None , # pylint: disable=redefined-builtin
188- redistribution_info : Optional [Dict [str , str ]] = None ,
191+ homepage : str | None = None ,
192+ citation : str | None = None ,
193+ metadata : Metadata | None = None ,
194+ license : str | None = None , # pylint: disable=redefined-builtin
195+ redistribution_info : Optional [dict [str , str ]] = None ,
189196 split_dict : Optional [splits_lib .SplitDict ] = None ,
190197 # LINT.ThenChange(:setstate)
191198 ):
@@ -347,7 +354,7 @@ def config_description(self) -> str | None:
347354 return self ._identity .config_description
348355
349356 @property
350- def config_tags (self ) -> List [str ] | None :
357+ def config_tags (self ) -> list [str ] | None :
351358 return self ._identity .config_tags
352359
353360 @property
@@ -368,7 +375,7 @@ def version(self):
368375 return self ._identity .version
369376
370377 @property
371- def release_notes (self ) -> Optional [ Dict [ str , str ]] :
378+ def release_notes (self ) -> dict [ str , str ] | None :
372379 return self ._identity .release_notes
373380
374381 @property
@@ -412,7 +419,7 @@ def features(self):
412419 return self ._features
413420
414421 @property
415- def metadata (self ) -> Optional [ Metadata ] :
422+ def metadata (self ) -> Metadata | None :
416423 return self ._metadata
417424
418425 @property
@@ -431,14 +438,14 @@ def module_name(self) -> str:
431438 return self ._identity .module_name
432439
433440 @property
434- def file_format (self ) -> Optional [ file_adapters .FileFormat ] :
441+ def file_format (self ) -> file_adapters .FileFormat | None :
435442 if not self .as_proto .file_format :
436443 return None
437444 return file_adapters .FileFormat (self .as_proto .file_format )
438445
439446 def set_file_format (
440447 self ,
441- file_format : Union [ None , str , file_adapters .FileFormat ] ,
448+ file_format : None | str | file_adapters .FileFormat ,
442449 override : bool = False ,
443450 ) -> None :
444451 """Internal function to define the file format.
@@ -716,8 +723,8 @@ def read_from_directory(self, dataset_info_dir: epath.PathLike) -> None:
716723
717724 def add_file_data_source_access (
718725 self ,
719- path : Union [ epath .PathLike , Iterable [epath .PathLike ] ],
720- url : Optional [ str ] = None ,
726+ path : epath .PathLike | Iterable [epath .PathLike ],
727+ url : str | None = None ,
721728 ) -> None :
722729 """Records that the given query was used to generate this dataset.
723730
@@ -743,7 +750,7 @@ def add_file_data_source_access(
743750 def add_url_access (
744751 self ,
745752 url : str ,
746- checksum : Optional [ str ] = None ,
753+ checksum : str | None = None ,
747754 ) -> None :
748755 """Records the URL used to generate this dataset."""
749756 self ._info_proto .data_source_accesses .append (
@@ -768,7 +775,7 @@ def add_sql_data_source_access(
768775 def add_tfds_data_source_access (
769776 self ,
770777 dataset_reference : naming .DatasetReference ,
771- url : Optional [ str ] = None ,
778+ url : str | None = None ,
772779 ) -> None :
773780 """Records that the given query was used to generate this dataset.
774781
0 commit comments