From fce87015d2a859d728c6727c122cc85533ef72fd Mon Sep 17 00:00:00 2001 From: John Ricklefs Date: Fri, 19 Aug 2016 14:43:51 -0400 Subject: [PATCH] ENH: Expose exchange_full on Equity objects --- zipline/assets/_assets.pyx | 58 +++++++++++++++++++++++++++++++++++-- zipline/assets/synthetic.py | 4 +++ 2 files changed, 60 insertions(+), 2 deletions(-) diff --git a/zipline/assets/_assets.pyx b/zipline/assets/_assets.pyx index 1a7a3d25..4befac72 100644 --- a/zipline/assets/_assets.pyx +++ b/zipline/assets/_assets.pyx @@ -164,7 +164,7 @@ cdef class Asset: self.start_date, self.end_date, self.first_traded, - self.auto_close_date,)) + self.auto_close_date)) cpdef to_dict(self): """ @@ -226,9 +226,63 @@ cdef class Asset: cdef class Equity(Asset): + cdef readonly object exchange_full + + _kwargnames = frozenset({ + 'sid', + 'symbol', + 'asset_name', + 'start_date', + 'end_date', + 'first_traded', + 'auto_close_date', + 'exchange', + 'exchange_full', + }) + + def __init__(self, + int sid, # sid is required + object exchange, # exchange is required + object symbol="", + object asset_name="", + object start_date=None, + object end_date=None, + object first_traded=None, + object auto_close_date=None, + object exchange_full=None): + super().__init__( + sid, + exchange, + symbol=symbol, + asset_name=asset_name, + start_date=start_date, + end_date=end_date, + first_traded=first_traded, + auto_close_date=auto_close_date, + ) + + self.exchange_full = exchange_full + + cpdef to_dict(self): + """ + Convert to a python dict. + """ + return { + 'sid': self.sid, + 'symbol': self.symbol, + 'asset_name': self.asset_name, + 'start_date': self.start_date, + 'end_date': self.end_date, + 'first_traded': self.first_traded, + 'auto_close_date': self.auto_close_date, + 'exchange': self.exchange, + 'exchange_full': self.exchange_full, + } + def __repr__(self): attrs = ('symbol', 'asset_name', 'exchange', - 'start_date', 'end_date', 'first_traded', 'auto_close_date') + 'start_date', 'end_date', 'first_traded', 'auto_close_date', + 'exchange_full') tuples = ((attr, repr(getattr(self, attr, None))) for attr in attrs) strings = ('%s=%s' % (t[0], t[1]) for t in tuples) diff --git a/zipline/assets/synthetic.py b/zipline/assets/synthetic.py index c3f173dd..26079829 100644 --- a/zipline/assets/synthetic.py +++ b/zipline/assets/synthetic.py @@ -51,6 +51,7 @@ def make_rotating_equity_info(num_assets, periods=num_assets, ), 'exchange': 'TEST', + 'exchange_full': 'TEST FULL', }, index=range(num_assets), ) @@ -87,6 +88,7 @@ def make_simple_equity_info(sids, 'start_date': pd.to_datetime([start_date] * num_assets), 'end_date': pd.to_datetime([end_date] * num_assets), 'exchange': 'TEST', + 'exchange_full': 'TEST FULL', }, index=sids, columns=( @@ -94,6 +96,7 @@ def make_simple_equity_info(sids, 'end_date', 'symbol', 'exchange', + 'exchange_full', ), ) @@ -137,6 +140,7 @@ def make_jagged_equity_info(num_assets, periods=num_assets, ), 'exchange': 'TEST', + 'exchange_full': 'TEST FULL', }, index=range(num_assets), )