ccxt 4.4.49__tar.gz → 4.4.51__tar.gz

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 (676) hide show
  1. {ccxt-4.4.49/ccxt.egg-info → ccxt-4.4.51}/PKG-INFO +7 -7
  2. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/__init__.py +1 -1
  3. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/binance.py +1 -0
  4. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/binancecoinm.py +1 -0
  5. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/binanceus.py +1 -0
  6. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/binanceusdm.py +1 -0
  7. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/alpaca.py +63 -2
  8. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/__init__.py +1 -1
  9. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/alpaca.py +63 -2
  10. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/base/exchange.py +1 -1
  11. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/binance.py +39 -20
  12. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/blofin.py +5 -1
  13. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/coinex.py +4 -4
  14. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/coinmetro.py +16 -3
  15. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/deribit.py +11 -3
  16. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/gate.py +1 -1
  17. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/hollaex.py +14 -17
  18. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/htx.py +5 -3
  19. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/kucoin.py +49 -69
  20. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/mexc.py +24 -8
  21. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/okcoin.py +13 -5
  22. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/onetrading.py +1 -1
  23. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/paradex.py +1 -1
  24. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/paymium.py +42 -0
  25. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/probit.py +77 -8
  26. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/timex.py +67 -0
  27. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/tokocrypto.py +81 -4
  28. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/tradeogre.py +58 -1
  29. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/vertex.py +65 -2
  30. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/wavesexchange.py +73 -0
  31. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/wazirx.py +59 -3
  32. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/whitebit.py +79 -4
  33. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/xt.py +112 -0
  34. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/yobit.py +56 -0
  35. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/zaif.py +55 -0
  36. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/zonda.py +58 -0
  37. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/base/exchange.py +72 -4
  38. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/binance.py +39 -20
  39. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/blofin.py +5 -1
  40. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/coinex.py +4 -4
  41. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/coinmetro.py +16 -3
  42. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/deribit.py +11 -3
  43. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/gate.py +1 -1
  44. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/hollaex.py +14 -17
  45. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/htx.py +5 -3
  46. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/kucoin.py +49 -69
  47. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/mexc.py +24 -8
  48. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/okcoin.py +13 -5
  49. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/onetrading.py +1 -1
  50. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/paradex.py +1 -1
  51. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/paymium.py +42 -0
  52. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/pro/__init__.py +1 -1
  53. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/pro/binance.py +2 -0
  54. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/pro/blofin.py +8 -0
  55. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/pro/coinex.py +4 -1
  56. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/probit.py +77 -8
  57. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/timex.py +67 -0
  58. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/tokocrypto.py +81 -4
  59. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/tradeogre.py +58 -1
  60. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/vertex.py +65 -2
  61. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/wavesexchange.py +73 -0
  62. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/wazirx.py +59 -3
  63. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/whitebit.py +79 -4
  64. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/xt.py +112 -0
  65. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/yobit.py +56 -0
  66. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/zaif.py +55 -0
  67. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/zonda.py +58 -0
  68. {ccxt-4.4.49 → ccxt-4.4.51/ccxt.egg-info}/PKG-INFO +7 -7
  69. {ccxt-4.4.49 → ccxt-4.4.51}/package.json +2 -2
  70. {ccxt-4.4.49 → ccxt-4.4.51}/LICENSE.txt +0 -0
  71. {ccxt-4.4.49 → ccxt-4.4.51}/MANIFEST.in +0 -0
  72. {ccxt-4.4.49 → ccxt-4.4.51}/README.rst +0 -0
  73. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/__init__.py +0 -0
  74. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/ace.py +0 -0
  75. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/alpaca.py +0 -0
  76. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/ascendex.py +0 -0
  77. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/bequant.py +0 -0
  78. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/bigone.py +0 -0
  79. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/bingx.py +0 -0
  80. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/bit2c.py +0 -0
  81. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/bitbank.py +0 -0
  82. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/bitbns.py +0 -0
  83. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/bitcoincom.py +0 -0
  84. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/bitfinex.py +0 -0
  85. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/bitfinex1.py +0 -0
  86. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/bitflyer.py +0 -0
  87. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/bitget.py +0 -0
  88. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/bithumb.py +0 -0
  89. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/bitmart.py +0 -0
  90. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/bitmex.py +0 -0
  91. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/bitopro.py +0 -0
  92. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/bitpanda.py +0 -0
  93. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/bitrue.py +0 -0
  94. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/bitso.py +0 -0
  95. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/bitstamp.py +0 -0
  96. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/bitteam.py +0 -0
  97. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/bitvavo.py +0 -0
  98. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/bl3p.py +0 -0
  99. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/blockchaincom.py +0 -0
  100. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/blofin.py +0 -0
  101. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/btcalpha.py +0 -0
  102. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/btcbox.py +0 -0
  103. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/btcmarkets.py +0 -0
  104. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/btcturk.py +0 -0
  105. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/bybit.py +0 -0
  106. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/cex.py +0 -0
  107. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/coinbase.py +0 -0
  108. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/coinbaseadvanced.py +0 -0
  109. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/coinbaseexchange.py +0 -0
  110. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/coinbaseinternational.py +0 -0
  111. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/coincatch.py +0 -0
  112. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/coincheck.py +0 -0
  113. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/coinex.py +0 -0
  114. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/coinlist.py +0 -0
  115. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/coinmate.py +0 -0
  116. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/coinmetro.py +0 -0
  117. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/coinone.py +0 -0
  118. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/coinsph.py +0 -0
  119. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/coinspot.py +0 -0
  120. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/cryptocom.py +0 -0
  121. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/currencycom.py +0 -0
  122. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/defx.py +0 -0
  123. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/delta.py +0 -0
  124. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/deribit.py +0 -0
  125. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/digifinex.py +0 -0
  126. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/ellipx.py +0 -0
  127. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/exmo.py +0 -0
  128. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/fmfwio.py +0 -0
  129. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/gate.py +0 -0
  130. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/gateio.py +0 -0
  131. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/gemini.py +0 -0
  132. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/hashkey.py +0 -0
  133. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/hitbtc.py +0 -0
  134. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/hollaex.py +0 -0
  135. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/htx.py +0 -0
  136. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/huobi.py +0 -0
  137. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/huobijp.py +0 -0
  138. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/hyperliquid.py +0 -0
  139. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/idex.py +0 -0
  140. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/independentreserve.py +0 -0
  141. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/indodax.py +0 -0
  142. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/kraken.py +0 -0
  143. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/krakenfutures.py +0 -0
  144. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/kucoin.py +0 -0
  145. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/kucoinfutures.py +0 -0
  146. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/kuna.py +0 -0
  147. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/latoken.py +0 -0
  148. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/lbank.py +0 -0
  149. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/luno.py +0 -0
  150. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/lykke.py +0 -0
  151. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/mercado.py +0 -0
  152. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/mexc.py +0 -0
  153. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/myokx.py +0 -0
  154. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/ndax.py +0 -0
  155. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/novadax.py +0 -0
  156. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/oceanex.py +0 -0
  157. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/okcoin.py +0 -0
  158. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/okx.py +0 -0
  159. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/onetrading.py +0 -0
  160. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/oxfun.py +0 -0
  161. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/p2b.py +0 -0
  162. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/paradex.py +0 -0
  163. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/paymium.py +0 -0
  164. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/phemex.py +0 -0
  165. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/poloniex.py +0 -0
  166. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/poloniexfutures.py +0 -0
  167. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/probit.py +0 -0
  168. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/timex.py +0 -0
  169. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/tokocrypto.py +0 -0
  170. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/tradeogre.py +0 -0
  171. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/upbit.py +0 -0
  172. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/vertex.py +0 -0
  173. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/wavesexchange.py +0 -0
  174. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/wazirx.py +0 -0
  175. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/whitebit.py +0 -0
  176. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/woo.py +0 -0
  177. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/woofipro.py +0 -0
  178. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/xt.py +0 -0
  179. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/yobit.py +0 -0
  180. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/zaif.py +0 -0
  181. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/abstract/zonda.py +0 -0
  182. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/ace.py +0 -0
  183. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/ascendex.py +0 -0
  184. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/ace.py +0 -0
  185. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/ascendex.py +0 -0
  186. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/base/__init__.py +0 -0
  187. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/base/throttler.py +0 -0
  188. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/base/ws/__init__.py +0 -0
  189. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/base/ws/aiohttp_client.py +0 -0
  190. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/base/ws/cache.py +0 -0
  191. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/base/ws/client.py +0 -0
  192. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/base/ws/fast_client.py +0 -0
  193. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/base/ws/functions.py +0 -0
  194. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/base/ws/future.py +0 -0
  195. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/base/ws/order_book.py +0 -0
  196. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/base/ws/order_book_side.py +0 -0
  197. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/bequant.py +0 -0
  198. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/bigone.py +0 -0
  199. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/binancecoinm.py +0 -0
  200. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/binanceus.py +0 -0
  201. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/binanceusdm.py +0 -0
  202. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/bingx.py +0 -0
  203. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/bit2c.py +0 -0
  204. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/bitbank.py +0 -0
  205. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/bitbns.py +0 -0
  206. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/bitcoincom.py +0 -0
  207. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/bitfinex.py +0 -0
  208. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/bitfinex1.py +0 -0
  209. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/bitflyer.py +0 -0
  210. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/bitget.py +0 -0
  211. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/bithumb.py +0 -0
  212. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/bitmart.py +0 -0
  213. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/bitmex.py +0 -0
  214. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/bitopro.py +0 -0
  215. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/bitpanda.py +0 -0
  216. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/bitrue.py +0 -0
  217. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/bitso.py +0 -0
  218. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/bitstamp.py +0 -0
  219. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/bitteam.py +0 -0
  220. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/bitvavo.py +0 -0
  221. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/bl3p.py +0 -0
  222. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/blockchaincom.py +0 -0
  223. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/btcalpha.py +0 -0
  224. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/btcbox.py +0 -0
  225. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/btcmarkets.py +0 -0
  226. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/btcturk.py +0 -0
  227. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/bybit.py +0 -0
  228. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/cex.py +0 -0
  229. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/coinbase.py +0 -0
  230. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/coinbaseadvanced.py +0 -0
  231. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/coinbaseexchange.py +0 -0
  232. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/coinbaseinternational.py +0 -0
  233. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/coincatch.py +0 -0
  234. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/coincheck.py +0 -0
  235. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/coinlist.py +0 -0
  236. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/coinmate.py +0 -0
  237. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/coinone.py +0 -0
  238. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/coinsph.py +0 -0
  239. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/coinspot.py +0 -0
  240. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/cryptocom.py +0 -0
  241. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/currencycom.py +0 -0
  242. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/defx.py +0 -0
  243. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/delta.py +0 -0
  244. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/digifinex.py +0 -0
  245. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/ellipx.py +0 -0
  246. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/exmo.py +0 -0
  247. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/fmfwio.py +0 -0
  248. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/gateio.py +0 -0
  249. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/gemini.py +0 -0
  250. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/hashkey.py +0 -0
  251. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/hitbtc.py +0 -0
  252. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/huobi.py +0 -0
  253. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/huobijp.py +0 -0
  254. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/hyperliquid.py +0 -0
  255. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/idex.py +0 -0
  256. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/independentreserve.py +0 -0
  257. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/indodax.py +0 -0
  258. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/kraken.py +0 -0
  259. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/krakenfutures.py +0 -0
  260. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/kucoinfutures.py +0 -0
  261. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/kuna.py +0 -0
  262. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/latoken.py +0 -0
  263. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/lbank.py +0 -0
  264. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/luno.py +0 -0
  265. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/lykke.py +0 -0
  266. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/mercado.py +0 -0
  267. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/myokx.py +0 -0
  268. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/ndax.py +0 -0
  269. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/novadax.py +0 -0
  270. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/oceanex.py +0 -0
  271. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/okx.py +0 -0
  272. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/oxfun.py +0 -0
  273. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/p2b.py +0 -0
  274. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/phemex.py +0 -0
  275. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/poloniex.py +0 -0
  276. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/poloniexfutures.py +0 -0
  277. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/upbit.py +0 -0
  278. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/woo.py +0 -0
  279. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/async_support/woofipro.py +0 -0
  280. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/base/__init__.py +0 -0
  281. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/base/decimal_to_precision.py +0 -0
  282. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/base/errors.py +0 -0
  283. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/base/precise.py +0 -0
  284. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/base/types.py +0 -0
  285. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/bequant.py +0 -0
  286. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/bigone.py +0 -0
  287. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/binancecoinm.py +0 -0
  288. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/binanceus.py +0 -0
  289. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/binanceusdm.py +0 -0
  290. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/bingx.py +0 -0
  291. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/bit2c.py +0 -0
  292. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/bitbank.py +0 -0
  293. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/bitbns.py +0 -0
  294. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/bitcoincom.py +0 -0
  295. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/bitfinex.py +0 -0
  296. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/bitfinex1.py +0 -0
  297. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/bitflyer.py +0 -0
  298. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/bitget.py +0 -0
  299. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/bithumb.py +0 -0
  300. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/bitmart.py +0 -0
  301. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/bitmex.py +0 -0
  302. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/bitopro.py +0 -0
  303. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/bitpanda.py +0 -0
  304. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/bitrue.py +0 -0
  305. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/bitso.py +0 -0
  306. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/bitstamp.py +0 -0
  307. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/bitteam.py +0 -0
  308. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/bitvavo.py +0 -0
  309. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/bl3p.py +0 -0
  310. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/blockchaincom.py +0 -0
  311. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/btcalpha.py +0 -0
  312. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/btcbox.py +0 -0
  313. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/btcmarkets.py +0 -0
  314. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/btcturk.py +0 -0
  315. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/bybit.py +0 -0
  316. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/cex.py +0 -0
  317. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/coinbase.py +0 -0
  318. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/coinbaseadvanced.py +0 -0
  319. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/coinbaseexchange.py +0 -0
  320. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/coinbaseinternational.py +0 -0
  321. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/coincatch.py +0 -0
  322. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/coincheck.py +0 -0
  323. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/coinlist.py +0 -0
  324. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/coinmate.py +0 -0
  325. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/coinone.py +0 -0
  326. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/coinsph.py +0 -0
  327. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/coinspot.py +0 -0
  328. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/cryptocom.py +0 -0
  329. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/currencycom.py +0 -0
  330. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/defx.py +0 -0
  331. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/delta.py +0 -0
  332. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/digifinex.py +0 -0
  333. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/ellipx.py +0 -0
  334. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/exmo.py +0 -0
  335. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/fmfwio.py +0 -0
  336. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/gateio.py +0 -0
  337. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/gemini.py +0 -0
  338. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/hashkey.py +0 -0
  339. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/hitbtc.py +0 -0
  340. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/huobi.py +0 -0
  341. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/huobijp.py +0 -0
  342. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/hyperliquid.py +0 -0
  343. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/idex.py +0 -0
  344. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/independentreserve.py +0 -0
  345. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/indodax.py +0 -0
  346. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/kraken.py +0 -0
  347. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/krakenfutures.py +0 -0
  348. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/kucoinfutures.py +0 -0
  349. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/kuna.py +0 -0
  350. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/latoken.py +0 -0
  351. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/lbank.py +0 -0
  352. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/luno.py +0 -0
  353. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/lykke.py +0 -0
  354. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/mercado.py +0 -0
  355. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/myokx.py +0 -0
  356. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/ndax.py +0 -0
  357. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/novadax.py +0 -0
  358. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/oceanex.py +0 -0
  359. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/okx.py +0 -0
  360. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/oxfun.py +0 -0
  361. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/p2b.py +0 -0
  362. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/phemex.py +0 -0
  363. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/poloniex.py +0 -0
  364. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/poloniexfutures.py +0 -0
  365. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/pro/alpaca.py +0 -0
  366. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/pro/ascendex.py +0 -0
  367. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/pro/bequant.py +0 -0
  368. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/pro/binancecoinm.py +0 -0
  369. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/pro/binanceus.py +0 -0
  370. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/pro/binanceusdm.py +0 -0
  371. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/pro/bingx.py +0 -0
  372. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/pro/bitcoincom.py +0 -0
  373. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/pro/bitfinex.py +0 -0
  374. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/pro/bitfinex1.py +0 -0
  375. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/pro/bitget.py +0 -0
  376. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/pro/bithumb.py +0 -0
  377. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/pro/bitmart.py +0 -0
  378. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/pro/bitmex.py +0 -0
  379. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/pro/bitopro.py +0 -0
  380. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/pro/bitpanda.py +0 -0
  381. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/pro/bitrue.py +0 -0
  382. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/pro/bitstamp.py +0 -0
  383. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/pro/bitvavo.py +0 -0
  384. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/pro/blockchaincom.py +0 -0
  385. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/pro/bybit.py +0 -0
  386. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/pro/cex.py +0 -0
  387. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/pro/coinbase.py +0 -0
  388. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/pro/coinbaseadvanced.py +0 -0
  389. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/pro/coinbaseexchange.py +0 -0
  390. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/pro/coinbaseinternational.py +0 -0
  391. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/pro/coincatch.py +0 -0
  392. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/pro/coincheck.py +0 -0
  393. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/pro/coinone.py +0 -0
  394. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/pro/cryptocom.py +0 -0
  395. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/pro/currencycom.py +0 -0
  396. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/pro/defx.py +0 -0
  397. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/pro/deribit.py +0 -0
  398. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/pro/exmo.py +0 -0
  399. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/pro/gate.py +0 -0
  400. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/pro/gateio.py +0 -0
  401. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/pro/gemini.py +0 -0
  402. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/pro/hashkey.py +0 -0
  403. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/pro/hitbtc.py +0 -0
  404. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/pro/hollaex.py +0 -0
  405. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/pro/htx.py +0 -0
  406. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/pro/huobi.py +0 -0
  407. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/pro/huobijp.py +0 -0
  408. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/pro/hyperliquid.py +0 -0
  409. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/pro/idex.py +0 -0
  410. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/pro/independentreserve.py +0 -0
  411. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/pro/kraken.py +0 -0
  412. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/pro/krakenfutures.py +0 -0
  413. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/pro/kucoin.py +0 -0
  414. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/pro/kucoinfutures.py +0 -0
  415. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/pro/lbank.py +0 -0
  416. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/pro/luno.py +0 -0
  417. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/pro/mexc.py +0 -0
  418. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/pro/myokx.py +0 -0
  419. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/pro/ndax.py +0 -0
  420. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/pro/okcoin.py +0 -0
  421. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/pro/okx.py +0 -0
  422. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/pro/onetrading.py +0 -0
  423. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/pro/oxfun.py +0 -0
  424. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/pro/p2b.py +0 -0
  425. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/pro/paradex.py +0 -0
  426. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/pro/phemex.py +0 -0
  427. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/pro/poloniex.py +0 -0
  428. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/pro/poloniexfutures.py +0 -0
  429. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/pro/probit.py +0 -0
  430. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/pro/upbit.py +0 -0
  431. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/pro/vertex.py +0 -0
  432. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/pro/wazirx.py +0 -0
  433. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/pro/whitebit.py +0 -0
  434. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/pro/woo.py +0 -0
  435. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/pro/woofipro.py +0 -0
  436. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/pro/xt.py +0 -0
  437. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/__init__.py +0 -0
  438. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/ecdsa/__init__.py +0 -0
  439. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/ecdsa/_version.py +0 -0
  440. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/ecdsa/curves.py +0 -0
  441. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/ecdsa/der.py +0 -0
  442. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/ecdsa/ecdsa.py +0 -0
  443. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/ecdsa/ellipticcurve.py +0 -0
  444. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/ecdsa/keys.py +0 -0
  445. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/ecdsa/numbertheory.py +0 -0
  446. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/ecdsa/rfc6979.py +0 -0
  447. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/ecdsa/util.py +0 -0
  448. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/ethereum/__init__.py +0 -0
  449. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/ethereum/abi/__init__.py +0 -0
  450. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/ethereum/abi/abi.py +0 -0
  451. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/ethereum/abi/base.py +0 -0
  452. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/ethereum/abi/codec.py +0 -0
  453. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/ethereum/abi/constants.py +0 -0
  454. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/ethereum/abi/decoding.py +0 -0
  455. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/ethereum/abi/encoding.py +0 -0
  456. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/ethereum/abi/exceptions.py +0 -0
  457. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/ethereum/abi/grammar.py +0 -0
  458. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/ethereum/abi/packed.py +0 -0
  459. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/ethereum/abi/py.typed +0 -0
  460. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/ethereum/abi/registry.py +0 -0
  461. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/ethereum/abi/tools/__init__.py +0 -0
  462. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/ethereum/abi/tools/_strategies.py +0 -0
  463. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/ethereum/abi/utils/__init__.py +0 -0
  464. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/ethereum/abi/utils/numeric.py +0 -0
  465. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/ethereum/abi/utils/padding.py +0 -0
  466. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/ethereum/abi/utils/string.py +0 -0
  467. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/ethereum/account/__init__.py +0 -0
  468. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/ethereum/account/encode_typed_data/__init__.py +0 -0
  469. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/ethereum/account/encode_typed_data/encoding_and_hashing.py +0 -0
  470. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/ethereum/account/encode_typed_data/helpers.py +0 -0
  471. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/ethereum/account/messages.py +0 -0
  472. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/ethereum/account/py.typed +0 -0
  473. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/ethereum/hexbytes/__init__.py +0 -0
  474. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/ethereum/hexbytes/_utils.py +0 -0
  475. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/ethereum/hexbytes/main.py +0 -0
  476. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/ethereum/hexbytes/py.typed +0 -0
  477. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/ethereum/typing/__init__.py +0 -0
  478. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/ethereum/typing/abi.py +0 -0
  479. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/ethereum/typing/bls.py +0 -0
  480. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/ethereum/typing/discovery.py +0 -0
  481. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/ethereum/typing/encoding.py +0 -0
  482. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/ethereum/typing/enums.py +0 -0
  483. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/ethereum/typing/ethpm.py +0 -0
  484. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/ethereum/typing/evm.py +0 -0
  485. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/ethereum/typing/networks.py +0 -0
  486. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/ethereum/typing/py.typed +0 -0
  487. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/ethereum/utils/__init__.py +0 -0
  488. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/ethereum/utils/abi.py +0 -0
  489. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/ethereum/utils/address.py +0 -0
  490. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/ethereum/utils/applicators.py +0 -0
  491. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/ethereum/utils/conversions.py +0 -0
  492. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/ethereum/utils/currency.py +0 -0
  493. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/ethereum/utils/curried/__init__.py +0 -0
  494. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/ethereum/utils/debug.py +0 -0
  495. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/ethereum/utils/decorators.py +0 -0
  496. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/ethereum/utils/encoding.py +0 -0
  497. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/ethereum/utils/exceptions.py +0 -0
  498. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/ethereum/utils/functional.py +0 -0
  499. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/ethereum/utils/hexadecimal.py +0 -0
  500. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/ethereum/utils/humanize.py +0 -0
  501. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/ethereum/utils/logging.py +0 -0
  502. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/ethereum/utils/module_loading.py +0 -0
  503. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/ethereum/utils/numeric.py +0 -0
  504. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/ethereum/utils/py.typed +0 -0
  505. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/ethereum/utils/toolz.py +0 -0
  506. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/ethereum/utils/types.py +0 -0
  507. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/ethereum/utils/typing/__init__.py +0 -0
  508. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/ethereum/utils/typing/misc.py +0 -0
  509. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/ethereum/utils/units.py +0 -0
  510. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/keccak/__init__.py +0 -0
  511. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/keccak/keccak.py +0 -0
  512. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/lark/__init__.py +0 -0
  513. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/lark/__pyinstaller/__init__.py +0 -0
  514. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/lark/__pyinstaller/hook-lark.py +0 -0
  515. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/lark/ast_utils.py +0 -0
  516. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/lark/common.py +0 -0
  517. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/lark/exceptions.py +0 -0
  518. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/lark/grammar.py +0 -0
  519. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/lark/grammars/__init__.py +0 -0
  520. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/lark/indenter.py +0 -0
  521. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/lark/lark.py +0 -0
  522. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/lark/lexer.py +0 -0
  523. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/lark/load_grammar.py +0 -0
  524. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/lark/parse_tree_builder.py +0 -0
  525. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/lark/parser_frontends.py +0 -0
  526. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/lark/parsers/__init__.py +0 -0
  527. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/lark/parsers/cyk.py +0 -0
  528. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/lark/parsers/earley.py +0 -0
  529. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/lark/parsers/earley_common.py +0 -0
  530. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/lark/parsers/earley_forest.py +0 -0
  531. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/lark/parsers/grammar_analysis.py +0 -0
  532. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/lark/parsers/lalr_analysis.py +0 -0
  533. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/lark/parsers/lalr_interactive_parser.py +0 -0
  534. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/lark/parsers/lalr_parser.py +0 -0
  535. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/lark/parsers/lalr_parser_state.py +0 -0
  536. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/lark/parsers/xearley.py +0 -0
  537. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/lark/py.typed +0 -0
  538. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/lark/reconstruct.py +0 -0
  539. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/lark/tools/__init__.py +0 -0
  540. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/lark/tools/nearley.py +0 -0
  541. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/lark/tools/serialize.py +0 -0
  542. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/lark/tools/standalone.py +0 -0
  543. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/lark/tree.py +0 -0
  544. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/lark/tree_matcher.py +0 -0
  545. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/lark/tree_templates.py +0 -0
  546. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/lark/utils.py +0 -0
  547. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/lark/visitors.py +0 -0
  548. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/marshmallow/__init__.py +0 -0
  549. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/marshmallow/base.py +0 -0
  550. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/marshmallow/class_registry.py +0 -0
  551. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/marshmallow/decorators.py +0 -0
  552. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/marshmallow/error_store.py +0 -0
  553. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/marshmallow/exceptions.py +0 -0
  554. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/marshmallow/fields.py +0 -0
  555. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/marshmallow/orderedset.py +0 -0
  556. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/marshmallow/py.typed +0 -0
  557. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/marshmallow/schema.py +0 -0
  558. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/marshmallow/types.py +0 -0
  559. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/marshmallow/utils.py +0 -0
  560. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/marshmallow/validate.py +0 -0
  561. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/marshmallow/warnings.py +0 -0
  562. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/marshmallow_dataclass/__init__.py +0 -0
  563. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/marshmallow_dataclass/collection_field.py +0 -0
  564. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/marshmallow_dataclass/lazy_class_attribute.py +0 -0
  565. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/marshmallow_dataclass/mypy.py +0 -0
  566. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/marshmallow_dataclass/py.typed +0 -0
  567. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/marshmallow_dataclass/typing.py +0 -0
  568. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/marshmallow_dataclass/union_field.py +0 -0
  569. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/marshmallow_oneofschema/__init__.py +0 -0
  570. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/marshmallow_oneofschema/one_of_schema.py +0 -0
  571. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/marshmallow_oneofschema/py.typed +0 -0
  572. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/msgpack/__init__.py +0 -0
  573. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/msgpack/exceptions.py +0 -0
  574. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/msgpack/ext.py +0 -0
  575. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/msgpack/fallback.py +0 -0
  576. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/parsimonious/__init__.py +0 -0
  577. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/parsimonious/exceptions.py +0 -0
  578. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/parsimonious/expressions.py +0 -0
  579. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/parsimonious/grammar.py +0 -0
  580. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/parsimonious/nodes.py +0 -0
  581. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/parsimonious/utils.py +0 -0
  582. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/starknet/__init__.py +0 -0
  583. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/starknet/cairo/__init__.py +0 -0
  584. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/starknet/cairo/data_types.py +0 -0
  585. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/starknet/cairo/deprecated_parse/__init__.py +0 -0
  586. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/starknet/cairo/deprecated_parse/cairo_types.py +0 -0
  587. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/starknet/cairo/deprecated_parse/parser.py +0 -0
  588. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/starknet/cairo/deprecated_parse/parser_transformer.py +0 -0
  589. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/starknet/cairo/felt.py +0 -0
  590. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/starknet/cairo/type_parser.py +0 -0
  591. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/starknet/cairo/v1/__init__.py +0 -0
  592. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/starknet/cairo/v1/type_parser.py +0 -0
  593. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/starknet/cairo/v2/__init__.py +0 -0
  594. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/starknet/cairo/v2/type_parser.py +0 -0
  595. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/starknet/ccxt_utils.py +0 -0
  596. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/starknet/common.py +0 -0
  597. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/starknet/constants.py +0 -0
  598. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/starknet/hash/__init__.py +0 -0
  599. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/starknet/hash/address.py +0 -0
  600. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/starknet/hash/compiled_class_hash_objects.py +0 -0
  601. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/starknet/hash/selector.py +0 -0
  602. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/starknet/hash/storage.py +0 -0
  603. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/starknet/hash/utils.py +0 -0
  604. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/starknet/models/__init__.py +0 -0
  605. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/starknet/models/typed_data.py +0 -0
  606. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/starknet/serialization/__init__.py +0 -0
  607. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/starknet/serialization/_calldata_reader.py +0 -0
  608. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/starknet/serialization/_context.py +0 -0
  609. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/starknet/serialization/data_serializers/__init__.py +0 -0
  610. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/starknet/serialization/data_serializers/_common.py +0 -0
  611. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/starknet/serialization/data_serializers/array_serializer.py +0 -0
  612. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/starknet/serialization/data_serializers/bool_serializer.py +0 -0
  613. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/starknet/serialization/data_serializers/byte_array_serializer.py +0 -0
  614. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/starknet/serialization/data_serializers/cairo_data_serializer.py +0 -0
  615. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/starknet/serialization/data_serializers/enum_serializer.py +0 -0
  616. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/starknet/serialization/data_serializers/felt_serializer.py +0 -0
  617. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/starknet/serialization/data_serializers/named_tuple_serializer.py +0 -0
  618. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/starknet/serialization/data_serializers/option_serializer.py +0 -0
  619. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/starknet/serialization/data_serializers/output_serializer.py +0 -0
  620. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/starknet/serialization/data_serializers/payload_serializer.py +0 -0
  621. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/starknet/serialization/data_serializers/struct_serializer.py +0 -0
  622. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/starknet/serialization/data_serializers/tuple_serializer.py +0 -0
  623. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/starknet/serialization/data_serializers/uint256_serializer.py +0 -0
  624. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/starknet/serialization/data_serializers/uint_serializer.py +0 -0
  625. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/starknet/serialization/data_serializers/unit_serializer.py +0 -0
  626. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/starknet/serialization/errors.py +0 -0
  627. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/starknet/serialization/factory.py +0 -0
  628. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/starknet/serialization/function_serialization_adapter.py +0 -0
  629. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/starknet/serialization/tuple_dataclass.py +0 -0
  630. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/starknet/utils/__init__.py +0 -0
  631. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/starknet/utils/constructor_args_translator.py +0 -0
  632. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/starknet/utils/iterable.py +0 -0
  633. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/starknet/utils/schema.py +0 -0
  634. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/starknet/utils/typed_data.py +0 -0
  635. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/starkware/__init__.py +0 -0
  636. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/starkware/crypto/__init__.py +0 -0
  637. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/starkware/crypto/fast_pedersen_hash.py +0 -0
  638. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/starkware/crypto/math_utils.py +0 -0
  639. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/starkware/crypto/signature.py +0 -0
  640. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/starkware/crypto/utils.py +0 -0
  641. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/sympy/__init__.py +0 -0
  642. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/sympy/core/__init__.py +0 -0
  643. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/sympy/core/intfunc.py +0 -0
  644. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/sympy/external/__init__.py +0 -0
  645. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/sympy/external/gmpy.py +0 -0
  646. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/sympy/external/importtools.py +0 -0
  647. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/sympy/external/ntheory.py +0 -0
  648. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/sympy/external/pythonmpq.py +0 -0
  649. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/toolz/__init__.py +0 -0
  650. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/toolz/_signatures.py +0 -0
  651. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/toolz/_version.py +0 -0
  652. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/toolz/compatibility.py +0 -0
  653. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/toolz/curried/__init__.py +0 -0
  654. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/toolz/curried/exceptions.py +0 -0
  655. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/toolz/curried/operator.py +0 -0
  656. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/toolz/dicttoolz.py +0 -0
  657. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/toolz/functoolz.py +0 -0
  658. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/toolz/itertoolz.py +0 -0
  659. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/toolz/recipes.py +0 -0
  660. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/toolz/utils.py +0 -0
  661. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/typing_inspect/__init__.py +0 -0
  662. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/static_dependencies/typing_inspect/typing_inspect.py +0 -0
  663. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/test/__init__.py +0 -0
  664. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/test/tests_async.py +0 -0
  665. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/test/tests_helpers.py +0 -0
  666. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/test/tests_init.py +0 -0
  667. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/test/tests_sync.py +0 -0
  668. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/upbit.py +0 -0
  669. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/woo.py +0 -0
  670. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt/woofipro.py +0 -0
  671. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt.egg-info/SOURCES.txt +0 -0
  672. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt.egg-info/dependency_links.txt +0 -0
  673. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt.egg-info/requires.txt +0 -0
  674. {ccxt-4.4.49 → ccxt-4.4.51}/ccxt.egg-info/top_level.txt +0 -0
  675. {ccxt-4.4.49 → ccxt-4.4.51}/setup.cfg +0 -0
  676. {ccxt-4.4.49 → ccxt-4.4.51}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ccxt
3
- Version: 4.4.49
3
+ Version: 4.4.51
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
@@ -12,7 +12,6 @@ Project-URL: Discord, https://discord.gg/ccxt
12
12
  Project-URL: Twitter, https://twitter.com/ccxt_official
13
13
  Project-URL: Funding, https://opencollective.com/ccxt
14
14
  Keywords: algorithmic,algotrading,altcoin,altcoins,api,arbitrage,real-time,realtime,backtest,backtesting,bitcoin,bot,btc,cny,coin,coins,crypto,cryptocurrency,crypto currency,crypto market,currency,currencies,darkcoin,dash,digital currency,doge,dogecoin,e-commerce,etc,eth,ether,ethereum,exchange,exchanges,eur,framework,invest,investing,investor,library,light,litecoin,ltc,market,market data,markets,merchandise,merchant,minimal,ohlcv,order,orderbook,order book,price,price data,pricefeed,private,public,ripple,strategy,ticker,tickers,toolkit,trade,trader,trading,usd,volume,websocket,websockets,web socket,web sockets,ws,xbt,xrp,zec,zerocoin
15
- Platform: UNKNOWN
16
15
  Classifier: Development Status :: 4 - Beta
17
16
  Classifier: Intended Audience :: Developers
18
17
  Classifier: Intended Audience :: Financial and Insurance Industry
@@ -60,6 +59,9 @@ Current feature list:
60
59
 
61
60
  ## Sponsored Promotion
62
61
 
62
+ [![Gate-3rd-Trading-Carnival](https://github.com/user-attachments/assets/6cbb4055-97a8-4985-8c55-0056b4a8612c)](https://www.gate.io/activities/ccxt-trading-competition)
63
+
64
+
63
65
  ## See Also
64
66
 
65
67
  - <sub>[![TabTrader](https://user-images.githubusercontent.com/1294454/66755907-9c3e8880-eea1-11e9-846e-0bff349ceb87.png)](https://tab-trader.com/?utm_source=ccxt)</sub> **[TabTrader](https://tab-trader.com/?utm_source=ccxt)** – trading on all exchanges in one app. Available on **[Android](https://play.google.com/store/apps/details?id=com.tabtrader.android&referrer=utm_source%3Dccxt)** and **[iOS](https://itunes.apple.com/app/apple-store/id1095716562?mt=8)**!
@@ -265,13 +267,13 @@ console.log(version, Object.keys(exchanges));
265
267
 
266
268
  All-in-one browser bundle (dependencies included), served from a CDN of your choice:
267
269
 
268
- * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.4.49/dist/ccxt.browser.min.js
269
- * unpkg: https://unpkg.com/ccxt@4.4.49/dist/ccxt.browser.min.js
270
+ * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.4.51/dist/ccxt.browser.min.js
271
+ * unpkg: https://unpkg.com/ccxt@4.4.51/dist/ccxt.browser.min.js
270
272
 
271
273
  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.
272
274
 
273
275
  ```HTML
274
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.4.49/dist/ccxt.browser.min.js"></script>
276
+ <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.4.51/dist/ccxt.browser.min.js"></script>
275
277
  ```
276
278
 
277
279
  Creates a global `ccxt` object:
@@ -631,5 +633,3 @@ Thank you!
631
633
  ## Contact Us
632
634
 
633
635
  For business inquiries: info@ccxt.trade
634
-
635
-
@@ -22,7 +22,7 @@
22
22
 
23
23
  # ----------------------------------------------------------------------------
24
24
 
25
- __version__ = '4.4.49'
25
+ __version__ = '4.4.51'
26
26
 
27
27
  # ----------------------------------------------------------------------------
28
28
 
@@ -220,6 +220,7 @@ class ImplicitAPI:
220
220
  sapi_get_portfolio_repay_futures_switch = sapiGetPortfolioRepayFuturesSwitch = Entry('portfolio/repay-futures-switch', 'sapi', 'GET', {'cost': 3})
221
221
  sapi_get_portfolio_margin_asset_leverage = sapiGetPortfolioMarginAssetLeverage = Entry('portfolio/margin-asset-leverage', 'sapi', 'GET', {'cost': 5})
222
222
  sapi_get_portfolio_balance = sapiGetPortfolioBalance = Entry('portfolio/balance', 'sapi', 'GET', {'cost': 2})
223
+ sapi_get_portfolio_negative_balance_exchange_record = sapiGetPortfolioNegativeBalanceExchangeRecord = Entry('portfolio/negative-balance-exchange-record', 'sapi', 'GET', {'cost': 2})
223
224
  sapi_get_staking_productlist = sapiGetStakingProductList = Entry('staking/productList', 'sapi', 'GET', {'cost': 0.1})
224
225
  sapi_get_staking_position = sapiGetStakingPosition = Entry('staking/position', 'sapi', 'GET', {'cost': 0.1})
225
226
  sapi_get_staking_stakingrecord = sapiGetStakingStakingRecord = Entry('staking/stakingRecord', 'sapi', 'GET', {'cost': 0.1})
@@ -220,6 +220,7 @@ class ImplicitAPI:
220
220
  sapi_get_portfolio_repay_futures_switch = sapiGetPortfolioRepayFuturesSwitch = Entry('portfolio/repay-futures-switch', 'sapi', 'GET', {'cost': 3})
221
221
  sapi_get_portfolio_margin_asset_leverage = sapiGetPortfolioMarginAssetLeverage = Entry('portfolio/margin-asset-leverage', 'sapi', 'GET', {'cost': 5})
222
222
  sapi_get_portfolio_balance = sapiGetPortfolioBalance = Entry('portfolio/balance', 'sapi', 'GET', {'cost': 2})
223
+ sapi_get_portfolio_negative_balance_exchange_record = sapiGetPortfolioNegativeBalanceExchangeRecord = Entry('portfolio/negative-balance-exchange-record', 'sapi', 'GET', {'cost': 2})
223
224
  sapi_get_staking_productlist = sapiGetStakingProductList = Entry('staking/productList', 'sapi', 'GET', {'cost': 0.1})
224
225
  sapi_get_staking_position = sapiGetStakingPosition = Entry('staking/position', 'sapi', 'GET', {'cost': 0.1})
225
226
  sapi_get_staking_stakingrecord = sapiGetStakingStakingRecord = Entry('staking/stakingRecord', 'sapi', 'GET', {'cost': 0.1})
@@ -220,6 +220,7 @@ class ImplicitAPI:
220
220
  sapi_get_portfolio_repay_futures_switch = sapiGetPortfolioRepayFuturesSwitch = Entry('portfolio/repay-futures-switch', 'sapi', 'GET', {'cost': 3})
221
221
  sapi_get_portfolio_margin_asset_leverage = sapiGetPortfolioMarginAssetLeverage = Entry('portfolio/margin-asset-leverage', 'sapi', 'GET', {'cost': 5})
222
222
  sapi_get_portfolio_balance = sapiGetPortfolioBalance = Entry('portfolio/balance', 'sapi', 'GET', {'cost': 2})
223
+ sapi_get_portfolio_negative_balance_exchange_record = sapiGetPortfolioNegativeBalanceExchangeRecord = Entry('portfolio/negative-balance-exchange-record', 'sapi', 'GET', {'cost': 2})
223
224
  sapi_get_staking_productlist = sapiGetStakingProductList = Entry('staking/productList', 'sapi', 'GET', {'cost': 0.1})
224
225
  sapi_get_staking_position = sapiGetStakingPosition = Entry('staking/position', 'sapi', 'GET', {'cost': 0.1})
225
226
  sapi_get_staking_stakingrecord = sapiGetStakingStakingRecord = Entry('staking/stakingRecord', 'sapi', 'GET', {'cost': 0.1})
@@ -220,6 +220,7 @@ class ImplicitAPI:
220
220
  sapi_get_portfolio_repay_futures_switch = sapiGetPortfolioRepayFuturesSwitch = Entry('portfolio/repay-futures-switch', 'sapi', 'GET', {'cost': 3})
221
221
  sapi_get_portfolio_margin_asset_leverage = sapiGetPortfolioMarginAssetLeverage = Entry('portfolio/margin-asset-leverage', 'sapi', 'GET', {'cost': 5})
222
222
  sapi_get_portfolio_balance = sapiGetPortfolioBalance = Entry('portfolio/balance', 'sapi', 'GET', {'cost': 2})
223
+ sapi_get_portfolio_negative_balance_exchange_record = sapiGetPortfolioNegativeBalanceExchangeRecord = Entry('portfolio/negative-balance-exchange-record', 'sapi', 'GET', {'cost': 2})
223
224
  sapi_get_staking_productlist = sapiGetStakingProductList = Entry('staking/productList', 'sapi', 'GET', {'cost': 0.1})
224
225
  sapi_get_staking_position = sapiGetStakingPosition = Entry('staking/position', 'sapi', 'GET', {'cost': 0.1})
225
226
  sapi_get_staking_stakingrecord = sapiGetStakingStakingRecord = Entry('staking/stakingRecord', 'sapi', 'GET', {'cost': 0.1})
@@ -60,6 +60,9 @@ class alpaca(Exchange, ImplicitAPI):
60
60
  'cancelOrder': True,
61
61
  'closeAllPositions': False,
62
62
  'closePosition': False,
63
+ 'createMarketBuyOrder': True,
64
+ 'createMarketBuyOrderWithCost': True,
65
+ 'createMarketOrderWithCost': True,
63
66
  'createOrder': True,
64
67
  'createStopOrder': True,
65
68
  'createTriggerOrder': True,
@@ -442,7 +445,7 @@ class alpaca(Exchange, ImplicitAPI):
442
445
  # "status": "active",
443
446
  # "tradable": True,
444
447
  # "marginable": False,
445
- # "maintenance_margin_requirement": 100,
448
+ # "maintenance_margin_requirement": 101,
446
449
  # "shortable": False,
447
450
  # "easy_to_borrow": False,
448
451
  # "fractionable": True,
@@ -905,6 +908,58 @@ class alpaca(Exchange, ImplicitAPI):
905
908
  clientOrderId = self.safe_string(params, 'clientOrderId', defaultClientId)
906
909
  return clientOrderId
907
910
 
911
+ def create_market_order_with_cost(self, symbol: str, side: OrderSide, cost: float, params={}):
912
+ """
913
+ create a market order by providing the symbol, side and cost
914
+
915
+ https://docs.alpaca.markets/reference/postorder
916
+
917
+ :param str symbol: unified symbol of the market to create an order in
918
+ :param str side: 'buy' or 'sell'
919
+ :param float cost: how much you want to trade in units of the quote currency
920
+ :param dict [params]: extra parameters specific to the exchange API endpoint
921
+ :returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
922
+ """
923
+ self.load_markets()
924
+ req = {
925
+ 'cost': cost,
926
+ }
927
+ return self.create_order(symbol, 'market', side, 0, None, self.extend(req, params))
928
+
929
+ def create_market_buy_order_with_cost(self, symbol: str, cost: float, params={}):
930
+ """
931
+ create a market buy order by providing the symbol and cost
932
+
933
+ https://docs.alpaca.markets/reference/postorder
934
+
935
+ :param str symbol: unified symbol of the market to create an order in
936
+ :param float cost: how much you want to trade in units of the quote currency
937
+ :param dict [params]: extra parameters specific to the exchange API endpoint
938
+ :returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
939
+ """
940
+ self.load_markets()
941
+ req = {
942
+ 'cost': cost,
943
+ }
944
+ return self.create_order(symbol, 'market', 'buy', 0, None, self.extend(req, params))
945
+
946
+ def create_market_sell_order_with_cost(self, symbol: str, cost: float, params={}):
947
+ """
948
+ create a market sell order by providing the symbol and cost
949
+
950
+ https://docs.alpaca.markets/reference/postorder
951
+
952
+ :param str symbol: unified symbol of the market to create an order in
953
+ :param float cost: how much you want to trade in units of the quote currency
954
+ :param dict [params]: extra parameters specific to the exchange API endpoint
955
+ :returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
956
+ """
957
+ self.load_markets()
958
+ req = {
959
+ 'cost': cost,
960
+ }
961
+ return self.create_order(symbol, 'market', 'sell', cost, None, self.extend(req, params))
962
+
908
963
  def create_order(self, symbol: str, type: OrderType, side: OrderSide, amount: float, price: Num = None, params={}):
909
964
  """
910
965
  create a trade order
@@ -918,6 +973,7 @@ class alpaca(Exchange, ImplicitAPI):
918
973
  :param float [price]: the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
919
974
  :param dict [params]: extra parameters specific to the exchange API endpoint
920
975
  :param float [params.triggerPrice]: The price at which a trigger order is triggered at
976
+ :param float [params.cost]: *market orders only* the cost of the order in units of the quote currency
921
977
  :returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
922
978
  """
923
979
  self.load_markets()
@@ -925,7 +981,6 @@ class alpaca(Exchange, ImplicitAPI):
925
981
  id = market['id']
926
982
  request: dict = {
927
983
  'symbol': id,
928
- 'qty': self.amount_to_precision(symbol, amount),
929
984
  'side': side,
930
985
  'type': type, # market, limit, stop_limit
931
986
  }
@@ -940,6 +995,12 @@ class alpaca(Exchange, ImplicitAPI):
940
995
  request['type'] = newType
941
996
  if type.find('limit') >= 0:
942
997
  request['limit_price'] = self.price_to_precision(symbol, price)
998
+ cost = self.safe_string(params, 'cost')
999
+ if cost is not None:
1000
+ params = self.omit(params, 'cost')
1001
+ request['notional'] = self.cost_to_precision(symbol, cost)
1002
+ else:
1003
+ request['qty'] = self.amount_to_precision(symbol, amount)
943
1004
  defaultTIF = self.safe_string(self.options, 'defaultTimeInForce')
944
1005
  request['time_in_force'] = self.safe_string(params, 'timeInForce', defaultTIF)
945
1006
  params = self.omit(params, ['timeInForce', 'triggerPrice'])
@@ -4,7 +4,7 @@
4
4
 
5
5
  # -----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.4.49'
7
+ __version__ = '4.4.51'
8
8
 
9
9
  # -----------------------------------------------------------------------------
10
10
 
@@ -60,6 +60,9 @@ class alpaca(Exchange, ImplicitAPI):
60
60
  'cancelOrder': True,
61
61
  'closeAllPositions': False,
62
62
  'closePosition': False,
63
+ 'createMarketBuyOrder': True,
64
+ 'createMarketBuyOrderWithCost': True,
65
+ 'createMarketOrderWithCost': True,
63
66
  'createOrder': True,
64
67
  'createStopOrder': True,
65
68
  'createTriggerOrder': True,
@@ -442,7 +445,7 @@ class alpaca(Exchange, ImplicitAPI):
442
445
  # "status": "active",
443
446
  # "tradable": True,
444
447
  # "marginable": False,
445
- # "maintenance_margin_requirement": 100,
448
+ # "maintenance_margin_requirement": 101,
446
449
  # "shortable": False,
447
450
  # "easy_to_borrow": False,
448
451
  # "fractionable": True,
@@ -905,6 +908,58 @@ class alpaca(Exchange, ImplicitAPI):
905
908
  clientOrderId = self.safe_string(params, 'clientOrderId', defaultClientId)
906
909
  return clientOrderId
907
910
 
911
+ async def create_market_order_with_cost(self, symbol: str, side: OrderSide, cost: float, params={}):
912
+ """
913
+ create a market order by providing the symbol, side and cost
914
+
915
+ https://docs.alpaca.markets/reference/postorder
916
+
917
+ :param str symbol: unified symbol of the market to create an order in
918
+ :param str side: 'buy' or 'sell'
919
+ :param float cost: how much you want to trade in units of the quote currency
920
+ :param dict [params]: extra parameters specific to the exchange API endpoint
921
+ :returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
922
+ """
923
+ await self.load_markets()
924
+ req = {
925
+ 'cost': cost,
926
+ }
927
+ return await self.create_order(symbol, 'market', side, 0, None, self.extend(req, params))
928
+
929
+ async def create_market_buy_order_with_cost(self, symbol: str, cost: float, params={}):
930
+ """
931
+ create a market buy order by providing the symbol and cost
932
+
933
+ https://docs.alpaca.markets/reference/postorder
934
+
935
+ :param str symbol: unified symbol of the market to create an order in
936
+ :param float cost: how much you want to trade in units of the quote currency
937
+ :param dict [params]: extra parameters specific to the exchange API endpoint
938
+ :returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
939
+ """
940
+ await self.load_markets()
941
+ req = {
942
+ 'cost': cost,
943
+ }
944
+ return await self.create_order(symbol, 'market', 'buy', 0, None, self.extend(req, params))
945
+
946
+ async def create_market_sell_order_with_cost(self, symbol: str, cost: float, params={}):
947
+ """
948
+ create a market sell order by providing the symbol and cost
949
+
950
+ https://docs.alpaca.markets/reference/postorder
951
+
952
+ :param str symbol: unified symbol of the market to create an order in
953
+ :param float cost: how much you want to trade in units of the quote currency
954
+ :param dict [params]: extra parameters specific to the exchange API endpoint
955
+ :returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
956
+ """
957
+ await self.load_markets()
958
+ req = {
959
+ 'cost': cost,
960
+ }
961
+ return await self.create_order(symbol, 'market', 'sell', cost, None, self.extend(req, params))
962
+
908
963
  async def create_order(self, symbol: str, type: OrderType, side: OrderSide, amount: float, price: Num = None, params={}):
909
964
  """
910
965
  create a trade order
@@ -918,6 +973,7 @@ class alpaca(Exchange, ImplicitAPI):
918
973
  :param float [price]: the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
919
974
  :param dict [params]: extra parameters specific to the exchange API endpoint
920
975
  :param float [params.triggerPrice]: The price at which a trigger order is triggered at
976
+ :param float [params.cost]: *market orders only* the cost of the order in units of the quote currency
921
977
  :returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
922
978
  """
923
979
  await self.load_markets()
@@ -925,7 +981,6 @@ class alpaca(Exchange, ImplicitAPI):
925
981
  id = market['id']
926
982
  request: dict = {
927
983
  'symbol': id,
928
- 'qty': self.amount_to_precision(symbol, amount),
929
984
  'side': side,
930
985
  'type': type, # market, limit, stop_limit
931
986
  }
@@ -940,6 +995,12 @@ class alpaca(Exchange, ImplicitAPI):
940
995
  request['type'] = newType
941
996
  if type.find('limit') >= 0:
942
997
  request['limit_price'] = self.price_to_precision(symbol, price)
998
+ cost = self.safe_string(params, 'cost')
999
+ if cost is not None:
1000
+ params = self.omit(params, 'cost')
1001
+ request['notional'] = self.cost_to_precision(symbol, cost)
1002
+ else:
1003
+ request['qty'] = self.amount_to_precision(symbol, amount)
943
1004
  defaultTIF = self.safe_string(self.options, 'defaultTimeInForce')
944
1005
  request['time_in_force'] = self.safe_string(params, 'timeInForce', defaultTIF)
945
1006
  params = self.omit(params, ['timeInForce', 'triggerPrice'])
@@ -2,7 +2,7 @@
2
2
 
3
3
  # -----------------------------------------------------------------------------
4
4
 
5
- __version__ = '4.4.49'
5
+ __version__ = '4.4.51'
6
6
 
7
7
  # -----------------------------------------------------------------------------
8
8
 
@@ -503,6 +503,7 @@ class binance(Exchange, ImplicitAPI):
503
503
  'portfolio/repay-futures-switch': 3, # Weight(IP): 30 => cost = 0.1 * 30 = 3
504
504
  'portfolio/margin-asset-leverage': 5, # Weight(IP): 50 => cost = 0.1 * 50 = 5
505
505
  'portfolio/balance': 2,
506
+ 'portfolio/negative-balance-exchange-record': 2,
506
507
  # staking
507
508
  'staking/productList': 0.1,
508
509
  'staking/position': 0.1,
@@ -1599,7 +1600,7 @@ class binance(Exchange, ImplicitAPI):
1599
1600
  'triggerDirection': False,
1600
1601
  'stopLossPrice': True,
1601
1602
  'takeProfitPrice': True,
1602
- 'attachedStopLossTakeProfit': None, # not supported
1603
+ 'attachedStopLossTakeProfit': None,
1603
1604
  'timeInForce': {
1604
1605
  'IOC': True,
1605
1606
  'FOK': True,
@@ -1608,12 +1609,16 @@ class binance(Exchange, ImplicitAPI):
1608
1609
  },
1609
1610
  'hedged': True,
1610
1611
  'leverage': False,
1611
- 'marketBuyRequiresPrice': False,
1612
1612
  'marketBuyByCost': True,
1613
- # exchange-supported features
1614
- 'selfTradePrevention': True, # todo
1615
- 'trailing': True,
1616
- 'iceberg': True, # todo implementation
1613
+ 'marketBuyRequiresPrice': False,
1614
+ 'selfTradePrevention': {
1615
+ 'expire_maker': True,
1616
+ 'expire_taker': True,
1617
+ 'expire_both': True,
1618
+ 'none': True,
1619
+ },
1620
+ 'trailing': False, # todo: self is different from standard trailing https://github.com/binance/binance-spot-api-docs/blob/master/faqs/trailing-stop-faq.md
1621
+ 'icebergAmount': True,
1617
1622
  },
1618
1623
  'createOrders': None,
1619
1624
  'fetchMyTrades': {
@@ -1654,7 +1659,7 @@ class binance(Exchange, ImplicitAPI):
1654
1659
  'limit': 1000,
1655
1660
  },
1656
1661
  },
1657
- 'default': {
1662
+ 'forDerivatives': {
1658
1663
  'sandbox': True,
1659
1664
  'createOrder': {
1660
1665
  'marginMode': False,
@@ -1726,18 +1731,18 @@ class binance(Exchange, ImplicitAPI):
1726
1731
  },
1727
1732
  'swap': {
1728
1733
  'linear': {
1729
- 'extends': 'default',
1734
+ 'extends': 'forDerivatives',
1730
1735
  },
1731
1736
  'inverse': {
1732
- 'extends': 'default',
1737
+ 'extends': 'forDerivatives',
1733
1738
  },
1734
1739
  },
1735
1740
  'future': {
1736
1741
  'linear': {
1737
- 'extends': 'default',
1742
+ 'extends': 'forDerivatives',
1738
1743
  },
1739
1744
  'inverse': {
1740
- 'extends': 'default',
1745
+ 'extends': 'forDerivatives',
1741
1746
  },
1742
1747
  },
1743
1748
  },
@@ -4401,12 +4406,11 @@ class binance(Exchange, ImplicitAPI):
4401
4406
  type = 'spot' if (timestamp is None) else 'swap'
4402
4407
  marketId = self.safe_string(entry, 'symbol')
4403
4408
  market = self.safe_market(marketId, market, None, type)
4404
- price = self.safe_number(entry, 'price')
4405
4409
  return {
4406
4410
  'symbol': market['symbol'],
4407
4411
  'timestamp': timestamp,
4408
4412
  'datetime': self.iso8601(timestamp),
4409
- 'price': price,
4413
+ 'price': self.safe_number_omit_zero(entry, 'price'),
4410
4414
  'side': None,
4411
4415
  'info': entry,
4412
4416
  }
@@ -5001,11 +5005,13 @@ class binance(Exchange, ImplicitAPI):
5001
5005
  until = self.safe_integer(params, 'until')
5002
5006
  if until is not None:
5003
5007
  request['endTime'] = until
5004
- if limit is not None:
5005
- isFutureOrSwap = (market['swap'] or market['future'])
5006
- request['limit'] = min(limit, 1000) if isFutureOrSwap else limit # default = 500, maximum = 1000
5007
5008
  method = self.safe_string(self.options, 'fetchTradesMethod')
5008
5009
  method = self.safe_string_2(params, 'fetchTradesMethod', 'method', method)
5010
+ if limit is not None:
5011
+ isFutureOrSwap = (market['swap'] or market['future'])
5012
+ isHistoricalEndpoint = (method is not None) and (method.find('GetHistoricalTrades') >= 0)
5013
+ maxLimitForContractHistorical = 500 if isHistoricalEndpoint else 1000
5014
+ request['limit'] = min(limit, maxLimitForContractHistorical) if isFutureOrSwap else limit # default = 500, maximum = 1000
5009
5015
  params = self.omit(params, ['until', 'fetchTradesMethod'])
5010
5016
  response = None
5011
5017
  if market['option'] or method == 'eapiPublicGetTrades':
@@ -6019,7 +6025,7 @@ class binance(Exchange, ImplicitAPI):
6019
6025
  """
6020
6026
  create a trade order
6021
6027
 
6022
- https://developers.binance.com/docs/binance-spot-api-docs/rest-api/public-api-endpoints#new-order-trade
6028
+ https://developers.binance.com/docs/binance-spot-api-docs/rest-api/trading-endpoints#new-order-trade
6023
6029
  https://developers.binance.com/docs/binance-spot-api-docs/rest-api/public-api-endpoints#test-new-order-trade
6024
6030
  https://developers.binance.com/docs/derivatives/usds-margined-futures/trade/rest-api/New-Order
6025
6031
  https://developers.binance.com/docs/derivatives/coin-margined-futures/trade/New-Order
@@ -6048,6 +6054,8 @@ class binance(Exchange, ImplicitAPI):
6048
6054
  :param float [params.stopLossPrice]: the price that a stop loss order is triggered at
6049
6055
  :param float [params.takeProfitPrice]: the price that a take profit order is triggered at
6050
6056
  :param boolean [params.portfolioMargin]: set to True if you would like to create an order in a portfolio margin account
6057
+ :param str [params.selfTradePrevention]: set unified value for stp(see .features for available values)
6058
+ :param float [params.icebergAmount]: set iceberg amount for limit orders
6051
6059
  :param str [params.stopLossOrTakeProfit]: 'stopLoss' or 'takeProfit', required for spot trailing orders
6052
6060
  :param str [params.positionSide]: *swap and portfolio margin only* "BOTH" for one-way mode, "LONG" for buy side of hedged mode, "SHORT" for sell side of hedged mode
6053
6061
  :param bool [params.hedged]: *swap and portfolio margin only* True for hedged mode, False for one way mode, default is False
@@ -6341,7 +6349,7 @@ class binance(Exchange, ImplicitAPI):
6341
6349
  if stopPrice is not None:
6342
6350
  request['stopPrice'] = self.price_to_precision(symbol, stopPrice)
6343
6351
  if timeInForceIsRequired and (self.safe_string(params, 'timeInForce') is None) and (self.safe_string(request, 'timeInForce') is None):
6344
- request['timeInForce'] = self.options['defaultTimeInForce'] # 'GTC' = Good To Cancel(default), 'IOC' = Immediate Or Cancel
6352
+ request['timeInForce'] = self.safe_string(self.options, 'defaultTimeInForce') # 'GTC' = Good To Cancel(default), 'IOC' = Immediate Or Cancel
6345
6353
  if not isPortfolioMargin and market['contract'] and postOnly:
6346
6354
  request['timeInForce'] = 'GTX'
6347
6355
  # remove timeInForce from params because PO is only used by self.is_post_only and it's not a valid value for Binance
@@ -6353,7 +6361,17 @@ class binance(Exchange, ImplicitAPI):
6353
6361
  params = self.omit(params, 'reduceOnly')
6354
6362
  side = 'sell' if (side == 'buy') else 'buy'
6355
6363
  request['positionSide'] = 'LONG' if (side == 'buy') else 'SHORT'
6356
- requestParams = self.omit(params, ['type', 'newClientOrderId', 'clientOrderId', 'postOnly', 'stopLossPrice', 'takeProfitPrice', 'stopPrice', 'triggerPrice', 'trailingTriggerPrice', 'trailingPercent', 'quoteOrderQty', 'cost', 'test', 'hedged'])
6364
+ # unified stp
6365
+ selfTradePrevention = self.safe_string(params, 'selfTradePrevention')
6366
+ if selfTradePrevention is not None:
6367
+ if market['spot']:
6368
+ request['selfTradePreventionMode'] = selfTradePrevention.upper() # binance enums exactly match the unified ccxt enums(but needs uppercase)
6369
+ # unified iceberg
6370
+ icebergAmount = self.safe_number(params, 'icebergAmount')
6371
+ if icebergAmount is not None:
6372
+ if market['spot']:
6373
+ request['icebergQty'] = self.amount_to_precision(symbol, icebergAmount)
6374
+ requestParams = self.omit(params, ['type', 'newClientOrderId', 'clientOrderId', 'postOnly', 'stopLossPrice', 'takeProfitPrice', 'stopPrice', 'triggerPrice', 'trailingTriggerPrice', 'trailingPercent', 'quoteOrderQty', 'cost', 'test', 'hedged', 'selfTradePrevention', 'icebergAmount'])
6357
6375
  return self.extend(request, requestParams)
6358
6376
 
6359
6377
  async def create_market_order_with_cost(self, symbol: str, side: OrderSide, cost: float, params={}):
@@ -6837,6 +6855,7 @@ class binance(Exchange, ImplicitAPI):
6837
6855
  :param str symbol: unified market symbol
6838
6856
  :param dict [params]: extra parameters specific to the exchange API endpoint
6839
6857
  :param str [params.trigger]: set to True if you would like to fetch portfolio margin account stop or conditional orders
6858
+ :param boolean [params.portfolioMargin]: set to True if you would like to fetch for a portfolio margin account
6840
6859
  :returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
6841
6860
  """
6842
6861
  if symbol is None:
@@ -10159,7 +10178,7 @@ class binance(Exchange, ImplicitAPI):
10159
10178
  # }
10160
10179
  #
10161
10180
  marketId = self.safe_string(position, 'symbol')
10162
- market = self.safe_market(marketId, market)
10181
+ market = self.safe_market(marketId, market, None, 'swap')
10163
10182
  symbol = market['symbol']
10164
10183
  side = self.safe_string_lower(position, 'side')
10165
10184
  quantity = self.safe_string(position, 'quantity')
@@ -166,6 +166,9 @@ class blofin(Exchange, ImplicitAPI):
166
166
  'api': {
167
167
  'rest': 'https://openapi.blofin.com',
168
168
  },
169
+ 'test': {
170
+ 'rest': 'https://demo-trading-openapi.blofin.com',
171
+ },
169
172
  'referral': {
170
173
  'url': 'https://blofin.com/register?referral_code=f79EsS',
171
174
  'discount': 0.05,
@@ -295,7 +298,7 @@ class blofin(Exchange, ImplicitAPI):
295
298
  'trailing': False,
296
299
  },
297
300
  'fetchOHLCV': {
298
- 'max': 1440,
301
+ 'limit': 1440,
299
302
  },
300
303
  },
301
304
  'spot': {
@@ -323,6 +326,7 @@ class blofin(Exchange, ImplicitAPI):
323
326
  'attachedStopLossTakeProfit': {
324
327
  'triggerPriceType': None,
325
328
  'limit': True,
329
+ 'price': None,
326
330
  },
327
331
  'hedged': True,
328
332
  },
@@ -481,7 +481,7 @@ class coinex(Exchange, ImplicitAPI):
481
481
  'ERC20': 'ERC20',
482
482
  'BRC20': 'BRC20',
483
483
  'SOL': 'SOL',
484
- 'TON': 'SOL',
484
+ 'TON': 'TON',
485
485
  'BSV': 'BSV',
486
486
  'AVAXC': 'AVA_C',
487
487
  'AVAXX': 'AVA',
@@ -3767,7 +3767,7 @@ class coinex(Exchange, ImplicitAPI):
3767
3767
  'currency': self.safe_currency_code(None, currency),
3768
3768
  'network': None,
3769
3769
  'address': address,
3770
- 'tag': tag,
3770
+ 'tag': self.safe_string(depositAddress, 'memo', tag),
3771
3771
  }
3772
3772
 
3773
3773
  async def fetch_my_trades(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
@@ -4609,13 +4609,13 @@ class coinex(Exchange, ImplicitAPI):
4609
4609
  self.check_address(address)
4610
4610
  await self.load_markets()
4611
4611
  currency = self.currency(code)
4612
- if tag:
4613
- address = address + ':' + tag
4614
4612
  request: dict = {
4615
4613
  'ccy': currency['id'],
4616
4614
  'to_address': address, # must be authorized, inter-user transfer by a registered mobile phone number or an email address is supported
4617
4615
  'amount': self.number_to_string(amount), # the actual amount without fees, https://www.coinex.com/fees
4618
4616
  }
4617
+ if tag is not None:
4618
+ request['memo'] = tag
4619
4619
  networkCode = None
4620
4620
  networkCode, params = self.handle_network_code_and_params(params)
4621
4621
  if networkCode is not None:
@@ -219,7 +219,7 @@ class coinmetro(Exchange, ImplicitAPI):
219
219
  # exchange-specific options
220
220
  'options': {
221
221
  'currenciesByIdForParseMarket': None,
222
- 'currencyIdsListForParseMarket': None,
222
+ 'currencyIdsListForParseMarket': ['QRDO'],
223
223
  },
224
224
  'features': {
225
225
  'spot': {
@@ -407,7 +407,11 @@ class coinmetro(Exchange, ImplicitAPI):
407
407
  if self.safe_value(self.options, 'currenciesByIdForParseMarket') is None:
408
408
  currenciesById = self.index_by(result, 'id')
409
409
  self.options['currenciesByIdForParseMarket'] = currenciesById
410
- self.options['currencyIdsListForParseMarket'] = list(currenciesById.keys())
410
+ currentCurrencyIdsList = self.safe_list(self.options, 'currencyIdsListForParseMarket', [])
411
+ currencyIdsList = list(currenciesById.keys())
412
+ for i in range(0, len(currencyIdsList)):
413
+ currentCurrencyIdsList.append(currencyIdsList[i])
414
+ self.options['currencyIdsListForParseMarket'] = currentCurrencyIdsList
411
415
  return result
412
416
 
413
417
  async def fetch_markets(self, params={}) -> List[Market]:
@@ -506,10 +510,19 @@ class coinmetro(Exchange, ImplicitAPI):
506
510
  baseId = None
507
511
  quoteId = None
508
512
  currencyIds = self.safe_value(self.options, 'currencyIdsListForParseMarket', [])
513
+ # Bubble sort by length(longest first)
514
+ currencyIdsLength = len(currencyIds)
515
+ for i in range(0, currencyIdsLength):
516
+ for j in range(0, currencyIdsLength - i - 1):
517
+ a = currencyIds[j]
518
+ b = currencyIds[j + 1]
519
+ if len(a) < len(b):
520
+ currencyIds[j] = b
521
+ currencyIds[j + 1] = a
509
522
  for i in range(0, len(currencyIds)):
510
523
  currencyId = currencyIds[i]
511
524
  entryIndex = marketId.find(currencyId)
512
- if entryIndex != -1:
525
+ if entryIndex == 0:
513
526
  restId = marketId.replace(currencyId, '')
514
527
  if self.in_array(restId, currencyIds):
515
528
  if entryIndex == 0:
@@ -3063,7 +3063,7 @@ class deribit(Exchange, ImplicitAPI):
3063
3063
  :param int [since]: the earliest time in ms to fetch funding rate history for
3064
3064
  :param int [limit]: the maximum number of entries to retrieve
3065
3065
  :param dict [params]: extra parameters specific to the exchange API endpoint
3066
- :param int [params.end_timestamp]: fetch funding rate ending at self timestamp
3066
+ :param int [params.until]: fetch funding rate ending at self timestamp
3067
3067
  :param boolean [params.paginate]: default False, when True will automatically paginate by calling self endpoint multiple times. See in the docs all the [availble parameters](https://github.com/ccxt/ccxt/wiki/Manual#pagination-params)
3068
3068
  :returns dict: a `funding rate structure <https://docs.ccxt.com/#/?id=funding-rate-structure>`
3069
3069
  """
@@ -3072,16 +3072,24 @@ class deribit(Exchange, ImplicitAPI):
3072
3072
  paginate = False
3073
3073
  paginate, params = self.handle_option_and_params(params, 'fetchFundingRateHistory', 'paginate')
3074
3074
  if paginate:
3075
- return await self.fetch_paginated_call_deterministic('fetchFundingRateHistory', symbol, since, limit, '8h', params, 720)
3075
+ # 1h needed to fix : https://github.com/ccxt/ccxt/issues/25040
3076
+ return await self.fetch_paginated_call_deterministic('fetchFundingRateHistory', symbol, since, limit, '1h', params, 720)
3076
3077
  time = self.milliseconds()
3077
3078
  month = 30 * 24 * 60 * 60 * 1000
3078
3079
  if since is None:
3079
3080
  since = time - month
3081
+ else:
3082
+ time = since + month
3080
3083
  request: dict = {
3081
3084
  'instrument_name': market['id'],
3082
3085
  'start_timestamp': since - 1,
3083
- 'end_timestamp': time,
3084
3086
  }
3087
+ until = self.safe_integer_2(params, 'until', 'end_timestamp')
3088
+ if until is not None:
3089
+ params = self.omit(params, ['until'])
3090
+ request['end_timestamp'] = until
3091
+ else:
3092
+ request['end_timestamp'] = time
3085
3093
  response = await self.publicGetGetFundingRateHistory(self.extend(request, params))
3086
3094
  #
3087
3095
  # {