Skip to content

Commit 6892819

Browse files
committed
refactor: orderstatus to args
fix: dacite conversion to dataclass in websocket classes
1 parent 65423aa commit 6892819

File tree

6 files changed

+28
-21
lines changed

6 files changed

+28
-21
lines changed

cryptomarket/args.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,15 @@ class Side(Checker):
5252
SELL = 'sell'
5353

5454

55+
class OrderStatus(Checker):
56+
NEW = 'new'
57+
SUSPENDED = 'suspended'
58+
PARTIALLY_FILLED = 'partiallyFilled'
59+
FILLED = 'filled'
60+
CANCELED = 'canceled'
61+
EXPIRED = 'expired'
62+
63+
5564
class OrderType(Checker):
5665
LIMIT = 'limit'
5766
MARKET = 'market'

cryptomarket/dataclasses/order.py

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,10 @@
22
from enum import Enum
33
from typing import List, Optional
44

5-
from cryptomarket.args import ContingencyType, OrderType, Side, TimeInForce
5+
from cryptomarket.args import ContingencyType, OrderStatus, OrderType, Side, TimeInForce
66
from cryptomarket.dataclasses.tradeOfOrder import TradeOfOrder
77

88

9-
class OrderStatus(str, Enum):
10-
NEW = 'new'
11-
SUSPENDED = 'suspended'
12-
PARTIALLY_FILLED = 'partiallyFilled'
13-
FILLED = 'filled'
14-
CANCELED = 'canceled'
15-
EXPIRED = 'expired'
16-
17-
189
@dataclass
1910
class Order:
2011
id: int

cryptomarket/dataclasses/report.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ class Report:
2727
type: OrderType
2828
time_in_force: TimeInForce
2929
quantity: str
30-
cum_quantity: str
30+
quantity_cumulative: str
3131
post_only: bool
3232
created_at: str
3333
updated_at: str

cryptomarket/websockets/client_base.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,8 @@ def _handle_response(self, response):
114114

115115
if 'error' in response:
116116
callback(CryptomarketAPIException.from_dict(response), None)
117-
elif 'result' in response:
117+
return
118+
if 'result' in response:
118119
result = response['result']
119120
if type(result) == dict and 'data' in result:
120121
callback(None, result['data'])

cryptomarket/websockets/trading_client.py

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1+
from enum import Enum
12
from typing import Callable, List, Optional, Union
23

3-
from dacite import from_dict
4+
from dacite import Config, DaciteError, from_dict
45
from typing_extensions import Literal
56

67
import cryptomarket.args as args
@@ -220,7 +221,8 @@ def intercept_response(err, response):
220221
if err:
221222
callback(err, None)
222223
return
223-
callback(None, from_dict(data_class=Report, data=response))
224+
callback(None, from_dict(data_class=Report,
225+
data=response, config=Config(cast=[Enum])))
224226
else:
225227
intercept_response = None
226228
self._send_by_id(
@@ -285,7 +287,7 @@ def intercept_response(err, response):
285287
if err:
286288
callback(err, None)
287289
return
288-
reports = [from_dict(data_class=Report, data=report)
290+
reports = [from_dict(data_class=Report, data=report, config=Config(cast=[Enum]))
289291
for report in response]
290292
callback(None, reports)
291293
else:
@@ -313,7 +315,8 @@ def intercept_result(err, response):
313315
if err:
314316
callback(err, None)
315317
return
316-
callback(None, from_dict(data_class=Report, data=response))
318+
callback(None, from_dict(data_class=Report,
319+
data=response, config=Config(cast=[Enum])))
317320
else:
318321
intercept_result = None
319322
self._send_by_id('spot_cancel_order',
@@ -347,7 +350,8 @@ def intercept_result(err, response):
347350
if err:
348351
callback(err, None)
349352
return
350-
callback(None, from_dict(data_class=Report, data=response))
353+
callback(None, from_dict(data_class=Report,
354+
data=response, config=Config(cast=[Enum])))
351355
else:
352356
intercept_result = None
353357
self._send_by_id('spot_replace_order',
@@ -369,7 +373,7 @@ def intercept_result(err, response):
369373
if err:
370374
callback(err, None)
371375
return
372-
reports = [from_dict(data_class=Report, data=report)
376+
reports = [from_dict(data_class=Report, data=report, config=Config(cast=[Enum]))
373377
for report in response]
374378
callback(None, reports)
375379
else:

cryptomarket/websockets/wallet_client.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1+
from enum import Enum
12
from typing import Callable, List, Optional, Union
23

3-
from dacite import from_dict
4+
from dacite import Config, from_dict
45
from typing_extensions import Literal
56

67
import cryptomarket.args as args
@@ -67,7 +68,8 @@ def subscribe_to_transactions(
6768
:param result_callback: A callable of two arguments, takes either a CryptomarketAPIException, or the result of the subscription. True if successful
6869
"""
6970
def intercept_feed(feed, feed_type):
70-
callback(from_dict(data_class=Transaction, data=feed))
71+
callback(from_dict(data_class=Transaction,
72+
data=feed, config=Config(cast=[Enum])))
7173
self._send_subscription(
7274
'subscribe_transactions', callback=intercept_feed, result_callback=result_callback)
7375

@@ -233,7 +235,7 @@ def intercept_response(err, response):
233235
if err is not None:
234236
callback(err, None)
235237
return
236-
transactions = [from_dict(data_class=Transaction, data=transaction)
238+
transactions = [from_dict(data_class=Transaction, data=transaction, config=Config(cast=[Enum]))
237239
for transaction in response]
238240
callback(None, transactions)
239241
self._send_by_id(

0 commit comments

Comments
 (0)