incorporating feedback from @richafrank

This commit is contained in:
fawce
2013-03-06 16:49:31 -05:00
parent b8144cea2a
commit a12eeb2383
2 changed files with 13 additions and 9 deletions
+7 -7
View File
@@ -274,8 +274,8 @@ def uses_ufunc(data, *args, **kwargs):
@batch_transform
def price_multiple(data, multiplier, keyarg=1):
return data.price * multiplier * keyarg
def price_multiple(data, multiplier, extra_arg=1):
return data.price * multiplier * extra_arg
class BatchTransformAlgorithm(TradingAlgorithm):
@@ -383,24 +383,24 @@ class BatchTransformAlgorithm(TradingAlgorithm):
# check that calling transforms with the same arguments
# is idempotent
self.price_multiple.handle_data(data, 1, keyarg=1)
self.price_multiple.handle_data(data, 1, extra_arg=1)
if self.price_multiple.full:
pre = len(self.price_multiple.ticks)
result1 = self.price_multiple.handle_data(data, 1, keyarg=1)
result1 = self.price_multiple.handle_data(data, 1, extra_arg=1)
post = len(self.price_multiple.ticks)
assert pre == post, "batch transform is appending redundant events"
result2 = self.price_multiple.handle_data(data, 1, keyarg=1)
result2 = self.price_multiple.handle_data(data, 1, extra_arg=1)
assert result1 is result2, "batch transform is not idempotent"
# check that calling transform with the same data, but
# different supplemental arguments results in new
# results.
result3 = self.price_multiple.handle_data(data, 2, keyarg=1)
result3 = self.price_multiple.handle_data(data, 2, extra_arg=1)
assert result1 is not result3, \
"batch transform is not updating for new args"
result4 = self.price_multiple.handle_data(data, 1, keyarg=2)
result4 = self.price_multiple.handle_data(data, 1, extra_arg=2)
assert result1 is not result4,\
"batch transform is not updating for new kwargs"
+6 -2
View File
@@ -520,14 +520,18 @@ class BatchTransform(EventWindow):
if self.compute_only_full and not self.full:
return None
recalculate_needed = False
if self.updated:
# Create new pandas panel
self.window = self.get_data()
# reset our counter for refresh_period
self.trading_days_since_update = 0
recalculate_needed = True
else:
recalculate_needed = \
args != self.last_args or kwargs != self.last_kwargs
args_changed = args != self.last_args or kwargs != self.last_kwargs
if self.updated or args_changed:
if recalculate_needed:
self.cached = self.compute_transform_value(
self.window,
*args,