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.

Potentially problematic release.


This version of ccxt might be problematic. Click here for more details.

ccxt/__init__.py CHANGED
@@ -22,7 +22,7 @@
22
22
 
23
23
  # ----------------------------------------------------------------------------
24
24
 
25
- __version__ = '4.3.72'
25
+ __version__ = '4.3.73'
26
26
 
27
27
  # ----------------------------------------------------------------------------
28
28
 
@@ -4,7 +4,7 @@
4
4
 
5
5
  # -----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.3.72'
7
+ __version__ = '4.3.73'
8
8
 
9
9
  # -----------------------------------------------------------------------------
10
10
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  # -----------------------------------------------------------------------------
4
4
 
5
- __version__ = '4.3.72'
5
+ __version__ = '4.3.73'
6
6
 
7
7
  # -----------------------------------------------------------------------------
8
8
 
@@ -15,7 +15,7 @@ class Client(object):
15
15
  subscriptions = {}
16
16
  rejections = {}
17
17
  message_queue = {}
18
- useMessageQueue = True
18
+ useMessageQueue = False
19
19
  on_message_callback = None
20
20
  on_error_callback = None
21
21
  on_close_callback = None
ccxt/base/exchange.py CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  # -----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.3.72'
7
+ __version__ = '4.3.73'
8
8
 
9
9
  # -----------------------------------------------------------------------------
10
10
 
ccxt/pro/__init__.py CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  # ----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.3.72'
7
+ __version__ = '4.3.73'
8
8
 
9
9
  # ----------------------------------------------------------------------------
10
10
 
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
- rawHashes.append(marketId + '@' + klineType + '_' + interval)
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
- name = 'orderbook'
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'] + '@' + name
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
- message = self.extend(request, params)
109
- orderbook = await self.watch_public(topic, message)
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@orderbook",
116
- # "ts": 1650121915308,
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
- if not (symbol in self.orderbooks):
140
- self.orderbooks[symbol] = self.order_book({})
141
- orderbook = self.orderbooks[symbol]
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
- snapshot = self.parse_order_book(data, symbol, timestamp, 'bids', 'asks')
144
- orderbook.reset(snapshot)
145
- client.resolve(orderbook, topic)
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.72
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.72/dist/ccxt.browser.min.js
274
- * unpkg: https://unpkg.com/ccxt@4.3.72/dist/ccxt.browser.min.js
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.72/dist/ccxt.browser.min.js"></script>
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=epmaD_xsNG-TFKgAxvBKF5SeaWmrOEdytQN-PRBEGkU,16417
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=Ber5nzKUrBySAeudCf5xnk4b0Y-JRO_FgVB7uiVJuEs,16230
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=2kJnkacqMJlK34qxtIQciKSTndVhe1ixM-QME7lUX6I,110793
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=05Nag7cglClu4QGykZ0cY9lm6Ope0dOSG8rIbDUlnC8,8187
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=rYti7YjhUhcUSrcfGAGxdQa4M2hWNcaEVUPY8q88X90,294200
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=7fBoGIdefNbdwdQTOIFD2xNporhByfhzsfRVSUTzYpg,7608
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=z_aMvr8ZEn-VoVFammArKALyqnJ7krHooJeGrtY8-0I,172891
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=cySgdmzzX4nWLvYwcvpT8RJM4-tovmN3p1iSIGfsWgA,54133
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=CDyMuCLTVl5DBOUCQX_2LFAd7bain7fgLQnnSAza9Pw,43827
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.72.dist-info/LICENSE.txt,sha256=EIb9221AhMHV7xF1_55STFdKTFsnJVJYkRpY2Lnvo5w,1068
654
- ccxt-4.3.72.dist-info/METADATA,sha256=kqPs2WU6mu5Gq0c1RdkGRH_D9SjS9BXcgpLxABhWai0,116642
655
- ccxt-4.3.72.dist-info/WHEEL,sha256=z9j0xAa_JmUKMpmz72K0ZGALSM_n-wQVmGbleXx2VHg,110
656
- ccxt-4.3.72.dist-info/top_level.txt,sha256=CkQDuCTDKNcImPV60t36G6MdYfxsAPNiSaEwifVoVMo,5
657
- ccxt-4.3.72.dist-info/RECORD,,
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