diff --git a/tests/test_sources.py b/tests/test_sources.py index 10ad80ec..506887e1 100644 --- a/tests/test_sources.py +++ b/tests/test_sources.py @@ -53,8 +53,8 @@ class TestDataFrameSource(TestCase): for event in source: self.assertTrue('sid' in event) self.assertTrue('arbitrary' in event) - self.assertTrue('volume' in event) - self.assertTrue('price' in event) + self.assertTrue(hasattr(event, 'volume')) + self.assertTrue(hasattr(event, 'price')) self.assertEquals(event['arbitrary'], 1.) self.assertEquals(event['sid'], 0) self.assertTrue(isinstance(event['volume'], int)) diff --git a/zipline/transforms/returns.py b/zipline/transforms/returns.py index 401a9cda..4a9f750d 100644 --- a/zipline/transforms/returns.py +++ b/zipline/transforms/returns.py @@ -96,7 +96,7 @@ class ReturnsFromPriorClose(object): We only allow events with a price field to be run through the returns transform. """ - if 'price' not in event: + if not hasattr(event, 'price'): raise WrongDataForTransform( transform="ReturnsEventWindow", fields=['price']) diff --git a/zipline/transforms/utils.py b/zipline/transforms/utils.py index fe2bf625..fa4b3f58 100644 --- a/zipline/transforms/utils.py +++ b/zipline/transforms/utils.py @@ -280,7 +280,7 @@ class EventWindow(with_metaclass(ABCMeta)): We only allow events with all of our tracked fields. """ # All events require a 'dt' field. - if 'dt' not in event: + if not hasattr(event, 'dt'): raise WrongDataForTransform( transform=self.__class__.__name__, fields=['dt'],