Skip to content

Commit 6fd14b5

Browse files
author
Vincent van der Struis
committed
Improve API error messages
1 parent 7ee976d commit 6fd14b5

2 files changed

Lines changed: 32 additions & 0 deletions

File tree

hyperliquid/utils/error.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,10 @@ class Error(Exception):
44

55
class ClientError(Error):
66
def __init__(self, status_code, error_code, error_message, header, error_data=None):
7+
if error_code is None:
8+
super().__init__(f"({status_code}) {error_message}")
9+
else:
10+
super().__init__(f"({status_code}, {error_code}) {error_message}")
711
self.status_code = status_code
812
self.error_code = error_code
913
self.error_message = error_message
@@ -13,5 +17,6 @@ def __init__(self, status_code, error_code, error_message, header, error_data=No
1317

1418
class ServerError(Error):
1519
def __init__(self, status_code, message):
20+
super().__init__(f"({status_code}) {message}")
1621
self.status_code = status_code
1722
self.message = message

tests/error_test.py

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
from hyperliquid.utils.error import ClientError, ServerError
2+
3+
4+
def test_client_error_string_includes_api_message():
5+
error = ClientError(400, "BadRequest", "invalid order", {"x-request-id": "abc"}, {"field": "coin"})
6+
7+
assert str(error) == "(400, BadRequest) invalid order"
8+
assert error.status_code == 400
9+
assert error.error_code == "BadRequest"
10+
assert error.error_message == "invalid order"
11+
assert error.header == {"x-request-id": "abc"}
12+
assert error.error_data == {"field": "coin"}
13+
14+
15+
def test_client_error_string_handles_missing_error_code():
16+
error = ClientError(429, None, "rate limited", {})
17+
18+
assert str(error) == "(429) rate limited"
19+
assert error.error_code is None
20+
21+
22+
def test_server_error_string_includes_status_code_and_message():
23+
error = ServerError(503, "temporarily unavailable")
24+
25+
assert str(error) == "(503) temporarily unavailable"
26+
assert error.status_code == 503
27+
assert error.message == "temporarily unavailable"

0 commit comments

Comments
 (0)