code: def cached_path(
      url_or_filename: Union[str, Path], cache_dir: str = None
  ) -> str:
      """
      Given something that might be a URL (or might be a local path),
      determine which. If it's a URL, download the file and cache it, and
      return the path to the cached file. If it's already a local path,
      make sure the file exists and then return the path.
      """
      if cache_dir is None:
          cache_dir = MODEL_CACHE
      else:
          cache_dir = cache_dir
      if isinstance(url_or_filename, Path):
          url_or_filename = str(url_or_filename)
  
      parsed = urlparse(url_or_filename)
  
      if parsed.scheme in ("http", "https"):
          # URL, so get it from the cache (downloading if necessary)
          return get_from_cache(url_or_filename, cache_dir)
      if os.path.exists(url_or_filename):
          # File, and it exists.
          print("File already exists. No further processing needed.")
          return url_or_filename
      if parsed.scheme == "":
          # File, but it doesn't exist.
          raise FileNotFoundError(
              "file {} not found".format(url_or_filename)
          )
  
      # Something unknown
      raise ValueError(
          "unable to parse {} as a URL or as a local path".format(
              url_or_filename
          )
      )
  
file_path: nlp-architect/nlp_architect/utils/file_cache.py
imports: import os
  import logging
  import shutil
  import tempfile
  import json
  from urllib.parse import urlparse
  from pathlib import Path
  from typing import Tuple, Union, IO
  from hashlib import sha256
  from nlp_architect import LIBRARY_OUT
  from nlp_architect.utils.io import load_json_file
  import requests
label_desc: Use image node_id 1 for calling a global function with example usage: cached_path(url_or_filename, cache_dir) and returns: get_from_cache, url_or_filename