コード例 #1
0
ファイル: holidays.py プロジェクト: roman-pinchuk/zmanim_api
def fast(name: str, date_: date, lat: Optional[float], lng: Optional[float],
         elevation: int, havdala_opinion: HavdalaChoices) -> Fast:
    tz = get_tz(lat, lng)
    diaspora = is_diaspora(tz)
    is_9_av = True if name == 'fast_9_av' else None
    havdala_params = HAVDALA_PARAMS[havdala_opinion.name]

    data = {'moved_fast': False}

    fast_date = _get_first_day_date(name, date_, diaspora)

    # Deferred fasts
    if name in ('fast_gedalia', 'fast_17_tammuz',
                'fast_9_av') and fast_date.day_of_week == 7:
        fast_date.forward(1)
        data['moved_fast'] = True
    if name == 'fast_esther' and fast_date.day_of_week == 7:
        fast_date.forward(-2)
        data['moved_fast'] = True

    location = GeoLocation('', lat, lng, tz, elevation)
    fast_calc = ZmanimCalendar(geo_location=location,
                               date=fast_date.gregorian_date)
    if is_9_av:
        eve_calc = ZmanimCalendar(geo_location=location,
                                  date=(fast_date - 1).gregorian_date)
        data['fast_start'] = eve_calc.shkia()
        data['chatzot'] = fast_calc.chatzos()
    else:
        if fast_calc.alos():
            data['fast_start'] = fast_calc.alos()
        else:
            eve_calc = ZmanimCalendar(geo_location=location,
                                      date=(fast_date - 1).gregorian_date)
            data['fast_start'] = eve_calc.chatzos() + timedelta(hours=12)

    # calculate additional fast ending times:
    # sunset = fast_calc.shkia()
    # sba_time = (sunset + timedelta(minutes=31))
    # nvr_time = (sunset + timedelta(minutes=28))
    # ssk_time = (sunset + timedelta(minutes=25))

    data['havdala'] = fast_calc.tzais(havdala_params)

    settings = Settings(havdala_opinion=havdala_opinion,
                        coordinates=(lat, lng),
                        elevation=elevation,
                        date=date_,
                        fast_name=name)

    return Fast(settings=settings, **data)
コード例 #2
0
 def test_chatzos(self):
     calendar = ZmanimCalendar(geo_location=test_helper.lakewood(), date=date(2017, 10, 17))
     self.assertEqual(calendar.chatzos().replace(microsecond=0).isoformat(), "2017-10-17T12:41:55-04:00")