code: def get_from_cache(url: str, cache_dir: Path = None) -> Path:
      """
      Given a URL, look for the corresponding dataset in the local cache.
      If it's not there, download it. Then return the path to the cached file.
      """
      cache_dir.mkdir(parents=True, exist_ok=True)
  
      filename = re.sub(r".+/", "", url)
      # get cache path to put the file
      cache_path = cache_dir / filename
      if cache_path.exists():
          return cache_path
  
      # make HEAD request to check ETag
      response = requests.head(url)
  
      # (anhv: 27/12/2020) github release assets return 302
      if response.status_code not in [200, 302]:
          if "www.dropbox.com" in url:
              # dropbox return code 301, so we ignore this error
              pass
          else:
              raise IOError(
                  "HEAD request failed for url {}".format(url)
              )
  
      # add ETag to filename if it exists
      # etag = response.headers.get("ETag")
  
      if not cache_path.exists():
          # Download to temporary file, then copy to cache dir once finished.
          # Otherwise you get corrupt cache entries if the download gets interrupted.
          fd, temp_filename = tempfile.mkstemp()
          logger.info(
              "%s not found in cache, downloading to %s",
              url,
              temp_filename,
          )
  
          # GET file object
          req = requests.get(url, stream=True)
          content_length = req.headers.get("Content-Length")
          total = (
              int(content_length)
              if content_length is not None
              else None
          )
          progress = Tqdm.tqdm(unit="B", total=total)
          with open(temp_filename, "wb") as temp_file:
              for chunk in req.iter_content(chunk_size=1024):
                  if chunk:  # filter out keep-alive new chunks
                      progress.update(len(chunk))
                      temp_file.write(chunk)
  
          progress.close()
  
          logger.info(
              "copying %s to cache at %s", temp_filename, cache_path
          )
          shutil.copyfile(temp_filename, str(cache_path))
          logger.info("removing temp file %s", temp_filename)
          os.close(fd)
          os.remove(temp_filename)
  
      return cache_path
  
file_path: underthesea/underthesea/file_utils.py
imports: import mmap
  from os.path import join
  from pathlib import Path
  import os
  import shutil
  import tempfile
  import re
  from urllib.parse import urlparse
  from tqdm import tqdm
  import requests
  from underthesea.utils import logger
label_desc: Use image node_id 2 for calling a global function with example usage: get_from_cache(url, cache_dir) and returns: cache_path, cache_path