From 0a196c7a693013a581009c3b52ebe74ab211f7fe Mon Sep 17 00:00:00 2001 From: Nathan Wolfe Date: Mon, 25 Jul 2016 12:53:46 -0400 Subject: [PATCH] MAINT: Correct PanelBarReader sessions property, expand test `tests/test_panel_daily_bar_reader.py` expanded to cover minute frequency as well, using the same tests. Renamed to `test_panel_bar_reader.py`. --- ...bar_reader.py => test_panel_bar_reader.py} | 42 +++++++++++++------ zipline/data/us_equity_pricing.py | 8 ++-- 2 files changed, 33 insertions(+), 17 deletions(-) rename tests/{test_panel_daily_bar_reader.py => test_panel_bar_reader.py} (79%) diff --git a/tests/test_panel_daily_bar_reader.py b/tests/test_panel_bar_reader.py similarity index 79% rename from tests/test_panel_daily_bar_reader.py rename to tests/test_panel_bar_reader.py index 39590462..71c4c96b 100644 --- a/tests/test_panel_daily_bar_reader.py +++ b/tests/test_panel_bar_reader.py @@ -27,24 +27,20 @@ from zipline.testing.fixtures import ( from zipline.utils.calendars import get_calendar -class TestPanelDailyBarReader(WithAssetFinder, - ZiplineTestCase): - - START_DATE = pd.Timestamp('2006-01-03', tz='utc') - END_DATE = pd.Timestamp('2006-02-01', tz='utc') +class WithPanelBarReader(WithAssetFinder): @classmethod def init_class_fixtures(cls): - super(TestPanelDailyBarReader, cls).init_class_fixtures() + super(WithPanelBarReader, cls).init_class_fixtures() finder = cls.asset_finder trading_calendar = get_calendar('NYSE') items = finder.retrieve_all(finder.sids) - major_axis = trading_calendar.sessions_in_range( - cls.START_DATE, - cls.END_DATE - ) + major_axis = ( + trading_calendar.sessions_in_range if cls.FREQUENCY == 'daily' + else trading_calendar.minutes_for_sessions_in_range + )(cls.START_DATE, cls.END_DATE) minor_axis = ['open', 'high', 'low', 'close', 'volume'] shape = tuple(map(len, [items, major_axis, minor_axis])) @@ -57,7 +53,7 @@ class TestPanelDailyBarReader(WithAssetFinder, minor_axis=minor_axis, ) - cls.reader = PanelBarReader(trading_calendar, cls.panel, 'daily') + cls.reader = PanelBarReader(trading_calendar, cls.panel, cls.FREQUENCY) def test_spot_price(self): panel = self.panel @@ -97,6 +93,28 @@ class TestPanelDailyBarReader(WithAssetFinder, def test_sessions(self): sessions = self.reader.sessions - self.assertEqual(21, len(sessions)) + self.assertEqual(self.NUM_SESSIONS, len(sessions)) self.assertEqual(self.START_DATE, sessions[0]) self.assertEqual(self.END_DATE, sessions[-1]) + + +class TestPanelDailyBarReader(WithPanelBarReader, + ZiplineTestCase): + + FREQUENCY = 'daily' + + START_DATE = pd.Timestamp('2006-01-03', tz='utc') + END_DATE = pd.Timestamp('2006-02-01', tz='utc') + + NUM_SESSIONS = 21 + + +class TestPanelMinuteBarReader(WithPanelBarReader, + ZiplineTestCase): + + FREQUENCY = 'minute' + + START_DATE = pd.Timestamp('2015-12-23', tz='utc') + END_DATE = pd.Timestamp('2015-12-24', tz='utc') + + NUM_SESSIONS = 2 diff --git a/zipline/data/us_equity_pricing.py b/zipline/data/us_equity_pricing.py index b1b04680..9a05cabd 100644 --- a/zipline/data/us_equity_pricing.py +++ b/zipline/data/us_equity_pricing.py @@ -785,13 +785,13 @@ class PanelBarReader(DailyBarReader): panel.major_axis[-1] ) - self._sessions = trading_calendar.sessions_in_range( + self.sessions = trading_calendar.sessions_in_range( self.first_trading_day, last_trading_day ) if data_frequency == 'daily': - self._calendar = self._sessions + self._calendar = self.sessions elif data_frequency == 'minute': self._calendar = trading_calendar.minutes_for_sessions_in_range( self.first_trading_day, @@ -800,9 +800,7 @@ class PanelBarReader(DailyBarReader): self.panel = panel - @property - def sessions(self): - return self._calendar + sessions = None @property def last_available_dt(self):