# 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 ( JAN, FEB, MAR, APR, MAY, JUN, SEP, NOV, DEC, MON, TUE, WED, THU, FRI, SAT, SUN, ) from holidays.constants import GOVERNMENT, HALF_DAY, PUBLIC, UNOFFICIAL from holidays.groups import ( ChristianHolidays, HinduCalendarHolidays, InternationalHolidays, StaticHolidays, ) from holidays.observed_holiday_base import ( ObservedHolidayBase, ObservedRule, MON_TO_NEXT_TUE, FRI_TO_PREV_THU, SAT_TO_PREV_FRI, SUN_TO_NEXT_MON, SAT_SUN_TO_PREV_FRI, SAT_SUN_TO_NEXT_MON, ) GA_IN_WASHINGTON_BIRTHDAY = ObservedRule( {MON: +1, TUE: -1, WED: -1, THU: +1, FRI: -1, SAT: -2, SUN: -2} ) class UnitedStates( ObservedHolidayBase, ChristianHolidays, HinduCalendarHolidays, InternationalHolidays, StaticHolidays, ): """United States of America (the) holidays. References: * * * [Federal holidays](https://web.archive.org/web/20250426120914/https://opm.gov/policy-data-oversight/pay-leave/federal-holidays/) * [Federal holidays history](https://web.archive.org/web/20250626042129/https://www.congress.gov/crs_external_products/R/PDF/R41990/R41990.11.pdf) * [16 Stat. 168](https://web.archive.org/web/20240602080239/https://memory.loc.gov/cgi-bin/ampage?collId=llsl&fileName=016/llsl016.db&recNum=203) * [Thanksgiving Day Proclamations 1789-Present](https://web.archive.org/web/20240621142029/https://www.whatsoproudlywehail.org/curriculum/the-american-calendar/thanksgiving-day-proclamations-1789-present/) * [H.J. RES. 41](https://web.archive.org/web/20250222190611/https://www.archives.gov/global-pages/larger-image.html?i=/legislative/features/thanksgiving/images/joint-res-l.jpg&c=/legislative/features/thanksgiving/images/joint-res.caption.html) * [H.J. RES. 41 December 9th, 1941 Amendment](https://web.archive.org/web/20250523062313/https://www.archives.gov/global-pages/larger-image.html?i=/legislative/features/thanksgiving/images/amendment-l.jpg&c=/legislative/features/thanksgiving/images/amendment.caption.html) * [B-112525 February 27th, 1953 32 COMP. GEN. 378](https://web.archive.org/web/20201001081239/https://www.gao.gov/products/b-112525#mt=e-report) * [Public Law 89-554](https://web.archive.org/web/20250512204449/https://www.govinfo.gov/content/pkg/STATUTE-80/pdf/STATUTE-80-Pg378.pdf) * [E.O. 11582 of February 11th, 1971](https://web.archive.org/web/20250326234305/https://www.archives.gov/federal-register/codification/executive-order/11582.html) * [CA Diwali state holiday (AB 268, 2025-2026)](https://web.archive.org/web/20251223175415if_/https://leginfo.legislature.ca.gov/faces/billNavClient.xhtml?bill_id=202520260AB268) * Washington's Birthday: * [AK](https://web.archive.org/web/20250306070343/https://doa.alaska.gov/calendar/) * [AL](https://web.archive.org/web/20250125202410/https://admincode.legislature.state.al.us/administrative-code/670-X-12-.01) * [AR](https://web.archive.org/web/20250213100442/https://arkleg.state.ar.us/Home/FTPDocument?path=/ACTS/2001/Public/ACT304.pdf) * [AZ](https://web.archive.org/web/20250323052619/https://www.azleg.gov/ars/1/00301.htm) * [CA](https://web.archive.org/web/20250414210521/http://www.sos.ca.gov/state-holidays/) * [CO](https://web.archive.org/web/20250409020643/https://leg.colorado.gov/sites/default/files/images/olls/crs2023-title-24.pdf) * [GA](https://web.archive.org/web/20250204223228/https://www.gasupreme.us/court-information/holidays-2/) * [HI](https://web.archive.org/web/20250313033818/https://www.capitol.hawaii.gov/hrscurrent/Vol01_Ch0001-0042F/HRS0008/HRS_0008-0001.htm) * [ID](https://web.archive.org/web/20250328091357/https://idaho.gov/government/state-holidays/) * IN: * * * [MD](https://web.archive.org/web/20250310030503/https://msa.maryland.gov/msa/mdmanual/01glance/html/holidayl.html) * [MI](https://web.archive.org/web/20250328094534/https://www.michigan.gov/som/government/state-holidays) * [MN](https://web.archive.org/web/20250322174508/https://www.revisor.mn.gov/statutes/cite/645.44) * [MT](https://web.archive.org/web/20250408030903/https://archive.legmt.gov/bills/mca/title_0010/chapter_0010/part_0020/section_0160/0010-0010-0020-0160.html) * [NJ](https://web.archive.org/web/20250409164919/https://nj.gov/nj/about/facts/holidays/) * [OH](https://web.archive.org/web/20250307080858/https://codes.ohio.gov/ohio-revised-code/section-1.14) * [OK](https://web.archive.org/web/20250424191658/https://oklahoma.gov/omes/divisions/human-capital-management/employee-benefits/leave-holidays/holidays.html) * [OR](https://web.archive.org/web/20250209222310/https://www.oregonlegislature.gov/bills_laws/ors/ors187.html) * [PA](https://web.archive.org/web/20241226003617/https://www.legis.state.pa.us/WU01/LI/LI/US/PDF/1893/0/0138..PDF) * [PR](https://en.wikipedia.org/wiki/Public_holidays_in_Puerto_Rico) * [SC](https://web.archive.org/web/20250212044252/https://www.scstatehouse.gov/code/t53c005.php) * [TN](https://web.archive.org/web/20250404130210/https://www.tn.gov/about-tn/state-holidays.html) * [TX](https://web.archive.org/web/20250314100137/http://www.tsl.texas.gov/ref/abouttx/holidays) * [UT](https://web.archive.org/web/20250312095206/https://le.utah.gov/xcode/Title63G/Chapter1/63G-1-S301.html) * [VA](https://web.archive.org/web/20250309075526/https://law.lis.virginia.gov/vacode/title2.2/chapter33/section2.2-3300/) * [VT](https://web.archive.org/web/20250415013508/https://legislature.vermont.gov/statutes/section/01/007/00371) * [WA](https://web.archive.org/web/20250414010238/https://app.leg.wa.gov/RCW/default.aspx?cite=1.16.050) * [WV](https://web.archive.org/web/20250328050144/http://code.wvlegislature.gov/2-2-1/) * [WY](https://web.archive.org/web/20250405094801/https://ai.wyo.gov/about-us/state-holidays-and-office-closures) * Columbus Day / Indigenous Peoples' Day history: * * * * * * [Frances Xavier Cabrini Day](https://web.archive.org/web/20250405014031/https://leg.colorado.gov/sites/default/files/2020a_1031_signed.pdf) * Northern Mariana Islands (subdivision MP): * * * Alaska: * [Proclamation 3269 - Admission of the State of Alaska Into the Union](https://web.archive.org/web/20250613173049/https://www.presidency.ucsb.edu/documents/proclamation-3269-admission-the-state-alaska-into-the-union) * [Alaska Statutes, Sec. 44.12.010](https://web.archive.org/web/20251014215648/https://www.akleg.gov/basis/statutes.asp#44.12.010) * [Alaska Day](https://web.archive.org/web/20120502232826/http://www.alaskadispatch.com/article/happy-alaska-day-great-land) * [Chapter 109, Session Laws of Alaska (1989)](https://web.archive.org/web/20251228151503/https://www.akleg.gov/basis/folioproxy.asp?url=http://wwwjnu03.akleg.org/cgi-bin/folioisa.dll/slpr/query=*/doc/%7B@1158%7D?next) * Georgia: * [State of Georgia Holiday Schedule](https://web.archive.org/web/20260428032230/https://team.georgia.gov/all-articles/state-georgia-holiday-schedule) * [Confederate Memorial Day/State Holiday](https://en.wikipedia.org/wiki/Confederate_Memorial_Day) * Massachusetts: * [Massachusetts Legal Holidays Laws](https://web.archive.org/web/20250417214902/https://www.findlaw.com/state/massachusetts-law/massachusetts-legal-holidays-laws.html) * [Patriots'_Day](https://en.wikipedia.org/wiki/Patriots'_Day) * American Samoa: * * Puerto Rico: * [1902 Political Code of Puerto Rico](https://web.archive.org/web/20251019021053/https://bvirtualogp.pr.gov/ogp/Bvirtual/leyesreferencia/PDF/C%C3%B3digos/0-1902/0-1902.pdf) * [Joint Resolution No. 31 of Aug 18, 1913](https://web.archive.org/web/20240923174029/https://bvirtualogp.pr.gov/ogp/Bvirtual/resolucionesConjuntas/PDF/0031-1913.pdf) * [Law No. 47 of Dec 1, 1917](https://web.archive.org/web/20240531113045/https://bvirtualogp.pr.gov/ogp/Bvirtual/leyesreferencia/PDF/2/0047-1917.pdf) * [Law No. 3 of Apr 9, 1925](https://web.archive.org/web/20240531113358/https://bvirtualogp.pr.gov/ogp/Bvirtual/leyesreferencia/PDF/2/0003-1925.pdf) * [Law No. 3 of Mar 27, 1931](https://web.archive.org/web/20250625060601/https://bvirtualogp.pr.gov/ogp/Bvirtual/leyesreferencia/PDF/3-1931.pdf) * [Law No. 91 of May 6, 1938](https://web.archive.org/web/20250807060751/https://bvirtualogp.pr.gov/ogp/Bvirtual/leyesreferencia/PDF/91-1938.pdf) * [Law No. 97 of May 6, 1938](https://web.archive.org/web/20251213203244/https://bvirtualogp.pr.gov/ogp/Bvirtual/leyesreferencia/PDF/2/0099-1938.pdf) * [Law No. 3 of Mar 15, 1939](https://web.archive.org/web/20240531113040/https://bvirtualogp.pr.gov/ogp/Bvirtual/leyesreferencia/PDF/2/0003-1939.pdf) * [Law No. 1 of Aug 1, 1952](https://web.archive.org/web/20250430200856/https://bvirtualogp.pr.gov/ogp/Bvirtual/leyesreferencia/PDF/3-duplicados/1-1952.pdf) * [Law No. 88 of Jun 27, 1969](https://web.archive.org/web/20250605105341/https://bvirtualogp.pr.gov/ogp/Bvirtual/leyesreferencia/PDF/88-1969.pdf) * [Law No. 260 of Jul 30, 1974](https://web.archive.org/web/20251214005218/https://bvirtualogp.pr.gov/ogp/Bvirtual/leyesreferencia/PDF/2/0259-1974.pdf) * [Law No. 129 of Jun 13, 1980](https://web.archive.org/web/20251213230716/https://bvirtualogp.pr.gov/ogp/Bvirtual/leyesreferencia/PDF/2/0129-1980.pdf) * [Law No. 121 of Dec 24, 1991](https://web.archive.org/web/20251213230111/https://bvirtualogp.pr.gov/ogp/Bvirtual/leyesreferencia/PDF/2/0121-1991.pdf) * [Law No. 39 of Jul 11, 1994](https://web.archive.org/web/20221222034721/https://bvirtualogp.pr.gov/ogp/Bvirtual/leyesreferencia/PDF/2/0039-1994.pdf) * [Law No. 76 of Jul 6, 1995](https://web.archive.org/web/20250605110906/https://bvirtualogp.pr.gov/ogp/Bvirtual/leyesreferencia/PDF/76-1995.pdf) * [Law No. 53 of Mar 4, 2000](https://web.archive.org/web/20230919015004/https://bvirtualogp.pr.gov/ogp/Bvirtual/leyesreferencia/PDF/53-2000.pdf) * [Law No. 305 of Dec 25, 2002](https://web.archive.org/web/20250625061048/https://bvirtualogp.pr.gov/ogp/Bvirtual/leyesreferencia/PDF/305-2002.pdf) * [Law No. 182 of Dec 1, 2010](https://web.archive.org/web/20221221221227/https://bvirtualogp.pr.gov/ogp/Bvirtual/leyesreferencia/PDF/2/0182-2010.pdf) * [Law No. 111 of Jul 29, 2014](https://web.archive.org/web/20250219021118/https://bvirtualogp.pr.gov/ogp/Bvirtual/leyesreferencia/PDF/2/0111-2014.pdf) * [Law No. 40 of Mar 25, 2015](https://web.archive.org/web/20221221221216/https://bvirtualogp.pr.gov/ogp/Bvirtual/leyesreferencia/PDF/2/0040-2015.pdf) * [Law No. 152 of Jul 23, 2018](https://web.archive.org/web/20250204220144/https://bvirtualogp.pr.gov/ogp/Bvirtual/leyesreferencia/PDF/2018/0152-2018.pdf) * [Law No. 117 of Dec 23, 2022](https://web.archive.org/web/20250204215251/https://bvirtualogp.pr.gov/ogp/Bvirtual/leyesreferencia/PDF/2020/0117-2022.pdf) """ country = "US" default_language = "en_US" # %s (observed). observed_label = tr("%s (observed)") # %s (estimated). estimated_label = tr("%s (estimated)") # %s (observed, estimated). observed_estimated_label = tr("%s (observed, estimated)") supported_languages = ("en_US", "th") # Independence Declared on July 4th, 1776. start_year = 1777 subdivisions: tuple[()] | tuple[str, ...] = ( "AK", # Alaska. "AL", # Alabama. "AR", # Arkansas. "AS", # American Samoa. "AZ", # Arizona. "CA", # California. "CO", # Colorado. "CT", # Connecticut. "DC", # District of Columbia. "DE", # Delaware. "FL", # Florida. "GA", # Georgia. "GU", # Guam. "HI", # Hawaii. "IA", # Iowa. "ID", # Idaho. "IL", # Illinois. "IN", # Indiana. "KS", # Kansas. "KY", # Kentucky. "LA", # Louisiana. "MA", # Massachusetts. "MD", # Maryland. "ME", # Maine. "MI", # Michigan. "MN", # Minnesota. "MO", # Missouri. "MP", # Northern Mariana Islands. "MS", # Mississippi. "MT", # Montana. "NC", # North Carolina. "ND", # North Dakota. "NE", # Nebraska. "NH", # New Hampshire. "NJ", # New Jersey. "NM", # New Mexico. "NV", # Nevada. "NY", # New York. "OH", # Ohio. "OK", # Oklahoma. "OR", # Oregon. "PA", # Pennsylvania. "PR", # Puerto Rico. "RI", # Rhode Island. "SC", # South Carolina. "SD", # South Dakota. "TN", # Tennessee. "TX", # Texas. "UM", # United States Minor Outlying Islands. "UT", # Utah. "VA", # Virginia. "VI", # Virgin Islands, U.S.. "VT", # Vermont. "WA", # Washington. "WI", # Wisconsin. "WV", # West Virginia. "WY", # Wyoming. ) subdivisions_aliases = { "Alaska": "AK", "Alabama": "AL", "Arkansas": "AR", "American Samoa": "AS", "Arizona": "AZ", "California": "CA", "Colorado": "CO", "Connecticut": "CT", "District of Columbia": "DC", "Delaware": "DE", "Florida": "FL", "Georgia": "GA", "Guam": "GU", "Hawaii": "HI", "Iowa": "IA", "Idaho": "ID", "Illinois": "IL", "Indiana": "IN", "Kansas": "KS", "Kentucky": "KY", "Louisiana": "LA", "Massachusetts": "MA", "Maryland": "MD", "Maine": "ME", "Michigan": "MI", "Minnesota": "MN", "Missouri": "MO", "Northern Mariana Islands": "MP", "Mississippi": "MS", "Montana": "MT", "North Carolina": "NC", "North Dakota": "ND", "Nebraska": "NE", "New Hampshire": "NH", "New Jersey": "NJ", "New Mexico": "NM", "Nevada": "NV", "New York": "NY", "Ohio": "OH", "Oklahoma": "OK", "Oregon": "OR", "Pennsylvania": "PA", "Puerto Rico": "PR", "Rhode Island": "RI", "South Carolina": "SC", "South Dakota": "SD", "Tennessee": "TN", "Texas": "TX", "United States Minor Outlying Islands": "UM", "Utah": "UT", "Virginia": "VA", "Virgin Islands, U.S.": "VI", "Vermont": "VT", "Washington": "WA", "Wisconsin": "WI", "West Virginia": "WV", "Wyoming": "WY", } supported_categories: tuple[str, ...] = (GOVERNMENT, HALF_DAY, PUBLIC, UNOFFICIAL) _deprecated_subdivisions = ( "FM", "MH", "PW", ) def __init__(self, *args, **kwargs): ChristianHolidays.__init__(self) HinduCalendarHolidays.__init__(self) InternationalHolidays.__init__(self) StaticHolidays.__init__(self, cls=UnitedStatesStaticHolidays) kwargs.setdefault("observed_rule", SAT_TO_PREV_FRI + SUN_TO_NEXT_MON) # B-11252 February 27th, 1953 32 COMP. GEN. 378. kwargs.setdefault("observed_since", 1953) super().__init__(*args, **kwargs) def _populate_common(self, *, include_federal: bool = False): """ Populates common US holidays. Federal Holidays were first codified on June 28th, 1870 via 16 Stat. 168. First regulation on holidays in-lieu observance is from B-112525 February 27th, 1953 32 COMP. GEN. 378 document which shifts from SUN to next MON only. It wouldn't be until Public Law 89-554 from September 6th, 1966 that SAT to previous MON is listed as well. This would be finally consolidated as part of E.O. 11582 of February 11th, 1971 later. :param include_federal: Whether to include federal-specific holidays. """ self._observed_rule = ( SAT_TO_PREV_FRI + SUN_TO_NEXT_MON if self._year >= 1966 and self.subdiv != "MA" else SUN_TO_NEXT_MON ) if self._year >= 1871: # New Year's Day. name = tr("New Year's Day") self._add_observed(self._add_new_years_day(name)) # Public Law 89-554 of September 6th, 1966. if self._year >= 1967: self._add_observed(self._next_year_new_years_day, name=name) if include_federal: if self._year >= 1986: # Birthday of Martin Luther King, Jr.. self._add_holiday_3rd_mon_of_jan(tr("Birthday of Martin Luther King, Jr.")) if self._year >= 1879: # Washington's Birthday. name = tr("Washington's Birthday") if self._year >= 1971: self._add_holiday_3rd_mon_of_feb(name) else: dt = self._add_holiday_feb_22(name) # B-112525 February 27th, 1953 32 COMP. GEN. 378. if self._year >= 1954: self._add_observed(dt) if self._year >= 1938: name = ( # Veterans Day. tr("Veterans Day") if self._year >= 1954 # Armistice Day. else tr("Armistice Day") ) if 1971 <= self._year <= 1977: self._add_holiday_4th_mon_of_oct(name) else: self._add_observed(self._add_remembrance_day(name)) if self._year >= 1971: # Memorial Day. self._add_holiday_last_mon_of_may(tr("Memorial Day")) if self._year >= 2021: self._add_observed( # Juneteenth National Independence Day. self._add_holiday_jun_19(tr("Juneteenth National Independence Day")) ) if self._year >= 1870: # Independence Day. self._add_observed(self._add_holiday_jul_4(tr("Independence Day"))) if self._year >= 1894: # Labor Day. self._add_holiday_1st_mon_of_sep(tr("Labor Day")) if include_federal and self._year >= 1971: # Columbus Day. self._add_holiday_2nd_mon_of_oct(tr("Columbus Day")) # Thanksgiving Day. # Began to be declared annually in 1862 by Abraham Lincoln. # First declared as last THU of NOV in 1863. # Briefly moved to 3rd THU of NOV by Franklin Delano Roosevelt from 1939 to 1941. # First codified as last THU of NOV on October 6th, 1941 via H.J. RES. 41. # Become 4th THU of NOV from 1942 onwards via a Senate Amendment on December 9th, 1941. # For Pre-1862 observances, see UnitedStatesStaticHolidays. if self._year >= 1862: thanksgiving_day_dates = { 1862: (APR, 10), 1865: (DEC, 7), 1869: (NOV, 18), 1939: (NOV, 23), 1940: (NOV, 21), 1941: (NOV, 20), } # Thanksgiving Day. name = tr("Thanksgiving Day") if dt := thanksgiving_day_dates.get(self._year): self._add_holiday(name, dt) elif self._year >= 1942: self._add_holiday_4th_thu_of_nov(name) else: self._add_holiday_last_thu_of_nov(name) if self._year >= 1870: # Christmas Day. self._add_observed(self._add_christmas_day(tr("Christmas Day"))) def _populate_public_holidays(self): self._populate_common() if 1888 <= self._year <= 1970: # Memorial Day. self._add_holiday_may_30(tr("Memorial Day")) def _add_christmas_eve_holiday(self): # If on Friday, observed on Thursday. # If on Saturday or Sunday, observed on Friday. # Christmas Eve. name = tr("Christmas Eve") self._add_observed( self._add_christmas_eve(name), name=name, rule=FRI_TO_PREV_THU + SAT_SUN_TO_PREV_FRI ) def _populate_subdiv_holidays(self): if PUBLIC in self.categories: if self._year >= 1986 and self.subdiv not in { "AK", "AL", "AR", "AZ", "GA", "ID", "MS", "NH", }: # Martin Luther King Jr. Day. self._add_holiday_3rd_mon_of_jan(tr("Martin Luther King Jr. Day")) if self._year >= 1879 and self.subdiv not in { "AK", "AL", "AR", "DE", "FL", "GA", "IN", "NM", "PR", "VI", }: # Washington's Birthday. name = tr("Washington's Birthday") if self._year >= 1971: if self.subdiv not in { "AZ", "CA", "CO", "HI", "ID", "MD", "MN", "MT", "NJ", "OH", "OK", "OR", "PA", "SC", "TN", "TX", "UT", "VA", "VT", "WA", "WV", "WY", }: self._add_holiday_3rd_mon_of_feb(name) else: self._add_holiday_feb_22(name) if self._year >= 1937 and ( self.subdiv is None or self.subdiv in { "AS", "AZ", "CT", "GA", "ID", "IL", "IN", "MA", "MD", "MO", "MT", "NJ", "NY", "OH", "PA", "UT", "WV", } ): # Columbus Day. name = tr("Columbus Day") if self._year >= 1971: self._add_holiday_2nd_mon_of_oct(name) else: self._add_columbus_day(name) if self._year >= 1938 and self.subdiv != "PR": name = ( # Veterans Day. tr("Veterans Day") if self._year >= 1954 # Armistice Day. else tr("Armistice Day") ) if 1971 <= self._year <= 1977: self._add_holiday_4th_mon_of_oct(name) else: self._add_observed(self._add_remembrance_day(name)) super()._populate_subdiv_holidays() def _populate_subdiv_ak_public_holidays(self): # Proclamation 3269 from Jan 3, 1959. if self._year <= 1958: return None # Chapter 109 SLA 1989. if self._year >= 1990: # Martin Luther King Jr.'s Birthday. self._add_holiday_3rd_mon_of_jan(tr("Martin Luther King Jr.'s Birthday")) else: # Lincoln's Birthday. self._add_observed(self._add_holiday_feb_12(tr("Lincoln's Birthday"))) if self._year >= 1971: # Chapter 109 SLA 1989. self._add_holiday_3rd_mon_of_feb( # Presidents' Day. tr("Presidents' Day") if self._year >= 1990 # Washington's Birthday. else tr("Washington's Birthday") ) # Seward's Day. self._add_holiday_last_mon_of_mar(tr("Seward's Day")) if self._year >= 1971: self._add_holiday_2nd_mon_of_oct( # Indigenous Peoples' Day. tr("Indigenous Peoples' Day") if self._year >= 2015 # Columbus Day. else tr("Columbus Day") ) # Alaska Day. self._add_observed(self._add_holiday_oct_18(tr("Alaska Day"))) def _populate_subdiv_al_public_holidays(self): if self._year >= 1986: self._add_holiday_3rd_mon_of_jan( # Martin Luther King, Jr & Robert E. Lee's Birthday. tr("Martin Luther King, Jr & Robert E. Lee's Birthday") ) if self._year >= 1971: # George Washington & Thomas Jefferson's Birthday. self._add_holiday_3rd_mon_of_feb(tr("George Washington & Thomas Jefferson's Birthday")) if self._year >= 1866: # Confederate Memorial Day. self._add_holiday_4th_mon_of_apr(tr("Confederate Memorial Day")) if self._year >= 1890: # Jefferson Davis Birthday. self._add_holiday_1st_mon_of_jun(tr("Jefferson Davis Birthday")) if self._year >= 1971: self._add_holiday_2nd_mon_of_oct( # Columbus Day / American Indian Heritage Day / Fraternal Day. tr("Columbus Day / American Indian Heritage Day / Fraternal Day") if self._year >= 2000 # Columbus Day / Fraternal Day. else tr("Columbus Day / Fraternal Day") ) def _populate_subdiv_ar_public_holidays(self): if self._year >= 1986: self._add_holiday_3rd_mon_of_jan( # Martin Luther King Jr. Day. tr("Martin Luther King Jr. Day") if self._year >= 2018 # Dr. Martin Luther King Jr. and Robert E. Lee's Birthdays. else tr("Dr. Martin Luther King Jr. and Robert E. Lee's Birthdays") ) if self._year >= 1971: self._add_holiday_3rd_mon_of_feb( # George Washington's Birthday and Daisy Gatson Bates Day. tr("George Washington's Birthday and Daisy Gatson Bates Day") ) def _populate_subdiv_as_public_holidays(self): if self._year >= 1901: # American Samoa Flag Day. self._add_observed(self._add_holiday_apr_17(tr("American Samoa Flag Day"))) if self._year >= 1983: # Manu'a Islands Cession Day. self._add_observed(self._add_holiday_jul_16(tr("Manu'a Islands Cession Day"))) # White Sunday. self._add_holiday_2nd_sun_of_oct(tr("White Sunday")) def _populate_subdiv_az_public_holidays(self): if self._year >= 1986: # Dr. Martin Luther King Jr. / Civil Rights Day. self._add_holiday_3rd_mon_of_jan(tr("Dr. Martin Luther King Jr. / Civil Rights Day")) if self._year >= 1971: # Lincoln/Washington Presidents' Day. self._add_holiday_3rd_mon_of_feb(tr("Lincoln/Washington Presidents' Day")) def _populate_subdiv_ca_public_holidays(self): if 1971 <= self._year <= 2009: # Lincoln's Birthday. self._add_observed(self._add_holiday_feb_12(tr("Lincoln's Birthday"))) if self._year >= 1971: # Presidents' Day. self._add_holiday_3rd_mon_of_feb(tr("Presidents' Day")) if self._year >= 2014: # Susan B. Anthony Day. self._add_holiday_feb_15(tr("Susan B. Anthony Day")) if self._year >= 1995: self._add_observed( # Cesar Chavez Day. self._add_holiday_mar_31(tr("Cesar Chavez Day")), rule=SUN_TO_NEXT_MON, ) if 1971 <= self._year <= 2008: # Columbus Day. self._add_holiday_2nd_mon_of_oct(tr("Columbus Day")) if self._year >= 1975: # Day After Thanksgiving. self._add_holiday_1_day_past_4th_thu_of_nov(tr("Day After Thanksgiving")) if self._year >= 2026: # Diwali. self._add_diwali_india(tr("Diwali")) def _populate_subdiv_co_public_holidays(self): if self._year >= 1971: # Washington-Lincoln Day. self._add_holiday_3rd_mon_of_feb(tr("Washington-Lincoln Day")) if self._year >= 2001: # Cesar Chavez Day. self._add_holiday_mar_31(tr("Cesar Chavez Day")) if self._year >= 2020: # Frances Xavier Cabrini Day. self._add_holiday_1st_mon_of_oct(tr("Frances Xavier Cabrini Day")) def _populate_subdiv_ct_public_holidays(self): if self._year >= 1971: # Lincoln's Birthday. self._add_observed(self._add_holiday_feb_12(tr("Lincoln's Birthday"))) # Good Friday. self._add_good_friday(tr("Good Friday")) def _populate_subdiv_dc_public_holidays(self): if self._year >= 1789 and (self._year - 1789) % 4 == 0: # Inauguration Day. name = tr("Inauguration Day") self._add_observed( self._add_holiday_jan_20(name) if self._year >= 1937 else self._add_holiday_mar_4(name), rule=SUN_TO_NEXT_MON, ) if self._year >= 2005: # Emancipation Day. self._add_observed(self._add_holiday_apr_16(tr("Emancipation Day"))) if self._year >= 1971: self._add_holiday_2nd_mon_of_oct( # Indigenous Peoples' Day. tr("Indigenous Peoples' Day") if self._year >= 2019 # Columbus Day. else tr("Columbus Day") ) def _populate_subdiv_de_public_holidays(self): # Good Friday. self._add_good_friday(tr("Good Friday")) if 1971 <= self._year <= 2009: self._add_holiday_3rd_mon_of_feb( # Presidents' Day. tr("Presidents' Day") if self._year >= 1990 # Washington's Birthday. else tr("Washington's Birthday") ) if self._year >= 2008 and self._year % 2 == 0: # Election Day. self._add_holiday_1_day_past_1st_mon_of_nov(tr("Election Day")) if self._year >= 1975: # Day After Thanksgiving. self._add_holiday_1_day_past_4th_thu_of_nov(tr("Day After Thanksgiving")) def _populate_subdiv_fl_public_holidays(self): if self._year >= 2011: # Susan B. Anthony Day. self._add_holiday_feb_15(tr("Susan B. Anthony Day")) if self._year >= 1975: # Friday After Thanksgiving. self._add_holiday_1_day_past_4th_thu_of_nov(tr("Friday After Thanksgiving")) def _populate_subdiv_ga_public_holidays(self): if self._year >= 1986: self._add_holiday_3rd_mon_of_jan( # Martin Luther King Jr. Day. tr("Martin Luther King Jr. Day") if self._year >= 2012 # Robert E. Lee's Birthday. else tr("Robert E. Lee's Birthday") ) if self._year >= 1866: name = ( # State Holiday. tr("State Holiday") if self._year >= 2016 # Confederate Memorial Day. else tr("Confederate Memorial Day") ) if self._year >= 2020: self._add_good_friday(name) else: self._add_holiday_4th_mon_of_apr(name) if self._year >= 1986: self._add_holiday_1_day_past_4th_thu_of_nov( # State Holiday. tr("State Holiday") if self._year >= 2016 # Robert E. Lee's Birthday. else tr("Robert E. Lee's Birthday") ) if self._year >= 1971: self._add_observed( self._christmas_day, # Washington's Birthday. name=tr("Washington's Birthday"), rule=GA_IN_WASHINGTON_BIRTHDAY, show_observed_label=False, ) def _populate_subdiv_gu_public_holidays(self): if self._year >= 1970: # Guam Discovery Day. self._add_holiday_1st_mon_of_mar(tr("Guam Discovery Day")) # Good Friday. self._add_good_friday(tr("Good Friday")) if self._year >= 1945: # Liberation Day (Guam). self._add_holiday_jul_21(tr("Liberation Day (Guam)")) # All Souls' Day. self._add_all_souls_day(tr("All Souls' Day")) # Lady of Camarin Day. self._add_immaculate_conception_day(tr("Lady of Camarin Day")) def _populate_subdiv_hi_public_holidays(self): if self._year >= 1971: # Presidents' Day. self._add_holiday_3rd_mon_of_feb(tr("Presidents' Day")) if self._year >= 1949: # Prince Jonah Kuhio Kalanianaole Day. self._add_observed(self._add_holiday_mar_26(tr("Prince Jonah Kuhio Kalanianaole Day"))) if self._year >= 1872: # Kamehameha Day. jun_11 = self._add_holiday_jun_11(tr("Kamehameha Day")) if self._year >= 2011: self._add_observed(jun_11) if self._year >= 1959: # Statehood Day. self._add_holiday_3rd_fri_of_aug(tr("Statehood Day")) if self._year >= 2008 and self._year % 2 == 0: # Election Day. self._add_holiday_1_day_past_1st_mon_of_nov(tr("Election Day")) def _populate_subdiv_ia_public_holidays(self): if self._year >= 1971: # Lincoln's Birthday. self._add_observed(self._add_holiday_feb_12(tr("Lincoln's Birthday"))) def _populate_subdiv_id_public_holidays(self): if self._year >= 1986: self._add_holiday_3rd_mon_of_jan( # Martin Luther King Jr. / Idaho Human Rights Day. tr("Martin Luther King Jr. / Idaho Human Rights Day") if self._year >= 2006 # Martin Luther King Jr. Day. else tr("Martin Luther King Jr. Day") ) if self._year >= 1971: # Presidents' Day. self._add_holiday_3rd_mon_of_feb(tr("Presidents' Day")) def _populate_subdiv_il_public_holidays(self): if self._year >= 1971: # Lincoln's Birthday. self._add_observed(self._add_holiday_feb_12(tr("Lincoln's Birthday"))) if self._year >= 1978: # Casimir Pulaski Day. self._add_holiday_1st_mon_of_mar(tr("Casimir Pulaski Day")) if self._year >= 2008 and self._year % 2 == 0: # Election Day. self._add_holiday_1_day_past_1st_mon_of_nov(tr("Election Day")) def _populate_subdiv_in_public_holidays(self): # Good Friday. self._add_good_friday(tr("Good Friday")) if self._year >= 2015 or (self._year >= 2006 and self._year % 2 == 0): # Primary Election Day. self._add_holiday_1_day_past_1st_mon_of_may(tr("Primary Election Day")) if self._year >= 2015 or (self._year >= 2008 and self._year % 2 == 0): # Election Day. self._add_holiday_1_day_past_1st_mon_of_nov(tr("Election Day")) if self._year >= 2010: # Lincoln's Birthday. self._add_holiday_1_day_past_4th_thu_of_nov(tr("Lincoln's Birthday")) if self._year >= 1971: self._add_observed( self._christmas_day, # Washington's Birthday. name=tr("Washington's Birthday"), rule=GA_IN_WASHINGTON_BIRTHDAY, show_observed_label=False, ) def _populate_subdiv_ks_public_holidays(self): if self._year >= 2013: # Christmas Eve. self._add_christmas_eve_holiday() def _populate_subdiv_ky_public_holidays(self): # Good Friday. self._add_good_friday(tr("Good Friday")) if self._year >= 2013: # New Year's Eve. self._add_observed(self._add_new_years_eve(tr("New Year's Eve"))) def _populate_subdiv_la_public_holidays(self): if self._year >= 1857: # Mardi Gras. self._add_carnival_tuesday(tr("Mardi Gras")) # Good Friday. self._add_good_friday(tr("Good Friday")) if self._year >= 2008 and self._year % 2 == 0: # Election Day. self._add_holiday_1_day_past_1st_mon_of_nov(tr("Election Day")) def _populate_subdiv_ma_public_holidays(self): if self._year >= 1894: # Patriots' Day. name = tr("Patriots' Day") if self._year >= 1969: self._add_holiday_3rd_mon_of_apr(name) else: self._add_holiday_apr_19(name) def _populate_subdiv_md_public_holidays(self): if self._year >= 1789 and (self._year - 1789) % 4 == 0: # Inauguration Day. name = tr("Inauguration Day") self._add_observed( self._add_holiday_jan_20(name) if self._year >= 1937 else self._add_holiday_mar_4(name), rule=SUN_TO_NEXT_MON, ) if self._year >= 1971: # Presidents' Day. self._add_holiday_3rd_mon_of_feb(tr("Presidents' Day")) if self._year >= 2008: # American Indian Heritage Day. self._add_holiday_1_day_past_4th_thu_of_nov(tr("American Indian Heritage Day")) def _populate_subdiv_me_public_holidays(self): if self._year >= 1894: # Patriots' Day. name = tr("Patriots' Day") if self._year >= 1969: self._add_holiday_3rd_mon_of_apr(tr("Patriots' Day")) else: self._add_holiday_apr_19(name) if self._year >= 1971: self._add_holiday_2nd_mon_of_oct( # Indigenous Peoples' Day. tr("Indigenous Peoples' Day") if self._year >= 2019 # Columbus Day. else tr("Columbus Day") ) def _populate_subdiv_mi_public_holidays(self): if self._year >= 2013: # Christmas Eve. self._add_christmas_eve_holiday() # New Year's Eve. self._add_observed(self._add_new_years_eve(tr("New Year's Eve"))) if self._year >= 2008 and self._year % 2 == 0: # Election Day. self._add_holiday_1_day_past_1st_mon_of_nov(tr("Election Day")) if self._year >= 2017: # Day After Thanksgiving. self._add_holiday_1_day_past_4th_thu_of_nov(tr("Day After Thanksgiving")) def _populate_subdiv_mn_public_holidays(self): if self._year >= 1971: # Washington's and Lincoln's Birthday. self._add_holiday_3rd_mon_of_feb(tr("Washington's and Lincoln's Birthday")) def _populate_subdiv_mo_public_holidays(self): if self._year >= 1949: # Truman Day. self._add_observed(self._add_holiday_may_8(tr("Truman Day"))) def _populate_subdiv_mp_public_holidays(self): # Commonwealth Covenant Day. self._add_observed(self._add_holiday_mar_24(tr("Commonwealth Covenant Day"))) # Good Friday. self._add_good_friday(tr("Good Friday")) # Commonwealth Cultural Day. self._add_holiday_2nd_mon_of_oct(tr("Commonwealth Cultural Day")) if self._year >= 2008 and self._year % 2 == 0: # Election Day. self._add_holiday_1_day_past_1st_mon_of_nov(tr("Election Day")) # Citizenship Day. self._add_observed(self._add_holiday_nov_4(tr("Citizenship Day"))) # Constitution Day. self._add_observed(self._add_holiday_dec_8(tr("Constitution Day"))) def _populate_subdiv_ms_public_holidays(self): if self._year >= 1986: self._add_holiday_3rd_mon_of_jan( # Dr. Martin Luther King Jr. and Robert E. Lee's Birthdays. tr("Dr. Martin Luther King Jr. and Robert E. Lee's Birthdays") ) if self._year >= 1866: # Confederate Memorial Day. self._add_holiday_last_mon_of_apr(tr("Confederate Memorial Day")) def _populate_subdiv_mt_public_holidays(self): if self._year >= 1971: # Lincoln's and Washington's Birthdays. self._add_holiday_3rd_mon_of_feb(tr("Lincoln's and Washington's Birthdays")) if self._year >= 2008 and self._year % 2 == 0: # Election Day. self._add_holiday_1_day_past_1st_mon_of_nov(tr("Election Day")) def _populate_subdiv_nc_public_holidays(self): # Good Friday. self._add_good_friday(tr("Good Friday")) if self._year >= 1975: # Day After Thanksgiving. self._add_holiday_1_day_past_4th_thu_of_nov(tr("Day After Thanksgiving")) if self._year >= 2013: # Christmas Eve. self._add_christmas_eve_holiday() # If on Saturday or Sunday, observed on Monday # If on Monday, observed on Tuesday if self._year >= 2013: # Day After Christmas. name = tr("Day After Christmas") self._add_observed( self._add_christmas_day_two(name), name=name, rule=MON_TO_NEXT_TUE + SAT_SUN_TO_NEXT_MON, ) def _populate_subdiv_nd_public_holidays(self): pass def _populate_subdiv_ne_public_holidays(self): if self._year >= 1875: # Arbor Day. name = tr("Arbor Day") if self._year >= 1989: self._add_holiday_last_fri_of_apr(name) else: self._add_holiday_apr_22(name) if self._year >= 1971: self._add_holiday_2nd_mon_of_oct( # Indigenous Peoples' Day. tr("Indigenous Peoples' Day") if self._year >= 2020 # Columbus Day. else tr("Columbus Day") ) def _populate_subdiv_nh_public_holidays(self): if self._year >= 1986: # Dr. Martin Luther King Jr. / Civil Rights Day. self._add_holiday_3rd_mon_of_jan(tr("Dr. Martin Luther King Jr. / Civil Rights Day")) if self._year >= 2008 and self._year % 2 == 0: # Election Day. self._add_holiday_1_day_past_1st_mon_of_nov(tr("Election Day")) if self._year >= 1975: # Day After Thanksgiving. self._add_holiday_1_day_past_4th_thu_of_nov(tr("Day After Thanksgiving")) def _populate_subdiv_nj_public_holidays(self): if self._year >= 1971: # Lincoln's Birthday. self._add_observed(self._add_holiday_feb_12(tr("Lincoln's Birthday"))) # Presidents Day. self._add_holiday_3rd_mon_of_feb(tr("Presidents Day")) # Good Friday. self._add_good_friday(tr("Good Friday")) if self._year >= 2008 and self._year % 2 == 0: # Election Day. self._add_holiday_1_day_past_1st_mon_of_nov(tr("Election Day")) def _populate_subdiv_nm_public_holidays(self): if self._year >= 1971: self._add_holiday_2nd_mon_of_oct( # Indigenous Peoples' Day. tr("Indigenous Peoples' Day") if self._year >= 2019 # Columbus Day. else tr("Columbus Day") ) # Presidents' Day. self._add_holiday_1_day_past_4th_thu_of_nov(tr("Presidents' Day")) def _populate_subdiv_nv_public_holidays(self): if self._year >= 1933: # Nevada Day. name = tr("Nevada Day") self._add_observed( self._add_holiday_last_fri_of_oct(name) if self._year >= 2000 else self._add_holiday_oct_31(name) ) # Family Day. self._add_holiday_1_day_past_4th_thu_of_nov(tr("Family Day")) def _populate_subdiv_ny_public_holidays(self): if self._year >= 1971: # Lincoln's Birthday. self._add_observed(self._add_holiday_feb_12(tr("Lincoln's Birthday"))) if self._year >= 2004: # Susan B. Anthony Day. self._add_holiday_feb_15(tr("Susan B. Anthony Day")) if self._year >= 2015 or (self._year >= 2008 and self._year % 2 == 0): # Election Day. self._add_holiday_1_day_past_1st_mon_of_nov(tr("Election Day")) def _populate_subdiv_oh_public_holidays(self): if self._year >= 1971: # Washington-Lincoln Day. self._add_holiday_3rd_mon_of_feb(tr("Washington-Lincoln Day")) def _populate_subdiv_ok_public_holidays(self): if self._year >= 1971: # Presidents' Day. self._add_holiday_3rd_mon_of_feb(tr("Presidents' Day")) if self._year >= 1975: # Day After Thanksgiving. self._add_holiday_1_day_past_4th_thu_of_nov(tr("Day After Thanksgiving")) def _populate_subdiv_or_public_holidays(self): if self._year >= 1971: # Presidents Day. self._add_holiday_3rd_mon_of_feb(tr("Presidents Day")) def _populate_subdiv_pa_public_holidays(self): if self._year >= 1971: # Presidents' Day. self._add_holiday_3rd_mon_of_feb(tr("Presidents' Day")) # Day After Thanksgiving. self._add_holiday_1_day_past_4th_thu_of_nov(tr("Day After Thanksgiving")) def _populate_subdiv_pr_public_holidays(self): # Art. 387 of the 1902 Political Code of Puerto Rico. if self._year <= 1902: return None # Día de Reyes. # Law No. 3 of Mar 27, 1931. if self._year >= 1932: # Epiphany. self._add_epiphany_day(tr("Epiphany")) # Natalicio de Eugenio María de Hostos. # Established by Law No. 3 of Mar 15, 1939. # Made movable by Law No. 88 of Jun 27, 1969. # Abolished by Law No. 111 of Jul 29, 2014. if 1940 <= self._year <= 2014: # Birthday of Eugenio María de Hostos. name = tr("Birthday of Eugenio María de Hostos") if self._year >= 1971: self._add_holiday_2nd_mon_of_jan(name) else: self._add_observed(self._add_holiday_jan_11(name), rule=SUN_TO_NEXT_MON) # ...Día de las Mujeres y Hombres Próceres de Puerto Rico. # Law No. 152 of Jul 23, 2018. if self._year >= 2019: # George Washington Day, Presidents' Day, and the Day of the Women and Men # Heroes of Puerto Rico. name = tr( "George Washington Day, Presidents' Day, and the Day of the Women and Men " "Heroes of Puerto Rico" ) # ...Día del Prócer y la Mujer Ilustre de Puerto Rico. # Law No. 40 of Mar 25, 2015. elif self._year >= 2016: # George Washington Day, Presidents' Day, and the Day of the Hero # and the Illustrious Woman of Puerto Rico. name = tr( "George Washington Day, Presidents' Day, and the Day of the Hero " "and the Illustrious Woman of Puerto Rico" ) # ...Día de los Próceres Puertorriqueños. # Law No. 111 of Jul 29, 2014. elif self._year >= 2015: # George Washington Day, Presidents' Day, and the Puerto Rican Heroes Day. name = tr("George Washington Day, Presidents' Day, and the Puerto Rican Heroes Day") else: name = tr("George Washington Day") if self._year >= 1971: self._add_holiday_3rd_mon_of_feb(name) else: self._add_observed(self._add_holiday_feb_22(name), rule=SUN_TO_NEXT_MON) # Día de la Abolición de la Esclavitud. # Emancipation Day. self._add_observed(self._add_holiday_mar_22(tr("Emancipation Day")), rule=SUN_TO_NEXT_MON) # Viernes Santo. # Good Friday. self._add_good_friday(tr("Good Friday")) # Día de José de Diego. # Established by Law No. 3 of Apr 9, 1925. # Made movable by Law No. 88 of Jun 27, 1969. # Abolished by Law No. 111 of Jul 29, 2014. if 1925 <= self._year <= 2014: # José de Diego Day. name = tr("José de Diego Day") if self._year >= 1971: self._add_holiday_3rd_mon_of_apr(name) else: self._add_observed(self._add_holiday_apr_16(name), rule=SUN_TO_NEXT_MON) # Día de Luis Muñoz Rivera. # Established by Law No. 47 of Dec 1, 1917. # Made movable by Law No. 88 of Jun 27, 1969. # Abolished by Law No. 111 of Jul 29, 2014. if 1918 <= self._year <= 2014: # Luis Muñoz Rivera Day. name = tr("Luis Muñoz Rivera Day") if self._year >= 1971: self._add_holiday_3rd_mon_of_jul(name) else: self._add_observed(self._add_holiday_jul_17(name), rule=SUN_TO_NEXT_MON) # Día de la Ocupación / Día de la Constitución del Estado Libre Asociado de Puerto Rico. self._add_observed( self._add_holiday_jul_25( # Puerto Rico Constitution Day. tr("Puerto Rico Constitution Day") # Renamed by Law No. 1 of Aug 1, 1952. if self._year >= 1953 # Occupation Day. else tr("Occupation Day") ), rule=SUN_TO_NEXT_MON, ) # Día de José Celso Barbosa. # Established by Law No. 97 of May 6, 1938. # Abolished by Law No. 111 of Jul 29, 2014. if 1938 <= self._year <= 2014: # José Celso Barbosa Day. name = tr("José Celso Barbosa Day") # Made movable by Law No. 88 of Jun 27, 1969. # Made fixed by: # Law No. 39 of Jul 11, 1994 (for 1994), # Law No. 76 of Jul 6, 1995. if 1971 <= self._year <= 1993: self._add_holiday_4th_mon_of_jul(name) else: self._add_observed(self._add_holiday_jul_27(name), rule=SUN_TO_NEXT_MON) # Día de la Raza. # Established by Joint Resolution No. 31 of Aug 18, 1913. # Made movable by Law No. 88 of Jun 27, 1969. # Made fixed by Law No. 260 of Jul 30, 1974. # Made movable by Law No. 111 of Jul 29, 2014. if self._year >= 1913: # Columbus Day. name = tr("Columbus Day") if 1971 <= self._year <= 1973 or self._year >= 2014: self._add_holiday_2nd_mon_of_oct(name) else: self._add_observed(self._add_columbus_day(name), rule=SUN_TO_NEXT_MON) # Día del Armisticio / Día del Veterano. # The exact year of holiday appearance is currently uncertain. if self._year >= 1938: self._add_observed( self._add_remembrance_day( # Veterans Day. tr("Veterans Day") # Renamed by Law No. 129 of Jun 13, 1980. if self._year >= 1980 # Armistice Day. else tr("Armistice Day") ), rule=SUN_TO_NEXT_MON, ) # Día del Descubrimiento de Puerto Rico. # Established by Law No. 91 of May 6, 1938. if self._year >= 1938: # Día de la Puertorriqueñidad. # Renamed by Law No. 117 of Dec 23, 2022. if self._year >= 2023: # Puerto Rican Identity Day. name = tr("Puerto Rican Identity Day") # Día de la Cultura Puertorriqueña y el Descubrimiento de Puerto Rico. # Renamed by Law No. 111 of Jul 29, 2014. elif self._year >= 2014: # Puerto Rican Culture and Discovery of Puerto Rico Day. name = tr("Puerto Rican Culture and Discovery of Puerto Rico Day") else: # Discovery of Puerto Rico Day. name = tr("Discovery of Puerto Rico Day") self._add_observed(self._add_holiday_nov_19(name), rule=SUN_TO_NEXT_MON) def _populate_subdiv_pr_government_holidays(self): # Día de la Ciudadanía Americana. # Established by Law No. 53 of Mar 4, 2000. if self._year >= 2001: # American Citizenship Day. self._add_holiday_mar_2(tr("American Citizenship Day")) def _populate_subdiv_pr_half_day_holidays(self): # Established by Law No. 305 of Dec 25, 2002. if self._year >= 2003: # %s (from 12pm). begin_time_label = self.tr("%s (from 12pm)") # Christmas Eve. self._add_christmas_eve(begin_time_label % self.tr("Christmas Eve")) def _populate_subdiv_ri_public_holidays(self): if self._year >= 1948: # Victory Day. self._add_holiday_2nd_mon_of_aug(tr("Victory Day")) if self._year >= 1971: self._add_holiday_2nd_mon_of_oct( # Indigenous Peoples' Day / Columbus Day. tr("Indigenous Peoples' Day / Columbus Day") if self._year >= 2022 # Columbus Day. else tr("Columbus Day") ) def _populate_subdiv_sc_public_holidays(self): if self._year >= 1971: # President's Day. self._add_holiday_3rd_mon_of_feb(tr("President's Day")) if self._year >= 1866: # Confederate Memorial Day. self._add_holiday_4th_mon_of_apr(tr("Confederate Memorial Day")) def _populate_subdiv_sd_public_holidays(self): if self._year >= 1937: name = ( # Native Americans' Day. tr("Native Americans' Day") if self._year >= 1990 # Columbus Day. else tr("Columbus Day") ) if self._year >= 1970: self._add_holiday_2nd_mon_of_oct(name) else: self._add_columbus_day(name) def _populate_subdiv_tn_public_holidays(self): if self._year >= 1971: # President's Day. self._add_holiday_3rd_mon_of_feb(tr("President's Day")) # Good Friday. self._add_good_friday(tr("Good Friday")) def _populate_subdiv_tx_public_holidays(self): if self._year >= 1931: # Confederate Memorial Day. self._add_holiday_jan_19(tr("Confederate Memorial Day")) if self._year >= 1971: # Presidents' Day. self._add_holiday_3rd_mon_of_feb(tr("Presidents' Day")) if self._year >= 1874: # Texas Independence Day. self._add_holiday_mar_2(tr("Texas Independence Day")) if self._year >= 2000: # Cesar Chavez Day. self._add_holiday_mar_31(tr("Cesar Chavez Day")) # Good Friday. self._add_good_friday(tr("Good Friday")) if self._year >= 1875: # San Jacinto Day. self._add_holiday_apr_21(tr("San Jacinto Day")) if self._year >= 1980: # Emancipation Day In Texas. self._add_holiday_jun_19(tr("Emancipation Day In Texas")) if self._year >= 1973: # Lyndon Baines Johnson Day. self._add_holiday_aug_27(tr("Lyndon Baines Johnson Day")) if self._year >= 1975: # Friday After Thanksgiving. self._add_holiday_1_day_past_4th_thu_of_nov(tr("Friday After Thanksgiving")) if self._year >= 1981: # Christmas Eve. self._add_christmas_eve_holiday() # Day After Christmas. self._add_christmas_day_two(tr("Day After Christmas")) def _populate_subdiv_um_public_holidays(self): pass def _populate_subdiv_ut_public_holidays(self): if self._year >= 1971: # Washington and Lincoln Day. self._add_holiday_3rd_mon_of_feb(tr("Washington and Lincoln Day")) if self._year >= 1849: # Pioneer Day. self._add_observed(self._add_holiday_jul_24(tr("Pioneer Day"))) def _populate_subdiv_va_public_holidays(self): if 1889 <= self._year <= 2020: # Lee Jackson Day. name = tr("Lee Jackson Day") if self._year >= 2000: self._add_holiday_3_days_prior_3rd_mon_of_jan(name) elif self._year >= 1983: self._add_holiday_3rd_mon_of_jan(name) else: self._add_holiday_jan_19(name) if self._year >= 1789 and (self._year - 1789) % 4 == 0: # Inauguration Day. name = tr("Inauguration Day") self._add_observed( self._add_holiday_jan_20(name) if self._year >= 1937 else self._add_holiday_mar_4(name), rule=SUN_TO_NEXT_MON, ) if self._year >= 1971: # George Washington Day. self._add_holiday_3rd_mon_of_feb(tr("George Washington Day")) self._add_holiday_2nd_mon_of_oct( # Indigenous Peoples' Day. tr("Indigenous Peoples' Day") if self._year >= 2020 # Columbus Day. else tr("Columbus Day") ) def _populate_subdiv_vi_public_holidays(self): # Three Kings Day. self._add_epiphany_day(tr("Three Kings Day")) if self._year >= 1879: # Presidents' Day. name = tr("Presidents' Day") if self._year >= 1971: self._add_holiday_3rd_mon_of_feb(name) else: self._add_holiday_feb_22(name) # Transfer Day. self._add_holiday_mar_31(tr("Transfer Day")) # Holy Thursday. self._add_holy_thursday(tr("Holy Thursday")) # Good Friday. self._add_good_friday(tr("Good Friday")) # Easter Monday. self._add_easter_monday(tr("Easter Monday")) # Emancipation Day. self._add_holiday_jul_3(tr("Emancipation Day")) if self._year >= 1937: # Columbus Day and Puerto Rico Friendship Day. name = tr("Columbus Day and Puerto Rico Friendship Day") if self._year >= 1970: self._add_holiday_2nd_mon_of_oct(name) else: self._add_columbus_day(name) # Liberty Day. self._add_holiday_nov_1(tr("Liberty Day")) # Christmas Second Day. self._add_christmas_day_two(tr("Christmas Second Day")) def _populate_subdiv_vt_public_holidays(self): if self._year >= 1971: # Presidents' Day. self._add_holiday_3rd_mon_of_feb(tr("Presidents' Day")) if self._year >= 1800: # Town Meeting Day. self._add_holiday_1st_tue_of_mar(tr("Town Meeting Day")) if self._year >= 1778: # Bennington Battle Day. self._add_observed(self._add_holiday_aug_16(tr("Bennington Battle Day"))) def _populate_subdiv_wa_public_holidays(self): if self._year >= 1971: # Presidents' Day. self._add_holiday_3rd_mon_of_feb(tr("Presidents' Day")) if self._year >= 2014: # Native American Heritage Day. self._add_holiday_1_day_past_4th_thu_of_nov(tr("Native American Heritage Day")) def _populate_subdiv_wi_public_holidays(self): if self._year >= 1976: # Susan B. Anthony Day. self._add_holiday_feb_15(tr("Susan B. Anthony Day")) if self._year >= 2012: # Christmas Eve. self._add_christmas_eve_holiday() # New Year's Eve. self._add_observed(self._add_new_years_eve(tr("New Year's Eve"))) def _populate_subdiv_wv_public_holidays(self): if self._year >= 1971: # Presidents' Day. self._add_holiday_3rd_mon_of_feb(tr("Presidents' Day")) if self._year >= 1927: # West Virginia Day. self._add_observed(self._add_holiday_jun_20(tr("West Virginia Day"))) if self._year >= 2008 and self._year % 2 == 0: # Election Day. self._add_holiday_1_day_past_1st_mon_of_nov(tr("Election Day")) if self._year >= 1975: # Day After Thanksgiving. self._add_holiday_1_day_past_4th_thu_of_nov(tr("Day After Thanksgiving")) def _populate_subdiv_wy_public_holidays(self): if self._year >= 1971: # President's Day. self._add_holiday_3rd_mon_of_feb(tr("President's Day")) def _populate_government_holidays(self): # Added by 16 Stat. 168, effectdive date June 28th, 1870. # New Year's Day check for 1871 is included. if self._year >= 1870 and self.subdiv != "PR": # Federal holidays in the United States. self._populate_common(include_federal=True) def _populate_unofficial_holidays(self): # Very common celebrated cultural days, but no official observance. # Due to its nature, no in-lieus are observed. # Valentine's Day. # While the modern iteration of Valentine's Day has started in the UK in 1797, # it wasn't until 1847 in the US that this started to be observed here. if self._year >= 1847: # Valentine's Day. self._add_holiday_feb_14(tr("Valentine's Day")) # Saint Patrick's Day. # Started in Boston in 1737 for the US. # Saint Patrick's Day. self._add_saint_patricks_day(tr("Saint Patrick's Day")) # Easter Holidays. # Observed informally across the US. # Good Friday. self._add_good_friday(tr("Good Friday")) # Easter Sunday. self._add_easter_sunday(tr("Easter Sunday")) # Mother's Day. # Starts to be observed by most US states by 1911. # Officially proclaimed as a National Holiday by President Woodrow Wilson in 1914. if self._year >= 1914: # Mother's Day. self._add_holiday_2nd_sun_of_may(tr("Mother's Day")) # Father's Day. # First founded in the state of Washington by Sonora Smart Dodd in 1910. # Officially proclaimed as a National Holiday by President Richard Nixon in 1972. if self._year >= 1972: # Father's Day. self._add_holiday_3rd_sun_of_jun(tr("Father's Day")) # Halloween. # Halloween began in the US sometime around the 19th century. # Halloween. self._add_holiday_oct_31(tr("Halloween")) # While earlier observance existed at local levels, Christmas Day and New Year's Day # were not established as federal holidays until June 28, 1870. if self._year >= 1870: # Christmas Eve. self._add_christmas_eve(tr("Christmas Eve")) # New Year's Eve. self._add_new_years_eve(tr("New Year's Eve")) # Continental US non-Public dates if self.subdiv not in {"AS", "GU", "MP", "PR", "UM", "VI"}: # Groundhog Day # First observed on Feb 2 in 1886 in Continental US + Hawaii. if self._year >= 1886: # Groundhog Day. self._add_holiday_feb_2(tr("Groundhog Day")) # Election Day # May be duplicates for certain states which has this as their actual public holiday. # The current US Presidential Election date pattern was codified in 1848 nationwide. if self._year >= 1848 and self._year % 4 == 0: # Election Day. self._add_holiday_1_day_past_1st_mon_of_nov(tr("Election Day")) class US(UnitedStates): pass class USA(UnitedStates): pass class UnitedStatesStaticHolidays(StaticHolidays): """United States special holidays. Thanksgiving Proclamation References: * [1777](https://web.archive.org/web/20240621142028/https://pilgrimhall.org/pdf/TG_First_National_Thanksgiving_Proclamation_1777.pdf) * [1782](https://web.archive.org/web/20240621142030/https://www.loc.gov/exhibits/religion/vc006491.jpg) * [1789](https://web.archive.org/web/20240621142029/https://www.whatsoproudlywehail.org/curriculum/the-american-calendar/thanksgiving-proclamation-1789-2) * [1795](https://web.archive.org/web/20240621142029/https://founders.archives.gov/documents/Washington/05-17-02-0239) * [1798](https://web.archive.org/web/20240621142029/https://founders.archives.gov/documents/Adams/99-02-02-2386) * [1799](https://web.archive.org/web/20240621142029/https://founders.archives.gov/documents/Adams/99-02-02-3372) * [1813](https://web.archive.org/web/20240621142030/https://founders.archives.gov/documents/Madison/03-06-02-0434) * [1815](https://web.archive.org/web/20240621142030/https://founders.archives.gov/documents/Madison/03-09-02-0066) Federal Government Closings: * [2001, EO 13238](https://web.archive.org/web/20250414100019/http://www.federalregister.gov/documents/2001/12/10/01-30624/closing-of-federal-government-executive-departments-and-agencies-on-monday-december-24-2001) * [2002, EO 13281](https://web.archive.org/web/20250213083130/https://www.federalregister.gov/documents/2002/12/23/02-32518/half-day-closing-of-executive-departments-and-agencies-of-the-federal-government-on-tuesday-december) * [2003, EO 13320](https://web.archive.org/web/20250201153913/https://www.federalregister.gov/documents/2003/12/12/03-30913/closing-of-executive-departments-and-agencies-of-the) * [2004, EO 13343](https://web.archive.org/web/20250414155140/https://www.federalregister.gov/documents/2004/06/08/04-13123/providing-for-the-closing-of-government-departments-and-agencies-on-june-11-2004) * [2007, EO 13421](https://web.archive.org/web/20250208143815/https://www.federalregister.gov/documents/2007/01/04/06-9993/providing-for-the-closing-of-government-departments-and-agencies-on-january-2-2007) * [2007, EO 13453](https://web.archive.org/web/20250414113515/https://www.federalregister.gov/documents/2007/12/11/07-6022/closing-of-executive-departments-and-agencies-of-the-federal-government-on-monday-december-24-2007) * [2008, EO 13482](https://web.archive.org/web/20250413080630/https://www.federalregister.gov/documents/2008/12/16/E8-30042/closing-of-executive-departments-and-agencies-of-the-federal-government-on-friday-december-26-2008) * [2009, EO 13523](https://web.archive.org/web/20250204020329/https://www.federalregister.gov/documents/2009/12/16/E9-30020/half-day-closing-of-executive-departments-and-agencies-on-thursday-december-24-2009) * [2012, EO 13633](https://web.archive.org/web/20250202102026/https://www.federalregister.gov/documents/2012/12/28/2012-31225/closing-of-executive-departments-and-agencies-of-the-federal-government-on-monday-december-24-2012) * [2014, EO 13682](https://web.archive.org/web/20250204140956/https://www.federalregister.gov/documents/2014/12/10/2014-29121/closing-of-executive-departments-and-agencies-of-the-federal-government-on-friday-december-26-2014) * [2015, EO 13713](https://web.archive.org/web/20250204021239/https://www.federalregister.gov/documents/2015/12/16/2015-31749/half-day-closing-of-executive-departments-and-agencies-of-the-federal-government-on-thursday) * [2018, EO 13852](https://web.archive.org/web/20250507175643/https://www.federalregister.gov/documents/2018/12/04/2018-26552/providing-for-the-closing-of-executive-departments-and-agencies-of-the-federal-government-on) * [2018, EO 13854](https://web.archive.org/web/20250202030122/https://www.federalregister.gov/documents/2018/12/21/2018-27945/providing-for-the-closing-of-executive-departments-and-agencies-of-the-federal-government-on) * [2019, EO 13900](https://web.archive.org/web/20250205125417/https://www.federalregister.gov/documents/2019/12/20/2019-27678/providing-for-the-closing-of-executive-departments-and-agencies-of-the-federal-government-on) * [2020, EO 13965](https://web.archive.org/web/20250212090335/https://www.federalregister.gov/documents/2020/12/16/2020-27807/providing-for-the-closing-of-executive-departments-and-agencies-of-the-federal-government-on) * [2024, EO 14129](https://web.archive.org/web/20250219155414/https://www.federalregister.gov/documents/2024/12/26/2024-31143/providing-for-the-closing-of-executive-departments-and-agencies-of-the-federal-government-on) * [2025, EO 14133](https://web.archive.org/web/20250218220403/https://www.federalregister.gov/documents/2025/01/03/2024-31766/providing-for-the-closing-of-executive-departments-and-agencies-of-the-federal-government-on-january) * [2025, EO 14371](https://web.archive.org/web/20251219180805/https://www.whitehouse.gov/presidential-actions/2025/12/providing-for-the-closure-of-executive-departments-and-agencies-of-the-federal-government-on-december-24-2025-and-december-26-2025/) Pre-1971 Inauguration Day observances have been moved here. """ # Fasting and Humiliation Day. fasting_and_humiliation_day_name = tr("Fasting and Humiliation Day") # Public Humiliation and Prayer Day. public_humiliation_and_prayer_day_name = tr("Public Humiliation and Prayer Day") # Public Thanksgiving and Prayer Day. public_thanksgiving_and_prayer_day_name = tr("Public Thanksgiving and Prayer Day") # Inauguration Day. inauguration_day_name = tr("Inauguration Day") # %s (half-day closing). half_day_closing_label = tr("%s (half-day closing)") # Christmas Eve. christmas_eve_name = tr("Christmas Eve") # Day After Christmas. day_after_christmas_name = tr("Day After Christmas") special_public_holidays = { 1777: (DEC, 18, public_thanksgiving_and_prayer_day_name), 1782: (NOV, 28, public_thanksgiving_and_prayer_day_name), 1789: (NOV, 26, public_thanksgiving_and_prayer_day_name), 1795: (FEB, 19, public_thanksgiving_and_prayer_day_name), 1798: (MAY, 9, fasting_and_humiliation_day_name), 1799: (APR, 25, fasting_and_humiliation_day_name), 1813: (SEP, 9, public_humiliation_and_prayer_day_name), 1815: (APR, 13, public_humiliation_and_prayer_day_name), } special_government_holidays = { 2001: (DEC, 24, christmas_eve_name), 2002: (DEC, 24, half_day_closing_label % christmas_eve_name), 2003: (DEC, 26, day_after_christmas_name), # National Day of Mourning for former President Ronald Reagan. 2004: (JUN, 11, tr("National Day of Mourning for former President Ronald Reagan")), 2007: ( # National Day of Mourning for former President Gerald R. Ford. (JAN, 2, tr("National Day of Mourning for former President Gerald R. Ford")), (DEC, 24, christmas_eve_name), ), 2008: (DEC, 26, day_after_christmas_name), 2009: (DEC, 24, half_day_closing_label % christmas_eve_name), 2012: (DEC, 24, christmas_eve_name), 2014: (DEC, 26, day_after_christmas_name), 2015: (DEC, 24, half_day_closing_label % christmas_eve_name), 2018: ( # National Day of Mourning for former President George H. W. Bush. (DEC, 5, tr("National Day of Mourning for former President George H. W. Bush")), (DEC, 24, christmas_eve_name), ), 2019: (DEC, 24, christmas_eve_name), 2020: (DEC, 24, christmas_eve_name), 2024: (DEC, 24, christmas_eve_name), 2025: ( # National Day of Mourning for former President Jimmy Carter. (JAN, 9, tr("National Day of Mourning for former President Jimmy Carter")), (DEC, 24, christmas_eve_name), (DEC, 26, day_after_christmas_name), ), } # Pre-1953 Inauguration Day observances. special_dc_public_holidays_observed = { 1877: (MAR, 5, inauguration_day_name), 1917: (MAR, 5, inauguration_day_name), } special_md_public_holidays_observed = { 1877: (MAR, 5, inauguration_day_name), 1917: (MAR, 5, inauguration_day_name), } special_va_public_holidays_observed = { 1877: (MAR, 5, inauguration_day_name), 1917: (MAR, 5, inauguration_day_name), }