ccxt 4.4.90__py2.py3-none-any.whl → 4.4.91__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 -3
- ccxt/async_support/__init__.py +1 -3
- ccxt/async_support/base/exchange.py +6 -3
- ccxt/async_support/base/ws/client.py +173 -64
- ccxt/async_support/base/ws/future.py +23 -50
- ccxt/async_support/binance.py +1 -1
- ccxt/async_support/bitmex.py +2 -1
- ccxt/async_support/cex.py +61 -0
- ccxt/async_support/cryptocom.py +17 -2
- ccxt/async_support/cryptomus.py +1 -1
- ccxt/async_support/exmo.py +14 -7
- ccxt/async_support/gate.py +2 -2
- ccxt/async_support/hyperliquid.py +104 -53
- ccxt/async_support/kraken.py +26 -1
- ccxt/async_support/mexc.py +1 -0
- ccxt/async_support/modetrade.py +2 -2
- ccxt/async_support/paradex.py +1 -1
- ccxt/base/exchange.py +8 -5
- ccxt/binance.py +1 -1
- ccxt/bitmex.py +2 -1
- ccxt/cex.py +61 -0
- ccxt/cryptocom.py +17 -2
- ccxt/cryptomus.py +1 -1
- ccxt/exmo.py +13 -7
- ccxt/gate.py +2 -2
- ccxt/hyperliquid.py +104 -53
- ccxt/kraken.py +26 -1
- ccxt/mexc.py +1 -0
- ccxt/modetrade.py +2 -2
- ccxt/paradex.py +1 -1
- ccxt/pro/__init__.py +1 -1
- ccxt/pro/bitstamp.py +1 -1
- ccxt/pro/bybit.py +6 -136
- ccxt/pro/kraken.py +246 -258
- ccxt/pro/mexc.py +0 -1
- {ccxt-4.4.90.dist-info → ccxt-4.4.91.dist-info}/METADATA +6 -7
- {ccxt-4.4.90.dist-info → ccxt-4.4.91.dist-info}/RECORD +40 -57
- ccxt/abstract/coinlist.py +0 -57
- ccxt/async_support/base/ws/aiohttp_client.py +0 -147
- ccxt/async_support/bitcoincom.py +0 -18
- ccxt/async_support/bitfinex1.py +0 -1711
- ccxt/async_support/bitpanda.py +0 -17
- ccxt/async_support/coinlist.py +0 -2542
- ccxt/async_support/poloniexfutures.py +0 -1875
- ccxt/bitcoincom.py +0 -18
- ccxt/bitfinex1.py +0 -1710
- ccxt/bitpanda.py +0 -17
- ccxt/coinlist.py +0 -2542
- ccxt/poloniexfutures.py +0 -1875
- ccxt/pro/bitcoincom.py +0 -35
- ccxt/pro/bitfinex1.py +0 -635
- ccxt/pro/bitpanda.py +0 -16
- ccxt/pro/poloniexfutures.py +0 -1004
- ccxt/pro/wazirx.py +0 -766
- {ccxt-4.4.90.dist-info → ccxt-4.4.91.dist-info}/LICENSE.txt +0 -0
- {ccxt-4.4.90.dist-info → ccxt-4.4.91.dist-info}/WHEEL +0 -0
- {ccxt-4.4.90.dist-info → ccxt-4.4.91.dist-info}/top_level.txt +0 -0
ccxt/pro/mexc.py
CHANGED
@@ -1058,7 +1058,6 @@ class mexc(ccxt.async_support.mexc):
|
|
1058
1058
|
:returns dict[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
|
1059
1059
|
"""
|
1060
1060
|
await self.load_markets()
|
1061
|
-
params = self.omit(params, 'type')
|
1062
1061
|
messageHash = 'orders'
|
1063
1062
|
market = None
|
1064
1063
|
if symbol is not None:
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: ccxt
|
3
|
-
Version: 4.4.
|
3
|
+
Version: 4.4.91
|
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
|
@@ -49,7 +49,7 @@ Requires-Dist: mypy==1.6.1; extra == "type"
|
|
49
49
|
|
50
50
|
# CCXT – CryptoCurrency eXchange Trading Library
|
51
51
|
|
52
|
-
[](https://www.npmjs.com/package/ccxt) [](https://npmjs.com/package/ccxt) [](https://pypi.python.org/pypi/ccxt) [](https://www.nuget.org/packages/ccxt) [](https://godoc.org/github.com/ccxt/ccxt/go/v4) [](https://discord.gg/ccxt) [](https://www.npmjs.com/package/ccxt) [](https://npmjs.com/package/ccxt) [](https://pypi.python.org/pypi/ccxt) [](https://www.nuget.org/packages/ccxt) [](https://godoc.org/github.com/ccxt/ccxt/go/v4) [](https://discord.gg/ccxt) [](https://github.com/ccxt/ccxt/wiki/Exchange-Markets) [](https://x.com/ccxt_official)
|
53
53
|
|
54
54
|
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.
|
55
55
|
|
@@ -102,7 +102,7 @@ Current feature list:
|
|
102
102
|
| [](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) |  | [](https://github.com/ccxt/ccxt/wiki/Certification) | [](https://ccxt.pro) | [](https://dex.woo.org/en/trade?ref=CCXT) |
|
103
103
|
|
104
104
|
## Supported Cryptocurrency Exchanges
|
105
|
-
<!--- init list -->The CCXT library currently supports the following
|
105
|
+
<!--- init list -->The CCXT library currently supports the following 102 cryptocurrency exchange markets and trading APIs:
|
106
106
|
|
107
107
|
|logo |id |name |ver |type |certified |pro |
|
108
108
|
|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------|----------------------------------------------------------------------------------------------|:------------------------------------------------------------------------------------------------------------------------------------------------:|--------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------|
|
@@ -146,7 +146,6 @@ Current feature list:
|
|
146
146
|
| [](https://partner.coincatch.cc/bg/92hy70391729607848548) | coincatch | [CoinCatch](https://partner.coincatch.cc/bg/92hy70391729607848548) | [](https://coincatch.github.io/github.io/en/) |  | | [](https://ccxt.pro) |
|
147
147
|
| [](https://coincheck.com) | coincheck | [coincheck](https://coincheck.com) | [](https://coincheck.com/documents/exchange/api) |  | | |
|
148
148
|
| [](https://www.coinex.com/register?refer_code=yw5fz) | coinex | [CoinEx](https://www.coinex.com/register?refer_code=yw5fz) | [](https://docs.coinex.com/api/v2) |  | [](https://github.com/ccxt/ccxt/wiki/Certification) | [](https://ccxt.pro) |
|
149
|
-
| [](https://coinlist.co) | coinlist | [Coinlist](https://coinlist.co) | [](https://trade-docs.coinlist.co) |  | | |
|
150
149
|
| [](https://coinmate.io?referral=YTFkM1RsOWFObVpmY1ZjMGREQmpTRnBsWjJJNVp3PT0) | coinmate | [CoinMate](https://coinmate.io?referral=YTFkM1RsOWFObVpmY1ZjMGREQmpTRnBsWjJJNVp3PT0) | [](https://coinmate.docs.apiary.io) |  | | |
|
151
150
|
| [](https://go.coinmetro.com/?ref=crypto24) | coinmetro | [Coinmetro](https://go.coinmetro.com/?ref=crypto24) | [](https://documenter.getpostman.com/view/3653795/SVfWN6KS) |  | | |
|
152
151
|
| [](https://coinone.co.kr) | coinone | [CoinOne](https://coinone.co.kr) | [](https://doc.coinone.co.kr) |  | | |
|
@@ -270,13 +269,13 @@ console.log(version, Object.keys(exchanges));
|
|
270
269
|
|
271
270
|
All-in-one browser bundle (dependencies included), served from a CDN of your choice:
|
272
271
|
|
273
|
-
* jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.4.
|
274
|
-
* unpkg: https://unpkg.com/ccxt@4.4.
|
272
|
+
* jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.4.91/dist/ccxt.browser.min.js
|
273
|
+
* unpkg: https://unpkg.com/ccxt@4.4.91/dist/ccxt.browser.min.js
|
275
274
|
|
276
275
|
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
276
|
|
278
277
|
```HTML
|
279
|
-
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.4.
|
278
|
+
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.4.91/dist/ccxt.browser.min.js"></script>
|
280
279
|
```
|
281
280
|
|
282
281
|
Creates a global `ccxt` object:
|
@@ -1,10 +1,10 @@
|
|
1
|
-
ccxt/__init__.py,sha256=
|
1
|
+
ccxt/__init__.py,sha256=mfiQJQEb7-xLN1dO-DU6YGY1jWy0frqKaTfliu1rsFc,16184
|
2
2
|
ccxt/alpaca.py,sha256=S-PvXknJDcYUqHZWg4isZKGbTa8oU2G4Z0BqbvObNPI,80687
|
3
3
|
ccxt/apex.py,sha256=zNACpzgcqESJBg73H7gdDoA7ixjDVhCwFRr5hVtcT5g,82680
|
4
4
|
ccxt/ascendex.py,sha256=J1Ob6JJ-GXLfm5NHKETN985sAPN3nYlzWi57GYB1zpE,158608
|
5
5
|
ccxt/bequant.py,sha256=9rBVB2Wg9YMmgYiCqS1NSxiftPWmL97FdaNLVPb3Zpo,1218
|
6
6
|
ccxt/bigone.py,sha256=9HdNocMHTNAqBT5SZM8C31k_yUnVDH66fAERYQd2rnM,95645
|
7
|
-
ccxt/binance.py,sha256=
|
7
|
+
ccxt/binance.py,sha256=CAdK2uEbPLtuHJxS15Rgske4bLsrasLYiSbiHjiPjOo,680160
|
8
8
|
ccxt/binancecoinm.py,sha256=UEJd_dZQkrLdJpaCE_t9aHCwJdxpjheyTaWJ8RKWIm8,1720
|
9
9
|
ccxt/binanceus.py,sha256=fPaJxinZbmJbrXMW1aYW32n6fXX_VL7odjLEng77wdI,9500
|
10
10
|
ccxt/binanceusdm.py,sha256=U962JuxLu2_GXtWke4m-kLjtYRF-4H9ZlZ87FpXPYHo,2651
|
@@ -12,16 +12,13 @@ ccxt/bingx.py,sha256=GzLpCdZl76896nKtIKeLGjZAO-508tXDlviDHur5ecQ,275433
|
|
12
12
|
ccxt/bit2c.py,sha256=Yyxj7tK5kRxRJPIvsQwboWi6HwPfUOAMDr1uTrEfhyQ,41190
|
13
13
|
ccxt/bitbank.py,sha256=foAoge13WzWGHKUEn6LTTGsxqKhU7tXyTHkzFgqlkNQ,47774
|
14
14
|
ccxt/bitbns.py,sha256=5GqPAa7MEbUA2BcDzlus-GGW2rjUliqeWTg4P5gm0us,50931
|
15
|
-
ccxt/bitcoincom.py,sha256=kpGs1gz2443UrgEsWYeCR5L6FJyYqK5XLmFWaL-I0xM,541
|
16
15
|
ccxt/bitfinex.py,sha256=xje9kkfIlrdnmYdC2Vz8J9M511KPxvkqVw68ceIbsgc,167867
|
17
|
-
ccxt/bitfinex1.py,sha256=cC6NuPoQlWY5RoTnoRRgNK8yCr1GbF1NrOaZ341ZOkc,74223
|
18
16
|
ccxt/bitflyer.py,sha256=WCSs3DkjhmoBuV5mCLHSTMOB9eUwKmntfhBKbiY5B3g,46926
|
19
17
|
ccxt/bitget.py,sha256=e6ssz20PaoHGhU9bL0fDs4q54HGB-_BkssQGelOOW_0,453846
|
20
18
|
ccxt/bithumb.py,sha256=GHYK_Xwzk9nwINHN1lhnRvnTX8mL98RZQ3Khz213A1s,51640
|
21
19
|
ccxt/bitmart.py,sha256=aG2Vg10J65y3Wm3y1P4G9AxA2PnaIHfo3xqxg4J3QP8,248245
|
22
|
-
ccxt/bitmex.py,sha256=
|
20
|
+
ccxt/bitmex.py,sha256=yfYWTE6n3KxcWIGrbEwus9Q4eOm5xGlmjapaBOjQfek,131832
|
23
21
|
ccxt/bitopro.py,sha256=5e56YxFdUtGV885QUmPMxu_g6kUoaUVCMcB9U48LdEU,75452
|
24
|
-
ccxt/bitpanda.py,sha256=X1xluJEGWtDs5ovAf8djIMZNW-V-3brs4UjdqiWoanE,510
|
25
22
|
ccxt/bitrue.py,sha256=nxnwNVJv8DJLl3itJoIPnSBkhmAQxHfGpUeDB_skH5A,141003
|
26
23
|
ccxt/bitso.py,sha256=wlR9IWQzs4KrenG8bzibeIrFurbBw5BJgimXk72MCfA,75694
|
27
24
|
ccxt/bitstamp.py,sha256=s5ncJmGr3ce_xXNOaQjsWbB4qjg8VdmS_eaKc0ricpU,97130
|
@@ -35,7 +32,7 @@ ccxt/btcbox.py,sha256=v0HIZASf4bqqO_vCeGvmPaIxSp3IHs96eXTKmdEKeQg,32617
|
|
35
32
|
ccxt/btcmarkets.py,sha256=Wi8EctKjcc2WN9VLv0QliIpkyazo5vHaardgZDVa4pY,57446
|
36
33
|
ccxt/btcturk.py,sha256=b8d64i0G6W7vrj0yTHoFfEWUjTyCFFm581hVIOTpwPs,41099
|
37
34
|
ccxt/bybit.py,sha256=z8ZiIig5bYa1CFfNuQO6PMJ4-k5m70unV6yNJ0VQDMQ,436241
|
38
|
-
ccxt/cex.py,sha256=
|
35
|
+
ccxt/cex.py,sha256=hfk5nY0orEM2-benqiKbQvsYXaDSfzzVF_AJ5zLkDkg,75228
|
39
36
|
ccxt/coinbase.py,sha256=KCXeHooSvZYzkV0qbuUvh7KUZoxV8YyvCLZo8xsJ358,236315
|
40
37
|
ccxt/coinbaseadvanced.py,sha256=Eb1X4_VtdNEu1q0Anr-MzdHG55OhCiZYgdeZv2kFuPg,577
|
41
38
|
ccxt/coinbaseexchange.py,sha256=XxLe-YwcDMncJREjwx1qRlzNtGlk-gOvaYcNdyEpb5Q,87178
|
@@ -43,23 +40,22 @@ ccxt/coinbaseinternational.py,sha256=VH3RCIjvr9Y1FH-qcry92faMAEOzLR67XADKWjLDSV4
|
|
43
40
|
ccxt/coincatch.py,sha256=e2_bRVu46cnnJvo4SUCGztFbyq43xvoA3ulYph2S7ms,244315
|
44
41
|
ccxt/coincheck.py,sha256=CAuMcY3JvLbwpGHR4W1qUt-P7zKRqRRLsObxK5C9I0I,38011
|
45
42
|
ccxt/coinex.py,sha256=CoCBNE0SWXgXBurhdqcsMuMsj3TnYALKFUz-_gLz2XA,267281
|
46
|
-
ccxt/coinlist.py,sha256=phA_bd7LZM_Samh2GsJAy6trzIgJ4yhmvAOtxpByvVw,114104
|
47
43
|
ccxt/coinmate.py,sha256=ZbhFH_ALCbB9UpkSFlyh8RP4ZiLH7IbjJGX2PEOtUOs,48773
|
48
44
|
ccxt/coinmetro.py,sha256=4HKcoDpa_BnDgnM0x47aLmBt-4KxXfSKS8pr1rE3K8k,84504
|
49
45
|
ccxt/coinone.py,sha256=nzJSHoDvUsttXDNdn6Wd1p72Duj9GuRQ1bgqvphryCI,49231
|
50
46
|
ccxt/coinsph.py,sha256=j_9eHDvD1TNRe5c4vmSDruT6XMYf-orPhof6Tn-tVSA,99456
|
51
47
|
ccxt/coinspot.py,sha256=jQsrrLsUbHKpG1fe1lYEed4LNVLG3TJhx49NrkVyN2w,25997
|
52
|
-
ccxt/cryptocom.py,sha256=
|
53
|
-
ccxt/cryptomus.py,sha256=
|
48
|
+
ccxt/cryptocom.py,sha256=bwiSRpAkWnauR_fGO5NOWILu_xpNm5euYZHQBPn9a9A,149197
|
49
|
+
ccxt/cryptomus.py,sha256=uQfP8zn8tjZIJRUk7jVUJmSEC6QZ1trxL7vFmKoAFFE,47506
|
54
50
|
ccxt/defx.py,sha256=NkK5RWtxb_jaqTBsOLyUeXv5cdxS6jYZd3w7swsV7VQ,85291
|
55
51
|
ccxt/delta.py,sha256=nChbNm4BsOLUubaFJP7DgvCBnfbz5FHZuz2Gog629dI,157309
|
56
52
|
ccxt/deribit.py,sha256=yl2jQyWkhufwhf8MLfcCS1fjvDMCi7qi9amcjztIpAg,167176
|
57
53
|
ccxt/derive.py,sha256=xXB1Li3VHuwtmibyEH-6aESXvuPFzjUMMRfXTApFt6E,122255
|
58
54
|
ccxt/digifinex.py,sha256=EXRWsjYJVLR092ME1krRw7UED9H-ZgT2WulXTYQ2BfE,174808
|
59
55
|
ccxt/ellipx.py,sha256=b9wioqg43r3I63bWm0fIlk9EOGe44yoZSHx8m7B9JHQ,84066
|
60
|
-
ccxt/exmo.py,sha256=
|
56
|
+
ccxt/exmo.py,sha256=EpylCbunmOx65-zhuFdFCPmhdN6piHBfWoemNL1kkSY,120803
|
61
57
|
ccxt/fmfwio.py,sha256=a1VjvGxdm6bVGDyC0UhyB-0QgUmxsWUWs0ZAAK2RI9E,1275
|
62
|
-
ccxt/gate.py,sha256=
|
58
|
+
ccxt/gate.py,sha256=wufQi_WBp5ZP62wZCJgueeA1iOcwLPNh8oX4iqHpo40,352213
|
63
59
|
ccxt/gateio.py,sha256=7KbnH56kBK0tb_CN-wT10jaF5DfTrnHarhu27eknsLI,484
|
64
60
|
ccxt/gemini.py,sha256=V46lQwQ5a15YeCcOAOEHCuJQBnDvs_9LkrgTwDdCyxc,83625
|
65
61
|
ccxt/hashkey.py,sha256=oOZOJc9ZM-5FahVomRpk4nfRFnGG2zTRWvGO9CQ2Quw,191237
|
@@ -67,10 +63,10 @@ ccxt/hitbtc.py,sha256=glI1oOlmeIwFwBIZQNDKs7VBx6hIZXOuL_LsDkm6roo,159659
|
|
67
63
|
ccxt/hollaex.py,sha256=h0uplmuLHOWAabORg-5T8LTAr4fCQYtMt__EFKmm9Ks,82514
|
68
64
|
ccxt/htx.py,sha256=WjAspWUAhfNtRoxWbjdlAzthv9QneRFQ4YmoJcgm1OY,444035
|
69
65
|
ccxt/huobi.py,sha256=rQI8HyRj6Jt9XgJYdTbu4tzu85sv0SWT3rvO_HY8r_E,477
|
70
|
-
ccxt/hyperliquid.py,sha256=
|
66
|
+
ccxt/hyperliquid.py,sha256=Gsq0yWhTnO8zYdRLretO47k4_Pz9Xj7ywvjWqTONtts,152882
|
71
67
|
ccxt/independentreserve.py,sha256=4kg2DbElwd39vDP_39tIjRMj4uT2E7Rm6HIxnTfcux0,43214
|
72
68
|
ccxt/indodax.py,sha256=mnOPkrLScNIQ9CFkFY126OHgnLf2pCdnxaILPvFiwPc,57739
|
73
|
-
ccxt/kraken.py,sha256=
|
69
|
+
ccxt/kraken.py,sha256=Hod4OtZav3g4sT1v6UqRJYENGUtBNaIqvvGt4uQjZkE,148523
|
74
70
|
ccxt/krakenfutures.py,sha256=FxcFHrQHgytW8QtFRzGQdM1eka4keWNVYdU0er3UsGw,123352
|
75
71
|
ccxt/kucoin.py,sha256=OycntB0gK0mI4ZfDDMmHip8n2S-AxgKX2jG9XjFeJ5A,232381
|
76
72
|
ccxt/kucoinfutures.py,sha256=dIYjcWvjFSMdvykeSKLHJtyetBxPHKToj5TvLTv9pYA,146502
|
@@ -78,8 +74,8 @@ ccxt/latoken.py,sha256=WgmOCDR-7LfFi3NiqudrxUMR63ivcxxJMyE95YcUD5I,82334
|
|
78
74
|
ccxt/lbank.py,sha256=wboC02jnDOCj4Q1QNuwgMJ6umoXuYS1CySiXP4valCg,123621
|
79
75
|
ccxt/luno.py,sha256=IJUlAXvpSa6mrG5GGEbz_5UcfHVPIl2sgD848HXAOFU,56910
|
80
76
|
ccxt/mercado.py,sha256=xdbHqVJgj570KETzQSUftP_I73ewdVqSg0Sj_oORt0w,38466
|
81
|
-
ccxt/mexc.py,sha256=
|
82
|
-
ccxt/modetrade.py,sha256=
|
77
|
+
ccxt/mexc.py,sha256=h_lRUM7X5-ZKEPKKYNUxBiAlrqgc6YEDjuH8j_KTFw0,258968
|
78
|
+
ccxt/modetrade.py,sha256=i4SjYKsXUjT-mrVOzmVN5s5gEduwZYtOlhrL9Z-mJro,120867
|
83
79
|
ccxt/myokx.py,sha256=1fuUUuz5HuhSzTefnqUayu4NWVLNXzK58LPdpi0GYu4,1773
|
84
80
|
ccxt/ndax.py,sha256=lnfDM_ogPiR5E9SL4iKt9iCeVbeTp8EUrM2N6J0_vM4,113853
|
85
81
|
ccxt/novadax.py,sha256=8K6mKIBY5KyyunyBsYJEosfkr2yDrPVgJfFUpET242k,67583
|
@@ -90,11 +86,10 @@ ccxt/okxus.py,sha256=luEXOXlnV3UAmoZ_y8_7OGMxC3KyxLvy_8qI7Dc8F-g,1773
|
|
90
86
|
ccxt/onetrading.py,sha256=sWvLW8q4yqJ4qGFZgp14tMt8_SYrV8fkrEstir8Y-3Y,76492
|
91
87
|
ccxt/oxfun.py,sha256=j7X5i6v1pMnQS6TnrVl-m2u8RgCKyw9C584_Gdh1th4,124422
|
92
88
|
ccxt/p2b.py,sha256=2mkYFm3h_lFtgEu13F6sDgbj3UxYyTG-3R_l-w7NZiM,56725
|
93
|
-
ccxt/paradex.py,sha256=
|
89
|
+
ccxt/paradex.py,sha256=1qu9dpaGZ8apTmzROBXTHVur8SmQsjlDdO0UDGjfNNg,105584
|
94
90
|
ccxt/paymium.py,sha256=SPe-2BHskOi8uHtrFWqcoop-ec5vu9GSQwDDf8EnXTA,26219
|
95
91
|
ccxt/phemex.py,sha256=zbMwXctIOcXvXt2QqBjszqyyOgdhHOEnAB0w6j1Av3Q,242408
|
96
92
|
ccxt/poloniex.py,sha256=S8He49jYO3VO4AJbRLLCH6iQy21JdTQVZnY77hTES2A,155043
|
97
|
-
ccxt/poloniexfutures.py,sha256=tiPISr3IPJkViGW3R19YqMYiK9I0_VR7cVtctJEBmvo,83197
|
98
93
|
ccxt/probit.py,sha256=clsrBdC3YP-FT7HVUICXCk2q34PhhuBbURcxQDKAvWA,77624
|
99
94
|
ccxt/timex.py,sha256=O6NrRwPVnjrHo2unN55qzeSMokDtMBGuWjdkQjtXUpM,75124
|
100
95
|
ccxt/tokocrypto.py,sha256=hmCMf7f3Z0tM6Ipnj7RrQDHvuKB7wKBhfSqD4ePsNiI,126321
|
@@ -151,7 +146,6 @@ ccxt/abstract/coinbaseinternational.py,sha256=ic3EjzSwsOAZpMQQk2yVO8iO8_ZfkGysai
|
|
151
146
|
ccxt/abstract/coincatch.py,sha256=mCUMZarGuKB1EfwWeXQkRclHiye9wUIXxjghcRGQu5A,14248
|
152
147
|
ccxt/abstract/coincheck.py,sha256=3IIVmryXmzxXqi6IleUmfDZIUMOn_L_4G9Iw8BuEEGo,3417
|
153
148
|
ccxt/abstract/coinex.py,sha256=4TRXtWgONqkm3eSL55Y5T7Q4QxJrnOTuhP0ugsKHAWo,34856
|
154
|
-
ccxt/abstract/coinlist.py,sha256=Y3H892ew_GrfOZ7vpKoF5jLr_EixGAdi_4BXyT7PPnc,6960
|
155
149
|
ccxt/abstract/coinmate.py,sha256=LYCJZIWe3sidZUozM7jBTB-AiN3cMElFhYqO9d1QvfI,6842
|
156
150
|
ccxt/abstract/coinmetro.py,sha256=W2eAbFInYZMm1BgfZMRuCX7i201hT4q6QCtie30-_AQ,3975
|
157
151
|
ccxt/abstract/coinone.py,sha256=X2gKABhQbzyFUs8MLo-VGyhG4CxgRSVa6qJsiJqubk0,8291
|
@@ -216,13 +210,13 @@ ccxt/abstract/xt.py,sha256=n3eX1cItL_J0j8prOViV-C_tRwIFv_GO8JTvZZw8jv8,27837
|
|
216
210
|
ccxt/abstract/yobit.py,sha256=8ycfCO8ORFly9hc0Aa47sZyX4_ZKPXS9h9yJzI-uQ7Q,1339
|
217
211
|
ccxt/abstract/zaif.py,sha256=m15WHdl3gYy0GOXNZ8NEH8eE7sVh8c0T_ITNuU8vXeU,3935
|
218
212
|
ccxt/abstract/zonda.py,sha256=X-hCW0SdX3YKZWixDyW-O2211M58Rno8kKJ6quY7rw4,7183
|
219
|
-
ccxt/async_support/__init__.py,sha256=
|
213
|
+
ccxt/async_support/__init__.py,sha256=UH_PVld-sQ4KSUxp-Iwag-YPzbkMerQDvoluhoICnXg,15957
|
220
214
|
ccxt/async_support/alpaca.py,sha256=Tag0HpHxho_qrXoQ8rjZBVJZj9T38qg8g-mZR39_m18,81133
|
221
215
|
ccxt/async_support/apex.py,sha256=Lf740Qrx0kRb2fVZWS0FwZeysyMz65IEFD66jzn-NfA,83168
|
222
216
|
ccxt/async_support/ascendex.py,sha256=sbL_sajKakTo1-Qw87oipkxrA5Qk-ol6bnY3kqh_5Bk,159445
|
223
217
|
ccxt/async_support/bequant.py,sha256=-O1NDzEwsG1L2H17ZzcJw7ZHvDt8s-47bgqzjixYkjc,1232
|
224
218
|
ccxt/async_support/bigone.py,sha256=LIFOq8_49wkrql1VLqFJhJaOokDqw6JnYfS4fdkfCGU,96099
|
225
|
-
ccxt/async_support/binance.py,sha256=
|
219
|
+
ccxt/async_support/binance.py,sha256=2TUalju1usqqKzEGMwa4fHWs5_vbNCgpaytNrvX1jL8,683073
|
226
220
|
ccxt/async_support/binancecoinm.py,sha256=1NC5yuHlkNgXH5mEz20lU7O7u3pODa6fluSmHO7W5Lc,1758
|
227
221
|
ccxt/async_support/binanceus.py,sha256=fD4Rm2iJZ6YZuJAbRt5TPh2p8dIyN8yQkovnSWKF6F8,9514
|
228
222
|
ccxt/async_support/binanceusdm.py,sha256=pSIfePaOra0ikZLqFbvBAgHXbj1bhmuSt1G-DiNbgIk,2689
|
@@ -230,16 +224,13 @@ ccxt/async_support/bingx.py,sha256=nSrijjPDKUvvQSQ7Fx6gf9BmbjkdtcWeyDIBS5pY804,2
|
|
230
224
|
ccxt/async_support/bit2c.py,sha256=CYx7PSZNdg3JyN08DTYRtLYPxsz8gOoYxpgN02h1LjI,41402
|
231
225
|
ccxt/async_support/bitbank.py,sha256=1LUSR3ePVrdT80QWVMAlKDr3Ld9vYRj98Yg6IpYIoIE,48034
|
232
226
|
ccxt/async_support/bitbns.py,sha256=L6wAlhQu7ydl8R1kph7_K6QvnMAKuvjWQd_4w7d_uzY,51185
|
233
|
-
ccxt/async_support/bitcoincom.py,sha256=NN_AWmT0tzikiwFDtf3aUqRXbgFTbdRIeL0kPbL5QpQ,555
|
234
227
|
ccxt/async_support/bitfinex.py,sha256=reAsUMsbu8a3g_hK0s50btHcWQXo3jTH4bfvjFM5dRE,168627
|
235
|
-
ccxt/async_support/bitfinex1.py,sha256=5wTplLdKMIEoWUwrG5_W5rXhrPbrch1358Bwa6TU1ek,74689
|
236
228
|
ccxt/async_support/bitflyer.py,sha256=i68Vb2iY6OCXQ2DU9pHKJexOxH8dZAZrZSPr_q-colA,47252
|
237
229
|
ccxt/async_support/bitget.py,sha256=sPHtswNgPICInGQshCx2B1FxTmzf71mHVFQIxImZeew,455589
|
238
230
|
ccxt/async_support/bithumb.py,sha256=ar0QoFintFU7qv7wW6xjnYqBR3keNYN4qN5cbybYxEY,51919
|
239
231
|
ccxt/async_support/bitmart.py,sha256=RFolj5OLPM94D1dU-de0wGD92gX3z8I9p3l67Nu2gTk,249369
|
240
|
-
ccxt/async_support/bitmex.py,sha256=
|
232
|
+
ccxt/async_support/bitmex.py,sha256=Nol7iGiAzcCom877VUrfsL0cobZ5DXPRmYmq6noBsoM,132410
|
241
233
|
ccxt/async_support/bitopro.py,sha256=ZSzfoGFxe8005JhF58OGhAgjOz_ElL4kS8gZBxlp5cs,75862
|
242
|
-
ccxt/async_support/bitpanda.py,sha256=zj2ad7e9spjosP19nGH2s9oJnlSsJ7CZFNK4alIt51w,524
|
243
234
|
ccxt/async_support/bitrue.py,sha256=pYVOhG7dB1RAYsHLmlut9qd3tOxaZF8VS-J1fImp_qU,141661
|
244
235
|
ccxt/async_support/bitso.py,sha256=VxJIMonNL21HlZtf1t_VTTdwfrpDr5B8FB0o-aSISP4,76080
|
245
236
|
ccxt/async_support/bitstamp.py,sha256=RD8F7UtyaSfJKBgbIjA38QTu64TQ1kGbIJ2eAdNAc7A,97630
|
@@ -253,7 +244,7 @@ ccxt/async_support/btcbox.py,sha256=LQESzuVcGVbuCIBUd-gx-yEkQxk3BkEPGYS3JqcBOls,
|
|
253
244
|
ccxt/async_support/btcmarkets.py,sha256=Hyl6g0n86vkfFeA74hPiOWyf0Gy-jP3IFd3viliaTwk,57796
|
254
245
|
ccxt/async_support/btcturk.py,sha256=hnvcz2VixRaUTK9qG14yuvI8ime5GykDnd8C539UHow,41317
|
255
246
|
ccxt/async_support/bybit.py,sha256=HhsT0lUGMgtObPLYkAA0HH3fPY7qtSgru2irZgr3rsI,438061
|
256
|
-
ccxt/async_support/cex.py,sha256=
|
247
|
+
ccxt/async_support/cex.py,sha256=JGYkLVxmT2YLMN3FhPGu2uYXNDYjLqocl0LAEU5Ln98,75700
|
257
248
|
ccxt/async_support/coinbase.py,sha256=F6tJV3Yl0UEnEaaXLjd_CitOQYJaXP5p0eZrE2eM1ps,237576
|
258
249
|
ccxt/async_support/coinbaseadvanced.py,sha256=TnsUS2r5fvHIEfQmJh7J6Muyg8tPqDJphKYmK7gUQGE,591
|
259
250
|
ccxt/async_support/coinbaseexchange.py,sha256=HDpvVVbjP1ufz2v-GyBVHl550XhsrXuPNQYYriFOSVQ,87684
|
@@ -261,23 +252,22 @@ ccxt/async_support/coinbaseinternational.py,sha256=0wTE9n8B_GOeHOH0CdA_2hnhe0abq
|
|
261
252
|
ccxt/async_support/coincatch.py,sha256=2_qdmOvJo-T65OGW3LKIpYm2H2eBP7T1y6BiIJBZnc8,245391
|
262
253
|
ccxt/async_support/coincheck.py,sha256=riQpuspYXE3FXgjQQaNFSjnWGtsPUBwdOrq9Hy3eTO8,38217
|
263
254
|
ccxt/async_support/coinex.py,sha256=lj_2qf1gnqmXbVf_pXBZddBFsHeVmh_N2JIxBHhmPwM,268569
|
264
|
-
ccxt/async_support/coinlist.py,sha256=GaZ8TTROBzs6woGTpnvTnfyP3CP6JocQyES5tc-jXFw,114610
|
265
255
|
ccxt/async_support/coinmate.py,sha256=iC1zJju22iTcFtrQKFSsOyPkgTFQkUDa_2FWOOH029w,49039
|
266
256
|
ccxt/async_support/coinmetro.py,sha256=RkkaJ7-apWSr5I9iHBc4samaqf28eWhPmIGaCB0zxyI,84824
|
267
257
|
ccxt/async_support/coinone.py,sha256=nNNpMSRHFz8pQEkHcEIj9GHNHsnlWhwk_ZauMmAIePI,49473
|
268
258
|
ccxt/async_support/coinsph.py,sha256=zHsKdCq_EMNfqlO68i-uop_ctXmwfbfUcQ_4yGmmQeI,99902
|
269
259
|
ccxt/async_support/coinspot.py,sha256=TpccNE4N4g2lVcPPVzDVR5P2rD8TxqYXzpmNqpxRulQ,26155
|
270
|
-
ccxt/async_support/cryptocom.py,sha256=
|
271
|
-
ccxt/async_support/cryptomus.py,sha256=
|
260
|
+
ccxt/async_support/cryptocom.py,sha256=ijDQY3ILYWIXaRwtx73zLY2RlrvkTp5n0RljIItXq5Q,149835
|
261
|
+
ccxt/async_support/cryptomus.py,sha256=pnQMocQIduf44dA5x6RC6vl9vq09YiF6zw3FegcwysE,47706
|
272
262
|
ccxt/async_support/defx.py,sha256=mhcJBpJGSZZm3IoKyaGuTIOokmvVm6RVl9mRf-39_3A,85793
|
273
263
|
ccxt/async_support/delta.py,sha256=5wh7mM8MGXupMAyNe3Pu47od1VNKfKkLCOASyBh2BMw,157917
|
274
264
|
ccxt/async_support/deribit.py,sha256=Zfcl0uPhi6oYAYBy5T6MywTpdNbarfyJLH-rxqiZ-NE,167958
|
275
265
|
ccxt/async_support/derive.py,sha256=wvaGnXWt8llnj9YCRW6Mke8t3oyIu0m_4sFYd-AHo3I,122751
|
276
266
|
ccxt/async_support/digifinex.py,sha256=KXO1mP_t1iEvOJjJ2ESq9TaPDcHLjByb0AvVJEtBS1U,175796
|
277
267
|
ccxt/async_support/ellipx.py,sha256=q_Mf8eDeZK1XdXTfCujzTtggomGOh9jn76-d1H_AjZM,84374
|
278
|
-
ccxt/async_support/exmo.py,sha256=
|
268
|
+
ccxt/async_support/exmo.py,sha256=obl3Ihql_Q9hDAlxKe96lBT7ipH-nKFOzoXhijztk1U,121515
|
279
269
|
ccxt/async_support/fmfwio.py,sha256=daZ_yHYGThtJQV2LIh0wSS1uotTY-CH8e8pdNLr_Otw,1289
|
280
|
-
ccxt/async_support/gate.py,sha256=
|
270
|
+
ccxt/async_support/gate.py,sha256=1Rem4zV8I-QVx4J-w36kiXnA4pQUpvWW220Z8hp9RJY,354172
|
281
271
|
ccxt/async_support/gateio.py,sha256=Sy9taiR0_0k4oh5GHjTjpwuCzskKiCCEQljuz7OxDVs,498
|
282
272
|
ccxt/async_support/gemini.py,sha256=-6EoDaH5Ybs37lXoatifP3A39mrppJPOrS7y2NrMA-E,84149
|
283
273
|
ccxt/async_support/hashkey.py,sha256=Bmts-K34h47pTTtzGtIst4tK9bK5Nup_cTS8X_qqtb4,192079
|
@@ -285,10 +275,10 @@ ccxt/async_support/hitbtc.py,sha256=gZ8_Gso14v-RNPuufqOkqpeAId58KtAnumVbWgq3ZdA,
|
|
285
275
|
ccxt/async_support/hollaex.py,sha256=FlbwoouClCNOqGPNeruR71TgmuK9zE6T4VU8uY8fAnA,82954
|
286
276
|
ccxt/async_support/htx.py,sha256=HT7L4Fg1bH9Qf-NArusiYdLyIBilXZg9uPHocAfImlM,446445
|
287
277
|
ccxt/async_support/huobi.py,sha256=D4CTKw-2sl7iiX3yh7hMMkhBXHvQQ3to9_tW4WKm0rA,491
|
288
|
-
ccxt/async_support/hyperliquid.py,sha256=
|
278
|
+
ccxt/async_support/hyperliquid.py,sha256=MyHvZLgVhrwpZWBDO56J3v1e-0DUSMlQaUPSf_kBuGs,153660
|
289
279
|
ccxt/async_support/independentreserve.py,sha256=HvAj_2WG3lKNy5R2vDmV32frQbsOb3TSvg7QHZ8E8So,43512
|
290
280
|
ccxt/async_support/indodax.py,sha256=JssbOrL5Xy5MVgwtv9nbKPelmgOS9IMAniyZ5D5d6Lc,58047
|
291
|
-
ccxt/async_support/kraken.py,sha256=
|
281
|
+
ccxt/async_support/kraken.py,sha256=HUMfF56ciJ7xOHVt6tiu04ysS6dufxubXpUx2_qHYHw,149205
|
292
282
|
ccxt/async_support/krakenfutures.py,sha256=eUeNv8u1DyIVIL7R-DxCh25SPOgGL90aHDoHmFDia28,123840
|
293
283
|
ccxt/async_support/kucoin.py,sha256=kUz1hYpOU364piOa-psqtxTm11f6KlXS0HErk9_J-xk,233531
|
294
284
|
ccxt/async_support/kucoinfutures.py,sha256=irTJoiMRS_8FGDalVNXE1sV1zhkM9rkVtqUOreL0tTM,147290
|
@@ -296,8 +286,8 @@ ccxt/async_support/latoken.py,sha256=RdEFvig7T_GbtwUy8MG3ZKnlsM6UDJnjbvjTs7Y7Qis
|
|
296
286
|
ccxt/async_support/lbank.py,sha256=cIEIQYDUTzTbnCZTxkfSS4ef80zlwlw1GBIRJJReopU,124369
|
297
287
|
ccxt/async_support/luno.py,sha256=TbC8rBRk9ppdn5pI8flzT11tJ3fW2jBYPWSrwc3Cv9k,57296
|
298
288
|
ccxt/async_support/mercado.py,sha256=rC48RX-XpLRd2u0roaGc5JY046mHrI6nq1b-4vhNeGU,38708
|
299
|
-
ccxt/async_support/mexc.py,sha256=
|
300
|
-
ccxt/async_support/modetrade.py,sha256=
|
289
|
+
ccxt/async_support/mexc.py,sha256=Q84eiLJUARv6JA2q_0Tpq9JsRqLzNVmf0fmWo5mnMho,260232
|
290
|
+
ccxt/async_support/modetrade.py,sha256=H_Qd7V__hdy_ck9fCh-_bkaKwVmyhZrwV8v8qALqTkw,121559
|
301
291
|
ccxt/async_support/myokx.py,sha256=hU24R4SOpmyjnvgZe5YSU4ELucsSZlENBox4U0P862w,1787
|
302
292
|
ccxt/async_support/ndax.py,sha256=UPHLwLNELb-CU4uSpxemsH3S4ZhosLmUwUwl1IYrCmA,114377
|
303
293
|
ccxt/async_support/novadax.py,sha256=QIFIoZdkkq2odkX7V0wGn9ytgtzEDOTr4MnFGlgnKEk,67951
|
@@ -308,11 +298,10 @@ ccxt/async_support/okxus.py,sha256=MuQ7TqH1CIKec_Z11O7hbz5bRCDzqW51fy1tZoZ1_DI,1
|
|
308
298
|
ccxt/async_support/onetrading.py,sha256=feDyVyi8JEVENCoe2rISM25CbpJeYtQDIrh65IGw5eU,76848
|
309
299
|
ccxt/async_support/oxfun.py,sha256=Omz6V_qxRLx0RbDQMC5ytvAviTMKCWsJ_iJFGgnoaX8,124984
|
310
300
|
ccxt/async_support/p2b.py,sha256=A_RPhOvbOMozI8Ypvw_Qzon5c6609l-fle3hYMT4j4w,56967
|
311
|
-
ccxt/async_support/paradex.py,sha256=
|
301
|
+
ccxt/async_support/paradex.py,sha256=loTpDexhTgNe7pjGk5Pzc2hLtryVe4I1SMW6HBucmG8,106306
|
312
302
|
ccxt/async_support/paymium.py,sha256=x4-ORMQoTtML3ZOSlBc6oH139SzVbzs0deVpV5cnqBQ,26407
|
313
303
|
ccxt/async_support/phemex.py,sha256=RJBmrNMdQA3syUqhruZmCq_R3KYcGCmw9OvYF8jWuoA,243324
|
314
304
|
ccxt/async_support/poloniex.py,sha256=2akpw-eVRa4t4brDZKzKxX6lrDwtvgooQ-7mStO4Rhc,155845
|
315
|
-
ccxt/async_support/poloniexfutures.py,sha256=5VlGcB2YgXLQ8ddHw82NIw1gGdHFm28q4zxwvlpCMHY,83595
|
316
305
|
ccxt/async_support/probit.py,sha256=9lwyNddXq_SIc7eBO2lXWdxs_smhe1WlDxks7QqwBAk,78016
|
317
306
|
ccxt/async_support/timex.py,sha256=27WWF0gY0Eh0mY2ZvHxEq1KGTppJj6ByjWyYAVRI_vQ,75486
|
318
307
|
ccxt/async_support/tokocrypto.py,sha256=DcUSa9PEsk9UGVFQbsWLXVAN8mL-3B1s4IBiSCC2POU,126683
|
@@ -328,23 +317,22 @@ ccxt/async_support/yobit.py,sha256=B2T9UXo0ke-YyXxNW9avOPJ8cReVGXWD9OpkORI9ZSU,5
|
|
328
317
|
ccxt/async_support/zaif.py,sha256=jZZv3ZjGQgkPNRfY5B5p5DNMvanHWTTS8m6BLBWm9tA,31357
|
329
318
|
ccxt/async_support/zonda.py,sha256=2QL_B9CmBu4SU4K-Y8segpj57vzAd4aUT2H2cD3b07g,85320
|
330
319
|
ccxt/async_support/base/__init__.py,sha256=aVYSsFi--b4InRs9zDN_wtCpj8odosAB726JdUHavrk,67
|
331
|
-
ccxt/async_support/base/exchange.py,sha256=
|
320
|
+
ccxt/async_support/base/exchange.py,sha256=RBB3v5Eqi6U0twVnaocSBCk0MD87meBQdYIz_mGCRUs,119286
|
332
321
|
ccxt/async_support/base/throttler.py,sha256=tvDVcdRUVYi8fZRlEcnqtgzcgB_KMUMRs5Pu8tuU-tU,1847
|
333
322
|
ccxt/async_support/base/ws/__init__.py,sha256=uockzpLuwntKGZbs5EOWFe-Zg-k6Cj7GhNJLc_RX0so,1791
|
334
|
-
ccxt/async_support/base/ws/aiohttp_client.py,sha256=Y5HxAVXyyYduj6b6SbbUZETlq3GrVMzrkW1r-TMgpb8,6329
|
335
323
|
ccxt/async_support/base/ws/cache.py,sha256=xf2VOtfUwloxSlIQ39M1RGZHWQzyS9IGhB5NX6cDcAc,8370
|
336
|
-
ccxt/async_support/base/ws/client.py,sha256=
|
324
|
+
ccxt/async_support/base/ws/client.py,sha256=3H6NnHk7GIC6wqJ49eshuvy5MnT3ma4cnAPSWKNy6S8,13475
|
337
325
|
ccxt/async_support/base/ws/functions.py,sha256=qwvEnjtINWL5ZU-dbbeIunjyBxzFqbGWHfVhxqAcKug,1499
|
338
|
-
ccxt/async_support/base/ws/future.py,sha256=
|
326
|
+
ccxt/async_support/base/ws/future.py,sha256=9yFyxqT7cl-7ZFM6LM4b6UPXyO2FGIbAhs5uoJ3-Smo,1271
|
339
327
|
ccxt/async_support/base/ws/order_book.py,sha256=uBUaIHhzMRykpmo4BCsdJ-t_HozS6VxhEs8x-Kbj-NI,2894
|
340
328
|
ccxt/async_support/base/ws/order_book_side.py,sha256=GhnGUt78pJ-AYL_Dq9produGjmBJLCI5FHIRdMz1O-g,6551
|
341
329
|
ccxt/base/__init__.py,sha256=eTx1OE3HJjspFUQjGm6LBhaQiMKJnXjkdP-JUXknyQ0,1320
|
342
330
|
ccxt/base/decimal_to_precision.py,sha256=fgWRBzRTtsf3r2INyS4f7WHlzgjB5YM1ekiwqD21aac,6634
|
343
331
|
ccxt/base/errors.py,sha256=MvCrL_sAM3de616T6RE0PSxiF2xV6Qqz5b1y1ghidbk,4888
|
344
|
-
ccxt/base/exchange.py,sha256=
|
332
|
+
ccxt/base/exchange.py,sha256=wjO_dKXa2T3CqHP7jZtL7grD_tifCcNn_wew8PNCotc,328697
|
345
333
|
ccxt/base/precise.py,sha256=koce64Yrp6vFbGijJtUt-QQ6XhJgeGTCksZ871FPp_A,8886
|
346
334
|
ccxt/base/types.py,sha256=IbLO7Ni-plO36xlOdJQFqujSJBq0q9qll009ShZ0M_U,11468
|
347
|
-
ccxt/pro/__init__.py,sha256=
|
335
|
+
ccxt/pro/__init__.py,sha256=_OBzr8T1GgPbK4Mdqjpcrh_VxciegIFXW9y1k4jvoSg,11381
|
348
336
|
ccxt/pro/alpaca.py,sha256=_WEorh5thYhvhn7R8hBvHW2m1P2foIbp8URjIt_9vcg,27623
|
349
337
|
ccxt/pro/apex.py,sha256=fiKLT2R4vSCtTBXtXOgw_rJc6jPGINrpEJagzfvlL9c,42004
|
350
338
|
ccxt/pro/ascendex.py,sha256=aSbIEzJ0Og_Nc5UGTYj3DVjGfIJ0-q0DdXSWJcQCKb4,37512
|
@@ -354,22 +342,19 @@ ccxt/pro/binancecoinm.py,sha256=AfOWR--71YCCYSUsX50G4sW2OxvLKJX00XcpItnfG7o,1075
|
|
354
342
|
ccxt/pro/binanceus.py,sha256=PMx1G5RD-whXM02hRF8A6aW_-4-LJqPbx9o63nBp_8o,2034
|
355
343
|
ccxt/pro/binanceusdm.py,sha256=n01dbMu25CEcaJXNve--Ngf2Toqg3yWHstqTz4vtOUU,1551
|
356
344
|
ccxt/pro/bingx.py,sha256=jcjyR3FyMBN9Q2MMtOWCzOkavjkFZqFLdia8cKt5hqw,61625
|
357
|
-
ccxt/pro/bitcoincom.py,sha256=a0dw4oSbeq43tRYIwPGCmQP3dc4BxfW0tPDxCMUc2bs,1220
|
358
345
|
ccxt/pro/bitfinex.py,sha256=ZLQEFVjWb94XHBsRE6QBEtA4cpvL5gD_K3UV1SCTmD8,43115
|
359
|
-
ccxt/pro/bitfinex1.py,sha256=6SHvEOedkCAfYjXOSVvl9yAmwezip-GAVg0vaG8Cu34,25323
|
360
346
|
ccxt/pro/bitget.py,sha256=RG3ePuPfGNY0XW0kGOxaDlwQ_MKpA99ZMVYBe1G_ZUg,90331
|
361
347
|
ccxt/pro/bithumb.py,sha256=aXK63jzW1tZS76vHZzcBPji7_HdERRSi3m1toA-LxWE,17546
|
362
348
|
ccxt/pro/bitmart.py,sha256=Kuw1n-SuUT_vVs2HObJkE6jtieS55qeD9dcWbZGBeT0,67210
|
363
349
|
ccxt/pro/bitmex.py,sha256=Vwb7J6ToIKLsx00OdX3Om47bufLi6d7HRm9hP2w9zSg,74652
|
364
350
|
ccxt/pro/bitopro.py,sha256=9Fq3ICU9prweuUzSksjyJKIyjzngQq8uYiQt0cEJVYU,19117
|
365
|
-
ccxt/pro/bitpanda.py,sha256=pWAN2rWrntjapwWahyy6JZDOggYToEXqo3rk5plQZsg,454
|
366
351
|
ccxt/pro/bitrue.py,sha256=DRsz1IoSc6LjujnBCs33t7vmN2Ltr4LQj9McqmfOShU,16292
|
367
|
-
ccxt/pro/bitstamp.py,sha256=
|
352
|
+
ccxt/pro/bitstamp.py,sha256=5JS-ssfVWbc_i0ik54ZpXT-U8MSMZ-wLcBc6Coqap_w,20976
|
368
353
|
ccxt/pro/bittrade.py,sha256=pBnZeJbJzsjH2qH_TyXVW5Rtp3sHo9Yv9skH1UEN8Co,23334
|
369
354
|
ccxt/pro/bitvavo.py,sha256=zh7jiinMuCB_7Q_mOqh9E4egTKMgIS_IHo-tQZkn9dc,59866
|
370
355
|
ccxt/pro/blockchaincom.py,sha256=ub_j3mGQfTaCVN2mb4e8PZk_2L6GvlStvNOjb9aHaIA,29636
|
371
356
|
ccxt/pro/blofin.py,sha256=YL2KMinrg1CpXLcd0ygF69ORexJZdOf6UZ4DtSZvmzc,31793
|
372
|
-
ccxt/pro/bybit.py,sha256=
|
357
|
+
ccxt/pro/bybit.py,sha256=HzT45CG9GFWZTe-0VhAObG9R4F8MFUaQs60A94QdjMs,106407
|
373
358
|
ccxt/pro/cex.py,sha256=G2yzA7MV-nassotKsUsmijqkmPFKJWMA6rmT4Dr8MVI,58526
|
374
359
|
ccxt/pro/coinbase.py,sha256=8nYb3wC3gbcgCCLLZLYWIvFxHg15PkFxL8KX8urbgoM,30573
|
375
360
|
ccxt/pro/coinbaseadvanced.py,sha256=EizO2LNJAy74LU7sW7GjUFiJgfWALiWI1-Yj2Bv1OrM,513
|
@@ -394,13 +379,13 @@ ccxt/pro/htx.py,sha256=qjvYQIRz3nLSjCarLJIEqTo2YVwfIvv9OwXJynkLGwY,97645
|
|
394
379
|
ccxt/pro/huobi.py,sha256=MPqx8sS8dX9pQHiSWZKzKgNRB2O4yfblX7yTTbM7Tp0,424
|
395
380
|
ccxt/pro/hyperliquid.py,sha256=IwO7ZJ-N6JSGx5lJhaDAq0xjGqdBrj32zuqj2WR1xC8,42785
|
396
381
|
ccxt/pro/independentreserve.py,sha256=3FGcNr9nrlf6Qt_q29lMe9I760IP9T-DBgDj_kmAo2g,11368
|
397
|
-
ccxt/pro/kraken.py,sha256=
|
382
|
+
ccxt/pro/kraken.py,sha256=yab39i7Kw-SECnuHgDYbQFp22LNiFrDXy2gdCDcedbw,75657
|
398
383
|
ccxt/pro/krakenfutures.py,sha256=2qfn_xJ7UYnJFYusG9iqlyd7O-peZm5aCfzVHFLD_mc,63913
|
399
384
|
ccxt/pro/kucoin.py,sha256=aXBSfhUVZEyGLwoJJSi9MIOxyWWmnd_FRf38R6fAuV4,60753
|
400
385
|
ccxt/pro/kucoinfutures.py,sha256=9EbEi4vCwLl9evPlJLX7tQTk18mPz87piKnH6GZbMvo,56070
|
401
386
|
ccxt/pro/lbank.py,sha256=CyrosUibFTA_CwCamYoWtrOzg_scpR79GvO4p5wu7Tg,35582
|
402
387
|
ccxt/pro/luno.py,sha256=hlszbPJprTYP0WoR8cQM8sgtKTJcEVWG14KiDAw8TkY,12446
|
403
|
-
ccxt/pro/mexc.py,sha256=
|
388
|
+
ccxt/pro/mexc.py,sha256=Ntg1PLi2QZ_oZfWzDv3VGr0WpZLTyG4hA4HbfOH68MY,68531
|
404
389
|
ccxt/pro/modetrade.py,sha256=ZlOlLlbXgo-2na6A-9l-2Z0uCmLJH_hQdoFLN9fi5ek,51716
|
405
390
|
ccxt/pro/myokx.py,sha256=iSdyUUOmRA8QdJNJSn-DoLJb-fw88ReQxAs6nithKVQ,1237
|
406
391
|
ccxt/pro/ndax.py,sha256=3cTUYVycEVaw2a13pScrQgbDWYM_JQAxZJ2LIe1q9pw,22975
|
@@ -413,12 +398,10 @@ ccxt/pro/p2b.py,sha256=ljmk5mQhB68D1_i0OpNS87Hp66i4YIv347IOYvDocHE,20893
|
|
413
398
|
ccxt/pro/paradex.py,sha256=dVvrsdpzVK_QxPYUzQeemwaUWEo0BnsT-AZmRJSwYiY,14427
|
414
399
|
ccxt/pro/phemex.py,sha256=cLJoHG6MUqh5osNOmecC81ZrGPQwlAX0XXoySy9nJRE,63343
|
415
400
|
ccxt/pro/poloniex.py,sha256=BbHcQfV6HOVdBFZ8bysKWTdMQPqViQrRmMv7SpPm8uQ,53568
|
416
|
-
ccxt/pro/poloniexfutures.py,sha256=3bpcwhUZ1-oNyJBSMVIowazYKwh-eEcI65FsORdfeZU,41992
|
417
401
|
ccxt/pro/probit.py,sha256=hh8MUW_5Al6zN4rtveUKEXveDI8bStIB2az8FaGQew0,23136
|
418
402
|
ccxt/pro/tradeogre.py,sha256=9PQUWy2YuMG2X15c-_eCF2UYt3zuJE-SvJUOtkrLmjo,10598
|
419
403
|
ccxt/pro/upbit.py,sha256=-73dGQdyPXk6bn0XymffGCQDw5eYlRSi9HcPaahO6gY,27922
|
420
404
|
ccxt/pro/vertex.py,sha256=byfa7yXdXvBQWvb4qabLzUAX-2bQcDN6fD70hg4SmN8,41201
|
421
|
-
ccxt/pro/wazirx.py,sha256=7CJiHZX2AkB199CZv-gG-YZfD_M4n29un_TD8ixryeo,30231
|
422
405
|
ccxt/pro/whitebit.py,sha256=JwzgvKemz15MKDe0KWY7DMELqVCNL1HDNw39DXpVL_Q,37020
|
423
406
|
ccxt/pro/woo.py,sha256=X-7FKlqxakkXnWW_dA2z2Pk1z1Vcmws_gwreoxlfQ8M,51553
|
424
407
|
ccxt/pro/woofipro.py,sha256=O8o5Jv4dujemKJoov8Gg4LiK9RBzPNeP3pA4XeUtRQE,51713
|
@@ -654,8 +637,8 @@ ccxt/test/tests_async.py,sha256=eRqVzaBGt3NGNbWs6HS85x_fNARypXYtaxDe3h-U0jc,9469
|
|
654
637
|
ccxt/test/tests_helpers.py,sha256=egM69A2ZFYeVF5hwC1Qt-c5DOeClY5bv4jowmceeFV8,9736
|
655
638
|
ccxt/test/tests_init.py,sha256=qM0-Gb0h0p6CANWTkyYZI7wl-iYOcrPur7aj_OKh7m0,1212
|
656
639
|
ccxt/test/tests_sync.py,sha256=rlvVBtTTdQ92rof64feV-BQX3x1nzIE4HNcxUCF17O0,93656
|
657
|
-
ccxt-4.4.
|
658
|
-
ccxt-4.4.
|
659
|
-
ccxt-4.4.
|
660
|
-
ccxt-4.4.
|
661
|
-
ccxt-4.4.
|
640
|
+
ccxt-4.4.91.dist-info/LICENSE.txt,sha256=EIb9221AhMHV7xF1_55STFdKTFsnJVJYkRpY2Lnvo5w,1068
|
641
|
+
ccxt-4.4.91.dist-info/METADATA,sha256=OKz4IjraFaNDeZZMZK87uID0_wZud40wTpVG1dezVfg,131613
|
642
|
+
ccxt-4.4.91.dist-info/WHEEL,sha256=Kh9pAotZVRFj97E15yTA4iADqXdQfIVTHcNaZTjxeGM,110
|
643
|
+
ccxt-4.4.91.dist-info/top_level.txt,sha256=CkQDuCTDKNcImPV60t36G6MdYfxsAPNiSaEwifVoVMo,5
|
644
|
+
ccxt-4.4.91.dist-info/RECORD,,
|
ccxt/abstract/coinlist.py
DELETED
@@ -1,57 +0,0 @@
|
|
1
|
-
from ccxt.base.types import Entry
|
2
|
-
|
3
|
-
|
4
|
-
class ImplicitAPI:
|
5
|
-
public_get_v1_symbols = publicGetV1Symbols = Entry('v1/symbols', 'public', 'GET', {'cost': 1})
|
6
|
-
public_get_v1_symbols_summary = publicGetV1SymbolsSummary = Entry('v1/symbols/summary', 'public', 'GET', {'cost': 1})
|
7
|
-
public_get_v1_symbols_symbol = publicGetV1SymbolsSymbol = Entry('v1/symbols/{symbol}', 'public', 'GET', {'cost': 1})
|
8
|
-
public_get_v1_symbols_symbol_summary = publicGetV1SymbolsSymbolSummary = Entry('v1/symbols/{symbol}/summary', 'public', 'GET', {'cost': 1})
|
9
|
-
public_get_v1_symbols_symbol_book = publicGetV1SymbolsSymbolBook = Entry('v1/symbols/{symbol}/book', 'public', 'GET', {'cost': 1})
|
10
|
-
public_get_v1_symbols_symbol_quote = publicGetV1SymbolsSymbolQuote = Entry('v1/symbols/{symbol}/quote', 'public', 'GET', {'cost': 1})
|
11
|
-
public_get_v1_symbols_symbol_candles = publicGetV1SymbolsSymbolCandles = Entry('v1/symbols/{symbol}/candles', 'public', 'GET', {'cost': 1})
|
12
|
-
public_get_v1_symbols_symbol_auctions = publicGetV1SymbolsSymbolAuctions = Entry('v1/symbols/{symbol}/auctions', 'public', 'GET', {'cost': 1})
|
13
|
-
public_get_v1_symbols_symbol_auctions_auction_code = publicGetV1SymbolsSymbolAuctionsAuctionCode = Entry('v1/symbols/{symbol}/auctions/{auction_code}', 'public', 'GET', {'cost': 1})
|
14
|
-
public_get_v1_time = publicGetV1Time = Entry('v1/time', 'public', 'GET', {'cost': 1})
|
15
|
-
public_get_v1_assets = publicGetV1Assets = Entry('v1/assets', 'public', 'GET', {'cost': 1})
|
16
|
-
public_get_v1_leaderboard = publicGetV1Leaderboard = Entry('v1/leaderboard', 'public', 'GET', {'cost': 1})
|
17
|
-
public_get_v1_affiliate_competition_code = publicGetV1AffiliateCompetitionCode = Entry('v1/affiliate/{competition_code}', 'public', 'GET', {'cost': 1})
|
18
|
-
public_get_v1_competition_competition_id = publicGetV1CompetitionCompetitionId = Entry('v1/competition/{competition_id}', 'public', 'GET', {'cost': 1})
|
19
|
-
public_get_v1_symbols_symbol_funding = publicGetV1SymbolsSymbolFunding = Entry('v1/symbols/{symbol}/funding', 'public', 'GET', {'cost': 1})
|
20
|
-
private_get_v1_fees = privateGetV1Fees = Entry('v1/fees', 'private', 'GET', {'cost': 1})
|
21
|
-
private_get_v1_accounts = privateGetV1Accounts = Entry('v1/accounts', 'private', 'GET', {'cost': 1})
|
22
|
-
private_get_v1_accounts_trader_id = privateGetV1AccountsTraderId = Entry('v1/accounts/{trader_id}', 'private', 'GET', {'cost': 1})
|
23
|
-
private_get_v1_accounts_trader_id_alias = privateGetV1AccountsTraderIdAlias = Entry('v1/accounts/{trader_id}/alias', 'private', 'GET', {'cost': 1})
|
24
|
-
private_get_v1_accounts_trader_id_ledger = privateGetV1AccountsTraderIdLedger = Entry('v1/accounts/{trader_id}/ledger', 'private', 'GET', {'cost': 1})
|
25
|
-
private_get_v1_accounts_trader_id_wallets = privateGetV1AccountsTraderIdWallets = Entry('v1/accounts/{trader_id}/wallets', 'private', 'GET', {'cost': 1})
|
26
|
-
private_get_v1_accounts_trader_id_wallet_ledger = privateGetV1AccountsTraderIdWalletLedger = Entry('v1/accounts/{trader_id}/wallet-ledger', 'private', 'GET', {'cost': 1})
|
27
|
-
private_get_v1_accounts_trader_id_ledger_summary = privateGetV1AccountsTraderIdLedgerSummary = Entry('v1/accounts/{trader_id}/ledger-summary', 'private', 'GET', {'cost': 1})
|
28
|
-
private_get_v1_keys = privateGetV1Keys = Entry('v1/keys', 'private', 'GET', {'cost': 1})
|
29
|
-
private_get_v1_fills = privateGetV1Fills = Entry('v1/fills', 'private', 'GET', {'cost': 1})
|
30
|
-
private_get_v1_orders = privateGetV1Orders = Entry('v1/orders', 'private', 'GET', {'cost': 1})
|
31
|
-
private_get_v1_orders_order_id = privateGetV1OrdersOrderId = Entry('v1/orders/{order_id}', 'private', 'GET', {'cost': 1})
|
32
|
-
private_get_v1_reports = privateGetV1Reports = Entry('v1/reports', 'private', 'GET', {'cost': 1})
|
33
|
-
private_get_v1_balances = privateGetV1Balances = Entry('v1/balances', 'private', 'GET', {'cost': 1})
|
34
|
-
private_get_v1_transfers = privateGetV1Transfers = Entry('v1/transfers', 'private', 'GET', {'cost': 1})
|
35
|
-
private_get_v1_user = privateGetV1User = Entry('v1/user', 'private', 'GET', {'cost': 1})
|
36
|
-
private_get_v1_credits = privateGetV1Credits = Entry('v1/credits', 'private', 'GET', {'cost': 1})
|
37
|
-
private_get_v1_positions = privateGetV1Positions = Entry('v1/positions', 'private', 'GET', {'cost': 1})
|
38
|
-
private_get_v1_accounts_trader_id_competitions = privateGetV1AccountsTraderIdCompetitions = Entry('v1/accounts/{trader_id}/competitions', 'private', 'GET', {'cost': 1})
|
39
|
-
private_get_v1_closedpositions = privateGetV1ClosedPositions = Entry('v1/closedPositions', 'private', 'GET', {'cost': 1})
|
40
|
-
private_post_v1_keys = privatePostV1Keys = Entry('v1/keys', 'private', 'POST', {'cost': 1})
|
41
|
-
private_post_v1_orders = privatePostV1Orders = Entry('v1/orders', 'private', 'POST', {'cost': 1})
|
42
|
-
private_post_v1_orders_cancel_all_after = privatePostV1OrdersCancelAllAfter = Entry('v1/orders/cancel-all-after', 'private', 'POST', {'cost': 1})
|
43
|
-
private_post_v1_reports = privatePostV1Reports = Entry('v1/reports', 'private', 'POST', {'cost': 1})
|
44
|
-
private_post_v1_transfers_to_wallet = privatePostV1TransfersToWallet = Entry('v1/transfers/to-wallet', 'private', 'POST', {'cost': 1})
|
45
|
-
private_post_v1_transfers_from_wallet = privatePostV1TransfersFromWallet = Entry('v1/transfers/from-wallet', 'private', 'POST', {'cost': 1})
|
46
|
-
private_post_v1_transfers_internal_transfer = privatePostV1TransfersInternalTransfer = Entry('v1/transfers/internal-transfer', 'private', 'POST', {'cost': 1})
|
47
|
-
private_post_v1_transfers_withdrawal_request = privatePostV1TransfersWithdrawalRequest = Entry('v1/transfers/withdrawal-request', 'private', 'POST', {'cost': 1})
|
48
|
-
private_post_v1_orders_bulk = privatePostV1OrdersBulk = Entry('v1/orders/bulk', 'private', 'POST', {'cost': 1})
|
49
|
-
private_post_v1_accounts_trader_id_competitions = privatePostV1AccountsTraderIdCompetitions = Entry('v1/accounts/{trader_id}/competitions', 'private', 'POST', {'cost': 1})
|
50
|
-
private_post_v1_accounts_trader_id_create_competition = privatePostV1AccountsTraderIdCreateCompetition = Entry('v1/accounts/{trader_id}/create-competition', 'private', 'POST', {'cost': 1})
|
51
|
-
private_patch_v1_orders_order_id = privatePatchV1OrdersOrderId = Entry('v1/orders/{order_id}', 'private', 'PATCH', {'cost': 1})
|
52
|
-
private_patch_v1_orders_bulk = privatePatchV1OrdersBulk = Entry('v1/orders/bulk', 'private', 'PATCH', {'cost': 1})
|
53
|
-
private_put_v1_accounts_trader_id_alias = privatePutV1AccountsTraderIdAlias = Entry('v1/accounts/{trader_id}/alias', 'private', 'PUT', {'cost': 1})
|
54
|
-
private_delete_v1_keys_key = privateDeleteV1KeysKey = Entry('v1/keys/{key}', 'private', 'DELETE', {'cost': 1})
|
55
|
-
private_delete_v1_orders = privateDeleteV1Orders = Entry('v1/orders', 'private', 'DELETE', {'cost': 1})
|
56
|
-
private_delete_v1_orders_order_id = privateDeleteV1OrdersOrderId = Entry('v1/orders/{order_id}', 'private', 'DELETE', {'cost': 1})
|
57
|
-
private_delete_v1_orders_bulk = privateDeleteV1OrdersBulk = Entry('v1/orders/bulk', 'private', 'DELETE', {'cost': 1})
|
@@ -1,147 +0,0 @@
|
|
1
|
-
# -*- coding: utf-8 -*-
|
2
|
-
|
3
|
-
orjson = None
|
4
|
-
try:
|
5
|
-
import orjson as orjson
|
6
|
-
except ImportError:
|
7
|
-
pass
|
8
|
-
|
9
|
-
import json
|
10
|
-
from asyncio import sleep, ensure_future
|
11
|
-
from aiohttp import WSMsgType
|
12
|
-
from .functions import milliseconds, iso8601, is_json_encoded_object
|
13
|
-
from ccxt.async_support.base.ws.client import Client
|
14
|
-
from ccxt.async_support.base.ws.functions import gunzip, inflate
|
15
|
-
from ccxt import NetworkError, RequestTimeout, ExchangeClosedByUser
|
16
|
-
|
17
|
-
|
18
|
-
class AiohttpClient(Client):
|
19
|
-
|
20
|
-
proxy = None
|
21
|
-
|
22
|
-
def closed(self):
|
23
|
-
return (self.connection is None) or self.connection.closed
|
24
|
-
|
25
|
-
def receive(self):
|
26
|
-
return self.connection.receive()
|
27
|
-
|
28
|
-
# helper method for binary and text messages
|
29
|
-
def handle_text_or_binary_message(self, data):
|
30
|
-
if self.verbose:
|
31
|
-
self.log(iso8601(milliseconds()), 'message', data)
|
32
|
-
if isinstance(data, bytes):
|
33
|
-
data = data.decode()
|
34
|
-
# decoded = json.loads(data) if is_json_encoded_object(data) else data
|
35
|
-
decode = None
|
36
|
-
if is_json_encoded_object(data):
|
37
|
-
if orjson is None:
|
38
|
-
decode = json.loads(data)
|
39
|
-
else:
|
40
|
-
decode = orjson.loads(data)
|
41
|
-
else:
|
42
|
-
decode = data
|
43
|
-
self.on_message_callback(self, decode)
|
44
|
-
|
45
|
-
def handle_message(self, message):
|
46
|
-
# self.log(iso8601(milliseconds()), message)
|
47
|
-
if message.type == WSMsgType.TEXT:
|
48
|
-
self.handle_text_or_binary_message(message.data)
|
49
|
-
elif message.type == WSMsgType.BINARY:
|
50
|
-
data = message.data
|
51
|
-
if self.gunzip:
|
52
|
-
data = gunzip(data)
|
53
|
-
elif self.inflate:
|
54
|
-
data = inflate(data)
|
55
|
-
self.handle_text_or_binary_message(data)
|
56
|
-
# autoping is responsible for automatically replying with pong
|
57
|
-
# to a ping incoming from a server, we have to disable autoping
|
58
|
-
# with aiohttp's websockets and respond with pong manually
|
59
|
-
# otherwise aiohttp's websockets client won't trigger WSMsgType.PONG
|
60
|
-
elif message.type == WSMsgType.PING:
|
61
|
-
if self.verbose:
|
62
|
-
self.log(iso8601(milliseconds()), 'ping', message)
|
63
|
-
ensure_future(self.connection.pong(message.data), loop=self.asyncio_loop)
|
64
|
-
elif message.type == WSMsgType.PONG:
|
65
|
-
self.lastPong = milliseconds()
|
66
|
-
if self.verbose:
|
67
|
-
self.log(iso8601(milliseconds()), 'pong', message)
|
68
|
-
pass
|
69
|
-
elif message.type == WSMsgType.CLOSE:
|
70
|
-
if self.verbose:
|
71
|
-
self.log(iso8601(milliseconds()), 'close', self.closed(), message)
|
72
|
-
self.on_close(message.data)
|
73
|
-
elif message.type == WSMsgType.CLOSED:
|
74
|
-
if self.verbose:
|
75
|
-
self.log(iso8601(milliseconds()), 'closed', self.closed(), message)
|
76
|
-
self.on_close(1000)
|
77
|
-
elif message.type == WSMsgType.ERROR:
|
78
|
-
if self.verbose:
|
79
|
-
self.log(iso8601(milliseconds()), 'error', message)
|
80
|
-
error = NetworkError(str(message))
|
81
|
-
self.on_error(error)
|
82
|
-
|
83
|
-
def create_connection(self, session):
|
84
|
-
# autoping is responsible for automatically replying with pong
|
85
|
-
# to a ping incoming from a server, we have to disable autoping
|
86
|
-
# with aiohttp's websockets and respond with pong manually
|
87
|
-
# otherwise aiohttp's websockets client won't trigger WSMsgType.PONG
|
88
|
-
# call aenter here to simulate async with otherwise we get the error "await not called with future"
|
89
|
-
# if connecting to a non-existent endpoint
|
90
|
-
if (self.proxy):
|
91
|
-
return session.ws_connect(self.url, autoping=False, autoclose=False, headers=self.options.get('headers'), proxy=self.proxy, max_msg_size=10485760).__aenter__()
|
92
|
-
return session.ws_connect(self.url, autoping=False, autoclose=False, headers=self.options.get('headers'), max_msg_size=10485760).__aenter__()
|
93
|
-
|
94
|
-
async def send(self, message):
|
95
|
-
if self.verbose:
|
96
|
-
self.log(iso8601(milliseconds()), 'sending', message)
|
97
|
-
send_msg = None
|
98
|
-
if isinstance(message, str):
|
99
|
-
send_msg = message
|
100
|
-
else:
|
101
|
-
if orjson is None:
|
102
|
-
send_msg = json.dumps(message, separators=(',', ':'))
|
103
|
-
else:
|
104
|
-
send_msg = orjson.dumps(message).decode('utf-8')
|
105
|
-
return await self.connection.send_str(send_msg)
|
106
|
-
|
107
|
-
async def close(self, code=1000):
|
108
|
-
if self.verbose:
|
109
|
-
self.log(iso8601(milliseconds()), 'closing', code)
|
110
|
-
if not self.closed():
|
111
|
-
await self.connection.close()
|
112
|
-
# these will end automatically once self.closed() = True
|
113
|
-
# so we don't need to cancel them
|
114
|
-
if self.ping_looper:
|
115
|
-
self.ping_looper.cancel()
|
116
|
-
if self.receive_looper:
|
117
|
-
self.receive_looper.cancel() # cancel all pending futures stored in self.futures
|
118
|
-
for key in self.futures:
|
119
|
-
future = self.futures[key]
|
120
|
-
if not future.done():
|
121
|
-
if future.is_race_future:
|
122
|
-
future.cancel() # this is an "internal" future so we want to cancel it silently
|
123
|
-
else:
|
124
|
-
future.reject(ExchangeClosedByUser('Connection closed by the user'))
|
125
|
-
|
126
|
-
|
127
|
-
async def ping_loop(self):
|
128
|
-
if self.verbose:
|
129
|
-
self.log(iso8601(milliseconds()), 'ping loop')
|
130
|
-
while self.keepAlive and not self.closed():
|
131
|
-
now = milliseconds()
|
132
|
-
self.lastPong = now if self.lastPong is None else self.lastPong
|
133
|
-
if (self.lastPong + self.keepAlive * self.maxPingPongMisses) < now:
|
134
|
-
self.on_error(RequestTimeout('Connection to ' + self.url + ' timed out due to a ping-pong keepalive missing on time'))
|
135
|
-
# the following ping-clause is not necessary with aiohttp's built-in ws
|
136
|
-
# since it has a heartbeat option (see create_connection above)
|
137
|
-
# however some exchanges require a text-type ping message
|
138
|
-
# therefore we need this clause anyway
|
139
|
-
else:
|
140
|
-
if self.ping:
|
141
|
-
try:
|
142
|
-
await self.send(self.ping(self))
|
143
|
-
except Exception as e:
|
144
|
-
self.on_error(e)
|
145
|
-
else:
|
146
|
-
await self.connection.ping()
|
147
|
-
await sleep(self.keepAlive / 1000)
|