class_docstr: A naive pipeline for obtaining dataset.
  
  download -> extract -> move
  
  Args:
      files (list[dict]): A list of file information.
      cache_path (str): The path to cache the downloaded files.
      data_root (str): The root path of the dataset. It is usually set auto-
          matically and users do not need to set it manually in config file
          in most cases.
      task (str): The task of the dataset. It is usually set automatically
          and users do not need to set it manually in config file
          in most cases.
class_docstr_tok: ["A","naive","pipeline","for","obtaining","dataset",".","download","-",">","extract","-",">","move","Args",":","files","(","list","[","dict","]",")",":","A","list","of","file","information",".","cache_path","(","str",")",":","The","path","to","cache","the","downloaded","files",".","data_root","(","str",")",":","The","root","path","of","the","dataset",".","It","is","usually","set","auto-","matically","and","users","do","not","need","to","set","it","manually","in","config","file","in","most","cases",".","task","(","str",")",":","The","task","of","the","dataset",".","It","is","usually","set","automatically","and","users","do","not","need","to","set","it","manually","in","config","file","in","most","cases","."]
code: def __call__(self):
      for file in self.files:
          save_name = file.get("save_name", None)
          url = file.get("url", None)
          md5 = file.get("md5", None)
          download_path = osp.join(
              self.cache_path,
              osp.basename(url) if save_name is None else save_name,
          )
          # Download required files
          if not check_integrity(download_path, md5):
              self.download(url=url, dst_path=download_path)
          # Extract downloaded zip files to data root
          self.extract(src_path=download_path, dst_path=self.data_root)
          # Move & Rename dataset files
          if "mapping" in file:
              self.move(mapping=file["mapping"])
      self.clean()
  
file_path: mmocr/mmocr/datasets/preparers/obtainers/naive_data_obtainer.py
imports: import glob
  import os
  import os.path
  import shutil
  import ssl
  import urllib.request
  from typing import Dict, List, Optional, Tuple
  from mmengine import mkdir_or_exist
  from mmocr.registry import DATA_OBTAINERS
  from mmocr.utils import check_integrity, is_archive
label_desc: Use image node_id 2 for calling the NaiveDataObtainer obj's underlying member method code with example usage: obj.__call__() without return types