Skip to content

Commit 348c5a6

Browse files
bhatt-deepcffls
authored andcommitted
Refactor Redeemer handling in TransactionWitnessSet
1 parent 295a987 commit 348c5a6

File tree

1 file changed

+18
-5
lines changed

1 file changed

+18
-5
lines changed

pycardano/witness.py

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,11 @@
1414
RawPlutusData,
1515
Redeemer,
1616
Redeemers,
17+
RedeemerMap,
18+
RedeemerKey,
19+
RedeemerValue,
20+
ExecutionUnits,
21+
RedeemerTag,
1722
)
1823
from pycardano.serialization import (
1924
ArrayCBORSerializable,
@@ -116,11 +121,19 @@ def _get_plutus_v2_scripts(data: Any):
116121
return [PlutusV2Script(script) for script in data] if data else None
117122

118123
def _get_redeemers(data: Any):
119-
return (
120-
[Redeemer.from_primitive(redeemer) for redeemer in data]
121-
if data
122-
else None
123-
)
124+
if not data:
125+
return None
126+
if isinstance(data, dict):
127+
redeemer_map = RedeemerMap()
128+
for (tag, index), value in data.items():
129+
key = RedeemerKey(RedeemerTag(tag), index)
130+
redeemer_value = RedeemerValue(value[0], ExecutionUnits(*value[1]))
131+
redeemer_map[key] = redeemer_value
132+
return redeemer_map
133+
elif isinstance(data, list):
134+
return [Redeemer.from_primitive(redeemer) for redeemer in data]
135+
else:
136+
raise ValueError(f"Unexpected redeemer data format: {type(data)}")
124137

125138
def _get_cls(data: Any):
126139
return cls(

0 commit comments

Comments
 (0)