twallet: simplify get_history - electrum - Electrum Bitcoin wallet HTML git clone https://git.parazyd.org/electrum DIR Log DIR Files DIR Refs DIR Submodules --- DIR commit 777095fda8c7c5f27d119778fefc28de294e538d DIR parent f125a06453ddba01666b2af4a6cee20b77dd1ab1 HTML Author: SomberNight <somber.night@protonmail.com> Date: Sun, 18 Oct 2020 22:14:52 +0200 wallet: simplify get_history some years ago wallet.get_tx_delta returned Optional[int] but it returns int now Diffstat: M electrum/address_synchronizer.py | 21 +++++++-------------- 1 file changed, 7 insertions(+), 14 deletions(-) --- DIR diff --git a/electrum/address_synchronizer.py b/electrum/address_synchronizer.py t@@ -52,9 +52,9 @@ TX_HEIGHT_UNCONFIRMED = 0 class HistoryItem(NamedTuple): txid: str tx_mined_status: TxMinedInfo - delta: Optional[int] + delta: int fee: Optional[int] - balance: Optional[int] + balance: int class TxWalletDelta(NamedTuple): t@@ -476,15 +476,11 @@ class AddressSynchronizer(Logger): domain = set(domain) # 1. Get the history of each address in the domain, maintain the # delta of a tx as the sum of its deltas on domain addresses - tx_deltas = defaultdict(int) # type: Dict[str, Optional[int]] + tx_deltas = defaultdict(int) # type: Dict[str, int] for addr in domain: h = self.get_address_history(addr) for tx_hash, height in h: - delta = self.get_tx_delta(tx_hash, addr) - if delta is None or tx_deltas[tx_hash] is None: - tx_deltas[tx_hash] = None - else: - tx_deltas[tx_hash] += delta + tx_deltas[tx_hash] += self.get_tx_delta(tx_hash, addr) # 2. create sorted history history = [] for tx_hash in tx_deltas: t@@ -503,13 +499,10 @@ class AddressSynchronizer(Logger): delta=delta, fee=fee, balance=balance)) - if balance is None or delta is None: - balance = None - else: - balance -= delta + balance -= delta h2.reverse() # fixme: this may happen if history is incomplete - if balance not in [None, 0]: + if balance != 0: self.logger.warning("history not synchronized") return [] t@@ -657,7 +650,7 @@ class AddressSynchronizer(Logger): return 0, 0 @with_transaction_lock - def get_tx_delta(self, tx_hash, address): + def get_tx_delta(self, tx_hash: str, address: str) -> int: """effect of tx on address""" delta = 0 # subtract the value of coins sent from address