diff --git a/README.md b/README.md
index 1c1f02821b..52f2258271 100644
--- a/README.md
+++ b/README.md
@@ -1938,6 +1938,13 @@ code when available. The following financial markets are available:
+| Bolsa Mexicana de Valores |
+XMEX |
+Bolsa Mexicana de Valores (BMV) holidays |
+en_US, es, uk |
+ |
+
+
| Bombay Stock Exchange |
XBOM |
Bombay Stock Exchange (BSE) market holidays |
diff --git a/holidays/financial/__init__.py b/holidays/financial/__init__.py
index 2ddaab7c7f..c6190c6f1d 100644
--- a/holidays/financial/__init__.py
+++ b/holidays/financial/__init__.py
@@ -10,6 +10,7 @@
# Website: https://github.com/vacanza/holidays
# License: MIT (see LICENSE file)
+from holidays.financial.bolsa_mexicana_de_valores import BolsaMexicanaDeValores, XMEX, BMV
from holidays.financial.bombay_stock_exchange import BombayStockExchange, XBOM, BSE
from holidays.financial.brasil_bolsa_balcao import BrasilBolsaBalcao, BVMF, B3
from holidays.financial.chicago_mercantile_exchange import ChicagoMercantileExchange, XCME, CME
diff --git a/holidays/financial/bolsa_mexicana_de_valores.py b/holidays/financial/bolsa_mexicana_de_valores.py
new file mode 100644
index 0000000000..56002323f2
--- /dev/null
+++ b/holidays/financial/bolsa_mexicana_de_valores.py
@@ -0,0 +1,145 @@
+# holidays
+# --------
+# A fast, efficient Python library for generating country, province and state
+# specific sets of holidays on the fly. It aims to make determining whether a
+# specific date is a holiday as fast and flexible as possible.
+#
+# Authors: Vacanza Team and individual contributors (see CONTRIBUTORS file)
+# dr-prodigy (c) 2017-2023
+# ryanss (c) 2014-2017
+# Website: https://github.com/vacanza/holidays
+# License: MIT (see LICENSE file)
+
+from gettext import gettext as tr
+
+from holidays.calendars.gregorian import SEP
+from holidays.groups import ChristianHolidays, InternationalHolidays, StaticHolidays
+from holidays.observed_holiday_base import ObservedHolidayBase, SAT_TO_NONE, SUN_TO_NONE
+
+
+class BolsaMexicanaDeValores(
+ ObservedHolidayBase, ChristianHolidays, InternationalHolidays, StaticHolidays
+):
+ """Bolsa Mexicana de Valores (BMV) holidays.
+
+ References:
+ *
+
+ Historical data:
+ * [2001](https://web.archive.org/web/20010609142152/http://www.bmv.com.mx/bmv/calendario.html)
+ * [2002](https://web.archive.org/web/20021210142656/http://bmv.com.mx/BMV/HTML/sec1_diasnolabora.html)
+ * [2003](https://web.archive.org/web/20031203014342/http://bmv.com.mx/BMV/HTML/sec1_diasnolabora.html)
+ * [2004](https://web.archive.org/web/20041208225025/http://bmv.com.mx/BMV/HTML/sec1_diasnolabora.html)
+ * [2005](https://web.archive.org/web/20051210114324/http://bmv.com.mx/BMV/HTML/sec1_diasnolabora.html)
+ * [2006](https://web.archive.org/web/20060219160628/http://bmv.com.mx/BMV/HTML/sec1_diasnolabora.html)
+ * [2007](https://web.archive.org/web/20071111015732/http://bmv.com.mx/wb3/wb/BMV/BMV_calendario_de_dias_festivos)
+ * [2008](https://web.archive.org/web/20081206060322/http://bmv.com.mx/wb3/wb/BMV/BMV_calendario_de_dias_festivos)
+ * [2009](https://web.archive.org/web/20091001053822/http://bmv.com.mx/wb3/wb/BMV/BMV_calendario_de_dias_festivos)
+ * [2010](https://web.archive.org/web/20101018003727/http://bmv.com.mx/wb3/wb/BMV/BMV_calendario_de_dias_festivos)
+ * [2011](https://web.archive.org/web/20111030174959/http://bmv.com.mx/wb3/wb/BMV/BMV_calendario_de_dias_festivos)
+ * [2012](https://web.archive.org/web/20121124175114/http://bmv.com.mx/wb3/wb/BMV/BMV_calendario_de_dias_festivos)
+ * [2013](https://web.archive.org/web/20131125224718/http://bmv.com.mx/wb3/wb/BMV/BMV_calendario_de_dias_festivos)
+ * [2014](https://web.archive.org/web/20151002034151/https://www.bmv.com.mx/es/grupo-bmv/calendario-de-dias-festivos)
+ * [2015](https://web.archive.org/web/20151002034151/https://www.bmv.com.mx/es/grupo-bmv/calendario-de-dias-festivos)
+ * [2016](https://web.archive.org/web/20161018231815/https://www.bmv.com.mx/es/grupo-bmv/calendario-de-dias-festivos)
+ * [2017](https://web.archive.org/web/20171102043000/https://www.bmv.com.mx/es/grupo-bmv/calendario-de-dias-festivos)
+ * [2018](https://web.archive.org/web/20181104081233/https://www.bmv.com.mx/es/grupo-bmv/calendario-de-dias-festivos)
+ * [2019](https://web.archive.org/web/20191113083233/http://www.bmv.com.mx/es/grupo-bmv/calendario-de-dias-festivos)
+ * [2020](https://web.archive.org/web/20201027043731/http://www.bmv.com.mx/es/grupo-bmv/calendario-de-dias-festivos)
+ * [2021](https://web.archive.org/web/20210105213246/http://www.bmv.com.mx/es/grupo-bmv/calendario-de-dias-festivos)
+ * [2022](https://web.archive.org/web/20220427200741/http://www.bmv.com.mx/es/grupo-bmv/calendario-de-dias-festivos)
+ * [2023](https://web.archive.org/web/20231205095710/https://www.bmv.com.mx/es/grupo-bmv/calendario-de-dias-festivos)
+ * [2024](https://web.archive.org/web/20241227124527/https://www.bmv.com.mx/es/grupo-bmv/calendario-de-dias-festivos)
+ * [2025](https://web.archive.org/web/20251008103743/https://www.bmv.com.mx/es/grupo-bmv/calendario-de-dias-festivos)
+ * [2026](https://web.archive.org/web/20260217214228/https://www.bmv.com.mx/es/grupo-bmv/calendario-de-dias-festivos)
+ """
+
+ market = "XMEX"
+ default_language = "es"
+ supported_languages = ("en_US", "es", "uk")
+ start_year = 2001
+
+ def __init__(self, *args, **kwargs):
+ ChristianHolidays.__init__(self)
+ InternationalHolidays.__init__(self)
+ StaticHolidays.__init__(self, BolsaMexicanaDeValoresStaticHolidays)
+ kwargs.setdefault("observed_rule", SAT_TO_NONE + SUN_TO_NONE)
+ super().__init__(*args, **kwargs)
+
+ def _populate_public_holidays(self):
+ # New Year's Day.
+ self._add_new_years_day(tr("Año Nuevo"))
+
+ # Constitution Day.
+ name = tr("Día de la Constitución")
+ if self._year >= 2006:
+ self._add_holiday_1st_mon_of_feb(name)
+ else:
+ self._move_holiday(self._add_holiday_feb_5(name))
+
+ # Benito Juárez's birthday.
+ name = tr("Natalicio de Benito Juárez")
+ # no 2006 due to celebration of the 200th anniversary
+ # of Benito Juárez in 2006
+ if self._year >= 2007:
+ self._add_holiday_3rd_mon_of_mar(name)
+ else:
+ self._move_holiday(self._add_holiday_mar_21(name))
+
+ # Maundy Thursday.
+ self._add_holy_thursday(tr("Jueves Santo"))
+
+ # Good Friday.
+ self._add_good_friday(tr("Viernes Santo"))
+
+ # Labor Day.
+ self._move_holiday(self._add_labor_day(tr("Día del Trabajo")))
+
+ # Independence Day.
+ self._move_holiday(self._add_holiday_sep_16(tr("Día de la Independencia")))
+
+ if (self._year - 1970) % 6 == 0:
+ # Change of Federal Government.
+ name = tr("Transmisión del Poder Ejecutivo Federal")
+ if self._year >= 2024:
+ self._move_holiday(self._add_holiday_oct_1(name))
+ else:
+ self._move_holiday(self._add_holiday_dec_1(name))
+
+ if self._year >= 2006:
+ # Day of the Dead.
+ self._move_holiday(self._add_holiday_nov_2(tr("Día de Muertos")))
+
+ # Revolution Day.
+ name = tr("Día de la Revolución")
+ if self._year >= 2006:
+ self._add_holiday_3rd_mon_of_nov(name)
+ else:
+ self._move_holiday(self._add_holiday_nov_20(name))
+
+ # Bank Employee Day.
+ self._move_holiday(self._add_holiday_dec_12(tr("Día del Empleado Bancario")))
+
+ # Christmas Day.
+ self._move_holiday(self._add_christmas_day(tr("Navidad")))
+
+
+class XMEX(BolsaMexicanaDeValores):
+ pass
+
+
+class BMV(BolsaMexicanaDeValores):
+ pass
+
+
+class BolsaMexicanaDeValoresStaticHolidays:
+ """Bolsa Mexicana de Valores (BMV) special holidays.
+
+ References:
+ * [Bicentennial of Mexican Independence](https://web.archive.org/web/20260622174254/https://www.eleconomista.com.mx/mercados/BMV-cerrara-16-y-17-de-septiembre-20100913-0030.html)
+ """
+
+ special_public_holidays = {
+ # Bicentennial of Mexican Independence (Bridge day).
+ 2010: (SEP, 17, tr("Bicentenario de la Independencia de México (Día Puente)")),
+ }
diff --git a/holidays/locale/en_US/LC_MESSAGES/XMEX.po b/holidays/locale/en_US/LC_MESSAGES/XMEX.po
new file mode 100644
index 0000000000..f2cad0cda8
--- /dev/null
+++ b/holidays/locale/en_US/LC_MESSAGES/XMEX.po
@@ -0,0 +1,80 @@
+# holidays
+# --------
+# A fast, efficient Python library for generating country, province and state
+# specific sets of holidays on the fly. It aims to make determining whether a
+# specific date is a holiday as fast and flexible as possible.
+#
+# Authors: Vacanza Team and individual contributors (see CONTRIBUTORS file)
+# dr-prodigy (c) 2017-2023
+# ryanss (c) 2014-2017
+# Website: https://github.com/vacanza/holidays
+# License: MIT (see LICENSE file)
+#
+# Bolsa Mexicana de Valores (BMV) holidays en_US localization.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Holidays 0.100\n"
+"Report-Msgid-Bugs-To: l10n@vacanza.dev\n"
+"POT-Creation-Date: 2026-06-19 11:33+0530\n"
+"PO-Revision-Date: 2026-06-23 11:54+0530\n"
+"Last-Translator: Paresh Joshi \n"
+"Language-Team: Holidays Localization Team\n"
+"Language: en_US\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Lingva 5.0.6\n"
+"X-Source-Language: es\n"
+
+#. New Year's Day.
+msgid "Año Nuevo"
+msgstr "New Year's Day"
+
+#. Constitution Day.
+msgid "Día de la Constitución"
+msgstr "Constitution Day"
+
+#. Benito Juárez's birthday.
+msgid "Natalicio de Benito Juárez"
+msgstr "Benito Juárez's birthday"
+
+#. Maundy Thursday.
+msgid "Jueves Santo"
+msgstr "Maundy Thursday"
+
+#. Good Friday.
+msgid "Viernes Santo"
+msgstr "Good Friday"
+
+#. Labor Day.
+msgid "Día del Trabajo"
+msgstr "Labor Day"
+
+#. Independence Day.
+msgid "Día de la Independencia"
+msgstr "Independence Day"
+
+#. Change of Federal Government.
+msgid "Transmisión del Poder Ejecutivo Federal"
+msgstr "Change of Federal Government"
+
+#. Day of the Dead.
+msgid "Día de Muertos"
+msgstr "Day of the Dead"
+
+#. Revolution Day.
+msgid "Día de la Revolución"
+msgstr "Revolution Day"
+
+#. Bank Employee Day.
+msgid "Día del Empleado Bancario"
+msgstr "Bank Employee Day"
+
+#. Christmas Day.
+msgid "Navidad"
+msgstr "Christmas Day"
+
+#. Bicentennial of Mexican Independence (Bridge day).
+msgid "Bicentenario de la Independencia de México (Día Puente)"
+msgstr "Bicentennial of Mexican Independence (Bridge day)"
diff --git a/holidays/locale/es/LC_MESSAGES/XMEX.po b/holidays/locale/es/LC_MESSAGES/XMEX.po
new file mode 100644
index 0000000000..e690bd2aff
--- /dev/null
+++ b/holidays/locale/es/LC_MESSAGES/XMEX.po
@@ -0,0 +1,80 @@
+# holidays
+# --------
+# A fast, efficient Python library for generating country, province and state
+# specific sets of holidays on the fly. It aims to make determining whether a
+# specific date is a holiday as fast and flexible as possible.
+#
+# Authors: Vacanza Team and individual contributors (see CONTRIBUTORS file)
+# dr-prodigy (c) 2017-2023
+# ryanss (c) 2014-2017
+# Website: https://github.com/vacanza/holidays
+# License: MIT (see LICENSE file)
+#
+# Bolsa Mexicana de Valores (BMV) holidays.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Holidays 0.100\n"
+"Report-Msgid-Bugs-To: l10n@vacanza.dev\n"
+"POT-Creation-Date: 2026-06-19 14:20+0000\n"
+"PO-Revision-Date: 2026-06-23 11:54+0530\n"
+"Last-Translator: Paresh Joshi \n"
+"Language-Team: Holidays Localization Team\n"
+"Language: es\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Lingva 5.0.6\n"
+"X-Source-Language: es\n"
+
+#. New Year's Day.
+msgid "Año Nuevo"
+msgstr ""
+
+#. Constitution Day.
+msgid "Día de la Constitución"
+msgstr ""
+
+#. Benito Juárez's birthday.
+msgid "Natalicio de Benito Juárez"
+msgstr ""
+
+#. Maundy Thursday.
+msgid "Jueves Santo"
+msgstr ""
+
+#. Good Friday.
+msgid "Viernes Santo"
+msgstr ""
+
+#. Labor Day.
+msgid "Día del Trabajo"
+msgstr ""
+
+#. Independence Day.
+msgid "Día de la Independencia"
+msgstr ""
+
+#. Change of Federal Government.
+msgid "Transmisión del Poder Ejecutivo Federal"
+msgstr ""
+
+#. Day of the Dead.
+msgid "Día de Muertos"
+msgstr ""
+
+#. Revolution Day.
+msgid "Día de la Revolución"
+msgstr ""
+
+#. Bank Employee Day.
+msgid "Día del Empleado Bancario"
+msgstr ""
+
+#. Christmas Day.
+msgid "Navidad"
+msgstr ""
+
+#. Bicentennial of Mexican Independence (Bridge day).
+msgid "Bicentenario de la Independencia de México (Día Puente)"
+msgstr ""
diff --git a/holidays/locale/uk/LC_MESSAGES/XMEX.po b/holidays/locale/uk/LC_MESSAGES/XMEX.po
new file mode 100644
index 0000000000..3873c05b83
--- /dev/null
+++ b/holidays/locale/uk/LC_MESSAGES/XMEX.po
@@ -0,0 +1,80 @@
+# holidays
+# --------
+# A fast, efficient Python library for generating country, province and state
+# specific sets of holidays on the fly. It aims to make determining whether a
+# specific date is a holiday as fast and flexible as possible.
+#
+# Authors: Vacanza Team and individual contributors (see CONTRIBUTORS file)
+# dr-prodigy (c) 2017-2023
+# ryanss (c) 2014-2017
+# Website: https://github.com/vacanza/holidays
+# License: MIT (see LICENSE file)
+#
+# Bolsa Mexicana de Valores (BMV) holidays uk localization.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Holidays 0.100\n"
+"Report-Msgid-Bugs-To: l10n@vacanza.dev\n"
+"POT-Creation-Date: 2026-06-21 13:51+0000\n"
+"PO-Revision-Date: 2026-06-23 11:54+0530\n"
+"Last-Translator: Paresh Joshi \n"
+"Language-Team: Holidays Localization Team\n"
+"Language: uk\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Lingva 5.0.6\n"
+"X-Source-Language: es\n"
+
+#. New Year's Day.
+msgid "Año Nuevo"
+msgstr "Новий рік"
+
+#. Constitution Day.
+msgid "Día de la Constitución"
+msgstr "День Конституції"
+
+#. Benito Juárez's birthday.
+msgid "Natalicio de Benito Juárez"
+msgstr "Річниця Беніто Хуареса"
+
+#. Maundy Thursday.
+msgid "Jueves Santo"
+msgstr "Великий четвер"
+
+#. Good Friday.
+msgid "Viernes Santo"
+msgstr "Страсна пʼятниця"
+
+#. Labor Day.
+msgid "Día del Trabajo"
+msgstr "День праці"
+
+#. Independence Day.
+msgid "Día de la Independencia"
+msgstr "День незалежності"
+
+#. Change of Federal Government.
+msgid "Transmisión del Poder Ejecutivo Federal"
+msgstr "Передача федеральної виконавчої влади"
+
+#. Day of the Dead.
+msgid "Día de Muertos"
+msgstr "День мертвих"
+
+#. Revolution Day.
+msgid "Día de la Revolución"
+msgstr "День революції"
+
+#. Bank Employee Day.
+msgid "Día del Empleado Bancario"
+msgstr "День банківського працівника"
+
+#. Christmas Day.
+msgid "Navidad"
+msgstr "Різдво Христове"
+
+#. Bicentennial of Mexican Independence (Bridge day).
+msgid "Bicentenario de la Independencia de México (Día Puente)"
+msgstr "200-річчя незалежності Мексики (додатковий вихідний)"
diff --git a/holidays/registry.py b/holidays/registry.py
index 9359fa25c1..77ead928a3 100644
--- a/holidays/registry.py
+++ b/holidays/registry.py
@@ -286,6 +286,7 @@
}
FINANCIAL: RegistryDict = {
+ "bolsa_mexicana_de_valores": ("BolsaMexicanaDeValores", "XMEX", "BMV"),
"bombay_stock_exchange": ("BombayStockExchange", "XBOM", "BSE"),
"brasil_bolsa_balcao": ("BrasilBolsaBalcao", "BVMF", "B3"),
"chicago_mercantile_exchange": ("ChicagoMercantileExchange", "XCME", "CME"),
diff --git a/tests/financial/test_bolsa_mexicana_de_valores.py b/tests/financial/test_bolsa_mexicana_de_valores.py
new file mode 100644
index 0000000000..e8823971ae
--- /dev/null
+++ b/tests/financial/test_bolsa_mexicana_de_valores.py
@@ -0,0 +1,263 @@
+# holidays
+# --------
+# A fast, efficient Python library for generating country, province and state
+# specific sets of holidays on the fly. It aims to make determining whether a
+# specific date is a holiday as fast and flexible as possible.
+#
+# Authors: Vacanza Team and individual contributors (see CONTRIBUTORS file)
+# dr-prodigy (c) 2017-2023
+# ryanss (c) 2014-2017
+# Website: https://github.com/vacanza/holidays
+# License: MIT (see LICENSE file)
+
+from unittest import TestCase
+
+from holidays.financial.bolsa_mexicana_de_valores import BolsaMexicanaDeValores
+from tests.common import CommonFinancialTests
+
+
+class TestBolsaMexicanaDeValores(CommonFinancialTests, TestCase):
+ @classmethod
+ def setUpClass(cls):
+ super().setUpClass(BolsaMexicanaDeValores)
+
+ def test_special_holidays(self):
+ self.assertHoliday("2010-09-17")
+
+ def test_new_years_day(self):
+ self.assertHolidayName("Año Nuevo", (f"{year}-01-01" for year in self.full_range))
+
+ def test_constitution_day(self):
+ name = "Día de la Constitución"
+ self.assertNonObservedHolidayName(
+ name, (f"{year}-02-05" for year in range(self.start_year, 2006))
+ )
+ self.assertHolidayName(
+ name,
+ "2020-02-03",
+ "2021-02-01",
+ "2022-02-07",
+ "2023-02-06",
+ "2024-02-05",
+ "2025-02-03",
+ )
+ self.assertHolidayName(name, range(2006, self.end_year))
+
+ def test_benito_juarez_birthday(self):
+ name = "Natalicio de Benito Juárez"
+ self.assertNonObservedHolidayName(
+ name, (f"{year}-03-21" for year in range(self.start_year, 2007))
+ )
+ self.assertHolidayName(
+ name,
+ "2020-03-16",
+ "2021-03-15",
+ "2022-03-21",
+ "2023-03-20",
+ "2024-03-18",
+ "2025-03-17",
+ )
+ self.assertHolidayName(name, range(2007, self.end_year))
+
+ def test_holy_thursday(self):
+ name = "Jueves Santo"
+ self.assertHolidayName(
+ name,
+ "2020-04-09",
+ "2021-04-01",
+ "2022-04-14",
+ "2023-04-06",
+ "2024-03-28",
+ "2025-04-17",
+ )
+ self.assertHolidayName(name, self.full_range)
+
+ def test_good_friday(self):
+ name = "Viernes Santo"
+ self.assertHolidayName(
+ name,
+ "2020-04-10",
+ "2021-04-02",
+ "2022-04-15",
+ "2023-04-07",
+ "2024-03-29",
+ "2025-04-18",
+ )
+ self.assertHolidayName(name, self.full_range)
+
+ def test_labor_day(self):
+ name = "Día del Trabajo"
+ self.assertNonObservedHolidayName(name, (f"{year}-05-01" for year in self.full_range))
+ self.assertHolidayName(
+ name,
+ "2020-05-01",
+ "2023-05-01",
+ "2024-05-01",
+ "2025-05-01",
+ )
+ self.assertNoHoliday(
+ "2021-05-01",
+ "2022-05-01",
+ )
+
+ def test_independence_day(self):
+ name = "Día de la Independencia"
+ self.assertNonObservedHolidayName(name, (f"{year}-09-16" for year in self.full_range))
+ self.assertHolidayName(
+ name,
+ "2020-09-16",
+ "2021-09-16",
+ "2022-09-16",
+ "2024-09-16",
+ "2025-09-16",
+ )
+ self.assertNoHoliday(
+ "2023-09-16",
+ )
+
+ def test_change_of_federal_government(self):
+ name = "Transmisión del Poder Ejecutivo Federal"
+ self.assertHolidayName(
+ name,
+ "2006-12-01",
+ "2024-10-01",
+ "2030-10-01",
+ )
+ self.assertNonObservedHolidayName(
+ name,
+ "2012-12-01",
+ "2018-12-01",
+ )
+ self.assertNoHolidayName(
+ name,
+ (f"{year}-12-01" for year in range(self.start_year, 2024) if (year - 1970) % 6 > 0),
+ (f"{year}-12-01" for year in range(2024, self.end_year)),
+ (f"{year}-10-01" for year in range(2024, self.end_year) if (year - 1970) % 6 > 0),
+ (f"{year}-10-01" for year in range(self.start_year, 2024)),
+ )
+
+ def test_day_of_the_dead(self):
+ name = "Día de Muertos"
+ self.assertNonObservedHolidayName(
+ name, (f"{year}-11-02" for year in range(2006, self.end_year))
+ )
+ self.assertNoHolidayName(name, range(self.start_year, 2006))
+ self.assertHolidayName(
+ name,
+ "2020-11-02",
+ "2021-11-02",
+ "2022-11-02",
+ "2023-11-02",
+ )
+ self.assertNoHoliday(
+ "2024-11-02",
+ "2025-11-02",
+ )
+
+ def test_revolution_day(self):
+ name = "Día de la Revolución"
+ self.assertNonObservedHolidayName(
+ name, (f"{year}-11-20" for year in range(self.start_year, 2006))
+ )
+ self.assertHolidayName(
+ name,
+ "2020-11-16",
+ "2021-11-15",
+ "2022-11-21",
+ "2023-11-20",
+ "2024-11-18",
+ "2025-11-17",
+ )
+ self.assertHolidayName(name, range(2006, self.end_year))
+
+ def test_bank_employee_day(self):
+ name = "Día del Empleado Bancario"
+ self.assertNonObservedHolidayName(name, (f"{year}-12-12" for year in self.full_range))
+ self.assertHolidayName(
+ name,
+ "2022-12-12",
+ "2023-12-12",
+ "2024-12-12",
+ "2025-12-12",
+ )
+ self.assertNoHoliday(
+ "2020-12-12",
+ "2021-12-12",
+ )
+
+ def test_christmas_day(self):
+ name = "Navidad"
+ self.assertNonObservedHolidayName(name, (f"{year}-12-25" for year in self.full_range))
+ self.assertHolidayName(
+ name,
+ "2020-12-25",
+ "2023-12-25",
+ "2024-12-25",
+ "2025-12-25",
+ )
+ self.assertNoHoliday(
+ "2021-12-25",
+ "2022-12-25",
+ )
+
+ def test_2025(self):
+ self.assertHolidaysInYear(
+ 2025,
+ ("2025-01-01", "Año Nuevo"),
+ ("2025-02-03", "Día de la Constitución"),
+ ("2025-03-17", "Natalicio de Benito Juárez"),
+ ("2025-04-17", "Jueves Santo"),
+ ("2025-04-18", "Viernes Santo"),
+ ("2025-05-01", "Día del Trabajo"),
+ ("2025-09-16", "Día de la Independencia"),
+ ("2025-11-17", "Día de la Revolución"),
+ ("2025-12-12", "Día del Empleado Bancario"),
+ ("2025-12-25", "Navidad"),
+ )
+
+ def test_l10n_default(self):
+ self.assertLocalizedHolidays(
+ ("2024-01-01", "Año Nuevo"),
+ ("2024-02-05", "Día de la Constitución"),
+ ("2024-03-18", "Natalicio de Benito Juárez"),
+ ("2024-03-28", "Jueves Santo"),
+ ("2024-03-29", "Viernes Santo"),
+ ("2024-05-01", "Día del Trabajo"),
+ ("2024-09-16", "Día de la Independencia"),
+ ("2024-10-01", "Transmisión del Poder Ejecutivo Federal"),
+ ("2024-11-18", "Día de la Revolución"),
+ ("2024-12-12", "Día del Empleado Bancario"),
+ ("2024-12-25", "Navidad"),
+ )
+
+ def test_l10n_en_us(self):
+ self.assertLocalizedHolidays(
+ "en_US",
+ ("2024-01-01", "New Year's Day"),
+ ("2024-02-05", "Constitution Day"),
+ ("2024-03-18", "Benito Juárez's birthday"),
+ ("2024-03-28", "Maundy Thursday"),
+ ("2024-03-29", "Good Friday"),
+ ("2024-05-01", "Labor Day"),
+ ("2024-09-16", "Independence Day"),
+ ("2024-10-01", "Change of Federal Government"),
+ ("2024-11-18", "Revolution Day"),
+ ("2024-12-12", "Bank Employee Day"),
+ ("2024-12-25", "Christmas Day"),
+ )
+
+ def test_l10n_uk(self):
+ self.assertLocalizedHolidays(
+ "uk",
+ ("2024-01-01", "Новий рік"),
+ ("2024-02-05", "День Конституції"),
+ ("2024-03-18", "Річниця Беніто Хуареса"),
+ ("2024-03-28", "Великий четвер"),
+ ("2024-03-29", "Страсна пʼятниця"),
+ ("2024-05-01", "День праці"),
+ ("2024-09-16", "День незалежності"),
+ ("2024-10-01", "Передача федеральної виконавчої влади"),
+ ("2024-11-18", "День революції"),
+ ("2024-12-12", "День банківського працівника"),
+ ("2024-12-25", "Різдво Христове"),
+ )