holidays 0.86__py3-none-any.whl → 0.88__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 (69) hide show
  1. holidays/calendars/chinese.py +44 -6
  2. holidays/calendars/hindu.py +85 -1
  3. holidays/constants.py +1 -0
  4. holidays/countries/american_samoa.py +2 -0
  5. holidays/countries/bangladesh.py +13 -9
  6. holidays/countries/belarus.py +4 -2
  7. holidays/countries/brazil.py +27 -1
  8. holidays/countries/chile.py +2 -3
  9. holidays/countries/germany.py +75 -74
  10. holidays/countries/guam.py +2 -0
  11. holidays/countries/india.py +5 -3
  12. holidays/countries/macau.py +39 -45
  13. holidays/countries/malaysia.py +171 -71
  14. holidays/countries/new_zealand.py +4 -3
  15. holidays/countries/northern_mariana_islands.py +2 -0
  16. holidays/countries/puerto_rico.py +4 -2
  17. holidays/countries/sweden.py +35 -11
  18. holidays/countries/taiwan.py +6 -5
  19. holidays/countries/turks_and_caicos_islands.py +13 -3
  20. holidays/countries/united_states.py +434 -133
  21. holidays/countries/united_states_minor_outlying_islands.py +2 -0
  22. holidays/countries/united_states_virgin_islands.py +2 -0
  23. holidays/countries/uzbekistan.py +12 -1
  24. holidays/countries/venezuela.py +113 -23
  25. holidays/financial/__init__.py +1 -0
  26. holidays/financial/bombay_stock_exchange.py +33 -0
  27. holidays/financial/national_stock_exchange_of_india.py +1 -1
  28. holidays/financial/ny_stock_exchange.py +591 -89
  29. holidays/groups/chinese.py +11 -18
  30. holidays/groups/hindu.py +24 -0
  31. holidays/holiday_base.py +2 -1
  32. holidays/locale/bn/LC_MESSAGES/BD.mo +0 -0
  33. holidays/locale/de/LC_MESSAGES/DE.mo +0 -0
  34. holidays/locale/en_IN/LC_MESSAGES/XBOM.mo +0 -0
  35. holidays/locale/en_TC/LC_MESSAGES/TC.mo +0 -0
  36. holidays/locale/en_US/LC_MESSAGES/BD.mo +0 -0
  37. holidays/locale/en_US/LC_MESSAGES/BR.mo +0 -0
  38. holidays/locale/en_US/LC_MESSAGES/DE.mo +0 -0
  39. holidays/locale/en_US/LC_MESSAGES/MY.mo +0 -0
  40. holidays/locale/en_US/LC_MESSAGES/SE.mo +0 -0
  41. holidays/locale/en_US/LC_MESSAGES/TC.mo +0 -0
  42. holidays/locale/en_US/LC_MESSAGES/US.mo +0 -0
  43. holidays/locale/en_US/LC_MESSAGES/VE.mo +0 -0
  44. holidays/locale/en_US/LC_MESSAGES/XBOM.mo +0 -0
  45. holidays/locale/es/LC_MESSAGES/VE.mo +0 -0
  46. holidays/locale/gu/LC_MESSAGES/IN.mo +0 -0
  47. holidays/locale/gu/LC_MESSAGES/XBOM.mo +0 -0
  48. holidays/locale/gu/LC_MESSAGES/XNSE.mo +0 -0
  49. holidays/locale/hi/LC_MESSAGES/XBOM.mo +0 -0
  50. holidays/locale/ms_MY/LC_MESSAGES/MY.mo +0 -0
  51. holidays/locale/pt_BR/LC_MESSAGES/BR.mo +0 -0
  52. holidays/locale/sv/LC_MESSAGES/SE.mo +0 -0
  53. holidays/locale/th/LC_MESSAGES/DE.mo +0 -0
  54. holidays/locale/th/LC_MESSAGES/MY.mo +0 -0
  55. holidays/locale/th/LC_MESSAGES/SE.mo +0 -0
  56. holidays/locale/th/LC_MESSAGES/US.mo +0 -0
  57. holidays/locale/uk/LC_MESSAGES/BR.mo +0 -0
  58. holidays/locale/uk/LC_MESSAGES/DE.mo +0 -0
  59. holidays/locale/uk/LC_MESSAGES/SE.mo +0 -0
  60. holidays/locale/uk/LC_MESSAGES/VE.mo +0 -0
  61. holidays/registry.py +1 -0
  62. holidays/utils.py +62 -1
  63. holidays/version.py +3 -1
  64. {holidays-0.86.dist-info → holidays-0.88.dist-info}/METADATA +30 -16
  65. {holidays-0.86.dist-info → holidays-0.88.dist-info}/RECORD +69 -60
  66. {holidays-0.86.dist-info → holidays-0.88.dist-info}/licenses/CONTRIBUTORS +6 -0
  67. {holidays-0.86.dist-info → holidays-0.88.dist-info}/WHEEL +0 -0
  68. {holidays-0.86.dist-info → holidays-0.88.dist-info}/licenses/LICENSE +0 -0
  69. {holidays-0.86.dist-info → holidays-0.88.dist-info}/top_level.txt +0 -0
@@ -1306,21 +1306,39 @@ class _ChineseLunisolar:
1306
1306
  2053: (FEB, 18),
1307
1307
  }
1308
1308
 
1309
+ QINGMING_THRESHOLDS: dict[str, dict[str, dict[int, int]]] = {
1310
+ # UTC+7.
1311
+ VIETNAMESE_CALENDAR: {
1312
+ "apr_4": {0: 1972, 1: 2005, 2: 2038, 3: 2067},
1313
+ "apr_6": {2: 1906, 3: 1935},
1314
+ },
1315
+ # UTC+8.
1316
+ CHINESE_CALENDAR: {
1317
+ "apr_4": {0: 1976, 1: 2009, 2: 2042, 3: 2075},
1318
+ "apr_6": {2: 1910, 3: 1943},
1319
+ },
1320
+ # UTC+9.
1321
+ KOREAN_CALENDAR: {
1322
+ "apr_4": {0: 1984, 1: 2017, 2: 2046, 3: 2079},
1323
+ "apr_6": {2: 1914, 3: 1947},
1324
+ },
1325
+ }
1326
+
1309
1327
  WINTER_SOLSTICE_THRESHOLDS: dict[str, dict[str, dict[int, int]]] = {
1310
1328
  # UTC+7.
1311
1329
  VIETNAMESE_CALENDAR: {
1312
1330
  "dec_21": {0: 1980, 1: 2017, 2: 2050, 3: 2083},
1313
- "dec_23": {3: 1943},
1331
+ "dec_23": {2: 1910, 3: 1943},
1314
1332
  },
1315
1333
  # UTC+8.
1316
1334
  CHINESE_CALENDAR: {
1317
1335
  "dec_21": {0: 1988, 1: 2021, 2: 2058, 3: 2091},
1318
- "dec_23": {3: 1947},
1336
+ "dec_23": {2: 1914, 3: 1947},
1319
1337
  },
1320
1338
  # UTC+9.
1321
1339
  KOREAN_CALENDAR: {
1322
1340
  "dec_21": {0: 1992, 1: 2029, 2: 2062, 3: 2099},
1323
- "dec_23": {3: 1955},
1341
+ "dec_23": {2: 1918, 3: 1955},
1324
1342
  },
1325
1343
  }
1326
1344
 
@@ -1376,11 +1394,31 @@ class _ChineseLunisolar:
1376
1394
  def mid_autumn_date(self, year: int, calendar=None) -> tuple[date | None, bool]:
1377
1395
  return self._get_holiday(MID_AUTUMN, year, calendar)
1378
1396
 
1379
- def winter_solstice_date(self, year: int, calendar=None) -> tuple[date | None, bool]:
1397
+ def qingming_date(self, year: int, calendar=None) -> tuple[date, bool]:
1398
+ """Return Qingming Festival (5th solar term of the Chinese lunisolar calendar) date.
1399
+
1400
+ !!! note "Note"
1401
+ This approximation is reliable for 1901-2099 years.
1402
+ """
1403
+ calendar = calendar or self.__calendar
1404
+ self.__verify_calendar(calendar)
1405
+
1406
+ thresholds = self.QINGMING_THRESHOLDS[calendar]
1407
+ year_mod = year % 4
1408
+ if year >= thresholds["apr_4"][year_mod]:
1409
+ day = 4
1410
+ elif year <= thresholds["apr_6"].get(year_mod, 0):
1411
+ day = 6
1412
+ else:
1413
+ day = 5
1414
+
1415
+ return date(year, APR, day), not (1901 <= year <= 2099)
1416
+
1417
+ def winter_solstice_date(self, year: int, calendar=None) -> tuple[date, bool]:
1380
1418
  """Return Winter Solstice (22nd solar term in Chinese Lunisolar calendar) date.
1381
1419
 
1382
1420
  !!! note "Note"
1383
- This approximation is reliable for 1941-2099 years.
1421
+ This approximation is reliable for 1901-2099 years.
1384
1422
  """
1385
1423
  calendar = calendar or self.__calendar
1386
1424
  self.__verify_calendar(calendar)
@@ -1394,7 +1432,7 @@ class _ChineseLunisolar:
1394
1432
  else:
1395
1433
  day = 22
1396
1434
 
1397
- return date(year, DEC, day), not (1941 <= year <= 2099)
1435
+ return date(year, DEC, day), not (1901 <= year <= 2099)
1398
1436
 
1399
1437
 
1400
1438
  class _CustomChineseHolidays(_CustomCalendar, _ChineseLunisolar):
@@ -14,9 +14,10 @@ from collections.abc import Iterable
14
14
  from datetime import date
15
15
 
16
16
  from holidays.calendars.custom import _CustomCalendar
17
- from holidays.calendars.gregorian import JAN, FEB, MAR, APR, MAY, AUG, SEP, OCT, NOV, DEC
17
+ from holidays.calendars.gregorian import JAN, FEB, MAR, APR, MAY, JUN, AUG, SEP, OCT, NOV, DEC
18
18
  from holidays.helpers import _normalize_tuple
19
19
 
20
+ BATHUKAMMA = "BATHUKAMMA"
20
21
  BUDDHA_PURNIMA = "BUDDHA_PURNIMA"
21
22
  CHHATH_PUJA = "CHHATH_PUJA"
22
23
  DIWALI = "DIWALI"
@@ -32,6 +33,7 @@ HOLI = "HOLI"
32
33
  JANMASHTAMI = "JANMASHTAMI"
33
34
  MAHA_ASHTAMI = "MAHA_ASHTAMI"
34
35
  MAHA_NAVAMI = "MAHA_NAVAMI"
36
+ MAHARANA_PRATAP_JAYANTI = "MAHARANA_PRATAP_JAYANTI"
35
37
  MAHA_SHIVARATRI = "MAHA_SHIVARATRI"
36
38
  MAHAVIR_JAYANTI = "MAHAVIR_JAYANTI"
37
39
  MAKAR_SANKRANTI = "MAKAR_SANKRANTI"
@@ -47,6 +49,45 @@ VAISAKHI = "VAISAKHI"
47
49
 
48
50
 
49
51
  class _HinduLunisolar:
52
+ # Dates for Bathukamma (Mahalaya Amavasya/amavasya shraddha)
53
+ # [Mahalaya Amavasya](https://web.archive.org/web/20250906191235/https://www.drikpanchang.com/shraddha/tithi/amavasya-shraddha-date-time.html)
54
+ # [2018](https://web.archive.org/web/20250402131537/https://www.telangana.gov.in/Downloads/calendar-2018/)
55
+ # [2019](https://web.archive.org/web/20250508145651/https://www.telangana.gov.in/Downloads/calendar-2019/)
56
+ # [2020](https://web.archive.org/web/20250421174049/https://www.telangana.gov.in/downloads/calendar-2020/)
57
+ # [2021](https://web.archive.org/web/20250404142143/https://www.telangana.gov.in/Downloads/calendar-2021/)
58
+ # [2022](https://web.archive.org/web/20250217143857/https://www.telangana.gov.in/Downloads/calendar-2022/)
59
+ # [2023](https://web.archive.org/web/20250123180708/https://www.telangana.gov.in/Downloads/calendar-2023/)
60
+ # [2024](https://web.archive.org/web/20250217144536/https://www.telangana.gov.in/Downloads/calendar/)
61
+ # [2025](https://web.archive.org/web/20250217133450/https://www.telangana.gov.in/Downloads/calendar-2025/)
62
+ BATHUKAMMA_DATES = {
63
+ 2010: (OCT, 7),
64
+ 2011: (SEP, 27),
65
+ 2012: (OCT, 15),
66
+ 2013: (OCT, 4),
67
+ 2014: (SEP, 23),
68
+ 2015: (OCT, 12),
69
+ 2016: (SEP, 30),
70
+ 2017: (SEP, 19),
71
+ 2018: (OCT, 8),
72
+ 2019: (SEP, 28),
73
+ 2020: (OCT, 16),
74
+ 2021: (OCT, 6),
75
+ 2022: (SEP, 25),
76
+ 2023: (OCT, 14),
77
+ 2024: (OCT, 2),
78
+ 2025: (SEP, 21),
79
+ 2026: (OCT, 10),
80
+ 2027: (SEP, 29),
81
+ 2028: (SEP, 18),
82
+ 2029: (OCT, 7),
83
+ 2030: (SEP, 27),
84
+ 2031: (OCT, 15),
85
+ 2032: (OCT, 4),
86
+ 2033: (SEP, 23),
87
+ 2034: (OCT, 11),
88
+ 2035: (OCT, 1),
89
+ }
90
+
50
91
  # https://web.archive.org/web/20240804044401/https://www.timeanddate.com/holidays/india/buddha-purnima
51
92
  BUDDHA_PURNIMA_DATES = {
52
93
  2001: (APR, 30),
@@ -784,6 +825,43 @@ class _HinduLunisolar:
784
825
  2035: (OCT, 10),
785
826
  }
786
827
 
828
+ # Dates for Maharana Pratap Jayanti (Jyeshtha Shukla 3)
829
+ # [Maharana Pratap Jayanti](https://web.archive.org/web/20241212205537/https://www.drikpanchang.com/calendars/indian/jayanti/maharana-pratap/maharana-pratap-jayanti.html)
830
+ # [2018](https://web.archive.org/web/20251213153439/https://gad.rajasthan.gov.in/writereaddata/OLDWEBDATA/PDF/Govt_Holidays_2018_25102017.pdf)
831
+ # [2019](https://web.archive.org/web/20251213151532/https://gad.rajasthan.gov.in/writereaddata/OLDWEBDATA/PDF/Govt_Holidays_2019_02112018.pdf)
832
+ # [2020](https://web.archive.org/web/20251213151547/https://gad.rajasthan.gov.in/writereaddata/OLDWEBDATA/PDF/Govt_Holidays_2020_22112019.pdf)
833
+ # [2021](https://web.archive.org/web/20251213151616/https://gad.rajasthan.gov.in/writereaddata/OLDWEBDATA/PDF/holiday_calender_2021_gr6_26102020.pdf)
834
+ # [2022](https://web.archive.org/web/20251213151608/https://gad.rajasthan.gov.in/writereaddata/OLDWEBDATA/PDF/Govt_holidays_list_21_10_2021.pdf)
835
+ # [2023](https://web.archive.org/web/20251213151559/https://gad.rajasthan.gov.in/writereaddata/OLDWEBDATA/PDF/Govt_holidays_list_16_11_2022.pdf)
836
+ MAHARANA_PRATAP_JAYANTI_DATES = {
837
+ 2010: (JUN, 15),
838
+ 2011: (JUN, 4),
839
+ 2012: (MAY, 24),
840
+ 2013: (JUN, 11),
841
+ 2014: (MAY, 31),
842
+ 2015: (MAY, 20),
843
+ 2016: (JUN, 7),
844
+ 2017: (MAY, 28),
845
+ 2018: (JUN, 16),
846
+ 2019: (JUN, 6),
847
+ 2020: (MAY, 25),
848
+ 2021: (JUN, 13),
849
+ 2022: (JUN, 2),
850
+ 2023: (MAY, 22),
851
+ 2024: (JUN, 9),
852
+ 2025: (MAY, 29),
853
+ 2026: (JUN, 17),
854
+ 2027: (JUN, 7),
855
+ 2028: (MAY, 27),
856
+ 2029: (MAY, 15),
857
+ 2030: (JUN, 4),
858
+ 2031: (MAY, 24),
859
+ 2032: (JUN, 11),
860
+ 2033: (MAY, 31),
861
+ 2034: (MAY, 20),
862
+ 2035: (JUN, 8),
863
+ }
864
+
787
865
  # https://web.archive.org/web/20250323040914/https://www.timeanddate.com/holidays/india/maha-shivaratri-shivaratri
788
866
  MAHA_SHIVARATRI_DATES = {
789
867
  2001: (FEB, 21),
@@ -1408,6 +1486,9 @@ class _HinduLunisolar:
1408
1486
  for dt in _normalize_tuple(exact_dates.get(year, estimated_dates.get(year, ()))):
1409
1487
  yield date(year, *dt), year not in exact_dates
1410
1488
 
1489
+ def bathukamma_date(self, year: int) -> tuple[date | None, bool]:
1490
+ return self._get_holiday(BATHUKAMMA, year)
1491
+
1411
1492
  def buddha_purnima_date(self, year: int) -> tuple[date | None, bool]:
1412
1493
  return self._get_holiday(BUDDHA_PURNIMA, year)
1413
1494
 
@@ -1459,6 +1540,9 @@ class _HinduLunisolar:
1459
1540
  def maha_shivaratri_date(self, year: int) -> tuple[date | None, bool]:
1460
1541
  return self._get_holiday(MAHA_SHIVARATRI, year)
1461
1542
 
1543
+ def maharana_pratap_jayanti_date(self, year: int) -> tuple[date | None, bool]:
1544
+ return self._get_holiday(MAHARANA_PRATAP_JAYANTI, year)
1545
+
1462
1546
  def mahavir_jayanti_date(self, year: int) -> tuple[date | None, bool]:
1463
1547
  return self._get_holiday(MAHAVIR_JAYANTI, year)
1464
1548
 
holidays/constants.py CHANGED
@@ -38,6 +38,7 @@ HOLIDAY_NAME_DELIMITER = "; " # Holiday names separator.
38
38
  # Supported holiday categories.
39
39
  ARMED_FORCES = "armed_forces"
40
40
  BANK = "bank"
41
+ DE_FACTO = "de_facto"
41
42
  GOVERNMENT = "government"
42
43
  HALF_DAY = "half_day"
43
44
  OPTIONAL = "optional"
@@ -10,6 +10,7 @@
10
10
  # Website: https://github.com/vacanza/holidays
11
11
  # License: MIT (see LICENSE file)
12
12
 
13
+ from holidays.constants import PUBLIC, UNOFFICIAL
13
14
  from holidays.countries.united_states import UnitedStates
14
15
  from holidays.mixins.child_entity import ChildEntity
15
16
 
@@ -25,6 +26,7 @@ class AmericanSamoa(ChildEntity, UnitedStates):
25
26
  parent_entity = UnitedStates
26
27
  # Became a U.S. Territory since April 17th, 1900.
27
28
  start_year = 1901
29
+ supported_categories = (PUBLIC, UNOFFICIAL)
28
30
 
29
31
 
30
32
  class HolidaysAS(AmericanSamoa):
@@ -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.calendars.gregorian import FRI, SAT
14
16
  from holidays.groups import InternationalHolidays
15
17
  from holidays.holiday_base import HolidayBase
@@ -24,6 +26,8 @@ class Bangladesh(HolidayBase, InternationalHolidays):
24
26
  """
25
27
 
26
28
  country = "BD"
29
+ default_language = "bn"
30
+ supported_languages = ("bn", "en_US")
27
31
  weekend = {FRI, SAT}
28
32
 
29
33
  def __init__(self, *args, **kwargs):
@@ -31,26 +35,26 @@ class Bangladesh(HolidayBase, InternationalHolidays):
31
35
  super().__init__(*args, **kwargs)
32
36
 
33
37
  def _populate_public_holidays(self):
34
- # International Mother's language Day.
35
- self._add_holiday_feb_21("International Mother's language Day")
38
+ # Martyrs' Day and International Mother Language Day.
39
+ self._add_holiday_feb_21(tr("শহীদ দিবস আন্তর্জাতিক মাতৃভাষা দিবস"))
36
40
 
37
- # Sheikh Mujibur Rahman's Birthday and Children's Day.
38
- self._add_holiday_mar_17("Sheikh Mujibur Rahman's Birthday and Children's Day")
41
+ # Sheikh Mujibur Rahman's Birthday.
42
+ self._add_holiday_mar_17(tr("জাতির পিতা বঙ্গবন্ধু শেখ মুজিবুর রহমান এর জন্মদিবস"))
39
43
 
40
44
  # Independence Day.
41
- self._add_holiday_mar_26("Independence Day")
45
+ self._add_holiday_mar_26(tr("স্বাধীনতা দিবস"))
42
46
 
43
47
  # Bengali New Year's Day.
44
- self._add_holiday_apr_14("Bengali New Year's Day")
48
+ self._add_holiday_apr_14(tr("পহেলা বৈশাখ"))
45
49
 
46
50
  # May Day.
47
- self._add_labor_day("May Day")
51
+ self._add_labor_day(tr("মে দিবস"))
48
52
 
49
53
  # National Mourning Day.
50
- self._add_holiday_aug_15("National Mourning Day")
54
+ self._add_holiday_aug_15(tr("জাতীয় শোক দিবস"))
51
55
 
52
56
  # Victory Day.
53
- self._add_holiday_dec_16("Victory Day")
57
+ self._add_holiday_dec_16(tr("বিজয় দিবস"))
54
58
 
55
59
 
56
60
  class BD(Bangladesh):
@@ -148,8 +148,9 @@ class BelarusStaticHolidays:
148
148
  """Belarus special holidays.
149
149
 
150
150
  References:
151
- * <https://web.archive.org/web/20241005054448/https://belarusbank.by/en/financial-institutions/11151>
152
- * <https://web.archive.org/web/20241210150222/https://belarusbank.by/en/financial-institutions/11160>
151
+ * [2024](https://web.archive.org/web/20241005054448/https://belarusbank.by/en/financial-institutions/11151)
152
+ * [2025](https://web.archive.org/web/20241210150222/https://belarusbank.by/en/financial-institutions/11160)
153
+ * [2026](https://web.archive.org/web/20251230174418/https://belarusbank.by/en/financial-institutions/11163)
153
154
  """
154
155
 
155
156
  # Date format (see strftime() Format Codes)
@@ -300,4 +301,5 @@ class BelarusStaticHolidays:
300
301
  (JUL, 4, JUL, 12),
301
302
  (DEC, 26, DEC, 20),
302
303
  ),
304
+ 2026: (APR, 20, APR, 25),
303
305
  }
@@ -28,6 +28,8 @@ class Brazil(ObservedHolidayBase, ChristianHolidays, InternationalHolidays):
28
28
  * [Decreto n. 19.488, de 15.12.1930](https://web.archive.org/web/20241006041503/http://camara.leg.br/legin/fed/decret/1930-1939/decreto-19488-15-dezembro-1930-508040-republicacao-85201-pe.html)
29
29
  * [Lei n. 662, de 6.04.1949](https://web.archive.org/web/20240913060643/https://www2.camara.leg.br/legin/fed/lei/1940-1949/lei-662-6-abril-1949-347136-publicacaooriginal-1-pl.html)
30
30
  * [Lei n. 14.759, de 21.12.2023](https://web.archive.org/web/20250402234552/https://www2.camara.leg.br/legin/fed/lei/2023/lei-14759-21-dezembro-2023-795091-publicacaooriginal-170522-pl.html)
31
+ * São Paulo Capital:
32
+ * [Anexo Único Integrante do Decreto n. 56.756, de 4.01.2016](https://web.archive.org/web/20251224031221/https://legislacao.prefeitura.sp.gov.br/leis/decreto-56756-de-04-de-janeiro-de-2016/anexo/5ec3d7a71411926001a56c56/Anexo%20Único%20do%20Decreto%20nº%2056.756_2016.pdf)
31
33
  """
32
34
 
33
35
  country = "BR"
@@ -62,6 +64,8 @@ class Brazil(ObservedHolidayBase, ChristianHolidays, InternationalHolidays):
62
64
  "SE",
63
65
  "SP",
64
66
  "TO",
67
+ # Cities.
68
+ "São Paulo Capital",
65
69
  )
66
70
  subdivisions_aliases = {
67
71
  "Acre": "AC",
@@ -155,6 +159,9 @@ class Brazil(ObservedHolidayBase, ChristianHolidays, InternationalHolidays):
155
159
  # Christmas Day.
156
160
  self._add_christmas_day(tr("Natal"))
157
161
 
162
+ if self.subdiv == "São Paulo Capital":
163
+ self._populate_subdiv_sao_paulo_capital_public_holidays()
164
+
158
165
  def _populate_optional_holidays(self):
159
166
  # Carnival.
160
167
  name = tr("Carnaval")
@@ -178,7 +185,8 @@ class Brazil(ObservedHolidayBase, ChristianHolidays, InternationalHolidays):
178
185
 
179
186
  def _populate_subdiv_holidays(self):
180
187
  # Lei n. 9.093, de 12.09.1995
181
- if self._year >= 1996:
188
+ # Lei Municipal n. 7.008, de 6.04.1967
189
+ if self._year >= 1996 or self.subdiv == "São Paulo Capital":
182
190
  super()._populate_subdiv_holidays()
183
191
 
184
192
  def _populate_subdiv_ac_public_holidays(self):
@@ -224,6 +232,7 @@ class Brazil(ObservedHolidayBase, ChristianHolidays, InternationalHolidays):
224
232
  self._add_holiday_nov_20(tr("Consciência Negra"))
225
233
 
226
234
  if self._year >= 2013:
235
+ # Evangelical Day.
227
236
  self._add_holiday_nov_30(tr("Dia do Evangélico"))
228
237
 
229
238
  def _populate_subdiv_am_public_holidays(self):
@@ -231,6 +240,7 @@ class Brazil(ObservedHolidayBase, ChristianHolidays, InternationalHolidays):
231
240
  self._add_holiday_sep_5(tr("Elevação do Amazonas à categoria de província"))
232
241
 
233
242
  if 2010 <= self._year <= 2023:
243
+ # Black Awareness Day.
234
244
  self._add_holiday_nov_20(tr("Consciência Negra"))
235
245
 
236
246
  def _populate_subdiv_ap_public_holidays(self):
@@ -246,6 +256,7 @@ class Brazil(ObservedHolidayBase, ChristianHolidays, InternationalHolidays):
246
256
  self._add_holiday_sep_13(tr("Criação do Território Federal"))
247
257
 
248
258
  if 2008 <= self._year <= 2023:
259
+ # Black Awareness Day.
249
260
  self._add_holiday_nov_20(tr("Consciência Negra"))
250
261
 
251
262
  def _populate_subdiv_ba_public_holidays(self):
@@ -266,6 +277,7 @@ class Brazil(ObservedHolidayBase, ChristianHolidays, InternationalHolidays):
266
277
  # Founding of Brasilia.
267
278
  self._add_holiday_apr_21(tr("Fundação de Brasília"))
268
279
 
280
+ # Evangelical Day.
269
281
  self._add_holiday_nov_30(tr("Dia do Evangélico"))
270
282
 
271
283
  def _populate_subdiv_es_public_holidays(self):
@@ -294,6 +306,7 @@ class Brazil(ObservedHolidayBase, ChristianHolidays, InternationalHolidays):
294
306
 
295
307
  def _populate_subdiv_mt_public_holidays(self):
296
308
  if 2003 <= self._year <= 2023:
309
+ # Black Awareness Day.
297
310
  self._add_holiday_nov_20(tr("Consciência Negra"))
298
311
 
299
312
  def _populate_subdiv_pa_public_holidays(self):
@@ -323,6 +336,7 @@ class Brazil(ObservedHolidayBase, ChristianHolidays, InternationalHolidays):
323
336
  self._add_saint_georges_day(tr("São Jorge"))
324
337
 
325
338
  if 2002 <= self._year <= 2023:
339
+ # Black Awareness Day.
326
340
  self._add_holiday_nov_20(tr("Consciência Negra"))
327
341
 
328
342
  def _populate_subdiv_rn_public_holidays(self):
@@ -335,12 +349,15 @@ class Brazil(ObservedHolidayBase, ChristianHolidays, InternationalHolidays):
335
349
  self._add_holiday_oct_3(tr("Mártires de Cunhaú e Uruaçu"))
336
350
 
337
351
  def _populate_subdiv_ro_public_holidays(self):
352
+ # State Creation Day.
338
353
  self._add_holiday_jan_4(tr("Criação do Estado"))
339
354
 
340
355
  if self._year >= 2002:
356
+ # Evangelical Day.
341
357
  self._add_holiday_jun_18(tr("Dia do Evangélico"))
342
358
 
343
359
  def _populate_subdiv_rr_public_holidays(self):
360
+ # State Creation Day.
344
361
  self._add_holiday_oct_5(tr("Criação do Estado"))
345
362
 
346
363
  def _populate_subdiv_rs_public_holidays(self):
@@ -372,6 +389,14 @@ class Brazil(ObservedHolidayBase, ChristianHolidays, InternationalHolidays):
372
389
  # Constitutionalist Revolution.
373
390
  self._add_holiday_jul_9(tr("Revolução Constitucionalista"))
374
391
 
392
+ def _populate_subdiv_sao_paulo_capital_public_holidays(self):
393
+ self._populate_subdiv_sp_public_holidays()
394
+
395
+ # Lei Municipal n. 7.008, de 6.04.1967
396
+ if self._year >= 1968:
397
+ # São Paulo City Anniversary.
398
+ self._add_holiday_jan_25(tr("Aniversário da Cidade de São Paulo"))
399
+
375
400
  def _populate_subdiv_to_public_holidays(self):
376
401
  if self._year >= 1998:
377
402
  # Autonomy Day.
@@ -380,6 +405,7 @@ class Brazil(ObservedHolidayBase, ChristianHolidays, InternationalHolidays):
380
405
  # Our Lady of Nativity.
381
406
  self._add_nativity_of_mary_day(tr("Nossa Senhora da Natividade"))
382
407
 
408
+ # State Creation Day.
383
409
  self._add_holiday_oct_5(tr("Criação do Estado"))
384
410
 
385
411
 
@@ -60,8 +60,7 @@ class Chile(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, Stati
60
60
  * [Law 19.973 (Sep 17, 2004 holiday)](https://web.archive.org/web/20250812023003/https://www.bcn.cl/leychile/navegar?idLey=19973)
61
61
  * [Law 20.450 (Sep 17, 2010 and Sep 20, 2010 holidays)](https://web.archive.org/web/20250812023308/https://www.bcn.cl/leychile/navegar?idLey=20450)
62
62
  * [Law 21.521 (eliminate Dec 31 again, after the CMF publishes a specific regulation)](https://web.archive.org/web/20240214154900/https://www.bcn.cl/leychile/navegar?idNorma=1187323&idVersion=2023-02-03)
63
- * [Norma de Carácter General 543 de la CMF](https://web.archive.org/web/20250811111649/https://www.cmfchile.cl/normativa/ncg_543_2025.pdf)
64
- * [Resolución Exenta N° 7.671 (CMF, 2025-08-01)](https://web.archive.org/web/20250811123908/https://www.cmfchile.cl/sitio/aplic/serdoc/ver_sgd.php?s567=ba5ad42feea3531a678a9db5253a9477VFdwQmVVNVVRVFJOUkZWNlRucEpORTVCUFQwPQ==&secuencia=-1&t=1754086087)
63
+ * [Law 21.791 (restore bank holiday on Dec 31)](https://web.archive.org/web/20251219021727/https://www.bcn.cl/leychile/navegar?idNorma=1219578&idVersion=2025-12-17)
65
64
  """
66
65
 
67
66
  country = "CL"
@@ -244,7 +243,7 @@ class Chile(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, Stati
244
243
  if 1957 <= self._year <= 1975:
245
244
  self._add_holiday_jun_30(name)
246
245
 
247
- if 1956 <= self._year <= 2024 and self._year != 1997:
246
+ if 1956 <= self._year and self._year != 1997:
248
247
  self._add_holiday_dec_31(name)
249
248
 
250
249
  @property