docs: def adhan(day, location, parameters, timezone_offset=0):
      """Calculate adhan times given the parameters.
  
      This function will compute the adhan times for a certain location on
      certain day. The method for calculating the prayers as well as the time for
      Asr can also be specified. The timezone offset naively adds the specified
      number of hours to each time that is returned.
  
      :param day: The datetime.date to calculate for
      :param location: 2-tuple of floating point coordiantes for latitude and
                       longitude of location in degrees
      :param parameters: A dictionary-like object of parameters for computing
                         adhan times. Commonly used calculation methods are
                         available in the adhan.methods module
      :param timezone_offset: The number of hours to add to each prayer time
                              to account for timezones. Can be floating point
  
      """
      latitude, longitude = location
  
      #
      # To reduce a little repetitiveness, using a partial function that has the
      # day and latitude already set
      #
      time_at_sun_angle = partial(
          compute_time_at_sun_angle,
          day=day,
          latitude=latitude
      )
  
      zuhr_time = compute_zuhr_utc(day, longitude)
  
      shuruq_time = zuhr_time - time_at_sun_angle(angle=SUNRISE_ANGLE)
      maghrib_time = zuhr_time + time_at_sun_angle(angle=SUNSET_ANGLE)
  
      fajr_time = zuhr_time - time_at_sun_angle(angle=parameters['fajr_angle'])
  
      #
      # Most methods define Isha as a certain angle the sun has to be below
      # the horizon, but some methods define it as a certain number of minutes
      # after Maghrib
      #
      if parameters.get('isha_delay', None):
          isha_time = maghrib_time + parameters['isha_delay']
      else:
          isha_time = (
              zuhr_time +
              time_at_sun_angle(angle=parameters['isha_angle'])
          )
  
      #
      # Default to standard Asr method if not specified
      #
      asr_multiplier = parameters.get('asr_multiplier', ASR_STANDARD)
      asr_time = zuhr_time + time_at_shadow_length(
          day=day, latitude=latitude, multiplier=asr_multiplier
      )
  
      offset = timedelta(minutes=60 * timezone_offset)
      return {
          'fajr': floating_point_to_datetime(day, fajr_time) + offset,
          'zuhr': floating_point_to_datetime(day, zuhr_time) + offset,
          'shuruq': floating_point_to_datetime(day, shuruq_time) + offset,
          'asr': floating_point_to_datetime(day, asr_time) + offset,
          'maghrib': floating_point_to_datetime(day, maghrib_time) + offset,
          'isha': floating_point_to_datetime(day, isha_time) + offset,
      }