From b19a9119d30193bb72317c9fe5a0b023a00dd20c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20M=C3=BCndler?= Date: Wed, 6 Mar 2024 17:43:20 +0100 Subject: [PATCH] Fix coinselection (#329) * Fix coinselection * Fix skipping coin if coin is 0 --- pycardano/coinselection.py | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/pycardano/coinselection.py b/pycardano/coinselection.py index fc16306b..ce8dcb5c 100644 --- a/pycardano/coinselection.py +++ b/pycardano/coinselection.py @@ -183,22 +183,19 @@ 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 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}}, ] ) )