ccxt 4.4.74__py2.py3-none-any.whl → 4.4.75__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 CHANGED
@@ -22,7 +22,7 @@
22
22
 
23
23
  # ----------------------------------------------------------------------------
24
24
 
25
- __version__ = '4.4.74'
25
+ __version__ = '4.4.75'
26
26
 
27
27
  # ----------------------------------------------------------------------------
28
28
 
ccxt/abstract/coinlist.py CHANGED
@@ -16,6 +16,7 @@ class ImplicitAPI:
16
16
  public_get_v1_leaderboard = publicGetV1Leaderboard = Entry('v1/leaderboard', 'public', 'GET', {'cost': 1})
17
17
  public_get_v1_affiliate_competition_code = publicGetV1AffiliateCompetitionCode = Entry('v1/affiliate/{competition_code}', 'public', 'GET', {'cost': 1})
18
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})
19
20
  private_get_v1_fees = privateGetV1Fees = Entry('v1/fees', 'private', 'GET', {'cost': 1})
20
21
  private_get_v1_accounts = privateGetV1Accounts = Entry('v1/accounts', 'private', 'GET', {'cost': 1})
21
22
  private_get_v1_accounts_trader_id = privateGetV1AccountsTraderId = Entry('v1/accounts/{trader_id}', 'private', 'GET', {'cost': 1})
@@ -35,6 +36,7 @@ class ImplicitAPI:
35
36
  private_get_v1_credits = privateGetV1Credits = Entry('v1/credits', 'private', 'GET', {'cost': 1})
36
37
  private_get_v1_positions = privateGetV1Positions = Entry('v1/positions', 'private', 'GET', {'cost': 1})
37
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})
38
40
  private_post_v1_keys = privatePostV1Keys = Entry('v1/keys', 'private', 'POST', {'cost': 1})
39
41
  private_post_v1_orders = privatePostV1Orders = Entry('v1/orders', 'private', 'POST', {'cost': 1})
40
42
  private_post_v1_orders_cancel_all_after = privatePostV1OrdersCancelAllAfter = Entry('v1/orders/cancel-all-after', 'private', 'POST', {'cost': 1})
@@ -48,6 +50,7 @@ class ImplicitAPI:
48
50
  private_post_v1_accounts_trader_id_create_competition = privatePostV1AccountsTraderIdCreateCompetition = Entry('v1/accounts/{trader_id}/create-competition', 'private', 'POST', {'cost': 1})
49
51
  private_patch_v1_orders_order_id = privatePatchV1OrdersOrderId = Entry('v1/orders/{order_id}', 'private', 'PATCH', {'cost': 1})
50
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})
51
54
  private_delete_v1_keys_key = privateDeleteV1KeysKey = Entry('v1/keys/{key}', 'private', 'DELETE', {'cost': 1})
52
55
  private_delete_v1_orders = privateDeleteV1Orders = Entry('v1/orders', 'private', 'DELETE', {'cost': 1})
53
56
  private_delete_v1_orders_order_id = privateDeleteV1OrdersOrderId = Entry('v1/orders/{order_id}', 'private', 'DELETE', {'cost': 1})
@@ -4,7 +4,7 @@
4
4
 
5
5
  # -----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.4.74'
7
+ __version__ = '4.4.75'
8
8
 
9
9
  # -----------------------------------------------------------------------------
10
10
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  # -----------------------------------------------------------------------------
4
4
 
5
- __version__ = '4.4.74'
5
+ __version__ = '4.4.75'
6
6
 
7
7
  # -----------------------------------------------------------------------------
8
8
 
@@ -36,19 +36,29 @@ class bitopro(Exchange, ImplicitAPI):
36
36
  'swap': False,
37
37
  'future': False,
38
38
  'option': False,
39
+ 'addMargin': False,
40
+ 'borrowCrossMargin': False,
41
+ 'borrowIsolatedMargin': False,
42
+ 'borrowMargin': False,
39
43
  'cancelAllOrders': True,
40
44
  'cancelOrder': True,
41
45
  'cancelOrders': True,
42
46
  'closeAllPositions': False,
43
47
  'closePosition': False,
44
48
  'createOrder': True,
49
+ 'createOrderWithTakeProfitAndStopLoss': False,
50
+ 'createOrderWithTakeProfitAndStopLossWs': False,
45
51
  'createReduceOnlyOrder': False,
46
52
  'createStopOrder': True,
47
53
  'createTriggerOrder': True,
48
54
  'editOrder': False,
49
55
  'fetchBalance': True,
56
+ 'fetchBorrowInterest': False,
57
+ 'fetchBorrowRate': False,
50
58
  'fetchBorrowRateHistories': False,
51
59
  'fetchBorrowRateHistory': False,
60
+ 'fetchBorrowRates': False,
61
+ 'fetchBorrowRatesPerSymbol': False,
52
62
  'fetchClosedOrders': True,
53
63
  'fetchCrossBorrowRate': False,
54
64
  'fetchCrossBorrowRates': False,
@@ -59,19 +69,39 @@ class bitopro(Exchange, ImplicitAPI):
59
69
  'fetchDepositWithdrawFee': 'emulated',
60
70
  'fetchDepositWithdrawFees': True,
61
71
  'fetchFundingHistory': False,
72
+ 'fetchFundingInterval': False,
73
+ 'fetchFundingIntervals': False,
62
74
  'fetchFundingRate': False,
63
75
  'fetchFundingRateHistory': False,
64
76
  'fetchFundingRates': False,
77
+ 'fetchGreeks': False,
65
78
  'fetchIndexOHLCV': False,
66
79
  'fetchIsolatedBorrowRate': False,
67
80
  'fetchIsolatedBorrowRates': False,
81
+ 'fetchIsolatedPositions': False,
82
+ 'fetchLeverage': False,
83
+ 'fetchLeverages': False,
84
+ 'fetchLeverageTiers': False,
85
+ 'fetchLiquidations': False,
86
+ 'fetchLongShortRatio': False,
87
+ 'fetchLongShortRatioHistory': False,
88
+ 'fetchMarginAdjustmentHistory': False,
68
89
  'fetchMarginMode': False,
90
+ 'fetchMarginModes': False,
91
+ 'fetchMarketLeverageTiers': False,
69
92
  'fetchMarkets': True,
70
93
  'fetchMarkOHLCV': False,
94
+ 'fetchMarkPrices': False,
95
+ 'fetchMyLiquidations': False,
96
+ 'fetchMySettlementHistory': False,
71
97
  'fetchMyTrades': True,
72
98
  'fetchOHLCV': True,
99
+ 'fetchOpenInterest': False,
73
100
  'fetchOpenInterestHistory': False,
101
+ 'fetchOpenInterests': False,
74
102
  'fetchOpenOrders': True,
103
+ 'fetchOption': False,
104
+ 'fetchOptionChain': False,
75
105
  'fetchOrder': True,
76
106
  'fetchOrderBook': True,
77
107
  'fetchOrders': False,
@@ -84,6 +114,7 @@ class bitopro(Exchange, ImplicitAPI):
84
114
  'fetchPositionsHistory': False,
85
115
  'fetchPositionsRisk': False,
86
116
  'fetchPremiumIndexOHLCV': False,
117
+ 'fetchSettlementHistory': False,
87
118
  'fetchTicker': True,
88
119
  'fetchTickers': True,
89
120
  'fetchTime': False,
@@ -94,10 +125,16 @@ class bitopro(Exchange, ImplicitAPI):
94
125
  'fetchTransactions': False,
95
126
  'fetchTransfer': False,
96
127
  'fetchTransfers': False,
128
+ 'fetchVolatilityHistory': False,
97
129
  'fetchWithdrawal': True,
98
130
  'fetchWithdrawals': True,
131
+ 'reduceMargin': False,
132
+ 'repayCrossMargin': False,
133
+ 'repayIsolatedMargin': False,
99
134
  'setLeverage': False,
135
+ 'setMargin': False,
100
136
  'setMarginMode': False,
137
+ 'setPositionMode': False,
101
138
  'transfer': False,
102
139
  'withdraw': True,
103
140
  },
@@ -171,6 +171,7 @@ class coinlist(Exchange, ImplicitAPI):
171
171
  'v1/leaderboard': 1,
172
172
  'v1/affiliate/{competition_code}': 1,
173
173
  'v1/competition/{competition_id}': 1,
174
+ 'v1/symbols/{symbol}/funding': 1,
174
175
  },
175
176
  },
176
177
  'private': {
@@ -194,6 +195,7 @@ class coinlist(Exchange, ImplicitAPI):
194
195
  'v1/credits': 1, # not unified
195
196
  'v1/positions': 1,
196
197
  'v1/accounts/{trader_id}/competitions': 1,
198
+ 'v1/closedPositions': 1,
197
199
  },
198
200
  'post': {
199
201
  'v1/keys': 1, # not unified
@@ -212,6 +214,9 @@ class coinlist(Exchange, ImplicitAPI):
212
214
  'v1/orders/{order_id}': 1,
213
215
  'v1/orders/bulk': 1, # not unified
214
216
  },
217
+ 'put': {
218
+ 'v1/accounts/{trader_id}/alias': 1,
219
+ },
215
220
  'delete': {
216
221
  'v1/keys/{key}': 1, # not unified
217
222
  'v1/orders': 1,
ccxt/async_support/okx.py CHANGED
@@ -1825,31 +1825,31 @@ class okx(Exchange, ImplicitAPI):
1825
1825
  chainsLength = len(chains)
1826
1826
  for j in range(0, chainsLength):
1827
1827
  chain = chains[j]
1828
- networkId = self.safe_string(chain, 'chain') # USDT-BEP20, USDT-Avalance-C, etc
1829
- if networkId is not None:
1830
- idParts = networkId.split('-')
1831
- parts = self.array_slice(idParts, 1)
1832
- chainPart = '-'.join(parts)
1833
- networkCode = self.network_id_to_code(chainPart, currency['code'])
1834
- networks[networkCode] = {
1835
- 'id': networkId,
1836
- 'network': networkCode,
1837
- 'active': None,
1838
- 'deposit': self.safe_bool(chain, 'canDep'),
1839
- 'withdraw': self.safe_bool(chain, 'canWd'),
1840
- 'fee': self.safe_number(chain, 'fee'),
1841
- 'precision': self.parse_number(self.parse_precision(self.safe_string(chain, 'wdTickSz'))),
1842
- 'limits': {
1843
- 'withdraw': {
1844
- 'min': self.safe_number(chain, 'minWd'),
1845
- 'max': self.safe_number(chain, 'maxWd'),
1846
- },
1847
- },
1848
- 'info': chain,
1849
- }
1850
- else:
1851
- # only happens for FIAT currency
1828
+ # allow empty string for rare fiat-currencies, e.g. TRY
1829
+ networkId = self.safe_string(chain, 'chain', '') # USDT-BEP20, USDT-Avalance-C, etc
1830
+ if networkId == '':
1831
+ # only happens for fiat 'TRY' currency
1852
1832
  type = 'fiat'
1833
+ idParts = networkId.split('-')
1834
+ parts = self.array_slice(idParts, 1)
1835
+ chainPart = '-'.join(parts)
1836
+ networkCode = self.network_id_to_code(chainPart, currency['code'])
1837
+ networks[networkCode] = {
1838
+ 'id': networkId,
1839
+ 'network': networkCode,
1840
+ 'active': None,
1841
+ 'deposit': self.safe_bool(chain, 'canDep'),
1842
+ 'withdraw': self.safe_bool(chain, 'canWd'),
1843
+ 'fee': self.safe_number(chain, 'fee'),
1844
+ 'precision': self.parse_number(self.parse_precision(self.safe_string(chain, 'wdTickSz'))),
1845
+ 'limits': {
1846
+ 'withdraw': {
1847
+ 'min': self.safe_number(chain, 'minWd'),
1848
+ 'max': self.safe_number(chain, 'maxWd'),
1849
+ },
1850
+ },
1851
+ 'info': chain,
1852
+ }
1853
1853
  firstChain = self.safe_dict(chains, 0, {})
1854
1854
  result[code] = self.safe_currency_structure({
1855
1855
  'info': chains,
ccxt/base/errors.py CHANGED
@@ -1,3 +1,9 @@
1
+ # ----------------------------------------------------------------------------
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
+ # EDIT THE CORRESPONDENT .ts FILE INSTEAD
6
+
1
7
  error_hierarchy = {
2
8
  'BaseError': {
3
9
  'ExchangeError': {
ccxt/base/exchange.py CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  # -----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.4.74'
7
+ __version__ = '4.4.75'
8
8
 
9
9
  # -----------------------------------------------------------------------------
10
10
 
@@ -2913,9 +2913,6 @@ class Exchange(object):
2913
2913
 
2914
2914
  def safe_currency_structure(self, currency: object):
2915
2915
  # derive data from networks: deposit, withdraw, active, fee, limits, precision
2916
- currencyDeposit = self.safe_bool(currency, 'deposit')
2917
- currencyWithdraw = self.safe_bool(currency, 'withdraw')
2918
- currencyActive = self.safe_bool(currency, 'active')
2919
2916
  networks = self.safe_dict(currency, 'networks', {})
2920
2917
  keys = list(networks.keys())
2921
2918
  length = len(keys)
@@ -2924,20 +2921,24 @@ class Exchange(object):
2924
2921
  key = keys[i]
2925
2922
  network = networks[key]
2926
2923
  deposit = self.safe_bool(network, 'deposit')
2924
+ currencyDeposit = self.safe_bool(currency, 'deposit')
2927
2925
  if currencyDeposit is None or deposit:
2928
2926
  currency['deposit'] = deposit
2929
2927
  withdraw = self.safe_bool(network, 'withdraw')
2928
+ currencyWithdraw = self.safe_bool(currency, 'withdraw')
2930
2929
  if currencyWithdraw is None or withdraw:
2931
2930
  currency['withdraw'] = withdraw
2932
- active = self.safe_bool(network, 'active')
2933
- if currencyActive is None or active:
2934
- currency['active'] = active
2935
2931
  # set network 'active' to False if D or W is disabled
2936
- if self.safe_bool(network, 'active') is None:
2932
+ active = self.safe_bool(network, 'active')
2933
+ if active is None:
2937
2934
  if deposit and withdraw:
2938
2935
  currency['networks'][key]['active'] = True
2939
2936
  elif deposit is not None and withdraw is not None:
2940
2937
  currency['networks'][key]['active'] = False
2938
+ active = self.safe_bool(network, 'active')
2939
+ currencyActive = self.safe_bool(currency, 'active')
2940
+ if currencyActive is None or active:
2941
+ currency['active'] = active
2941
2942
  # find lowest fee(which is more desired)
2942
2943
  fee = self.safe_string(network, 'fee')
2943
2944
  feeMain = self.safe_string(currency, 'fee')
ccxt/bitopro.py CHANGED
@@ -36,19 +36,29 @@ class bitopro(Exchange, ImplicitAPI):
36
36
  'swap': False,
37
37
  'future': False,
38
38
  'option': False,
39
+ 'addMargin': False,
40
+ 'borrowCrossMargin': False,
41
+ 'borrowIsolatedMargin': False,
42
+ 'borrowMargin': False,
39
43
  'cancelAllOrders': True,
40
44
  'cancelOrder': True,
41
45
  'cancelOrders': True,
42
46
  'closeAllPositions': False,
43
47
  'closePosition': False,
44
48
  'createOrder': True,
49
+ 'createOrderWithTakeProfitAndStopLoss': False,
50
+ 'createOrderWithTakeProfitAndStopLossWs': False,
45
51
  'createReduceOnlyOrder': False,
46
52
  'createStopOrder': True,
47
53
  'createTriggerOrder': True,
48
54
  'editOrder': False,
49
55
  'fetchBalance': True,
56
+ 'fetchBorrowInterest': False,
57
+ 'fetchBorrowRate': False,
50
58
  'fetchBorrowRateHistories': False,
51
59
  'fetchBorrowRateHistory': False,
60
+ 'fetchBorrowRates': False,
61
+ 'fetchBorrowRatesPerSymbol': False,
52
62
  'fetchClosedOrders': True,
53
63
  'fetchCrossBorrowRate': False,
54
64
  'fetchCrossBorrowRates': False,
@@ -59,19 +69,39 @@ class bitopro(Exchange, ImplicitAPI):
59
69
  'fetchDepositWithdrawFee': 'emulated',
60
70
  'fetchDepositWithdrawFees': True,
61
71
  'fetchFundingHistory': False,
72
+ 'fetchFundingInterval': False,
73
+ 'fetchFundingIntervals': False,
62
74
  'fetchFundingRate': False,
63
75
  'fetchFundingRateHistory': False,
64
76
  'fetchFundingRates': False,
77
+ 'fetchGreeks': False,
65
78
  'fetchIndexOHLCV': False,
66
79
  'fetchIsolatedBorrowRate': False,
67
80
  'fetchIsolatedBorrowRates': False,
81
+ 'fetchIsolatedPositions': False,
82
+ 'fetchLeverage': False,
83
+ 'fetchLeverages': False,
84
+ 'fetchLeverageTiers': False,
85
+ 'fetchLiquidations': False,
86
+ 'fetchLongShortRatio': False,
87
+ 'fetchLongShortRatioHistory': False,
88
+ 'fetchMarginAdjustmentHistory': False,
68
89
  'fetchMarginMode': False,
90
+ 'fetchMarginModes': False,
91
+ 'fetchMarketLeverageTiers': False,
69
92
  'fetchMarkets': True,
70
93
  'fetchMarkOHLCV': False,
94
+ 'fetchMarkPrices': False,
95
+ 'fetchMyLiquidations': False,
96
+ 'fetchMySettlementHistory': False,
71
97
  'fetchMyTrades': True,
72
98
  'fetchOHLCV': True,
99
+ 'fetchOpenInterest': False,
73
100
  'fetchOpenInterestHistory': False,
101
+ 'fetchOpenInterests': False,
74
102
  'fetchOpenOrders': True,
103
+ 'fetchOption': False,
104
+ 'fetchOptionChain': False,
75
105
  'fetchOrder': True,
76
106
  'fetchOrderBook': True,
77
107
  'fetchOrders': False,
@@ -84,6 +114,7 @@ class bitopro(Exchange, ImplicitAPI):
84
114
  'fetchPositionsHistory': False,
85
115
  'fetchPositionsRisk': False,
86
116
  'fetchPremiumIndexOHLCV': False,
117
+ 'fetchSettlementHistory': False,
87
118
  'fetchTicker': True,
88
119
  'fetchTickers': True,
89
120
  'fetchTime': False,
@@ -94,10 +125,16 @@ class bitopro(Exchange, ImplicitAPI):
94
125
  'fetchTransactions': False,
95
126
  'fetchTransfer': False,
96
127
  'fetchTransfers': False,
128
+ 'fetchVolatilityHistory': False,
97
129
  'fetchWithdrawal': True,
98
130
  'fetchWithdrawals': True,
131
+ 'reduceMargin': False,
132
+ 'repayCrossMargin': False,
133
+ 'repayIsolatedMargin': False,
99
134
  'setLeverage': False,
135
+ 'setMargin': False,
100
136
  'setMarginMode': False,
137
+ 'setPositionMode': False,
101
138
  'transfer': False,
102
139
  'withdraw': True,
103
140
  },
ccxt/coinlist.py CHANGED
@@ -171,6 +171,7 @@ class coinlist(Exchange, ImplicitAPI):
171
171
  'v1/leaderboard': 1,
172
172
  'v1/affiliate/{competition_code}': 1,
173
173
  'v1/competition/{competition_id}': 1,
174
+ 'v1/symbols/{symbol}/funding': 1,
174
175
  },
175
176
  },
176
177
  'private': {
@@ -194,6 +195,7 @@ class coinlist(Exchange, ImplicitAPI):
194
195
  'v1/credits': 1, # not unified
195
196
  'v1/positions': 1,
196
197
  'v1/accounts/{trader_id}/competitions': 1,
198
+ 'v1/closedPositions': 1,
197
199
  },
198
200
  'post': {
199
201
  'v1/keys': 1, # not unified
@@ -212,6 +214,9 @@ class coinlist(Exchange, ImplicitAPI):
212
214
  'v1/orders/{order_id}': 1,
213
215
  'v1/orders/bulk': 1, # not unified
214
216
  },
217
+ 'put': {
218
+ 'v1/accounts/{trader_id}/alias': 1,
219
+ },
215
220
  'delete': {
216
221
  'v1/keys/{key}': 1, # not unified
217
222
  'v1/orders': 1,
ccxt/okx.py CHANGED
@@ -1824,31 +1824,31 @@ class okx(Exchange, ImplicitAPI):
1824
1824
  chainsLength = len(chains)
1825
1825
  for j in range(0, chainsLength):
1826
1826
  chain = chains[j]
1827
- networkId = self.safe_string(chain, 'chain') # USDT-BEP20, USDT-Avalance-C, etc
1828
- if networkId is not None:
1829
- idParts = networkId.split('-')
1830
- parts = self.array_slice(idParts, 1)
1831
- chainPart = '-'.join(parts)
1832
- networkCode = self.network_id_to_code(chainPart, currency['code'])
1833
- networks[networkCode] = {
1834
- 'id': networkId,
1835
- 'network': networkCode,
1836
- 'active': None,
1837
- 'deposit': self.safe_bool(chain, 'canDep'),
1838
- 'withdraw': self.safe_bool(chain, 'canWd'),
1839
- 'fee': self.safe_number(chain, 'fee'),
1840
- 'precision': self.parse_number(self.parse_precision(self.safe_string(chain, 'wdTickSz'))),
1841
- 'limits': {
1842
- 'withdraw': {
1843
- 'min': self.safe_number(chain, 'minWd'),
1844
- 'max': self.safe_number(chain, 'maxWd'),
1845
- },
1846
- },
1847
- 'info': chain,
1848
- }
1849
- else:
1850
- # only happens for FIAT currency
1827
+ # allow empty string for rare fiat-currencies, e.g. TRY
1828
+ networkId = self.safe_string(chain, 'chain', '') # USDT-BEP20, USDT-Avalance-C, etc
1829
+ if networkId == '':
1830
+ # only happens for fiat 'TRY' currency
1851
1831
  type = 'fiat'
1832
+ idParts = networkId.split('-')
1833
+ parts = self.array_slice(idParts, 1)
1834
+ chainPart = '-'.join(parts)
1835
+ networkCode = self.network_id_to_code(chainPart, currency['code'])
1836
+ networks[networkCode] = {
1837
+ 'id': networkId,
1838
+ 'network': networkCode,
1839
+ 'active': None,
1840
+ 'deposit': self.safe_bool(chain, 'canDep'),
1841
+ 'withdraw': self.safe_bool(chain, 'canWd'),
1842
+ 'fee': self.safe_number(chain, 'fee'),
1843
+ 'precision': self.parse_number(self.parse_precision(self.safe_string(chain, 'wdTickSz'))),
1844
+ 'limits': {
1845
+ 'withdraw': {
1846
+ 'min': self.safe_number(chain, 'minWd'),
1847
+ 'max': self.safe_number(chain, 'maxWd'),
1848
+ },
1849
+ },
1850
+ 'info': chain,
1851
+ }
1852
1852
  firstChain = self.safe_dict(chains, 0, {})
1853
1853
  result[code] = self.safe_currency_structure({
1854
1854
  'info': chains,
ccxt/pro/__init__.py CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  # ----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.4.74'
7
+ __version__ = '4.4.75'
8
8
 
9
9
  # ----------------------------------------------------------------------------
10
10
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ccxt
3
- Version: 4.4.74
3
+ Version: 4.4.75
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
@@ -275,13 +275,13 @@ console.log(version, Object.keys(exchanges));
275
275
 
276
276
  All-in-one browser bundle (dependencies included), served from a CDN of your choice:
277
277
 
278
- * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.4.74/dist/ccxt.browser.min.js
279
- * unpkg: https://unpkg.com/ccxt@4.4.74/dist/ccxt.browser.min.js
278
+ * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.4.75/dist/ccxt.browser.min.js
279
+ * unpkg: https://unpkg.com/ccxt@4.4.75/dist/ccxt.browser.min.js
280
280
 
281
281
  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.
282
282
 
283
283
  ```HTML
284
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.4.74/dist/ccxt.browser.min.js"></script>
284
+ <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.4.75/dist/ccxt.browser.min.js"></script>
285
285
  ```
286
286
 
287
287
  Creates a global `ccxt` object:
@@ -1,4 +1,4 @@
1
- ccxt/__init__.py,sha256=Mm5rKKggFbgWbPN1i_U1Cwxq_M1j2gw17Ls7j5YXJUo,16370
1
+ ccxt/__init__.py,sha256=G4vOj3jggb3J3gYgeTW1T3QL7FUZdk-Cyc8mgV5BJZQ,16370
2
2
  ccxt/ace.py,sha256=waqSDmnGLRzi_0YjNNv93r1zC0v58yoVbKxNImhx-iM,46490
3
3
  ccxt/alpaca.py,sha256=S-PvXknJDcYUqHZWg4isZKGbTa8oU2G4Z0BqbvObNPI,80687
4
4
  ccxt/ascendex.py,sha256=XZnzDjRSe1_EKkzg1xZeyc4-aRPa56UqP8ObkMUfPHA,156277
@@ -20,7 +20,7 @@ ccxt/bitget.py,sha256=Gv8LW2P3dVT0d79eTlQUU5m-BiFLm3bMwogSqgUdnIE,436199
20
20
  ccxt/bithumb.py,sha256=GHYK_Xwzk9nwINHN1lhnRvnTX8mL98RZQ3Khz213A1s,51640
21
21
  ccxt/bitmart.py,sha256=OD4GvkRT4GgUz4E9yJOxMkGBuvXkUDikjRexNrFd-fw,247895
22
22
  ccxt/bitmex.py,sha256=bCgSeL8i0djDfb5aPXVljngTmmMpx73Cp6Kou5ngDGw,131447
23
- ccxt/bitopro.py,sha256=UGH7MklI1wSm0yjXstw7E3Rj-pQjQ2su3sXcgsi_TM4,73487
23
+ ccxt/bitopro.py,sha256=gU96cIA_XJKLFiUTu89QGdFio1yCeCLXKR4u8-fczJQ,75177
24
24
  ccxt/bitpanda.py,sha256=X1xluJEGWtDs5ovAf8djIMZNW-V-3brs4UjdqiWoanE,510
25
25
  ccxt/bitrue.py,sha256=d6d61DB0luJf9q1jzerKERADt4GJcOLWRpcP-Rp8yuw,139716
26
26
  ccxt/bitso.py,sha256=e2_gds0NESHx1EyRmQDwGPKBJu_-wRmZ06PuSxT3yy0,74161
@@ -43,7 +43,7 @@ ccxt/coinbaseinternational.py,sha256=VH3RCIjvr9Y1FH-qcry92faMAEOzLR67XADKWjLDSV4
43
43
  ccxt/coincatch.py,sha256=hCZCgNDEX496Xtos1QIdrFrH-IUPG2ZRkHRIGcujECk,244228
44
44
  ccxt/coincheck.py,sha256=CAuMcY3JvLbwpGHR4W1qUt-P7zKRqRRLsObxK5C9I0I,38011
45
45
  ccxt/coinex.py,sha256=Mvi_vVZJZNL9yqhJIPg3v2C69igyUYhmMPsnQFjwQeo,267224
46
- ccxt/coinlist.py,sha256=Pvx97VEWnw4QaT6MT60C2-7QbiHKWG7XHU959-QT4m8,110311
46
+ ccxt/coinlist.py,sha256=prqFJ5SqBWNUBmoVaQuAJwWbsWz-g6Wo-CQURaOKNgI,110530
47
47
  ccxt/coinmate.py,sha256=ZbhFH_ALCbB9UpkSFlyh8RP4ZiLH7IbjJGX2PEOtUOs,48773
48
48
  ccxt/coinmetro.py,sha256=idTmegdHUed_nMhk6G-wOrMs1f3g4vjwX98W_IXwMF0,84058
49
49
  ccxt/coinone.py,sha256=J68O8a4oOoCBQ2u_kqWTfspAmNDYhYleD709VLbjf58,49256
@@ -87,7 +87,7 @@ ccxt/ndax.py,sha256=qBDsdMjWDflk80pGm_KrLZ_kTSMA1nhNWEw2yNMoeLw,113607
87
87
  ccxt/novadax.py,sha256=8K6mKIBY5KyyunyBsYJEosfkr2yDrPVgJfFUpET242k,67583
88
88
  ccxt/oceanex.py,sha256=YhvVgresX7nm8sFxD8Yr5pQI5IzuuRllW-JdA9RkDSM,44195
89
89
  ccxt/okcoin.py,sha256=fuAOZXqsGaDttvVlLIN2-KVev3Ga-HJ6oSrk0q5tf9I,154935
90
- ccxt/okx.py,sha256=1028I3t8FmyUNPyW4YI3WSVL9k-FE2fWK4ak0PkZsZM,393135
90
+ ccxt/okx.py,sha256=ssuDcNuEYgWBAaC4zCsogPFYl2Ay6ygQWZd3S-U-Wlk,393109
91
91
  ccxt/onetrading.py,sha256=mNmwMVK-7qQEW6L35kfN6OwqvGLiVXrot4B2SDx3_TQ,76305
92
92
  ccxt/oxfun.py,sha256=XfF-kErOOwLBHVpqxpXngFj8EZmXqAGtpmGE_2Q5Ssg,127504
93
93
  ccxt/p2b.py,sha256=2mkYFm3h_lFtgEu13F6sDgbj3UxYyTG-3R_l-w7NZiM,56725
@@ -152,7 +152,7 @@ ccxt/abstract/coinbaseinternational.py,sha256=ic3EjzSwsOAZpMQQk2yVO8iO8_ZfkGysai
152
152
  ccxt/abstract/coincatch.py,sha256=mCUMZarGuKB1EfwWeXQkRclHiye9wUIXxjghcRGQu5A,14248
153
153
  ccxt/abstract/coincheck.py,sha256=3IIVmryXmzxXqi6IleUmfDZIUMOn_L_4G9Iw8BuEEGo,3417
154
154
  ccxt/abstract/coinex.py,sha256=4TRXtWgONqkm3eSL55Y5T7Q4QxJrnOTuhP0ugsKHAWo,34856
155
- ccxt/abstract/coinlist.py,sha256=t4Xc9xyWNHgHAz7nyplj8PmgrX4knA3cnk2uEJCvkQk,6538
155
+ ccxt/abstract/coinlist.py,sha256=Y3H892ew_GrfOZ7vpKoF5jLr_EixGAdi_4BXyT7PPnc,6960
156
156
  ccxt/abstract/coinmate.py,sha256=LYCJZIWe3sidZUozM7jBTB-AiN3cMElFhYqO9d1QvfI,6842
157
157
  ccxt/abstract/coinmetro.py,sha256=W2eAbFInYZMm1BgfZMRuCX7i201hT4q6QCtie30-_AQ,3975
158
158
  ccxt/abstract/coinone.py,sha256=X2gKABhQbzyFUs8MLo-VGyhG4CxgRSVa6qJsiJqubk0,8291
@@ -218,7 +218,7 @@ ccxt/abstract/xt.py,sha256=p0fG3O8kIeMYIvMlqxrhpXeo7lraee6lIlu9yqu6f10,27340
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=Do3vuBaR7EBx4byDUv6FYk6sBIkyNz-rUjboCADXak8,16163
221
+ ccxt/async_support/__init__.py,sha256=CSUAaeaD-LPUFIkYbUNetUKDbQeaaYijp7SCcBZF7u0,16163
222
222
  ccxt/async_support/ace.py,sha256=apWhPVYnqyNeDDk_uwu-rus8x-pCFe9M1rNgV88s8_Q,46714
223
223
  ccxt/async_support/alpaca.py,sha256=Tag0HpHxho_qrXoQ8rjZBVJZj9T38qg8g-mZR39_m18,81133
224
224
  ccxt/async_support/ascendex.py,sha256=Z9nw2WDkLqLHV338kw0qGaqECBC-bKc7H7p8YGeEpPU,157090
@@ -240,7 +240,7 @@ ccxt/async_support/bitget.py,sha256=B0KcbXhCO4g6ahGBHC1b05Fa-rHLKsJYtvqVR7Qm56o,
240
240
  ccxt/async_support/bithumb.py,sha256=ar0QoFintFU7qv7wW6xjnYqBR3keNYN4qN5cbybYxEY,51919
241
241
  ccxt/async_support/bitmart.py,sha256=m_tcJec63zJqcMMgeb1aiQpRYaSgaEdgpgjNx1taicI,249019
242
242
  ccxt/async_support/bitmex.py,sha256=BG2V3EfAb0omoPnvfi3CcaWrernaMeJJ8WeEH2CiW1Y,132025
243
- ccxt/async_support/bitopro.py,sha256=pjKbqTBiaD5qUkz7LRd9-ohkrkFGol9FjUgFLUxBOqs,73897
243
+ ccxt/async_support/bitopro.py,sha256=dxeqGJbH-j0ocBMnmXruk2DGbUQPeja15x3GeQizWUk,75587
244
244
  ccxt/async_support/bitpanda.py,sha256=zj2ad7e9spjosP19nGH2s9oJnlSsJ7CZFNK4alIt51w,524
245
245
  ccxt/async_support/bitrue.py,sha256=qJoihFg5EZQAHvsReXGwbM9xJWBvIkVrOn32roWDwTw,140374
246
246
  ccxt/async_support/bitso.py,sha256=PbF9iC4-Wea_msXhO614VPX6o-8RAqzK0reSC_dxwIc,74547
@@ -263,7 +263,7 @@ ccxt/async_support/coinbaseinternational.py,sha256=0wTE9n8B_GOeHOH0CdA_2hnhe0abq
263
263
  ccxt/async_support/coincatch.py,sha256=LxtDw2TGjbf5zQfqwV5HJ_DdXfm3YeyO919kx9H_2DE,245286
264
264
  ccxt/async_support/coincheck.py,sha256=riQpuspYXE3FXgjQQaNFSjnWGtsPUBwdOrq9Hy3eTO8,38217
265
265
  ccxt/async_support/coinex.py,sha256=0JPbf9b12J3xP4--A1oJQF4cZ8-mm0bgnBiR_7zSOig,268512
266
- ccxt/async_support/coinlist.py,sha256=w_QC8jULDdOjmzOh58Z-JhWS-oKjwrs_Z_iKdCDVam8,110799
266
+ ccxt/async_support/coinlist.py,sha256=IcaxZlGaD0uIyv3xL3ozgzTcHyLkFd5KlHjbHUzj0l4,111018
267
267
  ccxt/async_support/coinmate.py,sha256=iC1zJju22iTcFtrQKFSsOyPkgTFQkUDa_2FWOOH029w,49039
268
268
  ccxt/async_support/coinmetro.py,sha256=j--kJNppZEMGBBsxR9P_W6W7JeizLAVER55_0ivNrrY,84378
269
269
  ccxt/async_support/coinone.py,sha256=lgNQvv3yRVotcDMnl_k1tpiLgpaDA-tANM4orHiVPYs,49498
@@ -307,7 +307,7 @@ ccxt/async_support/ndax.py,sha256=8JiB4Eu1CqAqkTXDVJ-h5iKv9IjR6aya7il6HJKXuCI,11
307
307
  ccxt/async_support/novadax.py,sha256=QIFIoZdkkq2odkX7V0wGn9ytgtzEDOTr4MnFGlgnKEk,67951
308
308
  ccxt/async_support/oceanex.py,sha256=_vi8sI3aucMmMPXwqqrpdfnWWHpfLYN_QaBpo2s9zvg,44533
309
309
  ccxt/async_support/okcoin.py,sha256=ybHgnBUymd-vpAlyT5F1sX8bcmSIb6IQtrxha0opRvg,155459
310
- ccxt/async_support/okx.py,sha256=KMKCMA7IipK122SCQAjZk7NvLQvQlQ7_E25B-rLnVRg,394800
310
+ ccxt/async_support/okx.py,sha256=z9dyMnz4NG8zaDh526e1UF7LPrYJf5-5mwtfhQjYfyo,394774
311
311
  ccxt/async_support/onetrading.py,sha256=rHzlEI2JW61LbuNUtSZeICL7Pa71lwJthU8lJJn3O9M,76661
312
312
  ccxt/async_support/oxfun.py,sha256=Hd4A3Ym0UCoxINhjMuD_d19MP8K1Kkk7K6plK114e5k,128048
313
313
  ccxt/async_support/p2b.py,sha256=A_RPhOvbOMozI8Ypvw_Qzon5c6609l-fle3hYMT4j4w,56967
@@ -331,7 +331,7 @@ ccxt/async_support/yobit.py,sha256=B2T9UXo0ke-YyXxNW9avOPJ8cReVGXWD9OpkORI9ZSU,5
331
331
  ccxt/async_support/zaif.py,sha256=jZZv3ZjGQgkPNRfY5B5p5DNMvanHWTTS8m6BLBWm9tA,31357
332
332
  ccxt/async_support/zonda.py,sha256=2QL_B9CmBu4SU4K-Y8segpj57vzAd4aUT2H2cD3b07g,85320
333
333
  ccxt/async_support/base/__init__.py,sha256=aVYSsFi--b4InRs9zDN_wtCpj8odosAB726JdUHavrk,67
334
- ccxt/async_support/base/exchange.py,sha256=mMxtiu0GZhMpOlfWcWUIDNsHDCGXOZg1W0BUK03YRig,117223
334
+ ccxt/async_support/base/exchange.py,sha256=X4BrbR9Oo-33uUotlodYrIW7ucESwmoHYnUmWAkS8ck,117223
335
335
  ccxt/async_support/base/throttler.py,sha256=tvDVcdRUVYi8fZRlEcnqtgzcgB_KMUMRs5Pu8tuU-tU,1847
336
336
  ccxt/async_support/base/ws/__init__.py,sha256=uockzpLuwntKGZbs5EOWFe-Zg-k6Cj7GhNJLc_RX0so,1791
337
337
  ccxt/async_support/base/ws/aiohttp_client.py,sha256=Y5HxAVXyyYduj6b6SbbUZETlq3GrVMzrkW1r-TMgpb8,6329
@@ -344,11 +344,11 @@ ccxt/async_support/base/ws/order_book.py,sha256=uBUaIHhzMRykpmo4BCsdJ-t_HozS6Vxh
344
344
  ccxt/async_support/base/ws/order_book_side.py,sha256=GhnGUt78pJ-AYL_Dq9produGjmBJLCI5FHIRdMz1O-g,6551
345
345
  ccxt/base/__init__.py,sha256=eTx1OE3HJjspFUQjGm6LBhaQiMKJnXjkdP-JUXknyQ0,1320
346
346
  ccxt/base/decimal_to_precision.py,sha256=fgWRBzRTtsf3r2INyS4f7WHlzgjB5YM1ekiwqD21aac,6634
347
- ccxt/base/errors.py,sha256=Pad-6ugvGUwhoYuKUliX-N7FTrcnKCQGFjsaq2tMn0I,4610
348
- ccxt/base/exchange.py,sha256=hZV6eV0Y239MH-k_7zDw9Ay4syKUBP-pmg6ZLz9z0m0,322577
347
+ ccxt/base/errors.py,sha256=MvCrL_sAM3de616T6RE0PSxiF2xV6Qqz5b1y1ghidbk,4888
348
+ ccxt/base/exchange.py,sha256=ZvK4GMhsYIvcZ7KloZD22dcBDOWtroMR88T5mu7zQ7E,322633
349
349
  ccxt/base/precise.py,sha256=koce64Yrp6vFbGijJtUt-QQ6XhJgeGTCksZ871FPp_A,8886
350
350
  ccxt/base/types.py,sha256=SfxIKDSsxP7MPHWiOVI965Nr5NSEPpAno5fuveTRi3w,11423
351
- ccxt/pro/__init__.py,sha256=TYfm3ec07-NAFWmwJohP20ST5fHuaFl_D4rvJcUdKkc,7596
351
+ ccxt/pro/__init__.py,sha256=nW-r_tVVC4zH0-UHo8Tkzi8SoHQDlJ-1MHlUvNy8BRI,7596
352
352
  ccxt/pro/alpaca.py,sha256=_WEorh5thYhvhn7R8hBvHW2m1P2foIbp8URjIt_9vcg,27623
353
353
  ccxt/pro/ascendex.py,sha256=aSbIEzJ0Og_Nc5UGTYj3DVjGfIJ0-q0DdXSWJcQCKb4,37512
354
354
  ccxt/pro/bequant.py,sha256=reG2yXBhxn_TuOIg4J2BiLxl8Lw5Lag3IBMGBkiQCd0,1591
@@ -655,8 +655,8 @@ ccxt/test/tests_async.py,sha256=_eOeOojWW2Twyd62H485whALy9IKSlUd4JlrKN26qws,9258
655
655
  ccxt/test/tests_helpers.py,sha256=egM69A2ZFYeVF5hwC1Qt-c5DOeClY5bv4jowmceeFV8,9736
656
656
  ccxt/test/tests_init.py,sha256=qM0-Gb0h0p6CANWTkyYZI7wl-iYOcrPur7aj_OKh7m0,1212
657
657
  ccxt/test/tests_sync.py,sha256=5qKpTyujmxiXJ0jNwYNdYzzwbkXHHfiO0QuQCBCjbqI,91566
658
- ccxt-4.4.74.dist-info/LICENSE.txt,sha256=EIb9221AhMHV7xF1_55STFdKTFsnJVJYkRpY2Lnvo5w,1068
659
- ccxt-4.4.74.dist-info/METADATA,sha256=m-KHdFgBOfWXLedbZ3RMNArlohAE9jBO-GVeYhDOrb0,131033
660
- ccxt-4.4.74.dist-info/WHEEL,sha256=Kh9pAotZVRFj97E15yTA4iADqXdQfIVTHcNaZTjxeGM,110
661
- ccxt-4.4.74.dist-info/top_level.txt,sha256=CkQDuCTDKNcImPV60t36G6MdYfxsAPNiSaEwifVoVMo,5
662
- ccxt-4.4.74.dist-info/RECORD,,
658
+ ccxt-4.4.75.dist-info/LICENSE.txt,sha256=EIb9221AhMHV7xF1_55STFdKTFsnJVJYkRpY2Lnvo5w,1068
659
+ ccxt-4.4.75.dist-info/METADATA,sha256=bmUwfOuBpctzj2xcBnuswOYWfXy71sj0TzoM8A5_sAk,131033
660
+ ccxt-4.4.75.dist-info/WHEEL,sha256=Kh9pAotZVRFj97E15yTA4iADqXdQfIVTHcNaZTjxeGM,110
661
+ ccxt-4.4.75.dist-info/top_level.txt,sha256=CkQDuCTDKNcImPV60t36G6MdYfxsAPNiSaEwifVoVMo,5
662
+ ccxt-4.4.75.dist-info/RECORD,,
File without changes