code: def get_from_cache(url: str, cache_dir: Optional[str] = None) -> str:
      """
      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.
      """
      if cache_dir is None:
          cache_dir = DATASET_CACHE
  
      os.makedirs(cache_dir, exist_ok=True)
  
      response = requests.head(url, allow_redirects=True)
      if response.status_code != 200:
          raise IOError(
              "HEAD request failed for url {} with status code {}".format(
                  url, response.status_code
              )
          )
      etag = response.headers.get("ETag")
  
      filename = url_to_filename(url, etag)
  
      # get cache path to put the file
      cache_path = os.path.join(cache_dir, filename)
  
      if not os.path.exists(cache_path):
          # Download to temporary file, then copy to cache dir once finished.
          # Otherwise you get corrupt cache entries if the download gets interrupted.
          with tempfile.NamedTemporaryFile() as temp_file:  # type: IO
              print(
                  f"{url} not found in cache, downloading to {temp_file.name}"
              )
  
              # GET file object
              http_get(url, temp_file)
  
              # we are copying the file before closing it, so flush to avoid truncation
              temp_file.flush()
              # shutil.copyfileobj() starts at the current position, so go to the start
              temp_file.seek(0)
  
              print(
                  f"Finished download, copying {temp_file.name} to cache at {cache_path}"
              )
              with open(cache_path, "wb") as cache_file:
                  shutil.copyfileobj(temp_file, cache_file)
  
              meta = {"url": url, "etag": etag}
              meta_path = cache_path + ".json"
              with open(meta_path, "w") as meta_file:
                  json.dump(meta, meta_file)
  
      return cache_path
  
file_path: scispacy/scispacy/file_cache.py
imports: import os
  import shutil
  import tempfile
  import json
  from urllib.parse import urlparse
  from pathlib import Path
  from typing import Optional, Tuple, Union, IO
  from hashlib import sha256
  import requests
  from tqdm import tqdm
label_desc: Use image node_id 5 for calling a global function with example usage: get_from_cache(url, cache_dir) and returns: cache_path