holidays 0.47__py3-none-any.whl → 0.49__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 (64) hide show
  1. holidays/__init__.py +1 -1
  2. holidays/calendars/gregorian.py +31 -7
  3. holidays/calendars/persian.py +3 -2
  4. holidays/calendars/thai.py +24 -20
  5. holidays/countries/__init__.py +1 -0
  6. holidays/countries/angola.py +2 -2
  7. holidays/countries/aruba.py +2 -3
  8. holidays/countries/australia.py +1 -3
  9. holidays/countries/belgium.py +1 -2
  10. holidays/countries/bolivia.py +1 -2
  11. holidays/countries/brazil.py +1 -2
  12. holidays/countries/cambodia.py +7 -8
  13. holidays/countries/canada.py +2 -1
  14. holidays/countries/chile.py +6 -6
  15. holidays/countries/colombia.py +1 -2
  16. holidays/countries/curacao.py +3 -4
  17. holidays/countries/cyprus.py +1 -2
  18. holidays/countries/denmark.py +1 -2
  19. holidays/countries/finland.py +3 -3
  20. holidays/countries/france.py +1 -2
  21. holidays/countries/greece.py +11 -6
  22. holidays/countries/hongkong.py +398 -133
  23. holidays/countries/israel.py +13 -13
  24. holidays/countries/italy.py +2 -4
  25. holidays/countries/japan.py +17 -6
  26. holidays/countries/jersey.py +2 -2
  27. holidays/countries/laos.py +7 -23
  28. holidays/countries/madagascar.py +2 -3
  29. holidays/countries/malaysia.py +545 -235
  30. holidays/countries/moldova.py +1 -2
  31. holidays/countries/netherlands.py +2 -3
  32. holidays/countries/new_zealand.py +10 -11
  33. holidays/countries/palau.py +127 -0
  34. holidays/countries/portugal.py +2 -6
  35. holidays/countries/saudi_arabia.py +2 -3
  36. holidays/countries/south_korea.py +18 -5
  37. holidays/countries/sweden.py +2 -3
  38. holidays/countries/switzerland.py +2 -3
  39. holidays/countries/timor_leste.py +23 -1
  40. holidays/countries/united_states.py +1 -1
  41. holidays/countries/uruguay.py +3 -4
  42. holidays/financial/__init__.py +1 -0
  43. holidays/financial/ice_futures_europe.py +47 -0
  44. holidays/financial/ny_stock_exchange.py +17 -4
  45. holidays/groups/chinese.py +2 -3
  46. holidays/groups/christian.py +18 -19
  47. holidays/groups/international.py +10 -0
  48. holidays/groups/islamic.py +2 -2
  49. holidays/groups/persian.py +2 -2
  50. holidays/helpers.py +9 -3
  51. holidays/holiday_base.py +133 -66
  52. holidays/locale/en_US/LC_MESSAGES/MY.mo +0 -0
  53. holidays/locale/en_US/LC_MESSAGES/MY.po +250 -0
  54. holidays/locale/ms_MY/LC_MESSAGES/MY.mo +0 -0
  55. holidays/locale/ms_MY/LC_MESSAGES/MY.po +250 -0
  56. holidays/mixins.py +31 -0
  57. holidays/observed_holiday_base.py +25 -13
  58. holidays/registry.py +2 -0
  59. {holidays-0.47.dist-info → holidays-0.49.dist-info}/METADATA +29 -21
  60. {holidays-0.47.dist-info → holidays-0.49.dist-info}/RECORD +64 -57
  61. {holidays-0.47.dist-info → holidays-0.49.dist-info}/AUTHORS +0 -0
  62. {holidays-0.47.dist-info → holidays-0.49.dist-info}/LICENSE +0 -0
  63. {holidays-0.47.dist-info → holidays-0.49.dist-info}/WHEEL +0 -0
  64. {holidays-0.47.dist-info → holidays-0.49.dist-info}/top_level.txt +0 -0
@@ -10,10 +10,10 @@
10
10
  # Website: https://github.com/vacanza/python-holidays
11
11
  # License: MIT (see LICENSE file)
12
12
 
13
- from datetime import timedelta as td
14
13
  from gettext import gettext as tr
15
14
 
16
15
  from holidays.calendars import _HebrewLunisolar
16
+ from holidays.calendars.gregorian import _timedelta
17
17
  from holidays.calendars.hebrew import (
18
18
  HANUKKAH,
19
19
  INDEPENDENCE_DAY,
@@ -73,7 +73,7 @@ class Israel(ObservedHolidayBase):
73
73
  name = tr("ראש השנה")
74
74
  rosh_hashanah_dt = self._get_holiday(ROSH_HASHANAH)
75
75
  self._add_holiday(name, rosh_hashanah_dt)
76
- self._add_holiday(name, rosh_hashanah_dt + td(days=+1))
76
+ self._add_holiday(name, _timedelta(rosh_hashanah_dt, +1))
77
77
 
78
78
  # Yom Kippur (Day of Atonement).
79
79
  self._add_holiday(tr("יום כיפור"), self._get_holiday(YOM_KIPPUR))
@@ -83,13 +83,13 @@ class Israel(ObservedHolidayBase):
83
83
  sukkot_dt = self._get_holiday(SUKKOT)
84
84
  self._add_holiday(name, sukkot_dt)
85
85
  # Simchat Torah / Shemini Atzeret.
86
- self._add_holiday(tr("שמחת תורה/שמיני עצרת"), sukkot_dt + td(days=+7))
86
+ self._add_holiday(tr("שמחת תורה/שמיני עצרת"), _timedelta(sukkot_dt, +7))
87
87
 
88
88
  passover_dt = self._get_holiday(PASSOVER)
89
89
  # Pesach (Passover).
90
90
  self._add_holiday(tr("פסח"), passover_dt)
91
91
  # Shvi'i shel Pesach (Seventh day of Passover)
92
- self._add_holiday(tr("שביעי של פסח"), passover_dt + td(days=+6))
92
+ self._add_holiday(tr("שביעי של פסח"), _timedelta(passover_dt, +6))
93
93
 
94
94
  # Yom Ha-Atzmaut (Independence Day).
95
95
  name = tr("יום העצמאות")
@@ -114,11 +114,11 @@ class Israel(ObservedHolidayBase):
114
114
  sukkot_dt = self._get_holiday(SUKKOT)
115
115
  for offset in range(1, 6):
116
116
  # Chol HaMoed Sukkot (Feast of Tabernacles holiday).
117
- self._add_holiday(tr("חול המועד סוכות"), sukkot_dt + td(days=offset))
117
+ self._add_holiday(tr("חול המועד סוכות"), _timedelta(sukkot_dt, offset))
118
118
 
119
119
  if self._year >= 2008:
120
120
  # Sigd.
121
- self._add_holiday(tr("סיגד"), self._get_holiday(YOM_KIPPUR) + td(days=+49))
121
+ self._add_holiday(tr("סיגד"), _timedelta(self._get_holiday(YOM_KIPPUR), +49))
122
122
 
123
123
  # Purim.
124
124
  self._add_holiday(tr("פורים"), self._get_holiday(PURIM))
@@ -126,12 +126,12 @@ class Israel(ObservedHolidayBase):
126
126
  passover_dt = self._get_holiday(PASSOVER)
127
127
  for offset in range(1, 6):
128
128
  # Chol HaMoed Pesach (Passover holiday).
129
- self._add_holiday(tr("חול המועד פסח"), passover_dt + td(days=offset))
129
+ self._add_holiday(tr("חול המועד פסח"), _timedelta(passover_dt, offset))
130
130
 
131
131
  if self._year >= 1963:
132
132
  # Yom Hazikaron (Fallen Soldiers and Victims of Terrorism Remembrance Day).
133
133
  name = tr("יום הזיכרון לחללי מערכות ישראל ונפגעי פעולות האיבה")
134
- remembrance_day_dt = self._get_holiday(INDEPENDENCE_DAY) + td(days=-1)
134
+ remembrance_day_dt = _timedelta(self._get_holiday(INDEPENDENCE_DAY), -1)
135
135
  rule = THU_TO_PREV_WED + FRI_TO_PREV_WED
136
136
  if self._year >= 2004:
137
137
  rule += SUN_TO_NEXT_MON
@@ -141,7 +141,7 @@ class Israel(ObservedHolidayBase):
141
141
 
142
142
  if self._year >= 1998:
143
143
  # Yom Yerushalayim (Jerusalem Day).
144
- self._add_holiday(tr("יום ירושלים"), self._get_holiday(LAG_BAOMER) + td(days=+10))
144
+ self._add_holiday(tr("יום ירושלים"), _timedelta(self._get_holiday(LAG_BAOMER), +10))
145
145
 
146
146
  # Tisha B'Av (Tisha B'Av, fast).
147
147
  name = tr("תשעה באב")
@@ -160,18 +160,18 @@ class Israel(ObservedHolidayBase):
160
160
  sukkot_dt = self._get_holiday(SUKKOT)
161
161
  for offset in range(1, 6):
162
162
  # Chol HaMoed Sukkot (Feast of Tabernacles holiday).
163
- self._add_holiday(tr("חול המועד סוכות"), sukkot_dt + td(days=offset))
163
+ self._add_holiday(tr("חול המועד סוכות"), _timedelta(sukkot_dt, offset))
164
164
 
165
165
  for year in (self._year - 1, self._year):
166
166
  hanukkah_dt = _HebrewLunisolar._get_holiday(HANUKKAH, year)
167
167
  for offset in range(8):
168
168
  # Hanukkah.
169
- self._add_holiday(tr("חנוכה"), hanukkah_dt + td(days=offset))
169
+ self._add_holiday(tr("חנוכה"), _timedelta(hanukkah_dt, offset))
170
170
 
171
171
  # Ta`anit Ester (Fast of Esther).
172
172
  name = tr("תענית אסתר")
173
173
  purim_dt = self._get_holiday(PURIM)
174
- taanit_ester_dt = purim_dt + td(days=-1)
174
+ taanit_ester_dt = _timedelta(purim_dt, -1)
175
175
  is_observed, _ = self._add_observed(taanit_ester_dt, name, SAT_TO_PREV_THU)
176
176
  if not is_observed:
177
177
  self._add_holiday(name, taanit_ester_dt)
@@ -182,7 +182,7 @@ class Israel(ObservedHolidayBase):
182
182
  passover_dt = self._get_holiday(PASSOVER)
183
183
  for offset in range(1, 6):
184
184
  # Chol HaMoed Pesach (Passover holiday).
185
- self._add_holiday(tr("חול המועד פסח"), passover_dt + td(days=offset))
185
+ self._add_holiday(tr("חול המועד פסח"), _timedelta(passover_dt, offset))
186
186
 
187
187
  # Lag Ba'omer (Lag BaOmer).
188
188
  self._add_holiday(tr('ל"ג בעומר'), self._get_holiday(LAG_BAOMER))
@@ -10,8 +10,6 @@
10
10
  # Website: https://github.com/vacanza/python-holidays
11
11
  # License: MIT (see LICENSE file)
12
12
 
13
- from datetime import timedelta as td
14
-
15
13
  from holidays.groups import ChristianHolidays, InternationalHolidays
16
14
  from holidays.holiday_base import HolidayBase
17
15
 
@@ -307,8 +305,8 @@ class Italy(HolidayBase, ChristianHolidays, InternationalHolidays):
307
305
  self._add_saint_johns_day("San Giovanni Battista")
308
306
 
309
307
  def _populate_subdiv_fm_public_holidays(self):
310
- aug_15 = self._add_assumption_of_mary_day("Maria Santissima Assunta")
311
- self._add_holiday("Maria Santissima Assunta", aug_15 + td(days=+1))
308
+ self._add_assumption_of_mary_day("Maria Santissima Assunta")
309
+ self._add_holiday_aug_16("Maria Santissima Assunta")
312
310
 
313
311
  def _populate_subdiv_fr_public_holidays(self):
314
312
  self._add_holiday_jun_20("San Silverio")
@@ -11,11 +11,22 @@
11
11
  # License: MIT (see LICENSE file)
12
12
 
13
13
  from datetime import date
14
- from datetime import timedelta as td
15
14
  from gettext import gettext as tr
16
15
  from typing import Tuple
17
16
 
18
- from holidays.calendars.gregorian import FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV
17
+ from holidays.calendars.gregorian import (
18
+ FEB,
19
+ MAR,
20
+ APR,
21
+ MAY,
22
+ JUN,
23
+ JUL,
24
+ AUG,
25
+ SEP,
26
+ OCT,
27
+ NOV,
28
+ _timedelta,
29
+ )
19
30
  from holidays.constants import BANK, PUBLIC
20
31
  from holidays.groups import InternationalHolidays, StaticHolidays
21
32
  from holidays.helpers import _normalize_tuple
@@ -171,18 +182,18 @@ class Japan(HolidayBase, InternationalHolidays, StaticHolidays):
171
182
  for dt in dts_observed.copy():
172
183
  if not self._is_sunday(dt):
173
184
  continue
174
- dt_observed = dt + td(days=+1)
185
+ dt_observed = _timedelta(dt, +1)
175
186
  while dt_observed in dts_observed:
176
- dt_observed += td(days=+1)
187
+ dt_observed = _timedelta(dt_observed, +1)
177
188
  # Substitute Holiday.
178
189
  dts_observed.add(self._add_holiday(tr("振替休日"), dt_observed))
179
190
 
180
191
  # A weekday between national holidays becomes
181
192
  # a holiday too (国民の休日) - citizens' holidays.
182
193
  for dt in dts_observed:
183
- if dt + td(days=+2) not in dts_observed:
194
+ if _timedelta(dt, +2) not in dts_observed:
184
195
  continue
185
- dt_observed = dt + td(days=+1)
196
+ dt_observed = _timedelta(dt, +1)
186
197
  if self._is_sunday(dt_observed) or dt_observed in dts_observed:
187
198
  continue
188
199
  # National Holiday.
@@ -11,7 +11,7 @@
11
11
  # License: MIT (see LICENSE file)
12
12
 
13
13
  from datetime import date
14
- from typing import Tuple
14
+ from typing import Optional, Tuple
15
15
 
16
16
  from holidays.calendars.gregorian import JAN, APR, MAY, JUN, JUL, SEP, OCT, DEC
17
17
  from holidays.groups import ChristianHolidays, InternationalHolidays, StaticHolidays
@@ -54,7 +54,7 @@ class Jersey(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, Stat
54
54
  kwargs.setdefault("observed_rule", SAT_SUN_TO_NEXT_WORKDAY)
55
55
  ObservedHolidayBase.__init__(self, *args, **kwargs)
56
56
 
57
- def _add_observed(self, dt: date, **kwargs) -> Tuple[bool, date]:
57
+ def _add_observed(self, dt: date, **kwargs) -> Tuple[bool, Optional[date]]:
58
58
  # Prior to 2004, in-lieu are only given for Sundays.
59
59
  # https://www.jerseylaw.je/laws/enacted/Pages/RO-123-2004.aspx
60
60
  kwargs.setdefault(
@@ -104,29 +104,13 @@ class Laos(ObservedHolidayBase, InternationalHolidays, StaticHolidays, ThaiCalen
104
104
  # - CASE FRI/SAT/SUN: WED-THU-FRI
105
105
 
106
106
  # Lao Year-End Bank Holiday.
107
- year_end_bank_holiday = tr("ສາມວັນລັດຖະການສຸດທ້າຍຂອງທຸກໆປີ")
108
-
109
- dec_31 = (DEC, 31)
110
- if self._is_monday(dec_31):
111
- self._add_holiday_last_thu_of_dec(year_end_bank_holiday)
112
- self._add_holiday_last_fri_of_dec(year_end_bank_holiday)
113
- self._add_holiday_last_mon_of_dec(year_end_bank_holiday)
114
- elif self._is_tuesday(dec_31):
115
- self._add_holiday_last_fri_of_dec(year_end_bank_holiday)
116
- self._add_holiday_last_mon_of_dec(year_end_bank_holiday)
117
- self._add_holiday_last_tue_of_dec(year_end_bank_holiday)
118
- elif self._is_wednesday(dec_31):
119
- self._add_holiday_last_mon_of_dec(year_end_bank_holiday)
120
- self._add_holiday_last_tue_of_dec(year_end_bank_holiday)
121
- self._add_holiday_last_wed_of_dec(year_end_bank_holiday)
122
- elif self._is_thursday(dec_31):
123
- self._add_holiday_last_tue_of_dec(year_end_bank_holiday)
124
- self._add_holiday_last_wed_of_dec(year_end_bank_holiday)
125
- self._add_holiday_last_thu_of_dec(year_end_bank_holiday)
126
- else:
127
- self._add_holiday_last_wed_of_dec(year_end_bank_holiday)
128
- self._add_holiday_last_thu_of_dec(year_end_bank_holiday)
129
- self._add_holiday_last_fri_of_dec(year_end_bank_holiday)
107
+ name = tr("ສາມວັນລັດຖະການສຸດທ້າຍຂອງທຸກໆປີ")
108
+
109
+ last_workday = self._add_holiday(
110
+ name, self._get_next_workday(self._next_year_new_years_day, -1)
111
+ )
112
+ second_to_last_workday = self._add_holiday(name, self._get_next_workday(last_workday, -1))
113
+ self._add_holiday(name, self._get_next_workday(second_to_last_workday, -1))
130
114
 
131
115
  def _populate_public_holidays(self):
132
116
  # Available post-Lao PDR proclamation on Dec 2, 1975.
@@ -10,10 +10,9 @@
10
10
  # Website: https://github.com/vacanza/python-holidays
11
11
  # License: MIT (see LICENSE file)
12
12
 
13
- from datetime import timedelta as td
14
13
  from gettext import gettext as tr
15
14
 
16
- from holidays.calendars.gregorian import MAY, SUN, _get_nth_weekday_of_month
15
+ from holidays.calendars.gregorian import MAY, SUN, _timedelta, _get_nth_weekday_of_month
17
16
  from holidays.groups import ChristianHolidays, InternationalHolidays
18
17
  from holidays.holiday_base import HolidayBase
19
18
 
@@ -70,7 +69,7 @@ class Madagascar(HolidayBase, ChristianHolidays, InternationalHolidays):
70
69
  self._add_holiday(
71
70
  # Mother's Day.
72
71
  tr("Fetin'ny reny"),
73
- last_sun_of_may + td(days=+7) if last_sun_of_may == whit_sunday else last_sun_of_may,
72
+ _timedelta(last_sun_of_may, +7) if last_sun_of_may == whit_sunday else last_sun_of_may,
74
73
  )
75
74
 
76
75
  # Father's Day.