From 3f45494771c2a320862a045261dfdd26a02ddd28 Mon Sep 17 00:00:00 2001 From: Scott Sanderson Date: Tue, 4 Aug 2015 19:26:56 -0400 Subject: [PATCH] MAINT: Encapsulate engine initialization. Required for internal override. --- zipline/algorithm.py | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/zipline/algorithm.py b/zipline/algorithm.py index 3a99dc11..d95dfff2 100644 --- a/zipline/algorithm.py +++ b/zipline/algorithm.py @@ -211,16 +211,7 @@ class TradingAlgorithm(object): ) # Pull in the environment's new AssetFinder for quick reference self.asset_finder = self.trading_environment.asset_finder - - ffc_loader = kwargs.pop('ffc_loader', None) - if ffc_loader is not None: - self.engine = SimpleFFCEngine( - ffc_loader, - self.trading_environment.trading_days, - self.asset_finder, - ) - else: - self.engine = NoOpFFCEngine() + self.init_engine(kwargs.pop('ffc_loader', None)) # Maps from name to Term self._filters = {} @@ -308,6 +299,21 @@ class TradingAlgorithm(object): self.initialize_args = args self.initialize_kwargs = kwargs + def init_engine(self, loader): + """ + Construct and save an FFCEngine from loader. + + If loader is None, constructs a NoOpFFCEngine. + """ + if loader is not None: + self.engine = SimpleFFCEngine( + loader, + self.trading_environment.trading_days, + self.asset_finder, + ) + else: + self.engine = NoOpFFCEngine() + def initialize(self, *args, **kwargs): """ Call self._initialize with `self` made available to Zipline API