code: def download(self):
      folder = osp.join(self.raw_dir, "test")
      print(folder)
      if files_exist([folder]):  # pragma: no cover
          log.warning("already downloaded {}".format("test"))
          return
      else:
          makedirs(folder)
      log.info("Download elements in the file {}...".format(folder))
      for name, url in self.DATASETS:
          req = requests.get(url)
          with open(osp.join(folder, name + ".zip"), "wb") as archive:
              archive.write(req.content)
          with ZipFile(osp.join(folder, name + ".zip"), "r") as zip_obj:
              log.info("extracting dataset {}".format(name))
              zip_obj.extractall(osp.join(folder, name))
              log.info("converting to PCD")
              asl_to_pcd(osp.join(folder, name))
          file_not_to_remove = glob.glob(
              osp.join(folder, name, "*.pcd")
          )
          filelist = glob.glob(osp.join(folder, name, "*"))
          for file_to_remove in filelist:
              if file_to_remove not in file_not_to_remove:
                  os.remove(file_to_remove)
          os.remove(osp.join(folder, name + ".zip"))
      self.download_pairs(folder)
      req = requests.get(self.link_pose)
      with open(osp.join(folder, "pose.zip"), "wb") as archive:
          archive.write(req.content)
      with ZipFile(osp.join(folder, "pose.zip"), "r") as zip_obj:
          log.info("extracting pose")
          zip_obj.extractall(folder)
      os.remove(osp.join(folder, "pose.zip"))
  
imports: import gdown
  import os
  import os.path
  import logging
  import requests
  import glob
  import re
  import sys
  import csv
  from zipfile import ZipFile
  from torch_points3d.datasets.registration.basetest import BasePCRBTest
  from torch_points3d.datasets.base_dataset import BaseDataset
  from torch_points3d.datasets.registration.base_siamese_dataset import BaseSiameseDataset
  from torch_points3d.datasets.registration.basetest import Base3DMatchTest
  from torch_points3d.datasets.registration.base_siamese_dataset import GeneralFragment
  from torch_points3d.metrics.registration_tracker import FragmentRegistrationTracker
  from torch_points3d.datasets.registration.utils import files_exist
  from torch_points3d.datasets.registration.utils import makedirs
label_desc: Use image node_id 2 for calling the TestPairETH obj's underlying member method code with example usage: obj.download() without return types