docs: def dosundec(sundata):
      """
      returns the declination for a given set of suncompass data
      Parameters
      __________
        sundata : dictionary with these keys:
            date: time string with the format 'yyyy:mm:dd:hr:min'
            delta_u: time to SUBTRACT from local time for Universal time
            lat: latitude of location (negative for south)
            lon: longitude of location (negative for west)
            shadow_angle: shadow angle of the desired direction with respect to the sun.
      Returns
      ________
         sunaz : the declination of the desired direction wrt true north.
      """
      iday = 0
      timedate = sundata["date"]
      timedate = timedate.split(":")
      year = int(timedate[0])
      mon = int(timedate[1])
      day = int(timedate[2])
      hours = float(timedate[3])
      min = float(timedate[4])
      du = int(sundata["delta_u"])
      hrs = hours - du
      if hrs > 24:
          day += 1
          hrs = hrs - 24
      if hrs < 0:
          day = day - 1
          hrs = hrs + 24
      julian_day = julian(mon, day, year)
      utd = old_div((hrs + old_div(min, 60.)), 24.)
      greenwich_hour_angle, delta = gha(julian_day, utd)
      H = greenwich_hour_angle + float(sundata["lon"])
      if H > 360:
          H = H - 360
      lat = float(sundata["lat"])
      if H > 90 and H < 270:
          lat = -lat
  # now do spherical trig to get azimuth to sun
      lat = np.radians(lat)
      delta = np.radians(delta)
      H = np.radians(H)
      ctheta = np.sin(lat) * np.sin(delta) + np.cos(lat) * \
          np.cos(delta) * np.cos(H)
      theta = np.arccos(ctheta)
      beta = np.cos(delta) * np.sin(H) / np.sin(theta)
  #
  #       check which beta
  #
      beta = np.degrees(np.arcsin(beta))
      if delta < lat:
          beta = 180 - beta
      sunaz = 180 - beta
      sunaz = (sunaz + float(sundata["shadow_angle"])) % 360.  # mod 360
      return sunaz