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-06 16:10:51 -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
+8 -4
View File
@@ -141,7 +141,8 @@ def create_dividend(sid, payment, declared_date, ex_date, pay_date):
'ex_date': ex_date.replace(hour=0, minute=0, second=0, microsecond=0),
'pay_date': pay_date.replace(hour=0, minute=0, second=0,
microsecond=0),
'type': DATASOURCE_TYPE.DIVIDEND
'type': DATASOURCE_TYPE.DIVIDEND,
'source_id': 'MockDividendSource'
})
return div
@@ -152,7 +153,8 @@ def create_split(sid, ratio, date):
'sid': sid,
'ratio': ratio,
'dt': date.replace(hour=0, minute=0, second=0, microsecond=0),
'type': DATASOURCE_TYPE.SPLIT
'type': DATASOURCE_TYPE.SPLIT,
'source_id': 'MockSplitSource'
})
@@ -162,7 +164,8 @@ def create_txn(sid, price, amount, datetime):
'amount': amount,
'dt': datetime,
'price': price,
'type': DATASOURCE_TYPE.TRANSACTION
'type': DATASOURCE_TYPE.TRANSACTION,
'source_id': 'MockTransactionSource'
})
return txn
@@ -172,7 +175,8 @@ def create_commission(sid, value, datetime):
'dt': datetime,
'type': DATASOURCE_TYPE.COMMISSION,
'cost': value,
'sid': sid
'sid': sid,
'source_id': 'MockCommissionSource'
})
return txn