added cutpoint for overriding SecurityList implementation.

This commit is contained in:
fawce
2015-02-09 12:23:46 -05:00
parent ffe5a7a171
commit 1c2560a1fa
+24 -21
View File
@@ -14,27 +14,6 @@ def loopback(symbol, *args, **kwargs):
return symbol
class SecurityListSet(object):
def __init__(self, current_date_func, lookup_func=None):
if lookup_func is None:
self.lookup_func = loopback
else:
self.lookup_func = lookup_func
self.current_date_func = current_date_func
self._leveraged_etf = None
@property
def leveraged_etf_list(self):
if self._leveraged_etf is None:
self._leveraged_etf = SecurityList(
self.lookup_func,
load_from_directory('leveraged_etf_list'),
self.current_date_func
)
return self._leveraged_etf
class SecurityList(object):
def __init__(self, lookup_func, data, current_date_func):
@@ -102,6 +81,30 @@ class SecurityList(object):
change_func(sid)
class SecurityListSet(object):
def __init__(self, current_date_func, lookup_func=None):
# provide a cut point to substitute other security
# list implementations.
self.sl_constructor = SecurityList
if lookup_func is None:
self.lookup_func = loopback
else:
self.lookup_func = lookup_func
self.current_date_func = current_date_func
self._leveraged_etf = None
@property
def leveraged_etf_list(self):
if self._leveraged_etf is None:
self._leveraged_etf = self.sl_constructor(
self.lookup_func,
load_from_directory('leveraged_etf_list'),
self.current_date_func
)
return self._leveraged_etf
def load_from_directory(list_name):
"""
To resolve the symbol in the LEVERAGED_ETF list,