class_docstr: Base class for downloading sample datasets.
  
  This class is used by inherited classes for each specific dataset, providing basic functionality to
  download a dataset from a URL.
  
  The default download path of ~/stellargraph-datasets can be changed by setting the STELLARGRAPH_DATASETS_PATH environment variable,
  and each dataset will be downloaded to a subdirectory within this path.
class_docstr_tok: ["Base","class","for","downloading","sample","datasets",".","This","class","is","used","by","inherited","classes","for","each","specific","dataset",",","providing","basic","functionality","to","download","a","dataset","from","a","URL",".","The","default","download","path","of","~\/stellargraph-datasets","can","be","changed","by","setting","the","STELLARGRAPH_DATASETS_PATH","environment","variable",",","and","each","dataset","will","be","downloaded","to","a","subdirectory","within","this","path","."]
docstr: Used to set class variables during the class definition of derived classes and generate customised docs.
  NOTE: this is not compatible with python's ABC abstract base class, so this class derives from object.
docstr_tok: ["Used","to","set","class","variables","during","the","class","definition","of","derived","classes","and","generate","customised","docs",".","NOTE",":","this","is","not","compatible","with","python","'s","ABC","abstract","base","class",",","so","this","class","derives","from","object","."]
code: def __init_subclass__(
      cls,
      *,
      name: str,
      directory_name: str,
      url: str,
      url_archive_format: Optional[str],
      url_archive_contains_directory: bool = True,
      expected_files: List[str],
      description: str,
      source: str,
      data_subdirectory_name: Optional[str] = None,
      **kwargs: Any,
  ) -> None:
      """Used to set class variables during the class definition of derived classes and generate customised docs.
      NOTE: this is not compatible with python's ABC abstract base class, so this class derives from object.
      """
      cls.name = name
      cls.directory_name = directory_name
      cls.url = url
      cls.url_archive_format = url_archive_format
      cls.url_archive_contains_directory = (
          url_archive_contains_directory
      )
      cls.expected_files = expected_files
      cls.description = description
      cls.source = source
      cls.data_subdirectory_name = data_subdirectory_name
  
      if url_archive_format is None and len(expected_files) != 1:
          raise ValueError(
              "url_archive_format is None, which requires a single expected_file, found: {expected_files!r}"
          )
  
      # auto generate documentation
      if cls.__doc__ is not None:
          raise ValueError(
              "DatasetLoader docs are automatically generated and should be empty"
          )
      cls.__doc__ = f"""\
  {cls.description}
  
  .. seealso::
  
     For more information about loading data for graph machine learning:
  
     - :class:`.StellarGraph`
     - `Examples of loading data <https://stellargraph.readthedocs.io/en/stable/demos/basics/index.html>`__
  
     The source of this dataset: {cls.source}\
  """
  
      super().__init_subclass__(**kwargs)
  
file_path: stellargraph/stellargraph/datasets/dataset_loader.py
imports: import os
  import logging
  from shutil import unpack_archive, move
  from urllib.request import urlretrieve
  from typing import List, Optional, Any
  from urllib.error import URLError
label_desc: Use image node_id 1 for calling the DatasetLoader obj's underlying member method code with example usage: obj.__init_subclass__(cls) without return types