code: def save_data(self, *, data_filter=None, redownload=False, max_threads=None, raise_download_errors=False):
          
          self._preprocess_request(True, False)
          self._execute_data_download(data_filter, redownload, max_threads, raise_download_errors)
docs: Saves data to disk. If ``redownload=True`` then the data is redownloaded using ``max_threads`` workers.
  
          :param data_filter: Used to specify which items will be returned by the method and in which order. E.g. with
              `data_filter=[0, 2, -1]` the method will return only 1st, 3rd and last item. Default filter is ``None``.
          :type data_filter: list(int) or None
          :param redownload: data is redownloaded if ``redownload=True``. Default is ``False``
          :type redownload: bool
          :param max_threads: number of threads to use when downloading data; default is ``max_threads=None`` which
              by default uses the number of processors on the system
          :type max_threads: int
          :param raise_download_errors: If ``True`` any error in download process should be raised as
              ``DownloadFailedException``. If ``False`` failed downloads will only raise warnings.
          :type raise_download_errors: bool