From 4615b57fc26bb530f75751c3c449fcd03c2cc2db Mon Sep 17 00:00:00 2001 From: Thomas Wiecki Date: Thu, 18 Sep 2014 16:18:55 +0200 Subject: [PATCH] MAINT: Add custom exception for incompatible history frequency specification. --- tests/test_history.py | 3 ++- zipline/errors.py | 10 ++++++++++ zipline/history/history.py | 4 ++-- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/tests/test_history.py b/tests/test_history.py index 968d9014..27f64c63 100644 --- a/tests/test_history.py +++ b/tests/test_history.py @@ -26,6 +26,7 @@ from zipline.protocol import BarData import zipline.utils.factory as factory from zipline import TradingAlgorithm from zipline.finance.trading import SimulationParameters, TradingEnvironment +from zipline.errors import IncompatibleHistoryFrequency from zipline.sources import RandomWalkSource, DataFrameSource @@ -412,7 +413,7 @@ def handle_data(context, data): sim_params = factory.create_simulation_parameters( start=start, end=end) - with self.assertRaises(ValueError): + with self.assertRaises(IncompatibleHistoryFrequency): TradingAlgorithm( script=algo_text, data_frequency='daily', diff --git a/zipline/errors.py b/zipline/errors.py index 4d92706d..cb44c059 100644 --- a/zipline/errors.py +++ b/zipline/errors.py @@ -159,3 +159,13 @@ class TradingControlViolation(ZiplineError): msg = """ Order for {amount} shares of {sid} violates trading constraint {constraint}. """.strip() + + +class IncompatibleHistoryFrequency(ZiplineError): + """ + Raised when a frequency is given to history which is not supported. + At least, not yet. + """ + msg = """ +Minute history requires minute frequency input data. +Either use daily history or provide minute frequency data.""".strip() diff --git a/zipline/history/history.py b/zipline/history/history.py index 87982219..d2b2ef7f 100644 --- a/zipline/history/history.py +++ b/zipline/history/history.py @@ -20,6 +20,7 @@ import pandas as pd import re from zipline.finance import trading +from zipline.errors import IncompatibleHistoryFrequency def parse_freq_str(freq_str): @@ -248,8 +249,7 @@ class HistorySpec(object): if isinstance(frequency, str): frequency = Frequency(frequency, daily_at_midnight) if frequency.unit_str == 'm' and data_frequency == 'daily': - raise ValueError('Minute history requires minute frequency input data.\ -Either use daily history or provide minute frequency data.') + raise IncompatibleHistoryFrequency() # The frequency at which the data is sampled. self.frequency = frequency