MAINT: determine core loader overwrite types dynamically

TST: update test to reflect adjustment mapping change
This commit is contained in:
Maya Tydykov
2017-01-27 12:27:31 -05:00
parent b080d337f5
commit 98a8fdfb09
3 changed files with 23 additions and 19 deletions
+15 -13
View File
@@ -51,20 +51,22 @@ class AdjustmentTestCase(TestCase):
)
self.assertEqual(result, expected)
def test_unsupported_type(self):
def test_make_object_adjustment(self):
class SomeClass(object):
pass
my_value = SomeClass()
with self.assertRaises(TypeError) as e:
adj.make_adjustment_from_indices(
1, 2, 3, 4,
adjustment_kind=adj.OVERWRITE,
value=SomeClass(),
)
exc = e.exception
expected_msg = (
"Don't know how to make overwrite adjustments for values of type "
"%r." % SomeClass
result = adj.make_adjustment_from_indices(
1, 2, 3, 4,
adjustment_kind=adj.OVERWRITE,
value=my_value,
)
self.assertEqual(str(exc), expected_msg)
expected = adj.ObjectOverwrite(
first_row=1,
last_row=2,
first_col=3,
last_col=4,
value=my_value,
)
self.assertEqual(result, expected)
+4 -4
View File
@@ -29,6 +29,9 @@ cdef dict _float_adjustment_types = {
cdef dict _datetime_adjustment_types = {
OVERWRITE: Datetime64Overwrite,
}
cdef dict _object_adjustment_types = {
OVERWRITE: ObjectOverwrite,
}
cdef _is_float(object value):
return isinstance(value, (float, float64))
@@ -68,10 +71,7 @@ cpdef choose_adjustment_type(AdjustmentKind adjustment_kind, object value):
elif _is_datetime(value):
return _datetime_adjustment_types[adjustment_kind]
else:
raise TypeError(
"Don't know how to make overwrite "
"adjustments for values of type %r." % type(value),
)
return _object_adjustment_types[adjustment_kind]
else:
raise ValueError("Unknown adjustment type %d." % adjustment_kind)
+4 -2
View File
@@ -182,7 +182,7 @@ from zipline.pipeline.loaders.utils import (
)
from zipline.pipeline.sentinels import NotSpecified
from zipline.lib.adjusted_array import AdjustedArray, can_represent_dtype
from zipline.lib.adjustment import Float64Overwrite
from zipline.lib.adjustment import make_adjustment_from_indices, OVERWRITE
from zipline.utils.input_validation import (
expect_element,
ensure_timezone,
@@ -815,7 +815,9 @@ def overwrite_from_dates(asof, dense_dates, sparse_dates, asset_idx, value):
return
first, last = asset_idx
yield Float64Overwrite(first_row, last_row, first, last, value)
yield make_adjustment_from_indices(
first_row, last_row, first, last, OVERWRITE, value
)
def adjustments_from_deltas_no_sids(dense_dates,