ccxt-ir 4.7.0__py2.py3-none-any.whl → 4.9.1__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/kcex.py ADDED
@@ -0,0 +1,319 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ # PLEASE DO NOT EDIT THIS FILE, IT IS GENERATED AND WILL BE OVERWRITTEN:
4
+ # https://github.com/ccxt/ccxt/blob/master/CONTRIBUTING.md#how-to-contribute-code
5
+
6
+ from ccxt.base.exchange import Exchange
7
+ from ccxt.abstract.kcex import ImplicitAPI
8
+ from ccxt.base.types import Any, Market, Strings, Ticker, Tickers
9
+ from typing import List
10
+
11
+
12
+ class kcex(Exchange, ImplicitAPI):
13
+
14
+ def describe(self) -> Any:
15
+ return self.deep_extend(super(kcex, self).describe(), {
16
+ 'id': 'kcex',
17
+ 'name': 'Kcex',
18
+ 'countries': ['SC'],
19
+ 'rateLimit': 1000,
20
+ 'version': '1',
21
+ 'certified': False,
22
+ 'pro': False,
23
+ 'has': {
24
+ 'CORS': None,
25
+ 'spot': True,
26
+ 'margin': False,
27
+ 'swap': False,
28
+ 'future': True,
29
+ 'option': False,
30
+ 'addMargin': False,
31
+ 'cancelAllOrders': False,
32
+ 'cancelOrder': False,
33
+ 'cancelOrders': False,
34
+ 'createDepositAddress': False,
35
+ 'createOrder': False,
36
+ 'createStopLimitOrder': False,
37
+ 'createStopMarketOrder': False,
38
+ 'createStopOrder': False,
39
+ 'editOrder': False,
40
+ 'fetchBalance': False,
41
+ 'fetchBorrowInterest': False,
42
+ 'fetchBorrowRateHistories': False,
43
+ 'fetchBorrowRateHistory': False,
44
+ 'fetchClosedOrders': False,
45
+ 'fetchCrossBorrowRate': False,
46
+ 'fetchCrossBorrowRates': False,
47
+ 'fetchCurrencies': False,
48
+ 'fetchDepositAddress': False,
49
+ 'fetchDeposits': False,
50
+ 'fetchFundingHistory': False,
51
+ 'fetchFundingRate': False,
52
+ 'fetchFundingRateHistory': False,
53
+ 'fetchFundingRates': False,
54
+ 'fetchIndexOHLCV': False,
55
+ 'fetchIsolatedBorrowRate': False,
56
+ 'fetchIsolatedBorrowRates': False,
57
+ 'fetchL2OrderBook': False,
58
+ 'fetchL3OrderBook': False,
59
+ 'fetchLedger': False,
60
+ 'fetchLedgerEntry': False,
61
+ 'fetchLeverageTiers': False,
62
+ 'fetchMarkets': True,
63
+ 'fetchMarkOHLCV': False,
64
+ 'fetchMyTrades': False,
65
+ 'fetchOHLCV': True,
66
+ 'fetchOpenInterestHistory': False,
67
+ 'fetchOpenOrders': False,
68
+ 'fetchOrder': False,
69
+ 'fetchOrderBook': True,
70
+ 'fetchOrders': False,
71
+ 'fetchOrderTrades': 'emulated',
72
+ 'fetchPositions': False,
73
+ 'fetchPremiumIndexOHLCV': False,
74
+ 'fetchTicker': True,
75
+ 'fetchTickers': True,
76
+ 'fetchTime': False,
77
+ 'fetchTrades': False,
78
+ 'fetchTradingFee': False,
79
+ 'fetchTradingFees': False,
80
+ 'fetchWithdrawals': False,
81
+ 'setLeverage': False,
82
+ 'setMarginMode': False,
83
+ 'transfer': False,
84
+ 'withdraw': False,
85
+ },
86
+ 'comment': 'This comment is optional',
87
+ 'urls': {
88
+ 'logo': 'https://cdn.arz.digital/cr-odin/img/exchanges/kcex/64x64.png',
89
+ 'api': {
90
+ 'public': 'https://www.kcex.com/spot/api',
91
+ },
92
+ 'www': 'https://www.kcex.com',
93
+ 'doc': [
94
+ 'https://www.kcex.com',
95
+ ],
96
+ },
97
+ 'timeframes': {
98
+ '1m': '1',
99
+ '1h': '60',
100
+ '3h': '180',
101
+ '6h': '360',
102
+ '12h': '720',
103
+ '1d': '1D',
104
+ },
105
+ 'api': {
106
+ 'public': {
107
+ 'get': {
108
+ 'market-2/spot/market/v2/web/symbols': 1,
109
+ 'market-2/spot/market/v2/web/tickers': 1,
110
+ 'market-2/spot/market/v2/web/symbol/ticker': 1,
111
+ },
112
+ },
113
+ },
114
+ # 'fees': {
115
+ # 'trading': {
116
+ # 'tierBased': False,
117
+ # 'percentage': True,
118
+ # 'maker': self.parse_number('0.001'),
119
+ # 'taker': self.parse_number('0.001'),
120
+ # },
121
+ # },
122
+ })
123
+
124
+ def fetch_markets(self, params={}) -> List[Market]:
125
+ """
126
+ retrieves data on all markets for kcex
127
+ https://api-docs.kcex.ir/#be8d9c51a2
128
+ :param dict [params]: extra parameters specific to the exchange API endpoint
129
+ :returns dict[]: an array of objects representing market data
130
+ """
131
+ response = self.publicGetMarket2SpotMarketV2WebSymbols(params)
132
+ data = self.safe_dict(response, 'data')
133
+ USDTmarketList = self.safe_list(data, 'USDT')
134
+ USDCmarketList = self.safe_list(data, 'USDC')
135
+ marketList = self.array_concat(USDTmarketList, USDCmarketList)
136
+ result = []
137
+ for i in range(0, len(marketList)):
138
+ market = self.parse_market(marketList[i])
139
+ result.append(market)
140
+ return result
141
+
142
+ def parse_market(self, market) -> Market:
143
+ # {
144
+ # id: "e16a2713c7a44bac9d1d4ef98467e75b",
145
+ # mcd: "20f24a571c8544c0b1362794b1804456",
146
+ # mnm: "USDT",
147
+ # cd: "18f40e5428054a4b9c69ddb0cce486f3",
148
+ # vn: "AP",
149
+ # fn: "AMERICA PARTY",
150
+ # srt: 322,
151
+ # sts: 1,
152
+ # in: "F20250607111147267iXgSHIElFbibIQ",
153
+ # fot: 1749247200000,
154
+ # ot: 1749267000000,
155
+ # cp: [
156
+ # "common_section_meme",
157
+ # "common_section_solana"
158
+ # ],
159
+ # ps: 7,
160
+ # qs: 2,
161
+ # cdm: 1
162
+ # }
163
+ id = self.safe_string(market, 'id')
164
+ baseId = self.safe_string(market, 'vn')
165
+ quoteId = self.safe_string(market, 'mnm')
166
+ base = self.safe_currency_code(baseId)
167
+ quote = self.safe_currency_code(quoteId)
168
+ baseId = baseId.lower()
169
+ quoteId = quoteId.lower()
170
+ return {
171
+ 'id': id,
172
+ 'symbol': base + '/' + quote,
173
+ 'base': base,
174
+ 'quote': quote,
175
+ 'settle': None,
176
+ 'baseId': baseId,
177
+ 'quoteId': quoteId,
178
+ 'settleId': None,
179
+ 'type': 'spot',
180
+ 'spot': True,
181
+ 'margin': False,
182
+ 'swap': False,
183
+ 'future': False,
184
+ 'option': False,
185
+ 'active': True,
186
+ 'contract': False,
187
+ 'linear': None,
188
+ 'inverse': None,
189
+ 'contractSize': None,
190
+ 'expiry': None,
191
+ 'expiryDatetime': None,
192
+ 'strike': None,
193
+ 'optionType': None,
194
+ 'precision': {
195
+ 'amount': None,
196
+ 'price': None,
197
+ },
198
+ 'limits': {
199
+ 'leverage': {
200
+ 'min': None,
201
+ 'max': None,
202
+ },
203
+ 'amount': {
204
+ 'min': None,
205
+ 'max': None,
206
+ },
207
+ 'price': {
208
+ 'min': None,
209
+ 'max': None,
210
+ },
211
+ 'cost': {
212
+ 'min': None,
213
+ 'max': None,
214
+ },
215
+ },
216
+ 'created': None,
217
+ 'info': market,
218
+ }
219
+
220
+ def fetch_tickers(self, symbols: Strings = None, params={}) -> Tickers:
221
+ """
222
+ fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
223
+ https://api-docs.kcex.ir/#be8d9c51a2
224
+ :param str[]|None symbols: unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
225
+ :param dict [params]: extra parameters specific to the exchange API endpoint
226
+ :returns dict: a dictionary of `ticker structures <https://docs.ccxt.com/#/?id=ticker-structure>`
227
+ """
228
+ self.load_markets()
229
+ if symbols is not None:
230
+ symbols = self.market_symbols(symbols)
231
+ response = self.publicGetMarket2SpotMarketV2WebTickers(params)
232
+ tickers = self.safe_list(response, 'data')
233
+ timestamp = self.safe_integer(response, 'timestamp')
234
+ result = {}
235
+ idToMarket = {}
236
+ marketList = list(self.markets.values())
237
+ for i in range(0, len(marketList)):
238
+ market = marketList[i]
239
+ idToMarket[market['id']] = market
240
+ for i in range(0, len(tickers)):
241
+ ticker = tickers[i]
242
+ id = self.safe_string(ticker, 'id')
243
+ market = idToMarket[id]
244
+ ticker['timestamp'] = timestamp
245
+ if market is not None:
246
+ parsedTicker = self.parse_ticker(ticker, market)
247
+ symbol = parsedTicker['symbol']
248
+ result[symbol] = parsedTicker
249
+ return self.filter_by_array_tickers(result, 'symbol', symbols)
250
+
251
+ def fetch_ticker(self, symbol: str, params={}) -> Ticker:
252
+ """
253
+ fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
254
+ https://api-docs.kcex.ir/#be8d9c51a2
255
+ :param str symbol: unified symbol of the market to fetch the ticker for
256
+ :param dict [params]: extra parameters specific to the exchange API endpoint
257
+ :returns dict: a `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`
258
+ """
259
+ self.load_markets()
260
+ market = self.market(symbol)
261
+ request = {
262
+ 'symbol': market['base'] + '_' + market['quote'],
263
+ }
264
+ response = self.publicGetMarket2SpotMarketV2WebSymbolTicker(request)
265
+ tickerdata = self.safe_dict(response, 'data')
266
+ ticker = self.parse_ticker(tickerdata, market)
267
+ return ticker
268
+
269
+ def parse_ticker(self, ticker, market: Market = None) -> Ticker:
270
+ # {
271
+ # id: "e16a2713c7a44bac9d1d4ef98467e75b",
272
+ # r8: "-0.0261",
273
+ # tzr: "-0.0261",
274
+ # c: "0.0004552",
275
+ # h: "0.0005745",
276
+ # l: "0.0004552",
277
+ # a: "136545.934217",
278
+ # q: "281221205.24",
279
+ # o: "0.0004674",
280
+ # ot: 1749247200000
281
+ # }
282
+ symbol = market['symbol']
283
+ high = self.safe_float(ticker, 'h', 0)
284
+ low = self.safe_float(ticker, 'l', 0)
285
+ open = self.safe_float(ticker, 'o', 0)
286
+ last = self.safe_float(ticker, 'c', 0)
287
+ quoteVolume = self.safe_float(ticker, 'a', 0)
288
+ baseVolume = self.safe_float(ticker, 'q', 0)
289
+ timestamp = self.safe_integer(ticker, 'timestamp', 0)
290
+ return self.safe_ticker({
291
+ 'symbol': symbol,
292
+ 'timestamp': timestamp,
293
+ 'datetime': self.iso8601(timestamp),
294
+ 'high': high,
295
+ 'low': low,
296
+ 'bid': None,
297
+ 'bidVolume': None,
298
+ 'ask': None,
299
+ 'askVolume': None,
300
+ 'vwap': None,
301
+ 'open': open,
302
+ 'close': last,
303
+ 'last': last,
304
+ 'previousClose': None,
305
+ 'change': None,
306
+ 'percentage': None,
307
+ 'average': None,
308
+ 'baseVolume': baseVolume,
309
+ 'quoteVolume': quoteVolume,
310
+ 'info': ticker,
311
+ }, market)
312
+
313
+ def sign(self, path, api='public', method='GET', params={}, headers=None, body=None):
314
+ query = self.omit(params, self.extract_params(path))
315
+ url = self.urls['api']['public'] + '/' + path
316
+ if path == 'market-2/spot/market/v2/web/symbol/ticker':
317
+ url = url + '?' + self.urlencode(query)
318
+ headers = {'Content-Type': 'application/json'}
319
+ return {'url': url, 'method': method, 'body': body, 'headers': headers}
ccxt/pro/__init__.py CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  # ----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.7.0'
7
+ __version__ = '4.9.1'
8
8
 
9
9
  # ----------------------------------------------------------------------------
10
10
 
ccxt/xt.py CHANGED
@@ -1609,7 +1609,7 @@ class xt(Exchange, ImplicitAPI):
1609
1609
  elif market['inverse']:
1610
1610
  response = self.publicInverseGetFutureMarketV1PublicQAggTicker(self.extend(request, params))
1611
1611
  else:
1612
- response = self.publicSpotGetTicker24h(self.extend(request, params))
1612
+ response = self.publicSpotGetTicker(self.extend(request, params))
1613
1613
  #
1614
1614
  # spot
1615
1615
  #
@@ -1861,7 +1861,7 @@ class xt(Exchange, ImplicitAPI):
1861
1861
  'change': self.safe_number(ticker, 'cv'),
1862
1862
  'percentage': self.parse_number(percentage),
1863
1863
  'average': None,
1864
- 'baseVolume': None,
1864
+ 'baseVolume': self.safe_number_2(ticker, 'a', 'q'),
1865
1865
  'quoteVolume': self.safe_number_2(ticker, 'a', 'v'),
1866
1866
  'info': ticker,
1867
1867
  }, market)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ccxt-ir
3
- Version: 4.7.0
3
+ Version: 4.9.1
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
@@ -62,7 +62,7 @@ Dynamic: summary
62
62
 
63
63
  # CCXT – CryptoCurrency eXchange Trading Library
64
64
 
65
- [![NPM Downloads](https://img.shields.io/npm/dy/ccxt.svg)](https://www.npmjs.com/package/ccxt) [![npm](https://img.shields.io/npm/v/ccxt.svg)](https://npmjs.com/package/ccxt) [![PyPI](https://img.shields.io/pypi/v/ccxt.svg)](https://pypi.python.org/pypi/ccxt) [![NuGet version](https://img.shields.io/nuget/v/ccxt)](https://www.nuget.org/packages/ccxt) [![GoDoc](https://pkg.go.dev/badge/github.com/ccxt/ccxt/go/v4?utm_source=godoc)](https://godoc.org/github.com/ccxt/ccxt/go/v4) [![Discord](https://img.shields.io/discord/690203284119617602?logo=discord&logoColor=white)](https://discord.gg/ccxt) [![Supported Exchanges](https://img.shields.io/badge/exchanges-134-blue.svg)](https://github.com/ccxt/ccxt/wiki/Exchange-Markets) [![Follow CCXT at x.com](https://img.shields.io/twitter/follow/ccxt_official.svg?style=social&label=CCXT)](https://x.com/ccxt_official)
65
+ [![NPM Downloads](https://img.shields.io/npm/dy/ccxt.svg)](https://www.npmjs.com/package/ccxt) [![npm](https://img.shields.io/npm/v/ccxt.svg)](https://npmjs.com/package/ccxt) [![PyPI](https://img.shields.io/pypi/v/ccxt.svg)](https://pypi.python.org/pypi/ccxt) [![NuGet version](https://img.shields.io/nuget/v/ccxt)](https://www.nuget.org/packages/ccxt) [![GoDoc](https://pkg.go.dev/badge/github.com/ccxt/ccxt/go/v4?utm_source=godoc)](https://godoc.org/github.com/ccxt/ccxt/go/v4) [![Discord](https://img.shields.io/discord/690203284119617602?logo=discord&logoColor=white)](https://discord.gg/ccxt) [![Supported Exchanges](https://img.shields.io/badge/exchanges-136-blue.svg)](https://github.com/ccxt/ccxt/wiki/Exchange-Markets) [![Follow CCXT at x.com](https://img.shields.io/twitter/follow/ccxt_official.svg?style=social&label=CCXT)](https://x.com/ccxt_official)
66
66
 
67
67
  A `JavaScript` / `Python` / `PHP` / `C#` / `Go` library for cryptocurrency trading and e-commerce with support for many bitcoin/ether/altcoin exchange markets and merchant APIs.
68
68
 
@@ -305,20 +305,20 @@ console.log(version, Object.keys(exchanges));
305
305
  All-in-one browser bundle (dependencies included), served from a CDN of your choice:
306
306
 
307
307
  <<<<<<< HEAD
308
- * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.7.0/dist/ccxt.browser.min.js
309
- * unpkg: https://unpkg.com/ccxt@4.7.0/dist/ccxt.browser.min.js
308
+ * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.9.1/dist/ccxt.browser.min.js
309
+ * unpkg: https://unpkg.com/ccxt@4.9.1/dist/ccxt.browser.min.js
310
310
  =======
311
- * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.7.0/dist/ccxt.browser.min.js
312
- * unpkg: https://unpkg.com/ccxt@4.7.0/dist/ccxt.browser.min.js
311
+ * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.9.1/dist/ccxt.browser.min.js
312
+ * unpkg: https://unpkg.com/ccxt@4.9.1/dist/ccxt.browser.min.js
313
313
  >>>>>>> master
314
314
 
315
315
  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.
316
316
 
317
317
  ```HTML
318
318
  <<<<<<< HEAD
319
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.7.0/dist/ccxt.browser.min.js"></script>
319
+ <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.9.1/dist/ccxt.browser.min.js"></script>
320
320
  =======
321
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.7.0/dist/ccxt.browser.min.js"></script>
321
+ <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.9.1/dist/ccxt.browser.min.js"></script>
322
322
  >>>>>>> master
323
323
  console.log (ccxt.exchanges) // print all available exchanges
324
324
  ```
@@ -1,10 +1,10 @@
1
- ccxt/__init__.py,sha256=yVtxyPSvSaS0SlouXjUX5fs5vK0407bX6UMZlP9UOmA,19115
1
+ ccxt/__init__.py,sha256=5N1TQZeuB3Q_GMR0gBjnsgJ70BXA04afblymnefsSAc,19308
2
2
  ccxt/abantether.py,sha256=like8inDYyPpE3d3_93KulDhwmYwdOqZxRvoTC1-Nd0,12008
3
3
  ccxt/afratether.py,sha256=NeSpFf0zWIM5ejGgn5G9hz1-sefAv_ae7j9241WcdDk,10801
4
4
  ccxt/alpaca.py,sha256=oO0YJHxo5_1iYyGVRMbxfGyPahqzuMlE7LZ3TMYgPGo,80694
5
5
  ccxt/apex.py,sha256=TuOp4vnCczdRG__9thnb3RIidoVeUDZbOSGbusjJG78,82740
6
6
  ccxt/arzinja.py,sha256=WWyJIG9aKJzeMRCTI77e5Ipu_aSeJMTFcUMPDUDtnnU,10380
7
- ccxt/arzplus.py,sha256=adn-trtR_zmpVeitn8ZZXfPr7IoE7fJU7U4rIHI0v8E,16297
7
+ ccxt/arzplus.py,sha256=VZ_kZAV0R_2u8X8bhzXRQ6sr7U_OU9rCxdG1U4zM2oQ,16546
8
8
  ccxt/ascendex.py,sha256=unk7MeeQkmgT2YxCXKXG81z2ylcS_r6a7IuvnxnlOT8,158696
9
9
  ccxt/bequant.py,sha256=9rBVB2Wg9YMmgYiCqS1NSxiftPWmL97FdaNLVPb3Zpo,1218
10
10
  ccxt/bigone.py,sha256=npNA3D64dxi8JBG26lb3HI644ysSN-MNcIF3ZqAg_VI,95652
@@ -32,6 +32,7 @@ ccxt/bitso.py,sha256=chJcbGZw210_PbGFo68JjngN5BpHO5B9POlQHFV_PXs,75701
32
32
  ccxt/bitstamp.py,sha256=XPwRl8x9oFKdxYOxdTnm3vGH-5dWkVdyW4hI-Jq4rvw,97405
33
33
  ccxt/bitteam.py,sha256=Jv3wdSztOGKULkV1uZydBJxwQ3I0_M8kI6CDB_gtH9Y,106752
34
34
  ccxt/bittrade.py,sha256=vazz9sdfSGS8s0lH0_QVFKS9mj20PAa7nOAfWsonKow,92974
35
+ ccxt/bitunix.py,sha256=hctItPqGfSiTZsHYgZVGXb7GhizKzzKcIgK1Xw6uex4,11451
35
36
  ccxt/bitvavo.py,sha256=kX5o4_w5LGbU71mbUzF30coWJHSoZp_gqN1aWYbool0,97531
36
37
  ccxt/blockchaincom.py,sha256=_1A2kxt4QHJ5IUJKwCM8sTjz7ZKqUiM0SM73kOl3l0Q,51724
37
38
  ccxt/blofin.py,sha256=3Lb0htgOAPkkR8kY9qT3gNzG4CK-sLEFZRD5H3rW9-E,113612
@@ -83,6 +84,7 @@ ccxt/hyperliquid.py,sha256=nRrjedrxNgEuUIuH4Ml7qM9JKw9rPUjmsbylSImCw_I,160952
83
84
  ccxt/independentreserve.py,sha256=qK_Xd8oSwQ8VTKqDTSUZoxZ8rfKwd2CrfDC9JdBi6uc,44814
84
85
  ccxt/indodax.py,sha256=4UtmYm2bExkrmfpnUv-6RSEN8EAyhVWBvdDZCoLILkQ,59303
85
86
  ccxt/jibitex.py,sha256=CH3Gb4aXfzBsfUYqKdpQVrohq9o-11AMRWZVXaZkzFk,15785
87
+ ccxt/kcex.py,sha256=WLavduoKatuE1OyodQE85MBr08vMGf9-yINg738KNeY,11957
86
88
  ccxt/kraken.py,sha256=wE8GI7g9xx3Gx785M8_W5pn3-wxSDMvxMlb9qQlPkPc,148530
87
89
  ccxt/krakenfutures.py,sha256=91NTUvEalzJe6HxX_2JK7MP4oPFmMgEp_QJDJ71n-aA,122915
88
90
  ccxt/kucoin.py,sha256=B0lAhQ5v49yhDJyD117FiLBJOX0XKhL2C9zz9YrrIUU,232486
@@ -129,7 +131,7 @@ ccxt/wavesexchange.py,sha256=y9eMzsVN0QK7fPTVnkKwsOyv5D9amgTCLyQiRTqSGgw,120115
129
131
  ccxt/whitebit.py,sha256=3ZA8_EuMFj45gqBXhSWsa0gZhxO2Cd430JDEYr2sNgc,151956
130
132
  ccxt/woo.py,sha256=69DGLHgIV_xk5ZguuOjR6JRUi4p17dSn9ykhUeqZeL8,180520
131
133
  ccxt/woofipro.py,sha256=BlhYlBwfdIjv8hE0CC5nxObF2X6BU6e61nLXEu3wzXY,125453
132
- ccxt/xt.py,sha256=AXWbKkFd7sKLyW1mpPzKHEUnpbuNhrLuD-WAqc1topA,216394
134
+ ccxt/xt.py,sha256=15dJ6XgcNEuPHppwV5du3RgYfst5lK0DA14_E1S4c5s,216423
133
135
  ccxt/yobit.py,sha256=Mh5NsoZ3csITuRdEScjGqeowlKsUtodUNVjL89BW2m4,57757
134
136
  ccxt/zaif.py,sha256=Bn21zden5qjksTPBKIEPKlDEN9yuWP76JifhA3fnFBU,31182
135
137
  ccxt/zonda.py,sha256=h8GzoJfu-Md_ZjrT0s75UAeQ5ce-uwDT0WEap8GIKjE,85013
@@ -167,6 +169,7 @@ ccxt/abstract/bitso.py,sha256=aWtuVoQ3CLMBTukWz3L3-gagyhIeEcEf4G5J48Hz_3k,4025
167
169
  ccxt/abstract/bitstamp.py,sha256=YcFXFGm3RrCTF-Hi3x3v2wFt3BaH2PYslUVIoZOmcWE,29877
168
170
  ccxt/abstract/bitteam.py,sha256=k7txfUy717X9pi_XhXuCkpa7fR0Ul7kQYw7mC4REzuI,3478
169
171
  ccxt/abstract/bittrade.py,sha256=12RtB9kVykpBYwQ5JjYa4LK2Fg7MeynJAuOy67F7TP4,14331
172
+ ccxt/abstract/bitunix.py,sha256=1OETXOeuun0F5gsHfytl4-0QChur1ZfyHPykICEOaNc,361
170
173
  ccxt/abstract/bitvavo.py,sha256=bPoB0TAmdey7t_O7GBrZpaS9MtwjySWsO1ctqqIuLTw,2357
171
174
  ccxt/abstract/blockchaincom.py,sha256=f4bFO3bWjk9ojqGolkzuau06f1CksUAJdLvSc4diA7c,2638
172
175
  ccxt/abstract/blofin.py,sha256=HSNIiR_tGKzYlJ-sOtTyXBmvuN9QdhZ8T0ej1lixVMk,9261
@@ -218,6 +221,7 @@ ccxt/abstract/hyperliquid.py,sha256=YPz-oqjy-ZkDW9chuMZM8pGIUs_5qeP3nQ-d_TSbCyw,
218
221
  ccxt/abstract/independentreserve.py,sha256=GBa5JX6Wv9rdh2B3a0L4pHCqF6jMLQMcLSOQvAxzq1k,4975
219
222
  ccxt/abstract/indodax.py,sha256=E16v8W6Ac9kmV9hFEqf_kwV6VQmK74lc1LEUEkuDpYg,2488
220
223
  ccxt/abstract/jibitex.py,sha256=iOktSTvFEp3-kNUeZNIfEY0BPPB9bRlOS2sk7WuI4DM,454
224
+ ccxt/abstract/kcex.py,sha256=ms_exDB-TZhRgb1qLMD1dZo7Yv6rMq-LOtDzPrc01cI,579
221
225
  ccxt/abstract/kraken.py,sha256=glI0xp23zwl3KVtmfRPS6yoMlD86IhihUPi6LjFzM6I,5989
222
226
  ccxt/abstract/krakenfutures.py,sha256=pu81cKhQgBkQd8F9-Ly3b7xQD-qQ8WLi8EUMfmAUJcM,4080
223
227
  ccxt/abstract/kucoin.py,sha256=kVrVEXiigc36arfbSS8lDUMnG7uFdKgUKHIhVb0Am_8,28626
@@ -268,13 +272,13 @@ ccxt/abstract/xt.py,sha256=n3eX1cItL_J0j8prOViV-C_tRwIFv_GO8JTvZZw8jv8,27837
268
272
  ccxt/abstract/yobit.py,sha256=8ycfCO8ORFly9hc0Aa47sZyX4_ZKPXS9h9yJzI-uQ7Q,1339
269
273
  ccxt/abstract/zaif.py,sha256=m15WHdl3gYy0GOXNZ8NEH8eE7sVh8c0T_ITNuU8vXeU,3935
270
274
  ccxt/abstract/zonda.py,sha256=X-hCW0SdX3YKZWixDyW-O2211M58Rno8kKJ6quY7rw4,7183
271
- ccxt/async_support/__init__.py,sha256=MQWGRDhbI9AhAbvJTV1RJcdXBXA4Vvf_jdak3NAcz_Q,19178
275
+ ccxt/async_support/__init__.py,sha256=QSnK3uBjPOX3LBGLGb7aMeMGJEgMk7YXYxxF3LNsj_w,19391
272
276
  ccxt/async_support/abantether.py,sha256=uLWn1i6gE8dtZr9BXmXfyT0Y-MzYYZU1DDeXGjFngAM,12064
273
277
  ccxt/async_support/afratether.py,sha256=JC9ro3QrE8vE4YUm51xqwciSQhHfTPb98Mw1r6cJyvg,10869
274
278
  ccxt/async_support/alpaca.py,sha256=oFpSnAjX-faRgTN4d5rwHa08WRaCkwiAbHGZ7JBe6Ww,81140
275
279
  ccxt/async_support/apex.py,sha256=ouj8uyC4f8Ar3IowHxbrPTBp-g2ctheo5ir_YLsg-Gg,83228
276
280
  ccxt/async_support/arzinja.py,sha256=0hYBzTWdYFQLediwhzqsffSgT2-D8z3lQUfeLa3TYig,10442
277
- ccxt/async_support/arzplus.py,sha256=GYl9RgLrA4crfs4lcS8qqUeBvEHMjFcSdvr2kntzFKU,16401
281
+ ccxt/async_support/arzplus.py,sha256=WadtKCg9e57CzKUxMGF2Nfidw6kxkI56cMAn3UB7CtE,16656
278
282
  ccxt/async_support/ascendex.py,sha256=Nrivs8jnl5lN2IYpGG_Z23QDqUOAqDd0C_0Nv10bnm8,159533
279
283
  ccxt/async_support/bequant.py,sha256=-O1NDzEwsG1L2H17ZzcJw7ZHvDt8s-47bgqzjixYkjc,1232
280
284
  ccxt/async_support/bigone.py,sha256=DHFeRhLG4itPK0hSuL-MofawQ6-abN0LVVtiGeQXgCQ,96106
@@ -302,6 +306,7 @@ ccxt/async_support/bitso.py,sha256=MhVpnWKbEVeSpeINmk0XeJVzywuXFCNNp9glz5iSer8,7
302
306
  ccxt/async_support/bitstamp.py,sha256=4DumFv-Z0pMNAtuNbigk49EGQe7JLFxhqG-4DOBbxqA,97905
303
307
  ccxt/async_support/bitteam.py,sha256=2k4h8RT_YzDO6TXB803udxI_-AGZ75IBUFLVmXb_HOM,107084
304
308
  ccxt/async_support/bittrade.py,sha256=Tx9aiV8fSN8UbDE1hBqzfHY1DYceUTT-DKkYyu_0-PI,93474
309
+ ccxt/async_support/bitunix.py,sha256=G2PbVeLE4UTqag3DqNIUL8QgvtPPWHmgOz0mPci8hLc,11507
305
310
  ccxt/async_support/bitvavo.py,sha256=L4oAFMb_URyPwA1zTcamDjX0P5rJAhNBH7AcojP5wtc,97965
306
311
  ccxt/async_support/blockchaincom.py,sha256=Z6pq5V7-0q_xfOVdR2MmBShsxtuGh3v6mNY0jdQqGfY,52116
307
312
  ccxt/async_support/blofin.py,sha256=I7-521zgBd6Wpfk4myCvqkjo5AydA49TdXb2h6fCNB4,114274
@@ -353,6 +358,7 @@ ccxt/async_support/hyperliquid.py,sha256=WwsqsDY-95I8cTzVRcZaqV-JSXoau-XsHAYfOP9
353
358
  ccxt/async_support/independentreserve.py,sha256=jNDXX5VAsUKDfKRYb_qtqT4UJNimsO1mWbCDxL1lU1s,45112
354
359
  ccxt/async_support/indodax.py,sha256=gDiNbkssepp2ARs16EroBSG7DTgCHXa1GgnB3NNSd6o,59611
355
360
  ccxt/async_support/jibitex.py,sha256=6g3MdbPusjRr7AOoIq4lUHD9GfGHpJy0ZQ-rjTu4GW4,15883
361
+ ccxt/async_support/kcex.py,sha256=IR0ikKaBQ4PlV6N4vhOAJTnStpdIVp6Zh-_pgcl9ohA,12019
356
362
  ccxt/async_support/kraken.py,sha256=YcByHZKnph2cKKFRHbd24b6r1AR57qdeFMZdcyEviAg,149212
357
363
  ccxt/async_support/krakenfutures.py,sha256=D0IYSDLPm3hMOy_KMrAqcZLNyoJ89Ur5zJmL597mXc8,123403
358
364
  ccxt/async_support/kucoin.py,sha256=1g5zjnf_ad1TiIpaRfc86m6ieBTvrp9V_UcUv3oIHHE,233636
@@ -399,12 +405,12 @@ ccxt/async_support/wavesexchange.py,sha256=R6ZdfHGjPZCDZS6ZSgoMPDRT3NM6tYoqObF6G
399
405
  ccxt/async_support/whitebit.py,sha256=p6BqQ9JA_KqeO0YqXmEcXpnJhzqSJn2-r6vK2qDezE8,152780
400
406
  ccxt/async_support/woo.py,sha256=NudNZNy3mQBphfcLIoQQb0IdOCBY6MeAsD18ZLOTCr4,181549
401
407
  ccxt/async_support/woofipro.py,sha256=QQjxGUdGOOnQoC7VjqmBcUg9vnW50FNCcnxXubyxFcE,126201
402
- ccxt/async_support/xt.py,sha256=R6CcuYgwaUrDG2VAyAoFeXPt0vfgCAByCvCM5nVfUss,217626
408
+ ccxt/async_support/xt.py,sha256=G8dHvb_b27wOnDgMX71SFc2DaNOzAh-uyQWH7-lKfqQ,217655
403
409
  ccxt/async_support/yobit.py,sha256=FBI7ajvxprTYUqX8zosd7-LntDft8vIEjRTHng5ry8Y,58085
404
410
  ccxt/async_support/zaif.py,sha256=mh0PETLMTJV509zhT7jukddg6S7YhvwhCT7zqxC6YLA,31364
405
411
  ccxt/async_support/zonda.py,sha256=7hmHotE5JBd8034d1ZbX3oIeWIpQFrQb8aK-dP3Btx0,85327
406
412
  ccxt/async_support/base/__init__.py,sha256=aVYSsFi--b4InRs9zDN_wtCpj8odosAB726JdUHavrk,67
407
- ccxt/async_support/base/exchange.py,sha256=8da6qNt4N5ZwjLyy7T5XZaiwghbexHX3lPti67Mgzis,121268
413
+ ccxt/async_support/base/exchange.py,sha256=R1slWOKqyP-QQKk19qcFeisW6z9bKv2cz1m60pDx3SQ,121268
408
414
  ccxt/async_support/base/throttler.py,sha256=tvDVcdRUVYi8fZRlEcnqtgzcgB_KMUMRs5Pu8tuU-tU,1847
409
415
  ccxt/async_support/base/ws/__init__.py,sha256=uockzpLuwntKGZbs5EOWFe-Zg-k6Cj7GhNJLc_RX0so,1791
410
416
  ccxt/async_support/base/ws/cache.py,sha256=xf2VOtfUwloxSlIQ39M1RGZHWQzyS9IGhB5NX6cDcAc,8370
@@ -416,10 +422,10 @@ ccxt/async_support/base/ws/order_book_side.py,sha256=GhnGUt78pJ-AYL_Dq9produGjmB
416
422
  ccxt/base/__init__.py,sha256=eTx1OE3HJjspFUQjGm6LBhaQiMKJnXjkdP-JUXknyQ0,1320
417
423
  ccxt/base/decimal_to_precision.py,sha256=3XI30u9YudHbTA438397u5rkdlXa3atxwZEfUus3C4k,6803
418
424
  ccxt/base/errors.py,sha256=OGhWNvNtRlJOzFx-n1x3ZjTnaPpfWH0Vc0xACS-MeDw,5012
419
- ccxt/base/exchange.py,sha256=hCVro64mcaWt9mwkjXkaaOYB8lP6xiiL1e_WMP-Afog,334337
425
+ ccxt/base/exchange.py,sha256=t_YL3mi-wu_4lnabXSRI2BApyQp6CYmqpYysm2VIDdk,334337
420
426
  ccxt/base/precise.py,sha256=koce64Yrp6vFbGijJtUt-QQ6XhJgeGTCksZ871FPp_A,8886
421
427
  ccxt/base/types.py,sha256=Gvbogh9i7pPH7Z18xesYeDPribqqwq8uKpOv-YODFBs,11505
422
- ccxt/pro/__init__.py,sha256=y9lSdKFSFamdzxT17RIkWpyQsokPiwGndJp0NkAw2lA,11463
428
+ ccxt/pro/__init__.py,sha256=bcsp_CDUTFTiITgtD09055gJj047zewu2PPbVKKVZuU,11463
423
429
  ccxt/pro/alpaca.py,sha256=REAEZxdv2pY8xjxBGCBca3nPKpIdleVqr-IVpuVmADg,27637
424
430
  ccxt/pro/apex.py,sha256=FLBaLN2FESIh9gqHPVwf0IkkIHpxGHHUcFwgBGBEkrA,42018
425
431
  ccxt/pro/ascendex.py,sha256=P0DnIMIA-BIGxyoEQBLGtjH-whRhkPbhe8gU2s5V238,37526
@@ -742,8 +748,8 @@ ccxt/test/tests_async.py,sha256=D5ZDYYW635E2LFEhJt7HfIjbFVCQl3WSBEFnR-QEQzM,9549
742
748
  ccxt/test/tests_helpers.py,sha256=egM69A2ZFYeVF5hwC1Qt-c5DOeClY5bv4jowmceeFV8,9736
743
749
  ccxt/test/tests_init.py,sha256=qM0-Gb0h0p6CANWTkyYZI7wl-iYOcrPur7aj_OKh7m0,1212
744
750
  ccxt/test/tests_sync.py,sha256=Rr72cGmoKqbUIIEJJAGh2_QhBc4rIZlBxVtGCQVd4BE,94440
745
- ccxt_ir-4.7.0.dist-info/licenses/LICENSE.txt,sha256=EIb9221AhMHV7xF1_55STFdKTFsnJVJYkRpY2Lnvo5w,1068
746
- ccxt_ir-4.7.0.dist-info/METADATA,sha256=bv8Q5fUtCJ4edgRGK73c7jFCXfXgBgFGkoYaE1D19m0,139254
747
- ccxt_ir-4.7.0.dist-info/WHEEL,sha256=JNWh1Fm1UdwIQV075glCn4MVuCRs0sotJIq-J6rbxCU,109
748
- ccxt_ir-4.7.0.dist-info/top_level.txt,sha256=CkQDuCTDKNcImPV60t36G6MdYfxsAPNiSaEwifVoVMo,5
749
- ccxt_ir-4.7.0.dist-info/RECORD,,
751
+ ccxt_ir-4.9.1.dist-info/licenses/LICENSE.txt,sha256=EIb9221AhMHV7xF1_55STFdKTFsnJVJYkRpY2Lnvo5w,1068
752
+ ccxt_ir-4.9.1.dist-info/METADATA,sha256=g1nSxDrch8XHXd7i08QcS5oCj_qMTZQnvVYidRRz41U,139254
753
+ ccxt_ir-4.9.1.dist-info/WHEEL,sha256=JNWh1Fm1UdwIQV075glCn4MVuCRs0sotJIq-J6rbxCU,109
754
+ ccxt_ir-4.9.1.dist-info/top_level.txt,sha256=CkQDuCTDKNcImPV60t36G6MdYfxsAPNiSaEwifVoVMo,5
755
+ ccxt_ir-4.9.1.dist-info/RECORD,,