holidays 0.47__py3-none-any.whl → 0.48__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.
holidays/__init__.py CHANGED
@@ -17,7 +17,7 @@ from holidays.holiday_base import *
17
17
  from holidays.registry import EntityLoader
18
18
  from holidays.utils import *
19
19
 
20
- __version__ = "0.47"
20
+ __version__ = "0.48"
21
21
 
22
22
 
23
23
  EntityLoader.load("countries", globals())
@@ -20,6 +20,15 @@ WEEKEND = (SAT, SUN)
20
20
 
21
21
  JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC = range(1, 13)
22
22
 
23
+ DAYS = set(str(d) for d in range(1, 32))
24
+ MONTHS = {
25
+ m: i
26
+ for i, m in enumerate(
27
+ ("jan", "feb", "mar", "apr", "may", "jun", "jul", "aug", "sep", "oct", "nov", "dec"), 1
28
+ )
29
+ }
30
+ WEEKDAYS = {w: i for i, w in enumerate(("mon", "tue", "wed", "thu", "fri", "sat", "sun"))}
31
+
23
32
 
24
33
  def _get_nth_weekday_from(n: int, weekday: int, from_dt: date) -> date:
25
34
  """
@@ -115,6 +115,7 @@ from .north_macedonia import NorthMacedonia, MK, MKD
115
115
  from .northern_mariana_islands import NorthernMarianaIslands, MP, MNP, HolidaysMP
116
116
  from .norway import Norway, NO, NOR
117
117
  from .pakistan import Pakistan, PK, PAK
118
+ from .palau import Palau, PW, PLW
118
119
  from .panama import Panama, PA, PAN
119
120
  from .papua_new_guinea import PapuaNewGuinea, PG, PNG
120
121
  from .paraguay import Paraguay, PY, PRY
@@ -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.calendars.gregorian import JAN, APR, JUN, AUG, SEP, OCT, DEC
16
14
  from holidays.constants import BANK, HALF_DAY, PUBLIC
17
15
  from holidays.groups import ChristianHolidays, InternationalHolidays, StaticHolidays
@@ -698,7 +696,7 @@ class Australia(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, S
698
696
 
699
697
  # Easter Tuesday.
700
698
  if self._year <= 2010:
701
- self._add_holiday("Easter Tuesday", self._easter_sunday + td(days=+2))
699
+ self._add_holiday_2_days_past_easter("Easter Tuesday")
702
700
 
703
701
  # ANZAC Day.
704
702
  if self._year >= 1921:
@@ -10,7 +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
13
  from gettext import gettext as tr
15
14
 
16
15
  from holidays.constants import BANK, PUBLIC
@@ -78,7 +77,7 @@ class Belgium(HolidayBase, ChristianHolidays, InternationalHolidays):
78
77
  self._add_good_friday(tr("Goede Vrijdag"))
79
78
 
80
79
  # Friday after Ascension Day.
81
- self._add_holiday(tr("Vrijdag na O. L. H. Hemelvaart"), self._easter_sunday + td(days=+40))
80
+ self._add_holiday_40_days_past_easter(tr("Vrijdag na O. L. H. Hemelvaart"))
82
81
 
83
82
  # Bank Holiday.
84
83
  self._add_christmas_day_two(tr("Banksluitingsdag"))
@@ -10,7 +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
13
  from gettext import gettext as tr
15
14
 
16
15
  from holidays.groups import ChristianHolidays, InternationalHolidays
@@ -147,7 +146,7 @@ class Bolivia(ObservedHolidayBase, ChristianHolidays, InternationalHolidays):
147
146
 
148
147
  def _populate_subdiv_o_public_holidays(self):
149
148
  # Carnival in Oruro.
150
- self._add_holiday(tr("Carnaval de Oruro"), self._easter_sunday + td(days=-51))
149
+ self._add_holiday_51_days_prior_easter(tr("Carnaval de Oruro"))
151
150
 
152
151
  def _populate_subdiv_s_public_holidays(self):
153
152
  # Santa Cruz Day.
@@ -10,7 +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
13
  from datetime import date
15
14
 
16
15
  from holidays.calendars.gregorian import JAN, MAR, SEP, NOV, FRI, _get_nth_weekday_from
@@ -231,7 +230,7 @@ class Brazil(HolidayBase, ChristianHolidays, InternationalHolidays):
231
230
  def _populate_subdiv_es_public_holidays(self):
232
231
  if self._year >= 2020:
233
232
  # Our Lady of Penha.
234
- self._add_holiday("Nossa Senhora da Penha", self._easter_sunday + td(days=+8))
233
+ self._add_holiday_8_days_past_easter("Nossa Senhora da Penha")
235
234
 
236
235
  def _populate_subdiv_go_public_holidays(self):
237
236
  # Foundation of Goiás city.
@@ -10,7 +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
13
  from gettext import gettext as tr
15
14
  from typing import Tuple
16
15
 
@@ -100,11 +99,12 @@ class Chile(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, Stati
100
99
  self._add_ascension_thursday(tr("Ascensión del Señor"))
101
100
 
102
101
  if self._year <= 1967 or 1987 <= self._year <= 2006:
103
- self._add_holiday(
104
- # Corpus Christi.
105
- tr("Corpus Christi"),
106
- self._easter_sunday + td(days=+60 if self._year <= 1999 else +57),
107
- )
102
+ # Corpus Christi.
103
+ name = tr("Corpus Christi")
104
+ if self._year <= 1999:
105
+ self._add_corpus_christi_day(name)
106
+ else:
107
+ self._add_holiday_57_days_past_easter(name)
108
108
 
109
109
  if self._year >= 1932:
110
110
  # Labor Day.
@@ -10,7 +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
13
  from gettext import gettext as tr
15
14
 
16
15
  from holidays.groups import ChristianHolidays, InternationalHolidays
@@ -81,7 +80,7 @@ class Colombia(ObservedHolidayBase, ChristianHolidays, InternationalHolidays):
81
80
  if self._year >= 1984:
82
81
  self._move_holiday(
83
82
  # Sacred Heart.
84
- self._add_holiday(tr("Sagrado Corazón"), self._easter_sunday + td(days=+68))
83
+ self._add_holiday_68_days_past_easter(tr("Sagrado Corazón"))
85
84
  )
86
85
 
87
86
  if self._year >= 1951:
@@ -10,7 +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
13
  from gettext import gettext as tr
15
14
 
16
15
  from holidays.calendars.julian_revised import JULIAN_REVISED_CALENDAR
@@ -93,7 +92,7 @@ class Cyprus(HolidayBase, ChristianHolidays, InternationalHolidays):
93
92
  return None
94
93
 
95
94
  # Easter Tuesday.
96
- self._add_holiday(tr("Τρίτη της Διακαινησίμου"), self._easter_sunday + td(days=+2))
95
+ self._add_holiday_2_days_past_easter(tr("Τρίτη της Διακαινησίμου"))
97
96
 
98
97
  def _populate_optional_holidays(self):
99
98
  if self._year <= 1960:
@@ -10,7 +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
13
  from gettext import gettext as tr
15
14
 
16
15
  from holidays.constants import OPTIONAL, PUBLIC
@@ -56,7 +55,7 @@ class Denmark(HolidayBase, ChristianHolidays, InternationalHolidays):
56
55
 
57
56
  if self._year <= 2023:
58
57
  # Great Day of Prayers.
59
- self._add_holiday(tr("Store bededag"), self._easter_sunday + td(days=+26))
58
+ self._add_holiday_26_days_past_easter(tr("Store bededag"))
60
59
 
61
60
  # Ascension Day.
62
61
  self._add_ascension_thursday(tr("Kristi himmelfartsdag"))
@@ -57,7 +57,7 @@ class Finland(HolidayBase, ChristianHolidays, InternationalHolidays):
57
57
  # Ascension Day.
58
58
  name = tr("Helatorstai")
59
59
  if 1973 <= self._year <= 1990:
60
- self._add_holiday(name, self._easter_sunday + td(days=+34))
60
+ self._add_holiday_34_days_past_easter(name)
61
61
  else:
62
62
  self._add_ascension_thursday(name)
63
63
 
@@ -10,7 +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
13
  from gettext import gettext as tr
15
14
 
16
15
  from holidays.groups import ChristianHolidays, InternationalHolidays
@@ -158,7 +157,7 @@ class France(HolidayBase, ChristianHolidays, InternationalHolidays):
158
157
  self._add_good_friday(tr("Vendredi saint"))
159
158
 
160
159
  # Mi-Careme.
161
- self._add_holiday(tr("Mi-Carême"), self._easter_sunday + td(days=-24))
160
+ self._add_holiday_24_days_prior_easter(tr("Mi-Carême"))
162
161
 
163
162
  # Abolition of slavery.
164
163
  self._add_holiday_may_27(tr("Abolition de l'esclavage"))
@@ -27,7 +27,8 @@ class Greece(ObservedHolidayBase, ChristianHolidays, InternationalHolidays):
27
27
  Greece holidays.
28
28
 
29
29
  References:
30
- - https://en.wikipedia.org/wiki/Public_holidays_in_Greece
30
+ - https://en.wikipedia.org/wiki/Public_holidays_in_Greece
31
+ - `2024 Labor Day transfer <https://www.et.gr/api/DownloadFeksApi/?fek_pdf=20240201406>`_
31
32
  """
32
33
 
33
34
  country = "GR"
@@ -66,11 +67,15 @@ class Greece(ObservedHolidayBase, ChristianHolidays, InternationalHolidays):
66
67
  # Whit Monday.
67
68
  self._add_whit_monday(tr("Δευτέρα του Αγίου Πνεύματος"))
68
69
 
69
- self._add_observed(
70
- # Labor Day.
71
- may_1 := self._add_labor_day(self.tr("Εργατική Πρωτομαγιά")),
72
- rule=MON_TO_NEXT_TUE if may_1 == easter_monday else SAT_SUN_TO_NEXT_WORKDAY,
73
- )
70
+ # Labor Day.
71
+ name = tr("Εργατική Πρωτομαγιά")
72
+ if self._year == 2024:
73
+ self._add_holiday_may_7(name)
74
+ else:
75
+ self._add_observed(
76
+ may_1 := self._add_labor_day(name),
77
+ rule=MON_TO_NEXT_TUE if may_1 == easter_monday else SAT_SUN_TO_NEXT_WORKDAY,
78
+ )
74
79
 
75
80
  # Dormition of the Mother of God.
76
81
  self._add_assumption_of_mary_day(tr("Κοίμηση της Θεοτόκου"))
@@ -10,7 +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
13
  from gettext import gettext as tr
15
14
 
16
15
  from holidays.calendars.gregorian import GREGORIAN_CALENDAR
@@ -60,7 +59,7 @@ class Moldova(HolidayBase, ChristianHolidays, InternationalHolidays):
60
59
  self._add_easter_monday(name)
61
60
 
62
61
  # Day of Rejoicing.
63
- self._add_holiday(tr("Paștele blajinilor"), self._easter_sunday + td(days=+8))
62
+ self._add_holiday_8_days_past_easter(tr("Paștele blajinilor"))
64
63
 
65
64
  # International Workers' Solidarity Day.
66
65
  self._add_labor_day(tr("Ziua internaţională a solidarităţii oamenilor muncii"))
@@ -251,12 +251,11 @@ class NewZealand(ObservedHolidayBase, ChristianHolidays, InternationalHolidays,
251
251
  self._add_holiday_4th_mon_of_sep("South Canterbury Anniversary Day")
252
252
 
253
253
  def _populate_subdiv_stl_public_holidays(self):
254
- dt = (
255
- self._easter_sunday + td(days=+2)
256
- if self._year >= 2012
257
- else self._get_nearest_monday(JAN, 17)
258
- )
259
- self._add_holiday("Southland Anniversary Day", dt)
254
+ name = "Southland Anniversary Day"
255
+ if self._year >= 2012:
256
+ self._add_holiday_2_days_past_easter(name)
257
+ else:
258
+ self._add_holiday(name, self._get_nearest_monday(JAN, 17))
260
259
 
261
260
  def _populate_subdiv_tki_public_holidays(self):
262
261
  self._add_holiday_2nd_mon_of_mar("Taranaki Anniversary Day")
@@ -0,0 +1,127 @@
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/python-holidays
11
+ # License: MIT (see LICENSE file)
12
+
13
+ from holidays.calendars.gregorian import SEP, NOV
14
+ from holidays.constants import ARMED_FORCES, HALF_DAY, PUBLIC
15
+ from holidays.groups import ChristianHolidays, InternationalHolidays, StaticHolidays
16
+ from holidays.observed_holiday_base import ObservedHolidayBase, SAT_TO_PREV_FRI, SUN_TO_NEXT_MON
17
+
18
+
19
+ class Palau(ObservedHolidayBase, ChristianHolidays, InternationalHolidays):
20
+ """
21
+ References:
22
+ - http://www.paclii.org/pw/legis/consol_act/gpt1262/ # Chapter 7, Holidays.
23
+ - https://www.palaugov.pw/wp-content/uploads/2017/11/RPPL-No.-10-15-re.-Family-Day-Holiday.pdf
24
+ - https://www.facebook.com/PalauPresident/posts/195883107230463 # EO336 Memorial Day repealed
25
+ - https://www.taiwanembassy.org/pal_en/post/792.html # Earliest source for President's Day
26
+
27
+ If any of the holidays enumerated in section 701 of this chapter falls on Sunday, the
28
+ following Monday shall be observed as a holiday. If any of the holidays enumerated in
29
+ section 701 of this chapter falls on Saturday, the preceding Friday shall be observed
30
+ as a holiday.
31
+
32
+ As there's no record of President's Day (Jun 1) and Independence Day (Oct 1) being
33
+ legal holiday before 2017, as seen in RPRL 10-15, they shall be assumed to start in 2018
34
+ for our current implementation.
35
+ """
36
+
37
+ country = "PW"
38
+ supported_categories = (ARMED_FORCES, HALF_DAY, PUBLIC)
39
+ observed_label = "%s (observed)"
40
+
41
+ def __init__(self, *args, **kwargs):
42
+ ChristianHolidays.__init__(self)
43
+ InternationalHolidays.__init__(self)
44
+ StaticHolidays.__init__(self, PalauStaticHolidays)
45
+ kwargs.setdefault("observed_rule", SAT_TO_PREV_FRI + SUN_TO_NEXT_MON)
46
+ super().__init__(*args, **kwargs)
47
+
48
+ def _populate_public_holidays(self):
49
+ # Republic of Palau Public Law No. 2-15.
50
+ # The legislation was first adopted by the 2nd Olbiil Era Kelulau (1984-1988),
51
+ # but since we cannot find any info on its actual adoption date, we may as
52
+ # well use the formation date of the country as the placeholder cut-off date.
53
+ if self._year <= 1980:
54
+ return None
55
+
56
+ # Fixed Date Public Holidays.
57
+
58
+ # New Year's Day.
59
+ name = "New Year's Day"
60
+ self._add_observed(self._add_new_years_day(name))
61
+ self._add_observed(self._next_year_new_years_day, name=name, rule=SAT_TO_PREV_FRI)
62
+
63
+ # Youth Day.
64
+ self._add_observed(self._add_holiday_mar_15("Youth Day"))
65
+
66
+ # Senior Citizens Day.
67
+ self._add_observed(self._add_holiday_may_5("Senior Citizens Day"))
68
+
69
+ if self._year in {2011, 2012}:
70
+ # Memorial Day.
71
+ self._add_holiday_last_mon_of_may("Memorial Day")
72
+
73
+ if self._year >= 2018:
74
+ # President's Day.
75
+ self._add_observed(self._add_holiday_jun_1("President's Day"))
76
+
77
+ # Constitution Day.
78
+ self._add_observed(self._add_holiday_jul_9("Constitution Day"))
79
+
80
+ # Labor Day.
81
+ self._add_holiday_1st_mon_of_sep("Labor Day")
82
+
83
+ if self._year >= 2018:
84
+ # Independence Day.
85
+ self._add_observed(self._add_holiday_oct_1("Independence Day"))
86
+
87
+ # United Nations Day.
88
+ self._add_observed(self._add_united_nations_day("United Nations Day"))
89
+
90
+ # Thanksgiving Day.
91
+ self._add_holiday_4th_thu_of_nov("Thanksgiving Day")
92
+
93
+ if self._year >= 2017:
94
+ # Family Day.
95
+ self._add_holiday_4th_fri_of_nov("Family Day")
96
+
97
+ # Christmas Day.
98
+ self._add_observed(self._add_christmas_day("Christmas Day"))
99
+
100
+
101
+ class PW(Palau):
102
+ pass
103
+
104
+
105
+ class PLW(Palau):
106
+ pass
107
+
108
+
109
+ class PalauStaticHolidays:
110
+ """
111
+ Sources:
112
+ - https://www.facebook.com/photo?fbid=1774513196034105&set=a.175933635892077
113
+ - https://www.facebook.com/photo/?fbid=1794692910682800&set=a.175933635892077
114
+ - https://www.facebook.com/photo/?fbid=1408133829338712&set=a.175933635892077
115
+ """
116
+
117
+ special_armed_forces_holidays = {
118
+ 2020: (NOV, 11, "Veterans Day"),
119
+ }
120
+
121
+ special_half_day_holidays = {
122
+ 2019: (SEP, 30, "Preparation for the 25th Independence Day of the Republic of Palau"),
123
+ }
124
+
125
+ special_public_holidays = {
126
+ 2020: (NOV, 3, "National Day of Democracy"),
127
+ }
@@ -10,7 +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
13
  from gettext import gettext as tr
15
14
 
16
15
  from holidays.constants import OPTIONAL, PUBLIC
@@ -184,11 +183,8 @@ class Portugal(HolidayBase, ChristianHolidays, InternationalHolidays):
184
183
  self._add_holiday_aug_22(tr("Dia de Nossa Senhora das Graças"))
185
184
 
186
185
  def _populate_subdiv_05_public_holidays(self):
187
- self._add_holiday(
188
- # Feast of Our Lady of Mércoles.
189
- tr("Dia de Nossa Senhora de Mércoles"),
190
- self._easter_sunday + td(days=+16),
191
- )
186
+ # Feast of Our Lady of Mércoles.
187
+ self._add_holiday_16_days_past_easter(tr("Dia de Nossa Senhora de Mércoles"))
192
188
 
193
189
  def _populate_subdiv_06_public_holidays(self):
194
190
  # St. Elizabeth's Day.
@@ -198,7 +198,7 @@ class SouthKorea(
198
198
 
199
199
  if 1950 <= self._year <= 1975:
200
200
  # United Nations Day.
201
- self._add_holiday_oct_24(tr("국제연합일"))
201
+ self._add_united_nations_day(tr("국제연합일"))
202
202
 
203
203
  # Chuseok.
204
204
  name = tr("추석")
@@ -31,10 +31,11 @@ class TimorLeste(
31
31
  References:
32
32
  - https://mj.gov.tl/jornal/lawsTL/RDTL-Law/RDTL-Laws/Law-2005-10.pdf # 2005 Law
33
33
  - http://timor-leste.gov.tl/?p=14494&lang=en # 2016 Amendment
34
+ - http://timor-leste.gov.tl/?p=30266&lang=en # 2022
34
35
  - http://timor-leste.gov.tl/?p=31750&lang=en # 2023 (en_US)
35
36
  - http://timor-leste.gov.tl/?p=31750&lang=pt # 2023 (pt_PT)
36
37
  - http://timor-leste.gov.tl/?p=31750&lang=tp # 2023 (tet)
37
- - http://timor-leste.gov.tl/?p=30266&lang=en # 2022
38
+ - http://timor-leste.gov.tl/?p=35833&lang=en # 2024
38
39
 
39
40
  Limitations:
40
41
 
@@ -201,6 +202,7 @@ class TimorLesteIslamicHolidays(_CustomIslamicHolidays):
201
202
  2021: (JUL, 19),
202
203
  2022: (JUL, 9),
203
204
  2023: (JUN, 29),
205
+ 2024: (JUN, 17),
204
206
  }
205
207
 
206
208
  EID_AL_FITR_DATES = {
@@ -396,20 +398,28 @@ class TimorLesteStaticHolidays:
396
398
  (JAN, 2, special_national_holidays),
397
399
  # http://timor-leste.gov.tl/?p=23607&lang=en
398
400
  (FEB, 26, special_national_holidays),
401
+ # http://timor-leste.gov.tl/?p=25455&lang=en
402
+ (AUG, 20, special_national_holidays),
399
403
  # http://timor-leste.gov.tl/?p=25502&lang=en
400
404
  (AUG, 31, special_national_holidays),
401
405
  # http://timor-leste.gov.tl/?p=26030&lang=en
402
406
  (NOV, 3, special_national_holidays),
407
+ # http://timor-leste.gov.tl/?p=26365&lang=en
408
+ (DEC, 24, special_national_holidays),
403
409
  ),
404
410
  2021: (
405
411
  # http://timor-leste.gov.tl/?p=26865&lang=en
406
412
  (FEB, 12, special_national_holidays),
413
+ # http://timor-leste.gov.tl/?p=26896&lang=en
414
+ (FEB, 17, special_national_holidays),
407
415
  # http://timor-leste.gov.tl/?p=29682&lang=en
408
416
  (NOV, 3, special_national_holidays),
409
417
  ),
410
418
  2022: (
411
419
  # http://timor-leste.gov.tl/?p=30029&lang=en
412
420
  (FEB, 1, special_national_holidays),
421
+ # http://timor-leste.gov.tl/?p=30194&lang=en
422
+ (MAR, 2, special_national_holidays),
413
423
  # http://timor-leste.gov.tl/?p=30254&lang=en
414
424
  (MAR, 18, presidential_election),
415
425
  # http://timor-leste.gov.tl/?p=30429&lang=en
@@ -417,11 +427,23 @@ class TimorLesteStaticHolidays:
417
427
  (APR, 18, presidential_election),
418
428
  (APR, 19, presidential_election),
419
429
  (APR, 20, presidential_election),
430
+ # http://timor-leste.gov.tl/?p=31404&lang=en
431
+ (OCT, 31, special_national_holidays),
432
+ # http://timor-leste.gov.tl/?p=31574&lang=en
433
+ (DEC, 9, special_national_holidays),
434
+ # http://timor-leste.gov.tl/?p=31633&lang=en
435
+ (DEC, 26, special_national_holidays),
420
436
  ),
421
437
  2023: (
422
438
  # http://timor-leste.gov.tl/?p=31641&lang=en
423
439
  (JAN, 2, special_national_holidays),
424
440
  # http://timor-leste.gov.tl/?p=31798&lang=en
425
441
  (JAN, 23, special_national_holidays),
442
+ # http://timor-leste.gov.tl/?p=32191&lang=en
443
+ (FEB, 22, special_national_holidays),
444
+ ),
445
+ 2024: (
446
+ # http://timor-leste.gov.tl/?p=36002&lang=en
447
+ (FEB, 14, special_national_holidays),
426
448
  ),
427
449
  }
@@ -609,7 +609,7 @@ class UnitedStates(ObservedHolidayBase, ChristianHolidays, InternationalHolidays
609
609
 
610
610
  # Confederate Memorial Day
611
611
  if self._year >= 1866:
612
- self._add_holiday_4th_mon_of_apr("Confederate Memorial Day")
612
+ self._add_holiday_last_mon_of_apr("Confederate Memorial Day")
613
613
 
614
614
  def _populate_subdiv_mt_public_holidays(self):
615
615
  # Election Day
@@ -11,7 +11,6 @@
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
 
17
16
  from holidays.calendars.gregorian import MAR
@@ -123,9 +122,9 @@ class Uruguay(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, Sta
123
122
 
124
123
  # Tourism Week.
125
124
  name = tr("Semana de Turismo")
126
- self._add_holiday(name, self._easter_sunday + td(days=-6))
127
- self._add_holiday(name, self._easter_sunday + td(days=-5))
128
- self._add_holiday(name, self._easter_sunday + td(days=-4))
125
+ self._add_holiday_6_days_prior_easter(name)
126
+ self._add_holiday_5_days_prior_easter(name)
127
+ self._add_holiday_4_days_prior_easter(name)
129
128
  self._add_holy_thursday(name)
130
129
  self._add_good_friday(name)
131
130
 
@@ -194,3 +194,13 @@ class InternationalHolidays:
194
194
  https://en.wikipedia.org/wiki/Victory_Day_(9_May)
195
195
  """
196
196
  return self._add_holiday_may_9(name)
197
+
198
+ def _add_united_nations_day(self, name):
199
+ """
200
+ Add United Nations Day (Oct 24th)
201
+
202
+ United Nations Day is an annual commemorative day, reflecting the
203
+ official creation of the United Nations on 24 October 1945.
204
+ https://en.wikipedia.org/wiki/United_Nations_Day
205
+ """
206
+ return self._add_holiday_oct_24(name)
holidays/holiday_base.py CHANGED
@@ -13,7 +13,6 @@
13
13
  __all__ = ("DateLike", "HolidayBase", "HolidaySum")
14
14
 
15
15
  import copy
16
- import re
17
16
  import warnings
18
17
  from calendar import isleap
19
18
  from datetime import date, datetime, timedelta, timezone
@@ -24,7 +23,6 @@ from typing import Any, Dict, Iterable, List, Optional, Set, Tuple, Union, cast
24
23
 
25
24
  from dateutil.parser import parse
26
25
 
27
- from holidays.calendars import gregorian
28
26
  from holidays.calendars.gregorian import (
29
27
  MON,
30
28
  TUE,
@@ -35,6 +33,9 @@ from holidays.calendars.gregorian import (
35
33
  SUN,
36
34
  _get_nth_weekday_from,
37
35
  _get_nth_weekday_of_month,
36
+ DAYS,
37
+ MONTHS,
38
+ WEEKDAYS,
38
39
  )
39
40
  from holidays.constants import HOLIDAY_NAME_DELIMITER, PUBLIC
40
41
  from holidays.helpers import _normalize_arguments, _normalize_tuple
@@ -230,6 +231,8 @@ class HolidayBase(Dict[date, str]):
230
231
  ones."""
231
232
  weekend: Set[int] = {SAT, SUN}
232
233
  """Country weekend days."""
234
+ weekend_workdays: Set[date] = set()
235
+ """Working days moved to weekends."""
233
236
  default_category: str = PUBLIC
234
237
  """The entity category used by default."""
235
238
  default_language: Optional[str] = None
@@ -353,6 +356,7 @@ class HolidayBase(Dict[date, str]):
353
356
  self.language = language.lower() if language else None
354
357
  self.observed = observed
355
358
  self.subdiv = subdiv
359
+ self.weekend_workdays = set()
356
360
 
357
361
  supported_languages = set(self.supported_languages)
358
362
  self.tr = (
@@ -427,77 +431,103 @@ class HolidayBase(Dict[date, str]):
427
431
  except AttributeError as e:
428
432
  # This part is responsible for _add_holiday_* syntactic sugar support.
429
433
  add_holiday_prefix = "_add_holiday_"
430
- # Raise early if prefix doesn't match to avoid regex checks.
434
+ # Raise early if prefix doesn't match to avoid patterns checks.
431
435
  if name[: len(add_holiday_prefix)] != add_holiday_prefix:
432
436
  raise e
433
437
 
438
+ tokens = name.split("_")
439
+
434
440
  # Handle <month> <day> patterns (e.g., _add_holiday_jun_15()).
435
- month_day = re.match(r"_add_holiday_(\w{3})_(\d{1,2})", name)
436
- if month_day:
437
- month, day = month_day.groups()
438
- return lambda name: self._add_holiday(
439
- name,
440
- date(self._year, getattr(gregorian, month.upper()), int(day)),
441
- )
441
+ if len(tokens) == 5:
442
+ *_, month, day = tokens
443
+ if month in MONTHS and day in DAYS:
444
+ return lambda name: self._add_holiday(
445
+ name,
446
+ date(self._year, MONTHS[month], int(day)),
447
+ )
442
448
 
443
- # Handle <last/nth> <weekday> of <month> patterns (e.g.,
444
- # _add_holiday_last_mon_of_aug() or _add_holiday_3rd_fri_of_aug()).
445
- nth_weekday_of_month = re.match(
446
- r"_add_holiday_(last|\d\w{2})_(\w{3})_of_(\w{3})", name
447
- )
448
- if nth_weekday_of_month:
449
- number, weekday, month = nth_weekday_of_month.groups()
450
- return lambda name: self._add_holiday(
451
- name,
452
- _get_nth_weekday_of_month(
453
- -1 if number == "last" else +int(re.sub(r"\D", "", number)),
454
- getattr(gregorian, weekday.upper()),
455
- getattr(gregorian, month.upper()),
456
- self._year,
457
- ),
458
- )
449
+ elif len(tokens) == 7:
450
+ # Handle <last/nth> <weekday> of <month> patterns (e.g.,
451
+ # _add_holiday_last_mon_of_aug() or _add_holiday_3rd_fri_of_aug()).
452
+ *_, number, weekday, of, month = tokens
453
+ if (
454
+ of == "of"
455
+ and (number == "last" or number[0].isdigit())
456
+ and month in MONTHS
457
+ and weekday in WEEKDAYS
458
+ ):
459
+ return lambda name: self._add_holiday(
460
+ name,
461
+ _get_nth_weekday_of_month(
462
+ -1 if number == "last" else int(number[0]),
463
+ WEEKDAYS[weekday],
464
+ MONTHS[month],
465
+ self._year,
466
+ ),
467
+ )
468
+
469
+ # Handle <n> days <past/prior> easter patterns (e.g.,
470
+ # _add_holiday_8_days_past_easter() or
471
+ # _add_holiday_5_days_prior_easter()).
472
+ *_, days, unit, delta_direction, easter = tokens
473
+ if (
474
+ unit in {"day", "days"}
475
+ and delta_direction in {"past", "prior"}
476
+ and easter == "easter"
477
+ and len(days) < 3
478
+ and days.isdigit()
479
+ ):
480
+ return lambda name: self._add_holiday(
481
+ name,
482
+ self._easter_sunday
483
+ + timedelta(days=+int(days) if delta_direction == "past" else -int(days)),
484
+ )
459
485
 
460
486
  # Handle <n> day(s) <past/prior> <last/<nth> <weekday> of <month> patterns (e.g.,
461
487
  # _add_holiday_1_day_past_1st_fri_of_aug() or
462
488
  # _add_holiday_5_days_prior_last_fri_of_aug()).
463
- nth_weekday_of_month_with_delta = re.match(
464
- r"_add_holiday_(\d{1,2})_days?_(past|prior)_(last|\d\w{2})_(\w{3})_of_(\w{3})",
465
- name,
466
- )
467
- if nth_weekday_of_month_with_delta:
468
- (
469
- days,
470
- delta_direction,
471
- number,
472
- weekday,
473
- month,
474
- ) = nth_weekday_of_month_with_delta.groups()
475
- return lambda name: self._add_holiday(
476
- name,
477
- _get_nth_weekday_of_month(
478
- -1 if number == "last" else +int(re.sub(r"\D", "", number)),
479
- getattr(gregorian, weekday.upper()),
480
- getattr(gregorian, month.upper()),
481
- self._year,
489
+ elif len(tokens) == 10:
490
+ *_, days, unit, delta_direction, number, weekday, of, month = tokens
491
+ if (
492
+ unit in {"day", "days"}
493
+ and delta_direction in {"past", "prior"}
494
+ and of == "of"
495
+ and len(days) < 3
496
+ and days.isdigit()
497
+ and (number == "last" or number[0].isdigit())
498
+ and month in MONTHS
499
+ and weekday in WEEKDAYS
500
+ ):
501
+ return lambda name: self._add_holiday(
502
+ name,
503
+ _get_nth_weekday_of_month(
504
+ -1 if number == "last" else int(number[0]),
505
+ WEEKDAYS[weekday],
506
+ MONTHS[month],
507
+ self._year,
508
+ )
509
+ + timedelta(days=+int(days) if delta_direction == "past" else -int(days)),
482
510
  )
483
- + timedelta(days=+int(days) if delta_direction == "past" else -int(days)),
484
- )
485
511
 
486
512
  # Handle <nth> <weekday> <before/from> <month> <day> patterns (e.g.,
487
513
  # _add_holiday_1st_mon_before_jun_15() or _add_holiday_1st_mon_from_jun_15()).
488
- nth_weekday_from = re.match(
489
- r"_add_holiday_(\d{1,2})\w{2}_(\w+)_(before|from)_(\w{3})_(\d{1,2})", name
490
- )
491
- if nth_weekday_from:
492
- number, weekday, date_direction, month, day = nth_weekday_from.groups()
493
- return lambda name: self._add_holiday(
494
- name,
495
- _get_nth_weekday_from(
496
- -int(number) if date_direction == "before" else +int(number),
497
- getattr(gregorian, weekday.upper()),
498
- date(self._year, getattr(gregorian, month.upper()), int(day)),
499
- ),
500
- )
514
+ elif len(tokens) == 8:
515
+ *_, number, weekday, date_direction, month, day = tokens
516
+ if (
517
+ date_direction in {"before", "from"}
518
+ and number[0].isdigit()
519
+ and month in MONTHS
520
+ and weekday in WEEKDAYS
521
+ and day in DAYS
522
+ ):
523
+ return lambda name: self._add_holiday(
524
+ name,
525
+ _get_nth_weekday_from(
526
+ -int(number[0]) if date_direction == "before" else +int(number[0]),
527
+ WEEKDAYS[weekday],
528
+ date(self._year, MONTHS[month], int(day)),
529
+ ),
530
+ )
501
531
 
502
532
  raise e # No match.
503
533
 
@@ -676,9 +706,13 @@ class HolidayBase(Dict[date, str]):
676
706
  .lower()
677
707
  )
678
708
 
679
- @cached_property
709
+ @property
680
710
  def _sorted_categories(self):
681
- return sorted(self.categories)
711
+ return (
712
+ [self.default_category] + sorted(self.categories - {self.default_category})
713
+ if self.default_category in self.categories
714
+ else sorted(self.categories)
715
+ )
682
716
 
683
717
  @classmethod
684
718
  def get_subdivision_aliases(cls) -> Dict[str, List]:
@@ -724,14 +758,14 @@ class HolidayBase(Dict[date, str]):
724
758
  )
725
759
  else: # Substituted holidays.
726
760
  to_month, to_day, from_month, from_day, *optional = data
761
+ from_date = date(optional[0] if optional else self._year, from_month, from_day)
727
762
  self._add_holiday(
728
763
  self.tr(self.substituted_label)
729
- % date(
730
- optional[0] if optional else self._year, from_month, from_day
731
- ).strftime(self.tr(self.substituted_date_format)),
764
+ % from_date.strftime(self.tr(self.substituted_date_format)),
732
765
  to_month,
733
766
  to_day,
734
767
  )
768
+ self.weekend_workdays.add(from_date)
735
769
 
736
770
  def _check_weekday(self, weekday: int, *args) -> bool:
737
771
  """
@@ -922,6 +956,36 @@ class HolidayBase(Dict[date, str]):
922
956
 
923
957
  raise AttributeError(f"Unknown lookup type: {lookup}")
924
958
 
959
+ def get_nth_workday(self, key: DateLike, n: int) -> date:
960
+ """Return n-th working day from provided date (if n is positive)
961
+ or n-th working day before provided date (if n is negative).
962
+ """
963
+ direction = +1 if n > 0 else -1
964
+ dt = self.__keytransform__(key)
965
+ for _ in range(abs(n)):
966
+ dt += timedelta(days=direction)
967
+ while not self.is_workday(dt):
968
+ dt += timedelta(days=direction)
969
+ return dt
970
+
971
+ def get_workdays_number(self, key1: DateLike, key2: DateLike) -> int:
972
+ """Return the number of working days between two dates (not including the start date)."""
973
+ dt1 = self.__keytransform__(key1)
974
+ dt2 = self.__keytransform__(key2)
975
+ if dt1 == dt2:
976
+ return 0
977
+ if dt1 > dt2:
978
+ dt1, dt2 = dt2, dt1
979
+
980
+ return sum(
981
+ self.is_workday(dt1 + timedelta(days=n)) for n in range(1, (dt2 - dt1).days + 1)
982
+ )
983
+
984
+ def is_workday(self, key: DateLike) -> bool:
985
+ """Return True if date is a working day (not a holiday or a weekend)."""
986
+ dt = self.__keytransform__(key)
987
+ return dt in self.weekend_workdays if self._is_weekend(dt) else dt not in self
988
+
925
989
  def pop(self, key: DateLike, default: Union[str, Any] = None) -> Union[str, Any]:
926
990
  """If date is a holiday, remove it and return its date, else return
927
991
  default.
holidays/registry.py CHANGED
@@ -121,6 +121,7 @@ COUNTRIES: RegistryDict = {
121
121
  "northern_mariana_islands": ("NorthernMarianaIslands", "MP", "MNP", "HolidaysMP"),
122
122
  "norway": ("Norway", "NO", "NOR"),
123
123
  "pakistan": ("Pakistan", "PK", "PAK"),
124
+ "palau": ("Palau", "PW", "PLW"),
124
125
  "panama": ("Panama", "PA", "PAN"),
125
126
  "papua_new_guinea": ("PapuaNewGuinea", "PG", "PNG"),
126
127
  "paraguay": ("Paraguay", "PY", "PRY"),
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: holidays
3
- Version: 0.47
3
+ Version: 0.48
4
4
  Summary: Generate and work with holidays in Python
5
5
  Author-email: Maurizio Montel <dr.prodigy.github@gmail.com>
6
6
  Maintainer-email: Arkadii Yakovets <ark@cho.red>, Serhii Murza <jhellico@gmail.com>
@@ -60,62 +60,62 @@ state or province) specific sets of government-designated holidays on the fly.
60
60
  It aims to make determining whether a specific date is a holiday as fast and
61
61
  flexible as possible.
62
62
 
63
- .. |downloads| image:: https://img.shields.io/pypi/dm/holidays?color=%2341B5BE&style=flat
63
+ .. |downloads| image:: https://img.shields.io/pypi/dm/holidays?color=41B5BE&style=flat
64
64
  :target: https://pypi.org/project/holidays
65
65
  :alt: PyPI downloads
66
66
 
67
- .. |version| image:: https://img.shields.io/pypi/v/holidays?color=%2341B5BE&label=version&style=flat
67
+ .. |version| image:: https://img.shields.io/pypi/v/holidays?color=41B5BE&label=version&style=flat
68
68
  :target: https://pypi.org/project/holidays
69
69
  :alt: PyPI version
70
70
 
71
- .. |release date| image:: https://img.shields.io/github/release-date/vacanza/python-holidays?color=%2341B5BE&style=flat
71
+ .. |release date| image:: https://img.shields.io/github/release-date/vacanza/python-holidays?color=41B5BE&style=flat
72
72
  :target: https://github.com/vacanza/python-holidays/releases
73
73
  :alt: PyPI release date
74
74
 
75
- .. |status| image:: https://img.shields.io/github/actions/workflow/status/vacanza/python-holidays/ci-cd.yml?color=%2341BE4A&style=flat
76
- :target: https://github.com/vacanza/python-holidays/actions
75
+ .. |status| image:: https://img.shields.io/github/actions/workflow/status/vacanza/python-holidays/ci-cd.yml?branch=dev&color=41BE4A&style=flat
76
+ :target: https://github.com/vacanza/python-holidays/actions/workflows/ci-cd.yml?query=branch%3Adev
77
77
  :alt: CI/CD status
78
78
 
79
- .. |documentation| image:: https://img.shields.io/readthedocs/python-holidays?color=%2341BE4A&style=flat
79
+ .. |documentation| image:: https://img.shields.io/readthedocs/python-holidays?color=41BE4A&style=flat
80
80
  :target: https://python-holidays.readthedocs.io/en/latest/?badge=latest
81
81
  :alt: Documentation status
82
82
 
83
- .. |license| image:: https://img.shields.io/github/license/vacanza/python-holidays?color=%2341B5BE&style=flat
83
+ .. |license| image:: https://img.shields.io/github/license/vacanza/python-holidays?color=41B5BE&style=flat
84
84
  :target: https://github.com/vacanza/python-holidays/blob/dev/LICENSE
85
85
  :alt: License
86
86
 
87
- .. |python versions| image:: https://img.shields.io/pypi/pyversions/holidays?label=python&color=%2341B5BE&style=flat
87
+ .. |python versions| image:: https://img.shields.io/pypi/pyversions/holidays?label=python&color=41B5BE&style=flat
88
88
  :target: https://pypi.org/project/holidays
89
89
  :alt: Python supported versions
90
90
 
91
- .. |style| image:: https://img.shields.io/badge/code%20style-black-%252333F93C0?label=style&color=%2341B5BE&style=flat
92
- :target: https://github.com/psf/black
91
+ .. |style| image:: https://img.shields.io/badge/style-ruff-41B5BE?style=flat
92
+ :target: https://github.com/astral-sh/ruff
93
93
  :alt: Code style
94
94
 
95
- .. |coverage| image:: https://img.shields.io/coverallsCoverage/github/vacanza/python-holidays?branch=main&color=%2341B5BE&style=flat
95
+ .. |coverage| image:: https://img.shields.io/coverallsCoverage/github/vacanza/python-holidays?branch=main&color=41B5BE&style=flat
96
96
  :target: https://coveralls.io/r/vacanza/python-holidays
97
97
  :alt: Code coverage
98
98
 
99
- .. |stars| image:: https://img.shields.io/github/stars/vacanza/python-holidays?color=%2341BE4A&style=flat
99
+ .. |stars| image:: https://img.shields.io/github/stars/vacanza/python-holidays?color=41BE4A&style=flat
100
100
  :target: https://github.com/vacanza/python-holidays/stargazers
101
101
  :alt: GitHub stars
102
102
 
103
- .. |forks| image:: https://img.shields.io/github/forks/vacanza/python-holidays?color=%2341BE4A&style=flat
103
+ .. |forks| image:: https://img.shields.io/github/forks/vacanza/python-holidays?color=41BE4A&style=flat
104
104
  :target: https://github.com/vacanza/python-holidays/forks
105
105
  :alt: GitHub forks
106
106
 
107
- .. |contributors| image:: https://img.shields.io/github/contributors/vacanza/python-holidays?color=%2341BE4A&style=flat
107
+ .. |contributors| image:: https://img.shields.io/github/contributors/vacanza/python-holidays?color=41BE4A&style=flat
108
108
  :target: https://github.com/vacanza/python-holidays/graphs/contributors
109
109
  :alt: GitHub contributors
110
110
 
111
- .. |last commit| image:: https://img.shields.io/github/last-commit/vacanza/python-holidays/dev?color=%2341BE4A&style=flat
111
+ .. |last commit| image:: https://img.shields.io/github/last-commit/vacanza/python-holidays/dev?color=41BE4A&style=flat
112
112
  :target: https://github.com/vacanza/python-holidays/commits/dev
113
113
  :alt: GitHub last commit
114
114
 
115
115
  +--------+------------------------------------------------+
116
116
  | PyPI | |downloads| |version| |release date| |
117
117
  +--------+------------------------------------------------+
118
- | CI/CD | |status| |documentation| |
118
+ | CI/CD | |status| |documentation| |
119
119
  +--------+------------------------------------------------+
120
120
  | Code | |license| |python versions| |style| |coverage| |
121
121
  +--------+------------------------------------------------+
@@ -199,7 +199,7 @@ Available Countries
199
199
  .. _ISO 639-1 code: https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes
200
200
  .. _ISO 639-2 code: https://en.wikipedia.org/wiki/List_of_ISO_639-2_codes
201
201
 
202
- We currently support 146 country codes. The standard way to refer to a country
202
+ We currently support 147 country codes. The standard way to refer to a country
203
203
  is by using its `ISO 3166-1 alpha-2 code`_, the same used for domain names, and
204
204
  for a subdivision its `ISO 3166-2 code`_. Some countries have common or foreign
205
205
  names or abbreviations as aliases for their subdivisions. These are defined in
@@ -748,6 +748,11 @@ All other default values are highlighted with bold:
748
748
  -
749
749
  -
750
750
  -
751
+ * - Palau
752
+ - PW
753
+ -
754
+ -
755
+ - ARMED_FORCES, HALF_DAY
751
756
  * - Panama
752
757
  - PA
753
758
  -
@@ -1,16 +1,16 @@
1
- holidays/__init__.py,sha256=XO7GMNrwX0AMuFvGNiQdXCKXe8VrF2NkwT4Pay6LUOI,805
1
+ holidays/__init__.py,sha256=ggarcqWqHczcRI4vtO7-UHerWuOsMMmYTZ1xqhAGUoQ,805
2
2
  holidays/constants.py,sha256=vlbI7o6EJ_jNtfeOik-c6_aRJf6aOEUPoeiPGRUVFbI,1172
3
3
  holidays/helpers.py,sha256=MRkAgbFEYw7r0PWLxjkvf4oLpyqTeCiq78ifYphYFIM,1270
4
- holidays/holiday_base.py,sha256=6S6SCrwetmbMN1Eap5D2yHrP9flZY8-onKSmLGD5vNA,43049
4
+ holidays/holiday_base.py,sha256=BAofupINfwZvc5N82ebn0-Hcc1DO7dxL0zOgvrX4suk,45578
5
5
  holidays/observed_holiday_base.py,sha256=9lrv4XQF0A_IhmegaebzwiagKI1NCtD8GEoAd7vp-6I,7831
6
6
  holidays/py.typed,sha256=EUaxvGLCfdycmOVEDt64l9fUKWuyPBxOEQWGfnMnrxE,171
7
- holidays/registry.py,sha256=leNXwH1d9pQ3pfQYnIk9eg6jliNCeg92GPpYtrqHOu4,10904
7
+ holidays/registry.py,sha256=JtFDerj_GHeqG6Ha4DQsqL8Uw3p84na-7MvQrKchnRY,10941
8
8
  holidays/utils.py,sha256=QC9X32LriN2zhzcf6p97AUqUh1OJ1bFo32sIc2sm_m0,12846
9
9
  holidays/calendars/__init__.py,sha256=ppwFs1vzZQfn_MS5MV9wUKqv580pvseeJRBhooOUUlQ,1296
10
10
  holidays/calendars/buddhist.py,sha256=OgZTOVexRzdEdiOZc9R-83KP6klwzs6QWvm35gCLIso,11364
11
11
  holidays/calendars/chinese.py,sha256=nBr5JxueZBniknv_Uoi90b7fArFFt4m3sc-zywLZc-c,31888
12
12
  holidays/calendars/custom.py,sha256=VM66V2zQrLZxB-PRCG_aLoNzxO-tL7FrHNDiJhfx9wA,1252
13
- holidays/calendars/gregorian.py,sha256=B9FrQV9MDPPM7Ms0sZ4ereOY0jSfuL4Q8rLmec5sFVg,2256
13
+ holidays/calendars/gregorian.py,sha256=VOxXbkfSnMdm5cP6ByMCZbkreAvwINve5SNir3n5GNY,2540
14
14
  holidays/calendars/hebrew.py,sha256=coCwh5dl7-DlsBX6cmt0riJP2pvBkFqNlV_eGY22L4w,39507
15
15
  holidays/calendars/hindu.py,sha256=Qdk-C1gBoG9IRE5qXJv3OKznzkK3bHnbn7YfrU_gJsA,11366
16
16
  holidays/calendars/islamic.py,sha256=n1UlGUjQZbCuGitsZdUhRJKaiHsQhgwb3ez-4Z-GPKY,94422
@@ -18,7 +18,7 @@ holidays/calendars/julian.py,sha256=9bQCdrWliTNaHoTVU4vSB3PXz5pn5Htj4abVsWG863g,
18
18
  holidays/calendars/julian_revised.py,sha256=6bVn_BBbgIdbqwyZu7ffVteMr8BcMDT9_jtgZEDJORQ,586
19
19
  holidays/calendars/persian.py,sha256=XXF0L4g1op353XwR8HJIcCfHdEiMYXsGSglkoGGPXpo,1910
20
20
  holidays/calendars/thai.py,sha256=HhzNctVhO4EGXNWgdUKDzZSUy6w45i0QQhCXIAX1_cs,23977
21
- holidays/countries/__init__.py,sha256=Qs3nQS39khMonczmQOeSpejPkHMMy8mzokN2pRxbvtA,6633
21
+ holidays/countries/__init__.py,sha256=zXL6WyRQDDzeQRnzNE4_ZpQBOQIA3UTztUdpfb9abSw,6667
22
22
  holidays/countries/albania.py,sha256=n7R-VXyF1se4XwGyQjVPC2wOPV_EVEQS1931cgNuHUk,3427
23
23
  holidays/countries/algeria.py,sha256=hoxAb_Rxiqiwy6h3Bm1RHnfnbRY1bGql93lqhzVO6qc,2939
24
24
  holidays/countries/american_samoa.py,sha256=l_S70nMRqOAMoR9GOmNVrBgJDRMI_GHm1y3Q3rADQYc,1334
@@ -27,7 +27,7 @@ holidays/countries/angola.py,sha256=cPFNltkBMcaunfVH5xgq-PGvwqicvibi6SIlqBNPRGY,
27
27
  holidays/countries/argentina.py,sha256=qvprGTfm6Y3QqfW6dOEkLRygKkMnAzENeV1jEB1OFzc,13005
28
28
  holidays/countries/armenia.py,sha256=c8YMGHU-qG-P7ofAZd8kDEjxU-ANr30y0JUoAacGrJw,3681
29
29
  holidays/countries/aruba.py,sha256=EHIuB8uzzQpsR0FX7-0fo_wD1fzr8Sr1XxvaQ5e64MY,5027
30
- holidays/countries/australia.py,sha256=az3sYyY2hMo6VDtM5KbQ3TmCnTCLA8Co126ltP_aCtQ,34539
30
+ holidays/countries/australia.py,sha256=37DS3mvKBOwIe4FnS8YidCGxLkt0cjRXNW5jVG66RG0,34485
31
31
  holidays/countries/austria.py,sha256=fXVwTe4YE5-LGqXcCdonNMKw6QGA6QK7sgIicKuMVX4,4881
32
32
  holidays/countries/azerbaijan.py,sha256=A7wFKo4re-e6uQk3H1G-zMG-SMcJfRpp1Mm_QtIYwKs,9848
33
33
  holidays/countries/bahamas.py,sha256=ZkHy0rzC0aUJfe1aVGfr37OpSvETA1G927uC3FlMSAU,5566
@@ -35,12 +35,12 @@ holidays/countries/bahrain.py,sha256=S_apQ3Gleroz2VOu1Vwb63jcdx_1JohyF4_bMf2stQk
35
35
  holidays/countries/bangladesh.py,sha256=fNxGmEoCIXBzja4AayBiR8G10rA7GVwsjRf6Rv3MJUg,1868
36
36
  holidays/countries/barbados.py,sha256=R34KVNizl1l6epxe4UhMuME5eZJCnStbp_5V9o84pFc,3617
37
37
  holidays/countries/belarus.py,sha256=9uJaEo_wG54AtYRk187qMSM1uYyGZct_kKaArkZztfY,6680
38
- holidays/countries/belgium.py,sha256=6J1QsCARlt3aAjWMKAXzhicOLoxvWXTh52zFmZDB08o,2854
38
+ holidays/countries/belgium.py,sha256=HVVvDwCGfrSb2Fi9oAssR-L_inP0K7AHoe7ZKepmO9c,2801
39
39
  holidays/countries/belize.py,sha256=lcrM4fDEZuDNxTplb4qawfsBOwfc7WN9jSVnJQyn3Vo,4034
40
- holidays/countries/bolivia.py,sha256=i7rrnMvjRrpzwcfB92YGnU6PPwM-PrlC60B0g8-V38c,5811
40
+ holidays/countries/bolivia.py,sha256=og3m749HyKaWQ1t4W_uWI1pMvG_918UalqmIlW5wIko,5759
41
41
  holidays/countries/bosnia_and_herzegovina.py,sha256=xqTad5zrVeHnSnTfsmE5MSruskrNdipHWeA1jkD5qHQ,9695
42
42
  holidays/countries/botswana.py,sha256=P7Z5cFAtLl4m_U3VBLqwxi4BOl_gtCSjey7kIgckTxY,3105
43
- holidays/countries/brazil.py,sha256=fgLlL384Z_zgp8zhcuPRRDkEvprgPb_UOUj5KFoykm0,12078
43
+ holidays/countries/brazil.py,sha256=_XnHp3aabnOafbRc7bHjd7qwe7nl97bPIve-o9CEVjE,12025
44
44
  holidays/countries/brunei.py,sha256=4e_eE9zKa5s8anQOBBTIiK34DymX0H_2AhZkL3sE5yQ,11378
45
45
  holidays/countries/bulgaria.py,sha256=q2Q_2ijtUtD7Gc8w2_DM3yWMGqd8aV8zJgOFVtNBH3c,5453
46
46
  holidays/countries/burkina_faso.py,sha256=xJsb8C74j_VcibUGqDJ-Hrb3j9SWWoKx7YqxePBHZIs,4089
@@ -49,16 +49,16 @@ holidays/countries/cambodia.py,sha256=oDOSfUeARKGNa9vRfwmbd3vcE01hDqYsHJQ1hPMZUP
49
49
  holidays/countries/cameroon.py,sha256=s_3R7GmDZojfvWY8Bpwy_rLe0BNghe8N7AO5ffKNL0Y,5180
50
50
  holidays/countries/canada.py,sha256=3bfoWDh8FtsVXFbwO1RdbQp4WZs8OxKtX9uEdLWz4xw,17818
51
51
  holidays/countries/chad.py,sha256=vTXNNnZ8BpxypWf9bNN02EizkLw_yACPf7uCzm5sfQI,3847
52
- holidays/countries/chile.py,sha256=MKR-lHwWYMArZOlo9IBdSlaKNdq270mrwQkUxKqCcfQ,7910
52
+ holidays/countries/chile.py,sha256=1wAdVbbfmd6GAo5KcGCvwbLxRuQHs4Bw1R90bhp6Q7s,7907
53
53
  holidays/countries/china.py,sha256=ViMYe59XOIuUBJZat0CNNpqz2A4VOqdPgtWjCjk5iEw,19252
54
- holidays/countries/colombia.py,sha256=2DReHQpZjNuZPQAUOzqTx2nkGGkwym0_vvcstlDR1F8,4498
54
+ holidays/countries/colombia.py,sha256=hsywP1p_8hdkW5vvdls3cERdPoZWf6OoNfg-2GTbVfc,4445
55
55
  holidays/countries/costa_rica.py,sha256=jiHfPfSYSd6Vd7-iYNbW1mmpObJ9FUYgEg-u21YvQbc,4413
56
56
  holidays/countries/croatia.py,sha256=VG5JQevj_anXP9tFYWNbfaOdBiUHvMo-IeWBSluqXXY,3536
57
57
  holidays/countries/cuba.py,sha256=Ukc2WiTeJf4uoRGRpI_S4bZmK82Yha2eaS3pXqp_fHM,3987
58
58
  holidays/countries/curacao.py,sha256=XmvFdTT__bbcitWoOlBxkgeGh1tGpkb_vmxYNm_NfmQ,4435
59
- holidays/countries/cyprus.py,sha256=bHPj3Nevgtk6Gjf3GpzbIXMFEJlM3qx9WjfoSQXqoJk,3757
59
+ holidays/countries/cyprus.py,sha256=NjpCaIJkj0b9ujfz-11ooIT_JPeFXlw7ChDj0c-sxIM,3704
60
60
  holidays/countries/czechia.py,sha256=EXnY-j3b2blAc8dMloGo_bq4Fi7u1-Wq8rdt_reOUFI,3169
61
- holidays/countries/denmark.py,sha256=3AJH5v6l5_sYum_fB18pZKMteIu2HuYyapgAfdgnVKc,2824
61
+ holidays/countries/denmark.py,sha256=xLfnr2yLSWRPSS1d8oiPe66SyG7MNW2BpdUC1OeHJmo,2771
62
62
  holidays/countries/djibouti.py,sha256=rZxB9Al64hqpcsXYaEGsvW4YypESIq4zYuMWo075dzY,2620
63
63
  holidays/countries/dominican_republic.py,sha256=yl57iaSul9av-PpqRBeLOhDXC4yfqywN0rbQEYNG7I0,3196
64
64
  holidays/countries/ecuador.py,sha256=dl-a1IO9oO5gC65JJoQdAySoM4rsnVEYRs_vOJl0F6Q,3766
@@ -67,13 +67,13 @@ holidays/countries/el_salvador.py,sha256=Njaug6iTLm0_vQCYlyhjllH_sCpx4cXSlb8IdWi
67
67
  holidays/countries/estonia.py,sha256=nRrBNNrGnjLnLRWlsZBr1-a6MvZkf35IPF0M_E-GAIc,2202
68
68
  holidays/countries/eswatini.py,sha256=eGHnfJ1Bq6Y9U-teLDrFYxd9DPSCmgmxNwX1FBkQTUA,3173
69
69
  holidays/countries/ethiopia.py,sha256=jRULgq4W6fTEYmpZBVKFEmXTcMkvAUpxHcu3p0Wf-98,4364
70
- holidays/countries/finland.py,sha256=LMcXS1jlgtxSeJkLD4k24NTx8hcCIec15TwiBshgOJo,3004
71
- holidays/countries/france.py,sha256=mUzC2xxF0V_2NXkaUMXFvR95_KNFpLP8BHTRIMTfFXk,7879
70
+ holidays/countries/finland.py,sha256=OikVI0kRssJ8YwUUaW_u4-Mk-EQ3OYXF85EZVdJOx40,2988
71
+ holidays/countries/france.py,sha256=-wN7zPaCzMuimFCBzPh3IbKEb7dM-UQ95NA8JGrowCA,7827
72
72
  holidays/countries/gabon.py,sha256=TPXtruJVk6USEQ7WQ7OZR9xdh0iME7woiFzN2U7eDss,3981
73
73
  holidays/countries/georgia.py,sha256=sOigkiz8jMf64ycNIEf24G9uFq9qSW8GA5IjodZ2CCM,3337
74
74
  holidays/countries/germany.py,sha256=MSkci8ShdCOou-TLrGkhorqK9GFKjN3S_UBY74hMSEA,9492
75
75
  holidays/countries/ghana.py,sha256=4JxcMnlUp7L9c-CJOHrWdDFDJomFJXipz1poIjXZbiA,3131
76
- holidays/countries/greece.py,sha256=BIUUrVBFbtS6br-RwIVHAHopojMfUKUWm0Vdzxsdzg4,3349
76
+ holidays/countries/greece.py,sha256=9IeTTmP2XBgWtrAozWa7FfqYw0kAUHYwYk9320NhdrU,3564
77
77
  holidays/countries/guam.py,sha256=m0_KYRp4eou-DDXcMD-gZSYln8mTlzBL_7lblhlb6t4,1325
78
78
  holidays/countries/guatemala.py,sha256=5Apehk1KSFgAxUE5tgz4RLjMdGtu4GsNIzmGHtduPaU,2952
79
79
  holidays/countries/honduras.py,sha256=S76d3ewTbfMsTzov5Vmlfwoyc1L-eGRxnfblhriUQ4Y,2630
@@ -108,27 +108,28 @@ holidays/countries/maldives.py,sha256=6bsAOhzYVBQN24RxPucAvIqUJZRqEJHP_0rU5VZSMa
108
108
  holidays/countries/malta.py,sha256=Sf4JFSeDtCZ8sJz3HXaQP6oyl6lgxhxQCX8XnvxWt68,4903
109
109
  holidays/countries/marshall_islands.py,sha256=vMpcBYHqM5wF6SItTXCW6PceT7-dHPUD5wBj-U-3KqQ,3256
110
110
  holidays/countries/mexico.py,sha256=gpUwBDdHrZ_0kUzM-4-h_RsZpeG1pQo8D7kF8IdPuhs,3206
111
- holidays/countries/moldova.py,sha256=OFllt_qXjDBfH8rg5CdkAkzfWH2aK90T81Xai0Cpjpo,3390
111
+ holidays/countries/moldova.py,sha256=EEX7CydvPyLaE1Ry4JSCpIyq2R__HRdH3BYMcar1_GY,3337
112
112
  holidays/countries/monaco.py,sha256=gpG_BS67XJnZ6F2_ahZ-oLXIog-hEuhkLdK4Xk06SxA,3055
113
113
  holidays/countries/montenegro.py,sha256=FIolfCyQJbnLNV8rDisfr1ZZv6DE6Q5hb0pjn_RSuN8,2741
114
114
  holidays/countries/morocco.py,sha256=HXBkGgAeboQj4PQ0RW--MiVTmydSNOukS6AtAOKTVB0,3558
115
115
  holidays/countries/mozambique.py,sha256=As5VAgFnRw4pq4opWPqRFlWCYNlgGw6lQHjNlrzCNK0,2489
116
116
  holidays/countries/namibia.py,sha256=agox1BeyfcpquHvHRmXZ2vUi1u-wNgUmQ4vLKDUU0aU,3388
117
117
  holidays/countries/netherlands.py,sha256=5VYIxgMQPPiBaygxKgAYUpkP8e08enF6Uf-XEhimo4c,3282
118
- holidays/countries/new_zealand.py,sha256=kUNboPc7cugOkzlUbmkvEgnyLakN7ucPbktKrqdB9BE,10466
118
+ holidays/countries/new_zealand.py,sha256=ypUDt4EG4d-ad6gDALYcC3_MyI72B5MxBES9Xluuj78,10465
119
119
  holidays/countries/nicaragua.py,sha256=TNSNv-FhdUVEHHhc57-teY5VjQTXU0WfYAy2dg1yMM8,2609
120
120
  holidays/countries/nigeria.py,sha256=V1eQysO6lSAehc-lzuGzTZUSi8t8YAupqrH9yEHmEHg,3238
121
121
  holidays/countries/north_macedonia.py,sha256=6NMyJhZLat5H78CFdiywhDl6GIyhi21ywLtY_iEAgSo,1916
122
122
  holidays/countries/northern_mariana_islands.py,sha256=t9yWs5-o3-LkIpOTGZ8Bx16rCgI23t11Qj1cHfSek-A,1343
123
123
  holidays/countries/norway.py,sha256=4yyD9c0bYCFmDJtZjSwUh94DH668F2AdnuvXG3dHMj0,3436
124
124
  holidays/countries/pakistan.py,sha256=621Xh-of3U84lq2eZ_BvIJjCRvdhfQ8s5VtwOZu--XM,4666
125
+ holidays/countries/palau.py,sha256=SjQOXgXimH-hH4_V6YCyOWCgnb2Z1GXIT24VfXWhEyw,4759
125
126
  holidays/countries/panama.py,sha256=-t1Ma0Sf9_Y3eAvhYg4FXKUg-YayyCUGkTXG8G-Bu2E,2449
126
127
  holidays/countries/papua_new_guinea.py,sha256=IMKbyO_UmyQy8mh0WQLdcM7IKXZey1M8yjk0M__Ol30,7588
127
128
  holidays/countries/paraguay.py,sha256=akpeGUc0-OdDSZ-5V2LGWNX4XvgBDxalQsXcg1--iog,8187
128
129
  holidays/countries/peru.py,sha256=V9Tmfob-McOdJRCb3t8CxwtLvuf8I8U2Ekb0-jQ72C4,2696
129
130
  holidays/countries/philippines.py,sha256=UTO9nzsRNgzSv_0tZk_OPti8ZFIYou1pWZ6b-1MfWlw,2874
130
131
  holidays/countries/poland.py,sha256=QHq_U-5aqINTc4-1JJMWkuPYqGKT8v0P0zagJDCGd64,4333
131
- holidays/countries/portugal.py,sha256=KToj9Q4jZt1UmMl7bRSDFnEwh-mJxY4vN4b9RfeFgtc,9033
132
+ holidays/countries/portugal.py,sha256=puBPmyfX4bjQTwRC-qIW5PauetTcMYWDBCUQqseFVsA,8941
132
133
  holidays/countries/puerto_rico.py,sha256=SYUBJba6oH4kkMlgPXcP9wLq0O57pHfZA_QAHnU_Lu4,1331
133
134
  holidays/countries/romania.py,sha256=ejXD5d-Fl49PxlI89X8RursNPm4aDG5gf87RbtYIIWA,2963
134
135
  holidays/countries/russia.py,sha256=-AbOxOYnm1JRQlmpN3qB0A6kjSNJbLhqF2nnh7ZH3hY,4502
@@ -140,24 +141,24 @@ holidays/countries/singapore.py,sha256=huZ4ayh9atEn5btcoGaTUBYWkNyV32NriRhId_jux
140
141
  holidays/countries/slovakia.py,sha256=LCRgd7F5mhvKFCWce977LcalW7-JxdPxtXXPPm_sGD0,3960
141
142
  holidays/countries/slovenia.py,sha256=XP9G0TcMR6gM9vgo6aQZfuYBv8QmFu52gbh1WOZ-hto,3015
142
143
  holidays/countries/south_africa.py,sha256=PCcG5AncbK34VWoa6Bz4ZCPyluFo4cQJqHCyIiQU0Lc,5712
143
- holidays/countries/south_korea.py,sha256=qmKGCPPVnMdfWaMAFYem0B195yrvxo_A5Fz4oui2hLM,25037
144
+ holidays/countries/south_korea.py,sha256=23J0qlorsBxdonKvXwTXFzxRzOP9st2zPKFw9vch3Nw,25041
144
145
  holidays/countries/spain.py,sha256=2iqWkjbXyvRdeGOI8DbpdCgR-3_hGuOLAE6FJqUkqpg,27634
145
146
  holidays/countries/sweden.py,sha256=CGIvoc-zcxdz8vhqG3VrNtul_8DGNpA7P1XDvohR6WM,4360
146
147
  holidays/countries/switzerland.py,sha256=cJ7ykhtZIuL75Jjem4y_4LXIGmG04ozU35mTkJjU5gQ,16216
147
148
  holidays/countries/taiwan.py,sha256=yCytErpOLrWRgao9OIPkP2wgTB8H-pIyUR8zjKLTxxc,6822
148
149
  holidays/countries/tanzania.py,sha256=9yuhe3szDsGWJL0fZzYMozsQPnfqOrt2LFxAbVKTvxg,10389
149
150
  holidays/countries/thailand.py,sha256=EjbGg-Xk2p5VgZ7PDho-i5ljMK1Vp_8m6hJZRDPJasA,38821
150
- holidays/countries/timor_leste.py,sha256=CHyQXowaRoMtW6Dytpc8KNWSMONhxUXrKJnVf1Hg54k,16354
151
+ holidays/countries/timor_leste.py,sha256=lz4_oU3zxgWskq_irwiSatpzVc_87xP--50WaHJRsug,17424
151
152
  holidays/countries/tonga.py,sha256=ROmBnUkD_oEqC1Wvinp4md57ESw127wtV12NInUOLCs,9766
152
153
  holidays/countries/tunisia.py,sha256=N31SfjXM58zTucUz_Z9BMZGyudtv3oJtHiII4LMJBtY,2802
153
154
  holidays/countries/turkey.py,sha256=gqzIyBs9GTU7L0T9aXjjvLaGrludDQiNVzJJOI2ym10,9464
154
155
  holidays/countries/ukraine.py,sha256=6dL6wP0bURY8X8z5KS1koifYugoGh_-j37I50iwbSV0,13675
155
156
  holidays/countries/united_arab_emirates.py,sha256=_6uMY9EvK5zpojVCot3W3BfLhFkziO7JHXQFPfQszqY,4833
156
157
  holidays/countries/united_kingdom.py,sha256=z_FqdBKlDojir_GAK4EaJLKc-bxqqnt2wGSpVBcsZ9U,7435
157
- holidays/countries/united_states.py,sha256=tJ45HtTCfSFpO6_G7GAJmo2KIYfnQ5yrrY4Gs6lXNWA,33455
158
+ holidays/countries/united_states.py,sha256=PUCOpjvs2qiIDnoFOyuXpEUppEnqb96lSdutkNM4YrI,33456
158
159
  holidays/countries/united_states_minor_outlying_islands.py,sha256=Wlo2J1oSYJAY_NW-znoMixMAd_LibJf0jbXg_IXCdv4,1353
159
160
  holidays/countries/united_states_virgin_islands.py,sha256=DzLAfM2eLei1JpaU3aZwNPI3p9xTERmN9LVT-3GMS_s,1346
160
- holidays/countries/uruguay.py,sha256=IX6XQSdogzV5ufFTwtrZNkduQ8x21zxGSgTCJTZ67Ao,6397
161
+ holidays/countries/uruguay.py,sha256=Y-lNkc7MrIMduNeueI4UZhG18qoatsUtNE73dgpgTOI,6315
161
162
  holidays/countries/uzbekistan.py,sha256=IeqIi_gYANvvCzIbhCJ7WWOfkTjVBZUSBGvjmMDmcCs,7158
162
163
  holidays/countries/vanuatu.py,sha256=ap1RRN10FAmWwa5iXvjcZ7QgE5axPZz-mi7kSnvWpps,3444
163
164
  holidays/countries/vatican_city.py,sha256=cTg9C47DDl17TmOn8h4J5-h-NkKSCm5YGuB8eluPkSg,4194
@@ -174,7 +175,7 @@ holidays/groups/chinese.py,sha256=BYHXWV9ANIUggWN7MVEwe0FVBqCn-7XLR51xRLJBvCI,80
174
175
  holidays/groups/christian.py,sha256=-ystqBGNqdJKBV0bly-QRJEx2UuKcU_9pjzLl0je-Ho,15857
175
176
  holidays/groups/custom.py,sha256=4ycXAs9cm1eB4YuQdMWz_JpcYuImsab6gTX35PzDna8,1360
176
177
  holidays/groups/hindu.py,sha256=5pQVZI_kYuK5XIb1d4xdz1VgZBP-2e-0T6i2Hm1r4LY,2424
177
- holidays/groups/international.py,sha256=Mrku-xtruqMkpRWfBl5wkvIxMX_YJPQAF5AYxCAg7Ro,7070
178
+ holidays/groups/international.py,sha256=6UoYUvp2oQTnpFi7zZ67YcUXTYO5_XrF0aUIXXKNVww,7428
178
179
  holidays/groups/islamic.py,sha256=oMdbKEhkdMioULRIbPo1LBmHHp1qwhT82YrG5lI0DBw,14210
179
180
  holidays/groups/persian.py,sha256=Dk1S5QmC1urwLtMIsVK4rnzCpZOz58RzH9vM1xWYdtY,5673
180
181
  holidays/groups/thai.py,sha256=LWxJ4pqzXN7cs6yM4N4WbqIFI9PFy_zkDo-D-cox2eI,6899
@@ -708,9 +709,9 @@ holidays/locale/zh_TW/LC_MESSAGES/CN.mo,sha256=F6cp16LNz1N4eRH6X9i0HKYTeJ5qMpdUU
708
709
  holidays/locale/zh_TW/LC_MESSAGES/CN.po,sha256=ulWILGK_yCghW7AnAw07Kgv5_9J9P5vf2dGj2SpbpKc,2524
709
710
  holidays/locale/zh_TW/LC_MESSAGES/TW.mo,sha256=S4I-U8VKhJqcZ5fxoDWxG--qPL9TGacOgU6oaXNKxxo,461
710
711
  holidays/locale/zh_TW/LC_MESSAGES/TW.po,sha256=uDCu7osDGOu6SmeD3qFBlV4uy0bUknEXxR43o4binl8,1788
711
- holidays-0.47.dist-info/AUTHORS,sha256=ObOZOF7A0G_sl-8gMI8RuPEfyBKcKk1bDePE_fwgCXs,2071
712
- holidays-0.47.dist-info/LICENSE,sha256=jD0zUrtvmPyeu89b7hURSzFkPsNrNjD3--XRoT3Iwt8,1241
713
- holidays-0.47.dist-info/METADATA,sha256=nEiVFzkkwBxSSRlDM7LptDdD-jufNRJEP1VkmENV8IM,23204
714
- holidays-0.47.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
715
- holidays-0.47.dist-info/top_level.txt,sha256=VbGrOCSM-V2kztuL_7CoDKLOgzOc85ueFsng7VYerrQ,9
716
- holidays-0.47.dist-info/RECORD,,
712
+ holidays-0.48.dist-info/AUTHORS,sha256=ObOZOF7A0G_sl-8gMI8RuPEfyBKcKk1bDePE_fwgCXs,2071
713
+ holidays-0.48.dist-info/LICENSE,sha256=jD0zUrtvmPyeu89b7hURSzFkPsNrNjD3--XRoT3Iwt8,1241
714
+ holidays-0.48.dist-info/METADATA,sha256=GCvfgvV2Sr6MwMyu6sZCrIg0zLKb51QiABOzRTeYLtA,23246
715
+ holidays-0.48.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
716
+ holidays-0.48.dist-info/top_level.txt,sha256=VbGrOCSM-V2kztuL_7CoDKLOgzOc85ueFsng7VYerrQ,9
717
+ holidays-0.48.dist-info/RECORD,,