From d360b9d9bdd2da0ab731f7b6f0b66e7cc7036348 Mon Sep 17 00:00:00 2001 From: Joe Jevnik Date: Mon, 13 Oct 2014 16:10:54 -0400 Subject: [PATCH] ENH: Provides a more descriptive error if market_open or market_close are provided a non-keyword argument that is not a datetime.timedelta --- tests/utils/test_events.py | 5 +++++ zipline/utils/events.py | 4 +++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/tests/utils/test_events.py b/tests/utils/test_events.py index 2792ce49..7d8979f6 100644 --- a/tests/utils/test_events.py +++ b/tests/utils/test_events.py @@ -74,6 +74,11 @@ class TestUtils(TestCase): with self.assertRaises(ValueError): _build_offset(datetime.timedelta(minutes=1), {'minutes': 1}, None) + def test_build_offset_exc(self): + with self.assertRaises(TypeError): + # object() is not an instance of a timedelta. + _build_offset(object(), {}, None) + def test_build_offset_kwargs(self): kwargs = {'minutes': 1} self.assertEqual( diff --git a/zipline/utils/events.py b/zipline/utils/events.py index a7e86978..9c1848a1 100644 --- a/zipline/utils/events.py +++ b/zipline/utils/events.py @@ -77,8 +77,10 @@ def _build_offset(offset, kwargs, default): return datetime.timedelta(**kwargs) elif kwargs: raise ValueError('Cannot pass kwargs and an offset') - else: + elif isinstance(offset, datetime.timedelta): return offset + else: + raise TypeError("Must pass 'hours' and/or 'minutes' as keywords") def _build_date(date, kwargs):