holidays 0.62__py3-none-any.whl → 0.64__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (97) hide show
  1. holidays/calendars/hebrew.py +32 -3
  2. holidays/calendars/thai.py +25 -9
  3. holidays/constants.py +1 -0
  4. holidays/countries/__init__.py +1 -0
  5. holidays/countries/afghanistan.py +104 -0
  6. holidays/countries/angola.py +22 -25
  7. holidays/countries/argentina.py +2 -3
  8. holidays/countries/azerbaijan.py +2 -2
  9. holidays/countries/belarus.py +93 -14
  10. holidays/countries/bolivia.py +1 -1
  11. holidays/countries/bosnia_and_herzegovina.py +1 -1
  12. holidays/countries/cambodia.py +6 -7
  13. holidays/countries/canada.py +1 -2
  14. holidays/countries/chile.py +10 -11
  15. holidays/countries/costa_rica.py +1 -1
  16. holidays/countries/croatia.py +1 -2
  17. holidays/countries/czechia.py +1 -1
  18. holidays/countries/dominica.py +1 -2
  19. holidays/countries/el_salvador.py +45 -24
  20. holidays/countries/france.py +18 -3
  21. holidays/countries/hungary.py +2 -2
  22. holidays/countries/israel.py +55 -81
  23. holidays/countries/kazakhstan.py +8 -2
  24. holidays/countries/latvia.py +2 -4
  25. holidays/countries/lithuania.py +1 -1
  26. holidays/countries/montenegro.py +143 -27
  27. holidays/countries/namibia.py +1 -1
  28. holidays/countries/new_zealand.py +3 -8
  29. holidays/countries/norway.py +1 -1
  30. holidays/countries/philippines.py +2 -2
  31. holidays/countries/poland.py +9 -1
  32. holidays/countries/russia.py +1 -1
  33. holidays/countries/south_korea.py +4 -8
  34. holidays/countries/thailand.py +499 -213
  35. holidays/countries/turkey.py +2 -4
  36. holidays/countries/ukraine.py +19 -10
  37. holidays/countries/united_states.py +26 -23
  38. holidays/countries/uruguay.py +8 -7
  39. holidays/financial/__init__.py +2 -2
  40. holidays/financial/european_central_bank.py +10 -3
  41. holidays/financial/ny_stock_exchange.py +82 -45
  42. holidays/groups/__init__.py +1 -0
  43. holidays/groups/christian.py +2 -0
  44. holidays/groups/custom.py +12 -0
  45. holidays/groups/hebrew.py +151 -0
  46. holidays/holiday_base.py +4 -13
  47. holidays/locale/be/LC_MESSAGES/BY.mo +0 -0
  48. holidays/locale/be/LC_MESSAGES/BY.po +53 -17
  49. holidays/locale/cnr/LC_MESSAGES/ME.mo +0 -0
  50. holidays/locale/cnr/LC_MESSAGES/ME.po +102 -0
  51. holidays/locale/en_US/LC_MESSAGES/AF.mo +0 -0
  52. holidays/locale/en_US/LC_MESSAGES/AF.po +98 -0
  53. holidays/locale/en_US/LC_MESSAGES/BY.mo +0 -0
  54. holidays/locale/en_US/LC_MESSAGES/BY.po +61 -20
  55. holidays/locale/en_US/LC_MESSAGES/ME.mo +0 -0
  56. holidays/locale/en_US/LC_MESSAGES/ME.po +102 -0
  57. holidays/locale/en_US/LC_MESSAGES/PL.mo +0 -0
  58. holidays/locale/en_US/LC_MESSAGES/PL.po +7 -5
  59. holidays/locale/en_US/LC_MESSAGES/SV.mo +0 -0
  60. holidays/locale/en_US/LC_MESSAGES/SV.po +75 -0
  61. holidays/locale/en_US/LC_MESSAGES/TH.mo +0 -0
  62. holidays/locale/en_US/LC_MESSAGES/TH.po +128 -24
  63. holidays/locale/es/LC_MESSAGES/SV.mo +0 -0
  64. holidays/locale/es/LC_MESSAGES/SV.po +75 -0
  65. holidays/locale/fa_AF/LC_MESSAGES/AF.mo +0 -0
  66. holidays/locale/fa_AF/LC_MESSAGES/AF.po +98 -0
  67. holidays/locale/pl/LC_MESSAGES/PL.mo +0 -0
  68. holidays/locale/pl/LC_MESSAGES/PL.po +8 -4
  69. holidays/locale/ps_AF/LC_MESSAGES/AF.mo +0 -0
  70. holidays/locale/ps_AF/LC_MESSAGES/AF.po +98 -0
  71. holidays/locale/ru/LC_MESSAGES/BY.mo +0 -0
  72. holidays/locale/ru/LC_MESSAGES/BY.po +111 -0
  73. holidays/locale/th/LC_MESSAGES/BY.mo +0 -0
  74. holidays/locale/th/LC_MESSAGES/BY.po +109 -0
  75. holidays/locale/th/LC_MESSAGES/NO.mo +0 -0
  76. holidays/locale/th/LC_MESSAGES/NO.po +80 -0
  77. holidays/locale/th/LC_MESSAGES/RU.mo +0 -0
  78. holidays/locale/th/LC_MESSAGES/RU.po +90 -0
  79. holidays/locale/th/LC_MESSAGES/TH.mo +0 -0
  80. holidays/locale/th/LC_MESSAGES/TH.po +127 -23
  81. holidays/locale/th/LC_MESSAGES/UA.mo +0 -0
  82. holidays/locale/th/LC_MESSAGES/UA.po +114 -0
  83. holidays/locale/uk/LC_MESSAGES/ME.mo +0 -0
  84. holidays/locale/uk/LC_MESSAGES/ME.po +102 -0
  85. holidays/locale/uk/LC_MESSAGES/PL.mo +0 -0
  86. holidays/locale/uk/LC_MESSAGES/PL.po +7 -5
  87. holidays/locale/uk/LC_MESSAGES/SV.mo +0 -0
  88. holidays/locale/uk/LC_MESSAGES/SV.po +75 -0
  89. holidays/registry.py +3 -2
  90. holidays/utils.py +1 -5
  91. holidays/version.py +1 -1
  92. {holidays-0.62.dist-info → holidays-0.64.dist-info}/AUTHORS +1 -0
  93. {holidays-0.62.dist-info → holidays-0.64.dist-info}/METADATA +22 -17
  94. {holidays-0.62.dist-info → holidays-0.64.dist-info}/RECORD +97 -67
  95. {holidays-0.62.dist-info → holidays-0.64.dist-info}/WHEEL +1 -1
  96. {holidays-0.62.dist-info → holidays-0.64.dist-info}/LICENSE +0 -0
  97. {holidays-0.62.dist-info → holidays-0.64.dist-info}/top_level.txt +0 -0
@@ -1598,7 +1598,36 @@ class _HebrewLunisolar:
1598
1598
  2100: (OCT, 13),
1599
1599
  }
1600
1600
 
1601
- @staticmethod
1602
- def _get_holiday(holiday: str, year: int) -> Optional[date]:
1603
- dt = getattr(_HebrewLunisolar, f"{holiday}_DATES", {}).get(year, ())
1601
+ def _get_holiday(self, holiday: str, year: int) -> Optional[date]:
1602
+ dt = getattr(self, f"{holiday}_DATES", {}).get(year, ())
1604
1603
  return date(year, *dt) if dt else None
1604
+
1605
+ def hanukkah_date(self, year: int) -> set[Optional[date]]:
1606
+ return {self._get_holiday(HANUKKAH, y) for y in (year - 1, year)}
1607
+
1608
+ def israel_independence_date(self, year: int) -> Optional[date]:
1609
+ return self._get_holiday(INDEPENDENCE_DAY, year)
1610
+
1611
+ def lag_baomer_date(self, year: int) -> Optional[date]:
1612
+ return self._get_holiday(LAG_BAOMER, year)
1613
+
1614
+ def passover_date(self, year: int) -> Optional[date]:
1615
+ return self._get_holiday(PASSOVER, year)
1616
+
1617
+ def purim_date(self, year: int) -> Optional[date]:
1618
+ return self._get_holiday(PURIM, year)
1619
+
1620
+ def rosh_hashanah_date(self, year: int) -> Optional[date]:
1621
+ return self._get_holiday(ROSH_HASHANAH, year)
1622
+
1623
+ def shavuot_date(self, year: int) -> Optional[date]:
1624
+ return self._get_holiday(SHAVUOT, year)
1625
+
1626
+ def sukkot_date(self, year: int) -> Optional[date]:
1627
+ return self._get_holiday(SUKKOT, year)
1628
+
1629
+ def tisha_bav_date(self, year: int) -> Optional[date]:
1630
+ return self._get_holiday(TISHA_BAV, year)
1631
+
1632
+ def yom_kippur_date(self, year: int) -> Optional[date]:
1633
+ return self._get_holiday(YOM_KIPPUR, year)
@@ -22,7 +22,7 @@ THAI_CALENDAR = "THAI_CALENDAR"
22
22
 
23
23
  class _ThaiLunisolar:
24
24
  """
25
- ** Thai Lunar Calendar Holidays only work from 1941 (B.E. 2484) onwards
25
+ ** Thai Lunar Calendar Holidays only work from 1913 (B.E. 2456/2455) onwards
26
26
  until 2157 (B.E. 2700) as we only have Thai year-type data for
27
27
  cross-checking until then.
28
28
 
@@ -100,9 +100,15 @@ class _ThaiLunisolar:
100
100
  2010-05-28
101
101
  """
102
102
 
103
- # Athikawan (Extra-Day Year) list goes from 1941-2157 C.E.
103
+ # Athikawan (Extra-Day Year) list goes from 1914-2157 C.E.
104
104
  # Copied off from 1757-2157 (B.E. 2300-2700) Thai Lunar Calendar
105
105
  ATHIKAWAN_YEARS_GREGORIAN = {
106
+ 1914,
107
+ 1917,
108
+ 1925,
109
+ 1929,
110
+ 1933,
111
+ 1936,
106
112
  1945,
107
113
  1949,
108
114
  1952,
@@ -147,10 +153,20 @@ class _ThaiLunisolar:
147
153
  2153,
148
154
  }
149
155
 
150
- # Athikamat (Extra-Month Year) list goes from 1941-2157 C.E.:
156
+ # Athikamat (Extra-Month Year) list goes from 1914-2157 C.E.:
151
157
  # Copied off from 1757-2157 (B.E. 2300-2700) Thai Lunar Calendar
152
158
  # Approx formula as follows: (common_era-78)-0.45222)%2.7118886 < 1
153
159
  ATHIKAMAT_YEARS_GREGORIAN = {
160
+ 1915,
161
+ 1918,
162
+ 1920,
163
+ 1923,
164
+ 1926,
165
+ 1928,
166
+ 1931,
167
+ 1934,
168
+ 1937,
169
+ 1939,
154
170
  1942,
155
171
  1944,
156
172
  1947,
@@ -234,12 +250,12 @@ class _ThaiLunisolar:
234
250
  }
235
251
 
236
252
  # While Buddhist Holy Days have been observed since the 1900s
237
- # Due to the calendar changes in 1941 (B.E. 2484) and that
238
- # our array only goes up to B.E. 2700; We'll thus only populate
239
- # the data for 1941-2157 (B.E. 2484-2700).
253
+ # Thailand's Public Holiday Act wasn't codified until 1914 (B.E. 2457)
254
+ # and that our array only goes up to B.E. 2700; We'll thus only populate
255
+ # the data for 1914-2157 (B.E. 2457-2700).
240
256
  # Sources: หนังสือเวียนกรมการปกครอง กระทรวงมหาดไทย มท 0310.1/ว4 5 ก.พ. 2539
241
- START_DATE = date(1940, 11, 30)
242
- START_YEAR = 1941
257
+ START_DATE = date(1913, 11, 28)
258
+ START_YEAR = 1914
243
259
  END_YEAR = 2157
244
260
 
245
261
  def __init__(self, calendar=THAI_CALENDAR) -> None:
@@ -270,7 +286,7 @@ class _ThaiLunisolar:
270
286
  Calculate the start date of that particular Thai Lunar Calendar Year.
271
287
  This usually falls in November or December of the previous Gregorian
272
288
  year in question. Should the year be outside of working scope
273
- (1941-2157: B.E 2484-2700), this will returns None instead.
289
+ (1914-2157: B.E 2457-2700), this will returns None instead.
274
290
 
275
291
  :param year:
276
292
  The Gregorian year.
holidays/constants.py CHANGED
@@ -54,6 +54,7 @@ CHRISTIAN = "christian"
54
54
  HEBREW = "hebrew"
55
55
  HINDU = "hindu"
56
56
  ISLAMIC = "islamic"
57
+ ORTHODOX = "orthodox"
57
58
 
58
59
  DEFAULT_START_YEAR = 1901
59
60
  DEFAULT_END_YEAR = 2100
@@ -12,6 +12,7 @@
12
12
 
13
13
  # flake8: noqa: F401
14
14
 
15
+ from .afghanistan import Afghanistan, AF, AFG
15
16
  from .albania import Albania, AL, ALB
16
17
  from .algeria import Algeria, DZ, DZA
17
18
  from .american_samoa import AmericanSamoa, AS, ASM, HolidaysAS
@@ -0,0 +1,104 @@
1
+ # holidays
2
+ # --------
3
+ # A fast, efficient Python library for generating country, province and state
4
+ # specific sets of holidays on the fly. It aims to make determining whether a
5
+ # specific date is a holiday as fast and flexible as possible.
6
+ #
7
+ # Authors: Vacanza Team and individual contributors (see AUTHORS file)
8
+ # dr-prodigy <dr.prodigy.github@gmail.com> (c) 2017-2023
9
+ # ryanss <ryanssdev@icloud.com> (c) 2014-2017
10
+ # Website: https://github.com/vacanza/holidays
11
+ # License: MIT (see LICENSE file)
12
+
13
+ from gettext import gettext as tr
14
+
15
+ from holidays.groups import InternationalHolidays, IslamicHolidays
16
+ from holidays.holiday_base import HolidayBase
17
+
18
+
19
+ class Afghanistan(HolidayBase, InternationalHolidays, IslamicHolidays):
20
+ """
21
+ https://en.wikipedia.org/wiki/Public_holidays_in_Afghanistan
22
+ https://www.timeanddate.com/holidays/afghanistan/
23
+ """
24
+
25
+ country = "AF"
26
+ default_language = "fa_AF"
27
+ # %s (estimated).
28
+ estimated_label = tr("%s (برآورد شده)")
29
+ # %s (observed).
30
+ observed_label = tr("%s (مشاهده شده)")
31
+ # %s (observed, estimated).
32
+ observed_estimated_label = tr("%s (مشاهده شده، برآورد شده)")
33
+ supported_languages = ("en_US", "fa_AF", "ps_AF")
34
+ # Afghanistan's regaining of full independence from British influence.
35
+ start_year = 1919
36
+
37
+ def __init__(self, *args, **kwargs):
38
+ InternationalHolidays.__init__(self)
39
+ IslamicHolidays.__init__(self)
40
+ super().__init__(*args, **kwargs)
41
+
42
+ def _populate_public_holidays(self):
43
+ if self._year >= 1989:
44
+ # Liberation Day.
45
+ self._add_holiday_feb_15(tr("روز آزادی"))
46
+
47
+ # Afghanistan Independence Day.
48
+ self._add_holiday_aug_19(tr("روز استقلال افغانستان"))
49
+
50
+ if self._year <= 1996 or 2001 <= self._year <= 2020:
51
+ # Nowruz.
52
+ self._add_holiday_mar_21(tr("نوروز"))
53
+
54
+ if self._year >= 1992:
55
+ # Mojahedin's Victory Day.
56
+ self._add_holiday_apr_28(tr("روز پیروزی مجاهدین"))
57
+
58
+ if 1974 <= self._year <= 1996 or 2002 <= self._year <= 2021:
59
+ # International Workers' Day.
60
+ self._add_labor_day(tr("روز جهانی کارگر"))
61
+
62
+ if 1978 <= self._year <= 1988:
63
+ # Soviet Victory Day.
64
+ self._add_holiday_may_9(tr("روز پیروزی شوروی"))
65
+
66
+ if self._year >= 2022:
67
+ # American Withdrawal Day.
68
+ self._add_holiday_aug_31(tr("روز خروج آمریکایی ها"))
69
+
70
+ if self._year >= 2012:
71
+ # Martyrs' Day.
72
+ self._add_holiday_sep_9(tr("روز شهیدان"))
73
+
74
+ # Eid al-Fitr.
75
+ name = tr("عید فطر")
76
+ self._add_eid_al_fitr_day(name)
77
+ self._add_eid_al_fitr_day_two(name)
78
+ self._add_eid_al_fitr_day_three(name)
79
+
80
+ # Day of Arafah.
81
+ self._add_arafah_day(tr("روز عرفه"))
82
+
83
+ # Eid al-Adha.
84
+ name = tr("عید قربانی")
85
+ self._add_eid_al_adha_day(name)
86
+ self._add_eid_al_adha_day_two(name)
87
+ self._add_eid_al_adha_day_three(name)
88
+
89
+ # Ashura.
90
+ self._add_ashura_day(tr("عاشورا"))
91
+
92
+ # First Day of Ramadan.
93
+ self._add_ramadan_beginning_day(tr("اول رمضان"))
94
+
95
+ # Prophet's Birthday.
96
+ self._add_mawlid_day(tr("میلاد پیامبر"))
97
+
98
+
99
+ class AF(Afghanistan):
100
+ pass
101
+
102
+
103
+ class AFG(Afghanistan):
104
+ pass
@@ -71,7 +71,7 @@ class Angola(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, Stat
71
71
 
72
72
  def _populate_public_holidays(self):
73
73
  # New Year's Day.
74
- name = self.tr("Dia do Ano Novo")
74
+ name = tr("Dia do Ano Novo")
75
75
  dt = self._add_new_years_day(name)
76
76
  if self._year <= 2011 or self._year >= 2018:
77
77
  self._add_observed(dt)
@@ -84,14 +84,15 @@ class Angola(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, Stat
84
84
  self._add_holiday_jan_4(tr("Dia dos Mártires da Repressão Colonial"))
85
85
  )
86
86
 
87
- name = (
88
- # Beginning of the Armed Struggle for National Liberation Day.
89
- tr("Dia do Início da Luta Armada de Libertação Nacional")
90
- if self._year >= 2012
91
- # Beginning of the Armed Struggle Day.
92
- else tr("Dia do Início da Luta Armada")
87
+ self._add_observed(
88
+ self._add_holiday_feb_4(
89
+ # Beginning of the Armed Struggle for National Liberation Day.
90
+ tr("Dia do Início da Luta Armada de Libertação Nacional")
91
+ if self._year >= 2012
92
+ # Beginning of the Armed Struggle Day.
93
+ else tr("Dia do Início da Luta Armada")
94
+ )
93
95
  )
94
- self._add_observed(self._add_holiday_feb_4(name))
95
96
 
96
97
  # Law #16/96.
97
98
  if self._year >= 1997:
@@ -103,17 +104,13 @@ class Angola(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, Stat
103
104
 
104
105
  # Law #11/18.
105
106
  if self._year >= 2019:
106
- self._add_observed(
107
- # Southern Africa Liberation Day.
108
- self._add_holiday_mar_23(tr("Dia da Libertação da África Austral"))
109
- )
107
+ # Southern Africa Liberation Day.
108
+ self._add_observed(self._add_holiday_mar_23(tr("Dia da Libertação da África Austral")))
110
109
 
111
110
  # Law #7/03.
112
111
  if self._year >= 2003:
113
- self._add_observed(
114
- # Peace and National Reconciliation Day.
115
- self._add_holiday_apr_4(tr("Dia da Paz e Reconciliação Nacional"))
116
- )
112
+ # Peace and National Reconciliation Day.
113
+ self._add_observed(self._add_holiday_apr_4(tr("Dia da Paz e Reconciliação Nacional")))
117
114
 
118
115
  # Law #16/96.
119
116
  if self._year >= 1997:
@@ -145,21 +142,22 @@ class Angola(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, Stat
145
142
  if self._year <= 2010 or self._year >= 2018:
146
143
  self._add_observed(dt)
147
144
 
148
- name = (
149
- # National Independence Day.
150
- tr("Dia da Independência Nacional")
151
- if self._year >= 1996
152
- # Independence Day.
153
- else tr("Dia da Independência")
145
+ self._add_observed(
146
+ self._add_holiday_nov_11(
147
+ # National Independence Day.
148
+ tr("Dia da Independência Nacional")
149
+ if self._year >= 1996
150
+ # Independence Day.
151
+ else tr("Dia da Independência")
152
+ )
154
153
  )
155
- self._add_observed(self._add_holiday_nov_11(name))
156
154
 
157
155
  # Decree # 7/92.
158
156
  if self._year <= 1991:
159
157
  # Date of Founding of MPLA - Labor Party.
160
158
  self._add_holiday_dec_10(tr("Data da Fundacao do MPLA - Partido do Trabalho"))
161
159
 
162
- name = (
160
+ dt = self._add_christmas_day(
163
161
  # Christmas and Family Day.
164
162
  tr("Dia de Natal e da Família")
165
163
  if self._year >= 2011
@@ -169,7 +167,6 @@ class Angola(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, Stat
169
167
  else tr("Dia da Família") # Family Day.
170
168
  )
171
169
  )
172
- dt = self._add_christmas_day(name)
173
170
  if self._year <= 2010 or self._year >= 2018:
174
171
  self._add_observed(dt)
175
172
 
@@ -205,7 +205,7 @@ class Argentina(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, S
205
205
  if self._year >= 2016:
206
206
  jun_17 = self._add_holiday_jun_17(
207
207
  # Pass to the Immortality of General Don Martin Miguel de Guemes.
208
- tr("Paso a la Inmortalidad del General Don Martín Miguel de Güemes"),
208
+ tr("Paso a la Inmortalidad del General Don Martín Miguel de Güemes")
209
209
  )
210
210
  # If Jun 17 is Friday, then it should move to Mon, Jun 20
211
211
  # but Jun 20 is Gen. Belgrano holiday
@@ -232,14 +232,13 @@ class Argentina(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, S
232
232
  # In 2010 the holiday became movable and its name was changed.
233
233
 
234
234
  if self._year >= 1917:
235
- name = (
235
+ oct_12 = self._add_columbus_day(
236
236
  # Respect for Cultural Diversity Day.
237
237
  tr("Día del Respeto a la Diversidad Cultural")
238
238
  if self._year >= 2010
239
239
  # Columbus Day.
240
240
  else tr("Día de la Raza")
241
241
  )
242
- oct_12 = self._add_columbus_day(name)
243
242
  if self._year >= 2010:
244
243
  self._move_holiday(oct_12)
245
244
 
@@ -287,10 +287,10 @@ class AzerbaijanStaticHolidays:
287
287
  2018: (APR, 11, presidential_elections),
288
288
  2019: (DEC, 27, municipal_elections),
289
289
  2020: (
290
- (MAR, 27, MAR, 29),
291
- (MAY, 27, MAY, 30),
292
290
  (JAN, 3, DEC, 28, 2019),
293
291
  (JAN, 6, DEC, 29, 2019),
292
+ (MAR, 27, MAR, 29),
293
+ (MAY, 27, MAY, 30),
294
294
  ),
295
295
  2021: (
296
296
  (MAY, 11, MAY, 8),
@@ -14,6 +14,7 @@ from gettext import gettext as tr
14
14
 
15
15
  from holidays.calendars.gregorian import GREGORIAN_CALENDAR, JAN, MAR, APR, MAY, JUN, JUL, NOV, DEC
16
16
  from holidays.calendars.julian import JULIAN_CALENDAR
17
+ from holidays.constants import PUBLIC, WORKDAY
17
18
  from holidays.groups import ChristianHolidays, InternationalHolidays, StaticHolidays
18
19
  from holidays.holiday_base import HolidayBase
19
20
 
@@ -23,18 +24,24 @@ class Belarus(HolidayBase, ChristianHolidays, InternationalHolidays, StaticHolid
23
24
  Belarus holidays.
24
25
 
25
26
  References:
26
- - http://president.gov.by/en/holidays_en/
27
+ - https://president.gov.by/en/gosudarstvo/prazdniki
28
+ - https://president.gov.by/be/gosudarstvo/prazdniki
29
+ - https://president.gov.by/ru/gosudarstvo/prazdniki
27
30
  - http://www.belarus.by/en/about-belarus/national-holidays
28
31
  - http://laws.newsby.org/documents/ukazp/pos05/ukaz05806.htm
29
32
  - http://president.gov.by/uploads/documents/2019/464uk.pdf
30
- - https://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%B0%D0%B7%D0%B4%D0%BD%D0%B8%D0%BA%D0%B8_%D0%91%D0%B5%D0%BB%D0%BE%D1%80%D1%83%D1%81%D1%81%D0%B8%D0%B8
33
+ - https://ru.wikipedia.org/wiki/Праздники_Белоруссии
34
+
35
+ Cross-checked With:
36
+ - https://president.gov.by/en/gosudarstvo/prazdniki/calendar-2024
31
37
  """
32
38
 
33
39
  country = "BY"
34
40
  default_language = "be"
35
- supported_languages = ("be", "en_US")
36
- # The current set of holidays actual from 1998.
37
- start_year = 1998
41
+ supported_categories = (PUBLIC, WORKDAY)
42
+ supported_languages = ("be", "en_US", "ru", "th")
43
+ # Declaration of State Sovereignty of the BSSR.
44
+ start_year = 1991
38
45
 
39
46
  def __init__(self, *args, **kwargs):
40
47
  ChristianHolidays.__init__(self, JULIAN_CALENDAR)
@@ -44,10 +51,10 @@ class Belarus(HolidayBase, ChristianHolidays, InternationalHolidays, StaticHolid
44
51
 
45
52
  def _populate_public_holidays(self):
46
53
  # New Year's Day.
47
- self._add_new_years_day(tr("Новы год"))
48
-
54
+ name = tr("Новы год")
55
+ self._add_new_years_day(name)
49
56
  if self._year >= 2020:
50
- self._add_new_years_day_two(tr("Новы год"))
57
+ self._add_new_years_day_two(name)
51
58
 
52
59
  # Orthodox Christmas Day.
53
60
  self._add_christmas_day(tr("Нараджэнне Хрыстова (праваслаўнае Раство)"))
@@ -55,8 +62,9 @@ class Belarus(HolidayBase, ChristianHolidays, InternationalHolidays, StaticHolid
55
62
  # Women's Day.
56
63
  self._add_womens_day(tr("Дзень жанчын"))
57
64
 
58
- # Radunitsa (Day of Rejoicing).
59
- self._add_rejoicing_day(tr("Радаўніца"))
65
+ if 1995 <= self._year <= 1998:
66
+ # Constitution Day.
67
+ self._add_holiday_mar_15(tr("Дзень Канстытуцыі"))
60
68
 
61
69
  # Labor Day.
62
70
  self._add_labor_day(tr("Свята працы"))
@@ -64,15 +72,70 @@ class Belarus(HolidayBase, ChristianHolidays, InternationalHolidays, StaticHolid
64
72
  # Victory Day.
65
73
  self._add_world_war_two_victory_day(tr("Дзень Перамогі"), is_western=False)
66
74
 
67
- # Independence Day.
68
- self._add_holiday_jul_3(tr("Дзень Незалежнасці Рэспублікі Беларусь (Дзень Рэспублікі)"))
75
+ # Radunitsa (Day of Rejoicing).
76
+ self._add_rejoicing_day(tr("Радаўніца"))
77
+
78
+ # Independence Day of the Republic of Belarus (Day of the Republic).
79
+ name = tr("Дзень Незалежнасці Рэспублікі Беларусь (Дзень Рэспублікі)")
80
+ if self._year >= 1997:
81
+ self._add_holiday_jul_3(name)
82
+ else:
83
+ self._add_holiday_jul_27(name)
69
84
 
70
- # October Revolution Day.
71
- self._add_holiday_nov_7(tr("Дзень Кастрычніцкай рэвалюцыі"))
85
+ if self._year >= 1995:
86
+ # October Revolution Day.
87
+ self._add_holiday_nov_7(tr("Дзень Кастрычніцкай рэвалюцыі"))
72
88
 
73
89
  # Catholic Christmas Day.
74
90
  self._add_christmas_day(tr("Нараджэнне Хрыстова (каталіцкае Раство)"), GREGORIAN_CALENDAR)
75
91
 
92
+ if self._year >= 1992:
93
+ # Catholic Easter.
94
+ name_catholic = tr("Каталiцкi Вялiкдзень")
95
+ self._add_easter_sunday(name_catholic, GREGORIAN_CALENDAR)
96
+
97
+ # Orthodox Easter.
98
+ name_orthodox = tr("Праваслаўны Вялiкдзень")
99
+ self._add_easter_sunday(name_orthodox)
100
+
101
+ if self._year <= 1997:
102
+ self._add_easter_monday(name_catholic, GREGORIAN_CALENDAR)
103
+ self._add_easter_monday(name_orthodox)
104
+
105
+ # Dzyady (All Souls' Day).
106
+ self._add_all_souls_day(tr("Дзень памяці"))
107
+
108
+ def _populate_workday_holidays(self):
109
+ # Day of the Fatherland's Defenders and the Armed Forces of the Republic of Belarus.
110
+ self._add_holiday_feb_23(tr("Дзень абаронцаў Айчыны і Узброеных Сіл Рэспублікі Беларусь"))
111
+
112
+ if self._year >= 1999:
113
+ # Constitution Day.
114
+ self._add_holiday_mar_15(tr("Дзень Канстытуцыі"))
115
+
116
+ if self._year >= 1996:
117
+ # Day of Unity of the Peoples of Belarus and Russia.
118
+ self._add_holiday_apr_2(tr("Дзень яднання народаў Беларусі і Расіі"))
119
+
120
+ if self._year >= 1998:
121
+ self._add_holiday_2nd_sun_of_may(
122
+ # Day of the National Coat of Arms of the Republic of Belarus,
123
+ # the National Flag of the Republic of Belarus
124
+ # and the National Anthem of the Republic of Belarus.
125
+ tr(
126
+ "Дзень Дзяржаўнага сцяга, Дзяржаўнага герба і Дзяржаўнага "
127
+ "гімна Рэспублікі Беларусь"
128
+ )
129
+ )
130
+
131
+ if self._year >= 2021:
132
+ # Day of People's Unity.
133
+ self._add_holiday_sep_17(tr("Дзень народнага адзінства"))
134
+
135
+ if self._year >= 1998:
136
+ # Dzyady (All Souls' Day).
137
+ self._add_all_souls_day(tr("Дзень памяці"))
138
+
76
139
 
77
140
  class BY(Belarus):
78
141
  pass
@@ -83,6 +146,12 @@ class BLR(Belarus):
83
146
 
84
147
 
85
148
  class BelarusStaticHolidays:
149
+ """
150
+ References
151
+ - https://belarusbank.by/en/financial-institutions/11151
152
+ - https://belarusbank.by/en/financial-institutions/11160
153
+ """
154
+
86
155
  # Date format (see strftime() Format Codes)
87
156
  substituted_date_format = tr("%d.%m.%Y")
88
157
  # Day off (substituted from %s).
@@ -221,4 +290,14 @@ class BelarusStaticHolidays:
221
290
  (MAY, 8, MAY, 13),
222
291
  (NOV, 6, NOV, 11),
223
292
  ),
293
+ 2024: (
294
+ (MAY, 13, MAY, 18),
295
+ (NOV, 8, NOV, 16),
296
+ ),
297
+ 2025: (
298
+ (JAN, 6, JAN, 11),
299
+ (APR, 28, APR, 26),
300
+ (JUL, 4, JUL, 12),
301
+ (DEC, 26, DEC, 20),
302
+ ),
224
303
  }
@@ -83,7 +83,7 @@ class Bolivia(ObservedHolidayBase, ChristianHolidays, InternationalHolidays):
83
83
  self._add_good_friday(tr("Viernes Santo"))
84
84
 
85
85
  # Labor Day.
86
- self._add_observed(may_1 := self._add_labor_day(self.tr("Día del Trabajo")))
86
+ self._add_observed(may_1 := self._add_labor_day(tr("Día del Trabajo")))
87
87
  # Supreme Decree #1210.
88
88
  if 2012 <= self._year <= 2015:
89
89
  self._add_observed(may_1, rule=TUE_TO_PREV_MON + THU_TO_NEXT_FRI)
@@ -224,7 +224,7 @@ class BosniaAndHerzegovina(
224
224
 
225
225
  self._add_holiday_nov_21(
226
226
  # Dayton Agreement Day.
227
- tr("Dan uspostave Opšteg okvirnog sporazuma za mir u Bosni i Hercegovini"),
227
+ tr("Dan uspostave Opšteg okvirnog sporazuma za mir u Bosni i Hercegovini")
228
228
  )
229
229
 
230
230
  # Catholic Christmas Eve.
@@ -128,7 +128,7 @@ class Cambodia(HolidayBase, InternationalHolidays, StaticHolidays, ThaiCalendarH
128
128
  # NORODOM SIHAMONI, King of Cambodia
129
129
  "ព្រះរាជពិធីបុណ្យចម្រើនព្រះជន្ម ព្រះករុណា ព្រះបាទសម្តេចព្រះបរមនាថ នរោត្តម សីហមុនី"
130
130
  )
131
- dt = self._add_holiday_may_14(king_sihamoni_bday)
131
+ self._add_holiday_may_14(king_sihamoni_bday)
132
132
  if self._year <= 2019:
133
133
  self._add_holiday_may_13(king_sihamoni_bday)
134
134
  self._add_holiday_may_15(king_sihamoni_bday)
@@ -159,7 +159,7 @@ class Cambodia(HolidayBase, InternationalHolidays, StaticHolidays, ThaiCalendarH
159
159
  if self._year >= 1994:
160
160
  self._add_holiday_jun_18(
161
161
  # Birthday of Her Majesty the Queen-Mother NORODOM MONINEATH SIHANOUK of Cambodia
162
- tr("ព្រះរាជពិធីបុណ្យចម្រើនព្រះជន្ម សម្តេចព្រះមហាក្សត្រី ព្រះវររាជមាតា នរោត្តម មុនិនាថ សីហនុ"),
162
+ tr("ព្រះរាជពិធីបុណ្យចម្រើនព្រះជន្ម សម្តេចព្រះមហាក្សត្រី ព្រះវររាជមាតា នរោត្តម មុនិនាថ សីហនុ")
163
163
  )
164
164
 
165
165
  # ទិវាប្រកាសរដ្ឋធម្មនុញ្ញ
@@ -176,13 +176,12 @@ class Cambodia(HolidayBase, InternationalHolidays, StaticHolidays, ThaiCalendarH
176
176
 
177
177
  if self._year >= 2012:
178
178
  self._add_holiday_oct_15(
179
- # Mourning Day of the Late King-Father
180
- # NORODOM SIHANOUK of Cambodia
179
+ # Mourning Day of the Late King-Father NORODOM SIHANOUK of Cambodia
181
180
  tr(
182
181
  "ទិវាប្រារព្ឋពិធីគោរពព្រះវិញ្ញាណក្ខន្ឋ ព្រះករុណា ព្រះបាទសម្តេចព្រះ នរោត្តម "
183
182
  "សីហនុ ព្រះមហាវីរក្សត្រ ព្រះវររាជបិតាឯករាជ្យ បូរណភាពទឹកដី និងឯកភាពជាតិខ្មែរ "
184
183
  "ព្រះបរមរតនកោដ្ឋ"
185
- ),
184
+ )
186
185
  )
187
186
 
188
187
  # ទិវារំលឹកសន្ធិសញ្ញាសន្តិភាពទីក្រុងប៉ារីស
@@ -207,7 +206,7 @@ class Cambodia(HolidayBase, InternationalHolidays, StaticHolidays, ThaiCalendarH
207
206
  "ព្រះរាជពិធីគ្រងព្រះបរមរាជសម្បត្តិ របស់ ព្រះករុណា "
208
207
  "ព្រះបាទសម្តេចព្រះបរមនាថ នរោត្តម សីហមុនី "
209
208
  "ព្រះមហាក្សត្រនៃព្រះរាជាណាចក្រកម្ពុជា"
210
- ),
209
+ )
211
210
  )
212
211
 
213
212
  # ពិធីបុណ្យឯករាជ្យជាតិ
@@ -226,7 +225,7 @@ class Cambodia(HolidayBase, InternationalHolidays, StaticHolidays, ThaiCalendarH
226
225
  self._add_holiday_dec_10(tr("ទិវាសិទ្ធិមនុស្សអន្តរជាតិ"))
227
226
 
228
227
  # Cambodian Lunar Calendar Holidays
229
- # See `_ThaiLunisolar` in holidays/utils.py for more details.
228
+ # See `_ThaiLunisolar` in holidays/calendars/thai.py for more details.
230
229
  # Cambodian Lunar Calendar Holidays only work from 1941 to 2157.
231
230
 
232
231
  # ពិធីបុណ្យមាឃបូជា
@@ -236,14 +236,13 @@ class Canada(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, Stat
236
236
 
237
237
  def _populate_subdiv_mb_optional_holidays(self):
238
238
  if self._year >= 1900:
239
- name = (
239
+ self._add_holiday_1st_mon_of_aug(
240
240
  # Terry Fox Day.
241
241
  tr("Terry Fox Day")
242
242
  if self._year >= 2015
243
243
  # Civic Holiday.
244
244
  else tr("Civic Holiday")
245
245
  )
246
- self._add_holiday_1st_mon_of_aug(name)
247
246
 
248
247
  if self._year >= 1931:
249
248
  # Remembrance Day.
@@ -143,10 +143,8 @@ class Chile(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, Stati
143
143
  # Day of National Liberation.
144
144
  self._add_holiday_sep_11(tr("Día de la Liberación Nacional"))
145
145
  elif 1999 <= self._year <= 2001:
146
- self._add_holiday_1st_mon_of_sep(
147
- # Day of National Unity.
148
- tr("Día de la Unidad Nacional")
149
- )
146
+ # Day of National Unity.
147
+ self._add_holiday_1st_mon_of_sep(tr("Día de la Unidad Nacional"))
150
148
 
151
149
  if self._year >= 2007:
152
150
  self._add_observed(
@@ -168,14 +166,15 @@ class Chile(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, Stati
168
166
  self._add_holiday_sep_20(tr("Fiestas Patrias"))
169
167
 
170
168
  if self._year >= 1922 and self._year != 1973:
171
- name = (
172
- # Meeting of Two Worlds' Day.
173
- tr("Día del Encuentro de dos Mundos")
174
- if self._year >= 2000
175
- # Columbus Day.
176
- else tr("Día de la Raza")
169
+ self._move_holiday(
170
+ self._add_columbus_day(
171
+ # Meeting of Two Worlds' Day.
172
+ tr("Día del Encuentro de dos Mundos")
173
+ if self._year >= 2000
174
+ # Columbus Day.
175
+ else tr("Día de la Raza")
176
+ )
177
177
  )
178
- self._move_holiday(self._add_columbus_day(name))
179
178
 
180
179
  if self._year >= 2008:
181
180
  # This holiday is moved to the preceding Friday if it falls on a Tuesday,