From a8f2b704a216f73ab77e093f6e594c09efd148bf Mon Sep 17 00:00:00 2001 From: Andrew Daniels Date: Mon, 22 Aug 2016 17:45:07 -0400 Subject: [PATCH] BUG: Fixes BcolzMinuteBarMetadata to read the version correctly (#1425) We were mistakenly using the minute_per_day field. We now expose from the metadata object the version from which the metadata was read. This allows a new test that verifies the version is read correctly. --- tests/data/test_minute_bars.py | 8 ++++++++ zipline/data/minute_bars.py | 7 +++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/tests/data/test_minute_bars.py b/tests/data/test_minute_bars.py index 2da3be76..b15f16d7 100644 --- a/tests/data/test_minute_bars.py +++ b/tests/data/test_minute_bars.py @@ -36,6 +36,7 @@ from pandas import ( ) from zipline.data.minute_bars import ( + BcolzMinuteBarMetadata, BcolzMinuteBarWriter, BcolzMinuteBarReader, BcolzMinuteOverlappingData, @@ -88,6 +89,13 @@ class BcolzMinuteBarTestCase(WithTradingCalendars, ) self.reader = BcolzMinuteBarReader(self.dest) + def test_version(self): + metadata = self.reader._get_metadata() + self.assertEquals( + metadata.version, + BcolzMinuteBarMetadata.FORMAT_VERSION, + ) + def test_write_one_ohlcv(self): minute = self.market_opens[self.test_calendar_start] sid = 1 diff --git a/zipline/data/minute_bars.py b/zipline/data/minute_bars.py index 149f7e7d..de1e67d6 100644 --- a/zipline/data/minute_bars.py +++ b/zipline/data/minute_bars.py @@ -223,7 +223,7 @@ class BcolzMinuteBarMetadata(object): raw_data = json.load(fp) try: - version = raw_data['minutes_per_day'] + version = raw_data['version'] except KeyError: # Version was first written with version 1, assume 0, # if version does not match. @@ -260,6 +260,7 @@ class BcolzMinuteBarMetadata(object): start_session, end_session, minutes_per_day, + version=version, ) def __init__( @@ -269,12 +270,14 @@ class BcolzMinuteBarMetadata(object): start_session, end_session, minutes_per_day, + version=FORMAT_VERSION, ): self.calendar = calendar self.start_session = start_session self.end_session = end_session self.ohlc_ratio = ohlc_ratio self.minutes_per_day = minutes_per_day + self.version = version def write(self, rootdir): """ @@ -322,7 +325,7 @@ class BcolzMinuteBarMetadata(object): market_closes = schedule.market_close metadata = { - 'version': self.FORMAT_VERSION, + 'version': self.version, 'ohlc_ratio': self.ohlc_ratio, 'minutes_per_day': self.minutes_per_day, 'calendar_name': self.calendar.name,