class_docstr: Class that downloads a dataset and caches it locally.
  Assumes that the file can be downloaded (i.e. publicly available via a URI)
docstr: Downloads the dataset in the root_path directory
  
  Raises
  -------
  DatasetLoadingException
      if downloading or writing the file to disk fails
  
  Returns
  -------
docstr_tok: ["Downloads","the","dataset","in","the","root_path","directory","Raises","--","--","--","-","DatasetLoadingException","if","downloading","or","writing","the","file","to","disk","fails","Returns","--","--","--","-"]
code: def _download_dataset(self):
      """
      Downloads the dataset in the root_path directory
  
      Raises
      -------
      DatasetLoadingException
          if downloading or writing the file to disk fails
  
      Returns
      -------
      """
      if self._metadata.pre_process_zipped_csv_fn:
          logger.warning(
              "Loading a CSV file does not use the pre_process_zipped_csv_fn"
          )
      os.makedirs(self._root_path, exist_ok=True)
      try:
          request = requests.get(self._metadata.uri)
          with open(self._get_path_dataset(), "wb") as f:
              f.write(request.content)
      except Exception as e:
          raise DatasetLoadingException(
              "Could not download the dataset. Reason:" + e.__repr__()
          ) from None
  
      if self._metadata.pre_process_csv_fn is not None:
          self._metadata.pre_process_csv_fn(self._get_path_dataset())
  
imports: import hashlib
  import os
  import tempfile
  import zipfile
  from abc import ABC, abstractmethod
  from dataclasses import dataclass
  from pathlib import Path
  from typing import Callable, List, Optional, Union
  import pandas
  import requests
  from darts import TimeSeries
  from darts.logging import get_logger
label_desc: Use image node_id 4 for calling the DatasetLoader obj's underlying member method code with example usage: obj._download_dataset() without return types