Skip to content

Commit f284423

Browse files
committed
Allow TransactionInputs too, collect inputs as sets
1 parent ca678e7 commit f284423

File tree

2 files changed

+12
-7
lines changed

2 files changed

+12
-7
lines changed

docs/source/guides/transaction.rst

+1-1
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,7 @@ Step 6
147147
Add additional transaction information as needed:
148148

149149
>>> builder.ttl = 3600
150-
>>> builder.reference_inputs.append(utxo)
150+
>>> builder.reference_inputs.add(utxo)
151151

152152
Step 7
153153

pycardano/txbuilder.py

+11-6
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@
5050
MultiAsset,
5151
Transaction,
5252
TransactionBody,
53+
TransactionInput,
5354
TransactionOutput,
5455
UTxO,
5556
Value,
@@ -105,7 +106,9 @@ class TransactionBuilder:
105106

106107
withdrawals: Optional[Withdrawals] = field(default=None)
107108

108-
reference_inputs: List[UTxO] = field(init=False, default_factory=lambda: list())
109+
reference_inputs: Set[Union[UTxO, TransactionInput]] = field(
110+
init=False, default_factory=lambda: set()
111+
)
109112

110113
_inputs: List[UTxO] = field(init=False, default_factory=lambda: [])
111114

@@ -234,19 +237,19 @@ def add_script_input(
234237

235238
if utxo.output.script:
236239
self._inputs_to_scripts[utxo] = utxo.output.script
237-
self.reference_inputs.append(utxo)
240+
self.reference_inputs.add(utxo)
238241
self._reference_scripts.append(utxo.output.script)
239242
elif not script:
240243
for i in self.context.utxos(str(utxo.output.address)):
241244
if i.output.script:
242245
self._inputs_to_scripts[utxo] = i.output.script
243-
self.reference_inputs.append(i)
246+
self.reference_inputs.add(i)
244247
self._reference_scripts.append(i.output.script)
245248
break
246249
elif isinstance(script, UTxO):
247250
assert script.output.script is not None
248251
self._inputs_to_scripts[utxo] = script.output.script
249-
self.reference_inputs.append(script)
252+
self.reference_inputs.add(script)
250253
self._reference_scripts.append(script.output.script)
251254
else:
252255
self._inputs_to_scripts[utxo] = script
@@ -280,7 +283,7 @@ def add_minting_script(
280283
if isinstance(script, UTxO):
281284
assert script.output.script is not None
282285
self._minting_script_to_redeemers.append((script.output.script, redeemer))
283-
self.reference_inputs.append(script)
286+
self.reference_inputs.add(script)
284287
self._reference_scripts.append(script.output.script)
285288
else:
286289
self._minting_script_to_redeemers.append((script, redeemer))
@@ -774,7 +777,9 @@ def _build_tx_body(self) -> TransactionBody:
774777
withdraws=self.withdrawals,
775778
collateral_return=self._collateral_return,
776779
total_collateral=self._total_collateral,
777-
reference_inputs=[i.input for i in self.reference_inputs]
780+
reference_inputs=[
781+
i.input if isinstance(i, UTxO) else i for i in self.reference_inputs
782+
]
778783
if self.reference_inputs
779784
else None,
780785
)

0 commit comments

Comments
 (0)