Skip to content

Commit 98335d1

Browse files
committed
fix(Client): return None if SafeTx does not exist
1 parent e16a5e2 commit 98335d1

3 files changed

Lines changed: 11 additions & 6 deletions

File tree

ape_safe/client/__init__.py

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -134,12 +134,17 @@ def _all_transactions(self) -> Iterator[SafeApiTxData]:
134134

135135
url = data.get("next")
136136

137-
def get_safe_tx(self, safe_tx_hash: SafeTxID) -> SafeApiTxData:
138-
response = self._get(f"/multisig-transactions/{safe_tx_hash}", api_version="v2")
137+
def get_safe_tx(self, safe_tx_hash: SafeTxID) -> SafeApiTxData | None:
138+
try:
139+
response = self._get(f"/multisig-transactions/{safe_tx_hash}", api_version="v2")
140+
except ClientResponseError:
141+
return None
142+
139143
return TypeAdapter(SafeApiTxData).validate_json(response.text)
140144

141145
def get_confirmations(self, safe_tx_hash: SafeTxID) -> Iterator[SafeTxConfirmation]:
142-
yield from self.get_safe_tx(safe_tx_hash).confirmations
146+
if safe_tx := self.get_safe_tx(safe_tx_hash):
147+
yield from safe_tx.confirmations
143148

144149
def post_transaction(
145150
self, safe_tx: SafeTx, signatures: dict[AddressType, MessageSignature], **kwargs

ape_safe/client/base.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ def get_next_nonce(self) -> int: ...
4949
def _all_transactions(self) -> Iterator[SafeApiTxData]: ...
5050

5151
@abstractmethod
52-
def get_safe_tx(self, safe_tx_hash: SafeTxID) -> SafeApiTxData: ...
52+
def get_safe_tx(self, safe_tx_hash: SafeTxID) -> SafeApiTxData | None: ...
5353

5454
@abstractmethod
5555
def get_confirmations(self, safe_tx_hash: SafeTxID) -> Iterator[SafeTxConfirmation]: ...

ape_safe/client/mock.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ def _all_transactions(
7272
if tx:
7373
yield tx
7474

75-
def get_safe_tx(self, safe_tx_hash: SafeTxID) -> SafeApiTxData:
75+
def get_safe_tx(self, safe_tx_hash: SafeTxID) -> SafeApiTxData | None:
7676
tx_hash = cast(SafeTxID, to_hex(HexBytes(safe_tx_hash)))
7777

7878
if safe_tx := self.transactions.get(tx_hash):
@@ -82,7 +82,7 @@ def get_safe_tx(self, safe_tx_hash: SafeTxID) -> SafeApiTxData:
8282
if safe_tx.safe_tx_hash == safe_tx_hash:
8383
return safe_tx
8484

85-
raise SafeClientException(f"Unable to find SafeTx '{safe_tx_hash}'.")
85+
return None
8686

8787
def get_confirmations(self, safe_tx_hash: SafeTxID) -> Iterator[SafeTxConfirmation]:
8888
tx_hash = cast(SafeTxID, to_hex(HexBytes(safe_tx_hash)))

0 commit comments

Comments
 (0)