132 lines
4.3 KiB
Python
132 lines
4.3 KiB
Python
|
# -*- coding: utf-8 -*-
|
|||
|
|
|||
|
# python-holidays
|
|||
|
# ---------------
|
|||
|
# A fast, efficient Python library for generating country, province and state
|
|||
|
# specific sets of holidays on the fly. It aims to make determining whether a
|
|||
|
# specific date is a holiday as fast and flexible as possible.
|
|||
|
#
|
|||
|
# Author: ryanss <ryanssdev@icloud.com> (c) 2014-2017
|
|||
|
# dr-prodigy <maurizio.montel@gmail.com> (c) 2017-2020
|
|||
|
# Website: https://github.com/dr-prodigy/python-holidays
|
|||
|
# License: MIT (see LICENSE file)
|
|||
|
|
|||
|
from datetime import date
|
|||
|
|
|||
|
from dateutil.easter import easter, EASTER_ORTHODOX
|
|||
|
from dateutil.relativedelta import relativedelta as rd
|
|||
|
|
|||
|
from holidays.constants import JAN, MAR, MAY, JUN, JUL, AUG, SEP, OCT, \
|
|||
|
NOV, DEC
|
|||
|
from holidays.holiday_base import HolidayBase
|
|||
|
|
|||
|
|
|||
|
class Ukraine(HolidayBase):
|
|||
|
"""
|
|||
|
http://zakon1.rada.gov.ua/laws/show/322-08/paran454#n454
|
|||
|
"""
|
|||
|
|
|||
|
def __init__(self, **kwargs):
|
|||
|
self.country = "UA"
|
|||
|
HolidayBase.__init__(self, **kwargs)
|
|||
|
|
|||
|
def _populate(self, year):
|
|||
|
# The current set of holidays came into force in 1991
|
|||
|
# But most holiday days was inplemented in 1981
|
|||
|
if year < 1918:
|
|||
|
return
|
|||
|
|
|||
|
# New Year's Day
|
|||
|
if year >= 1898:
|
|||
|
self[date(year, JAN, 1)] = "Новий рік"
|
|||
|
|
|||
|
# Christmas Day (Orthodox)
|
|||
|
if year >= 1991:
|
|||
|
self[date(year, JAN, 7)] = "Різдво Христове" \
|
|||
|
" (православне)"
|
|||
|
|
|||
|
# Women's Day
|
|||
|
if year > 1965:
|
|||
|
self[date(year, MAR, 8)] = "Міжнародний жіночий день"
|
|||
|
|
|||
|
# Easter
|
|||
|
if year >= 1991:
|
|||
|
self[easter(year, method=EASTER_ORTHODOX)] = "Пасха" \
|
|||
|
" (Великдень)"
|
|||
|
|
|||
|
# Holy trinity
|
|||
|
if year >= 1991:
|
|||
|
self[easter(year, method=EASTER_ORTHODOX) + rd(days=49)] = "Трійця"
|
|||
|
|
|||
|
# Labour Day
|
|||
|
if year > 2017:
|
|||
|
name = "День праці"
|
|||
|
elif 1917 < year <= 2017:
|
|||
|
name = "День міжнародної солідарності трудящих"
|
|||
|
self[date(year, MAY, 1)] = name
|
|||
|
|
|||
|
# Labour Day in past
|
|||
|
if 1928 < year < 2018:
|
|||
|
self[date(year, MAY, 2)] = "День міжнародної солідарності трудящих"
|
|||
|
|
|||
|
# Victory Day
|
|||
|
name = "День перемоги"
|
|||
|
if year >= 1965:
|
|||
|
self[date(year, MAY, 9)] = name
|
|||
|
if 1945 <= year < 1947:
|
|||
|
self[date(year, MAY, 9)] = name
|
|||
|
self[date(year, SEP, 3)] = "День перемоги над Японією"
|
|||
|
|
|||
|
# Constitution Day
|
|||
|
if year >= 1997:
|
|||
|
self[date(year, JUN, 28)] = "День Конституції України"
|
|||
|
|
|||
|
# Independence Day
|
|||
|
name = "День незалежності України"
|
|||
|
if year > 1991:
|
|||
|
self[date(year, AUG, 24)] = name
|
|||
|
elif year == 1991:
|
|||
|
self[date(year, JUL, 16)] = name
|
|||
|
|
|||
|
# Day of the defender of Ukraine
|
|||
|
if year >= 2015:
|
|||
|
self[date(year, OCT, 14)] = "День захисника України"
|
|||
|
|
|||
|
# USSR Constitution day
|
|||
|
name = "День Конституції СРСР"
|
|||
|
if 1981 <= year < 1991:
|
|||
|
self[date(year, OCT, 7)] = name
|
|||
|
elif 1937 <= year < 1981:
|
|||
|
self[date(year, DEC, 5)] = name
|
|||
|
|
|||
|
# October Revolution
|
|||
|
if 1917 < year < 2000:
|
|||
|
if year <= 1991:
|
|||
|
name = "Річниця Великої Жовтневої" \
|
|||
|
" соціалістичної революції"
|
|||
|
else:
|
|||
|
name = "Річниця жовтневого перевороту"
|
|||
|
self[date(year, NOV, 7)] = name
|
|||
|
self[date(year, NOV, 8)] = name
|
|||
|
|
|||
|
# Christmas Day (Catholic)
|
|||
|
if year >= 2017:
|
|||
|
self[date(year, DEC, 25)] = "Різдво Христове" \
|
|||
|
" (католицьке)"
|
|||
|
# USSR holidays
|
|||
|
# Bloody_Sunday_(1905)
|
|||
|
if 1917 <= year < 1951:
|
|||
|
self[date(year, JAN, 22)] = "День пам'яті 9 січня 1905 року"
|
|||
|
|
|||
|
# Paris_Commune
|
|||
|
if 1917 < year < 1929:
|
|||
|
self[date(year, MAR, 18)] = "День паризької комуни"
|
|||
|
|
|||
|
|
|||
|
class UA(Ukraine):
|
|||
|
pass
|
|||
|
|
|||
|
|
|||
|
class UKR(Ukraine):
|
|||
|
pass
|