ccxt 4.3.73__py2.py3-none-any.whl → 4.3.74__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/binance.py +5 -0
- ccxt/abstract/binancecoinm.py +5 -0
- ccxt/abstract/binanceus.py +5 -0
- ccxt/abstract/binanceusdm.py +5 -0
- ccxt/ace.py +1 -1
- ccxt/async_support/__init__.py +1 -1
- ccxt/async_support/ace.py +1 -1
- ccxt/async_support/base/exchange.py +1 -1
- ccxt/async_support/binance.py +222 -84
- ccxt/async_support/bybit.py +2 -2
- ccxt/async_support/woo.py +1 -1
- ccxt/async_support/yobit.py +49 -26
- ccxt/base/exchange.py +1 -1
- ccxt/binance.py +222 -84
- ccxt/bybit.py +2 -2
- ccxt/pro/__init__.py +1 -1
- ccxt/pro/alpaca.py +5 -0
- ccxt/pro/binance.py +15 -2
- ccxt/pro/bitfinex.py +5 -0
- ccxt/test/tests_async.py +3 -2
- ccxt/test/tests_helpers.py +3 -0
- ccxt/test/tests_sync.py +3 -2
- ccxt/woo.py +1 -1
- ccxt/yobit.py +48 -26
- {ccxt-4.3.73.dist-info → ccxt-4.3.74.dist-info}/METADATA +6 -6
- {ccxt-4.3.73.dist-info → ccxt-4.3.74.dist-info}/RECORD +30 -30
- {ccxt-4.3.73.dist-info → ccxt-4.3.74.dist-info}/LICENSE.txt +0 -0
- {ccxt-4.3.73.dist-info → ccxt-4.3.74.dist-info}/WHEEL +0 -0
- {ccxt-4.3.73.dist-info → ccxt-4.3.74.dist-info}/top_level.txt +0 -0
ccxt/pro/alpaca.py
CHANGED
@@ -56,6 +56,7 @@ class alpaca(ccxt.async_support.alpaca):
|
|
56
56
|
async def watch_ticker(self, symbol: str, params={}) -> Ticker:
|
57
57
|
"""
|
58
58
|
watches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
|
59
|
+
:see: https://docs.alpaca.markets/docs/real-time-crypto-pricing-data#quotes
|
59
60
|
:param str symbol: unified symbol of the market to fetch the ticker for
|
60
61
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
61
62
|
:returns dict: a `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`
|
@@ -129,6 +130,7 @@ class alpaca(ccxt.async_support.alpaca):
|
|
129
130
|
async def watch_ohlcv(self, symbol: str, timeframe='1m', since: Int = None, limit: Int = None, params={}) -> List[list]:
|
130
131
|
"""
|
131
132
|
watches historical candlestick data containing the open, high, low, and close price, and the volume of a market
|
133
|
+
:see: https://docs.alpaca.markets/docs/real-time-crypto-pricing-data#bars
|
132
134
|
:param str symbol: unified symbol of the market to fetch OHLCV data for
|
133
135
|
:param str timeframe: the length of time each candle represents
|
134
136
|
:param int [since]: timestamp in ms of the earliest candle to fetch
|
@@ -181,6 +183,7 @@ class alpaca(ccxt.async_support.alpaca):
|
|
181
183
|
async def watch_order_book(self, symbol: str, limit: Int = None, params={}) -> OrderBook:
|
182
184
|
"""
|
183
185
|
watches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
|
186
|
+
:see: https://docs.alpaca.markets/docs/real-time-crypto-pricing-data#orderbooks
|
184
187
|
:param str symbol: unified symbol of the market to fetch the order book for
|
185
188
|
:param int [limit]: the maximum amount of order book entries to return.
|
186
189
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
@@ -254,6 +257,7 @@ class alpaca(ccxt.async_support.alpaca):
|
|
254
257
|
async def watch_trades(self, symbol: str, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
|
255
258
|
"""
|
256
259
|
watches information on multiple trades made in a market
|
260
|
+
:see: https://docs.alpaca.markets/docs/real-time-crypto-pricing-data#trades
|
257
261
|
:param str symbol: unified market symbol of the market trades were made in
|
258
262
|
:param int [since]: the earliest time in ms to fetch orders for
|
259
263
|
:param int [limit]: the maximum number of trade structures to retrieve
|
@@ -302,6 +306,7 @@ class alpaca(ccxt.async_support.alpaca):
|
|
302
306
|
async def watch_my_trades(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
|
303
307
|
"""
|
304
308
|
watches information on multiple trades made by the user
|
309
|
+
:see: https://docs.alpaca.markets/docs/websocket-streaming#trade-updates
|
305
310
|
:param str symbol: unified market symbol of the market trades were made in
|
306
311
|
:param int [since]: the earliest time in ms to fetch trades for
|
307
312
|
:param int [limit]: the maximum number of trade structures to retrieve
|
ccxt/pro/binance.py
CHANGED
@@ -864,10 +864,15 @@ class binance(ccxt.async_support.binance):
|
|
864
864
|
async def watch_trades_for_symbols(self, symbols: List[str], since: Int = None, limit: Int = None, params={}) -> List[Trade]:
|
865
865
|
"""
|
866
866
|
get the list of most recent trades for a list of symbols
|
867
|
+
:see: https://binance-docs.github.io/apidocs/spot/en/#aggregate-trade-streams
|
868
|
+
:see: https://binance-docs.github.io/apidocs/spot/en/#trade-streams
|
869
|
+
:see: https://binance-docs.github.io/apidocs/futures/en/#aggregate-trade-streams
|
870
|
+
:see: https://binance-docs.github.io/apidocs/delivery/en/#aggregate-trade-streams
|
867
871
|
:param str[] symbols: unified symbol of the market to fetch trades for
|
868
872
|
:param int [since]: timestamp in ms of the earliest trade to fetch
|
869
873
|
:param int [limit]: the maximum amount of trades to fetch
|
870
874
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
875
|
+
:param str [params.name]: the name of the method to call, 'trade' or 'aggTrade', default is 'trade'
|
871
876
|
:returns dict[]: a list of `trade structures <https://docs.ccxt.com/#/?id=public-trades>`
|
872
877
|
"""
|
873
878
|
await self.load_markets()
|
@@ -878,8 +883,9 @@ class binance(ccxt.async_support.binance):
|
|
878
883
|
if symbolsLength > 200:
|
879
884
|
raise BadRequest(self.id + ' watchTradesForSymbols() accepts 200 symbols at most. To watch more symbols call watchTradesForSymbols() multiple times')
|
880
885
|
streamHash += '::' + ','.join(symbols)
|
881
|
-
|
882
|
-
name = self.
|
886
|
+
name = None
|
887
|
+
name, params = self.handle_option_and_params(params, 'watchTradesForSymbols', 'name', 'trade')
|
888
|
+
params = self.omit(params, 'callerMethodName')
|
883
889
|
firstMarket = self.market(symbols[0])
|
884
890
|
type = firstMarket['type']
|
885
891
|
if firstMarket['contract']:
|
@@ -914,12 +920,18 @@ class binance(ccxt.async_support.binance):
|
|
914
920
|
async def watch_trades(self, symbol: str, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
|
915
921
|
"""
|
916
922
|
get the list of most recent trades for a particular symbol
|
923
|
+
:see: https://binance-docs.github.io/apidocs/spot/en/#aggregate-trade-streams
|
924
|
+
:see: https://binance-docs.github.io/apidocs/spot/en/#trade-streams
|
925
|
+
:see: https://binance-docs.github.io/apidocs/futures/en/#aggregate-trade-streams
|
926
|
+
:see: https://binance-docs.github.io/apidocs/delivery/en/#aggregate-trade-streams
|
917
927
|
:param str symbol: unified symbol of the market to fetch trades for
|
918
928
|
:param int [since]: timestamp in ms of the earliest trade to fetch
|
919
929
|
:param int [limit]: the maximum amount of trades to fetch
|
920
930
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
931
|
+
:param str [params.name]: the name of the method to call, 'trade' or 'aggTrade', default is 'trade'
|
921
932
|
:returns dict[]: a list of `trade structures <https://docs.ccxt.com/#/?id=public-trades>`
|
922
933
|
"""
|
934
|
+
params['callerMethodName'] = 'watchTrades'
|
923
935
|
return await self.watch_trades_for_symbols([symbol], since, limit, params)
|
924
936
|
|
925
937
|
def parse_ws_trade(self, trade, market=None) -> Trade:
|
@@ -1166,6 +1178,7 @@ class binance(ccxt.async_support.binance):
|
|
1166
1178
|
subscribe = {
|
1167
1179
|
'id': requestId,
|
1168
1180
|
}
|
1181
|
+
params = self.omit(params, 'callerMethodName')
|
1169
1182
|
symbol, timeframe, candles = await self.watch_multiple(url, messageHashes, self.extend(request, params), messageHashes, subscribe)
|
1170
1183
|
if self.newUpdates:
|
1171
1184
|
limit = candles.getLimit(symbol, limit)
|
ccxt/pro/bitfinex.py
CHANGED
@@ -62,6 +62,7 @@ class bitfinex(ccxt.async_support.bitfinex):
|
|
62
62
|
async def watch_trades(self, symbol: str, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
|
63
63
|
"""
|
64
64
|
get the list of most recent trades for a particular symbol
|
65
|
+
:see: https://docs.bitfinex.com/v1/reference/ws-public-trades
|
65
66
|
:param str symbol: unified symbol of the market to fetch trades for
|
66
67
|
:param int [since]: timestamp in ms of the earliest trade to fetch
|
67
68
|
:param int [limit]: the maximum amount of trades to fetch
|
@@ -78,6 +79,7 @@ class bitfinex(ccxt.async_support.bitfinex):
|
|
78
79
|
async def watch_ticker(self, symbol: str, params={}) -> Ticker:
|
79
80
|
"""
|
80
81
|
watches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
|
82
|
+
:see: https://docs.bitfinex.com/v1/reference/ws-public-ticker
|
81
83
|
:param str symbol: unified symbol of the market to fetch the ticker for
|
82
84
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
83
85
|
:returns dict: a `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`
|
@@ -238,6 +240,7 @@ class bitfinex(ccxt.async_support.bitfinex):
|
|
238
240
|
async def watch_order_book(self, symbol: str, limit: Int = None, params={}) -> OrderBook:
|
239
241
|
"""
|
240
242
|
watches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
|
243
|
+
:see: https://docs.bitfinex.com/v1/reference/ws-public-order-books
|
241
244
|
:param str symbol: unified symbol of the market to fetch the order book for
|
242
245
|
:param int [limit]: the maximum amount of order book entries to return
|
243
246
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
@@ -430,6 +433,8 @@ class bitfinex(ccxt.async_support.bitfinex):
|
|
430
433
|
async def watch_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
|
431
434
|
"""
|
432
435
|
watches information on multiple orders made by the user
|
436
|
+
:see: https://docs.bitfinex.com/v1/reference/ws-auth-order-updates
|
437
|
+
:see: https://docs.bitfinex.com/v1/reference/ws-auth-order-snapshots
|
433
438
|
:param str symbol: unified market symbol of the market orders were made in
|
434
439
|
:param int [since]: the earliest time in ms to fetch orders for
|
435
440
|
:param int [limit]: the maximum number of order structures to retrieve
|
ccxt/test/tests_async.py
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
import asyncio
|
4
4
|
|
5
5
|
|
6
|
-
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
|
6
|
+
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, get_root_exception, 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
|
7
7
|
|
8
8
|
class testMainClass(baseMainTestClass):
|
9
9
|
def parse_cli_args(self):
|
@@ -261,7 +261,8 @@ class testMainClass(baseMainTestClass):
|
|
261
261
|
try:
|
262
262
|
await self.test_method(method_name, exchange, args, is_public)
|
263
263
|
return True
|
264
|
-
except Exception as
|
264
|
+
except Exception as ex:
|
265
|
+
e = get_root_exception(ex)
|
265
266
|
is_load_markets = (method_name == 'loadMarkets')
|
266
267
|
is_auth_error = (isinstance(e, AuthenticationError))
|
267
268
|
is_not_supported = (isinstance(e, NotSupported))
|
ccxt/test/tests_helpers.py
CHANGED
ccxt/test/tests_sync.py
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
2
|
|
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
|
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, get_root_exception, 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):
|
@@ -258,7 +258,8 @@ class testMainClass(baseMainTestClass):
|
|
258
258
|
try:
|
259
259
|
self.test_method(method_name, exchange, args, is_public)
|
260
260
|
return True
|
261
|
-
except Exception as
|
261
|
+
except Exception as ex:
|
262
|
+
e = get_root_exception(ex)
|
262
263
|
is_load_markets = (method_name == 'loadMarkets')
|
263
264
|
is_auth_error = (isinstance(e, AuthenticationError))
|
264
265
|
is_not_supported = (isinstance(e, NotSupported))
|
ccxt/woo.py
CHANGED
@@ -155,7 +155,7 @@ class woo(Exchange, ImplicitAPI):
|
|
155
155
|
'https://support.woo.org/hc/en-001/articles/4404611795353--Trading-Fees',
|
156
156
|
],
|
157
157
|
'referral': {
|
158
|
-
'url': 'https://x.woo.org/register?ref=
|
158
|
+
'url': 'https://x.woo.org/register?ref=DIJT0CNL',
|
159
159
|
'discount': 0.35,
|
160
160
|
},
|
161
161
|
},
|
ccxt/yobit.py
CHANGED
@@ -541,31 +541,7 @@ class yobit(Exchange, ImplicitAPI):
|
|
541
541
|
'info': ticker,
|
542
542
|
}, market)
|
543
543
|
|
544
|
-
def
|
545
|
-
"""
|
546
|
-
:see: https://yobit.net/en/api
|
547
|
-
fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
|
548
|
-
:param str[]|None symbols: unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
|
549
|
-
:param dict [params]: extra parameters specific to the exchange API endpoint
|
550
|
-
:returns dict: a dictionary of `ticker structures <https://docs.ccxt.com/#/?id=ticker-structure>`
|
551
|
-
"""
|
552
|
-
if symbols is None:
|
553
|
-
raise ArgumentsRequired(self.id + ' fetchTickers() requires "symbols" argument')
|
554
|
-
self.load_markets()
|
555
|
-
symbols = self.market_symbols(symbols)
|
556
|
-
ids = None
|
557
|
-
if symbols is None:
|
558
|
-
ids = self.ids
|
559
|
-
else:
|
560
|
-
ids = self.market_ids(symbols)
|
561
|
-
idsLength: number = len(ids)
|
562
|
-
idsString = '-'.join(ids)
|
563
|
-
maxLength = self.safe_integer(self.options, 'maxUrlLength', 2048)
|
564
|
-
# max URL length is 2048 symbols, including http schema, hostname, tld, etc...
|
565
|
-
lenghtOfBaseUrl = 30 # the url including api-base and endpoint dir is 30 chars
|
566
|
-
actualLength = len(idsString) + lenghtOfBaseUrl
|
567
|
-
if actualLength > maxLength:
|
568
|
-
raise ArgumentsRequired(self.id + ' fetchTickers() is being requested for ' + str(idsLength) + ' markets(which has an URL length of ' + str(actualLength) + ' characters), but it exceedes max URL length(' + str(maxLength) + '), please pass limisted symbols array to fetchTickers to fit in one request')
|
544
|
+
def fetch_tickers_helper(self, idsString: str, params={}) -> Tickers:
|
569
545
|
request: dict = {
|
570
546
|
'pair': idsString,
|
571
547
|
}
|
@@ -578,7 +554,53 @@ class yobit(Exchange, ImplicitAPI):
|
|
578
554
|
market = self.safe_market(id)
|
579
555
|
symbol = market['symbol']
|
580
556
|
result[symbol] = self.parse_ticker(ticker, market)
|
581
|
-
return
|
557
|
+
return result
|
558
|
+
|
559
|
+
def fetch_tickers(self, symbols: Strings = None, params={}) -> Tickers:
|
560
|
+
"""
|
561
|
+
:see: https://yobit.net/en/api
|
562
|
+
fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
|
563
|
+
:param str[]|None symbols: unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
|
564
|
+
:param dict [params]: extra parameters specific to the exchange API endpoint
|
565
|
+
:param dict [params.all]: you can set to `true` for convenience to fetch all tickers from self exchange by sending multiple requests
|
566
|
+
:returns dict: a dictionary of `ticker structures <https://docs.ccxt.com/#/?id=ticker-structure>`
|
567
|
+
"""
|
568
|
+
allSymbols = None
|
569
|
+
allSymbols, params = self.handle_param_bool(params, 'all', False)
|
570
|
+
if symbols is None and not allSymbols:
|
571
|
+
raise ArgumentsRequired(self.id + ' fetchTickers() requires "symbols" argument or use `params["all"] = True` to send multiple requests for all markets')
|
572
|
+
self.load_markets()
|
573
|
+
promises = []
|
574
|
+
maxLength = self.safe_integer(self.options, 'maxUrlLength', 2048)
|
575
|
+
# max URL length is 2048 symbols, including http schema, hostname, tld, etc...
|
576
|
+
lenghtOfBaseUrl = 40 # safe space for the url including api-base and endpoint dir is 30 chars
|
577
|
+
if allSymbols:
|
578
|
+
symbols = self.symbols
|
579
|
+
ids = ''
|
580
|
+
for i in range(0, len(self.ids)):
|
581
|
+
id = self.ids[i]
|
582
|
+
prefix = '' if (ids == '') else '-'
|
583
|
+
ids += prefix + id
|
584
|
+
if len(ids) > maxLength:
|
585
|
+
promises.append(self.fetch_tickers_helper(ids, params))
|
586
|
+
ids = ''
|
587
|
+
if ids != '':
|
588
|
+
promises.append(self.fetch_tickers_helper(ids, params))
|
589
|
+
else:
|
590
|
+
symbols = self.market_symbols(symbols)
|
591
|
+
ids = self.market_ids(symbols)
|
592
|
+
idsLength: number = len(ids)
|
593
|
+
idsString = '-'.join(ids)
|
594
|
+
actualLength = len(idsString) + lenghtOfBaseUrl
|
595
|
+
if actualLength > maxLength:
|
596
|
+
raise ArgumentsRequired(self.id + ' fetchTickers() is being requested for ' + str(idsLength) + ' markets(which has an URL length of ' + str(actualLength) + ' characters), but it exceedes max URL length(' + str(maxLength) + '), please pass limisted symbols array to fetchTickers to fit in one request')
|
597
|
+
promises.append(self.fetch_tickers_helper(idsString, params))
|
598
|
+
resultAll = promises
|
599
|
+
finalResult = {}
|
600
|
+
for i in range(0, len(resultAll)):
|
601
|
+
result = self.filter_by_array_tickers(resultAll[i], 'symbol', symbols)
|
602
|
+
finalResult = self.extend(finalResult, result)
|
603
|
+
return finalResult
|
582
604
|
|
583
605
|
def fetch_ticker(self, symbol: str, params={}) -> Ticker:
|
584
606
|
"""
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: ccxt
|
3
|
-
Version: 4.3.
|
3
|
+
Version: 4.3.74
|
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
|
@@ -102,7 +102,7 @@ Current feature list:
|
|
102
102
|
| [](https://futures.kucoin.com/?rcode=E5wkqe) | kucoinfutures | [KuCoin Futures](https://futures.kucoin.com/?rcode=E5wkqe) | [](https://docs.kucoin.com/futures) | cex | [](https://github.com/ccxt/ccxt/wiki/Certification) | [](https://ccxt.pro) | |
|
103
103
|
| [](https://www.mexc.com/register?inviteCode=mexc-1FQ1GNu1) | mexc | [MEXC Global](https://www.mexc.com/register?inviteCode=mexc-1FQ1GNu1) | [](https://mexcdevelop.github.io/apidocs/) | cex | [](https://github.com/ccxt/ccxt/wiki/Certification) | [](https://ccxt.pro) | |
|
104
104
|
| [](https://www.okx.com/join/CCXT2023) | okx | [OKX](https://www.okx.com/join/CCXT2023) | [](https://www.okx.com/docs-v5/en/) | cex | [](https://github.com/ccxt/ccxt/wiki/Certification) | [](https://ccxt.pro) | [](https://www.okx.com/join/CCXT2023) |
|
105
|
-
| [](https://x.woo.org/register?ref=
|
105
|
+
| [](https://x.woo.org/register?ref=DIJT0CNL) | woo | [WOO X](https://x.woo.org/register?ref=DIJT0CNL) | [](https://docs.woo.org/) | cex | [](https://github.com/ccxt/ccxt/wiki/Certification) | [](https://ccxt.pro) | [](https://x.woo.org/register?ref=DIJT0CNL) |
|
106
106
|
| [](https://dex.woo.org/en/trade?ref=CCXT) | woofipro | [WOOFI PRO](https://dex.woo.org/en/trade?ref=CCXT) | [](https://orderly.network/docs/build-on-evm/building-on-evm) | dex | [](https://github.com/ccxt/ccxt/wiki/Certification) | [](https://ccxt.pro) | [](https://dex.woo.org/en/trade?ref=CCXT) |
|
107
107
|
|
108
108
|
## Supported Cryptocurrency Exchanges
|
@@ -207,7 +207,7 @@ The CCXT library currently supports the following 102 cryptocurrency exchange ma
|
|
207
207
|
| [](https://wx.network) | wavesexchange | [Waves.Exchange](https://wx.network) | [](https://docs.wx.network) | dex | | |
|
208
208
|
| [](https://wazirx.com/invite/k7rrnks5) | wazirx | [WazirX](https://wazirx.com/invite/k7rrnks5) | [](https://docs.wazirx.com/#public-rest-api-for-wazirx) | cex | | [](https://ccxt.pro) |
|
209
209
|
| [](https://whitebit.com/referral/d9bdf40e-28f2-4b52-b2f9-cd1415d82963) | whitebit | [WhiteBit](https://whitebit.com/referral/d9bdf40e-28f2-4b52-b2f9-cd1415d82963) | [](https://github.com/whitebit-exchange/api-docs) | cex | | [](https://ccxt.pro) |
|
210
|
-
| [](https://x.woo.org/register?ref=
|
210
|
+
| [](https://x.woo.org/register?ref=DIJT0CNL) | woo | [WOO X](https://x.woo.org/register?ref=DIJT0CNL) | [](https://docs.woo.org/) | cex | [](https://github.com/ccxt/ccxt/wiki/Certification) | [](https://ccxt.pro) |
|
211
211
|
| [](https://dex.woo.org/en/trade?ref=CCXT) | woofipro | [WOOFI PRO](https://dex.woo.org/en/trade?ref=CCXT) | [](https://orderly.network/docs/build-on-evm/building-on-evm) | dex | [](https://github.com/ccxt/ccxt/wiki/Certification) | [](https://ccxt.pro) |
|
212
212
|
| [](https://www.xt.com/en/accounts/register?ref=9PTM9VW) | xt | [XT](https://www.xt.com/en/accounts/register?ref=9PTM9VW) | [](https://doc.xt.com/) | cex | | [](https://ccxt.pro) |
|
213
213
|
| [](https://www.yobit.net) | yobit | [YoBit](https://www.yobit.net) | [](https://www.yobit.net/en/api/) | cex | | |
|
@@ -270,13 +270,13 @@ console.log(version, Object.keys(exchanges));
|
|
270
270
|
|
271
271
|
All-in-one browser bundle (dependencies included), served from a CDN of your choice:
|
272
272
|
|
273
|
-
* jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.3.
|
274
|
-
* unpkg: https://unpkg.com/ccxt@4.3.
|
273
|
+
* jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.3.74/dist/ccxt.browser.min.js
|
274
|
+
* unpkg: https://unpkg.com/ccxt@4.3.74/dist/ccxt.browser.min.js
|
275
275
|
|
276
276
|
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.
|
277
277
|
|
278
278
|
```HTML
|
279
|
-
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.3.
|
279
|
+
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.3.74/dist/ccxt.browser.min.js"></script>
|
280
280
|
```
|
281
281
|
|
282
282
|
Creates a global `ccxt` object:
|
@@ -1,10 +1,10 @@
|
|
1
|
-
ccxt/__init__.py,sha256=
|
2
|
-
ccxt/ace.py,sha256=
|
1
|
+
ccxt/__init__.py,sha256=V8R0ChX9psJYlcMvltx_xE2EaEv7PBUWOZdCqkKnPBo,16417
|
2
|
+
ccxt/ace.py,sha256=Gee4ymA83iAuBFm3J8NaTb7qmu9buV2trA676KCtSVg,42383
|
3
3
|
ccxt/alpaca.py,sha256=HQuhQZSFGRlT-BaCUSEZmxpzYp6tll2zn63qn3gTmoU,47470
|
4
4
|
ccxt/ascendex.py,sha256=4aEwibO_me6khr66z8JFqDBxe2gtFOWIFBE7ulBEJPs,151933
|
5
5
|
ccxt/bequant.py,sha256=RBiAmaTbL35DgiV3Hl6uchLUd78V0z1T9riTlNsrpdc,1174
|
6
6
|
ccxt/bigone.py,sha256=PBciIENMufQQ6cxukdze5hhQ5vFOqBtMHDfTwT4nUuY,93086
|
7
|
-
ccxt/binance.py,sha256=
|
7
|
+
ccxt/binance.py,sha256=oSG3ug4JdLv0U8hSB3ayhqDoci2A4sQOG7IX6OArUIg,641495
|
8
8
|
ccxt/binancecoinm.py,sha256=arFnEh8mErSyi23eVPWE4iwoT7PWQyxGGVJCKCy6UJY,1702
|
9
9
|
ccxt/binanceus.py,sha256=hdcT4OnadcdFFFjF3GtM0nWv90jqojqwdVS3xWGuW40,9163
|
10
10
|
ccxt/binanceusdm.py,sha256=bAPcJj5HLxoCdPolriM8sJpoTBwbV78vBTbKRmWhNP4,2632
|
@@ -35,7 +35,7 @@ ccxt/btcalpha.py,sha256=UcCCDZ_7EM-Q2tHU1IQPEA2DErFsLhrSfX-Oy-Q2uL4,36715
|
|
35
35
|
ccxt/btcbox.py,sha256=9-P15L-OiZRzz0ZOtgO3bf73kuHro9u3NYf3QjeYv4k,27744
|
36
36
|
ccxt/btcmarkets.py,sha256=0gMC0vvmuDJwcnllHMUZsQRV6QWA1-Cbq1N1F9rIUW8,52697
|
37
37
|
ccxt/btcturk.py,sha256=bQ8sJq5iEj9oq2R17uDadPWKcnIQG8id5UmdlpHfFy8,36992
|
38
|
-
ccxt/bybit.py,sha256=
|
38
|
+
ccxt/bybit.py,sha256=A0y3gqD38urhUDSNrFmss-wRClWMLJsXDdZBvq7UQlQ,415853
|
39
39
|
ccxt/cex.py,sha256=YQtARIBP7cY3y-AqRarEH_mVh7_ftt18jLebhpL3hxQ,70084
|
40
40
|
ccxt/coinbase.py,sha256=OLcnNdnOxnbTY54BEvptJCysDBU3ZZGw6eJcHalaFFc,217105
|
41
41
|
ccxt/coinbaseadvanced.py,sha256=d5g6nRx-NCcCwZDdtp8FsI2D-pRjSvnAP9ISSKY_nCQ,538
|
@@ -102,10 +102,10 @@ ccxt/vertex.py,sha256=lHM2VbZCIYS4EeJ7Y9KoZcEepF7Cue7YITItyNXLiqk,121703
|
|
102
102
|
ccxt/wavesexchange.py,sha256=8KrV-euIdDeARQ-h-T-nTlFJ9hk6TLuwGl8U7Xr_Lgk,114825
|
103
103
|
ccxt/wazirx.py,sha256=LVHNdononi8FrZpT0pYiJoS-NrNi7_uIZ6Qbu8dJRPc,52405
|
104
104
|
ccxt/whitebit.py,sha256=ZkM8nGbqqiX6Aon-CwXileEE_9dhK3kVrJOSk1SBw7E,118768
|
105
|
-
ccxt/woo.py,sha256=
|
105
|
+
ccxt/woo.py,sha256=NJejIgZqXPsVM3pIffDXbYOeaLDzFnfxR3tO3Ksf9pM,153028
|
106
106
|
ccxt/woofipro.py,sha256=JQdGizBIOXPmCHnKZsH71CfzCum1_mNCpFymV-JaX-U,115350
|
107
107
|
ccxt/xt.py,sha256=esWHEOeI7Kbm53GsZB-7Ds34yvyoJjanL_MIBvADuIE,202646
|
108
|
-
ccxt/yobit.py,sha256=
|
108
|
+
ccxt/yobit.py,sha256=q1oj-wf0VwNw3U7kC5AOyHRSxWVZO6s8xGscBJiSLhI,54553
|
109
109
|
ccxt/zaif.py,sha256=LgeOsvAo4ShQW1s-RidgUYK4DnRU-Dk0eJG0Ca6M_9U,28862
|
110
110
|
ccxt/zonda.py,sha256=KZfv46H6YsVpTQLSt4BvMiGFQr0WRLmbUpeODVv21O0,81419
|
111
111
|
ccxt/abstract/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -114,10 +114,10 @@ ccxt/abstract/alpaca.py,sha256=vgzqnRTvEnAbLYgfDzGpmVUZxRLWC8BWA6nQ16m-xXY,10382
|
|
114
114
|
ccxt/abstract/ascendex.py,sha256=5A8Zgq77jsdHlEzlTW_2nDybUUVfNVVOu6BgY3TWqRM,11394
|
115
115
|
ccxt/abstract/bequant.py,sha256=OTBtNu3DQeAqAC_Lbi0NePUs-ZQQllcLrVDI2G04nwQ,15601
|
116
116
|
ccxt/abstract/bigone.py,sha256=bQdIXCVkKgnZ7ZjpQ1widGDlXNe0PtP_12EQKoEN9z0,4895
|
117
|
-
ccxt/abstract/binance.py,sha256=
|
118
|
-
ccxt/abstract/binancecoinm.py,sha256=
|
119
|
-
ccxt/abstract/binanceus.py,sha256=
|
120
|
-
ccxt/abstract/binanceusdm.py,sha256=
|
117
|
+
ccxt/abstract/binance.py,sha256=mCCkDgqU2KgtU5UMnZLApbezbWLgJUFEzZUMAlsVRRw,93740
|
118
|
+
ccxt/abstract/binancecoinm.py,sha256=mCCkDgqU2KgtU5UMnZLApbezbWLgJUFEzZUMAlsVRRw,93740
|
119
|
+
ccxt/abstract/binanceus.py,sha256=nh45H6Wb2xD6hVAhBP8s5CJYoiuiPEcCzVZLAm0tCog,100460
|
120
|
+
ccxt/abstract/binanceusdm.py,sha256=mCCkDgqU2KgtU5UMnZLApbezbWLgJUFEzZUMAlsVRRw,93740
|
121
121
|
ccxt/abstract/bingx.py,sha256=Rb93j2sCYAi0egAE4TAAOG7XuC5XdHQaGQZC9V-meqQ,20662
|
122
122
|
ccxt/abstract/bit2c.py,sha256=np6i756kSB5dO3Nj6POLKxkWkpYcsGg-4LS8BwPrizI,2830
|
123
123
|
ccxt/abstract/bitbank.py,sha256=hrHsD7Uvtyy2o2lzCHau3-eNq16pnZ3-YDQ6Tq_sxYU,2735
|
@@ -218,13 +218,13 @@ ccxt/abstract/xt.py,sha256=JkWvsic3L2O968BCr9H5Wd5NIbRE9aTT2A-9WbAtl0c,27146
|
|
218
218
|
ccxt/abstract/yobit.py,sha256=8ycfCO8ORFly9hc0Aa47sZyX4_ZKPXS9h9yJzI-uQ7Q,1339
|
219
219
|
ccxt/abstract/zaif.py,sha256=m15WHdl3gYy0GOXNZ8NEH8eE7sVh8c0T_ITNuU8vXeU,3935
|
220
220
|
ccxt/abstract/zonda.py,sha256=X-hCW0SdX3YKZWixDyW-O2211M58Rno8kKJ6quY7rw4,7183
|
221
|
-
ccxt/async_support/__init__.py,sha256=
|
222
|
-
ccxt/async_support/ace.py,sha256=
|
221
|
+
ccxt/async_support/__init__.py,sha256=2nsEj3_izz4A-22T63N2zBmS8uxUBiD-7ms5dblttp8,16230
|
222
|
+
ccxt/async_support/ace.py,sha256=zBmLUKH691a2BH1sPzlJPg-uO7lD6Ys92Rv8WSzNtoo,42607
|
223
223
|
ccxt/async_support/alpaca.py,sha256=495vDvdF1IWlsh9QhUnMtkMuINdD0EzeFGlUVqCf8TE,47682
|
224
224
|
ccxt/async_support/ascendex.py,sha256=LK259BdUqU0_STGRH6DmTgaR-7lXqFpZHFVACf2um5c,152721
|
225
225
|
ccxt/async_support/bequant.py,sha256=1hTwHovo1bW1XTIc8ZKjvJ-Xg6LfmpGdzT7TepykaVM,1188
|
226
226
|
ccxt/async_support/bigone.py,sha256=PZcs9u6FI6uAyJKiiNGIGDA-uainz4aKEOrC1Q6KIk4,93540
|
227
|
-
ccxt/async_support/binance.py,sha256=
|
227
|
+
ccxt/async_support/binance.py,sha256=Gpr1ixczhWgduKTuL2399I5i4Z3-8H4oHuhCVoyGv7Y,644217
|
228
228
|
ccxt/async_support/binancecoinm.py,sha256=yeE73xG5UXD_X3VPul6DMGnV_mgJfWYskpas1BUDdCU,1740
|
229
229
|
ccxt/async_support/binanceus.py,sha256=c-K3Tk7LaRJjmYdCx8vBOqsx01uXrtvt0PC2ekBiD0g,9177
|
230
230
|
ccxt/async_support/binanceusdm.py,sha256=8ugRkx7vyYmn67wdkEEf2f-DFMGAoC4t09usKlPVNyw,2670
|
@@ -255,7 +255,7 @@ ccxt/async_support/btcalpha.py,sha256=DgzrJ6cczUCDZr-QLUxMpazeudEFdQ_OzXiQiJM4Hb
|
|
255
255
|
ccxt/async_support/btcbox.py,sha256=FGIj8il6VZL56_dDYsAMwp4DpdKNt_vbMXV6VZ2boCI,27968
|
256
256
|
ccxt/async_support/btcmarkets.py,sha256=x1-s5uVioHyvNJoBxhxP8eUUslTDwQnZMU0FWfu1Fd4,53047
|
257
257
|
ccxt/async_support/btcturk.py,sha256=P3bg0XG0sAi-8ge9ZFzQqZHsoGOGfxBjkhIDo4VPSK4,37210
|
258
|
-
ccxt/async_support/bybit.py,sha256=
|
258
|
+
ccxt/async_support/bybit.py,sha256=Y4M2hjFVUS47hNd_32Cab4ZrebvmdzK4gZ1D9hq1JVI,417693
|
259
259
|
ccxt/async_support/cex.py,sha256=5KZ9qt4WsUAkH2rkHn7zW7SwlB9FumruLELdKF4LFoE,70434
|
260
260
|
ccxt/async_support/coinbase.py,sha256=RMcQFh7tSzTe8QqFaz9WmH2Op8sXD8jWpZfLBt_13QQ,218259
|
261
261
|
ccxt/async_support/coinbaseadvanced.py,sha256=Kupwnuxiu_qTjwCNV2asacoDUNFQvcaHNAznUJPhdQs,552
|
@@ -322,14 +322,14 @@ ccxt/async_support/vertex.py,sha256=6eOWWpuDaGHhSMkOb1CR7ZhlnaMVNWVLoIKOK_W4mT4,
|
|
322
322
|
ccxt/async_support/wavesexchange.py,sha256=kdF7Nm5a34mtgIj2HWTLuV3plt4K3EBKMpLENIxtoMk,115375
|
323
323
|
ccxt/async_support/wazirx.py,sha256=bnUpw9be3o4l2Hxm3jcfNXn5bMyZlgqoG8BGPusuIzs,52707
|
324
324
|
ccxt/async_support/whitebit.py,sha256=JpY0YJHVmvg0OOqRAXRfRV_KuscYglWQ1YVt3DkHrsg,119418
|
325
|
-
ccxt/async_support/woo.py,sha256=
|
325
|
+
ccxt/async_support/woo.py,sha256=JjarWyUMmZ2X2UaKFhHyo-SD_mk5kYIWkYoSUdIe3g0,153996
|
326
326
|
ccxt/async_support/woofipro.py,sha256=xXfZj56dOmUZ67z7tsRiHL-XVtFlst-UXRPh6qRvrE0,116030
|
327
327
|
ccxt/async_support/xt.py,sha256=9k__X07qzgB_NwSplLfJL4_4eKtHslL8Qlfv6xBwZKU,203800
|
328
|
-
ccxt/async_support/yobit.py,sha256=
|
328
|
+
ccxt/async_support/yobit.py,sha256=JuH_yClCl_cd5L-BMTt3MPAvIF61Wpqc3W7H-fno6Hs,54881
|
329
329
|
ccxt/async_support/zaif.py,sha256=-ZTr8M2JaIRCL90VrbCDXBMAsZwbiwsFChSQ2rWODuQ,29044
|
330
330
|
ccxt/async_support/zonda.py,sha256=jncr6Wg12S72CTpu6mCKCse1pm1f8oefVQurQSrFvP0,81733
|
331
331
|
ccxt/async_support/base/__init__.py,sha256=aVYSsFi--b4InRs9zDN_wtCpj8odosAB726JdUHavrk,67
|
332
|
-
ccxt/async_support/base/exchange.py,sha256
|
332
|
+
ccxt/async_support/base/exchange.py,sha256=-Vr3rDTBf_ZgT1xSsVh4SANOOOAg768Impv1cboAjaw,110793
|
333
333
|
ccxt/async_support/base/throttler.py,sha256=tvDVcdRUVYi8fZRlEcnqtgzcgB_KMUMRs5Pu8tuU-tU,1847
|
334
334
|
ccxt/async_support/base/ws/__init__.py,sha256=uockzpLuwntKGZbs5EOWFe-Zg-k6Cj7GhNJLc_RX0so,1791
|
335
335
|
ccxt/async_support/base/ws/aiohttp_client.py,sha256=5IEiT0elWI9a7Vr-KV0jgmlbpLJWBzIlrLaCkTKGaqY,5752
|
@@ -343,20 +343,20 @@ ccxt/async_support/base/ws/order_book_side.py,sha256=GhnGUt78pJ-AYL_Dq9produGjmB
|
|
343
343
|
ccxt/base/__init__.py,sha256=eTx1OE3HJjspFUQjGm6LBhaQiMKJnXjkdP-JUXknyQ0,1320
|
344
344
|
ccxt/base/decimal_to_precision.py,sha256=fgWRBzRTtsf3r2INyS4f7WHlzgjB5YM1ekiwqD21aac,6634
|
345
345
|
ccxt/base/errors.py,sha256=tosnf1tDaBn4YMCbWVNWyDYzqft-ImVtyjqJb6q83Y4,4369
|
346
|
-
ccxt/base/exchange.py,sha256=
|
346
|
+
ccxt/base/exchange.py,sha256=UYrcDNip7_HsHo00hJhqGvMHg5pmTBnnHRGfsbohe40,294200
|
347
347
|
ccxt/base/precise.py,sha256=koce64Yrp6vFbGijJtUt-QQ6XhJgeGTCksZ871FPp_A,8886
|
348
348
|
ccxt/base/types.py,sha256=TaP_RElKjGEZWuzyp4o4u2YhREyTG3rUeVT6gDffY9A,9613
|
349
|
-
ccxt/pro/__init__.py,sha256=
|
350
|
-
ccxt/pro/alpaca.py,sha256=
|
349
|
+
ccxt/pro/__init__.py,sha256=5RB2uTufCZu4RNhDJBqlzjsb6s5q9YGHFA7TyU8obVE,7608
|
350
|
+
ccxt/pro/alpaca.py,sha256=xh1yg1Ok-Zh_Mfx-MBjNrfJDs6MUU0exFfEj3GuQPC4,27631
|
351
351
|
ccxt/pro/ascendex.py,sha256=181FIeztchLqGmgecRJEN8F8xEM45D5aMKhC-5nuNfU,35467
|
352
352
|
ccxt/pro/bequant.py,sha256=33OEUWBi4D9-2w8CmkwN3aF1qS-AlLqX3pxrWwNbXPY,1552
|
353
|
-
ccxt/pro/binance.py,sha256=
|
353
|
+
ccxt/pro/binance.py,sha256=3xB2V7DJ6Y5SR7nr9loh03-j7c3KQdK3_Dcm1KYJTBo,175118
|
354
354
|
ccxt/pro/binancecoinm.py,sha256=LlgF4rXHHrsQMaklhTEzSiE6U9V25AjHHg_DRat7Mf0,1036
|
355
355
|
ccxt/pro/binanceus.py,sha256=_IXpS_wyH0nEtsLR7cJLtrUlsNQoG0MSUVo3PV0RDDc,1946
|
356
356
|
ccxt/pro/binanceusdm.py,sha256=lLdOv0d-lM-1wfCc_y_POb6GdmVIiX7PFzmKTWsVyNw,1512
|
357
357
|
ccxt/pro/bingx.py,sha256=2wFRTui3vj2QGmisn--hjug0bRAgt9Mvru9AiWpXmZo,53911
|
358
358
|
ccxt/pro/bitcoincom.py,sha256=zAX6hiz4hS6Un8dSGp88rpnvItxQHfNmsfF0IZ2xIVA,1181
|
359
|
-
ccxt/pro/bitfinex.py,sha256=
|
359
|
+
ccxt/pro/bitfinex.py,sha256=m4ERTUt7QIZhAYu8NP818wOHSLRi2vK-_Z5-LXD8zjA,25257
|
360
360
|
ccxt/pro/bitfinex2.py,sha256=kZVHZwfu1_E27p9Cx55uDVGcEPA6Oy-BQk8t2fbwOmg,43058
|
361
361
|
ccxt/pro/bitget.py,sha256=15JcegpMeu1HROmDtuTP3WmUw3lEoV4TYjBfWAWnCkk,74754
|
362
362
|
ccxt/pro/bithumb.py,sha256=dqYKWebxFg4rsP7jg3oBnCUBcpZAoqAmZsozAU9pYds,16835
|
@@ -646,12 +646,12 @@ ccxt/static_dependencies/typing_extensions/typing_extensions.py,sha256=P042Op4VQ
|
|
646
646
|
ccxt/static_dependencies/typing_inspect/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
647
647
|
ccxt/static_dependencies/typing_inspect/typing_inspect.py,sha256=5gIWomLPfuDpgd3gX1GlnX0MuXM3VorR4j2W2qXORiQ,28269
|
648
648
|
ccxt/test/__init__.py,sha256=GKPbEcj0Rrz5HG-GUm-iY1IHhDYmlvcBXZAGk6-m2CI,141
|
649
|
-
ccxt/test/tests_async.py,sha256=
|
650
|
-
ccxt/test/tests_helpers.py,sha256=
|
649
|
+
ccxt/test/tests_async.py,sha256=NShOLO2-HzYsh07U7aiUGssiv-AZ_p88h-NuQub9OKU,84681
|
650
|
+
ccxt/test/tests_helpers.py,sha256=xhOILoZ_x3RSfQjtKt6AQlkp9DkOtpTQe8GAUUZoM6s,10069
|
651
651
|
ccxt/test/tests_init.py,sha256=eVwwUHujX9t4rjgo4TqEeg7DDhR1Hb_e2SJN8NVGyl0,998
|
652
|
-
ccxt/test/tests_sync.py,sha256=
|
653
|
-
ccxt-4.3.
|
654
|
-
ccxt-4.3.
|
655
|
-
ccxt-4.3.
|
656
|
-
ccxt-4.3.
|
657
|
-
ccxt-4.3.
|
652
|
+
ccxt/test/tests_sync.py,sha256=6Arr2TcJpNg9eEpH_JQeBbLzaMPlb94J1P11HGlbpPg,83761
|
653
|
+
ccxt-4.3.74.dist-info/LICENSE.txt,sha256=EIb9221AhMHV7xF1_55STFdKTFsnJVJYkRpY2Lnvo5w,1068
|
654
|
+
ccxt-4.3.74.dist-info/METADATA,sha256=VSNS5YojJZC2kR3NNYbPE_I1KzorZN3ObIJDP_XDt-0,116642
|
655
|
+
ccxt-4.3.74.dist-info/WHEEL,sha256=z9j0xAa_JmUKMpmz72K0ZGALSM_n-wQVmGbleXx2VHg,110
|
656
|
+
ccxt-4.3.74.dist-info/top_level.txt,sha256=CkQDuCTDKNcImPV60t36G6MdYfxsAPNiSaEwifVoVMo,5
|
657
|
+
ccxt-4.3.74.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|