summaryrefslogtreecommitdiff
path: root/bla.py
diff options
context:
space:
mode:
Diffstat (limited to 'bla.py')
-rw-r--r--bla.py13
1 files changed, 9 insertions, 4 deletions
diff --git a/bla.py b/bla.py
index 4595bcb..a915102 100644
--- a/bla.py
+++ b/bla.py
@@ -90,10 +90,15 @@ def process_trade(refid: str, trades: List[LedgerAction]):
def process_ledger(read_actions: List[LedgerAction], output_path: str):
- # for refid, actions in groupby(
- # sorted(read_actions, key=lambda a: a.refid), lambda a: a.refid
- # ):
- for refid, actions in groupby(read_actions, lambda a: a.refid):
+ # don't make any assumtptions about ledger sorting
+ # groupby requires sorted inputs
+ actions_sorted = sorted(read_actions, key=lambda a: (a.refid, a.timestamp))
+ _grouped_actions = groupby(actions_sorted, lambda a: a.refid)
+ _list_tuple_actions = [(k, list(v)) for k, v in _grouped_actions]
+ # finally, sort groupy by first available timestamp
+ sorted_grouped_actions = sorted(_list_tuple_actions, key=lambda a: a[1][0].timestamp)
+
+ for refid, actions in sorted_grouped_actions:
actions = list(actions)
if len(actions) == 0: