diff --git a/zipline/finance/slippage.py b/zipline/finance/slippage.py index 25d396f9..1a7db006 100644 --- a/zipline/finance/slippage.py +++ b/zipline/finance/slippage.py @@ -20,6 +20,9 @@ import math from copy import copy from functools import partial + +from six import with_metaclass + from zipline.protocol import DATASOURCE_TYPE import zipline.utils.math_utils as zp_math @@ -152,9 +155,7 @@ def create_transaction(event, order, price, amount): return transaction -class SlippageModel(object): - - __metaclass__ = abc.ABCMeta +class SlippageModel(with_metaclass(abc.ABCMeta)): @property def volume_for_bar(self): diff --git a/zipline/sources/data_source.py b/zipline/sources/data_source.py index 96461d8f..1b04734e 100644 --- a/zipline/sources/data_source.py +++ b/zipline/sources/data_source.py @@ -3,13 +3,13 @@ from abc import ( abstractproperty ) +from six import with_metaclass + from zipline.protocol import DATASOURCE_TYPE from zipline.protocol import Event -class DataSource(object): - - __metaclass__ = ABCMeta +class DataSource(with_metaclass(ABCMeta)): @property def event_type(self): diff --git a/zipline/transforms/mavg.py b/zipline/transforms/mavg.py index bdd66223..dc79bcc1 100644 --- a/zipline/transforms/mavg.py +++ b/zipline/transforms/mavg.py @@ -15,20 +15,19 @@ from collections import defaultdict -from six import string_types +from six import string_types, with_metaclass from zipline.transforms.utils import EventWindow, TransformMeta from zipline.errors import WrongDataForTransform -class MovingAverage(object): +class MovingAverage(with_metaclass(TransformMeta)): """ Class that maintains a dictionary from sids to MovingAverageEventWindows. For each sid, we maintain moving averages over any number of distinct fields (For example, we can maintain a sid's average volume as well as its average price.) """ - __metaclass__ = TransformMeta def __init__(self, fields='price', market_aware=True, window_length=None, delta=None): diff --git a/zipline/transforms/returns.py b/zipline/transforms/returns.py index 15e8664f..be0bb8d9 100644 --- a/zipline/transforms/returns.py +++ b/zipline/transforms/returns.py @@ -17,13 +17,14 @@ from zipline.errors import WrongDataForTransform from zipline.transforms.utils import TransformMeta from collections import defaultdict, deque +from six import with_metaclass -class Returns(object): + +class Returns(with_metaclass(TransformMeta)): """ Class that maintains a dictionary from sids to the sid's closing price N trading days ago. """ - __metaclass__ = TransformMeta def __init__(self, window_length): self.window_length = window_length diff --git a/zipline/transforms/stddev.py b/zipline/transforms/stddev.py index dddfa745..280f98e4 100644 --- a/zipline/transforms/stddev.py +++ b/zipline/transforms/stddev.py @@ -16,19 +16,20 @@ from collections import defaultdict from math import sqrt +from six import with_metaclass + from zipline.errors import WrongDataForTransform from zipline.transforms.utils import EventWindow, TransformMeta import zipline.utils.math_utils as zp_math -class MovingStandardDev(object): +class MovingStandardDev(with_metaclass(TransformMeta)): """ Class that maintains a dictionary from sids to MovingStandardDevWindows. For each sid, we maintain a the standard deviation of all events falling within the specified window. """ - __metaclass__ = TransformMeta def __init__(self, market_aware=True, window_length=None, delta=None): diff --git a/zipline/transforms/utils.py b/zipline/transforms/utils.py index bccff29d..70aed99e 100644 --- a/zipline/transforms/utils.py +++ b/zipline/transforms/utils.py @@ -26,6 +26,8 @@ from datetime import datetime from collections import deque from abc import ABCMeta, abstractmethod +from six import with_metaclass + from zipline.protocol import DATASOURCE_TYPE from zipline.gens.utils import assert_sort_unframe_protocol, hash_args from zipline.finance import trading @@ -147,7 +149,7 @@ class StatefulTransform(object): yield out_message -class EventWindow(object): +class EventWindow(with_metaclass(ABCMeta)): """ Abstract base class for transform classes that calculate iterative metrics on events within a given timedelta. Maintains a list of @@ -166,7 +168,6 @@ class EventWindow(object): price. """ # Mark this as an abstract base class. - __metaclass__ = ABCMeta def __init__(self, market_aware=True, window_length=None, delta=None): diff --git a/zipline/transforms/vwap.py b/zipline/transforms/vwap.py index 993896c3..48c0b3ba 100644 --- a/zipline/transforms/vwap.py +++ b/zipline/transforms/vwap.py @@ -15,15 +15,16 @@ from collections import defaultdict +from six import with_metaclass + from zipline.errors import WrongDataForTransform from zipline.transforms.utils import EventWindow, TransformMeta -class MovingVWAP(object): +class MovingVWAP(with_metaclass(TransformMeta)): """ Class that maintains a dictionary from sids to VWAPEventWindows. """ - __metaclass__ = TransformMeta def __init__(self, market_aware=True, delta=None, window_length=None):