ccxt 4.3.4__py2.py3-none-any.whl → 4.3.5__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.
Potentially problematic release.
This version of ccxt might be problematic. Click here for more details.
- ccxt/__init__.py +1 -1
- ccxt/abstract/whitebit.py +22 -1
- ccxt/async_support/__init__.py +1 -1
- ccxt/async_support/base/exchange.py +224 -36
- ccxt/async_support/binance.py +19 -14
- ccxt/async_support/kucoin.py +52 -4
- ccxt/async_support/whitebit.py +112 -2
- ccxt/base/exchange.py +230 -4
- ccxt/binance.py +19 -14
- ccxt/kucoin.py +52 -4
- ccxt/pro/__init__.py +1 -1
- ccxt/pro/binance.py +410 -73
- ccxt/pro/cex.py +1 -1
- ccxt/pro/lbank.py +1 -1
- ccxt/pro/woo.py +0 -1
- ccxt/test/test_async.py +15 -17
- ccxt/test/test_sync.py +15 -17
- ccxt/whitebit.py +112 -2
- {ccxt-4.3.4.dist-info → ccxt-4.3.5.dist-info}/METADATA +4 -4
- {ccxt-4.3.4.dist-info → ccxt-4.3.5.dist-info}/RECORD +22 -22
- {ccxt-4.3.4.dist-info → ccxt-4.3.5.dist-info}/WHEEL +0 -0
- {ccxt-4.3.4.dist-info → ccxt-4.3.5.dist-info}/top_level.txt +0 -0
ccxt/pro/cex.py
CHANGED
@@ -297,7 +297,7 @@ class cex(ccxt.async_support.cex):
|
|
297
297
|
return result
|
298
298
|
return self.filter_by_array(self.tickers, 'symbol', symbols)
|
299
299
|
|
300
|
-
async def fetch_ticker_ws(self, symbol: str, params={}):
|
300
|
+
async def fetch_ticker_ws(self, symbol: str, params={}) -> Ticker:
|
301
301
|
"""
|
302
302
|
:see: https://docs.cex.io/#ws-api-ticker-deprecated
|
303
303
|
fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
|
ccxt/pro/lbank.py
CHANGED
@@ -227,7 +227,7 @@ class lbank(ccxt.async_support.lbank):
|
|
227
227
|
messageHash = 'ohlcv:' + symbol + ':' + timeframeId
|
228
228
|
client.resolve(stored, messageHash)
|
229
229
|
|
230
|
-
async def fetch_ticker_ws(self, symbol, params={}) -> Ticker:
|
230
|
+
async def fetch_ticker_ws(self, symbol: str, params={}) -> Ticker:
|
231
231
|
"""
|
232
232
|
:see: https://www.lbank.com/en-US/docs/index.html#request-amp-subscription-instruction
|
233
233
|
fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
|
ccxt/pro/woo.py
CHANGED
ccxt/test/test_async.py
CHANGED
@@ -278,7 +278,7 @@ class testMainClass(baseMainTestClass):
|
|
278
278
|
self.load_keys = get_cli_arg_value('--loadKeys')
|
279
279
|
self.ws_tests = get_cli_arg_value('--ws')
|
280
280
|
|
281
|
-
async def init(self, exchange_id, symbol_argv):
|
281
|
+
async def init(self, exchange_id, symbol_argv, method_argv):
|
282
282
|
self.parse_cli_args()
|
283
283
|
if self.request_tests and self.response_tests:
|
284
284
|
await self.run_static_request_tests(exchange_id, symbol_argv)
|
@@ -293,13 +293,12 @@ class testMainClass(baseMainTestClass):
|
|
293
293
|
if self.id_tests:
|
294
294
|
await self.run_broker_id_tests()
|
295
295
|
return
|
296
|
-
|
297
|
-
exchange_object = {
|
296
|
+
dump(self.new_line + '' + self.new_line + '' + '[INFO] TESTING ', self.ext, {
|
298
297
|
'exchange': exchange_id,
|
299
|
-
'symbol':
|
298
|
+
'symbol': symbol_argv,
|
299
|
+
'method': method_argv,
|
300
300
|
'isWs': self.ws_tests,
|
301
|
-
}
|
302
|
-
dump(self.new_line + '' + self.new_line + '' + '[INFO] TESTING ', self.ext, json_stringify(exchange_object), self.new_line)
|
301
|
+
}, self.new_line)
|
303
302
|
exchange_args = {
|
304
303
|
'verbose': self.verbose,
|
305
304
|
'debug': self.debug,
|
@@ -312,25 +311,22 @@ class testMainClass(baseMainTestClass):
|
|
312
311
|
await self.import_files(exchange)
|
313
312
|
assert len(list(self.test_files.keys())) > 0, 'Test files were not loaded' # ensure test files are found & filled
|
314
313
|
self.expand_settings(exchange)
|
315
|
-
|
316
|
-
await self.start_test(exchange,
|
314
|
+
self.check_if_specific_test_is_chosen(method_argv)
|
315
|
+
await self.start_test(exchange, symbol_argv)
|
317
316
|
exit_script(0) # needed to be explicitly finished for WS tests
|
318
317
|
|
319
|
-
def check_if_specific_test_is_chosen(self,
|
320
|
-
if
|
318
|
+
def check_if_specific_test_is_chosen(self, method_argv):
|
319
|
+
if method_argv is not None:
|
321
320
|
test_file_names = list(self.test_files.keys())
|
322
|
-
possible_method_names =
|
321
|
+
possible_method_names = method_argv.split(',') # i.e. `test.ts binance fetchBalance,fetchDeposits`
|
323
322
|
if len(possible_method_names) >= 1:
|
324
323
|
for i in range(0, len(test_file_names)):
|
325
324
|
test_file_name = test_file_names[i]
|
326
325
|
for j in range(0, len(possible_method_names)):
|
327
326
|
method_name = possible_method_names[j]
|
327
|
+
method_name = method_name.replace('()', '')
|
328
328
|
if test_file_name == method_name:
|
329
329
|
self.only_specific_tests.append(test_file_name)
|
330
|
-
# if method names were found, then remove them from symbolArgv
|
331
|
-
if len(self.only_specific_tests) > 0:
|
332
|
-
return None
|
333
|
-
return symbol_argv
|
334
330
|
|
335
331
|
async def import_files(self, exchange):
|
336
332
|
properties = list(exchange.has.keys())
|
@@ -1579,5 +1575,7 @@ class testMainClass(baseMainTestClass):
|
|
1579
1575
|
|
1580
1576
|
|
1581
1577
|
if __name__ == '__main__':
|
1582
|
-
|
1583
|
-
|
1578
|
+
argvSymbol = argv.symbol if argv.symbol and '/' in argv.symbol else None
|
1579
|
+
# in python, we check it through "symbol" arg (as opposed to JS/PHP) because argvs were already built above
|
1580
|
+
argvMethod = argv.symbol if argv.symbol and '()' in argv.symbol else None
|
1581
|
+
asyncio.run(testMainClass().init(argv.exchange, argvSymbol, argvMethod))
|
ccxt/test/test_sync.py
CHANGED
@@ -277,7 +277,7 @@ class testMainClass(baseMainTestClass):
|
|
277
277
|
self.load_keys = get_cli_arg_value('--loadKeys')
|
278
278
|
self.ws_tests = get_cli_arg_value('--ws')
|
279
279
|
|
280
|
-
def init(self, exchange_id, symbol_argv):
|
280
|
+
def init(self, exchange_id, symbol_argv, method_argv):
|
281
281
|
self.parse_cli_args()
|
282
282
|
if self.request_tests and self.response_tests:
|
283
283
|
self.run_static_request_tests(exchange_id, symbol_argv)
|
@@ -292,13 +292,12 @@ class testMainClass(baseMainTestClass):
|
|
292
292
|
if self.id_tests:
|
293
293
|
self.run_broker_id_tests()
|
294
294
|
return
|
295
|
-
|
296
|
-
exchange_object = {
|
295
|
+
dump(self.new_line + '' + self.new_line + '' + '[INFO] TESTING ', self.ext, {
|
297
296
|
'exchange': exchange_id,
|
298
|
-
'symbol':
|
297
|
+
'symbol': symbol_argv,
|
298
|
+
'method': method_argv,
|
299
299
|
'isWs': self.ws_tests,
|
300
|
-
}
|
301
|
-
dump(self.new_line + '' + self.new_line + '' + '[INFO] TESTING ', self.ext, json_stringify(exchange_object), self.new_line)
|
300
|
+
}, self.new_line)
|
302
301
|
exchange_args = {
|
303
302
|
'verbose': self.verbose,
|
304
303
|
'debug': self.debug,
|
@@ -311,25 +310,22 @@ class testMainClass(baseMainTestClass):
|
|
311
310
|
self.import_files(exchange)
|
312
311
|
assert len(list(self.test_files.keys())) > 0, 'Test files were not loaded' # ensure test files are found & filled
|
313
312
|
self.expand_settings(exchange)
|
314
|
-
|
315
|
-
self.start_test(exchange,
|
313
|
+
self.check_if_specific_test_is_chosen(method_argv)
|
314
|
+
self.start_test(exchange, symbol_argv)
|
316
315
|
exit_script(0) # needed to be explicitly finished for WS tests
|
317
316
|
|
318
|
-
def check_if_specific_test_is_chosen(self,
|
319
|
-
if
|
317
|
+
def check_if_specific_test_is_chosen(self, method_argv):
|
318
|
+
if method_argv is not None:
|
320
319
|
test_file_names = list(self.test_files.keys())
|
321
|
-
possible_method_names =
|
320
|
+
possible_method_names = method_argv.split(',') # i.e. `test.ts binance fetchBalance,fetchDeposits`
|
322
321
|
if len(possible_method_names) >= 1:
|
323
322
|
for i in range(0, len(test_file_names)):
|
324
323
|
test_file_name = test_file_names[i]
|
325
324
|
for j in range(0, len(possible_method_names)):
|
326
325
|
method_name = possible_method_names[j]
|
326
|
+
method_name = method_name.replace('()', '')
|
327
327
|
if test_file_name == method_name:
|
328
328
|
self.only_specific_tests.append(test_file_name)
|
329
|
-
# if method names were found, then remove them from symbolArgv
|
330
|
-
if len(self.only_specific_tests) > 0:
|
331
|
-
return None
|
332
|
-
return symbol_argv
|
333
329
|
|
334
330
|
def import_files(self, exchange):
|
335
331
|
properties = list(exchange.has.keys())
|
@@ -1578,5 +1574,7 @@ class testMainClass(baseMainTestClass):
|
|
1578
1574
|
|
1579
1575
|
|
1580
1576
|
if __name__ == '__main__':
|
1581
|
-
|
1582
|
-
|
1577
|
+
argvSymbol = argv.symbol if argv.symbol and '/' in argv.symbol else None
|
1578
|
+
# in python, we check it through "symbol" arg (as opposed to JS/PHP) because argvs were already built above
|
1579
|
+
argvMethod = argv.symbol if argv.symbol and '()' in argv.symbol else None
|
1580
|
+
(testMainClass().init(argv.exchange, argvSymbol, argvMethod))
|
ccxt/whitebit.py
CHANGED
@@ -41,7 +41,7 @@ class whitebit(Exchange, ImplicitAPI):
|
|
41
41
|
'swap': False,
|
42
42
|
'future': False,
|
43
43
|
'option': False,
|
44
|
-
'cancelAllOrders':
|
44
|
+
'cancelAllOrders': True,
|
45
45
|
'cancelOrder': True,
|
46
46
|
'cancelOrders': False,
|
47
47
|
'createOrder': True,
|
@@ -186,11 +186,13 @@ class whitebit(Exchange, ImplicitAPI):
|
|
186
186
|
'ping',
|
187
187
|
'markets',
|
188
188
|
'futures',
|
189
|
+
'platform/status',
|
189
190
|
],
|
190
191
|
},
|
191
192
|
'private': {
|
192
193
|
'post': [
|
193
194
|
'collateral-account/balance',
|
195
|
+
'collateral-account/balance-summary',
|
194
196
|
'collateral-account/positions/history',
|
195
197
|
'collateral-account/leverage',
|
196
198
|
'collateral-account/positions/open',
|
@@ -207,21 +209,40 @@ class whitebit(Exchange, ImplicitAPI):
|
|
207
209
|
'main-account/withdraw',
|
208
210
|
'main-account/withdraw-pay',
|
209
211
|
'main-account/transfer',
|
212
|
+
'main-account/smart/plans',
|
213
|
+
'main-account/smart/investment',
|
214
|
+
'main-account/smart/investment/close',
|
215
|
+
'main-account/smart/investments',
|
216
|
+
'main-account/fee',
|
217
|
+
'main-account/smart/interest-payment-history',
|
210
218
|
'trade-account/balance',
|
211
219
|
'trade-account/executed-history',
|
212
220
|
'trade-account/order',
|
213
221
|
'trade-account/order/history',
|
214
222
|
'order/collateral/limit',
|
215
223
|
'order/collateral/market',
|
216
|
-
'order/collateral/
|
224
|
+
'order/collateral/stop-limit',
|
225
|
+
'order/collateral/trigger-market',
|
217
226
|
'order/new',
|
218
227
|
'order/market',
|
219
228
|
'order/stock_market',
|
220
229
|
'order/stop_limit',
|
221
230
|
'order/stop_market',
|
222
231
|
'order/cancel',
|
232
|
+
'order/cancel/all',
|
233
|
+
'order/kill-switch',
|
234
|
+
'order/kill-switch/status',
|
235
|
+
'order/bulk',
|
236
|
+
'order/modify',
|
223
237
|
'orders',
|
238
|
+
'oco-orders',
|
239
|
+
'order/collateral/oco',
|
240
|
+
'order/oco-cancel',
|
241
|
+
'order/oto-cancel',
|
224
242
|
'profile/websocket_token',
|
243
|
+
'convert/estimate',
|
244
|
+
'convert/confirm',
|
245
|
+
'convert/history',
|
225
246
|
],
|
226
247
|
},
|
227
248
|
},
|
@@ -1203,6 +1224,58 @@ class whitebit(Exchange, ImplicitAPI):
|
|
1203
1224
|
response = self.v4PrivatePostOrderStockMarket(self.extend(request, params))
|
1204
1225
|
return self.parse_order(response)
|
1205
1226
|
|
1227
|
+
def edit_order(self, id: str, symbol: str, type: OrderType, side: OrderSide, amount: Num = None, price: Num = None, params={}):
|
1228
|
+
"""
|
1229
|
+
edit a trade order
|
1230
|
+
:see: https://docs.whitebit.com/private/http-trade-v4/#modify-order
|
1231
|
+
:param str id: cancel order id
|
1232
|
+
:param str symbol: unified symbol of the market to create an order in
|
1233
|
+
:param str type: 'market' or 'limit'
|
1234
|
+
:param str side: 'buy' or 'sell'
|
1235
|
+
:param float amount: how much of currency you want to trade in units of base currency
|
1236
|
+
:param float price: the price at which the order is to be fullfilled, in units of the base currency, ignored in market orders
|
1237
|
+
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1238
|
+
:returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
|
1239
|
+
"""
|
1240
|
+
if id is None:
|
1241
|
+
raise ArgumentsRequired(self.id + ' editOrder() requires a id argument')
|
1242
|
+
if symbol is None:
|
1243
|
+
raise ArgumentsRequired(self.id + ' editOrder() requires a symbol argument')
|
1244
|
+
self.load_markets()
|
1245
|
+
market = self.market(symbol)
|
1246
|
+
request = {
|
1247
|
+
'orderId': id,
|
1248
|
+
'market': market['id'],
|
1249
|
+
}
|
1250
|
+
clientOrderId = self.safe_string_2(params, 'clOrdId', 'clientOrderId')
|
1251
|
+
if clientOrderId is not None:
|
1252
|
+
# Update clientOrderId of the order
|
1253
|
+
request['clientOrderId'] = clientOrderId
|
1254
|
+
isLimitOrder = type == 'limit'
|
1255
|
+
stopPrice = self.safe_number_n(params, ['triggerPrice', 'stopPrice', 'activation_price'])
|
1256
|
+
isStopOrder = (stopPrice is not None)
|
1257
|
+
params = self.omit(params, ['clOrdId', 'clientOrderId', 'triggerPrice', 'stopPrice'])
|
1258
|
+
if isStopOrder:
|
1259
|
+
request['activation_price'] = self.price_to_precision(symbol, stopPrice)
|
1260
|
+
if isLimitOrder:
|
1261
|
+
# stop limit order
|
1262
|
+
request['amount'] = self.amount_to_precision(symbol, amount)
|
1263
|
+
request['price'] = self.price_to_precision(symbol, price)
|
1264
|
+
else:
|
1265
|
+
# stop market order
|
1266
|
+
if side == 'buy':
|
1267
|
+
# Use total parameter instead of amount for modify buy stop market order
|
1268
|
+
request['total'] = self.amount_to_precision(symbol, amount)
|
1269
|
+
else:
|
1270
|
+
request['amount'] = self.amount_to_precision(symbol, amount)
|
1271
|
+
else:
|
1272
|
+
request['amount'] = self.amount_to_precision(symbol, amount)
|
1273
|
+
if isLimitOrder:
|
1274
|
+
# limit order
|
1275
|
+
request['price'] = self.price_to_precision(symbol, price)
|
1276
|
+
response = self.v4PrivatePostOrderModify(self.extend(request, params))
|
1277
|
+
return self.parse_order(response)
|
1278
|
+
|
1206
1279
|
def cancel_order(self, id: str, symbol: Str = None, params={}):
|
1207
1280
|
"""
|
1208
1281
|
cancels an open order
|
@@ -1222,6 +1295,43 @@ class whitebit(Exchange, ImplicitAPI):
|
|
1222
1295
|
}
|
1223
1296
|
return self.v4PrivatePostOrderCancel(self.extend(request, params))
|
1224
1297
|
|
1298
|
+
def cancel_all_orders(self, symbol: Str = None, params={}):
|
1299
|
+
"""
|
1300
|
+
cancel all open orders
|
1301
|
+
:see: https://docs.whitebit.com/private/http-trade-v4/#cancel-all-orders
|
1302
|
+
:param str symbol: unified market symbol, only orders in the market of self symbol are cancelled when symbol is not None
|
1303
|
+
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1304
|
+
:param str [params.type]: market type, ['swap', 'spot']
|
1305
|
+
:param boolean [params.isMargin]: cancel all margin orders
|
1306
|
+
:returns dict[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
|
1307
|
+
"""
|
1308
|
+
self.load_markets()
|
1309
|
+
market = None
|
1310
|
+
request = {}
|
1311
|
+
if symbol is not None:
|
1312
|
+
market = self.market(symbol)
|
1313
|
+
request['market'] = market['id']
|
1314
|
+
type = None
|
1315
|
+
type, params = self.handle_market_type_and_params('cancelAllOrders', market, params)
|
1316
|
+
requestType = []
|
1317
|
+
if type == 'spot':
|
1318
|
+
isMargin = None
|
1319
|
+
isMargin, params = self.handle_option_and_params(params, 'cancelAllOrders', 'isMargin', False)
|
1320
|
+
if isMargin:
|
1321
|
+
requestType.append('margin')
|
1322
|
+
else:
|
1323
|
+
requestType.append('spot')
|
1324
|
+
elif type == 'swap':
|
1325
|
+
requestType.append('futures')
|
1326
|
+
else:
|
1327
|
+
raise NotSupported(self.id + ' cancelAllOrders() does not support ' + type + ' type')
|
1328
|
+
request['type'] = requestType
|
1329
|
+
response = self.v4PrivatePostOrderCancelAll(self.extend(request, params))
|
1330
|
+
#
|
1331
|
+
# []
|
1332
|
+
#
|
1333
|
+
return response
|
1334
|
+
|
1225
1335
|
def parse_balance(self, response) -> Balances:
|
1226
1336
|
balanceKeys = list(response.keys())
|
1227
1337
|
result = {}
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: ccxt
|
3
|
-
Version: 4.3.
|
3
|
+
Version: 4.3.5
|
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
|
@@ -262,13 +262,13 @@ console.log(version, Object.keys(exchanges));
|
|
262
262
|
|
263
263
|
All-in-one browser bundle (dependencies included), served from a CDN of your choice:
|
264
264
|
|
265
|
-
* jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.3.
|
266
|
-
* unpkg: https://unpkg.com/ccxt@4.3.
|
265
|
+
* jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.3.5/dist/ccxt.browser.js
|
266
|
+
* unpkg: https://unpkg.com/ccxt@4.3.5/dist/ccxt.browser.js
|
267
267
|
|
268
268
|
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.
|
269
269
|
|
270
270
|
```HTML
|
271
|
-
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.3.
|
271
|
+
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.3.5/dist/ccxt.browser.js"></script>
|
272
272
|
```
|
273
273
|
|
274
274
|
Creates a global `ccxt` object:
|
@@ -1,10 +1,10 @@
|
|
1
|
-
ccxt/__init__.py,sha256=
|
1
|
+
ccxt/__init__.py,sha256=SPjZtTc-g2C8kO8z7wwrleAYUBGCfU4aXu7OKThZf_c,15655
|
2
2
|
ccxt/ace.py,sha256=yGGKYViya2zCyr1DjWhEu9mknkDAEVsobHmrvJxHfX0,41420
|
3
3
|
ccxt/alpaca.py,sha256=6P2wAEGJQOjjoKQbzv1KvSuZvEZmOX987a1NqB7z9mk,46908
|
4
4
|
ccxt/ascendex.py,sha256=T5dbI_93gq24rPswAnm1rrncTMatz7XdcRQMYVbT8WQ,151384
|
5
5
|
ccxt/bequant.py,sha256=RBiAmaTbL35DgiV3Hl6uchLUd78V0z1T9riTlNsrpdc,1174
|
6
6
|
ccxt/bigone.py,sha256=rgg8BdMqBPa0jJjDh9xP7Y7Y6lMKAIJXzmE-g6EEm4I,92185
|
7
|
-
ccxt/binance.py,sha256=
|
7
|
+
ccxt/binance.py,sha256=gjmBjCTxD2zgeiYDHM_aq7i_FbKW04Ri7HuIjLYkfqo,611288
|
8
8
|
ccxt/binancecoinm.py,sha256=pncdw6Xw2X1Po-vEvAB4nL37scoS_axGAVxetPy1YQs,1645
|
9
9
|
ccxt/binanceus.py,sha256=hdcT4OnadcdFFFjF3GtM0nWv90jqojqwdVS3xWGuW40,9163
|
10
10
|
ccxt/binanceusdm.py,sha256=KPQGlCalQ0eGlPCs2tSanOxaP8O0zFRQjGntA16Yprw,2480
|
@@ -71,7 +71,7 @@ ccxt/independentreserve.py,sha256=nRprUlIbJ2ipFavUim5Ad46oYSEz8cpqFL1gg1hN-Mg,32
|
|
71
71
|
ccxt/indodax.py,sha256=0Uv6cHkrvmLHOV5YaMMfs3Le5qwbNtAmLP2eZl_m8wo,51779
|
72
72
|
ccxt/kraken.py,sha256=7DKXOeIDQqJ-6-z1d7Y7qK8E4l8myCRhtT2oz-z9B7k,124178
|
73
73
|
ccxt/krakenfutures.py,sha256=2QLNQ5Jw1vc2VELeVOtGNY029lKRAovFoV2iBzb_rCw,115673
|
74
|
-
ccxt/kucoin.py,sha256=
|
74
|
+
ccxt/kucoin.py,sha256=Cfjh909Fb4dF3oSQBtfFSHvsndeO9PINl5Z-u2Ym5-w,217613
|
75
75
|
ccxt/kucoinfutures.py,sha256=Mkzn3sg13r-qW_gEgt8RsrW4MezlZtX96DXJerCVw6k,118519
|
76
76
|
ccxt/kuna.py,sha256=vBWvg6-OPQvpEWwfCiZ8qkKaoTjiQ728l-Y5ThlcuVc,95980
|
77
77
|
ccxt/latoken.py,sha256=gVAVH_Yp68SzObhjtYXpMBn8g__tHAnHYL-4skplYgA,78780
|
@@ -98,7 +98,7 @@ ccxt/tradeogre.py,sha256=xweL2bfRU0hIe5Ge68Ei1KI7hUy9JgnjGmXBeraQRhM,23761
|
|
98
98
|
ccxt/upbit.py,sha256=DdWcGVelc6jXj1NnBAJ8MLIOHIGo2hxwCQw153bt_dI,81600
|
99
99
|
ccxt/wavesexchange.py,sha256=UN0I0imFsVCxg6UQLxAjBiNk9iQsZ6w9vNwhr6-zzaU,113400
|
100
100
|
ccxt/wazirx.py,sha256=6wp-sysqg8cJ7Dbr5qRruWOhVRfVQCEty7e4pwaM86M,51191
|
101
|
-
ccxt/whitebit.py,sha256=
|
101
|
+
ccxt/whitebit.py,sha256=xn_TWYXAYsxnXBj0wHWbaG7i8B4GMWsbWM6pqFZRYEU,106442
|
102
102
|
ccxt/woo.py,sha256=UuTqKobDDZ8k8yJaQYikwHbL5UxAhGls665FOcA-leY,137401
|
103
103
|
ccxt/yobit.py,sha256=rzUO9bMxZnDaL9EBSGaXwkEhde1qVcedXDxjQsOWCtc,53066
|
104
104
|
ccxt/zaif.py,sha256=qfJ1dB3lfeDobEFlEtS7QW1C7nkwSBtc3xsEFeU5Xwg,27952
|
@@ -202,18 +202,18 @@ ccxt/abstract/tradeogre.py,sha256=sIdA_22RHztwsIeznysBPtvta5V_mQwUXeYK6OyUJqQ,13
|
|
202
202
|
ccxt/abstract/upbit.py,sha256=fPIEwrzoNk01aQbxhuRveTFHHKGBfAweOn4Uv8Ru0UM,3576
|
203
203
|
ccxt/abstract/wavesexchange.py,sha256=8LIgZiPixoaUFPKGSWJpjI1BYXVqeQh9NLcjfXciZMc,19631
|
204
204
|
ccxt/abstract/wazirx.py,sha256=UfQvsyKwf4kImpkPlxdnoWDq0iUT5t1kSa2iDr_XkDw,2782
|
205
|
-
ccxt/abstract/whitebit.py,sha256=
|
205
|
+
ccxt/abstract/whitebit.py,sha256=FP5zn3RvbaRcJ2LLgeaTKra2L6aaq9Bj6gZ79VMzAwE,10977
|
206
206
|
ccxt/abstract/woo.py,sha256=E-QXVJKVI4EOW72NX6wv99px9EyitWtd9KWvXUc9Tyo,10216
|
207
207
|
ccxt/abstract/yobit.py,sha256=8ycfCO8ORFly9hc0Aa47sZyX4_ZKPXS9h9yJzI-uQ7Q,1339
|
208
208
|
ccxt/abstract/zaif.py,sha256=m15WHdl3gYy0GOXNZ8NEH8eE7sVh8c0T_ITNuU8vXeU,3935
|
209
209
|
ccxt/abstract/zonda.py,sha256=aSfewvRojzmuymX6QbOnDR8v9VFqWTULMHX9Y7kKD1M,5820
|
210
|
-
ccxt/async_support/__init__.py,sha256=
|
210
|
+
ccxt/async_support/__init__.py,sha256=lZZYaieoxFG9KuMVHlE2Y0JmtBOBEJpQLnXf3s8WGOM,15408
|
211
211
|
ccxt/async_support/ace.py,sha256=kbkibefA6HaHJSNoL_MPmbPUn7n2wyruxBOR7BXmUmQ,41644
|
212
212
|
ccxt/async_support/alpaca.py,sha256=Nsaff9RczBhiNF19RlqI6wggvEibV_2ICgB8H5Qiuck,47120
|
213
213
|
ccxt/async_support/ascendex.py,sha256=wlR3Mc8Mg7dIuzWZ59AWxAVPh0sVKddH-SFvdbq3ECc,152172
|
214
214
|
ccxt/async_support/bequant.py,sha256=1hTwHovo1bW1XTIc8ZKjvJ-Xg6LfmpGdzT7TepykaVM,1188
|
215
215
|
ccxt/async_support/bigone.py,sha256=_B8qO9qQWVMSd5c-CeBmYtm_IsrkweAZPTLUf7hiQaI,92639
|
216
|
-
ccxt/async_support/binance.py,sha256=
|
216
|
+
ccxt/async_support/binance.py,sha256=02ju9xG_sINaiThpnffiRdYhlys62DMM4YhxmKJKwsw,613956
|
217
217
|
ccxt/async_support/binancecoinm.py,sha256=IY3RLZptQA2nmZaUYRGfTa5ZY4VMWBpFYfwHc8zTHw0,1683
|
218
218
|
ccxt/async_support/binanceus.py,sha256=c-K3Tk7LaRJjmYdCx8vBOqsx01uXrtvt0PC2ekBiD0g,9177
|
219
219
|
ccxt/async_support/binanceusdm.py,sha256=-1r4A4tmV2pCiLGO80hzq7MIIj4MTzOD7buZGv6JauA,2518
|
@@ -280,7 +280,7 @@ ccxt/async_support/independentreserve.py,sha256=02gCggRgFSmIdJyG5vO-R2JXNbB3u6U1
|
|
280
280
|
ccxt/async_support/indodax.py,sha256=4ebi88kkmmJdLH1nvwds5EXNVNJV78U4CMFRSQ26ie0,52087
|
281
281
|
ccxt/async_support/kraken.py,sha256=-9YRs427hqLBqrzUZytoLmmkIF7URAqXpSetnXGhAUg,124762
|
282
282
|
ccxt/async_support/krakenfutures.py,sha256=7kXGYak9jf74JvgjE5WxNYiN3_-LdSR7MRBE14VtAHw,116143
|
283
|
-
ccxt/async_support/kucoin.py,sha256=
|
283
|
+
ccxt/async_support/kucoin.py,sha256=t20xKUkmEnKPRVJ3awCdvYDHK0Vx6OW1vUAun9kABNY,218685
|
284
284
|
ccxt/async_support/kucoinfutures.py,sha256=wMiqQhM6OAYsekbG2srW5VD4cCo2GekQxaX3PCc1Htk,119121
|
285
285
|
ccxt/async_support/kuna.py,sha256=6X17wtrcGt6NZL9ttZBfw1PWqaIvRv2r_SRmcfBVB_k,96396
|
286
286
|
ccxt/async_support/latoken.py,sha256=GqTk_f1xJJHXnAfSOA0J7rS2hDrIJzajTQZe1gRvtCU,79256
|
@@ -307,13 +307,13 @@ ccxt/async_support/tradeogre.py,sha256=xnAF6YPdGlkHmIuLRO64NjCQCPMgDBk_4ckZsArgp
|
|
307
307
|
ccxt/async_support/upbit.py,sha256=dCx6mmPIAsgYMzsyMbrJnaIt90JiSdUl5ir1pqyf8Zg,82082
|
308
308
|
ccxt/async_support/wavesexchange.py,sha256=QOHfIEzwYseB2KZA9Qdc9IFghEXSBPGt1G5fb768fkg,113950
|
309
309
|
ccxt/async_support/wazirx.py,sha256=UIppm29X9f2lvRn8aJfd9V_XqaNc0k13_LuXBOu_bfs,51493
|
310
|
-
ccxt/async_support/whitebit.py,sha256=
|
310
|
+
ccxt/async_support/whitebit.py,sha256=pkaQiCd6_OsbsmIV-uz0k0Rqr5XsnbHvD-FOpDRCGYI,107026
|
311
311
|
ccxt/async_support/woo.py,sha256=5UTnb8OUXOHT6n02WUl49WaKR6GfMuFHlymHgmIMb3w,138273
|
312
312
|
ccxt/async_support/yobit.py,sha256=EgBPquMnD4GU32jnWp1FXUxlMyC1nYPtRzJCZUG_HMY,53350
|
313
313
|
ccxt/async_support/zaif.py,sha256=PaHcaNijKkhocrw6DZoSBNUjBOLNlkUYtsJvPAqkx68,28134
|
314
314
|
ccxt/async_support/zonda.py,sha256=89EXub_DW_p4Rpza9iiW-hAaj3ucKbNdZyV2ETQ3ESY,80866
|
315
315
|
ccxt/async_support/base/__init__.py,sha256=aVYSsFi--b4InRs9zDN_wtCpj8odosAB726JdUHavrk,67
|
316
|
-
ccxt/async_support/base/exchange.py,sha256=
|
316
|
+
ccxt/async_support/base/exchange.py,sha256=M8u-KvR1xtyqyr6YSaaLURs7Rdlu11z0Uq3K7Eq9AXw,105447
|
317
317
|
ccxt/async_support/base/throttler.py,sha256=tvDVcdRUVYi8fZRlEcnqtgzcgB_KMUMRs5Pu8tuU-tU,1847
|
318
318
|
ccxt/async_support/base/ws/__init__.py,sha256=uockzpLuwntKGZbs5EOWFe-Zg-k6Cj7GhNJLc_RX0so,1791
|
319
319
|
ccxt/async_support/base/ws/aiohttp_client.py,sha256=Ed1765emEde2Hj8Ys6f5EjS54ZI1wQ0qIhd04eB7yhU,5751
|
@@ -327,14 +327,14 @@ ccxt/async_support/base/ws/order_book_side.py,sha256=Pxrq22nCODckJ6G1OXkYEmUunIu
|
|
327
327
|
ccxt/base/__init__.py,sha256=eTx1OE3HJjspFUQjGm6LBhaQiMKJnXjkdP-JUXknyQ0,1320
|
328
328
|
ccxt/base/decimal_to_precision.py,sha256=fgWRBzRTtsf3r2INyS4f7WHlzgjB5YM1ekiwqD21aac,6634
|
329
329
|
ccxt/base/errors.py,sha256=u_zxABGVPU_K5oLEEZQWOI0_F5Q-SAUq1g1q6AFh7IM,4107
|
330
|
-
ccxt/base/exchange.py,sha256=
|
330
|
+
ccxt/base/exchange.py,sha256=owtewkvnbli4PTHWee-gDDnfA0eonnab9AZAm9IGOYQ,273021
|
331
331
|
ccxt/base/precise.py,sha256=_xfu54sV0vWNnOfGTKRFykeuWP8mn4K1m9lk1tcllX4,8565
|
332
332
|
ccxt/base/types.py,sha256=ZDDuKtyi-6j98YdcFSa8SS1OfwuSer_PJp1QXTsaMb0,7992
|
333
|
-
ccxt/pro/__init__.py,sha256=
|
333
|
+
ccxt/pro/__init__.py,sha256=klWchZiCMgD7jlSsOKW-N_cg2xSjxY_VzFFGPO0U2L8,6998
|
334
334
|
ccxt/pro/alpaca.py,sha256=7ePyWli0949ti5UheIn553xmnFpedrNc2W5CKauSZio,27167
|
335
335
|
ccxt/pro/ascendex.py,sha256=fCM3EujSfJvtvffqI56UAstTtwjXFIocwukm15cF8rE,35432
|
336
336
|
ccxt/pro/bequant.py,sha256=5zbsP8BHQTUZ8ZNL6uaACxDbUClgkOV4SYfXT_LfQVg,1351
|
337
|
-
ccxt/pro/binance.py,sha256
|
337
|
+
ccxt/pro/binance.py,sha256=--6tQbf691v6GlA8V-c95i50N85GVTM4G8KmKT1p-tY,152488
|
338
338
|
ccxt/pro/binancecoinm.py,sha256=s_evAyeT23VqscMRuSjrCK2CSaNsP-oc8A8noSuaLwQ,976
|
339
339
|
ccxt/pro/binanceus.py,sha256=mpvmzc7kK3cGShM5EOvadOvwlj1xWsWzX9fIapuq2eQ,2321
|
340
340
|
ccxt/pro/binanceusdm.py,sha256=S0eT662O2ReplsihWk42nhJWqw1XsODpeDQa9eFVVt8,1357
|
@@ -353,7 +353,7 @@ ccxt/pro/bitstamp.py,sha256=nlqEaAMHpFI-FbQBXnvBee6DW0LcZRprJ8Sp8bIzsSs,20886
|
|
353
353
|
ccxt/pro/bitvavo.py,sha256=5xzpVRMcI2z0r41eoN-NORr5-qQYBao_bMsH8all9Q0,56143
|
354
354
|
ccxt/pro/blockchaincom.py,sha256=Uv1ijvxvFGrqFPH6iifCk5AgQYTDsXUa5n0ktpusVjM,29560
|
355
355
|
ccxt/pro/bybit.py,sha256=INf7Qfo1CRR5m6yv9w6YNirE0hFOED6J1ztV9kkQ53M,75022
|
356
|
-
ccxt/pro/cex.py,sha256=
|
356
|
+
ccxt/pro/cex.py,sha256=psU0k-icE931Z_wpkr16IdSZ2iDUwLnqJz3KUmQ5Xls,58380
|
357
357
|
ccxt/pro/coinbase.py,sha256=icUrGgWl5IJ7C4-XRnaIXbSRs1dgIdktiDEmSG4-iUs,25652
|
358
358
|
ccxt/pro/coinbaseinternational.py,sha256=9Pbe6je_6nqA7SviyzmcR_4CscKdQzBYNLECOYJ4BoU,25428
|
359
359
|
ccxt/pro/coinbasepro.py,sha256=94ZXmg-Ez5tSiUYP98nu-gWvuXb-Dk4WHMVsXOR8AK0,38945
|
@@ -379,7 +379,7 @@ ccxt/pro/kraken.py,sha256=YCC_Qtq-C3Ds-reEkkF2qpEh_XY1zUV3SLVzEGKkko8,60658
|
|
379
379
|
ccxt/pro/krakenfutures.py,sha256=QTeLsAXmM3CxLbDI6ktESj8LYQYhJISsB95Za1nFzh8,63917
|
380
380
|
ccxt/pro/kucoin.py,sha256=wxUoyXjTV0iU5X4C2EdWRFFTzljICccpRJq4b9MWmmg,50705
|
381
381
|
ccxt/pro/kucoinfutures.py,sha256=sjhdtLP8WMisETvXnl6TP1xVx7TK5iP0x0R4LE7M7gI,46006
|
382
|
-
ccxt/pro/lbank.py,sha256=
|
382
|
+
ccxt/pro/lbank.py,sha256=QnxR5n96itlssIk9_4Qv5kNeVgEsKOFua5UODFWnUes,35105
|
383
383
|
ccxt/pro/luno.py,sha256=2Y-8IQrrmwX8Y1lLWVDtrFjZD3t3qtMZJQ_JjNwj65s,12348
|
384
384
|
ccxt/pro/mexc.py,sha256=Sgvl5dhKz8LxcQkdnbIWwiKI3zmjZu2o8ZG2fO6Gr2U,42551
|
385
385
|
ccxt/pro/ndax.py,sha256=Yrdy4UxjrDwO7gNMmSy09Wj6kHnRx1n0DTWmfirMEj8,22643
|
@@ -394,7 +394,7 @@ ccxt/pro/probit.py,sha256=RLTnROQUmX31XQ3ymIZkiDkop3eiSVK70Yw81yDcde4,22822
|
|
394
394
|
ccxt/pro/upbit.py,sha256=CSqwaNCxECo9FI7aq_7ege0c8IjWEmsoPZL06Kw9KDo,9654
|
395
395
|
ccxt/pro/wazirx.py,sha256=icMUhtixMs5UvVOtqJLSJYMJ9hdNixipmT8bGs6Im7s,30043
|
396
396
|
ccxt/pro/whitebit.py,sha256=7WNCZBD6ZY_bRU_BXBe-ei2D7NfDHwyoZtOVbfgcxYQ,35021
|
397
|
-
ccxt/pro/woo.py,sha256=
|
397
|
+
ccxt/pro/woo.py,sha256=zfaDRY-2WcR6DjidEFcY5loJ09qlvZjzTx71YILAKA8,36988
|
398
398
|
ccxt/static_dependencies/__init__.py,sha256=GpOAh5lJ5Kyk1K1lWf9DzDZeZ-prHXXK38dVpW5GPfc,84
|
399
399
|
ccxt/static_dependencies/ecdsa/__init__.py,sha256=Xaj0G79BLtBt2YZcOOMV8qOlQZ7fIJznNiHhiEEZfQA,594
|
400
400
|
ccxt/static_dependencies/ecdsa/_version.py,sha256=eMIr0XQiX8_th_x4iAd0JFcYKLowY9dYz33-vKVFIPI,18461
|
@@ -493,8 +493,8 @@ ccxt/static_dependencies/toolz/curried/__init__.py,sha256=iOuFY4c1kixe_h8lxuWIW5
|
|
493
493
|
ccxt/static_dependencies/toolz/curried/exceptions.py,sha256=gKFOHDIayAWnX2uC8Z2KrUwpP-UpoqI5Tx1a859QdVY,344
|
494
494
|
ccxt/static_dependencies/toolz/curried/operator.py,sha256=ML92mknkAwzBl2NCm-4werSUmJEtSHNY9NSzhseNM9s,525
|
495
495
|
ccxt/test/__init__.py,sha256=GKPbEcj0Rrz5HG-GUm-iY1IHhDYmlvcBXZAGk6-m2CI,141
|
496
|
-
ccxt/test/test_async.py,sha256=
|
497
|
-
ccxt/test/test_sync.py,sha256=
|
496
|
+
ccxt/test/test_async.py,sha256=34iKOw7F0shFFMDpoWP_kyW352K0TxDIzF9jcpvNHxo,78607
|
497
|
+
ccxt/test/test_sync.py,sha256=IXnONonFfHJ96IhGjCHraUI0QTX7zMQXYAefl2gf47g,77588
|
498
498
|
ccxt/test/base/__init__.py,sha256=LvE9DEw5mNiyFrE-XnfzFFuSOvZOyi7ec__PF7lpnYs,1889
|
499
499
|
ccxt/test/base/test_account.py,sha256=lxwZXsY8qZgomBoEiomUmWcseSp--orJx-xmm3E1vYs,978
|
500
500
|
ccxt/test/base/test_balance.py,sha256=W-IcVRiJNLtdKEWEEhmhWjtFRuHFtoywNiGQNtYSuc0,2931
|
@@ -529,7 +529,7 @@ ccxt/test/base/test_ticker.py,sha256=cMTIMb1oySNORUCmqI5ZzMswlEyCF6gJMah3vfvo8wQ
|
|
529
529
|
ccxt/test/base/test_trade.py,sha256=PMtmB8V38dpaP-eb8h488xYMlR6D69yCOhsA1RuWrUA,2336
|
530
530
|
ccxt/test/base/test_trading_fee.py,sha256=2aDCNJtqBkTC_AieO0l1HYGq5hz5qkWlkWb9Nv_fcwk,1066
|
531
531
|
ccxt/test/base/test_transaction.py,sha256=BTbB4UHHXkrvYgwbrhh867nVRlevmIkIrz1W_odlQJI,1434
|
532
|
-
ccxt-4.3.
|
533
|
-
ccxt-4.3.
|
534
|
-
ccxt-4.3.
|
535
|
-
ccxt-4.3.
|
532
|
+
ccxt-4.3.5.dist-info/METADATA,sha256=yxLfxbXp8iB1yTGtXQ2SoOk0yMTaPm7OJRyQ4QtfQsY,111189
|
533
|
+
ccxt-4.3.5.dist-info/WHEEL,sha256=P2T-6epvtXQ2cBOE_U1K4_noqlJFN3tj15djMgEu4NM,110
|
534
|
+
ccxt-4.3.5.dist-info/top_level.txt,sha256=CkQDuCTDKNcImPV60t36G6MdYfxsAPNiSaEwifVoVMo,5
|
535
|
+
ccxt-4.3.5.dist-info/RECORD,,
|
File without changes
|
File without changes
|