ccxt 4.3.17__py2.py3-none-any.whl → 4.3.19__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.
Files changed (195) hide show
  1. ccxt/__init__.py +3 -1
  2. ccxt/abstract/bybit.py +1 -0
  3. ccxt/abstract/okx.py +1 -0
  4. ccxt/abstract/woofipro.py +119 -0
  5. ccxt/ace.py +1 -1
  6. ccxt/ascendex.py +7 -8
  7. ccxt/async_support/__init__.py +3 -1
  8. ccxt/async_support/ace.py +1 -1
  9. ccxt/async_support/ascendex.py +7 -8
  10. ccxt/async_support/base/exchange.py +23 -2
  11. ccxt/async_support/bigone.py +4 -4
  12. ccxt/async_support/binance.py +34 -17
  13. ccxt/async_support/bingx.py +4 -4
  14. ccxt/async_support/bit2c.py +1 -1
  15. ccxt/async_support/bitbank.py +1 -1
  16. ccxt/async_support/bitbns.py +1 -1
  17. ccxt/async_support/bitfinex.py +28 -4
  18. ccxt/async_support/bitfinex2.py +62 -54
  19. ccxt/async_support/bitflyer.py +1 -1
  20. ccxt/async_support/bitget.py +8 -11
  21. ccxt/async_support/bithumb.py +1 -1
  22. ccxt/async_support/bitmart.py +8 -8
  23. ccxt/async_support/bitmex.py +2 -2
  24. ccxt/async_support/bitopro.py +1 -1
  25. ccxt/async_support/bitrue.py +3 -3
  26. ccxt/async_support/bitso.py +1 -1
  27. ccxt/async_support/bitstamp.py +3 -5
  28. ccxt/async_support/bitteam.py +1 -1
  29. ccxt/async_support/bitvavo.py +1 -1
  30. ccxt/async_support/bl3p.py +1 -1
  31. ccxt/async_support/blockchaincom.py +1 -1
  32. ccxt/async_support/blofin.py +3 -3
  33. ccxt/async_support/btcalpha.py +1 -1
  34. ccxt/async_support/btcbox.py +1 -1
  35. ccxt/async_support/btcmarkets.py +1 -1
  36. ccxt/async_support/btcturk.py +1 -1
  37. ccxt/async_support/bybit.py +9 -8
  38. ccxt/async_support/cex.py +1 -1
  39. ccxt/async_support/coinbase.py +2 -2
  40. ccxt/async_support/coinbasepro.py +1 -1
  41. ccxt/async_support/coincheck.py +1 -1
  42. ccxt/async_support/coinex.py +320 -520
  43. ccxt/async_support/coinlist.py +6 -7
  44. ccxt/async_support/coinmate.py +1 -1
  45. ccxt/async_support/coinmetro.py +1 -1
  46. ccxt/async_support/coinone.py +1 -1
  47. ccxt/async_support/coinsph.py +1 -1
  48. ccxt/async_support/coinspot.py +1 -1
  49. ccxt/async_support/cryptocom.py +1 -1
  50. ccxt/async_support/currencycom.py +2 -2
  51. ccxt/async_support/delta.py +4 -4
  52. ccxt/async_support/deribit.py +8 -8
  53. ccxt/async_support/digifinex.py +5 -5
  54. ccxt/async_support/exmo.py +1 -1
  55. ccxt/async_support/gate.py +5 -5
  56. ccxt/async_support/gemini.py +1 -1
  57. ccxt/async_support/hitbtc.py +3 -3
  58. ccxt/async_support/hollaex.py +4 -4
  59. ccxt/async_support/htx.py +4 -4
  60. ccxt/async_support/huobijp.py +1 -1
  61. ccxt/async_support/idex.py +1 -1
  62. ccxt/async_support/independentreserve.py +1 -1
  63. ccxt/async_support/indodax.py +2 -2
  64. ccxt/async_support/kraken.py +2 -2
  65. ccxt/async_support/krakenfutures.py +3 -3
  66. ccxt/async_support/kucoin.py +3 -3
  67. ccxt/async_support/kucoinfutures.py +3 -3
  68. ccxt/async_support/kuna.py +1 -1
  69. ccxt/async_support/latoken.py +6 -6
  70. ccxt/async_support/lbank.py +1 -1
  71. ccxt/async_support/luno.py +1 -1
  72. ccxt/async_support/lykke.py +1 -1
  73. ccxt/async_support/mercado.py +1 -1
  74. ccxt/async_support/mexc.py +7 -7
  75. ccxt/async_support/ndax.py +1 -1
  76. ccxt/async_support/novadax.py +3 -4
  77. ccxt/async_support/okcoin.py +3 -3
  78. ccxt/async_support/okx.py +27 -10
  79. ccxt/async_support/onetrading.py +1 -1
  80. ccxt/async_support/paymium.py +3 -3
  81. ccxt/async_support/phemex.py +5 -5
  82. ccxt/async_support/poloniex.py +3 -4
  83. ccxt/async_support/poloniexfutures.py +1 -1
  84. ccxt/async_support/probit.py +1 -1
  85. ccxt/async_support/timex.py +1 -1
  86. ccxt/async_support/tokocrypto.py +1 -1
  87. ccxt/async_support/upbit.py +1 -1
  88. ccxt/async_support/wavesexchange.py +3 -3
  89. ccxt/async_support/wazirx.py +1 -1
  90. ccxt/async_support/whitebit.py +2 -2
  91. ccxt/async_support/woo.py +25 -10
  92. ccxt/async_support/woofipro.py +2524 -0
  93. ccxt/async_support/yobit.py +1 -1
  94. ccxt/async_support/zaif.py +1 -1
  95. ccxt/async_support/zonda.py +3 -3
  96. ccxt/base/exchange.py +63 -17
  97. ccxt/base/types.py +20 -0
  98. ccxt/bigone.py +4 -4
  99. ccxt/binance.py +34 -17
  100. ccxt/bingx.py +4 -4
  101. ccxt/bit2c.py +1 -1
  102. ccxt/bitbank.py +1 -1
  103. ccxt/bitbns.py +1 -1
  104. ccxt/bitfinex.py +28 -4
  105. ccxt/bitfinex2.py +62 -54
  106. ccxt/bitflyer.py +1 -1
  107. ccxt/bitget.py +8 -11
  108. ccxt/bithumb.py +1 -1
  109. ccxt/bitmart.py +8 -8
  110. ccxt/bitmex.py +2 -2
  111. ccxt/bitopro.py +1 -1
  112. ccxt/bitrue.py +3 -3
  113. ccxt/bitso.py +1 -1
  114. ccxt/bitstamp.py +3 -5
  115. ccxt/bitteam.py +1 -1
  116. ccxt/bitvavo.py +1 -1
  117. ccxt/bl3p.py +1 -1
  118. ccxt/blockchaincom.py +1 -1
  119. ccxt/blofin.py +3 -3
  120. ccxt/btcalpha.py +1 -1
  121. ccxt/btcbox.py +1 -1
  122. ccxt/btcmarkets.py +1 -1
  123. ccxt/btcturk.py +1 -1
  124. ccxt/bybit.py +9 -8
  125. ccxt/cex.py +1 -1
  126. ccxt/coinbase.py +2 -2
  127. ccxt/coinbasepro.py +1 -1
  128. ccxt/coincheck.py +1 -1
  129. ccxt/coinex.py +320 -520
  130. ccxt/coinlist.py +6 -7
  131. ccxt/coinmate.py +1 -1
  132. ccxt/coinmetro.py +1 -1
  133. ccxt/coinone.py +1 -1
  134. ccxt/coinsph.py +1 -1
  135. ccxt/coinspot.py +1 -1
  136. ccxt/cryptocom.py +1 -1
  137. ccxt/currencycom.py +2 -2
  138. ccxt/delta.py +4 -4
  139. ccxt/deribit.py +8 -8
  140. ccxt/digifinex.py +5 -5
  141. ccxt/exmo.py +1 -1
  142. ccxt/gate.py +5 -5
  143. ccxt/gemini.py +1 -1
  144. ccxt/hitbtc.py +3 -3
  145. ccxt/hollaex.py +4 -4
  146. ccxt/htx.py +4 -4
  147. ccxt/huobijp.py +1 -1
  148. ccxt/idex.py +1 -1
  149. ccxt/independentreserve.py +1 -1
  150. ccxt/indodax.py +2 -2
  151. ccxt/kraken.py +2 -2
  152. ccxt/krakenfutures.py +3 -3
  153. ccxt/kucoin.py +3 -3
  154. ccxt/kucoinfutures.py +3 -3
  155. ccxt/kuna.py +1 -1
  156. ccxt/latoken.py +6 -6
  157. ccxt/lbank.py +1 -1
  158. ccxt/luno.py +1 -1
  159. ccxt/lykke.py +1 -1
  160. ccxt/mercado.py +1 -1
  161. ccxt/mexc.py +7 -7
  162. ccxt/ndax.py +1 -1
  163. ccxt/novadax.py +3 -4
  164. ccxt/okcoin.py +3 -3
  165. ccxt/okx.py +27 -10
  166. ccxt/onetrading.py +1 -1
  167. ccxt/paymium.py +3 -3
  168. ccxt/phemex.py +5 -5
  169. ccxt/poloniex.py +3 -4
  170. ccxt/poloniexfutures.py +1 -1
  171. ccxt/pro/__init__.py +3 -1
  172. ccxt/pro/bitget.py +127 -190
  173. ccxt/pro/bitvavo.py +1 -1
  174. ccxt/pro/bybit.py +4 -3
  175. ccxt/pro/coinbaseinternational.py +11 -4
  176. ccxt/pro/okx.py +79 -1
  177. ccxt/pro/woofipro.py +1183 -0
  178. ccxt/probit.py +1 -1
  179. ccxt/test/test_async.py +31 -1
  180. ccxt/test/test_sync.py +31 -1
  181. ccxt/timex.py +1 -1
  182. ccxt/tokocrypto.py +1 -1
  183. ccxt/upbit.py +1 -1
  184. ccxt/wavesexchange.py +3 -3
  185. ccxt/wazirx.py +1 -1
  186. ccxt/whitebit.py +2 -2
  187. ccxt/woo.py +25 -10
  188. ccxt/woofipro.py +2524 -0
  189. ccxt/yobit.py +1 -1
  190. ccxt/zaif.py +1 -1
  191. ccxt/zonda.py +3 -3
  192. {ccxt-4.3.17.dist-info → ccxt-4.3.19.dist-info}/METADATA +8 -6
  193. {ccxt-4.3.17.dist-info → ccxt-4.3.19.dist-info}/RECORD +195 -191
  194. {ccxt-4.3.17.dist-info → ccxt-4.3.19.dist-info}/WHEEL +0 -0
  195. {ccxt-4.3.17.dist-info → ccxt-4.3.19.dist-info}/top_level.txt +0 -0
ccxt/bitfinex2.py CHANGED
@@ -936,9 +936,9 @@ class bitfinex2(Exchange, ImplicitAPI):
936
936
  # same message v1
937
937
  self.throw_exactly_matched_exception(self.exceptions['exact'], message, self.id + ' ' + message)
938
938
  raise ExchangeError(self.id + ' ' + message)
939
- return self.parse_transfer(response, currency)
939
+ return self.parse_transfer({'result': response}, currency)
940
940
 
941
- def parse_transfer(self, transfer, currency: Currency = None):
941
+ def parse_transfer(self, transfer: dict, currency: Currency = None) -> TransferEntry:
942
942
  #
943
943
  # transfer
944
944
  #
@@ -962,12 +962,13 @@ class bitfinex2(Exchange, ImplicitAPI):
962
962
  # "1.0 Tether USDt transfered from Exchange to Margin"
963
963
  # ]
964
964
  #
965
- timestamp = self.safe_integer(transfer, 0)
966
- info = self.safe_value(transfer, 4)
965
+ result = self.safe_list(transfer, 'result')
966
+ timestamp = self.safe_integer(result, 0)
967
+ info = self.safe_value(result, 4)
967
968
  fromAccount = self.safe_string(info, 1)
968
969
  toAccount = self.safe_string(info, 2)
969
970
  currencyId = self.safe_string(info, 5)
970
- status = self.safe_string(transfer, 6)
971
+ status = self.safe_string(result, 6)
971
972
  return {
972
973
  'id': None,
973
974
  'timestamp': timestamp,
@@ -977,10 +978,10 @@ class bitfinex2(Exchange, ImplicitAPI):
977
978
  'currency': self.safe_currency_code(currencyId, currency),
978
979
  'fromAccount': fromAccount,
979
980
  'toAccount': toAccount,
980
- 'info': transfer,
981
+ 'info': result,
981
982
  }
982
983
 
983
- def parse_transfer_status(self, status):
984
+ def parse_transfer_status(self, status: Str) -> Str:
984
985
  statuses = {
985
986
  'SUCCESS': 'ok',
986
987
  'ERROR': 'failed',
@@ -1051,71 +1052,77 @@ class bitfinex2(Exchange, ImplicitAPI):
1051
1052
  result['asks'] = self.sort_by(result['asks'], 0)
1052
1053
  return result
1053
1054
 
1054
- def parse_ticker(self, ticker, market: Market = None) -> Ticker:
1055
+ def parse_ticker(self, ticker: dict, market: Market = None) -> Ticker:
1055
1056
  #
1056
1057
  # on trading pairs(ex. tBTCUSD)
1057
1058
  #
1058
- # [
1059
- # SYMBOL,
1060
- # BID,
1061
- # BID_SIZE,
1062
- # ASK,
1063
- # ASK_SIZE,
1064
- # DAILY_CHANGE,
1065
- # DAILY_CHANGE_RELATIVE,
1066
- # LAST_PRICE,
1067
- # VOLUME,
1068
- # HIGH,
1069
- # LOW
1070
- # ]
1059
+ # {
1060
+ # 'result': [
1061
+ # SYMBOL,
1062
+ # BID,
1063
+ # BID_SIZE,
1064
+ # ASK,
1065
+ # ASK_SIZE,
1066
+ # DAILY_CHANGE,
1067
+ # DAILY_CHANGE_RELATIVE,
1068
+ # LAST_PRICE,
1069
+ # VOLUME,
1070
+ # HIGH,
1071
+ # LOW
1072
+ # ]
1073
+ # }
1074
+ #
1071
1075
  #
1072
1076
  # on funding currencies(ex. fUSD)
1073
1077
  #
1074
- # [
1075
- # SYMBOL,
1076
- # FRR,
1077
- # BID,
1078
- # BID_PERIOD,
1079
- # BID_SIZE,
1080
- # ASK,
1081
- # ASK_PERIOD,
1082
- # ASK_SIZE,
1083
- # DAILY_CHANGE,
1084
- # DAILY_CHANGE_RELATIVE,
1085
- # LAST_PRICE,
1086
- # VOLUME,
1087
- # HIGH,
1088
- # LOW,
1089
- # _PLACEHOLDER,
1090
- # _PLACEHOLDER,
1091
- # FRR_AMOUNT_AVAILABLE
1092
- # ]
1078
+ # {
1079
+ # 'result': [
1080
+ # SYMBOL,
1081
+ # FRR,
1082
+ # BID,
1083
+ # BID_PERIOD,
1084
+ # BID_SIZE,
1085
+ # ASK,
1086
+ # ASK_PERIOD,
1087
+ # ASK_SIZE,
1088
+ # DAILY_CHANGE,
1089
+ # DAILY_CHANGE_RELATIVE,
1090
+ # LAST_PRICE,
1091
+ # VOLUME,
1092
+ # HIGH,
1093
+ # LOW,
1094
+ # _PLACEHOLDER,
1095
+ # _PLACEHOLDER,
1096
+ # FRR_AMOUNT_AVAILABLE
1097
+ # ]
1098
+ # }
1093
1099
  #
1100
+ result = self.safe_list(ticker, 'result')
1094
1101
  symbol = self.safe_symbol(None, market)
1095
- length = len(ticker)
1096
- last = self.safe_string(ticker, length - 4)
1097
- percentage = self.safe_string(ticker, length - 5)
1102
+ length = len(result)
1103
+ last = self.safe_string(result, length - 4)
1104
+ percentage = self.safe_string(result, length - 5)
1098
1105
  return self.safe_ticker({
1099
1106
  'symbol': symbol,
1100
1107
  'timestamp': None,
1101
1108
  'datetime': None,
1102
- 'high': self.safe_string(ticker, length - 2),
1103
- 'low': self.safe_string(ticker, length - 1),
1104
- 'bid': self.safe_string(ticker, length - 10),
1105
- 'bidVolume': self.safe_string(ticker, length - 9),
1106
- 'ask': self.safe_string(ticker, length - 8),
1107
- 'askVolume': self.safe_string(ticker, length - 7),
1109
+ 'high': self.safe_string(result, length - 2),
1110
+ 'low': self.safe_string(result, length - 1),
1111
+ 'bid': self.safe_string(result, length - 10),
1112
+ 'bidVolume': self.safe_string(result, length - 9),
1113
+ 'ask': self.safe_string(result, length - 8),
1114
+ 'askVolume': self.safe_string(result, length - 7),
1108
1115
  'vwap': None,
1109
1116
  'open': None,
1110
1117
  'close': last,
1111
1118
  'last': last,
1112
1119
  'previousClose': None,
1113
- 'change': self.safe_string(ticker, length - 6),
1120
+ 'change': self.safe_string(result, length - 6),
1114
1121
  'percentage': Precise.string_mul(percentage, '100'),
1115
1122
  'average': None,
1116
- 'baseVolume': self.safe_string(ticker, length - 3),
1123
+ 'baseVolume': self.safe_string(result, length - 3),
1117
1124
  'quoteVolume': None,
1118
- 'info': ticker,
1125
+ 'info': result,
1119
1126
  }, market)
1120
1127
 
1121
1128
  def fetch_tickers(self, symbols: Strings = None, params={}) -> Tickers:
@@ -1180,7 +1187,7 @@ class bitfinex2(Exchange, ImplicitAPI):
1180
1187
  marketId = self.safe_string(ticker, 0)
1181
1188
  market = self.safe_market(marketId)
1182
1189
  symbol = market['symbol']
1183
- result[symbol] = self.parse_ticker(ticker, market)
1190
+ result[symbol] = self.parse_ticker({'result': ticker}, market)
1184
1191
  return self.filter_by_array_tickers(result, 'symbol', symbols)
1185
1192
 
1186
1193
  def fetch_ticker(self, symbol: str, params={}) -> Ticker:
@@ -1197,7 +1204,8 @@ class bitfinex2(Exchange, ImplicitAPI):
1197
1204
  'symbol': market['id'],
1198
1205
  }
1199
1206
  ticker = self.publicGetTickerSymbol(self.extend(request, params))
1200
- return self.parse_ticker(ticker, market)
1207
+ result = {'result': ticker}
1208
+ return self.parse_ticker(result, market)
1201
1209
 
1202
1210
  def parse_trade(self, trade, market: Market = None) -> Trade:
1203
1211
  #
ccxt/bitflyer.py CHANGED
@@ -358,7 +358,7 @@ class bitflyer(Exchange, ImplicitAPI):
358
358
  orderbook = self.publicGetGetboard(self.extend(request, params))
359
359
  return self.parse_order_book(orderbook, market['symbol'], None, 'bids', 'asks', 'price', 'size')
360
360
 
361
- def parse_ticker(self, ticker, market: Market = None) -> Ticker:
361
+ def parse_ticker(self, ticker: dict, market: Market = None) -> Ticker:
362
362
  symbol = self.safe_symbol(None, market)
363
363
  timestamp = self.parse8601(self.safe_string(ticker, 'timestamp'))
364
364
  last = self.safe_string(ticker, 'ltp')
ccxt/bitget.py CHANGED
@@ -7,7 +7,7 @@ from ccxt.base.exchange import Exchange
7
7
  from ccxt.abstract.bitget import ImplicitAPI
8
8
  import hashlib
9
9
  import json
10
- from ccxt.base.types import Balances, Conversion, CrossBorrowRate, Currencies, Currency, FundingHistory, Int, IsolatedBorrowRate, Leverage, Liquidation, MarginMode, MarginModification, Market, Num, Order, OrderBook, OrderRequest, OrderSide, OrderType, Position, Str, Strings, Ticker, Tickers, Trade, TradingFeeInterface, TradingFees, Transaction, TransferEntry
10
+ from ccxt.base.types import Balances, Conversion, CrossBorrowRate, Currencies, Currency, FundingHistory, Int, IsolatedBorrowRate, Leverage, Liquidation, MarginMode, MarginModification, Market, Num, Order, OrderBook, OrderRequest, OrderSide, OrderType, Position, Str, Strings, Ticker, Tickers, Trade, TradingFeeInterface, TradingFees, Transaction, TransferEntry, TransferEntries
11
11
  from typing import List
12
12
  from ccxt.base.errors import ExchangeError
13
13
  from ccxt.base.errors import AuthenticationError
@@ -2492,7 +2492,7 @@ class bitget(Exchange, ImplicitAPI):
2492
2492
  timestamp = self.safe_integer(data, 'ts')
2493
2493
  return self.parse_order_book(data, market['symbol'], timestamp)
2494
2494
 
2495
- def parse_ticker(self, ticker, market: Market = None) -> Ticker:
2495
+ def parse_ticker(self, ticker: dict, market: Market = None) -> Ticker:
2496
2496
  #
2497
2497
  # spot: fetchTicker, fetchTickers
2498
2498
  #
@@ -2565,10 +2565,7 @@ class bitget(Exchange, ImplicitAPI):
2565
2565
  #
2566
2566
  marketId = self.safe_string(ticker, 'symbol')
2567
2567
  close = self.safe_string(ticker, 'lastPr')
2568
- timestampString = self.omit_zero(self.safe_string(ticker, 'ts')) # exchange sometimes provided 0
2569
- timestamp = None
2570
- if timestampString is not None:
2571
- timestamp = self.parse_to_int(timestampString)
2568
+ timestamp = self.safe_integer_omit_zero(ticker, 'ts') # exchange bitget provided 0
2572
2569
  change = self.safe_string(ticker, 'change24h')
2573
2570
  open24 = self.safe_string(ticker, 'open24')
2574
2571
  open = self.safe_string(ticker, 'open')
@@ -6589,7 +6586,7 @@ class bitget(Exchange, ImplicitAPI):
6589
6586
  data = self.safe_dict(response, 'data', {})
6590
6587
  return self.parse_leverage(data, market)
6591
6588
 
6592
- def parse_leverage(self, leverage, market=None) -> Leverage:
6589
+ def parse_leverage(self, leverage: dict, market: Market = None) -> Leverage:
6593
6590
  return {
6594
6591
  'info': leverage,
6595
6592
  'symbol': market['symbol'],
@@ -6801,7 +6798,7 @@ class bitget(Exchange, ImplicitAPI):
6801
6798
  'info': interest,
6802
6799
  }, market)
6803
6800
 
6804
- def fetch_transfers(self, code: Str = None, since: Int = None, limit: Int = None, params={}):
6801
+ def fetch_transfers(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> TransferEntries:
6805
6802
  """
6806
6803
  fetch a history of internal transfers made on an account
6807
6804
  :see: https://www.bitget.com/api-doc/spot/account/Get-Account-TransferRecords
@@ -6902,7 +6899,7 @@ class bitget(Exchange, ImplicitAPI):
6902
6899
  data['ts'] = self.safe_integer(response, 'requestTime')
6903
6900
  return self.parse_transfer(data, currency)
6904
6901
 
6905
- def parse_transfer(self, transfer, currency: Currency = None):
6902
+ def parse_transfer(self, transfer: dict, currency: Currency = None) -> TransferEntry:
6906
6903
  #
6907
6904
  # transfer
6908
6905
  #
@@ -6947,7 +6944,7 @@ class bitget(Exchange, ImplicitAPI):
6947
6944
  'status': self.parse_transfer_status(status),
6948
6945
  }
6949
6946
 
6950
- def parse_transfer_status(self, status):
6947
+ def parse_transfer_status(self, status: Str) -> Str:
6951
6948
  statuses = {
6952
6949
  'successful': 'ok',
6953
6950
  }
@@ -8066,7 +8063,7 @@ class bitget(Exchange, ImplicitAPI):
8066
8063
  dataList = self.safe_list(data, 'dataList', [])
8067
8064
  return self.parse_conversions(dataList, code, 'fromCoin', 'toCoin', since, limit)
8068
8065
 
8069
- def parse_conversion(self, conversion, fromCurrency: Currency = None, toCurrency: Currency = None) -> Conversion:
8066
+ def parse_conversion(self, conversion: dict, fromCurrency: Currency = None, toCurrency: Currency = None) -> Conversion:
8070
8067
  #
8071
8068
  # fetchConvertQuote
8072
8069
  #
ccxt/bithumb.py CHANGED
@@ -355,7 +355,7 @@ class bithumb(Exchange, ImplicitAPI):
355
355
  timestamp = self.safe_integer(data, 'timestamp')
356
356
  return self.parse_order_book(data, symbol, timestamp, 'bids', 'asks', 'price', 'quantity')
357
357
 
358
- def parse_ticker(self, ticker, market: Market = None) -> Ticker:
358
+ def parse_ticker(self, ticker: dict, market: Market = None) -> Ticker:
359
359
  #
360
360
  # fetchTicker, fetchTickers
361
361
  #
ccxt/bitmart.py CHANGED
@@ -6,7 +6,7 @@
6
6
  from ccxt.base.exchange import Exchange
7
7
  from ccxt.abstract.bitmart import ImplicitAPI
8
8
  import hashlib
9
- from ccxt.base.types import Balances, Currencies, Currency, Int, IsolatedBorrowRate, IsolatedBorrowRates, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, TradingFeeInterface, Transaction, TransferEntry
9
+ from ccxt.base.types import Balances, Currencies, Currency, Int, IsolatedBorrowRate, IsolatedBorrowRates, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, TradingFeeInterface, Transaction, TransferEntry, TransferEntries
10
10
  from typing import List
11
11
  from ccxt.base.errors import ExchangeError
12
12
  from ccxt.base.errors import AuthenticationError
@@ -1121,7 +1121,7 @@ class bitmart(Exchange, ImplicitAPI):
1121
1121
  data = response['data']
1122
1122
  return self.parse_deposit_withdraw_fee(data)
1123
1123
 
1124
- def parse_ticker(self, ticker, market: Market = None) -> Ticker:
1124
+ def parse_ticker(self, ticker: dict, market: Market = None) -> Ticker:
1125
1125
  #
1126
1126
  # spot(REST)
1127
1127
  #
@@ -2424,7 +2424,7 @@ class bitmart(Exchange, ImplicitAPI):
2424
2424
  elif isMarketOrder:
2425
2425
  # for market buy it requires the amount of quote currency to spend
2426
2426
  if side == 'buy':
2427
- notional = self.safe_number_2(params, 'cost', 'notional')
2427
+ notional = self.safe_string_2(params, 'cost', 'notional')
2428
2428
  params = self.omit(params, 'cost')
2429
2429
  createMarketBuyOrderRequiresPrice = True
2430
2430
  createMarketBuyOrderRequiresPrice, params = self.handle_option_and_params(params, 'createOrder', 'createMarketBuyOrderRequiresPrice', True)
@@ -2434,9 +2434,9 @@ class bitmart(Exchange, ImplicitAPI):
2434
2434
  else:
2435
2435
  amountString = self.number_to_string(amount)
2436
2436
  priceString = self.number_to_string(price)
2437
- notional = self.parse_number(Precise.string_mul(amountString, priceString))
2437
+ notional = Precise.string_mul(amountString, priceString)
2438
2438
  else:
2439
- notional = amount if (notional is None) else notional
2439
+ notional = self.number_to_string(amount) if (notional is None) else notional
2440
2440
  request['notional'] = self.decimal_to_precision(notional, TRUNCATE, market['precision']['price'], self.precisionMode)
2441
2441
  elif side == 'sell':
2442
2442
  request['size'] = self.amount_to_precision(symbol, amount)
@@ -3549,7 +3549,7 @@ class bitmart(Exchange, ImplicitAPI):
3549
3549
  'status': self.parse_transfer_status(self.safe_string_2(response, 'code', 'message')),
3550
3550
  })
3551
3551
 
3552
- def parse_transfer_status(self, status):
3552
+ def parse_transfer_status(self, status: Str) -> Str:
3553
3553
  statuses = {
3554
3554
  '1000': 'ok',
3555
3555
  'OK': 'ok',
@@ -3571,7 +3571,7 @@ class bitmart(Exchange, ImplicitAPI):
3571
3571
  }
3572
3572
  return self.safe_string(types, type, type)
3573
3573
 
3574
- def parse_transfer(self, transfer, currency: Currency = None):
3574
+ def parse_transfer(self, transfer: dict, currency: Currency = None) -> TransferEntry:
3575
3575
  #
3576
3576
  # margin
3577
3577
  #
@@ -3610,7 +3610,7 @@ class bitmart(Exchange, ImplicitAPI):
3610
3610
  'status': self.parse_transfer_status(self.safe_string(transfer, 'state')),
3611
3611
  }
3612
3612
 
3613
- def fetch_transfers(self, code: Str = None, since: Int = None, limit: Int = None, params={}):
3613
+ def fetch_transfers(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> TransferEntries:
3614
3614
  """
3615
3615
  fetch a history of internal transfers made on an account, only transfers between spot and swap are supported
3616
3616
  :see: https://developer-pro.bitmart.com/en/futures/#get-transfer-list-signed
ccxt/bitmex.py CHANGED
@@ -1340,7 +1340,7 @@ class bitmex(Exchange, ImplicitAPI):
1340
1340
  result[symbol] = ticker
1341
1341
  return self.filter_by_array_tickers(result, 'symbol', symbols)
1342
1342
 
1343
- def parse_ticker(self, ticker, market: Market = None) -> Ticker:
1343
+ def parse_ticker(self, ticker: dict, market: Market = None) -> Ticker:
1344
1344
  # see response sample under "fetchMarkets" because same endpoint is being used here
1345
1345
  marketId = self.safe_string(ticker, 'symbol')
1346
1346
  symbol = self.safe_symbol(marketId, market)
@@ -2016,7 +2016,7 @@ class bitmex(Exchange, ImplicitAPI):
2016
2016
  leverages = self.fetch_positions(symbols, params)
2017
2017
  return self.parse_leverages(leverages, symbols, 'symbol')
2018
2018
 
2019
- def parse_leverage(self, leverage, market=None) -> Leverage:
2019
+ def parse_leverage(self, leverage: dict, market: Market = None) -> Leverage:
2020
2020
  marketId = self.safe_string(leverage, 'symbol')
2021
2021
  return {
2022
2022
  'info': leverage,
ccxt/bitopro.py CHANGED
@@ -377,7 +377,7 @@ class bitopro(Exchange, ImplicitAPI):
377
377
  'info': market,
378
378
  }
379
379
 
380
- def parse_ticker(self, ticker, market: Market = None) -> Ticker:
380
+ def parse_ticker(self, ticker: dict, market: Market = None) -> Ticker:
381
381
  #
382
382
  # {
383
383
  # "pair":"btc_twd",
ccxt/bitrue.py CHANGED
@@ -7,7 +7,7 @@ from ccxt.base.exchange import Exchange
7
7
  from ccxt.abstract.bitrue import ImplicitAPI
8
8
  import hashlib
9
9
  import json
10
- from ccxt.base.types import Balances, Currencies, Currency, Int, MarginModification, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction, TransferEntry
10
+ from ccxt.base.types import Balances, Currencies, Currency, Int, MarginModification, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction, TransferEntry, TransferEntries
11
11
  from typing import List
12
12
  from ccxt.base.errors import ExchangeError
13
13
  from ccxt.base.errors import AuthenticationError
@@ -1146,7 +1146,7 @@ class bitrue(Exchange, ImplicitAPI):
1146
1146
  orderbook['nonce'] = self.safe_integer(response, 'lastUpdateId')
1147
1147
  return orderbook
1148
1148
 
1149
- def parse_ticker(self, ticker, market: Market = None) -> Ticker:
1149
+ def parse_ticker(self, ticker: dict, market: Market = None) -> Ticker:
1150
1150
  #
1151
1151
  # fetchBidsAsks
1152
1152
  #
@@ -2727,7 +2727,7 @@ class bitrue(Exchange, ImplicitAPI):
2727
2727
  'status': 'ok',
2728
2728
  }
2729
2729
 
2730
- def fetch_transfers(self, code: Str = None, since: Int = None, limit: Int = None, params={}):
2730
+ def fetch_transfers(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> TransferEntries:
2731
2731
  """
2732
2732
  fetch a history of internal transfers made on an account
2733
2733
  :see: https://www.bitrue.com/api-docs#get-future-account-transfer-history-list-user_data-hmac-sha256
ccxt/bitso.py CHANGED
@@ -550,7 +550,7 @@ class bitso(Exchange, ImplicitAPI):
550
550
  timestamp = self.parse8601(self.safe_string(orderbook, 'updated_at'))
551
551
  return self.parse_order_book(orderbook, market['symbol'], timestamp, 'bids', 'asks', 'price', 'amount')
552
552
 
553
- def parse_ticker(self, ticker, market: Market = None) -> Ticker:
553
+ def parse_ticker(self, ticker: dict, market: Market = None) -> Ticker:
554
554
  #
555
555
  # {
556
556
  # "high":"37446.85",
ccxt/bitstamp.py CHANGED
@@ -721,7 +721,7 @@ class bitstamp(Exchange, ImplicitAPI):
721
721
  orderbook['nonce'] = microtimestamp
722
722
  return orderbook
723
723
 
724
- def parse_ticker(self, ticker, market: Market = None) -> Ticker:
724
+ def parse_ticker(self, ticker: dict, market: Market = None) -> Ticker:
725
725
  #
726
726
  # {
727
727
  # "timestamp": "1686068944",
@@ -2020,10 +2020,8 @@ class bitstamp(Exchange, ImplicitAPI):
2020
2020
  """
2021
2021
  self.load_markets()
2022
2022
  currency = self.currency(code)
2023
- amount = self.currency_to_precision(code, amount)
2024
- amount = self.parse_to_numeric(amount)
2025
2023
  request = {
2026
- 'amount': amount,
2024
+ 'amount': self.parse_to_numeric(self.currency_to_precision(code, amount)),
2027
2025
  'currency': currency['id'].upper(),
2028
2026
  }
2029
2027
  response = None
@@ -2061,7 +2059,7 @@ class bitstamp(Exchange, ImplicitAPI):
2061
2059
  'status': self.parse_transfer_status(status),
2062
2060
  }
2063
2061
 
2064
- def parse_transfer_status(self, status):
2062
+ def parse_transfer_status(self, status: Str) -> Str:
2065
2063
  statuses = {
2066
2064
  'ok': 'ok',
2067
2065
  'error': 'failed',
ccxt/bitteam.py CHANGED
@@ -1482,7 +1482,7 @@ class bitteam(Exchange, ImplicitAPI):
1482
1482
  pair = self.safe_dict(result, 'pair', {})
1483
1483
  return self.parse_ticker(pair, market)
1484
1484
 
1485
- def parse_ticker(self, ticker, market: Market = None) -> Ticker:
1485
+ def parse_ticker(self, ticker: dict, market: Market = None) -> Ticker:
1486
1486
  #
1487
1487
  # fetchTicker
1488
1488
  # {
ccxt/bitvavo.py CHANGED
@@ -591,7 +591,7 @@ class bitvavo(Exchange, ImplicitAPI):
591
591
  #
592
592
  return self.parse_ticker(response, market)
593
593
 
594
- def parse_ticker(self, ticker, market: Market = None) -> Ticker:
594
+ def parse_ticker(self, ticker: dict, market: Market = None) -> Ticker:
595
595
  #
596
596
  # fetchTicker
597
597
  #
ccxt/bl3p.py CHANGED
@@ -178,7 +178,7 @@ class bl3p(Exchange, ImplicitAPI):
178
178
  orderbook = self.safe_dict(response, 'data')
179
179
  return self.parse_order_book(orderbook, market['symbol'], None, 'bids', 'asks', 'price_int', 'amount_int')
180
180
 
181
- def parse_ticker(self, ticker, market: Market = None) -> Ticker:
181
+ def parse_ticker(self, ticker: dict, market: Market = None) -> Ticker:
182
182
  #
183
183
  # {
184
184
  # "currency":"BTC",
ccxt/blockchaincom.py CHANGED
@@ -392,7 +392,7 @@ class blockchaincom(Exchange, ImplicitAPI):
392
392
  response = self.publicGetL2Symbol(self.extend(request, params))
393
393
  return self.parse_order_book(response, market['symbol'], None, 'bids', 'asks', 'px', 'qty')
394
394
 
395
- def parse_ticker(self, ticker, market: Market = None) -> Ticker:
395
+ def parse_ticker(self, ticker: dict, market: Market = None) -> Ticker:
396
396
  #
397
397
  # {
398
398
  # "symbol": "BTC-USD",
ccxt/blofin.py CHANGED
@@ -491,7 +491,7 @@ class blofin(Exchange, ImplicitAPI):
491
491
  timestamp = self.safe_integer(first, 'ts')
492
492
  return self.parse_order_book(first, symbol, timestamp)
493
493
 
494
- def parse_ticker(self, ticker, market: Market = None) -> Ticker:
494
+ def parse_ticker(self, ticker: dict, market: Market = None) -> Ticker:
495
495
  timestamp = self.safe_integer(ticker, 'ts')
496
496
  marketId = self.safe_string(ticker, 'instId')
497
497
  market = self.safe_market(marketId, market, '-')
@@ -1643,7 +1643,7 @@ class blofin(Exchange, ImplicitAPI):
1643
1643
  data = self.safe_dict(response, 'data', {})
1644
1644
  return self.parse_transfer(data, currency)
1645
1645
 
1646
- def parse_transfer(self, transfer, currency: Currency = None):
1646
+ def parse_transfer(self, transfer: dict, currency: Currency = None) -> TransferEntry:
1647
1647
  id = self.safe_string(transfer, 'transferId')
1648
1648
  return {
1649
1649
  'info': transfer,
@@ -1859,7 +1859,7 @@ class blofin(Exchange, ImplicitAPI):
1859
1859
  data = self.safe_dict(response, 'data', {})
1860
1860
  return self.parse_leverage(data, market)
1861
1861
 
1862
- def parse_leverage(self, leverage, market=None) -> Leverage:
1862
+ def parse_leverage(self, leverage: dict, market: Market = None) -> Leverage:
1863
1863
  marketId = self.safe_string(leverage, 'instId')
1864
1864
  leverageValue = self.safe_integer(leverage, 'leverage')
1865
1865
  return {
ccxt/btcalpha.py CHANGED
@@ -302,7 +302,7 @@ class btcalpha(Exchange, ImplicitAPI):
302
302
  #
303
303
  return self.parse_ticker(response, market)
304
304
 
305
- def parse_ticker(self, ticker, market: Market = None) -> Ticker:
305
+ def parse_ticker(self, ticker: dict, market: Market = None) -> Ticker:
306
306
  #
307
307
  # {
308
308
  # "timestamp": "1674658.445272",
ccxt/btcbox.py CHANGED
@@ -181,7 +181,7 @@ class btcbox(Exchange, ImplicitAPI):
181
181
  response = self.publicGetDepth(self.extend(request, params))
182
182
  return self.parse_order_book(response, market['symbol'])
183
183
 
184
- def parse_ticker(self, ticker, market: Market = None) -> Ticker:
184
+ def parse_ticker(self, ticker: dict, market: Market = None) -> Ticker:
185
185
  symbol = self.safe_symbol(None, market)
186
186
  last = self.safe_string(ticker, 'last')
187
187
  return self.safe_ticker({
ccxt/btcmarkets.py CHANGED
@@ -572,7 +572,7 @@ class btcmarkets(Exchange, ImplicitAPI):
572
572
  orderbook['nonce'] = self.safe_integer(response, 'snapshotId')
573
573
  return orderbook
574
574
 
575
- def parse_ticker(self, ticker, market: Market = None) -> Ticker:
575
+ def parse_ticker(self, ticker: dict, market: Market = None) -> Ticker:
576
576
  #
577
577
  # fetchTicker
578
578
  #
ccxt/btcturk.py CHANGED
@@ -354,7 +354,7 @@ class btcturk(Exchange, ImplicitAPI):
354
354
  timestamp = self.safe_integer(data, 'timestamp')
355
355
  return self.parse_order_book(data, market['symbol'], timestamp, 'bids', 'asks', 0, 1)
356
356
 
357
- def parse_ticker(self, ticker, market: Market = None) -> Ticker:
357
+ def parse_ticker(self, ticker: dict, market: Market = None) -> Ticker:
358
358
  #
359
359
  # {
360
360
  # "pair": "BTCTRY",
ccxt/bybit.py CHANGED
@@ -6,7 +6,7 @@
6
6
  from ccxt.base.exchange import Exchange
7
7
  from ccxt.abstract.bybit import ImplicitAPI
8
8
  import hashlib
9
- from ccxt.base.types import Balances, CrossBorrowRate, Currencies, Currency, Greeks, Int, Leverage, Market, MarketInterface, Num, Option, OptionChain, Order, OrderBook, OrderRequest, CancellationRequest, OrderSide, OrderType, Position, Str, Strings, Ticker, Tickers, Trade, TradingFeeInterface, TradingFees, Transaction, TransferEntry
9
+ from ccxt.base.types import Balances, CrossBorrowRate, Currencies, Currency, Greeks, Int, Leverage, Market, MarketInterface, Num, Option, OptionChain, Order, OrderBook, OrderRequest, CancellationRequest, OrderSide, OrderType, Position, Str, Strings, Ticker, Tickers, Trade, TradingFeeInterface, TradingFees, Transaction, TransferEntry, TransferEntries
10
10
  from typing import List
11
11
  from ccxt.base.errors import ExchangeError
12
12
  from ccxt.base.errors import AuthenticationError
@@ -360,6 +360,7 @@ class bybit(Exchange, ImplicitAPI):
360
360
  'v5/asset/coin/query-info': 28, # should be 25 but exceeds ratelimit unless the weight is 28 or higher
361
361
  'v5/asset/withdraw/query-record': 10, # 5/s => cost = 50 / 5 = 10
362
362
  'v5/asset/withdraw/withdrawable-amount': 5,
363
+ 'v5/asset/withdraw/vasp/list': 5,
363
364
  # user
364
365
  'v5/user/query-sub-members': 5, # 10/s => cost = 50 / 10 = 5
365
366
  'v5/user/query-api': 5, # 10/s => cost = 50 / 10 = 5
@@ -1852,7 +1853,7 @@ class bybit(Exchange, ImplicitAPI):
1852
1853
  }))
1853
1854
  return result
1854
1855
 
1855
- def parse_ticker(self, ticker, market: Market = None) -> Ticker:
1856
+ def parse_ticker(self, ticker: dict, market: Market = None) -> Ticker:
1856
1857
  #
1857
1858
  # spot
1858
1859
  #
@@ -6156,7 +6157,7 @@ class bybit(Exchange, ImplicitAPI):
6156
6157
  position = self.fetch_position(symbol, params)
6157
6158
  return self.parse_leverage(position, market)
6158
6159
 
6159
- def parse_leverage(self, leverage, market=None) -> Leverage:
6160
+ def parse_leverage(self, leverage: dict, market: Market = None) -> Leverage:
6160
6161
  marketId = self.safe_string(leverage, 'symbol')
6161
6162
  leverageValue = self.safe_integer(leverage, 'leverage')
6162
6163
  return {
@@ -6664,7 +6665,7 @@ class bybit(Exchange, ImplicitAPI):
6664
6665
  'status': status,
6665
6666
  })
6666
6667
 
6667
- def fetch_transfers(self, code: Str = None, since: Int = None, limit: Int = None, params={}):
6668
+ def fetch_transfers(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> TransferEntries:
6668
6669
  """
6669
6670
  fetch a history of internal transfers made on an account
6670
6671
  :see: https://bybit-exchange.github.io/docs/v5/asset/inter-transfer-list
@@ -6809,7 +6810,7 @@ class bybit(Exchange, ImplicitAPI):
6809
6810
  'info': info,
6810
6811
  }
6811
6812
 
6812
- def parse_transfer_status(self, status):
6813
+ def parse_transfer_status(self, status: Str) -> Str:
6813
6814
  statuses = {
6814
6815
  '0': 'ok',
6815
6816
  'OK': 'ok',
@@ -6817,7 +6818,7 @@ class bybit(Exchange, ImplicitAPI):
6817
6818
  }
6818
6819
  return self.safe_string(statuses, status, status)
6819
6820
 
6820
- def parse_transfer(self, transfer, currency: Currency = None):
6821
+ def parse_transfer(self, transfer: dict, currency: Currency = None) -> TransferEntry:
6821
6822
  #
6822
6823
  # transfer
6823
6824
  #
@@ -7401,7 +7402,7 @@ class bybit(Exchange, ImplicitAPI):
7401
7402
  'datetime': self.iso8601(timestamp),
7402
7403
  })
7403
7404
 
7404
- def parse_greeks(self, greeks, market: Market = None):
7405
+ def parse_greeks(self, greeks: dict, market: Market = None) -> Greeks:
7405
7406
  #
7406
7407
  # {
7407
7408
  # "symbol": "BTC-26JAN24-39000-C",
@@ -7876,7 +7877,7 @@ class bybit(Exchange, ImplicitAPI):
7876
7877
  resultList = self.safe_list(result, 'list', [])
7877
7878
  return self.parse_option_chain(resultList, None, 'symbol')
7878
7879
 
7879
- def parse_option(self, chain, currency: Currency = None, market: Market = None):
7880
+ def parse_option(self, chain: dict, currency: Currency = None, market: Market = None) -> Option:
7880
7881
  #
7881
7882
  # {
7882
7883
  # "symbol": "BTC-27DEC24-55000-P",
ccxt/cex.py CHANGED
@@ -562,7 +562,7 @@ class cex(Exchange, ImplicitAPI):
562
562
  return []
563
563
  return None
564
564
 
565
- def parse_ticker(self, ticker, market: Market = None) -> Ticker:
565
+ def parse_ticker(self, ticker: dict, market: Market = None) -> Ticker:
566
566
  timestamp = self.safe_timestamp(ticker, 'timestamp')
567
567
  volume = self.safe_string(ticker, 'volume')
568
568
  high = self.safe_string(ticker, 'high')