From 71697afabd1a378d810154535c15c5c3b422237e Mon Sep 17 00:00:00 2001 From: SomberNight Date: Wed, 8 Feb 2023 00:40:46 +0000 Subject: [PATCH] invoices: get_outputs to use .outputs field if available It is wasteful to create new PartialTxOutput objects if we already have an outputs field. Btw apparently lightning invoices too have an outputs field. --- electrum/invoices.py | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/electrum/invoices.py b/electrum/invoices.py index e7b6c46de..52fbeb68f 100644 --- a/electrum/invoices.py +++ b/electrum/invoices.py @@ -1,5 +1,5 @@ import time -from typing import TYPE_CHECKING, List, Optional, Union, Dict, Any +from typing import TYPE_CHECKING, List, Optional, Union, Dict, Any, Sequence from decimal import Decimal import attr @@ -126,16 +126,13 @@ class Invoice(StoredObject): address = self._lnaddr.get_fallback_address() or None return address - def get_outputs(self): - if self.is_lightning(): + def get_outputs(self) -> Sequence[PartialTxOutput]: + outputs = self.outputs or [] + if not outputs: address = self.get_address() amount = self.get_amount_sat() if address and amount is not None: outputs = [PartialTxOutput.from_address_and_value(address, int(amount))] - else: - outputs = [] - else: - outputs = self.outputs return outputs def can_be_paid_onchain(self) -> bool: