def test_special_holidays(name, kwargs): base_date = [datetime(2012, 5, 28)] holiday = Holiday(name, **kwargs) start_date = datetime(2011, 1, 1) end_date = datetime(2020, 12, 31) assert base_date == holiday.dates(start_date, end_date)
class MyBirthdayCalendar(AbstractHolidayCalendar): rules = [ Holiday('My Birthday', month=7, day=6, observance=nearest_workday), Holiday('Dada' 's Birthday', month=7, day=8, observance=nearest_workday) ]
def test_special_holidays(self): base_date = [datetime(2012, 5, 28)] holiday_1 = Holiday('One-Time', year=2012, month=5, day=28) holiday_2 = Holiday('Range', month=5, day=28, start_date=datetime(2012, 1, 1), end_date=datetime(2012, 12, 31), offset=DateOffset(weekday=MO(1))) assert base_date == holiday_1.dates(self.start_date, self.end_date) assert base_date == holiday_2.dates(self.start_date, self.end_date)
class MyCalendar(AbstractHolidayCalendar): rules = [ Holiday('NewYearsDay', month=1, day=1, observance=nearest_workday), USMemorialDay, Holiday('USIndependenceDay', month=7, day=4, observance=nearest_workday), USLaborDay, USThanksgivingDay, Holiday('Christmas', month=12, day=25, observance=nearest_workday) ]
class USTradingCalendar(AbstractHolidayCalendar): rules = [ Holiday('NewYearsDay', month=1, day=1, observance=nearest_workday), USMartinLutherKingJr, USPresidentsDay, GoodFriday, USMemorialDay, Holiday('USIndependenceDay', month=7, day=4, observance=nearest_workday), USLaborDay, USThanksgivingDay, Holiday('Christmas', month=12, day=25, observance=nearest_workday) ]
class UsaWvCalendar(AbstractHolidayCalendar): """ All the US and WV holidays my transit agencies may observe. """ rules = [ Holiday('New Years Day', month=1, day=1, observance=nearest_workday), USMartinLutherKingJr, USPresidentsDay, USMemorialDay, Holiday('July 4th', month=7, day=4, observance=nearest_workday), Holiday('Independence Day', month=7, day=4, observance=nearest_workday), USLaborDay, USColumbusDay, Holiday('Veterans Day', month=11, day=11, observance=nearest_workday), USThanksgivingDay, Holiday('Day After Thanksgiving Day', month=11, day=1, offset=DateOffset(weekday=FR(4))), Holiday('Christmas', month=12, day=25, observance=nearest_workday), GoodFriday, EasterMonday, Holiday('US Election Day', month=11, day=1, observance=election_observance), Holiday('WV Primary Election Day', month=5, day=1, observance=election_observance), Holiday('WV Day', month=6, day=20), #Holiday('Canada Thanksgiving Day', month=10, offset=DateOffset(weekday=MO(2))), ]
class FrBusinessCalendar(AbstractHolidayCalendar): """ - 1 Janvier: Jour de l'an - Lundi de pâque (Monday after Easter Sunday) - 1 Mai: Fête du travail - 8 Mai: Victoire des alliés 1954 - Jeudi de l'Ascension (Thursday, 39 days after Easter Sunday) - 14 Juillet: Fếte nationale - 15 Août: Assomption - 1 Novembre: Toussaint - 11 Novembre: Armistice - 25 Décembre: Noël """ rules = [ Holiday("Jour de l'an", month=1, day=1), EasterMonday, Holiday('Fête du travail', month=5, day=1), Holiday('Victoire des alliés 1954', month=5, day=8), Holiday("Jeudi de l'Ascension", month=1, day=1, offset=[Easter(), Day(39)]), Holiday('Fếte nationale', month=7, day=14), Holiday('Assomption', month=8, day=15), Holiday('Toussaint', month=11, day=1), Holiday('Armistice 1918', month=11, day=11), Holiday('Noël', month=12, day=25) ]
class custom_calendar(AbstractHolidayCalendar): new_rules = [ Holiday('Halloween', month=10, day=31), Holiday('Christmas Eve', month=12, day=24), Holiday('New Years Eve', month=12, day=31), Holiday('DST time change', month=3, day=1, offset=pd.DateOffset(weekday=SU(2))) ] rules = calendar().rules + new_rules
class trading_calendar(AbstractHolidayCalendar): rules = [ Holiday('New Years Day', month=1, day=1, observance=nearest_workday), USMartinLutherKingJr, USPresidentsDay, GoodFriday, Holiday('MemorialDay', month=5, day=25, offset=pd.DateOffset(weekday=MO(1))), Holiday('July 4th', month=7, day=4, observance=nearest_workday), USLaborDay, USThanksgivingDay, Holiday('Christmas', month=12, day=25, observance=nearest_workday)]
class RussianHolidayCalendar(AbstractHolidayCalendar): rules = [ Holiday("New Year", month=1, day=1), Holiday("New Year", month=1, day=2), Holiday("New Year", month=1, day=3), Holiday("New Year", month=1, day=4), Holiday("New Year", month=1, day=5), Holiday("New Year", month=1, day=6), Holiday("New Year", month=1, day=7), Holiday("Men's Day", month=2, day=23), Holiday("Women's Day", month=3, day=8), ]
def test_calendar_caching(self): # Test for issue #9552 class TestCalendar(AbstractHolidayCalendar): def __init__(self, name=None, rules=None): super(TestCalendar, self).__init__(name=name, rules=rules) jan1 = TestCalendar(rules=[Holiday('jan1', year=2015, month=1, day=1)]) jan2 = TestCalendar(rules=[Holiday('jan2', year=2015, month=1, day=2)]) tm.assert_index_equal(jan1.holidays(), DatetimeIndex(['01-Jan-2015'])) tm.assert_index_equal(jan2.holidays(), DatetimeIndex(['02-Jan-2015']))
def test_calendar_caching(): # see gh-9552. class TestCalendar(AbstractHolidayCalendar): def __init__(self, name=None, rules=None): super().__init__(name=name, rules=rules) jan1 = TestCalendar(rules=[Holiday("jan1", year=2015, month=1, day=1)]) jan2 = TestCalendar(rules=[Holiday("jan2", year=2015, month=1, day=2)]) # Getting holidays for Jan 1 should not alter results for Jan 2. tm.assert_index_equal(jan1.holidays(), DatetimeIndex(["01-Jan-2015"])) tm.assert_index_equal(jan2.holidays(), DatetimeIndex(["02-Jan-2015"]))
class USHolidayCalendar(AbstractHolidayCalendar): rules = [ Holiday('NewYearsDay', month=1, day=1, observance=nearest_workday), USMartinLutherKingJr, USPresidentsDay, USMemorialDay, Holiday('USIndependenceDay', month=7, day=4, observance=nearest_workday), USLaborDay, USThanksgivingDay, Holiday('DayAfterThanksgiving', month=11, day=1, offset=[DateOffset(weekday=TH(4)), DateOffset(1)]), Holiday('ChristmasEve', month=12, day=24, observance=previous_friday), Holiday('Christmas', month=12, day=25, observance=next_monday) ]
class USBusinessHolidayCalendar(AbstractHolidayCalendar): """ A US Holiday calendar with adjustments for Corporate-Honored Holidays. """ rules = [ Holiday('New Years Day', month=1, day=1), Holiday('New Years Day Observed', month=1, day=1, observance=nearest_workday), USMartinLutherKingJr, USPresidentsDay, USMemorialDay, Holiday('July 4th', month=7, day=4), Holiday('July 4th Observed', month=7, day=4, observance=nearest_workday), USLaborDay, USColumbusDay, Holiday('Veterans Day', month=11, day=11), Holiday('Veterans Day Observed', month=11, day=11, observance=nearest_workday), USThanksgivingDay, Holiday('Christmas', month=12, day=25), Holiday('Christmas Observed', month=12, day=25, observance=nearest_workday), ]
class USTradingCalendar(AbstractHolidayCalendar): """ This may not be constant. This is the Stock Exchange Holidays (not the US Bank Holidays) """ rules = [ Holiday('NewYearsDay', month=1, day=1, observance=nearest_workday), USMartinLutherKingJr, USPresidentsDay, GoodFriday, USMemorialDay, Holiday('USIndependenceDay', month=7, day=4, observance=nearest_workday), USLaborDay, USThanksgivingDay, Holiday('Christmas', month=12, day=25, observance=nearest_workday) ]
class NERCHolidayCalendar(AbstractHolidayCalendar): """ Creates a custom holiday calendar based on NERC schedule. Defined at https://www.nerc.com/comm/OC/RS%20Agendas%20Highlights%20and%20Minutes%20DL/Additional_Off-peak_Days.pdf """ rules = [ Holiday('NewYearsDay', month=1, day=1, observance=sunday_to_monday), USMemorialDay, Holiday('USIndependenceDay', month=7, day=4, observance=sunday_to_monday), USLaborDay, USThanksgivingDay, Holiday('Christmas', month=12, day=25, observance=sunday_to_monday) ]
class EsBusinessCalendar(AbstractHolidayCalendar): rules = [ Holiday('Año Nuevo', month=1, day=1, observance=sunday_to_monday), Holiday('Epifanía del Señor', month=1, day=6, observance=sunday_to_monday), Holiday('Viernes Santo', month=1, day=1, offset=[Easter(), Day(-2)]), Holiday('Día del Trabajador', month=5, day=1, observance=sunday_to_monday), Holiday('Asunción de la Virgen', month=8, day=15, observance=sunday_to_monday), Holiday('Día de la Hispanidad', month=10, day=12, observance=sunday_to_monday), #Holiday('Todos los Santos', month=11, day=1, observance=sunday_to_monday), #Holiday('Día Constitución', month=12, day=6, observance=sunday_to_monday), Holiday('Inmaculada Concepción', month=12, day=8, observance=sunday_to_monday), Holiday('Navidad', month=12, day=25, observance=sunday_to_monday) ] def __init__(self, extra_rules): self.rules.extend(extra_rules)
def test_special_holidays(self): base_date = [datetime(2012, 5, 28)] holiday_1 = Holiday("One-Time", year=2012, month=5, day=28) holiday_2 = Holiday( "Range", month=5, day=28, start_date=datetime(2012, 1, 1), end_date=datetime(2012, 12, 31), offset=DateOffset(weekday=MO(1)), ) self.assertEqual(base_date, holiday_1.dates(self.start_date, self.end_date)) self.assertEqual(base_date, holiday_2.dates(self.start_date, self.end_date))
def test_non_observed_holiday(self): july_3rd = Holiday('July 4th Eve', month=7, day=3) result = july_3rd.dates("2001-01-01", "2003-03-03") expected = [Timestamp('2001-07-03 00:00:00'), Timestamp('2002-07-03 00:00:00')] self.assertEqual(list(result), expected) july_3rd = Holiday('July 4th Eve', month=7, day=3, days_of_week=(0, 1, 2, 3)) result = july_3rd.dates("2001-01-01", "2008-03-03") expected = [Timestamp('2001-07-03 00:00:00'), Timestamp('2002-07-03 00:00:00'), Timestamp('2003-07-03 00:00:00'), Timestamp('2006-07-03 00:00:00'), Timestamp('2007-07-03 00:00:00')] self.assertEqual(list(result), expected)
class USTradingCalendar(AbstractHolidayCalendar): """ The US trading day calendar behind the function :py:func:`tradedays`. """ rules = [ Holiday("NewYearsDay", month=1, day=1, observance=nearest_workday), USMartinLutherKingJr, USPresidentsDay, GoodFriday, USMemorialDay, Holiday("USIndependenceDay", month=7, day=4, observance=nearest_workday), USLaborDay, USThanksgivingDay, Holiday("Christmas", month=12, day=25, observance=nearest_workday), ]
class USTradingCalendar(AbstractHolidayCalendar): rules = [ Holiday('NewYearsDay', month=1, day=1, observance=nearest_workday), USMartinLutherKingJr, USPresidentsDay, GoodFriday, USMemorialDay, Holiday('USIndependenceDay', month=7, day=4, observance=nearest_workday), USLaborDay, USThanksgivingDay, Holiday('Christmas', month=12, day=25, observance=nearest_workday) ] LOCALTIME = pytz.timezone('US/Eastern') # unix time 0 epoch = datetime.datetime.utcfromtimestamp(0) # startdate, enddate format is 'YYYY-MM-DD' @staticmethod def get_trading_close_holidays(startdate: str, enddate: str): inst = USTradingCalendar() return inst.holidays(pd.to_datetime(startdate, format='%Y-%m-%d'), pd.to_datetime(enddate, format='%Y-%m-%d')) # date format is 'YYYY-MM-DD' @staticmethod def is_dst(date: str): _date = pd.to_datetime(date, format='%Y-%m-%d') _date = USTradingCalendar.LOCALTIME.localize(_date) return bool(_date.dst()) # Convert datetime object to unix epoch nanoseconds # @param dt The datetime object to convert # @return Unix epoch nanoseconds form (as float) @staticmethod def unix_time_nanos(dt): return (dt - USTradingCalendar.epoch).total_seconds() * 1000000000.0 # Convert unix epoch nanoseconds to datetime object # @param timestamp The unix epoch nanoseconds to convert # @return Equivalent datetime object @staticmethod def unix_time_nanos_to_datetime(unix_time): return datetime.datetime.fromtimestamp((unix_time / 1000000000.0), USTradingCalendar.LOCALTIME)
def test_both_offset_observance_raises(): # see gh-10217 msg = "Cannot use both offset and observance" with pytest.raises(NotImplementedError, match=msg): Holiday("Cyber Monday", month=11, day=1, offset=[DateOffset(weekday=SA(4))], observance=next_monday)
def test_both_offset_observance_raises(self): with self.assertRaises(NotImplementedError): Holiday("Cyber Monday", month=11, day=1, offset=[DateOffset(weekday=SA(4))], observance=next_monday)
class myBirthDayCalendar(AbstractHolidayCalendar): """ my calendar """ rules = [ Holiday('Joaco"s birthday', month=7, day=4) ]
class SCE_Holidays(AbstractHolidayCalendar): """ Southern California Edison Holidays from the tariff- TOU-GS-2 """ rules = [ Holiday('New Years Day', month=1, day=1, observance=sunday_to_monday), USPresidentsDay, USMemorialDay, Holiday('July 4th', month=7, day=4, observance=sunday_to_monday), USLaborDay, Holiday('Veterans Day', month=11, day=11, observance=sunday_to_monday), USThanksgivingDay, Holiday('Christmas', month=12, day=25, observance=sunday_to_monday) ]
class KRTradingCalendar(AbstractHolidayCalendar): rules = [ Holiday(holiday[2], year=int(holiday[0]), month=int(holiday[1]), day=int(holiday[2])) for holiday in holidays ]
class RussianBusinessCalendar(AbstractHolidayCalendar): start_date = datetime.datetime(1999, 1, 1) end_date = datetime.datetime(2019, 12, 31) rules = [ Holiday(name='Russian Day Off', year=d.year, month=d.month, day=d.day) for d in holidays_from_prom_calendar['holidays'] ]
def load_standard_holidays(): """ Load in a list of standard holidays """ holidays = [ USMartinLutherKingJr, USMemorialDay, Holiday('July4', month=7, day=4), USLaborDay, # Holiday('Thanksgiving_1DB', month=11, day=1, offset=pd.DateOffset(weekday=WE(4))), USThanksgivingDay, # Holiday('Christmas_1DB', month=12, day=24), Holiday('Christmas', month=12, day=25), Holiday('New_Years_Eve', month=12, day=31), ] return holidays
class USTradingCalendar(AbstractHolidayCalendar): """ !@brief This class is representing a US Calendar standard includes holidays. @param self """ rules = [ Holiday('NewYearsDay', month=1, day=1, observance=nearest_workday), USMartinLutherKingJr, USPresidentsDay, GoodFriday, USMemorialDay, Holiday('USIndependenceDay', month=7, day=4, observance=nearest_workday), USLaborDay, USThanksgivingDay, Holiday('Christmas', month=12, day=25, observance=nearest_workday) ]
class USHolidayCalendar(AbstractHolidayCalendar): """ A US Holiday calendar to denote special days that don't affect working days. """ rules = [ # Holiday('Superbowl Sunday', month=2, day=1, observance=nearest_future('sunday')), Holiday('New Years Eve', month=12, day=31) ]
class MontrealHolidayCalendar(AbstractHolidayCalendar): rules = [ Holiday("New Year's Day", month=1, day=1, observance=next_monday), GoodFriday, EasterMonday, Holiday("Jour des Patriotes", month=5, day=24, offset=pd.DateOffset(weekday=MO(-1))), Holiday("St. Jean Baptiste", month=6, day=24, observance=nearest_workday), Holiday("Canada Day", month=7, day=1, observance=nearest_workday), Holiday("Labor Day", month=9, day=1, offset=pd.DateOffset(weekday=MO(1))), Holiday("Thanksgiving", month=10, day=1, offset=pd.DateOffset(weekday=MO(2))), Holiday("Christmas Day", month=12, day=25, observance=sunday_to_monday), ]
def midsummer_eve(start_date=None, end_date=None): return Holiday( "Midsummer Eve", month=6, day=19, offset=DateOffset(weekday=FR(1)), start_date=start_date, end_date=end_date, )
def corpus_christi(start_date=None, end_date=None): return Holiday( "Corpus Christi", month=1, day=1, offset=[Easter(), Day(60)], start_date=start_date, end_date=end_date, )
def whit_monday(start_date=None, end_date=None): return Holiday( "Whit Monday", month=1, day=1, offset=[Easter(), Day(50)], start_date=start_date, end_date=end_date, )