code: def radec2azel(
      ra_deg: float,
      dec_deg: float,
      lat_deg: float,
      lon_deg: float,
      time: datetime,
  ) -> tuple[float, float]:
      """
      sky coordinates (ra, dec) to viewing angle (az, el)
  
      Parameters
      ----------
      ra_deg : float
           ecliptic right ascension (degress)
      dec_deg : float
           ecliptic declination (degrees)
      lat_deg : float
                observer latitude [-90, 90]
      lon_deg : float
                observer longitude [-180, 180] (degrees)
      time : datetime.datetime or str
             time of observation
  
      Returns
      -------
      az_deg : float
               azimuth [degrees clockwize from North]
      el_deg : float
               elevation [degrees above horizon (neglecting aberration)]
      """
  
      try:
          obs = EarthLocation(lat=lat_deg * u.deg, lon=lon_deg * u.deg)
          points = SkyCoord(
              Angle(ra_deg, unit=u.deg),
              Angle(dec_deg, unit=u.deg),
              equinox="J2000.0",
          )
          altaz = points.transform_to(
              AltAz(location=obs, obstime=Time(str2dt(time)))
          )
  
          return altaz.az.degree, altaz.alt.degree
      except NameError:
          return vradec2azel(ra_deg, dec_deg, lat_deg, lon_deg, time)
  
imports: from __future__ import annotations
  from datetime import datetime
  from .timeconv import str2dt
  from .vallado import azel2radec
  from .vallado import radec2azel
label_desc: Use image node_id 2 for calling a global function with example usage: radec2azel(ra_deg, dec_deg, lat_deg, lon_deg, time) and returns: altaz,  altaz, vradec2azel