From a96dd7063499985df42317f9e472660e7e105203 Mon Sep 17 00:00:00 2001 From: Scott Sanderson Date: Mon, 18 Jan 2016 20:30:54 -0500 Subject: [PATCH] MAINT: Rename ConstantLoader to PrecomputedLoader. --- tests/pipeline/test_engine.py | 25 +++++++++++++------------ tests/pipeline/test_term.py | 1 - zipline/pipeline/loaders/synthetic.py | 25 ++++++++++++++----------- 3 files changed, 27 insertions(+), 24 deletions(-) diff --git a/tests/pipeline/test_engine.py b/tests/pipeline/test_engine.py index 4dc6e606..cbe0a305 100644 --- a/tests/pipeline/test_engine.py +++ b/tests/pipeline/test_engine.py @@ -41,7 +41,7 @@ from zipline.data.us_equity_pricing import BcolzDailyBarReader from zipline.finance.trading import TradingEnvironment from zipline.lib.adjustment import MULTIPLY from zipline.pipeline.loaders.synthetic import ( - ConstantLoader, + PrecomputedLoader, NullAdjustmentReader, SyntheticDailyBarWriter, ) @@ -126,16 +126,16 @@ class ColumnArgs(tuple): return hash(frozenset(self)) -class RecordingConstantLoader(ConstantLoader): +class RecordingPrecomputedLoader(PrecomputedLoader): def __init__(self, *args, **kwargs): - super(RecordingConstantLoader, self).__init__(*args, **kwargs) + super(RecordingPrecomputedLoader, self).__init__(*args, **kwargs) self.load_calls = [] def load_adjusted_array(self, columns, dates, assets, mask): self.load_calls.append(ColumnArgs(*columns)) - return super(RecordingConstantLoader, self).load_adjusted_array( + return super(RecordingPrecomputedLoader, self).load_adjusted_array( columns, dates, assets, mask, ) @@ -159,7 +159,7 @@ class ConstantInputTestCase(TestCase): } self.asset_ids = [1, 2, 3] self.dates = date_range('2014-01', '2014-03', freq='D', tz='UTC') - self.loader = ConstantLoader( + self.loader = PrecomputedLoader( constants=self.constants, dates=self.dates, assets=self.asset_ids, @@ -364,7 +364,7 @@ class ConstantInputTestCase(TestCase): dates_to_test = self.dates[-30:] constants = {open_: 1, close: 2, volume: 3} - loader = ConstantLoader( + loader = PrecomputedLoader( constants=constants, dates=self.dates, assets=self.asset_ids, @@ -430,14 +430,15 @@ class ConstantInputTestCase(TestCase): Loader1DataSet1.col2: 2, Loader1DataSet2.col1: 3, Loader1DataSet2.col2: 4} - loader1 = RecordingConstantLoader(constants=constants1, - dates=self.dates, - assets=self.asset_ids) + + loader1 = RecordingPrecomputedLoader(constants=constants1, + dates=self.dates, + assets=self.assets) constants2 = {Loader2DataSet.col1: 5, Loader2DataSet.col2: 6} - loader2 = RecordingConstantLoader(constants=constants2, - dates=self.dates, - assets=self.asset_ids) + loader2 = RecordingPrecomputedLoader(constants=constants2, + dates=self.dates, + assets=self.assets) engine = SimplePipelineEngine( lambda column: diff --git a/tests/pipeline/test_term.py b/tests/pipeline/test_term.py index 231439f5..f642d2b5 100644 --- a/tests/pipeline/test_term.py +++ b/tests/pipeline/test_term.py @@ -19,7 +19,6 @@ from zipline.pipeline.data.testing import TestingDataSet from zipline.pipeline.term import AssetExists, NotSpecified from zipline.pipeline.expression import NUMEXPR_MATH_FUNCS from zipline.utils.numpy_utils import ( - bool_dtype, datetime64ns_dtype, float64_dtype, ) diff --git a/zipline/pipeline/loaders/synthetic.py b/zipline/pipeline/loaders/synthetic.py index bd2e75af..f1783596 100644 --- a/zipline/pipeline/loaders/synthetic.py +++ b/zipline/pipeline/loaders/synthetic.py @@ -32,31 +32,34 @@ def nanos_to_seconds(nanos): return nanos / (1000 * 1000 * 1000) -class ConstantLoader(PipelineLoader): +class PrecomputedLoader(PipelineLoader): """ - Synthetic PipelineLoader that returns a constant value for each column. + Synthetic PipelineLoader that uses a pre-computed array for each column. Parameters ---------- - constants : dict - Map from column to value(s) to use for that column. + values : dict + Map from column to values to use for that column. Values can be anything that can be passed as the first positional - argument to a DataFrame of the same shape as `mask`. - mask : pandas.DataFrame - Mask indicating when assets existed. - Indices of this frame are used to align input queries. + argument to a DataFrame whose indices are ``dates`` and ``sids`` + dates : iterable[datetime-like] + Row labels for input data. Can be anything that pd.DataFrame will + coerce to a DatetimeIndex. + sids : iterable[int-like] + Column labels for input data. Can be anything that pd.DataFrame will + coerce to an Int64Index. Notes ----- - Adjustments are unsupported with ConstantLoader. + Adjustments are unsupported by this loader. """ - def __init__(self, constants, dates, assets): + def __init__(self, constants, dates, sids): loaders = {} for column, const in iteritems(constants): frame = DataFrame( const, index=dates, - columns=assets, + columns=sids, dtype=column.dtype, ) loaders[column] = DataFrameLoader(