Skip to content

Commit b4bfab7

Browse files
Update receipt retries behavior, refactor transaction classes
Signed-off-by: Alexander Shenshin <[email protected]>
1 parent 8a3a7f3 commit b4bfab7

14 files changed

+34
-213
lines changed

src/hedera_sdk_python/account/account_create_transaction.py

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -171,21 +171,3 @@ def _execute_transaction(self, client, transaction_proto):
171171

172172
receipt = self.get_receipt(client)
173173
return receipt
174-
175-
def get_receipt(self, client, timeout=60):
176-
"""
177-
Retrieves the receipt for the transaction.
178-
179-
Args:
180-
client (Client): The client instance to query.
181-
timeout (int): Maximum time in seconds to wait for the receipt.
182-
183-
Returns:
184-
TransactionReceipt: The transaction receipt from the network.
185-
186-
Raises:
187-
Exception: If the transaction ID is not set or if receipt retrieval fails.
188-
"""
189-
if self.transaction_id is None:
190-
raise Exception("Transaction ID is not set. Did you forget to sign or execute the transaction?")
191-
return client.get_transaction_receipt(self.transaction_id, timeout)

src/hedera_sdk_python/client/client.py

Lines changed: 12 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -85,23 +85,19 @@ def get_node_account_ids(self):
8585

8686
def get_transaction_receipt(self, transaction_id, max_attempts=10, sleep_seconds=2):
8787
for attempt in range(max_attempts):
88-
try:
89-
receipt_query = TransactionGetReceiptQuery()
90-
receipt_query.set_transaction_id(transaction_id)
91-
receipt = receipt_query.execute(self)
92-
status = receipt.status
93-
94-
if status == ResponseCode.SUCCESS:
95-
return receipt
96-
elif status in (ResponseCode.UNKNOWN, ResponseCode.RECEIPT_NOT_FOUND):
97-
time.sleep(sleep_seconds)
98-
continue
99-
else:
100-
status_message = ResponseCode.get_name(status)
101-
raise Exception(f"Transaction failed with status: {status_message}")
102-
except Exception as e:
103-
print(f"Error retrieving transaction receipt: {e}")
88+
receipt_query = TransactionGetReceiptQuery()
89+
receipt_query.set_transaction_id(transaction_id)
90+
receipt = receipt_query.execute(self)
91+
status = receipt.status
92+
93+
if status == ResponseCode.SUCCESS:
94+
return receipt
95+
elif status in (ResponseCode.UNKNOWN, ResponseCode.BUSY, ResponseCode.RECEIPT_NOT_FOUND, ResponseCode.RECORD_NOT_FOUND, ResponseCode.PLATFORM_NOT_ACTIVE):
10496
time.sleep(sleep_seconds)
97+
continue
98+
else:
99+
status_message = ResponseCode.get_name(status)
100+
raise Exception(f"Error retrieving transaction receipt: {status_message}")
105101
raise Exception("Exceeded maximum attempts to fetch transaction receipt.")
106102

107103
def send_query(self, query, node_account_id, timeout=60):

src/hedera_sdk_python/consensus/topic_create_transaction.py

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -81,23 +81,3 @@ def _execute_transaction(self, client, transaction_proto):
8181

8282
receipt = self.get_receipt(client)
8383
return receipt
84-
85-
def get_receipt(self, client, timeout=60):
86-
"""
87-
Retrieves the receipt for the transaction.
88-
89-
Args:
90-
client (Client): The client instance.
91-
timeout (int): Maximum time in seconds to wait for the receipt.
92-
93-
Returns:
94-
TransactionReceipt: The transaction receipt from the network.
95-
96-
Raises:
97-
Exception: If the transaction ID is not set or if receipt retrieval fails.
98-
"""
99-
if self.transaction_id is None:
100-
raise Exception("Transaction ID is not set.")
101-
102-
receipt = client.get_transaction_receipt(self.transaction_id, timeout)
103-
return receipt

src/hedera_sdk_python/consensus/topic_delete_transaction.py

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -64,24 +64,4 @@ def _execute_transaction(self, client, transaction_proto):
6464
raise Exception(f"Error during transaction submission: {error_code} ({error_message})")
6565

6666
receipt = self.get_receipt(client)
67-
return receipt
68-
69-
def get_receipt(self, client, timeout=60):
70-
"""
71-
Retrieves the receipt for the transaction.
72-
73-
Args:
74-
client (Client): The client instance.
75-
timeout (int): Maximum time in seconds to wait for the receipt.
76-
77-
Returns:
78-
TransactionReceipt: The transaction receipt from the network.
79-
80-
Raises:
81-
Exception: If the transaction ID is not set or if receipt retrieval fails.
82-
"""
83-
if self.transaction_id is None:
84-
raise Exception("Transaction ID is not set.")
85-
86-
receipt = client.get_transaction_receipt(self.transaction_id, timeout)
8767
return receipt

src/hedera_sdk_python/consensus/topic_message_submit_transaction.py

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -85,23 +85,3 @@ def _execute_transaction(self, client, transaction_proto):
8585

8686
receipt = self.get_receipt(client)
8787
return receipt
88-
89-
def get_receipt(self, client, timeout=60):
90-
"""
91-
Retrieves the receipt for the transaction.
92-
93-
Args:
94-
client (Client): The client instance.
95-
timeout (int): Maximum time in seconds to wait for the receipt.
96-
97-
Returns:
98-
TransactionReceipt: The transaction receipt from the network.
99-
100-
Raises:
101-
Exception: If the transaction ID is not set or if receipt retrieval fails.
102-
"""
103-
if self.transaction_id is None:
104-
raise Exception("Transaction ID is not set.")
105-
106-
receipt = client.get_transaction_receipt(self.transaction_id, timeout)
107-
return receipt

src/hedera_sdk_python/consensus/topic_update_transaction.py

Lines changed: 1 addition & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ def __init__(
1616
):
1717
super().__init__()
1818
self.topic_id = topic_id
19-
self.memo = memo
19+
self.memo = memo or ""
2020
self.admin_key = admin_key
2121
self.submit_key = submit_key
2222
self.auto_renew_period = auto_renew_period
@@ -171,23 +171,3 @@ def _execute_transaction(self, client, transaction_proto):
171171

172172
receipt = self.get_receipt(client)
173173
return receipt
174-
175-
def get_receipt(self, client, timeout=60):
176-
"""
177-
Retrieves the receipt for the transaction.
178-
179-
Args:
180-
client (Client): The client instance.
181-
timeout (int): Maximum time in seconds to wait for the receipt.
182-
183-
Returns:
184-
TransactionReceipt: The transaction receipt from the network.
185-
186-
Raises:
187-
Exception: If the transaction ID is not set or if receipt retrieval fails.
188-
"""
189-
if self.transaction_id is None:
190-
raise Exception("Transaction ID is not set.")
191-
192-
receipt = client.get_transaction_receipt(self.transaction_id, timeout)
193-
return receipt

src/hedera_sdk_python/crypto/private_key.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,6 @@ def from_string(cls, key_str):
122122

123123
return cls.from_bytes(key_bytes)
124124

125-
126125
def sign(self, data: bytes) -> bytes:
127126
"""
128127
Signs the given data using this private key (Ed25519 or ECDSA).

src/hedera_sdk_python/tokens/token_associate_transaction.py

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -83,23 +83,3 @@ def _execute_transaction(self, client, transaction_proto):
8383

8484
receipt = self.get_receipt(client)
8585
return receipt
86-
87-
def get_receipt(self, client, timeout=60):
88-
"""
89-
Retrieves the receipt for the transaction.
90-
91-
Args:
92-
client (Client): The client instance.
93-
timeout (int): Maximum time in seconds to wait for the receipt.
94-
95-
Returns:
96-
TransactionReceipt: The transaction receipt from the network.
97-
98-
Raises:
99-
Exception: If the transaction ID is not set or if receipt retrieval fails.
100-
"""
101-
if self.transaction_id is None:
102-
raise Exception("Transaction ID is not set.")
103-
104-
receipt = client.get_transaction_receipt(self.transaction_id, timeout)
105-
return receipt

src/hedera_sdk_python/tokens/token_create_transaction.py

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -128,23 +128,3 @@ def _execute_transaction(self, client, transaction_proto):
128128

129129
receipt = self.get_receipt(client)
130130
return receipt
131-
132-
def get_receipt(self, client, timeout=60):
133-
"""
134-
Retrieves the receipt for the transaction.
135-
136-
Args:
137-
client (Client): The client instance.
138-
timeout (int): Maximum time in seconds to wait for the receipt.
139-
140-
Returns:
141-
TransactionReceipt: The transaction receipt from the network.
142-
143-
Raises:
144-
Exception: If the transaction ID is not set or if receipt retrieval fails.
145-
"""
146-
if self.transaction_id is None:
147-
raise Exception("Transaction ID is not set.")
148-
149-
receipt = client.get_transaction_receipt(self.transaction_id, timeout)
150-
return receipt

src/hedera_sdk_python/tokens/token_delete_transaction.py

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -82,23 +82,3 @@ def _execute_transaction(self, client, transaction_proto):
8282

8383
receipt = self.get_receipt(client)
8484
return receipt
85-
86-
def get_receipt(self, client, timeout=60):
87-
"""
88-
Retrieves the receipt for the transaction.
89-
90-
Args:
91-
client (Client): The client instance.
92-
timeout (int): Maximum time in seconds to wait for the receipt.
93-
94-
Returns:
95-
TransactionReceipt: The transaction receipt from the network.
96-
97-
Raises:
98-
Exception: If the transaction ID is not set or if receipt retrieval fails.
99-
"""
100-
if self.transaction_id is None:
101-
raise Exception("Transaction ID is not set.")
102-
103-
receipt = client.get_transaction_receipt(self.transaction_id, timeout)
104-
return receipt

0 commit comments

Comments
 (0)