code: def _hash_args(*args, unhashable_types=DEFAULT_UNCACHE_TYPES):
      import json
  
      hashable_args = []
      for arg in args:
          if isinstance(arg, unhashable_types):
              raise TypeError(f"Unhashable type ({type(arg)}).")
          if isinstance(arg, HASHABLE_GEOMETRIES):
              arg = hash(arg)
          elif isinstance(arg, datetime):
              arg = arg.isoformat(" ")
          hashable_args.append(arg)
      arg_hash = hashlib.sha1()  # nosec
      arg_hash.update(json.dumps(tuple(hashable_args)).encode("utf8"))
      return arg_hash.hexdigest()
  
imports: from __future__ import annotations
  import hashlib
  import os
  import shutil
  import warnings
  from datetime import datetime
  from functools import update_wrapper
  from glob import glob
  from typing import Any, Callable, Optional, Union
  import dask
  import numpy
  import xarray
  from dask import array
  from pyorbital.astronomy import cos_zen
  from pyorbital.astronomy import get_alt_az
  from pyorbital.orbital import get_observer_look
  from pyresample.geometry import AreaDefinition, StackedAreaDefinition, SwathDefinition
  import satpy
  from satpy.utils import PerformanceWarning, get_satpos, ignore_invalid_float_warnings
label_desc: Use image node_id 3 for calling a global function with example usage: _hash_args() and returns: arg_hash