ccxt 4.3.65__py2.py3-none-any.whl → 4.3.67__py2.py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
ccxt/test/tests_sync.py CHANGED
@@ -1,6 +1,6 @@
1
1
  # -*- coding: utf-8 -*-
2
2
 
3
- from tests_helpers import get_cli_arg_value, dump, exit_script, get_test_files, init_exchange, set_exchange_prop, call_method, exception_message, io_file_exists, io_file_read, baseMainTestClass, AuthenticationError, NotSupported, OperationFailed, OnMaintenance, ExchangeNotAvailable, InvalidProxySettings, get_exchange_prop, close, json_parse, json_stringify, is_null_value, io_dir_read, convert_ascii, call_exchange_method_dynamically, set_fetch_response, call_exchange_method_dynamically_sync # noqa: F401
3
+ from tests_helpers import AuthenticationError, NotSupported, InvalidProxySettings, ExchangeNotAvailable, OperationFailed, OnMaintenance, get_cli_arg_value, baseMainTestClass, dump, json_parse, json_stringify, convert_ascii, io_file_exists, io_file_read, io_dir_read, call_method, call_method_sync, call_exchange_method_dynamically, call_exchange_method_dynamically_sync, exception_message, exit_script, get_exchange_prop, set_exchange_prop, init_exchange, get_test_files_sync, get_test_files, set_fetch_response, is_null_value, close # noqa: F401
4
4
 
5
5
  class testMainClass(baseMainTestClass):
6
6
  def parse_cli_args(self):
@@ -69,7 +69,10 @@ class testMainClass(baseMainTestClass):
69
69
  def import_files(self, exchange):
70
70
  properties = list(exchange.has.keys())
71
71
  properties.append('loadMarkets')
72
- self.test_files = get_test_files(properties, self.ws_tests)
72
+ if self.is_synchronous:
73
+ self.test_files = get_test_files_sync(properties, self.ws_tests)
74
+ else:
75
+ self.test_files = get_test_files(properties, self.ws_tests)
73
76
 
74
77
  def load_credentials_from_env(self, exchange):
75
78
  exchange_id = exchange.id
@@ -189,7 +192,10 @@ class testMainClass(baseMainTestClass):
189
192
  if self.info:
190
193
  args_stringified = '(' + exchange.json(args) + ')' # args.join() breaks when we provide a list of symbols or multidimensional array; "args.toString()" breaks bcz of "array to string conversion"
191
194
  dump(self.add_padding('[INFO] TESTING', 25), self.exchange_hint(exchange), method_name, args_stringified)
192
- call_method(self.test_files, method_name, exchange, skipped_properties_for_method, args)
195
+ if self.is_synchronous:
196
+ call_method_sync(self.test_files, method_name, exchange, skipped_properties_for_method, args)
197
+ else:
198
+ call_method(self.test_files, method_name, exchange, skipped_properties_for_method, args)
193
199
  if self.info:
194
200
  dump(self.add_padding('[INFO] TESTING DONE', 25), self.exchange_hint(exchange), method_name)
195
201
  # add to the list of successed tests
@@ -584,7 +590,7 @@ class testMainClass(baseMainTestClass):
584
590
  if exception is not None:
585
591
  error_message = '[TEST_FAILURE] Failed ' + proxy_test_name + ' : ' + exception_message(exception)
586
592
  # temporary comment the below, because c# transpilation failure
587
- # throw new ExchangeError (errorMessage.toString ());
593
+ # throw new Exchange Error (errorMessage.toString ());
588
594
  dump('[TEST_WARNING]' + str(error_message))
589
595
 
590
596
  def start_test(self, exchange, symbol):
@@ -596,16 +602,19 @@ class testMainClass(baseMainTestClass):
596
602
  try:
597
603
  result = self.load_exchange(exchange)
598
604
  if not result:
599
- close(exchange)
605
+ if not self.is_synchronous:
606
+ close(exchange)
600
607
  return
601
608
  # if (exchange.id === 'binance') {
602
609
  # # we test proxies functionality just for one random exchange on each build, because proxy functionality is not exchange-specific, instead it's all done from base methods, so just one working sample would mean it works for all ccxt exchanges
603
610
  # # this.testProxies (exchange);
604
611
  # }
605
612
  self.test_exchange(exchange, symbol)
606
- close(exchange)
613
+ if not self.is_synchronous:
614
+ close(exchange)
607
615
  except Exception as e:
608
- close(exchange)
616
+ if not self.is_synchronous:
617
+ close(exchange)
609
618
  raise e
610
619
 
611
620
  def assert_static_error(self, cond, message, calculated_output, stored_output, key=None):
@@ -1073,7 +1082,8 @@ class testMainClass(baseMainTestClass):
1073
1082
  assert client_order_id_swap.startswith(swap_id_string), 'binance - swap clientOrderId: ' + client_order_id_swap + ' does not start with swapId' + swap_id_string
1074
1083
  client_order_id_inverse = swap_inverse_order_request['newClientOrderId']
1075
1084
  assert client_order_id_inverse.startswith(swap_id_string), 'binance - swap clientOrderIdInverse: ' + client_order_id_inverse + ' does not start with swapId' + swap_id_string
1076
- close(exchange)
1085
+ if not self.is_synchronous:
1086
+ close(exchange)
1077
1087
  return True
1078
1088
 
1079
1089
  def test_okx(self):
@@ -1098,7 +1108,8 @@ class testMainClass(baseMainTestClass):
1098
1108
  assert client_order_id_swap.startswith(id_string), 'okx - swap clientOrderId: ' + client_order_id_swap + ' does not start with id: ' + id_string
1099
1109
  swap_tag = swap_order_request[0]['tag']
1100
1110
  assert swap_tag == id, 'okx - id: ' + id + ' different from swap tag: ' + swap_tag
1101
- close(exchange)
1111
+ if not self.is_synchronous:
1112
+ close(exchange)
1102
1113
  return True
1103
1114
 
1104
1115
  def test_cryptocom(self):
@@ -1112,7 +1123,8 @@ class testMainClass(baseMainTestClass):
1112
1123
  request = json_parse(exchange.last_request_body)
1113
1124
  broker_id = request['params']['broker_id']
1114
1125
  assert broker_id == id, 'cryptocom - id: ' + id + ' different from broker_id: ' + broker_id
1115
- close(exchange)
1126
+ if not self.is_synchronous:
1127
+ close(exchange)
1116
1128
  return True
1117
1129
 
1118
1130
  def test_bybit(self):
@@ -1126,7 +1138,8 @@ class testMainClass(baseMainTestClass):
1126
1138
  # we expect an error here, we're only interested in the headers
1127
1139
  req_headers = exchange.last_request_headers
1128
1140
  assert req_headers['Referer'] == id, 'bybit - id: ' + id + ' not in headers.'
1129
- close(exchange)
1141
+ if not self.is_synchronous:
1142
+ close(exchange)
1130
1143
  return True
1131
1144
 
1132
1145
  def test_kucoin(self):
@@ -1143,7 +1156,8 @@ class testMainClass(baseMainTestClass):
1143
1156
  req_headers = exchange.last_request_headers
1144
1157
  id = 'ccxt'
1145
1158
  assert req_headers['KC-API-PARTNER'] == id, 'kucoin - id: ' + id + ' not in headers.'
1146
- close(exchange)
1159
+ if not self.is_synchronous:
1160
+ close(exchange)
1147
1161
  return True
1148
1162
 
1149
1163
  def test_kucoinfutures(self):
@@ -1159,7 +1173,8 @@ class testMainClass(baseMainTestClass):
1159
1173
  except Exception as e:
1160
1174
  req_headers = exchange.last_request_headers
1161
1175
  assert req_headers['KC-API-PARTNER'] == id, 'kucoinfutures - id: ' + id + ' not in headers.'
1162
- close(exchange)
1176
+ if not self.is_synchronous:
1177
+ close(exchange)
1163
1178
  return True
1164
1179
 
1165
1180
  def test_bitget(self):
@@ -1172,7 +1187,8 @@ class testMainClass(baseMainTestClass):
1172
1187
  except Exception as e:
1173
1188
  req_headers = exchange.last_request_headers
1174
1189
  assert req_headers['X-CHANNEL-API-CODE'] == id, 'bitget - id: ' + id + ' not in headers.'
1175
- close(exchange)
1190
+ if not self.is_synchronous:
1191
+ close(exchange)
1176
1192
  return True
1177
1193
 
1178
1194
  def test_mexc(self):
@@ -1186,7 +1202,8 @@ class testMainClass(baseMainTestClass):
1186
1202
  except Exception as e:
1187
1203
  req_headers = exchange.last_request_headers
1188
1204
  assert req_headers['source'] == id, 'mexc - id: ' + id + ' not in headers.'
1189
- close(exchange)
1205
+ if not self.is_synchronous:
1206
+ close(exchange)
1190
1207
  return True
1191
1208
 
1192
1209
  def test_htx(self):
@@ -1216,7 +1233,8 @@ class testMainClass(baseMainTestClass):
1216
1233
  assert client_order_id_swap.startswith(id_string), 'htx - swap channel_code ' + client_order_id_swap + ' does not start with id: ' + id_string
1217
1234
  client_order_id_inverse = swap_inverse_order_request['channel_code']
1218
1235
  assert client_order_id_inverse.startswith(id_string), 'htx - swap inverse channel_code ' + client_order_id_inverse + ' does not start with id: ' + id_string
1219
- close(exchange)
1236
+ if not self.is_synchronous:
1237
+ close(exchange)
1220
1238
  return True
1221
1239
 
1222
1240
  def test_woo(self):
@@ -1241,7 +1259,8 @@ class testMainClass(baseMainTestClass):
1241
1259
  stop_order_request = json_parse(exchange.last_request_body)
1242
1260
  client_order_id_stop = stop_order_request['brokerId']
1243
1261
  assert client_order_id_stop.startswith(id_string), 'woo - brokerId: ' + client_order_id_stop + ' does not start with id: ' + id_string
1244
- close(exchange)
1262
+ if not self.is_synchronous:
1263
+ close(exchange)
1245
1264
  return True
1246
1265
 
1247
1266
  def test_bitmart(self):
@@ -1255,7 +1274,8 @@ class testMainClass(baseMainTestClass):
1255
1274
  except Exception as e:
1256
1275
  req_headers = exchange.last_request_headers
1257
1276
  assert req_headers['X-BM-BROKER-ID'] == id, 'bitmart - id: ' + id + ' not in headers'
1258
- close(exchange)
1277
+ if not self.is_synchronous:
1278
+ close(exchange)
1259
1279
  return True
1260
1280
 
1261
1281
  def test_coinex(self):
@@ -1270,7 +1290,8 @@ class testMainClass(baseMainTestClass):
1270
1290
  client_order_id = spot_order_request['client_id']
1271
1291
  id_string = str(id)
1272
1292
  assert client_order_id.startswith(id_string), 'coinex - clientOrderId: ' + client_order_id + ' does not start with id: ' + id_string
1273
- close(exchange)
1293
+ if not self.is_synchronous:
1294
+ close(exchange)
1274
1295
  return True
1275
1296
 
1276
1297
  def test_bingx(self):
@@ -1284,7 +1305,8 @@ class testMainClass(baseMainTestClass):
1284
1305
  # we expect an error here, we're only interested in the headers
1285
1306
  req_headers = exchange.last_request_headers
1286
1307
  assert req_headers['X-SOURCE-KEY'] == id, 'bingx - id: ' + id + ' not in headers.'
1287
- close(exchange)
1308
+ if not self.is_synchronous:
1309
+ close(exchange)
1288
1310
 
1289
1311
  def test_phemex(self):
1290
1312
  exchange = self.init_offline_exchange('phemex')
@@ -1297,7 +1319,8 @@ class testMainClass(baseMainTestClass):
1297
1319
  client_order_id = request['clOrdID']
1298
1320
  id_string = str(id)
1299
1321
  assert client_order_id.startswith(id_string), 'phemex - clOrdID: ' + client_order_id + ' does not start with id: ' + id_string
1300
- close(exchange)
1322
+ if not self.is_synchronous:
1323
+ close(exchange)
1301
1324
 
1302
1325
  def test_blofin(self):
1303
1326
  exchange = self.init_offline_exchange('blofin')
@@ -1310,7 +1333,8 @@ class testMainClass(baseMainTestClass):
1310
1333
  broker_id = request['brokerId']
1311
1334
  id_string = str(id)
1312
1335
  assert broker_id.startswith(id_string), 'blofin - brokerId: ' + broker_id + ' does not start with id: ' + id_string
1313
- close(exchange)
1336
+ if not self.is_synchronous:
1337
+ close(exchange)
1314
1338
 
1315
1339
  def test_hyperliquid(self):
1316
1340
  exchange = self.init_offline_exchange('hyperliquid')
@@ -1322,7 +1346,8 @@ class testMainClass(baseMainTestClass):
1322
1346
  request = json_parse(exchange.last_request_body)
1323
1347
  broker_id = str((request['action']['brokerCode']))
1324
1348
  assert broker_id == id, 'hyperliquid - brokerId: ' + broker_id + ' does not start with id: ' + id
1325
- close(exchange)
1349
+ if not self.is_synchronous:
1350
+ close(exchange)
1326
1351
 
1327
1352
  def test_coinbaseinternational(self):
1328
1353
  exchange = self.init_offline_exchange('coinbaseinternational')
@@ -1336,7 +1361,8 @@ class testMainClass(baseMainTestClass):
1336
1361
  request = json_parse(exchange.last_request_body)
1337
1362
  client_order_id = request['client_order_id']
1338
1363
  assert client_order_id.startswith(str(id)), 'clientOrderId does not start with id'
1339
- close(exchange)
1364
+ if not self.is_synchronous:
1365
+ close(exchange)
1340
1366
  return True
1341
1367
 
1342
1368
  def test_coinbase_advanced(self):
@@ -1350,7 +1376,8 @@ class testMainClass(baseMainTestClass):
1350
1376
  request = json_parse(exchange.last_request_body)
1351
1377
  client_order_id = request['client_order_id']
1352
1378
  assert client_order_id.startswith(str(id)), 'clientOrderId does not start with id'
1353
- close(exchange)
1379
+ if not self.is_synchronous:
1380
+ close(exchange)
1354
1381
  return True
1355
1382
 
1356
1383
  def test_woofi_pro(self):
@@ -1365,7 +1392,8 @@ class testMainClass(baseMainTestClass):
1365
1392
  request = json_parse(exchange.last_request_body)
1366
1393
  broker_id = request['order_tag']
1367
1394
  assert broker_id == id, 'woofipro - id: ' + id + ' different from broker_id: ' + broker_id
1368
- close(exchange)
1395
+ if not self.is_synchronous:
1396
+ close(exchange)
1369
1397
  return True
1370
1398
 
1371
1399
  def test_oxfun(self):
@@ -1401,7 +1429,8 @@ class testMainClass(baseMainTestClass):
1401
1429
  swap_order_request = json_parse(exchange.last_request_body)
1402
1430
  swap_media = swap_order_request['clientMedia']
1403
1431
  assert swap_media == id, 'xt - id: ' + id + ' different from swap tag: ' + swap_media
1404
- close(exchange)
1432
+ if not self.is_synchronous:
1433
+ close(exchange)
1405
1434
  return True
1406
1435
 
1407
1436
  def test_vertex(self):
@@ -1423,5 +1452,6 @@ class testMainClass(baseMainTestClass):
1423
1452
  order = request['place_order']
1424
1453
  broker_id = order['id']
1425
1454
  assert broker_id == id, 'vertex - id: ' + str(id) + ' different from broker_id: ' + str(broker_id)
1426
- close(exchange)
1455
+ if not self.is_synchronous:
1456
+ close(exchange)
1427
1457
  return True
ccxt/whitebit.py CHANGED
@@ -2404,7 +2404,7 @@ class whitebit(Exchange, ImplicitAPI):
2404
2404
  records = self.safe_list(response, 'records')
2405
2405
  return self.parse_transactions(records, currency, since, limit)
2406
2406
 
2407
- def is_fiat(self, currency: str):
2407
+ def is_fiat(self, currency: str) -> bool:
2408
2408
  fiatCurrencies = self.safe_value(self.options, 'fiatCurrencies', [])
2409
2409
  return self.in_array(currency, fiatCurrencies)
2410
2410
 
ccxt/zonda.py CHANGED
@@ -1467,7 +1467,7 @@ class zonda(Exchange, ImplicitAPI):
1467
1467
  # {status: "Ok", errors: []}
1468
1468
  return self.parse_order(response)
1469
1469
 
1470
- def is_fiat(self, currency: str):
1470
+ def is_fiat(self, currency: str) -> bool:
1471
1471
  fiatCurrencies: dict = {
1472
1472
  'USD': True,
1473
1473
  'EUR': True,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ccxt
3
- Version: 4.3.65
3
+ Version: 4.3.67
4
4
  Summary: A JavaScript / TypeScript / Python / C# / PHP cryptocurrency trading library with support for 100+ exchanges
5
5
  Home-page: https://ccxt.com
6
6
  Author: Igor Kroitor
@@ -70,6 +70,7 @@ Current feature list:
70
70
 
71
71
 
72
72
  ## Sponsored Promotion
73
+ [![bingx-campaign](https://github.com/user-attachments/assets/374fd5de-7d70-4281-85aa-d827afeb7270)](https://bingx.com/en/act/contestNew/7947320527/)
73
74
 
74
75
  ## See Also
75
76
 
@@ -268,13 +269,13 @@ console.log(version, Object.keys(exchanges));
268
269
 
269
270
  All-in-one browser bundle (dependencies included), served from a CDN of your choice:
270
271
 
271
- * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.3.65/dist/ccxt.browser.min.js
272
- * unpkg: https://unpkg.com/ccxt@4.3.65/dist/ccxt.browser.min.js
272
+ * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.3.67/dist/ccxt.browser.min.js
273
+ * unpkg: https://unpkg.com/ccxt@4.3.67/dist/ccxt.browser.min.js
273
274
 
274
275
  CDNs are not updated in real-time and may have delays. Defaulting to the most recent version without specifying the version number is not recommended. Please, keep in mind that we are not responsible for the correct operation of those CDN servers.
275
276
 
276
277
  ```HTML
277
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.3.65/dist/ccxt.browser.min.js"></script>
278
+ <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.3.67/dist/ccxt.browser.min.js"></script>
278
279
  ```
279
280
 
280
281
  Creates a global `ccxt` object:
@@ -1,4 +1,4 @@
1
- ccxt/__init__.py,sha256=VwMgybUOVOIDuo4uKTPQgTGwbCctjJ-9AFEI0daBTEI,16319
1
+ ccxt/__init__.py,sha256=ks_4JZWjTWWW2EWxxAPs8WtzX9QdWCEWwdtQWgH0dng,16319
2
2
  ccxt/ace.py,sha256=5DwQ9rmdDCRh-l-65Mi2Ei_o1GqR0xqWZiiU7Lz-LvM,42379
3
3
  ccxt/alpaca.py,sha256=HQuhQZSFGRlT-BaCUSEZmxpzYp6tll2zn63qn3gTmoU,47470
4
4
  ccxt/ascendex.py,sha256=4aEwibO_me6khr66z8JFqDBxe2gtFOWIFBE7ulBEJPs,151933
@@ -8,7 +8,7 @@ ccxt/binance.py,sha256=A1VauPUsNikfsEZrlFisW-sItfgPL8B78oHOte8gbHk,633504
8
8
  ccxt/binancecoinm.py,sha256=arFnEh8mErSyi23eVPWE4iwoT7PWQyxGGVJCKCy6UJY,1702
9
9
  ccxt/binanceus.py,sha256=hdcT4OnadcdFFFjF3GtM0nWv90jqojqwdVS3xWGuW40,9163
10
10
  ccxt/binanceusdm.py,sha256=bAPcJj5HLxoCdPolriM8sJpoTBwbV78vBTbKRmWhNP4,2632
11
- ccxt/bingx.py,sha256=J59y5S0ccEHjirirENmSnPTNbxqJ3bECw5MG622QwA0,225004
11
+ ccxt/bingx.py,sha256=KQu5QjHXd1hTeASV1QVSee-IZ-_boCNpKVjD69_CSIc,230724
12
12
  ccxt/bit2c.py,sha256=KwHefm2dfgcSR5LeGbHpFQlSI3LNot8tmDEgRJc2gBc,37061
13
13
  ccxt/bitbank.py,sha256=bHLOW6EAbNsjK2nXCtmxj23f2geW_-E_xfHXAvARMtw,43534
14
14
  ccxt/bitbay.py,sha256=xAIjzGRDVGwoy-Gygd99H0YN4wiaz_0lR0Z14oxaaxc,478
@@ -18,7 +18,7 @@ ccxt/bitfinex.py,sha256=8GoogNrMLM0UZoWkrxXehN8AN77DHxdD3p1aVarLlp4,73440
18
18
  ccxt/bitfinex2.py,sha256=m1PXKkM7tDf-ud-dmyqqYMF942IO3U0Du7AS3iVx-GU,160641
19
19
  ccxt/bitflyer.py,sha256=biQ8-J_HSb9_S6HE1LBDd6BGpIZSMxK5JyTZ3Xg1SdI,41683
20
20
  ccxt/bitget.py,sha256=x-4wK_WLkipl3evCUYxA1kPZ57delJCh1evvaRaMU4Y,424555
21
- ccxt/bithumb.py,sha256=Fo9NyJKahYfn-_05-zIzSXb9-CxOMw-M1Vb9mSUjS0A,45847
21
+ ccxt/bithumb.py,sha256=RX86U1rLrNwziswg6yPjSPzsqLau3_BwmVJZLNxjFnE,47837
22
22
  ccxt/bitmart.py,sha256=wJ4WRUYSaAz6kZMFkuflO6npYlUN6eSh7AMezeExDyU,208473
23
23
  ccxt/bitmex.py,sha256=oOFatIOxvXIPOdOeeVau-IdryOeYpdCtTPGxX05HA9A,126861
24
24
  ccxt/bitopro.py,sha256=0m104rrKQXuXa3dThHGgqq0leIIcdN_nQTR3a9YJLLM,69322
@@ -65,11 +65,11 @@ ccxt/hollaex.py,sha256=2KIbenZ3vcBDN_rs2CxG5_foKLaYxJd73vVV7M8n_8E,76140
65
65
  ccxt/htx.py,sha256=wrLgsowQRre6HAAlxQjM8kJrHRiq_mRy_jMr7S82vTk,427487
66
66
  ccxt/huobi.py,sha256=4vaG7IRN7fyjaJ_ac6S-njlHOfSEN5de7aq0noznxYw,438
67
67
  ccxt/huobijp.py,sha256=DPg9DkSTrsFZt8bCnGcodfPPCWMKRAFyh6ti9iNU3VE,90183
68
- ccxt/hyperliquid.py,sha256=bs8KgaGvwX85jktXp2kNqgfdgyRx3oYcpQChNzOeKaY,107006
68
+ ccxt/hyperliquid.py,sha256=ORwlaPwQxgS80WFoIjcWR4jvgcWEKerp9rxlV4EtXwI,109662
69
69
  ccxt/idex.py,sha256=P2jNsxiwIlMgrfPKbtmjLJQrzFcWp_TjgJaLq793oco,73255
70
70
  ccxt/independentreserve.py,sha256=ChkSnahGsn0aN_cfaAonSk-V2Aa1UB-0cPTa1d3AdI4,37713
71
71
  ccxt/indodax.py,sha256=rFfAwlYalCXdHQvhjmb7Zt4fGYqjoPv_koL21CBv-O8,53431
72
- ccxt/kraken.py,sha256=7DjAeeUmP1y5JR2u48x-462u1Wlch3iNb_Gj0mTeWb8,129166
72
+ ccxt/kraken.py,sha256=j2NnpL1fttk9ii1LqaKz8pGm7Lx3hYZvD6h941oxNfA,130120
73
73
  ccxt/krakenfutures.py,sha256=2K40RYEqHB2kgo9715eXc8O2SKcZpAb26iRdC70ftts,119521
74
74
  ccxt/kucoin.py,sha256=Tfg5d5Nn4N-xd39LoJPBOSjfjoMhVUtoV7PjMJrF74I,226263
75
75
  ccxt/kucoinfutures.py,sha256=Mn9eflwmD_FmTCHYkRvyfxG3SU3Pgv9Hpj-6umYT3h8,124558
@@ -100,13 +100,13 @@ ccxt/upbit.py,sha256=W_W8aETJyopwhYfZd2tWvhPvi7BjQ4KSIOdn8nzyWv8,85413
100
100
  ccxt/vertex.py,sha256=lHM2VbZCIYS4EeJ7Y9KoZcEepF7Cue7YITItyNXLiqk,121703
101
101
  ccxt/wavesexchange.py,sha256=8KrV-euIdDeARQ-h-T-nTlFJ9hk6TLuwGl8U7Xr_Lgk,114825
102
102
  ccxt/wazirx.py,sha256=LVHNdononi8FrZpT0pYiJoS-NrNi7_uIZ6Qbu8dJRPc,52405
103
- ccxt/whitebit.py,sha256=H4VHJ0cMigaInymzAuKf4GsnOexFNEGjHSUdT4HINcU,118760
103
+ ccxt/whitebit.py,sha256=ZkM8nGbqqiX6Aon-CwXileEE_9dhK3kVrJOSk1SBw7E,118768
104
104
  ccxt/woo.py,sha256=byODenMaD37GQ-gFeItGm3lEFmD2IhcFur_XC7g3xw8,152877
105
105
  ccxt/woofipro.py,sha256=JQdGizBIOXPmCHnKZsH71CfzCum1_mNCpFymV-JaX-U,115350
106
106
  ccxt/xt.py,sha256=esWHEOeI7Kbm53GsZB-7Ds34yvyoJjanL_MIBvADuIE,202646
107
107
  ccxt/yobit.py,sha256=CX5ktS3-oYItrbdsW9lJqwz4IqTKKqS30djofSkGInc,53379
108
108
  ccxt/zaif.py,sha256=LgeOsvAo4ShQW1s-RidgUYK4DnRU-Dk0eJG0Ca6M_9U,28862
109
- ccxt/zonda.py,sha256=UxcDy6__H5o_J9ZrKzA_QTbTvrNx73U88df8rFYICDs,81411
109
+ ccxt/zonda.py,sha256=KZfv46H6YsVpTQLSt4BvMiGFQr0WRLmbUpeODVv21O0,81419
110
110
  ccxt/abstract/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
111
111
  ccxt/abstract/ace.py,sha256=2-jmtQUedebJ-M88oI3WhmenPElcRlOQHe-gfHjL5BQ,1448
112
112
  ccxt/abstract/alpaca.py,sha256=vgzqnRTvEnAbLYgfDzGpmVUZxRLWC8BWA6nQ16m-xXY,10382
@@ -117,7 +117,7 @@ ccxt/abstract/binance.py,sha256=n7gjIFw9GIi82I-KVIDmJWUzap7LHfvm5MmqMee2y8k,9314
117
117
  ccxt/abstract/binancecoinm.py,sha256=n7gjIFw9GIi82I-KVIDmJWUzap7LHfvm5MmqMee2y8k,93144
118
118
  ccxt/abstract/binanceus.py,sha256=bFB1RjmG0VBfZpkAes2-ZCHgX_USrKrhCVWqsjv_vBQ,99864
119
119
  ccxt/abstract/binanceusdm.py,sha256=n7gjIFw9GIi82I-KVIDmJWUzap7LHfvm5MmqMee2y8k,93144
120
- ccxt/abstract/bingx.py,sha256=slSNsPx2NzJlVyzudTmJCRL7kDYM_lqJjt6M0QzIHPs,19552
120
+ ccxt/abstract/bingx.py,sha256=Rb93j2sCYAi0egAE4TAAOG7XuC5XdHQaGQZC9V-meqQ,20662
121
121
  ccxt/abstract/bit2c.py,sha256=np6i756kSB5dO3Nj6POLKxkWkpYcsGg-4LS8BwPrizI,2830
122
122
  ccxt/abstract/bitbank.py,sha256=hrHsD7Uvtyy2o2lzCHau3-eNq16pnZ3-YDQ6Tq_sxYU,2735
123
123
  ccxt/abstract/bitbay.py,sha256=X-hCW0SdX3YKZWixDyW-O2211M58Rno8kKJ6quY7rw4,7183
@@ -216,7 +216,7 @@ ccxt/abstract/xt.py,sha256=JkWvsic3L2O968BCr9H5Wd5NIbRE9aTT2A-9WbAtl0c,27146
216
216
  ccxt/abstract/yobit.py,sha256=8ycfCO8ORFly9hc0Aa47sZyX4_ZKPXS9h9yJzI-uQ7Q,1339
217
217
  ccxt/abstract/zaif.py,sha256=m15WHdl3gYy0GOXNZ8NEH8eE7sVh8c0T_ITNuU8vXeU,3935
218
218
  ccxt/abstract/zonda.py,sha256=X-hCW0SdX3YKZWixDyW-O2211M58Rno8kKJ6quY7rw4,7183
219
- ccxt/async_support/__init__.py,sha256=JkCrhlfZInxjy9ORf5KAUzaG0TJkZ8PPP6L8tw_8bkw,16122
219
+ ccxt/async_support/__init__.py,sha256=WXxfjBNvwcN03zH2jytM2ZMrRomOdHrz5dNbksjv6vU,16122
220
220
  ccxt/async_support/ace.py,sha256=GxXMtM5Como1NVqXhOqJntxhLO1w9pNe1yYbQP_4ylQ,42603
221
221
  ccxt/async_support/alpaca.py,sha256=495vDvdF1IWlsh9QhUnMtkMuINdD0EzeFGlUVqCf8TE,47682
222
222
  ccxt/async_support/ascendex.py,sha256=LK259BdUqU0_STGRH6DmTgaR-7lXqFpZHFVACf2um5c,152721
@@ -226,7 +226,7 @@ ccxt/async_support/binance.py,sha256=aobXrr8R0ROMVsm9MM3HbK42JSeV1J7PTKXmNvV8sbc
226
226
  ccxt/async_support/binancecoinm.py,sha256=yeE73xG5UXD_X3VPul6DMGnV_mgJfWYskpas1BUDdCU,1740
227
227
  ccxt/async_support/binanceus.py,sha256=c-K3Tk7LaRJjmYdCx8vBOqsx01uXrtvt0PC2ekBiD0g,9177
228
228
  ccxt/async_support/binanceusdm.py,sha256=8ugRkx7vyYmn67wdkEEf2f-DFMGAoC4t09usKlPVNyw,2670
229
- ccxt/async_support/bingx.py,sha256=17KpOUjzAe7Rx_vIM601kSshIgFyP5G7Gc-1PW5jyn4,226196
229
+ ccxt/async_support/bingx.py,sha256=vbnn7aoL1DXicpoNN7cLA1b7lU90Xwm_H0XVtVE4bPQ,231928
230
230
  ccxt/async_support/bit2c.py,sha256=1s8GGFqdk9FHfG6-fCmJGePppIpHDHZkjN7u6gPekP8,37273
231
231
  ccxt/async_support/bitbank.py,sha256=To1wSMT8i2bVRZABSXIuB2pyeLhmKkE6CHP4i9LMQQU,43794
232
232
  ccxt/async_support/bitbay.py,sha256=jcaEXi2IhYTva8ezO_SfJhwxEZk7HST4J3NaxD16BQA,492
@@ -236,7 +236,7 @@ ccxt/async_support/bitfinex.py,sha256=gypR-TDeWWlamJIjEYwbsEhMQYgu9kqAVvuNxOVWVT
236
236
  ccxt/async_support/bitfinex2.py,sha256=vTO61ELmw5d8A7xvmINff17pCWpoiIrVnc_RJzVic3M,161375
237
237
  ccxt/async_support/bitflyer.py,sha256=hIrGMxaM78V1i-gHN2FRFAhI2aaLR21mPAoIE33fW70,41991
238
238
  ccxt/async_support/bitget.py,sha256=eiXNafaaw9iOU2l5hzfpcqNezaprHZctPfV3n5RwGnY,426179
239
- ccxt/async_support/bithumb.py,sha256=oBk763YnXA9hsF1TCXAqWmIpd3hNGHuvFLk9HeNn10E,46077
239
+ ccxt/async_support/bithumb.py,sha256=fDOmllkudoQ0NzTQtxwObija7ptc49m19K_1KDN9HZk,48116
240
240
  ccxt/async_support/bitmart.py,sha256=zuiwBojM01L3i0MnT7WeSEe6Ul9OVuPHtTtpvy1bFUs,209429
241
241
  ccxt/async_support/bitmex.py,sha256=qSKH_dXDtpY5BUrLUbESI3a3WQhBFrc1ucv1N5GDuIU,127439
242
242
  ccxt/async_support/bitopro.py,sha256=HHESL0hiE0Rc0GRhFeIKnTs-eBzHEtOqqECANTSp0e0,69726
@@ -283,11 +283,11 @@ ccxt/async_support/hollaex.py,sha256=msUnnbWLNeCxFW77BnfLoFWBdvQIDwV7Rtbi9TA4TYY
283
283
  ccxt/async_support/htx.py,sha256=TjGp3JCN40B1mKD5U9bbo0kJceL0etS0A0fKclX5CvY,429879
284
284
  ccxt/async_support/huobi.py,sha256=fup0j6wQ1khAtfbb1H4CSyJAOzhxuoHMmrM6sgTuhr8,452
285
285
  ccxt/async_support/huobijp.py,sha256=e4vfgX8c9eTLZk6bOrB8_Upq13PLDjTLiR109Pj4phM,90683
286
- ccxt/async_support/hyperliquid.py,sha256=5kG6qZFPCqRy3t6VR-Sd2ogE5J25bRBYsEeSfhNXQJY,107544
286
+ ccxt/async_support/hyperliquid.py,sha256=k8Hik0ZLa583iMki2jp7AfR_7HpTB61yO2z5G0ILW0Q,110218
287
287
  ccxt/async_support/idex.py,sha256=UcAvdMc2CP_6E8lET4rmQiIP-RaUfZHSo6pQeA17v-g,73731
288
288
  ccxt/async_support/independentreserve.py,sha256=fCTAQ1U74KOZHIoYbDxzEly1xSgykcYcdpeiJiCEXkU,37991
289
289
  ccxt/async_support/indodax.py,sha256=m6F8bSiEz9c6UQuadeOfC40rnmlAVKkj94C1uvsc9k0,53739
290
- ccxt/async_support/kraken.py,sha256=PSrlB_8MvMT76_YnXrF5rVl5KR3mJe8f6SYEssDaFCM,129804
290
+ ccxt/async_support/kraken.py,sha256=D7tT1Oxgm8KLZjTaH3reqo7nHnN4xgtIH7racOMkfaA,130770
291
291
  ccxt/async_support/krakenfutures.py,sha256=2r88_rC1cY7t4s8dgeqRUlwNC2NVaagS9wPAEonLAQs,120009
292
292
  ccxt/async_support/kucoin.py,sha256=7SMZDx5NduNXdY0HexEkE8K_p6zBnRFBLd08mIHIUJ8,227364
293
293
  ccxt/async_support/kucoinfutures.py,sha256=uy8gNsJOI6SggxhYMH1TSTFM6rlzWvLknZL_KgCDLBE,125196
@@ -318,32 +318,32 @@ ccxt/async_support/upbit.py,sha256=GmhV24xdjd5NSCronYkqLCM8rr_hNdpt4NEDA5jEkLw,8
318
318
  ccxt/async_support/vertex.py,sha256=6eOWWpuDaGHhSMkOb1CR7ZhlnaMVNWVLoIKOK_W4mT4,122203
319
319
  ccxt/async_support/wavesexchange.py,sha256=kdF7Nm5a34mtgIj2HWTLuV3plt4K3EBKMpLENIxtoMk,115375
320
320
  ccxt/async_support/wazirx.py,sha256=bnUpw9be3o4l2Hxm3jcfNXn5bMyZlgqoG8BGPusuIzs,52707
321
- ccxt/async_support/whitebit.py,sha256=hVz5k_7GyDAIrjjzHqJc9bF26lN1HHmYCQDurFGfOeA,119410
321
+ ccxt/async_support/whitebit.py,sha256=JpY0YJHVmvg0OOqRAXRfRV_KuscYglWQ1YVt3DkHrsg,119418
322
322
  ccxt/async_support/woo.py,sha256=p_wI7R50cTAWB6tgMREw_iqHRIEsDZVns7HhqH_7ps4,153845
323
323
  ccxt/async_support/woofipro.py,sha256=xXfZj56dOmUZ67z7tsRiHL-XVtFlst-UXRPh6qRvrE0,116030
324
324
  ccxt/async_support/xt.py,sha256=9k__X07qzgB_NwSplLfJL4_4eKtHslL8Qlfv6xBwZKU,203800
325
325
  ccxt/async_support/yobit.py,sha256=rndL_bMH17YAFCGX__ZPid-Rym1sKoikKO2At7Mbe2Y,53663
326
326
  ccxt/async_support/zaif.py,sha256=-ZTr8M2JaIRCL90VrbCDXBMAsZwbiwsFChSQ2rWODuQ,29044
327
- ccxt/async_support/zonda.py,sha256=3Lk1ZKvnxDcJjN5_dIJcaoxq30tL8HZ48pPiuYJGjIM,81725
327
+ ccxt/async_support/zonda.py,sha256=jncr6Wg12S72CTpu6mCKCse1pm1f8oefVQurQSrFvP0,81733
328
328
  ccxt/async_support/base/__init__.py,sha256=aVYSsFi--b4InRs9zDN_wtCpj8odosAB726JdUHavrk,67
329
- ccxt/async_support/base/exchange.py,sha256=yP0m6OnWCGjhGDWF0IZreaXUiEFUoxC29pYnBkiHTcA,110793
329
+ ccxt/async_support/base/exchange.py,sha256=ROAhBphaWrZtvDGdLP7r1Y-EsUwh2MGX2vRFEJN3XA0,110793
330
330
  ccxt/async_support/base/throttler.py,sha256=tvDVcdRUVYi8fZRlEcnqtgzcgB_KMUMRs5Pu8tuU-tU,1847
331
331
  ccxt/async_support/base/ws/__init__.py,sha256=uockzpLuwntKGZbs5EOWFe-Zg-k6Cj7GhNJLc_RX0so,1791
332
332
  ccxt/async_support/base/ws/aiohttp_client.py,sha256=5IEiT0elWI9a7Vr-KV0jgmlbpLJWBzIlrLaCkTKGaqY,5752
333
333
  ccxt/async_support/base/ws/cache.py,sha256=jK1nzPIijhBZz9eXItbFULfZRv4uV2HGOmVwhHEyahg,8134
334
334
  ccxt/async_support/base/ws/client.py,sha256=05Nag7cglClu4QGykZ0cY9lm6Ope0dOSG8rIbDUlnC8,8187
335
- ccxt/async_support/base/ws/fast_client.py,sha256=NEA912Z4xe4O3VMQrNrWJhLa3XItf3Jh9YirKu8zNsI,3876
335
+ ccxt/async_support/base/ws/fast_client.py,sha256=WPXKqSi9OPDtpgAvt19T1EVtTg4BNk8WGSLtxUVMh08,3956
336
336
  ccxt/async_support/base/ws/functions.py,sha256=qwvEnjtINWL5ZU-dbbeIunjyBxzFqbGWHfVhxqAcKug,1499
337
- ccxt/async_support/base/ws/future.py,sha256=poJororPTavN1YT4whp9VXDd_rwqkn-3EDeiBoGmKLs,1984
337
+ ccxt/async_support/base/ws/future.py,sha256=WhAJ7wdEiLdfgl5tfGHv6HgLxAN0tTc9xL4gbkKVOaE,2409
338
338
  ccxt/async_support/base/ws/order_book.py,sha256=uBUaIHhzMRykpmo4BCsdJ-t_HozS6VxhEs8x-Kbj-NI,2894
339
339
  ccxt/async_support/base/ws/order_book_side.py,sha256=GhnGUt78pJ-AYL_Dq9produGjmBJLCI5FHIRdMz1O-g,6551
340
340
  ccxt/base/__init__.py,sha256=eTx1OE3HJjspFUQjGm6LBhaQiMKJnXjkdP-JUXknyQ0,1320
341
341
  ccxt/base/decimal_to_precision.py,sha256=fgWRBzRTtsf3r2INyS4f7WHlzgjB5YM1ekiwqD21aac,6634
342
342
  ccxt/base/errors.py,sha256=tosnf1tDaBn4YMCbWVNWyDYzqft-ImVtyjqJb6q83Y4,4369
343
- ccxt/base/exchange.py,sha256=I72FO2tBOwYpSlXq9KLVkCYA6B-4Iul-igmaijCLnVU,282079
343
+ ccxt/base/exchange.py,sha256=oQLbe_ofnoeuWRwcZcpIYUg3SnIRFj831Qd_H4rW3oU,282095
344
344
  ccxt/base/precise.py,sha256=koce64Yrp6vFbGijJtUt-QQ6XhJgeGTCksZ871FPp_A,8886
345
345
  ccxt/base/types.py,sha256=JfD1eNzfKS06XwwLUobK9d2SfVGRqbVfMY0ApU-Hn9A,9349
346
- ccxt/pro/__init__.py,sha256=K9PEH04EZ9wyyUrye_dzKO_bA1ER73ibEPSh49Ma7Ck,7405
346
+ ccxt/pro/__init__.py,sha256=Z7FBFLD-KVL0fcBj7n8Ah0jytG1nkF2_Dwc8GrunZHg,7405
347
347
  ccxt/pro/alpaca.py,sha256=TGfyNTaYawHIUWDzoVKXitCPMWO1wKn9VcgmdWMex58,27212
348
348
  ccxt/pro/ascendex.py,sha256=181FIeztchLqGmgecRJEN8F8xEM45D5aMKhC-5nuNfU,35467
349
349
  ccxt/pro/bequant.py,sha256=5zbsP8BHQTUZ8ZNL6uaACxDbUClgkOV4SYfXT_LfQVg,1351
@@ -355,7 +355,7 @@ ccxt/pro/bingx.py,sha256=2wFRTui3vj2QGmisn--hjug0bRAgt9Mvru9AiWpXmZo,53911
355
355
  ccxt/pro/bitcoincom.py,sha256=zAX6hiz4hS6Un8dSGp88rpnvItxQHfNmsfF0IZ2xIVA,1181
356
356
  ccxt/pro/bitfinex.py,sha256=55-BovgmV3cHjys5GSRk36RiNQtGgW4NWPI1goRrDic,24890
357
357
  ccxt/pro/bitfinex2.py,sha256=kZVHZwfu1_E27p9Cx55uDVGcEPA6Oy-BQk8t2fbwOmg,43058
358
- ccxt/pro/bitget.py,sha256=pEI9Erh3LPIuXefN9x0y3CbSKiu-4JxXh6TYmNII-Jc,74746
358
+ ccxt/pro/bitget.py,sha256=15JcegpMeu1HROmDtuTP3WmUw3lEoV4TYjBfWAWnCkk,74754
359
359
  ccxt/pro/bithumb.py,sha256=dqYKWebxFg4rsP7jg3oBnCUBcpZAoqAmZsozAU9pYds,16835
360
360
  ccxt/pro/bitmart.py,sha256=oH3Ygti8RhRFxK0g6QO6yxTZKMmxbzuZjncwkDYeFkI,62441
361
361
  ccxt/pro/bitmex.py,sha256=dNQf2EAim7kxgCM6I1TgFDl-e2zrXa2veicTEqu8WbQ,73949
@@ -365,50 +365,50 @@ ccxt/pro/bitrue.py,sha256=aDbPloGgsEN_DnoAJCkM0Y4MJ1r57OvoKpinynhRNrA,16463
365
365
  ccxt/pro/bitstamp.py,sha256=P8Td5HqWiO6GMdLj-cKqPTZD28fltWlZQ7Z-omDbO60,20916
366
366
  ccxt/pro/bitvavo.py,sha256=POivGXYmz8GqYc_uErpS6BdG2Gv087BStiJ3lQwod-A,56219
367
367
  ccxt/pro/blockchaincom.py,sha256=LtCL3habcuB2IRXXK_oeqdzqpnkj01Gr79X82nK8Mnk,29600
368
- ccxt/pro/bybit.py,sha256=USt8cH8nZ3MK4RHg-2lKJuwHq2wgImd_lPq39FNuxRQ,90952
368
+ ccxt/pro/bybit.py,sha256=6S7W3eDRHaqsNd1rtxSE4CrQH_LuBWNQPfUdUBRuHII,90960
369
369
  ccxt/pro/cex.py,sha256=SFgOQmXEfuKodIzN_dISZ_iqU46B2TbVPFSXNbO7cY4,58493
370
370
  ccxt/pro/coinbase.py,sha256=hwd8lUuaW8WyQQOh9WvBVuiuOJTpmlCXU0hL3UE8UFQ,31411
371
371
  ccxt/pro/coinbaseexchange.py,sha256=eoDBwYvGK__zGtC0yNRk2evWwQAD6XpjMHcpubjBt2U,39027
372
372
  ccxt/pro/coinbaseinternational.py,sha256=iR6NOKftkmG_AmDjmfM72k7zA4EqVQRxDT6SEEBL0e4,25988
373
373
  ccxt/pro/coincheck.py,sha256=7krhoxpI5RoHTyeP9tHz-o_EXlhytIxHZ4Ld7ZK29CE,7803
374
374
  ccxt/pro/coinex.py,sha256=GkW0duPzwNXppQxHPTaa1QIjnVXa3NXr-BhwocwNYF0,45164
375
- ccxt/pro/coinone.py,sha256=cR1PHKGd1bSEPdjKaHN-pI_AFM_DQUTrcA1F4qvk__M,15678
375
+ ccxt/pro/coinone.py,sha256=8tnd60CfPzy6n74Ninxa1BhMIvNfCdqgRn_om3zUwLk,15686
376
376
  ccxt/pro/cryptocom.py,sha256=kXTHPkGPYF9a7UDZDVi_GJJn_9bpDaYd5HVKfQxCnOE,43176
377
- ccxt/pro/currencycom.py,sha256=YirudKtEoZJmWh7_2t00nPIHykiOsYt4bNdVIx2EGio,22451
377
+ ccxt/pro/currencycom.py,sha256=8B9pSuPyO0ROCWOROUFoNbJBeOU3bRmlKXSj1CBMkPI,22459
378
378
  ccxt/pro/deribit.py,sha256=DG3UJE8VWuydP64_CJzDqmRC0vqc9ViBvQr28gW_nhY,41094
379
379
  ccxt/pro/exmo.py,sha256=n44MqOwY-tSt0TFNhQKydjxRJoSbrMVBzL4NNswOZm4,24542
380
380
  ccxt/pro/gate.py,sha256=sdMZ3aTivVdhJ5rq_6Loy_0I2FbeGI1qteoH-3-oTQw,79243
381
381
  ccxt/pro/gateio.py,sha256=_uBWXYQbmsHRivKnZOJDmxJ9tWLO_0HAxmOjAEUy9nE,391
382
382
  ccxt/pro/gemini.py,sha256=8B8dbYPbKbZb3lzhlt8-x0oybQxOHr8Q4R_f5edLwbU,36899
383
383
  ccxt/pro/hitbtc.py,sha256=L4HKHk_GSWrLGUN9y7PQWAaSsZL1FcJFc0_OEeAorOk,56361
384
- ccxt/pro/hollaex.py,sha256=bFL0Rc3XAQx7HozRYpOxGWXfeDk-RTR-jsQyqq-WUxg,21989
384
+ ccxt/pro/hollaex.py,sha256=qb8mnhZ6jK1iv0Ji2O8SSWcxfJMeVWAPBO0pjI-usic,21997
385
385
  ccxt/pro/htx.py,sha256=NgdEA7O9vIZsQJ-gfB1VevfDYnAljQs0Zst1heKXekk,96281
386
386
  ccxt/pro/huobi.py,sha256=rKZVgYqEr-MmZzTqAk4FoJt8qWFjCi_FY0ci_mWZrL0,385
387
387
  ccxt/pro/huobijp.py,sha256=aL6wEqAfnZp15mvfxbCsKI5OJqeCLN5IM5QO0OvJRSk,23270
388
- ccxt/pro/hyperliquid.py,sha256=iYVKkK-WxpOUfIfiNnkAYqAWAajcESzP8T8gfmPR5VE,20839
388
+ ccxt/pro/hyperliquid.py,sha256=6kHdP0hZrxYq8FURrHxHxeziDGjy_D9zBiWrX0ZQ42w,25241
389
389
  ccxt/pro/idex.py,sha256=WAY58yMHFUPoqZUGFvzxqcKizvMuFXqdZ6BD0WgstQA,28361
390
390
  ccxt/pro/independentreserve.py,sha256=wLONq1yDOV-92ZaKaBLZwUxopu0MZR-Z-AjvPN-_fuY,11308
391
391
  ccxt/pro/kraken.py,sha256=hrYXzL-CLCgm0BbQBjNOoiAfC57Ca5JTiD_24eIvikM,63840
392
392
  ccxt/pro/krakenfutures.py,sha256=3qn_aDwiDtgSz31-J9dzLYNaVywhSksz39hhl0v9DoM,63989
393
- ccxt/pro/kucoin.py,sha256=4KQqKBRshdrco2nOKLREnzK3Rr9t86cmGljoEkrJV78,54125
394
- ccxt/pro/kucoinfutures.py,sha256=NSd0cxEGoO_yytG0KRgZUOoCvjj5UjjXD8m_tlp3pIo,50319
393
+ ccxt/pro/kucoin.py,sha256=cySgdmzzX4nWLvYwcvpT8RJM4-tovmN3p1iSIGfsWgA,54133
394
+ ccxt/pro/kucoinfutures.py,sha256=rf7yP7uYDIP4G7uVPo0yiUZgG07fOjUd46LgK1Mm6ZI,50327
395
395
  ccxt/pro/lbank.py,sha256=ip7zjZFvGKufpu30WN2_lFQ-ODcJVNkcJQHbz-uLfHo,35203
396
396
  ccxt/pro/luno.py,sha256=AzLK0_C0Hu25ukMNkMLP_sY3D4UG9FT38oawpo4jzTg,12336
397
- ccxt/pro/mexc.py,sha256=4HGDH6Z-I1RoyHuiXnuSbThgmKyEyOZFwu8kaerCO6s,43262
397
+ ccxt/pro/mexc.py,sha256=yiLfthMojs2T-sUzzhDjmTTNFc8Ob8S85ovpPb_I7Ts,43270
398
398
  ccxt/pro/ndax.py,sha256=fQsoYtrTEsCZB3hl-pavQytwQAaiMAiTyaCiOy1sVTg,22715
399
- ccxt/pro/okcoin.py,sha256=M9x9p9umvIdP13uw_Wyx-TCg7QLMI7ov5DnukCXTBNE,30421
400
- ccxt/pro/okx.py,sha256=rR2SIRRadNaT6Z8_RqSwmFyeB31H1cHg-Zq53H1Ti9I,83855
399
+ ccxt/pro/okcoin.py,sha256=elwHzrWUSuU7Edp1oisxAnvst5IpxjyzgqLVMEHZWIU,30429
400
+ ccxt/pro/okx.py,sha256=pHaferUJ2J55iMQTkdAth5QzM_Z05c1iaHRmy2dhqfg,84477
401
401
  ccxt/pro/onetrading.py,sha256=Qlr6LRRqO8te7QyTIhCk5nXJnupH8MtRWhQnH3Zc9yE,54769
402
- ccxt/pro/oxfun.py,sha256=5UuhC7ikqvTcmaFJsp3PuGbi_lzgH1H6OVV-ox3Lc1s,43935
403
- ccxt/pro/p2b.py,sha256=Vdm2wc4RF3IDMKivSlNyWjrh9IR0c-Zm5lDjY4AIass,17889
402
+ ccxt/pro/oxfun.py,sha256=gcmnoD0pzEDVIaiHyuU2ABoQBrxi0CTP62H2xZD0T7g,43943
403
+ ccxt/pro/p2b.py,sha256=qulHrptdJ48MtOQ0bOZH3h_An8Ybu14cU6cJrySV5KQ,17897
404
404
  ccxt/pro/phemex.py,sha256=iwdftOXQIiP_Ns7PHD-5vlL74H5vtPUWOQ1zh7fyuD8,61069
405
- ccxt/pro/poloniex.py,sha256=KJ87SrIIFspyrlLOH8sxO2aUB0ClX9u_BWePl4-V4JM,51288
405
+ ccxt/pro/poloniex.py,sha256=-ul0a17CHBrnY3DBH4PZg87j-K1-7uh9vDuvcK-KikE,51296
406
406
  ccxt/pro/poloniexfutures.py,sha256=td0qKg79BOGGwr7NOXF3sJ9VgS_wlgWHXCro73V1Eo4,41859
407
407
  ccxt/pro/probit.py,sha256=ngY30aRwNClc_q_Pirajg4-K-mJ3bvipgD2-jBuPs6g,23110
408
408
  ccxt/pro/upbit.py,sha256=M3RwAXlK7Mbu8zduZK7eprLOfNgJax_xSPUhzXQ2zfY,22094
409
409
  ccxt/pro/vertex.py,sha256=kE4UZNKB2zXTt3eVOXwtM5Z4F1LfcP1cfDC4_xMncPM,40528
410
410
  ccxt/pro/wazirx.py,sha256=LXpotTduk3fhtcJP2TWpssiOOAZGxhou5_MTK-0G7n0,30082
411
- ccxt/pro/whitebit.py,sha256=Q2DX6Mf5Te8_U9H2mCOtTTI1to2bFn-iReJPszQrJmY,35065
411
+ ccxt/pro/whitebit.py,sha256=lpIDFgmVXtL77680Rz9hVTEXd3M6TsizhlFb0ruKfEM,35073
412
412
  ccxt/pro/woo.py,sha256=sh8QZas1GpAq-3J6k9pvMUQaOe3GlarDa7PV0yfnnWw,43751
413
413
  ccxt/pro/woofipro.py,sha256=pwVXMDrl3zFZrEJJkk9_PEil9uTTtrV9TEvbCRFaNUM,49050
414
414
  ccxt/pro/xt.py,sha256=USN0l6AOLiKgT9Sfz0QX93yFXv-hnU2VEV_mzkSFuyQ,48369
@@ -510,12 +510,12 @@ ccxt/static_dependencies/toolz/curried/__init__.py,sha256=iOuFY4c1kixe_h8lxuWIW5
510
510
  ccxt/static_dependencies/toolz/curried/exceptions.py,sha256=gKFOHDIayAWnX2uC8Z2KrUwpP-UpoqI5Tx1a859QdVY,344
511
511
  ccxt/static_dependencies/toolz/curried/operator.py,sha256=ML92mknkAwzBl2NCm-4werSUmJEtSHNY9NSzhseNM9s,525
512
512
  ccxt/test/__init__.py,sha256=GKPbEcj0Rrz5HG-GUm-iY1IHhDYmlvcBXZAGk6-m2CI,141
513
- ccxt/test/tests_async.py,sha256=rQN7Ac7qQ9Ag8zaDS7LCijM4Y4tpxlMN1Q2uJjZuntM,80937
514
- ccxt/test/tests_helpers.py,sha256=RLDL2iakRjfCc2FuiTUvgmFcRyObizOPX3Ww3a4uXsQ,9670
513
+ ccxt/test/tests_async.py,sha256=LQbmSFTERUZrmoBTYaRxFpikuuJfYr9weV5ibxdEPkk,82236
514
+ ccxt/test/tests_helpers.py,sha256=GbWfSU-0E_CKLeFNinnEHYg1LOcEgNVJT3K9e2kjOeM,10011
515
515
  ccxt/test/tests_init.py,sha256=eVwwUHujX9t4rjgo4TqEeg7DDhR1Hb_e2SJN8NVGyl0,998
516
- ccxt/test/tests_sync.py,sha256=01AYWrs1Gt0LEM9rhEZmqmZKH2RtToz37XzOZIizfEg,80041
517
- ccxt-4.3.65.dist-info/LICENSE.txt,sha256=EIb9221AhMHV7xF1_55STFdKTFsnJVJYkRpY2Lnvo5w,1068
518
- ccxt-4.3.65.dist-info/METADATA,sha256=oGX_vGhJvVeOmhoPLNeF2afbEnUYKRwbiqNjUEdI-7w,115795
519
- ccxt-4.3.65.dist-info/WHEEL,sha256=z9j0xAa_JmUKMpmz72K0ZGALSM_n-wQVmGbleXx2VHg,110
520
- ccxt-4.3.65.dist-info/top_level.txt,sha256=CkQDuCTDKNcImPV60t36G6MdYfxsAPNiSaEwifVoVMo,5
521
- ccxt-4.3.65.dist-info/RECORD,,
516
+ ccxt/test/tests_sync.py,sha256=laU5k8aihJ7kwE22nQwV7Sqty8pGCR3QSsQopNrh1do,81340
517
+ ccxt-4.3.67.dist-info/LICENSE.txt,sha256=EIb9221AhMHV7xF1_55STFdKTFsnJVJYkRpY2Lnvo5w,1068
518
+ ccxt-4.3.67.dist-info/METADATA,sha256=VlOsUZCm48f_GdOPO7fWMOLflTCLhkrvS69RyCS3IY0,115945
519
+ ccxt-4.3.67.dist-info/WHEEL,sha256=z9j0xAa_JmUKMpmz72K0ZGALSM_n-wQVmGbleXx2VHg,110
520
+ ccxt-4.3.67.dist-info/top_level.txt,sha256=CkQDuCTDKNcImPV60t36G6MdYfxsAPNiSaEwifVoVMo,5
521
+ ccxt-4.3.67.dist-info/RECORD,,
File without changes