code: def _get_sun_angles(
      data_arr: xr.DataArray,
  ) -> tuple[xr.DataArray, xr.DataArray]:
      chunks = _geo_chunks_from_data_arr(data_arr)
      lons, lats = _get_valid_lonlats(data_arr.attrs["area"], chunks)
      suna = da.map_blocks(
          _get_sun_azimuth_ndarray,
          lons,
          lats,
          data_arr.attrs["start_time"],
          dtype=lons.dtype,
          meta=np.array((), dtype=lons.dtype),
          chunks=lons.chunks,
      )
      cos_sza = _get_cos_sza(data_arr.attrs["start_time"], lons, lats)
      sunz = np.rad2deg(np.arccos(cos_sza))
      suna = _geo_dask_to_data_array(suna)
      sunz = _geo_dask_to_data_array(sunz)
      return suna, sunz
  
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 15 for calling a global function with example usage: _get_sun_angles(data_arr) and returns: suna,  sunz