ccxt 4.3.72__py2.py3-none-any.whl → 4.3.73__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/__init__.py +1 -1
- ccxt/async_support/__init__.py +1 -1
- ccxt/async_support/base/exchange.py +1 -1
- ccxt/async_support/base/ws/client.py +1 -1
- ccxt/base/exchange.py +1 -1
- ccxt/pro/__init__.py +1 -1
- ccxt/pro/binance.py +16 -1
- ccxt/pro/kucoin.py +4 -0
- ccxt/pro/woo.py +111 -12
- {ccxt-4.3.72.dist-info → ccxt-4.3.73.dist-info}/METADATA +4 -4
- {ccxt-4.3.72.dist-info → ccxt-4.3.73.dist-info}/RECORD +14 -14
- {ccxt-4.3.72.dist-info → ccxt-4.3.73.dist-info}/LICENSE.txt +0 -0
- {ccxt-4.3.72.dist-info → ccxt-4.3.73.dist-info}/WHEEL +0 -0
- {ccxt-4.3.72.dist-info → ccxt-4.3.73.dist-info}/top_level.txt +0 -0
ccxt/__init__.py
CHANGED
ccxt/async_support/__init__.py
CHANGED
ccxt/base/exchange.py
CHANGED
ccxt/pro/__init__.py
CHANGED
ccxt/pro/binance.py
CHANGED
@@ -1098,11 +1098,15 @@ class binance(ccxt.async_support.binance):
|
|
1098
1098
|
async def watch_ohlcv(self, symbol: str, timeframe='1m', since: Int = None, limit: Int = None, params={}) -> List[list]:
|
1099
1099
|
"""
|
1100
1100
|
watches historical candlestick data containing the open, high, low, and close price, and the volume of a market
|
1101
|
+
:see: https://binance-docs.github.io/apidocs/spot/en/#kline-candlestick-data
|
1102
|
+
:see: https://binance-docs.github.io/apidocs/futures/en/#kline-candlestick-data
|
1103
|
+
:see: https://binance-docs.github.io/apidocs/delivery/en/#kline-candlestick-data
|
1101
1104
|
:param str symbol: unified symbol of the market to fetch OHLCV data for
|
1102
1105
|
:param str timeframe: the length of time each candle represents
|
1103
1106
|
:param int [since]: timestamp in ms of the earliest candle to fetch
|
1104
1107
|
:param int [limit]: the maximum amount of candles to fetch
|
1105
1108
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1109
|
+
:param dict [params.timezone]: if provided, kline intervals are interpreted in that timezone instead of UTC, example '+08:00'
|
1106
1110
|
:returns int[][]: A list of candles ordered, open, high, low, close, volume
|
1107
1111
|
"""
|
1108
1112
|
params['callerMethodName'] = 'watchOHLCV'
|
@@ -1112,10 +1116,14 @@ class binance(ccxt.async_support.binance):
|
|
1112
1116
|
async def watch_ohlcv_for_symbols(self, symbolsAndTimeframes: List[List[str]], since: Int = None, limit: Int = None, params={}):
|
1113
1117
|
"""
|
1114
1118
|
watches historical candlestick data containing the open, high, low, and close price, and the volume of a market
|
1119
|
+
:see: https://binance-docs.github.io/apidocs/spot/en/#kline-candlestick-data
|
1120
|
+
:see: https://binance-docs.github.io/apidocs/futures/en/#kline-candlestick-data
|
1121
|
+
:see: https://binance-docs.github.io/apidocs/delivery/en/#kline-candlestick-data
|
1115
1122
|
:param str[][] symbolsAndTimeframes: array of arrays containing unified symbols and timeframes to fetch OHLCV data for, example [['BTC/USDT', '1m'], ['LTC/USDT', '5m']]
|
1116
1123
|
:param int [since]: timestamp in ms of the earliest candle to fetch
|
1117
1124
|
:param int [limit]: the maximum amount of candles to fetch
|
1118
1125
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1126
|
+
:param dict [params.timezone]: if provided, kline intervals are interpreted in that timezone instead of UTC, example '+08:00'
|
1119
1127
|
:returns int[][]: A list of candles ordered, open, high, low, close, volume
|
1120
1128
|
"""
|
1121
1129
|
await self.load_markets()
|
@@ -1127,6 +1135,10 @@ class binance(ccxt.async_support.binance):
|
|
1127
1135
|
type = firstMarket['type']
|
1128
1136
|
if firstMarket['contract']:
|
1129
1137
|
type = 'future' if firstMarket['linear'] else 'delivery'
|
1138
|
+
isSpot = (type == 'spot')
|
1139
|
+
timezone = None
|
1140
|
+
timezone, params = self.handle_param_string(params, 'timezone', None)
|
1141
|
+
isUtc8 = (timezone is not None) and ((timezone == '+08:00') or Precise.string_eq(timezone, '8'))
|
1130
1142
|
rawHashes = []
|
1131
1143
|
messageHashes = []
|
1132
1144
|
for i in range(0, len(symbolsAndTimeframes)):
|
@@ -1139,7 +1151,10 @@ class binance(ccxt.async_support.binance):
|
|
1139
1151
|
if klineType == 'indexPriceKline':
|
1140
1152
|
# weird behavior for index price kline we can't use the perp suffix
|
1141
1153
|
marketId = marketId.replace('_perp', '')
|
1142
|
-
|
1154
|
+
shouldUseUTC8 = (isUtc8 and isSpot)
|
1155
|
+
suffix = '@+08:00'
|
1156
|
+
utcSuffix = suffix if shouldUseUTC8 else ''
|
1157
|
+
rawHashes.append(marketId + '@' + klineType + '_' + interval + utcSuffix)
|
1143
1158
|
messageHashes.append('ohlcv::' + symbolString + '::' + timeframeString)
|
1144
1159
|
url = self.urls['api']['ws'][type] + '/' + self.stream(type, 'multipleOHLCV')
|
1145
1160
|
requestId = self.request_id(url)
|
ccxt/pro/kucoin.py
CHANGED
@@ -1024,6 +1024,10 @@ class kucoin(ccxt.async_support.kucoin):
|
|
1024
1024
|
tradeId = self.safe_string(trade, 'tradeId')
|
1025
1025
|
price = self.safe_string(trade, 'matchPrice')
|
1026
1026
|
amount = self.safe_string(trade, 'matchSize')
|
1027
|
+
if price is None:
|
1028
|
+
# /spot/tradeFills
|
1029
|
+
price = self.safe_string(trade, 'price')
|
1030
|
+
amount = self.safe_string(trade, 'size')
|
1027
1031
|
order = self.safe_string(trade, 'orderId')
|
1028
1032
|
timestamp = self.safe_integer_product_2(trade, 'ts', 'time', 0.000001)
|
1029
1033
|
feeCurrency = market['quote']
|
ccxt/pro/woo.py
CHANGED
@@ -90,32 +90,48 @@ class woo(ccxt.async_support.woo):
|
|
90
90
|
|
91
91
|
async def watch_order_book(self, symbol: str, limit: Int = None, params={}) -> OrderBook:
|
92
92
|
"""
|
93
|
+
:see: https://docs.woo.org/#orderbookupdate
|
93
94
|
:see: https://docs.woo.org/#orderbook
|
94
95
|
watches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
|
95
96
|
:param str symbol: unified symbol of the market to fetch the order book for
|
96
97
|
:param int [limit]: the maximum amount of order book entries to return.
|
97
98
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
99
|
+
:param str [params.method]: either(default) 'orderbook' or 'orderbookupdate', default is 'orderbook'
|
98
100
|
:returns dict: A dictionary of `order book structures <https://docs.ccxt.com/#/?id=order-book-structure>` indexed by market symbols
|
99
101
|
"""
|
100
102
|
await self.load_markets()
|
101
|
-
|
103
|
+
method = None
|
104
|
+
method, params = self.handle_option_and_params(params, 'watchOrderBook', 'method', 'orderbook')
|
102
105
|
market = self.market(symbol)
|
103
|
-
topic = market['id'] + '@' +
|
106
|
+
topic = market['id'] + '@' + method
|
107
|
+
urlUid = '/' + self.uid if (self.uid) else ''
|
108
|
+
url = self.urls['api']['ws']['public'] + urlUid
|
109
|
+
requestId = self.request_id(url)
|
104
110
|
request: dict = {
|
105
111
|
'event': 'subscribe',
|
106
112
|
'topic': topic,
|
113
|
+
'id': requestId,
|
107
114
|
}
|
108
|
-
|
109
|
-
|
115
|
+
subscription: dict = {
|
116
|
+
'id': str(requestId),
|
117
|
+
'name': method,
|
118
|
+
'symbol': symbol,
|
119
|
+
'limit': limit,
|
120
|
+
'params': params,
|
121
|
+
}
|
122
|
+
if method == 'orderbookupdate':
|
123
|
+
subscription['method'] = self.handle_order_book_subscription
|
124
|
+
orderbook = await self.watch(url, topic, self.extend(request, params), topic, subscription)
|
110
125
|
return orderbook.limit()
|
111
126
|
|
112
127
|
def handle_order_book(self, client: Client, message):
|
113
128
|
#
|
114
129
|
# {
|
115
|
-
# "topic": "PERP_BTC_USDT@
|
116
|
-
# "ts":
|
130
|
+
# "topic": "PERP_BTC_USDT@orderbookupdate",
|
131
|
+
# "ts": 1722500373999,
|
117
132
|
# "data": {
|
118
133
|
# "symbol": "PERP_BTC_USDT",
|
134
|
+
# "prevTs": 1722500373799,
|
119
135
|
# "bids": [
|
120
136
|
# [
|
121
137
|
# 0.30891,
|
@@ -136,13 +152,89 @@ class woo(ccxt.async_support.woo):
|
|
136
152
|
market = self.safe_market(marketId)
|
137
153
|
symbol = market['symbol']
|
138
154
|
topic = self.safe_string(message, 'topic')
|
139
|
-
|
140
|
-
|
141
|
-
|
155
|
+
method = self.safe_string(topic.split('@'), 1)
|
156
|
+
if method == 'orderbookupdate':
|
157
|
+
if not (symbol in self.orderbooks):
|
158
|
+
return
|
159
|
+
orderbook = self.orderbooks[symbol]
|
160
|
+
timestamp = self.safe_integer(orderbook, 'timestamp')
|
161
|
+
if timestamp is None:
|
162
|
+
orderbook.cache.append(message)
|
163
|
+
else:
|
164
|
+
try:
|
165
|
+
ts = self.safe_integer(message, 'ts')
|
166
|
+
if ts > timestamp:
|
167
|
+
self.handle_order_book_message(client, message, orderbook)
|
168
|
+
client.resolve(orderbook, topic)
|
169
|
+
except Exception as e:
|
170
|
+
del self.orderbooks[symbol]
|
171
|
+
del client.subscriptions[topic]
|
172
|
+
client.reject(e, topic)
|
173
|
+
else:
|
174
|
+
if not (symbol in self.orderbooks):
|
175
|
+
defaultLimit = self.safe_integer(self.options, 'watchOrderBookLimit', 1000)
|
176
|
+
subscription = client.subscriptions[topic]
|
177
|
+
limit = self.safe_integer(subscription, 'limit', defaultLimit)
|
178
|
+
self.orderbooks[symbol] = self.order_book({}, limit)
|
179
|
+
orderbook = self.orderbooks[symbol]
|
180
|
+
timestamp = self.safe_integer(message, 'ts')
|
181
|
+
snapshot = self.parse_order_book(data, symbol, timestamp, 'bids', 'asks')
|
182
|
+
orderbook.reset(snapshot)
|
183
|
+
client.resolve(orderbook, topic)
|
184
|
+
|
185
|
+
def handle_order_book_subscription(self, client: Client, message, subscription):
|
186
|
+
defaultLimit = self.safe_integer(self.options, 'watchOrderBookLimit', 1000)
|
187
|
+
limit = self.safe_integer(subscription, 'limit', defaultLimit)
|
188
|
+
symbol = self.safe_string(subscription, 'symbol') # watchOrderBook
|
189
|
+
if symbol in self.orderbooks:
|
190
|
+
del self.orderbooks[symbol]
|
191
|
+
self.orderbooks[symbol] = self.order_book({}, limit)
|
192
|
+
self.spawn(self.fetch_order_book_snapshot, client, message, subscription)
|
193
|
+
|
194
|
+
async def fetch_order_book_snapshot(self, client, message, subscription):
|
195
|
+
symbol = self.safe_string(subscription, 'symbol')
|
196
|
+
messageHash = self.safe_string(message, 'topic')
|
197
|
+
try:
|
198
|
+
defaultLimit = self.safe_integer(self.options, 'watchOrderBookLimit', 1000)
|
199
|
+
limit = self.safe_integer(subscription, 'limit', defaultLimit)
|
200
|
+
params = self.safe_value(subscription, 'params')
|
201
|
+
snapshot = await self.fetch_rest_order_book_safe(symbol, limit, params)
|
202
|
+
if self.safe_value(self.orderbooks, symbol) is None:
|
203
|
+
# if the orderbook is dropped before the snapshot is received
|
204
|
+
return
|
205
|
+
orderbook = self.orderbooks[symbol]
|
206
|
+
orderbook.reset(snapshot)
|
207
|
+
messages = orderbook.cache
|
208
|
+
for i in range(0, len(messages)):
|
209
|
+
messageItem = messages[i]
|
210
|
+
ts = self.safe_integer(messageItem, 'ts')
|
211
|
+
if ts < orderbook['timestamp']:
|
212
|
+
continue
|
213
|
+
else:
|
214
|
+
self.handle_order_book_message(client, messageItem, orderbook)
|
215
|
+
self.orderbooks[symbol] = orderbook
|
216
|
+
client.resolve(orderbook, messageHash)
|
217
|
+
except Exception as e:
|
218
|
+
del client.subscriptions[messageHash]
|
219
|
+
client.reject(e, messageHash)
|
220
|
+
|
221
|
+
def handle_order_book_message(self, client: Client, message, orderbook):
|
222
|
+
data = self.safe_dict(message, 'data')
|
223
|
+
self.handle_deltas(orderbook['asks'], self.safe_value(data, 'asks', []))
|
224
|
+
self.handle_deltas(orderbook['bids'], self.safe_value(data, 'bids', []))
|
142
225
|
timestamp = self.safe_integer(message, 'ts')
|
143
|
-
|
144
|
-
orderbook.
|
145
|
-
|
226
|
+
orderbook['timestamp'] = timestamp
|
227
|
+
orderbook['datetime'] = self.iso8601(timestamp)
|
228
|
+
return orderbook
|
229
|
+
|
230
|
+
def handle_delta(self, bookside, delta):
|
231
|
+
price = self.safe_float_2(delta, 'price', 0)
|
232
|
+
amount = self.safe_float_2(delta, 'quantity', 1)
|
233
|
+
bookside.store(price, amount)
|
234
|
+
|
235
|
+
def handle_deltas(self, bookside, deltas):
|
236
|
+
for i in range(0, len(deltas)):
|
237
|
+
self.handle_delta(bookside, deltas[i])
|
146
238
|
|
147
239
|
async def watch_ticker(self, symbol: str, params={}) -> Ticker:
|
148
240
|
"""
|
@@ -998,6 +1090,7 @@ class woo(ccxt.async_support.woo):
|
|
998
1090
|
'pong': self.handle_pong,
|
999
1091
|
'subscribe': self.handle_subscribe,
|
1000
1092
|
'orderbook': self.handle_order_book,
|
1093
|
+
'orderbookupdate': self.handle_order_book,
|
1001
1094
|
'ticker': self.handle_ticker,
|
1002
1095
|
'tickers': self.handle_tickers,
|
1003
1096
|
'kline': self.handle_ohlcv,
|
@@ -1056,6 +1149,12 @@ class woo(ccxt.async_support.woo):
|
|
1056
1149
|
# "ts": 1657117712212
|
1057
1150
|
# }
|
1058
1151
|
#
|
1152
|
+
id = self.safe_string(message, 'id')
|
1153
|
+
subscriptionsById = self.index_by(client.subscriptions, 'id')
|
1154
|
+
subscription = self.safe_value(subscriptionsById, id, {})
|
1155
|
+
method = self.safe_value(subscription, 'method')
|
1156
|
+
if method is not None:
|
1157
|
+
method(client, message, subscription)
|
1059
1158
|
return message
|
1060
1159
|
|
1061
1160
|
def handle_auth(self, client: Client, message):
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: ccxt
|
3
|
-
Version: 4.3.
|
3
|
+
Version: 4.3.73
|
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
|
@@ -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.73/dist/ccxt.browser.min.js
|
274
|
+
* unpkg: https://unpkg.com/ccxt@4.3.73/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.73/dist/ccxt.browser.min.js"></script>
|
280
280
|
```
|
281
281
|
|
282
282
|
Creates a global `ccxt` object:
|
@@ -1,4 +1,4 @@
|
|
1
|
-
ccxt/__init__.py,sha256=
|
1
|
+
ccxt/__init__.py,sha256=2EYKdRgNkEb8Ls8N4qVAo5B-EuJtmsyRfzulCq7Nqno,16417
|
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
|
@@ -218,7 +218,7 @@ 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=
|
221
|
+
ccxt/async_support/__init__.py,sha256=H06hKcGHRyroCEh_Rc-gLeS-s5bRWlR_PL5DqdsScP8,16230
|
222
222
|
ccxt/async_support/ace.py,sha256=GxXMtM5Como1NVqXhOqJntxhLO1w9pNe1yYbQP_4ylQ,42603
|
223
223
|
ccxt/async_support/alpaca.py,sha256=495vDvdF1IWlsh9QhUnMtkMuINdD0EzeFGlUVqCf8TE,47682
|
224
224
|
ccxt/async_support/ascendex.py,sha256=LK259BdUqU0_STGRH6DmTgaR-7lXqFpZHFVACf2um5c,152721
|
@@ -329,12 +329,12 @@ ccxt/async_support/yobit.py,sha256=rndL_bMH17YAFCGX__ZPid-Rym1sKoikKO2At7Mbe2Y,5
|
|
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=jgm-Xitn0hlLOQewPUwpNMFzA_q6t5GmicgBjZnwrTg,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
|
336
336
|
ccxt/async_support/base/ws/cache.py,sha256=jK1nzPIijhBZz9eXItbFULfZRv4uV2HGOmVwhHEyahg,8134
|
337
|
-
ccxt/async_support/base/ws/client.py,sha256=
|
337
|
+
ccxt/async_support/base/ws/client.py,sha256=J5lTz3QGTaURZYeqW4R5xNw1orDlHYoOVXIJIX6d5Zc,8188
|
338
338
|
ccxt/async_support/base/ws/fast_client.py,sha256=WPXKqSi9OPDtpgAvt19T1EVtTg4BNk8WGSLtxUVMh08,3956
|
339
339
|
ccxt/async_support/base/ws/functions.py,sha256=qwvEnjtINWL5ZU-dbbeIunjyBxzFqbGWHfVhxqAcKug,1499
|
340
340
|
ccxt/async_support/base/ws/future.py,sha256=WhAJ7wdEiLdfgl5tfGHv6HgLxAN0tTc9xL4gbkKVOaE,2409
|
@@ -343,14 +343,14 @@ 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=R_PInNFvq-2ftTJwGfMDxjJfLKsBo0fEnLAvDhcGgak,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=
|
349
|
+
ccxt/pro/__init__.py,sha256=wU_d3a7TfttgX6NaFyFQnPbQRiAu1SZWnTeu-taajII,7608
|
350
350
|
ccxt/pro/alpaca.py,sha256=TGfyNTaYawHIUWDzoVKXitCPMWO1wKn9VcgmdWMex58,27212
|
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=X86L0f9by7Uk8vTyva6QRZi_UqhgVsSZo7AkI-el1B0,174071
|
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
|
@@ -394,7 +394,7 @@ ccxt/pro/idex.py,sha256=WAY58yMHFUPoqZUGFvzxqcKizvMuFXqdZ6BD0WgstQA,28361
|
|
394
394
|
ccxt/pro/independentreserve.py,sha256=wLONq1yDOV-92ZaKaBLZwUxopu0MZR-Z-AjvPN-_fuY,11308
|
395
395
|
ccxt/pro/kraken.py,sha256=hrYXzL-CLCgm0BbQBjNOoiAfC57Ca5JTiD_24eIvikM,63840
|
396
396
|
ccxt/pro/krakenfutures.py,sha256=Y9vqrxNbr7OJ0BIMZqrVtMedUzk7XtOZuF_OGQ2tUJc,64033
|
397
|
-
ccxt/pro/kucoin.py,sha256=
|
397
|
+
ccxt/pro/kucoin.py,sha256=Vsbt5k8zDSve31LiRlPQgdp1AxVtosT1c9nSCUCF364,54296
|
398
398
|
ccxt/pro/kucoinfutures.py,sha256=rf7yP7uYDIP4G7uVPo0yiUZgG07fOjUd46LgK1Mm6ZI,50327
|
399
399
|
ccxt/pro/lbank.py,sha256=ip7zjZFvGKufpu30WN2_lFQ-ODcJVNkcJQHbz-uLfHo,35203
|
400
400
|
ccxt/pro/luno.py,sha256=AzLK0_C0Hu25ukMNkMLP_sY3D4UG9FT38oawpo4jzTg,12336
|
@@ -414,7 +414,7 @@ ccxt/pro/upbit.py,sha256=M3RwAXlK7Mbu8zduZK7eprLOfNgJax_xSPUhzXQ2zfY,22094
|
|
414
414
|
ccxt/pro/vertex.py,sha256=kE4UZNKB2zXTt3eVOXwtM5Z4F1LfcP1cfDC4_xMncPM,40528
|
415
415
|
ccxt/pro/wazirx.py,sha256=LXpotTduk3fhtcJP2TWpssiOOAZGxhou5_MTK-0G7n0,30082
|
416
416
|
ccxt/pro/whitebit.py,sha256=lpIDFgmVXtL77680Rz9hVTEXd3M6TsizhlFb0ruKfEM,35073
|
417
|
-
ccxt/pro/woo.py,sha256=
|
417
|
+
ccxt/pro/woo.py,sha256=Xr4dwxICGRUyMGCFCjcjt6NpIA0GkVfHsfaoD3WMBOM,48784
|
418
418
|
ccxt/pro/woofipro.py,sha256=pwVXMDrl3zFZrEJJkk9_PEil9uTTtrV9TEvbCRFaNUM,49050
|
419
419
|
ccxt/pro/xt.py,sha256=USN0l6AOLiKgT9Sfz0QX93yFXv-hnU2VEV_mzkSFuyQ,48369
|
420
420
|
ccxt/static_dependencies/__init__.py,sha256=tzFje8cloqmiIE6kola3EaYC0SnD1izWnri69hzHsSw,168
|
@@ -650,8 +650,8 @@ ccxt/test/tests_async.py,sha256=nZ-ElW1q1rcRat-z81x4mPERa9az9qbBVHo_RNioMMw,8461
|
|
650
650
|
ccxt/test/tests_helpers.py,sha256=GbWfSU-0E_CKLeFNinnEHYg1LOcEgNVJT3K9e2kjOeM,10011
|
651
651
|
ccxt/test/tests_init.py,sha256=eVwwUHujX9t4rjgo4TqEeg7DDhR1Hb_e2SJN8NVGyl0,998
|
652
652
|
ccxt/test/tests_sync.py,sha256=p2u81x4O2ocpFjSz_d6HXl2QFwj5P9kZZNimIEKtbO0,83697
|
653
|
-
ccxt-4.3.
|
654
|
-
ccxt-4.3.
|
655
|
-
ccxt-4.3.
|
656
|
-
ccxt-4.3.
|
657
|
-
ccxt-4.3.
|
653
|
+
ccxt-4.3.73.dist-info/LICENSE.txt,sha256=EIb9221AhMHV7xF1_55STFdKTFsnJVJYkRpY2Lnvo5w,1068
|
654
|
+
ccxt-4.3.73.dist-info/METADATA,sha256=ECWuk0EcGkjYI1pDctkLpEv-ZG1BN610mxgVJfTFi-I,116642
|
655
|
+
ccxt-4.3.73.dist-info/WHEEL,sha256=z9j0xAa_JmUKMpmz72K0ZGALSM_n-wQVmGbleXx2VHg,110
|
656
|
+
ccxt-4.3.73.dist-info/top_level.txt,sha256=CkQDuCTDKNcImPV60t36G6MdYfxsAPNiSaEwifVoVMo,5
|
657
|
+
ccxt-4.3.73.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|