code: def download(
      dest_file_path: [List[Union[str, Path]]],
      source_url: str,
      force_download: bool = True,
      headers: Optional[dict] = None,
  ) -> None:
      """Download a file from URL to one or several target locations.
  
      Args:
          dest_file_path: Path or list of paths to the file destination (including file name).
          source_url: The source URL.
          force_download: Download file if it already exists, or not.
          headers: Headers for file server.
  
      """
  
      if isinstance(dest_file_path, list):
          dest_file_paths = [Path(path) for path in dest_file_path]
      else:
          dest_file_paths = [Path(dest_file_path).absolute()]
  
      if not force_download:
          to_check = list(dest_file_paths)
          dest_file_paths = []
          for p in to_check:
              if p.exists():
                  log.info(f"File already exists in {p}")
              else:
                  dest_file_paths.append(p)
  
      if dest_file_paths:
          cache_dir = os.getenv("DP_CACHE_DIR")
          cached_exists = False
          if cache_dir:
              first_dest_path = (
                  Path(cache_dir)
                  / md5(source_url.encode("utf8")).hexdigest()[:15]
              )
              cached_exists = first_dest_path.exists()
          else:
              first_dest_path = dest_file_paths.pop()
  
          if not cached_exists:
              first_dest_path.parent.mkdir(parents=True, exist_ok=True)
  
              simple_download(source_url, first_dest_path, headers)
          else:
              log.info(
                  f"Found cached {source_url} in {first_dest_path}"
              )
  
          for dest_path in dest_file_paths:
              dest_path.parent.mkdir(parents=True, exist_ok=True)
              shutil.copy(str(first_dest_path), str(dest_path))
  
imports: import collections
  import gzip
  import os
  import secrets
  import shutil
  import tarfile
  import zipfile
  from hashlib import md5
  from itertools import chain
  from logging import getLogger
  from pathlib import Path
  from typing import Any, Generator, Iterable, List, Mapping, Optional, Sequence, Sized, Union, Collection
  from urllib.parse import urlencode, parse_qs, urlsplit, urlunsplit, urlparse
  import numpy
  import requests
  from tqdm import tqdm
label_desc: Use image node_id 4 for calling a global function with example usage: download(dest_file_path, source_url, force_download, headers) without return types