mirror of
https://github.com/wassname/catalyst.git
synced 2026-07-10 12:21:02 +08:00
MAINT: determine core loader overwrite types dynamically
TST: update test to reflect adjustment mapping change
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user