code: def unify_chunks(
      *data_arrays: xr.DataArray,
  ) -> tuple[xr.DataArray, ...]:
      """Run :func:`xarray.unify_chunks` if input dimensions are all the same size.
  
      This is mostly used in :class:`satpy.composites.CompositeBase` to safe
      guard against running :func:`dask.array.core.map_blocks` with arrays of
      different chunk sizes. Doing so can cause unexpected results or errors.
      However, xarray's ``unify_chunks`` will raise an exception if dimensions
      of the provided DataArrays are different sizes. This is a common case for
      Satpy. For example, the "bands" dimension may be 1 (L), 2 (LA), 3 (RGB), or
      4 (RGBA) for most compositor operations that combine other composites
      together.
  
      """
      if not hasattr(xr, "unify_chunks"):
          return data_arrays
      if not _all_dims_same_size(data_arrays):
          return data_arrays
      return tuple(xr.unify_chunks(*data_arrays))
  
imports: from __future__ import annotations
  import contextlib
  import datetime
  import logging
  import os
  import pathlib
  import warnings
  from contextlib import contextmanager
  from copy import deepcopy
  from typing import Literal, Mapping, Optional
  from urllib.parse import urlparse
  import dask.utils
  import numpy
  import xarray
  import yaml
  from yaml import BaseLoader, UnsafeLoader
  from satpy._compat import DTypeLike
label_desc: Use image node_id 28 for calling a global function with example usage: unify_chunks() and returns: tuple, data_arrays, data_arrays