diff --git a/tests/calendars/test_trading_calendar.py b/tests/calendars/test_trading_calendar.py index 1cbb0b3a..9f6ef675 100644 --- a/tests/calendars/test_trading_calendar.py +++ b/tests/calendars/test_trading_calendar.py @@ -670,6 +670,14 @@ class ExchangeCalendarTestBase(object): found_open, found_close = \ self.calendar.open_and_close_for_session(session_label) + # Test that the methods for just session open and close produce the + # same values as the method for getting both. + alt_open = self.calendar.session_open(session_label) + self.assertEqual(alt_open, found_open) + + alt_close = self.calendar.session_close(session_label) + self.assertEqual(alt_close, found_close) + self.assertEqual(open_answer, found_open) self.assertEqual(close_answer, found_close) diff --git a/zipline/utils/calendars/trading_calendar.py b/zipline/utils/calendars/trading_calendar.py index c98419fc..05a7b104 100644 --- a/zipline/utils/calendars/trading_calendar.py +++ b/zipline/utils/calendars/trading_calendar.py @@ -643,6 +643,18 @@ class TradingCalendar(with_metaclass(ABCMeta)): return (o_and_c['market_open'].tz_localize('UTC'), o_and_c['market_close'].tz_localize('UTC')) + def session_open(self, session_label): + return self.schedule.loc[ + session_label, + 'market_open' + ].tz_localize('UTC') + + def session_close(self, session_label): + return self.schedule.loc[ + session_label, + 'market_close' + ].tz_localize('UTC') + @property def all_sessions(self): return self.schedule.index