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
@@ -106,7 +106,7 @@ class CostaRica(ObservedHolidayBase, ChristianHolidays, InternationalHolidays):
106
106
  if self._year >= 2021:
107
107
  aug_31 = self._add_holiday_aug_31(
108
108
  # Day of the Black Person and Afro-Costa Rican Culture.
109
- self.tr("Día de la Persona Negra y la Cultura Afrocostarricense")
109
+ tr("Día de la Persona Negra y la Cultura Afrocostarricense")
110
110
  )
111
111
  if self._year in {2021, 2022, 2023}:
112
112
  # Move to next Sunday.
@@ -67,14 +67,13 @@ class Croatia(HolidayBase, ChristianHolidays, InternationalHolidays):
67
67
  # Anti-Fascist Struggle Day.
68
68
  self._add_holiday_jun_22(tr("Dan antifašističke borbe"))
69
69
 
70
- name = (
70
+ self._add_holiday_aug_5(
71
71
  # Victory and Homeland Thanksgiving Day and Croatian Veterans Day.
72
72
  tr("Dan pobjede i domovinske zahvalnosti i Dan hrvatskih branitelja")
73
73
  if self._year >= 2008
74
74
  # Victory and Homeland Thanksgiving Day.
75
75
  else tr("Dan pobjede i domovinske zahvalnosti")
76
76
  )
77
- self._add_holiday_aug_5(name)
78
77
 
79
78
  # Assumption Day.
80
79
  self._add_assumption_of_mary_day(tr("Velika Gospa"))
@@ -36,7 +36,7 @@ class Czechia(HolidayBase, ChristianHolidays, InternationalHolidays):
36
36
  tr("Den obnovy samostatného českého státu")
37
37
  if self._year >= 2000
38
38
  # New Year's Day.
39
- else tr("Nový rok"),
39
+ else tr("Nový rok")
40
40
  )
41
41
 
42
42
  if self._year <= 1951 or self._year >= 2016:
@@ -75,14 +75,13 @@ class Dominica(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, St
75
75
  # Whit Monday.
76
76
  self._add_whit_monday("Whit Monday")
77
77
 
78
- first_monday_of_august_holiday_name = (
78
+ self._add_holiday_1st_mon_of_aug(
79
79
  # Emancipation Day.
80
80
  "Emancipation Day"
81
81
  if self._year >= 1998
82
82
  # First Monday of August.
83
83
  else "First Monday of August"
84
84
  )
85
- self._add_holiday_1st_mon_of_aug(first_monday_of_august_holiday_name)
86
85
 
87
86
  # Independence Day.
88
87
  self._add_observed(self._add_holiday_nov_3("Independence Day"), rule=SUN_TO_NEXT_TUE)
@@ -10,6 +10,8 @@
10
10
  # Website: https://github.com/vacanza/holidays
11
11
  # License: MIT (see LICENSE file)
12
12
 
13
+ from gettext import gettext as tr
14
+
13
15
  from holidays.groups import ChristianHolidays, InternationalHolidays
14
16
  from holidays.holiday_base import HolidayBase
15
17
 
@@ -17,12 +19,14 @@ from holidays.holiday_base import HolidayBase
17
19
  class ElSalvador(HolidayBase, ChristianHolidays, InternationalHolidays):
18
20
  """
19
21
  References:
20
- - https://www.transparencia.gob.sv/institutions/gd-usulutan/documents/192280/download
21
- - https://www.timeanddate.com/holidays/el-salvador
22
- - https://www.officeholidays.com/countries/el-salvador
22
+ - `Labor Code 1972 <https://www.transparencia.gob.sv/institutions/gd-usulutan/documents/192280/download>`_
23
+ - https://www.timeanddate.com/holidays/el-salvador
24
+ - https://www.officeholidays.com/countries/el-salvador
23
25
  """
24
26
 
25
27
  country = "SV"
28
+ default_language = "es"
29
+ supported_languages = ("en_US", "es", "uk")
26
30
  subdivisions = (
27
31
  "AH", # Ahuachapán
28
32
  "CA", # Cabañas
@@ -39,6 +43,24 @@ class ElSalvador(HolidayBase, ChristianHolidays, InternationalHolidays):
39
43
  "UN", # La Unión
40
44
  "US", # Usulután
41
45
  )
46
+ subdivisions_aliases = {
47
+ "Ahuachapán": "AH",
48
+ "Cabañas": "CA",
49
+ "Chalatenango": "CH",
50
+ "Cuscatlán": "CU",
51
+ "La Libertad": "LI",
52
+ "Morazán": "MO",
53
+ "La Paz": "PA",
54
+ "Santa Ana": "SA",
55
+ "San Miguel": "SM",
56
+ "Sonsonate": "SO",
57
+ "San Salvador": "SS",
58
+ "San Vicente": "SV",
59
+ "La Unión": "UN",
60
+ "Usulután": "US",
61
+ }
62
+ # Labor Code 1972.
63
+ start_year = 1973
42
64
 
43
65
  def __init__(self, *args, **kwargs):
44
66
  ChristianHolidays.__init__(self)
@@ -47,48 +69,47 @@ class ElSalvador(HolidayBase, ChristianHolidays, InternationalHolidays):
47
69
 
48
70
  def _populate_public_holidays(self):
49
71
  # New Year's Day.
50
- self._add_new_years_day("New Year's Day")
72
+ self._add_new_years_day(tr("Año Nuevo"))
51
73
 
52
74
  # Maundy Thursday.
53
- self._add_holy_thursday("Maundy Thursday")
75
+ self._add_holy_thursday(tr("Jueves Santo"))
54
76
 
55
77
  # Good Friday.
56
- self._add_good_friday("Good Friday")
78
+ self._add_good_friday(tr("Viernes Santo"))
57
79
 
58
80
  # Holy Saturday.
59
- self._add_holy_saturday("Holy Saturday")
81
+ self._add_holy_saturday(tr("Sábado Santo"))
60
82
 
61
83
  # Labor Day.
62
- self._add_labor_day("Labor Day")
84
+ self._add_labor_day(tr("Día del Trabajo"))
63
85
 
86
+ # Legislative Decree #399 from Apr 14, 2016.
64
87
  if self._year >= 2016:
65
- # Legislative Decree #399 from Apr 14, 2016
66
- # Mothers' Day.
67
- self._add_holiday_may_10("Mothers' Day")
88
+ # Mother's Day.
89
+ self._add_holiday_may_10(tr("Día de la Madre"))
68
90
 
91
+ # Legislative Decree #208 from Jun 17, 2012.
69
92
  if self._year >= 2013:
70
- # Legislative Decree #208 from Jun 17, 2012
71
- # Fathers' Day.
72
- self._add_holiday_jun_17("Fathers' Day")
93
+ # Father's Day.
94
+ self._add_holiday_jun_17(tr("Día del Padre"))
73
95
 
74
- # Feast of San Salvador.
75
- self._add_holiday_aug_6("Feast of San Salvador")
96
+ # Celebrations of San Salvador.
97
+ self._add_holiday_aug_6(tr("Celebración del Divino Salvador del Mundo"))
76
98
 
77
99
  # Independence Day.
78
- self._add_holiday_sep_15("Independence Day")
100
+ self._add_holiday_sep_15(tr("Día de la Independencia"))
79
101
 
80
102
  # All Souls' Day.
81
- self._add_all_souls_day("All Souls' Day")
103
+ self._add_all_souls_day(tr("Día de los Difuntos"))
82
104
 
83
105
  # Christmas Day.
84
- self._add_christmas_day("Christmas Day")
106
+ self._add_christmas_day(tr("Navidad"))
85
107
 
86
108
  def _populate_subdiv_ss_public_holidays(self):
87
- # San Salvador Day 1.
88
- self._add_holiday_aug_3("San Salvador Day 1")
89
-
90
- # San Salvador Day 2.
91
- self._add_holiday_aug_5("San Salvador Day 2")
109
+ # Feast of San Salvador.
110
+ name = tr("Fiesta de San Salvador")
111
+ self._add_holiday_aug_3(name)
112
+ self._add_holiday_aug_5(name)
92
113
 
93
114
 
94
115
  class SV(ElSalvador):
@@ -35,18 +35,33 @@ class France(HolidayBase, ChristianHolidays, InternationalHolidays):
35
35
  default_language = "fr"
36
36
  supported_languages = ("en_US", "fr", "uk")
37
37
  subdivisions = (
38
- "BL", # Saint Barthelemy.
38
+ "BL", # Saint-Barthélemy.
39
39
  "GES", # Alsace, Champagne-Ardenne, Lorraine(Moselle).
40
40
  "GP", # Guadeloupe.
41
41
  "GY", # Guyane.
42
- "MF", # Saint Martin.
42
+ "MF", # Saint-Martin.
43
43
  "MQ", # Martinique.
44
44
  "NC", # Nouvelle-Calédonie,
45
45
  "PF", # Polynésie Française.
46
- "RE", # Reunion.
46
+ "RE", # La Réunion.
47
47
  "WF", # Wallis-et-Futuna.
48
48
  "YT", # Mayotte.
49
49
  )
50
+ subdivisions_aliases = {
51
+ "Saint-Barthélemy": "BL",
52
+ "Alsace": "GES",
53
+ "Champagne-Ardenne": "GES",
54
+ "Lorraine": "GES",
55
+ "Guadeloupe": "GP",
56
+ "Guyane": "GY",
57
+ "Saint-Martin": "MF",
58
+ "Martinique": "MQ",
59
+ "Nouvelle-Calédonie": "NC",
60
+ "Polynésie Française": "PF",
61
+ "La Réunion": "RE",
62
+ "Wallis-et-Futuna": "WF",
63
+ "Mayotte": "YT",
64
+ }
50
65
 
51
66
  _deprecated_subdivisions = (
52
67
  "Alsace-Moselle",
@@ -54,7 +54,7 @@ class Hungary(HolidayBase, ChristianHolidays, InternationalHolidays, StaticHolid
54
54
 
55
55
  def _populate_public_holidays(self):
56
56
  # New Year's Day.
57
- self._add_new_years_day(self.tr("Újév"))
57
+ self._add_new_years_day(tr("Újév"))
58
58
 
59
59
  if 1945 <= self._year <= 1950 or self._year >= 1989:
60
60
  # National Day.
@@ -90,7 +90,7 @@ class Hungary(HolidayBase, ChristianHolidays, InternationalHolidays, StaticHolid
90
90
  tr("A kenyér ünnepe")
91
91
  if 1950 <= self._year <= 1989
92
92
  # State Foundation Day.
93
- else tr("Az államalapítás ünnepe"),
93
+ else tr("Az államalapítás ünnepe")
94
94
  )
95
95
 
96
96
  if self._year >= 1991:
@@ -12,20 +12,9 @@
12
12
 
13
13
  from gettext import gettext as tr
14
14
 
15
- from holidays.calendars import _HebrewLunisolar
16
15
  from holidays.calendars.gregorian import _timedelta, FRI, SAT
17
- from holidays.calendars.hebrew import (
18
- HANUKKAH,
19
- INDEPENDENCE_DAY,
20
- LAG_BAOMER,
21
- PASSOVER,
22
- PURIM,
23
- ROSH_HASHANAH,
24
- SHAVUOT,
25
- SUKKOT,
26
- YOM_KIPPUR,
27
- )
28
16
  from holidays.constants import OPTIONAL, PUBLIC, SCHOOL
17
+ from holidays.groups import HebrewCalendarHolidays
29
18
  from holidays.observed_holiday_base import (
30
19
  ObservedHolidayBase,
31
20
  MON_TO_NEXT_TUE,
@@ -38,7 +27,7 @@ from holidays.observed_holiday_base import (
38
27
  )
39
28
 
40
29
 
41
- class Israel(ObservedHolidayBase):
30
+ class Israel(ObservedHolidayBase, HebrewCalendarHolidays):
42
31
  """
43
32
  Israel holidays.
44
33
 
@@ -57,118 +46,103 @@ class Israel(ObservedHolidayBase):
57
46
  start_year = 1948
58
47
 
59
48
  def __init__(self, *args, **kwargs):
49
+ HebrewCalendarHolidays.__init__(self)
60
50
  kwargs.setdefault("observed_rule", FRI_TO_PREV_THU + SAT_TO_PREV_THU)
61
51
  super().__init__(*args, **kwargs)
62
52
 
63
- def _get_holiday(self, holiday: str):
64
- return _HebrewLunisolar._get_holiday(holiday, self._year)
53
+ def _add_observed(self, dt, name, rule):
54
+ is_observed, _ = super()._add_observed(dt, name, rule)
55
+ if not is_observed:
56
+ self._add_holiday(name, dt)
65
57
 
66
58
  def _populate_public_holidays(self):
67
59
  # Rosh Hashanah (New Year).
68
- name = tr("ראש השנה")
69
- rosh_hashanah_dt = self._get_holiday(ROSH_HASHANAH)
70
- self._add_holiday(name, rosh_hashanah_dt)
71
- self._add_holiday(name, _timedelta(rosh_hashanah_dt, +1))
60
+ self._add_rosh_hashanah(tr("ראש השנה"), range(2))
72
61
 
73
62
  # Yom Kippur (Day of Atonement).
74
- self._add_holiday(tr("יום כיפור"), self._get_holiday(YOM_KIPPUR))
63
+ self._add_yom_kippur(tr("יום כיפור"))
75
64
 
76
65
  # Sukkot (Feast of Tabernacles).
77
- name = tr("סוכות")
78
- sukkot_dt = self._get_holiday(SUKKOT)
79
- self._add_holiday(name, sukkot_dt)
66
+ self._add_sukkot(tr("סוכות"))
80
67
  # Simchat Torah / Shemini Atzeret.
81
- self._add_holiday(tr("שמחת תורה/שמיני עצרת"), _timedelta(sukkot_dt, +7))
68
+ self._add_sukkot(tr("שמחת תורה/שמיני עצרת"), +7)
82
69
 
83
- passover_dt = self._get_holiday(PASSOVER)
84
70
  # Pesach (Passover).
85
- self._add_holiday(tr("פסח"), passover_dt)
71
+ self._add_passover(tr("פסח"))
86
72
  # Shvi'i shel Pesach (Seventh day of Passover)
87
- self._add_holiday(tr("שביעי של פסח"), _timedelta(passover_dt, +6))
73
+ self._add_passover(tr("שביעי של פסח"), +6)
88
74
 
89
- # Yom Ha-Atzmaut (Independence Day).
90
- name = tr("יום העצמאות")
91
- independence_day_dt = self._get_holiday(INDEPENDENCE_DAY)
92
75
  rule = FRI_TO_PREV_THU + SAT_TO_PREV_THU
93
76
  if self._year >= 2004:
94
77
  rule += MON_TO_NEXT_TUE
95
- is_observed, _ = self._add_observed(independence_day_dt, name, rule)
96
- if not is_observed:
97
- self._add_holiday(name, independence_day_dt)
78
+ self._add_observed(
79
+ self._hebrew_calendar.israel_independence_date(self._year),
80
+ # Yom Ha-Atzmaut (Independence Day).
81
+ tr("יום העצמאות"),
82
+ rule,
83
+ )
98
84
 
99
85
  # Shavuot.
100
- self._add_holiday(tr("שבועות"), self._get_holiday(SHAVUOT))
86
+ self._add_shavuot(tr("שבועות"))
101
87
 
102
88
  def _populate_optional_holidays(self):
103
- sukkot_dt = self._get_holiday(SUKKOT)
104
- for offset in range(1, 6):
105
- # Chol HaMoed Sukkot (Feast of Tabernacles holiday).
106
- self._add_holiday(tr("חול המועד סוכות"), _timedelta(sukkot_dt, offset))
89
+ # Chol HaMoed Sukkot (Feast of Tabernacles holiday).
90
+ self._add_sukkot(tr("חול המועד סוכות"), range(1, 6))
107
91
 
108
92
  if self._year >= 2008:
109
93
  # Sigd.
110
- self._add_holiday(tr("סיגד"), _timedelta(self._get_holiday(YOM_KIPPUR), +49))
94
+ self._add_yom_kippur(tr("סיגד"), +49)
111
95
 
112
96
  # Purim.
113
- self._add_holiday(tr("פורים"), self._get_holiday(PURIM))
97
+ self._add_purim(tr("פורים"))
114
98
 
115
- passover_dt = self._get_holiday(PASSOVER)
116
- for offset in range(1, 6):
117
- # Chol HaMoed Pesach (Passover holiday).
118
- self._add_holiday(tr("חול המועד פסח"), _timedelta(passover_dt, offset))
99
+ # Chol HaMoed Pesach (Passover holiday).
100
+ self._add_passover(tr("חול המועד פסח"), range(1, 6))
119
101
 
120
102
  if self._year >= 1963:
121
- # Yom Hazikaron (Fallen Soldiers and Victims of Terrorism Remembrance Day).
122
- name = tr("יום הזיכרון לחללי מערכות ישראל ונפגעי פעולות האיבה")
123
- remembrance_day_dt = _timedelta(self._get_holiday(INDEPENDENCE_DAY), -1)
124
103
  rule = THU_TO_PREV_WED + FRI_TO_PREV_WED
125
104
  if self._year >= 2004:
126
105
  rule += SUN_TO_NEXT_MON
127
- is_observed, _ = self._add_observed(remembrance_day_dt, name, rule)
128
- if not is_observed:
129
- self._add_holiday(name, remembrance_day_dt)
106
+ self._add_observed(
107
+ _timedelta(self._hebrew_calendar.israel_independence_date(self._year), -1),
108
+ # Yom Hazikaron (Fallen Soldiers and Victims of Terrorism Remembrance Day).
109
+ tr("יום הזיכרון לחללי מערכות ישראל ונפגעי פעולות האיבה"),
110
+ rule,
111
+ )
130
112
 
131
113
  if self._year >= 1998:
132
114
  # Yom Yerushalayim (Jerusalem Day).
133
- self._add_holiday(tr("יום ירושלים"), _timedelta(self._get_holiday(LAG_BAOMER), +10))
115
+ self._add_lag_baomer(tr("יום ירושלים"), +10)
134
116
 
135
- # Tisha B'Av (Tisha B'Av, fast).
136
- name = tr("תשעה באב")
137
- tisha_bav_dt = self._get_holiday("TISHA_BAV")
138
- is_observed, _ = self._add_observed(tisha_bav_dt, name, SAT_TO_NEXT_SUN)
139
- if not is_observed:
140
- self._add_holiday(name, tisha_bav_dt)
117
+ self._add_observed(
118
+ self._hebrew_calendar.tisha_bav_date(self._year),
119
+ # Tisha B'Av (Tisha B'Av, fast).
120
+ tr("תשעה באב"),
121
+ SAT_TO_NEXT_SUN,
122
+ )
141
123
 
142
124
  def _populate_school_holidays(self):
143
- sukkot_dt = self._get_holiday(SUKKOT)
144
- for offset in range(1, 6):
145
- # Chol HaMoed Sukkot (Feast of Tabernacles holiday).
146
- self._add_holiday(tr("חול המועד סוכות"), _timedelta(sukkot_dt, offset))
147
-
148
- for year in (self._year - 1, self._year):
149
- hanukkah_dt = _HebrewLunisolar._get_holiday(HANUKKAH, year)
150
- for offset in range(8):
151
- # Hanukkah.
152
- self._add_holiday(tr("חנוכה"), _timedelta(hanukkah_dt, offset))
153
-
154
- # Ta`anit Ester (Fast of Esther).
155
- name = tr("תענית אסתר")
156
- purim_dt = self._get_holiday(PURIM)
157
- taanit_ester_dt = _timedelta(purim_dt, -1)
158
- is_observed, _ = self._add_observed(taanit_ester_dt, name, SAT_TO_PREV_THU)
159
- if not is_observed:
160
- self._add_holiday(name, taanit_ester_dt)
125
+ # Chol HaMoed Sukkot (Feast of Tabernacles holiday).
126
+ self._add_sukkot(tr("חול המועד סוכות"), range(1, 6))
127
+
128
+ # Hanukkah.
129
+ self._add_hanukkah(tr("חנוכה"), range(8))
130
+
131
+ self._add_observed(
132
+ _timedelta(self._hebrew_calendar.purim_date(self._year), -1),
133
+ # Ta`anit Ester (Fast of Esther).
134
+ tr("תענית אסתר"),
135
+ SAT_TO_PREV_THU,
136
+ )
161
137
 
162
138
  # Purim.
163
- self._add_holiday(tr("פורים"), purim_dt)
139
+ self._add_purim(tr("פורים"))
164
140
 
165
- passover_dt = self._get_holiday(PASSOVER)
166
- for offset in range(1, 6):
167
- # Chol HaMoed Pesach (Passover holiday).
168
- self._add_holiday(tr("חול המועד פסח"), _timedelta(passover_dt, offset))
141
+ # Chol HaMoed Pesach (Passover holiday).
142
+ self._add_passover(tr("חול המועד פסח"), range(1, 6))
169
143
 
170
144
  # Lag Ba'omer (Lag BaOmer).
171
- self._add_holiday(tr('ל"ג בעומר'), self._get_holiday(LAG_BAOMER))
145
+ self._add_lag_baomer(tr('ל"ג בעומר'))
172
146
 
173
147
 
174
148
  class IL(Israel):
@@ -74,6 +74,10 @@ class Kazakhstan(
74
74
  - `2022 <https://adilet.zan.kz/kaz/docs/P2200000796>`_
75
75
  - `2023 <https://adilet.zan.kz/kaz/docs/P2300000326>`_
76
76
  - `2024 <https://adilet.zan.kz/kaz/docs/G24G0000109>`_
77
+ - `2025 <https://adilet.zan.kz/kaz/docs/G24G0000436>`_
78
+
79
+ Islamic holidays:
80
+ - 2025: `<https://en.inform.kz/news/first-day-of-ramadan-to-fall-on-march-1-2025-ca393f/>`_
77
81
  """
78
82
 
79
83
  country = "KZ"
@@ -195,6 +199,7 @@ class KazakhstanIslamicHolidays(_CustomIslamicHolidays):
195
199
  2022: (JUL, 9),
196
200
  2023: (JUN, 28),
197
201
  2024: (JUN, 16),
202
+ 2025: (JUN, 6),
198
203
  }
199
204
 
200
205
 
@@ -273,7 +278,6 @@ class KazakhstanStaticHolidays:
273
278
  2019: (MAY, 10, MAY, 4),
274
279
  2020: (
275
280
  (JAN, 3, JAN, 5),
276
- (MAY, 8, MAY, 11),
277
281
  (DEC, 18, DEC, 20),
278
282
  ),
279
283
  2021: (JUL, 5, JUL, 3),
@@ -284,8 +288,10 @@ class KazakhstanStaticHolidays:
284
288
  ),
285
289
  2023: (JUL, 7, JUL, 1),
286
290
  2024: (MAY, 8, MAY, 4),
291
+ 2025: (JAN, 3, JAN, 5),
287
292
  }
288
293
 
289
294
  special_public_holidays_observed = {
290
- 2020: (MAY, 8, MAY, 11),
295
+ # Victory Day.
296
+ 2020: (MAY, 8, tr("Жеңіс күні")),
291
297
  }
@@ -55,10 +55,8 @@ class Latvia(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, Stat
55
55
  self._add_labor_day(tr("Darba svētki"))
56
56
 
57
57
  if self._year >= 2002:
58
- dt = self._add_holiday_may_4(
59
- # Restoration of Independence Day.
60
- tr("Latvijas Republikas Neatkarības atjaunošanas diena")
61
- )
58
+ # Restoration of Independence Day.
59
+ dt = self._add_holiday_may_4(tr("Latvijas Republikas Neatkarības atjaunošanas diena"))
62
60
  if self._year >= 2008:
63
61
  self._add_observed(dt)
64
62
 
@@ -70,7 +70,7 @@ class Lithuania(HolidayBase, ChristianHolidays, InternationalHolidays):
70
70
  tr(
71
71
  "Valstybės (Lietuvos karaliaus Mindaugo karūnavimo) "
72
72
  "ir Tautiškos giesmės diena"
73
- ),
73
+ )
74
74
  )
75
75
 
76
76
  # Assumption Day.