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`.
This commit is contained in:
Nathan Wolfe
2016-07-29 17:36:18 -04:00
parent ab9a899c5b
commit 0a196c7a69
2 changed files with 33 additions and 17 deletions
@@ -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
+3 -5
View File
@@ -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):