def holiday_half_days(self): """ Define half-day holidays. Both Christmas Eve (_aðfangadagur jóla_) and New Year's Eve (_gamlársdagur_) are public holidays in Iceland from 13:00 only. They're included as full-day holidays, but with an explanatory note. 12-24: [NRF] Aðfangadagur jóla 12-31: [NF] Gamlársdagur """ return [ Holiday( locale=self.locale, region="", date=SmartDayArrow(self.year, 12, 24), description="Aðfangadagur jóla", flags="NRF", notes="Holiday from 13:00", ), Holiday( locale=self.locale, region="", date=SmartDayArrow(self.year, 12, 31), description="Gamlársdagur", flags="NF", notes="Holiday from 13:00", ), ]
def holiday_new_years_day_observed(self): date = SmartDayArrow(self.year, 1, 1) if date.weekday() in ['saturday', 'sunday']: return [Holiday( locale=self.locale, region="", date=date.shift_to_weekday('monday', including=True), description="New Year's Day (observed)", flags="NV", notes="")] return []
def holiday_koninkrijksdag(self): date = SmartDayArrow(self.year, 12, 15) if date.weekday() == 'sunday': date = date.shift(days=1) return [Holiday( locale=self.locale, region="", date=date, description="Koninkrijksdag", flags="NV", notes="")]
def holiday_anzac_day_observed(self): date = SmartDayArrow(self.year, 4, 25) if self.year > 2015 and date.weekday() in ['saturday', 'sunday']: return [ Holiday(locale=self.locale, region="", date=date.shift_to_weekday('monday', including=True), description="ANZAC Day (observed)", flags="NV", notes="") ] return []
def holiday_may_day(self): """ 05-01: [NF] Πρωτομαγιά Postponed if it collides with Easter """ date = SmartDayArrow(self.year, 5, 1) easter_date = easter(self.year, self.easter_type) if date == easter_date: date = date.shift(days=2) elif date == easter_date.shift(days=1): date = date.shift(days=1) return [Holiday(self.locale, "", date, "Πρωτομαγιά", "NF")]
def holiday_san_jose(self): """First Monday after March 19.""" return [ Holiday( self.locale, "", SmartDayArrow(self.year, 3, 19).shift_to_weekday('monday', including=True), "Día de San José", "NRV") ]
def holiday_reyes(self): """First Monday after January 6.""" return [ Holiday( self.locale, "", SmartDayArrow(self.year, 1, 6).shift_to_weekday('monday', including=True), "Día de los Reyes Magos", "NRV") ]
def holiday_patriot_s_day(self): return [Holiday( locale=self.locale, region='QC', date=SmartDayArrow(self.year, 5, 25).shift_to_weekday( 'monday', order=1, reverse=True, including=False), description="National Patriots' Day", flags="V", notes="")]
def holiday_san_pedro_san_pablo(self): """First Monday after June 29.""" return [ Holiday( self.locale, "", SmartDayArrow(self.year, 6, 29).shift_to_weekday('monday', including=True), "San Pedro y San Pablo", "NRV") ]
def holiday_asuncion(self): """First Monday after August 15.""" return [ Holiday( self.locale, "", SmartDayArrow(self.year, 8, 15).shift_to_weekday('monday', including=True), "Asunción de la Virgen", "NRV") ]
def holiday_independencia_cartagena(self): """First Monday after November 11.""" return [ Holiday( self.locale, "", SmartDayArrow(self.year, 11, 11).shift_to_weekday('monday', including=True), "Independencia de Cartagena", "NV") ]
def holiday_journee_nationale_des_patriotes(self): return [Holiday( locale=self.locale, region='QC', date=SmartDayArrow(self.year, 5, 25).shift_to_weekday( 'monday', order=1, reverse=True, including=False), description="Journée Nationale des Patriotes", flags="V", notes="")]
def holiday_todos_santos(self): """First Monday after November 1.""" return [ Holiday( self.locale, "", SmartDayArrow(self.year, 11, 1).shift_to_weekday('monday', including=True), "Todos los Santos", "NRV") ]
def holiday_dia_raza(self): """First Monday after October 12.""" return [ Holiday( self.locale, "", SmartDayArrow(self.year, 10, 12).shift_to_weekday('monday', including=True), "Día de la Raza", "NV") ]
def holiday_buss_und_bettag(self): """11 days before 4. sunday before 12-25: [NRV] Buß- und Bettag""" return [Holiday( self.locale, "SN", SmartDayArrow(self.year, 12, 25).shift_to_weekday('sunday', order=4, reverse=True).shift(days=-11), "Buß- und Bettag", "NRV" )]
def holiday_dan_sjecanja_na_zrtve_domovinskog_rata_i_dan_sjecanja_na_zrtvu_vukovara_i_skabrnje( self): if self.year >= 2020: return [ Holiday( self.locale, "", SmartDayArrow(self.year, 11, 18), "Dan sjećanja na žrtve Domovinskog rata i Dan sjećanja na žrtvu Vukovara i Škabrnje", "NF") ] else: return []
def holiday_fete_de_la_reine_victoria(self): return [Holiday( locale=self.locale, region=region, date=SmartDayArrow(self.year, 5, 25).shift_to_weekday( 'monday', order=1, reverse=True, including=False), description="Fête de la Reine Victoria", flags="V", notes="" ) for region in ['AB', 'BC', 'MB', 'NS', 'ON', 'SK', 'NT', 'NU', 'YT'] ]
def holiday_royal_jubilees(self): """2012-06-05: Queen's Diamond Jubilee""" if self.year == 2012: return [Holiday( locale=self.locale, region="", date=SmartDayArrow(2012, 6, 5), description="Queen's Diamond Jubilee", flags="NV", notes="")] return []
def holiday_after_new_years_day(self): date = SmartDayArrow(self.year, 1, 2) if date.weekday() in ['sunday', 'monday']: return [ Holiday(locale=self.locale, region="", date=date.shift_to_weekday('tuesday', including=True), description="Day after New Year's Day", flags="NV", notes="") ] elif date.weekday() == 'saturday': return [ Holiday(locale=self.locale, region="", date=date.shift_to_weekday('monday', including=True), description="Day after New Year's Day", flags="NV", notes="") ] return [ Holiday(locale=self.locale, region="", date=date, description="Day after New Year's Day", flags="NV", notes="") ]
def holiday_pyhaeinpaeivae(self): """ Saturday between 31 October and 6 November: Pyhäinpäivä (All Saints' Day) """ return [ Holiday( self.locale, "", SmartDayArrow(self.year, 10, 30).shift_to_weekday('saturday', order=1, reverse=False), "Pyhäinpäivä", "NRV") ]
def holiday_midsommardagen(self): """ Saturday between 20 and 26 June: Midsommardagen """ return [ Holiday( self.locale, "", SmartDayArrow(self.year, 6, 19).shift_to_weekday('saturday', order=1, reverse=False), "Midsommardagen", "NRV") ]
def holiday_alla_helgons_dag(self): """ Saturday between 31 October and 6 November: Alla helgons dag (All Saints' Day) """ return [ Holiday( self.locale, "", SmartDayArrow(self.year, 10, 30).shift_to_weekday('saturday', order=1, reverse=False), "Alla helgons dag", "NRV") ]
def holiday_juhannuspaeivae(self): """ Saturday between 20 and 26 June: Juhannuspäivä (Midsummer Day) """ return [ Holiday( self.locale, "", SmartDayArrow(self.year, 6, 19).shift_to_weekday('saturday', order=1, reverse=False), "Juhannuspäivä", "NRV") ]
def holiday_den_boje_za_svobodu_a_demokracii_a_mezinarodni_den_studentstva( self): """ 11-17: [NF] before 2019-04-01: Den boje za svobodu a demokracii before 2019-04-01: Den boje za svobodu a demokracii a Mezinárodní den studentstva """ if self.year < 2019: name = "Den boje za svobodu a demokracii" else: name = "Den boje za svobodu a demokracii a Mezinárodní den studentstva" return [ Holiday(self.locale, "", SmartDayArrow(self.year, 11, 17), name, "NF") ]
def holiday_first_day_of_summer(self): """ Calculate sumardagurinn fyrsti (first day of summer). The holiday falls on the first Thursday after the 18th of April. """ return [ Holiday( locale=self.locale, region="", date=SmartDayArrow(self.year, 4, 18).shift_to_weekday("thursday"), description="Sumardagurinn fyrsti", flags="NV", notes="", ) ]
def holiday_tag_der_befreiung(self): """ 2020-05-08: [BE] [NF] 75. Jahrestag der Befreiung vom Nationalsozialismus und der Beendigung des Zweiten Weltkrieges in Europa Introduced 2019 for Berlin http://gesetze.berlin.de/jportal/?quelle=jlink&query=FeiertG+BE+%C2%A7+1&psml=bsbeprod.psml&max=true """ if self.year == 2020: return [Holiday( self.locale, "BE", SmartDayArrow(self.year, 5, 8), "75. Jahrestag der Befreiung vom Nationalsozialismus und der Beendigung des Zweiten Weltkrieges in Europa", "NF" )] else: return []
def holiday_frauentag(self): """ 03-08: [BE] [NF] Frauentag Introduced 2019 for Berlin http://gesetze.berlin.de/jportal/?quelle=jlink&query=FeiertG+BE+%C2%A7+1&psml=bsbeprod.psml&max=true """ if self.year >= 2019: return [Holiday( self.locale, "BE", SmartDayArrow(self.year, 3, 8), "Internationaler Frauentag", "NF" )] else: return []
def holiday_spring_bank_holiday(self): """1. last monday in may: [NV] Spring Bank Holiday 2012: Moved to June 4, because of Queen’s Diamond Jubilee """ if self.year == 2012: date = SmartDayArrow(self.year, 6, 4) else: date = month_reference(self.year, "may", first=False) \ .shift_to_weekday("monday", order=1, reverse=True, including=True) return [Holiday( locale=self.locale, region="", date=date, description="Spring Bank Holiday", flags="NV", notes="")]
def holiday_reformationstag(self): """ 10-31: [NRF] Reformationstag before 2018: [BB, MV, SN, ST, TH] since 2018: [BB, BH, HH, MV, NI, SH, SN, ST, TH] 2017: national holiday because of 500th anniversary """ if self.year == 2017: regions = [""] elif self.year < 2018: regions = ["BB", "MV", "SN", "ST", "TH"] else: regions = ["BB", "BH", "HH", "MV", "NI", "SH", "SN", "ST", "TH"] return [Holiday( self.locale, region, SmartDayArrow(self.year, 10, 31), "Reformationstag", "NRF" ) for region in regions]
def holiday_koningsdag(self): """04-27 or saturday before if it falls on sunday: [NF] Koninginnedag/Koningsdag """ if self.year < 2014: date = SmartDayArrow(self.year, 4, 30) description = "Koninginnedag" else: date = SmartDayArrow(self.year, 4, 27) description = "Koningsdag" if date.weekday() == 'sunday': date = date.shift(days=-1) return [Holiday( locale=self.locale, region="", date=date, description=description, flags="NV", notes="")]