def test_discovery_day(self): nl_holidays = holidays.CA(prov="NL") yu_holidays = holidays.CA(prov="YU") for dt in [ date(1997, 6, 23), date(1999, 6, 21), date(2000, 6, 26), date(2010, 6, 21), date(2016, 6, 27), date(2020, 6, 22) ]: self.assertFalse(dt in self.holidays) self.assertTrue(dt in nl_holidays) self.assertFalse(dt in yu_holidays) for dt in [ date(1912, 8, 19), date(1999, 8, 16), date(2000, 8, 21), date(2006, 8, 21), date(2016, 8, 15), date(2020, 8, 17) ]: self.assertFalse(dt in self.holidays) self.assertFalse(dt in nl_holidays) self.assertTrue(dt in yu_holidays)
def test_discovery_day(self): nl_holidays = holidays.CA(prov="NL") yt_holidays = holidays.CA(prov="YT") for dt in [ date(1997, 6, 23), date(1999, 6, 21), date(2000, 6, 26), date(2010, 6, 21), date(2016, 6, 27), date(2020, 6, 22), ]: self.assertNotIn(dt, self.holidays) self.assertIn(dt, nl_holidays) self.assertNotIn(dt, yt_holidays) for dt in [ date(1912, 8, 19), date(1999, 8, 16), date(2000, 8, 21), date(2006, 8, 21), date(2016, 8, 15), date(2020, 8, 17), ]: self.assertNotIn(dt, self.holidays) self.assertNotIn(dt, nl_holidays) self.assertIn(dt, yt_holidays)
def last_business_day(start_date, country='NA'): ''' Purpose ------- return the latest date before start_date that is a trading day in country Parameters ---------- start_date : datetime or date object the starting point from which we get the trading day country : str, optional the country concerned. this has impact on holidays. the default is 'NA', which includes canada and usa. other examples include 'USD' or 'CAD' Returns ------- datetime object ''' relevant_years = [start_date.year - 1, start_date.year] if country == 'NA': relevant_holidays = holidays.CA(years=relevant_years) + holidays.US(years=relevant_years) elif country == 'CAD': relevant_holidays = holidays.CA(years=relevant_years) elif country == 'USD': relevant_holidays = holidays.US(years=relevant_years) date_inc = start_date while (date_inc in relevant_holidays) or (date_inc.weekday() >= 5): date_inc = date_inc - timedelta(days=1) return date_inc
def test_add(self): ca = holidays.CA() us = holidays.US() mx = holidays.MX() na = ca + (us + mx) self.assertFalse('2014-07-01' in us) self.assertTrue('2014-07-01' in ca) self.assertFalse('2014-07-04' in ca) self.assertTrue('2014-07-04' in us) self.assertTrue('2014-07-04' in ca + us) self.assertTrue('2014-07-04' in us + ca) self.assertTrue('2015-07-04' in ca + us) self.assertTrue('2015-07-04' in us + ca) self.assertTrue('2015-07-01' in ca + us) self.assertTrue('2015-07-01' in us + ca) self.assertTrue('2014-07-04' in na) self.assertTrue('2015-07-04' in na) self.assertTrue('2015-07-01' in na) self.assertTrue('2000-02-05' in na) self.assertEqual((ca + us).prov, 'ON') self.assertEqual((us + ca).prov, 'ON') ca = holidays.CA(years=[2014], expand=False) us = holidays.US(years=[2014, 2015], expand=True) self.assertFalse((ca + us).expand) self.assertTrue((us + ca).expand) self.assertEqual((ca + us).years, set([2014, 2015])) self.assertEqual((us + ca).years, set([2014, 2015])) na = holidays.CA() na += holidays.US() na += holidays.MX() self.assertTrue('2014-07-04' in na) self.assertTrue('2014-07-04' in na) self.assertTrue('2015-07-04' in na) self.assertTrue('2015-07-04' in na) self.assertTrue('2015-07-01' in na) self.assertTrue('2015-07-01' in na) self.assertTrue('2000-02-05' in na) self.assertEqual(na.prov, 'ON') na = holidays.CA() + holidays.US() na += holidays.MX() self.assertTrue('2014-07-04' in na) self.assertTrue('2014-07-04' in na) self.assertTrue('2015-07-04' in na) self.assertTrue('2015-07-04' in na) self.assertTrue('2015-07-01' in na) self.assertTrue('2015-07-01' in na) self.assertTrue('2000-02-05' in na) self.assertEqual(na.prov, 'ON') self.assertRaises(TypeError, lambda: holidays.US() + {}) na = ca + (us + mx) + ca + (mx + us + holidays.CA(prov='BC')) self.assertTrue('2000-02-05' in na) self.assertTrue('2014-02-10' in na) self.assertTrue('2014-02-17' in na) self.assertTrue('2014-07-04' in na)
def test_family_day(self): ab_holidays = holidays.CA(prov="AB") bc_holidays = holidays.CA(prov="BC") mb_holidays = holidays.CA(prov="MB") sk_holidays = holidays.CA(prov="SK") nb_holidays = holidays.CA(prov="NB") for dt in [ date(1990, 2, 19), date(1999, 2, 15), date(2000, 2, 21), date(2006, 2, 20), ]: self.assertNotIn(dt, self.holidays) self.assertIn(dt, ab_holidays) self.assertNotIn(dt, bc_holidays) self.assertNotIn(dt, mb_holidays) self.assertNotIn(dt, sk_holidays) dt = date(2007, 2, 19) self.assertNotIn(dt, self.holidays) self.assertIn(dt, ab_holidays) self.assertNotIn(dt, bc_holidays) self.assertNotIn(dt, mb_holidays) self.assertIn(dt, sk_holidays) for dt in [ date(2008, 2, 18), date(2012, 2, 20), date(2014, 2, 17), date(2018, 2, 19), ]: self.assertIn(dt, self.holidays) self.assertIn(dt, ab_holidays) self.assertNotIn(dt, bc_holidays) self.assertIn(dt, mb_holidays) self.assertIn(dt, sk_holidays) for dt in [date(2018, 2, 19)]: self.assertIn(dt, nb_holidays) for dt in [date(2019, 2, 18), date(2020, 2, 17)]: self.assertIn(dt, self.holidays) self.assertIn(dt, ab_holidays) self.assertIn(dt, bc_holidays) self.assertIn(dt, mb_holidays) self.assertIn(dt, sk_holidays) for dt in [date(2013, 2, 11), date(2016, 2, 8)]: self.assertNotIn(dt, self.holidays) self.assertNotIn(dt, ab_holidays) self.assertIn(dt, bc_holidays) self.assertNotIn(dt, mb_holidays) self.assertNotIn(dt, sk_holidays) self.assertEqual(mb_holidays[date(2014, 2, 17)], "Louis Riel Day")
def test_eq_ne(self): us1 = holidays.UnitedStates() us2 = holidays.US() us3 = holidays.UnitedStates(years=[2014]) us4 = holidays.US(years=[2014]) ca1 = holidays.Canada() ca2 = holidays.CA() ca3 = holidays.Canada(years=[2014]) ca4 = holidays.CA(years=[2014]) self.assertEqual(us1, us2) self.assertEqual(us3, us4) self.assertEqual(ca1, ca2) self.assertEqual(ca3, ca4) self.assertNotEqual(us1, us3) self.assertNotEqual(us1, ca1) self.assertNotEqual(us3, ca3)
def hour_string_processor(file_name): """ Retrieve data about the time, in hour, of the ottawa's collision record from a csv file. :param file_name: the file to retrieve data """ global total_record global total_valid_record times = [] with open(file_name, 'r') as readData: # r represent read model print("Start to read file: " + file_name + ". This may take a while...") file = csv.reader(readData) canada_holiday = holidays.CA() for row in file: if "COLLISION_ID" not in row[0]: hour = Hour() readDate = row[4] time = row[5] splited_date = readDate.split("-", 2) if len(splited_date) != 3: raise Exception("Invalid date format: " + row[6]) year = splited_date[0] month = splited_date[1] day = splited_date[2] day_of_week = date(int(year), int(month), int(day)).isoweekday() hour.day_of_week = day_of_week is_weekend = day_of_week == 6 or day_of_week == 7 time_period = time.split(" ", 1)[1] h = time.split(":", 1)[0] if "AM" in time_period: if int(h) > 12: raise Exception("Wrong time format: " + time) hour.hour_start = h + ":00:00" hour.hour_end = h + ":59:59" elif "PM" in time_period: if int(h) > 12: raise Exception("Wrong time format: " + time) h_pm = str((int(h) + 12)) if int(h_pm) == 24: h_pm = 0 hour.hour_start = str(h_pm) + ":00:00" hour.hour_end = str(h_pm) + ":59:59" else: raise Exception("Wrong time format: " + time) hour.date = readDate hour.day = day hour.month = month hour.year = year hour.weekend = is_weekend if readDate in canada_holiday: hour.holiday = True hour.holiday_name = canada_holiday.get(readDate) else: hour.holiday = False hour.holiday_name = "N/A" hour.hour_id = hour.date + hour.hour_start times.append(hour) return times
def to_valid_open_market_day(day: str): global date_format day = datetime.strptime(day, date_format) # if date is a weekend day or holiday, find closest week day while day.weekday() in [5, 6] or day in holidays.CA(): day = day - timedelta(days=1) return day.strftime(date_format)
def test_holidays(self): self.assertEqual(list(rrule(BDAILY, count=4, dtstart="2015-07-01")), [ datetime(2015, 7, 1, 0, 0), datetime(2015, 7, 2, 0, 0), datetime(2015, 7, 3, 0, 0), datetime(2015, 7, 6, 0, 0) ]) bdateutil.HOLIDAYS = holidays.US() self.assertEqual(list(rrule(BDAILY, count=4, dtstart="2015-07-01")), [ datetime(2015, 7, 1, 0, 0), datetime(2015, 7, 2, 0, 0), datetime(2015, 7, 6, 0, 0), datetime(2015, 7, 7, 0, 0) ]) self.assertEqual( list( rrule(BDAILY, count=4, dtstart="2015-07-01", holidays=holidays.CA())), [ datetime(2015, 7, 2, 0, 0), datetime(2015, 7, 3, 0, 0), datetime(2015, 7, 6, 0, 0), datetime(2015, 7, 7, 0, 0) ]) bdateutil.HOLIDAYS = []
def home(): if request.method == 'GET': return render_template('chat.html') elif request.method == 'POST': user = request.form['you'] if user == "let's ask": response = "Yeah!!! shoot your question...." elif user.find('iniya') == 0: response = wikipedia.summary(user[5:], sentences=1, auto_suggest=True, redirect=True) elif user.find('weather') == 0: location = weather.lookup_by_location(user[11:]) condition = location.condition() tem = (condition.temp()).encode('ascii', 'ignore') response = tem + " Celcsius" elif user.find('define') == 0: c = dictionary.meaning(user[6:]) response = c['Noun'][0] elif user == "crack a joke": response = pyjokes.get_joke() elif user.find("holidays") == 0: years = user[12:] d = holidays.CA(years=int(years)) response = "You have %d holidays in the year %d" % (len(d), int(years)) else: response = chatterbot.get_response(user) kwargs = { 'bot': response, } return render_template('chat.html', **kwargs)
def test_get_list(self): westland = holidays.NZ(prov="WTL") chathams = holidays.NZ(prov="CIT") wild = westland + chathams self.assertEqual( wild[date(1969, 12, 1)], ("Westland Anniversary Day, " + "Chatham Islands Anniversary Day"), ) self.assertEqual( wild.get_list(date(1969, 12, 1)), ["Westland Anniversary Day", "Chatham Islands Anniversary Day"], ) self.assertEqual(wild.get_list(date(1969, 1, 1)), ["New Year's Day"]) self.assertEqual(westland.get_list(date(1969, 12, 1)), ["Westland Anniversary Day"]) self.assertEqual(westland.get_list(date(1969, 1, 1)), ["New Year's Day"]) self.assertEqual( chathams.get_list(date(1969, 12, 1)), ["Chatham Islands Anniversary Day"], ) self.assertEqual(chathams.get_list(date(1969, 1, 1)), ["New Year's Day"]) ca = holidays.CA() us = holidays.US() mx = holidays.MX() na = ca + us + mx self.assertIn(date(1969, 12, 25), na) self.assertEqual( na.get_list(date(1969, 12, 25)), ["Christmas Day", "Navidad [Christmas]"], ) self.assertEqual(na.get_list(date(1969, 7, 1)), ["Dominion Day"]) self.assertEqual(na.get_list(date(1969, 1, 3)), [])
def test_remembrance_day(self): ab_holidays = holidays.CA(prov="AB", observed=False) nl_holidays = holidays.CA(prov="NL", observed=False) self.assertNotIn(date(1930, 11, 11), ab_holidays) self.assertNotIn(date(1930, 11, 11), nl_holidays) for year in range(1931, 2100): dt = date(year, 11, 11) self.assertNotIn(dt, self.holidays) self.assertIn(dt, ab_holidays) self.assertIn(dt, nl_holidays) self.assertNotIn(dt + relativedelta(days=-1), nl_holidays) self.assertNotIn(dt + relativedelta(days=+1), nl_holidays) self.assertNotIn(date(2007, 11, 12), ab_holidays) self.assertNotIn(date(2007, 11, 12), nl_holidays) ab_holidays.observed = True nl_holidays.observed = True self.assertNotIn(date(2007, 11, 12), ab_holidays) self.assertIn(date(2007, 11, 12), nl_holidays)
def test_national_aboriginal_day(self): nt_holidays = holidays.CA(prov="NT") self.assertNotIn(date(1995, 6, 21), nt_holidays) for year in range(1996, 2100): dt = date(year, 6, 21) self.assertNotIn(dt, self.holidays) self.assertIn(dt, nt_holidays) self.assertNotIn(dt + relativedelta(days=-1), nt_holidays) self.assertNotIn(dt + relativedelta(days=+1), nt_holidays)
def test_country(self): self.assertEqual(self.holidays.country, 'US') self.assertTrue(date(2014, 7, 4) in self.holidays) self.assertFalse(date(2014, 7, 1) in self.holidays) self.holidays = holidays.UnitedStates() self.assertEqual(self.holidays.country, 'US') self.assertTrue(date(2014, 7, 4) in self.holidays) self.assertFalse(date(2014, 7, 1) in self.holidays) self.assertEqual(self.holidays.country, 'US') self.holidays = holidays.CA() self.assertEqual(self.holidays.country, 'CA') self.assertEqual(self.holidays.prov, 'ON') self.assertTrue(date(2014, 7, 1) in self.holidays) self.assertFalse(date(2014, 7, 4) in self.holidays) self.holidays = holidays.CA(prov='BC') self.assertEqual(self.holidays.country, 'CA') self.assertEqual(self.holidays.prov, 'BC') self.assertTrue(date(2014, 7, 1) in self.holidays) self.assertFalse(date(2014, 7, 4) in self.holidays)
def test_country(self): self.assertEqual(self.holidays.country, "US") self.assertIn(date(2014, 7, 4), self.holidays) self.assertNotIn(date(2014, 7, 1), self.holidays) self.holidays = holidays.UnitedStates() self.assertEqual(self.holidays.country, "US") self.assertIn(date(2014, 7, 4), self.holidays) self.assertNotIn(date(2014, 7, 1), self.holidays) self.assertEqual(self.holidays.country, "US") self.holidays = holidays.CA() self.assertEqual(self.holidays.country, "CA") self.assertEqual(self.holidays.prov, "ON") self.assertIn(date(2014, 7, 1), self.holidays) self.assertNotIn(date(2014, 7, 4), self.holidays) self.holidays = holidays.CA(prov="BC") self.assertEqual(self.holidays.country, "CA") self.assertEqual(self.holidays.prov, "BC") self.assertIn(date(2014, 7, 1), self.holidays) self.assertNotIn(date(2014, 7, 4), self.holidays)
def test_family_day(self): ab_holidays = holidays.CA(prov="AB") bc_holidays = holidays.CA(prov="BC") mb_holidays = holidays.CA(prov="MB") sk_holidays = holidays.CA(prov="SK") for dt in [ date(1990, 2, 19), date(1999, 2, 15), date(2000, 2, 21), date(2006, 2, 20) ]: self.assertFalse(dt in self.holidays) self.assertTrue(dt in ab_holidays) self.assertFalse(dt in bc_holidays) self.assertFalse(dt in mb_holidays) self.assertFalse(dt in sk_holidays) dt = date(2007, 2, 19) self.assertFalse(dt in self.holidays) self.assertTrue(dt in ab_holidays) self.assertFalse(dt in bc_holidays) self.assertFalse(dt in mb_holidays) self.assertTrue(dt in sk_holidays) for dt in [ date(2008, 2, 18), date(2012, 2, 20), date(2014, 2, 17), date(2018, 2, 19), date(2019, 2, 18), date(2020, 2, 17) ]: self.assertTrue(dt in self.holidays) self.assertTrue(dt in ab_holidays) self.assertFalse(dt in bc_holidays) self.assertTrue(dt in mb_holidays) self.assertTrue(dt in sk_holidays) for dt in [date(2013, 2, 11), date(2016, 2, 8), date(2020, 2, 10)]: self.assertFalse(dt in self.holidays) self.assertFalse(dt in ab_holidays) self.assertTrue(dt in bc_holidays) self.assertFalse(dt in mb_holidays) self.assertFalse(dt in sk_holidays) self.assertEqual(mb_holidays[date(2014, 2, 17)], "Louis Riel Day")
def check_holiday(self, *args): countries_holidays = holidays.CA(years=2021) countries_holidays += holidays.USA(years=2021) countries_holidays += holidays.BR(years=2021) countries_holidays += holidays.MW(years=2021) for e in args: dt = self.check_instance(e) if not dt: return False feriado = dt in countries_holidays return feriado
def test_st_jean_baptiste_day(self): qc_holidays = holidays.CA(prov="QC", observed=False) self.assertNotIn(date(1924, 6, 24), qc_holidays) for year in range(1925, 2100): dt = date(year, 6, 24) self.assertNotIn(dt, self.holidays) self.assertIn(dt, qc_holidays) self.assertNotIn(dt + relativedelta(days=-1), qc_holidays) self.assertNotIn(dt + relativedelta(days=+1), qc_holidays) self.assertNotIn(date(2001, 6, 25), qc_holidays) qc_holidays.observed = True self.assertIn(date(2001, 6, 25), qc_holidays)
def getholidays(self): ca_holidays = [] for date, name in sorted( holidays.CA(prov='BC', years=datetime.today().year).items()): ca_holidays.append(date.strftime(self.__getdefaultdateformat())) if 'FOI_ADDITIONAL_HOLIDAYS' in os.environ and os.getenv( 'FOI_ADDITIONAL_HOLIDAYS') != '': _addldays = os.getenv('FOI_ADDITIONAL_HOLIDAYS') for _addlday in _addldays.split(","): ca_holidays.append(_addlday.strip().replace( 'XXXX', str(datetime.today().year))) return ca_holidays
def test_st_georges_day(self): nl_holidays = holidays.CA(prov="NL") for dt in [ date(1990, 4, 23), date(1999, 4, 26), date(2010, 4, 19), date(2016, 4, 25), date(2020, 4, 20), ]: self.assertNotIn(dt, self.holidays) self.assertIn(dt, nl_holidays) self.assertNotIn(dt + relativedelta(days=-1), nl_holidays) self.assertNotIn(dt + relativedelta(days=+1), nl_holidays)
def test_thanksgiving(self): ns_holidays = holidays.CA(prov="NB") for dt in [ date(1931, 10, 12), date(1990, 10, 8), date(1999, 10, 11), date(2000, 10, 9), date(2013, 10, 14), date(2020, 10, 12), ]: self.assertIn(dt, self.holidays) self.assertNotIn(dt + relativedelta(days=-1), self.holidays) self.assertNotIn(dt + relativedelta(days=+1), self.holidays) self.assertNotIn(dt, ns_holidays)
def test_st_georges_day(self): nl_holidays = holidays.CA(prov="NL") for dt in [ date(1990, 4, 23), date(1999, 4, 26), date(2000, 4, 24), date(2010, 4, 19), date(2016, 4, 25), date(2020, 4, 20) ]: self.assertFalse(dt in self.holidays) self.assertTrue(dt in nl_holidays) self.assertFalse(dt + relativedelta(days=-1) in nl_holidays) self.assertFalse(dt + relativedelta(days=+1) in nl_holidays)
def test_nunavut_day(self): nu_holidays = holidays.CA(prov="NU", observed=False) self.assertNotIn(date(1999, 7, 9), nu_holidays) self.assertNotIn(date(2000, 7, 9), nu_holidays) self.assertIn(date(2000, 4, 1), nu_holidays) for year in range(2001, 2100): dt = date(year, 7, 9) self.assertNotIn(dt, self.holidays) self.assertIn(dt, nu_holidays) self.assertNotIn(dt + relativedelta(days=-1), nu_holidays) self.assertNotIn(dt + relativedelta(days=+1), nu_holidays) self.assertNotIn(date(2017, 7, 10), nu_holidays) nu_holidays.observed = True self.assertIn(date(2017, 7, 10), nu_holidays)
def test_civic_holiday(self): bc_holidays = holidays.CA(prov="BC") for dt in [date(1900, 8, 6), date(1955, 8, 1), date(1973, 8, 6)]: self.assertIn(dt, self.holidays) self.assertNotIn(dt, bc_holidays) for dt in [ date(1974, 8, 5), date(1999, 8, 2), date(2000, 8, 7), date(2010, 8, 2), date(2015, 8, 3), date(2020, 8, 3), ]: self.assertIn(dt, self.holidays) self.assertIn(dt, bc_holidays)
def test_isbday(self): self.assertFalse(isbday(date(2014, 1, 4))) self.assertFalse(isbday("2014-01-04")) self.assertTrue(isbday(date(2014, 1, 1))) self.assertTrue(isbday("2014-01-01")) self.assertFalse(isbday(date(2014, 1, 1), holidays=holidays.US())) self.assertTrue(isbday(datetime(2014, 1, 1, 16, 30))) self.assertTrue(isbday(datetime(2014, 1, 1, 17, 30))) self.assertFalse( isbday(datetime(2014, 1, 1, 16, 30), holidays=holidays.US())) self.assertFalse( isbday(datetime(2014, 1, 1, 17, 30), holidays=holidays.US())) isbday.holidays = holidays.US() self.assertFalse(isbday(date(2014, 1, 1))) self.assertFalse(isbday(date(2014, 7, 4))) self.assertTrue(isbday(date(2014, 7, 4), holidays=holidays.CA()))
def test_good_friday(self): qc_holidays = holidays.CA(prov="QC") for dt in [ date(1900, 4, 13), date(1901, 4, 5), date(1902, 3, 28), date(1999, 4, 2), date(2000, 4, 21), date(2010, 4, 2), date(2018, 3, 30), date(2019, 4, 19), date(2020, 4, 10), ]: self.assertIn(dt, self.holidays) self.assertNotIn(dt + relativedelta(days=-1), self.holidays) self.assertNotIn(dt + relativedelta(days=+1), self.holidays) self.assertNotIn(dt, qc_holidays)
def test_st_patricks_day(self): nl_holidays = holidays.CA(prov="NL", observed=False) for dt in [ date(1900, 3, 19), date(1999, 3, 15), date(2000, 3, 20), date(2012, 3, 19), date(2013, 3, 18), date(2014, 3, 17), date(2015, 3, 16), date(2016, 3, 14), date(2020, 3, 16), ]: self.assertNotIn(dt, self.holidays) self.assertIn(dt, nl_holidays) self.assertNotIn(dt + relativedelta(days=-1), nl_holidays) self.assertNotIn(dt + relativedelta(days=+1), nl_holidays)
def test_easter_monday(self): qc_holidays = holidays.CA(prov="QC") for dt in [ date(1900, 4, 16), date(1901, 4, 8), date(1902, 3, 31), date(1999, 4, 5), date(2000, 4, 24), date(2010, 4, 5), date(2018, 4, 2), date(2019, 4, 22), date(2020, 4, 13), ]: self.assertNotIn(dt, self.holidays) self.assertIn(dt, qc_holidays) self.assertNotIn(dt + relativedelta(days=-1), qc_holidays) self.assertNotIn(dt + relativedelta(days=+1), qc_holidays)
def make_out_of_sample_df(past_data, model, periods=24 * 30): """ Sample function to create a dataframe with predicted values for the regressors using STL and ARIMA Likely does not run very efficiently. Reference: https://www.statsmodels.org/stable/examples/notebooks/generated/stl_decomposition.html#Forecasting-with-STL ---------- Input - past_data: data used ing training Prophet model - model: trained model of the Prophet class. Returns - A panda dataframe with predicted values for regressors to use for forecasting """ future_time_df = model.make_future_dataframe(periods=periods, freq="H", include_history=False) # Creating dummy for working days canada_holidays = holidays.CA() future_time_df["holiday"] = [ 1 if i.date() in canada_holidays else 0 for i in future_time_df["ds"] ] future_time_df["workingday"] = future_time_df.apply(lambda row: 0 if row[ "holiday"] == 1 or row["ds"].weekday in ['Saturday', 'Sunday'] else 1, axis=1) future_time_df.drop(columns=["holiday"], inplace=True) # Create predictions for future values of continuous regressors non_binary_regressors = [ "Calgary_temp.1_hour_lag", "Edmonton_temp.1_hour_lag", "FortMM_temp.1_hour_lag", "Lethbridge_temp.1_hour_lag", "future 1", "WTI spot" ] past_data_copy = past_data.drop(columns=["y"]).set_index("ds") past_data_copy.index.freq = "H" for var in non_binary_regressors: var_forecast = STLForecast(past_data_copy[var], ARIMA, model_kwargs=dict(order=(1, 1, 0), trend="t")).fit() future_time_df[var] = var_forecast.forecast(periods) future_time_df.reset_index(inplace=True) return future_time_df
def test_islander_day(self): pei_holidays = holidays.CA(prov="PE") for dt in [ date(2009, 2, 9), date(2010, 2, 15), date(2011, 2, 21), date(2012, 2, 20), date(2013, 2, 18), date(2014, 2, 17), date(2015, 2, 16), date(2016, 2, 15), date(2020, 2, 17), ]: if dt.year >= 2010: self.assertNotEqual(self.holidays[dt], "Islander Day") elif dt.year == 2009: self.assertNotIn(dt, self.holidays) self.assertIn(dt, pei_holidays) self.assertNotIn(dt + relativedelta(days=-1), pei_holidays) self.assertNotIn(dt + relativedelta(days=+1), pei_holidays)