MAINT: Adjust for comparison changes in Python 3.

Use date sorted sources instead, instead of sorting with second
argument of Event, etc. since the `heapq.merge` behavior is using
the second part of the tuple, thus requiring a richer set of comparison
methods, which would only be used in the test context.

Use `date_sorted_sources` instead, so that sorting is done on algo time
and source id.
This commit is contained in:
Eddie Hebert
2014-01-07 11:57:52 -05:00
parent 9326a732a4
commit f093b2fb59
2 changed files with 18 additions and 14 deletions
+10 -10
View File
@@ -49,7 +49,9 @@ tradingday = datetime.timedelta(hours=6, minutes=30)
def create_txn(event, price, amount):
mock_order = Order(None, None, event.sid, id=None)
return create_transaction(event, mock_order, price, amount)
txn = create_transaction(event, mock_order, price, amount)
txn.source_id = 'MockTransactionSource'
return txn
def benchmark_events_in_range(sim_params):
@@ -69,12 +71,10 @@ def calculate_results(host, events):
perf_tracker = perf.PerformanceTracker(host.sim_params)
all_events = heapq.merge(
((event.dt, event) for event in events),
((event.dt, event) for event in host.benchmark_events))
all_events = date_sorted_sources(events, host.benchmark_events)
filtered_events = [(date, filt_event) for (date, filt_event)
in all_events if date <= events[-1].dt]
filtered_events = [(filt_event.dt, filt_event) for filt_event
in all_events if filt_event.dt <= events[-1].dt]
filtered_events.sort(key=lambda x: x[0])
grouped_events = itertools.groupby(filtered_events, lambda x: x[0])
results = []
@@ -1135,12 +1135,10 @@ class TestPerformanceTracker(unittest.TestCase):
orders = [event for event in
events if event.type == DATASOURCE_TYPE.ORDER]
all_events = (msg[1] for msg in heapq.merge(
((event.dt, event) for event in events),
((event.dt, event) for event in benchmark_events)))
all_events = date_sorted_sources(events, benchmark_events)
filtered_events = [filt_event for filt_event
in all_events if event.dt <= end_dt]
in all_events if filt_event.dt <= end_dt]
filtered_events.sort(key=lambda x: x.dt)
grouped_events = itertools.groupby(filtered_events, lambda x: x.dt)
perf_messages = []
@@ -1172,6 +1170,7 @@ class TestPerformanceTracker(unittest.TestCase):
amount=-25,
dt=event.dt
)
order.source_id = 'MockOrderSource'
yield order
yield event
txn = Transaction(
@@ -1182,6 +1181,7 @@ class TestPerformanceTracker(unittest.TestCase):
commission=0.50,
order_id=order.id
)
txn.source_id = 'MockTransactionSource'
yield txn
else:
yield event