@@ -651,6 +651,9 @@ def update_to(self, b=1, bsize=1, tsize=None):
651651def download_data (dataset_name : str , path : str | None = None , verbose : bool = True ):
652652 """
653653 Download the specified dataset if it is not present, with a progress bar.
654+ The downloaded file is always renamed to 'data.hdf5', regardless of the
655+ filename served by the remote source.
656+
654657 Args:
655658 dataset_name (str): The name of the dataset.
656659 path (str, optional): The path to save the dataset. If None, the default data directory is used.
@@ -661,6 +664,7 @@ def download_data(dataset_name: str, path: str | None = None, verbose: bool = Tr
661664 if path is None
662665 else os .path .abspath (path )
663666 )
667+
664668 if os .path .isfile (data_path ):
665669 if verbose :
666670 print (f"Dataset '{ dataset_name } ' already exists at { data_path } ." )
@@ -679,11 +683,16 @@ def download_data(dataset_name: str, path: str | None = None, verbose: bool = Tr
679683
680684 os .makedirs (os .path .dirname (data_path ), exist_ok = True )
681685
686+ tmp_path = data_path + ".tmp"
687+
682688 print (f"Downloading dataset '{ dataset_name } '..." )
683689 with DownloadProgressBar (
684690 unit = "B" , unit_scale = True , miniters = 1 , desc = f"Downloading { dataset_name } "
685691 ) as t :
686- urllib .request .urlretrieve (url , data_path , reporthook = t .update_to )
692+ urllib .request .urlretrieve (url , tmp_path , reporthook = t .update_to )
693+
694+ os .replace (tmp_path , data_path )
695+
687696 print (f"Dataset '{ dataset_name } ' downloaded successfully." )
688697 if verbose :
689698 print_data_info (data_path )
0 commit comments