From 1c6c103f318a9784423778ecdcbc6aeec5a65d67 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20M=C3=BCndler?= Date: Wed, 6 Mar 2024 15:25:07 +0100 Subject: [PATCH 1/2] Fix coinselection --- pycardano/coinselection.py | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/pycardano/coinselection.py b/pycardano/coinselection.py index fc16306b..9c3dc847 100644 --- a/pycardano/coinselection.py +++ b/pycardano/coinselection.py @@ -186,19 +186,16 @@ def _split_by_asset(value: Value) -> List[Value]: assets = [Value(value.coin)] # Extract native assets - for policy_id in value.multi_asset: - for asset_name in value.multi_asset[policy_id]: + for policy_id, d in value.multi_asset.items(): + for asset_name, amount in d.items(): + if not amount: + # skip 0 amounts + continue assets.append( Value.from_primitive( [ 0, - { - policy_id.payload: { - asset_name.payload: value.multi_asset[policy_id][ - asset_name - ] - } - }, + {policy_id.payload: {asset_name.payload: amount}}, ] ) ) From b1bd94aa722dca99a81ddbcc58a60c148856b61c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20M=C3=BCndler?= Date: Wed, 6 Mar 2024 16:26:37 +0100 Subject: [PATCH 2/2] Fix skipping coin if coin is 0 --- pycardano/coinselection.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pycardano/coinselection.py b/pycardano/coinselection.py index 9c3dc847..ce8dcb5c 100644 --- a/pycardano/coinselection.py +++ b/pycardano/coinselection.py @@ -183,7 +183,7 @@ def _random_select_subset( @staticmethod def _split_by_asset(value: Value) -> List[Value]: # Extract ADA - assets = [Value(value.coin)] + assets = [Value(value.coin)] if value.coin else [] # Extract native assets for policy_id, d in value.multi_asset.items():