ccxt 4.4.67__tar.gz → 4.4.68__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 (673) hide show
  1. {ccxt-4.4.67/ccxt.egg-info → ccxt-4.4.68}/PKG-INFO +6 -6
  2. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/__init__.py +1 -1
  3. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/tradeogre.py +1 -1
  4. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/__init__.py +1 -1
  5. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/base/exchange.py +6 -5
  6. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/bitrue.py +1 -1
  7. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/bybit.py +1 -1
  8. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/coinbase.py +73 -2
  9. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/luno.py +113 -1
  10. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/tradeogre.py +7 -6
  11. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/base/exchange.py +6 -4
  12. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/bitrue.py +1 -1
  13. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/bybit.py +1 -1
  14. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/coinbase.py +73 -2
  15. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/luno.py +113 -1
  16. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/pro/__init__.py +1 -1
  17. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/tradeogre.py +7 -6
  18. {ccxt-4.4.67 → ccxt-4.4.68/ccxt.egg-info}/PKG-INFO +6 -6
  19. {ccxt-4.4.67 → ccxt-4.4.68}/package.json +4 -4
  20. {ccxt-4.4.67 → ccxt-4.4.68}/LICENSE.txt +0 -0
  21. {ccxt-4.4.67 → ccxt-4.4.68}/MANIFEST.in +0 -0
  22. {ccxt-4.4.67 → ccxt-4.4.68}/README.rst +0 -0
  23. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/__init__.py +0 -0
  24. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/ace.py +0 -0
  25. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/alpaca.py +0 -0
  26. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/ascendex.py +0 -0
  27. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/bequant.py +0 -0
  28. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/bigone.py +0 -0
  29. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/binance.py +0 -0
  30. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/binancecoinm.py +0 -0
  31. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/binanceus.py +0 -0
  32. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/binanceusdm.py +0 -0
  33. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/bingx.py +0 -0
  34. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/bit2c.py +0 -0
  35. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/bitbank.py +0 -0
  36. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/bitbns.py +0 -0
  37. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/bitcoincom.py +0 -0
  38. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/bitfinex.py +0 -0
  39. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/bitfinex1.py +0 -0
  40. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/bitflyer.py +0 -0
  41. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/bitget.py +0 -0
  42. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/bithumb.py +0 -0
  43. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/bitmart.py +0 -0
  44. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/bitmex.py +0 -0
  45. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/bitopro.py +0 -0
  46. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/bitpanda.py +0 -0
  47. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/bitrue.py +0 -0
  48. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/bitso.py +0 -0
  49. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/bitstamp.py +0 -0
  50. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/bitteam.py +0 -0
  51. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/bitvavo.py +0 -0
  52. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/bl3p.py +0 -0
  53. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/blockchaincom.py +0 -0
  54. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/blofin.py +0 -0
  55. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/btcalpha.py +0 -0
  56. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/btcbox.py +0 -0
  57. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/btcmarkets.py +0 -0
  58. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/btcturk.py +0 -0
  59. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/bybit.py +0 -0
  60. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/cex.py +0 -0
  61. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/coinbase.py +0 -0
  62. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/coinbaseadvanced.py +0 -0
  63. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/coinbaseexchange.py +0 -0
  64. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/coinbaseinternational.py +0 -0
  65. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/coincatch.py +0 -0
  66. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/coincheck.py +0 -0
  67. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/coinex.py +0 -0
  68. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/coinlist.py +0 -0
  69. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/coinmate.py +0 -0
  70. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/coinmetro.py +0 -0
  71. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/coinone.py +0 -0
  72. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/coinsph.py +0 -0
  73. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/coinspot.py +0 -0
  74. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/cryptocom.py +0 -0
  75. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/cryptomus.py +0 -0
  76. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/defx.py +0 -0
  77. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/delta.py +0 -0
  78. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/deribit.py +0 -0
  79. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/derive.py +0 -0
  80. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/digifinex.py +0 -0
  81. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/ellipx.py +0 -0
  82. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/exmo.py +0 -0
  83. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/fmfwio.py +0 -0
  84. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/gate.py +0 -0
  85. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/gateio.py +0 -0
  86. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/gemini.py +0 -0
  87. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/hashkey.py +0 -0
  88. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/hitbtc.py +0 -0
  89. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/hollaex.py +0 -0
  90. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/htx.py +0 -0
  91. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/huobi.py +0 -0
  92. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/huobijp.py +0 -0
  93. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/hyperliquid.py +0 -0
  94. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/idex.py +0 -0
  95. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/independentreserve.py +0 -0
  96. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/indodax.py +0 -0
  97. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/kraken.py +0 -0
  98. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/krakenfutures.py +0 -0
  99. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/kucoin.py +0 -0
  100. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/kucoinfutures.py +0 -0
  101. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/kuna.py +0 -0
  102. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/latoken.py +0 -0
  103. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/lbank.py +0 -0
  104. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/luno.py +0 -0
  105. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/mercado.py +0 -0
  106. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/mexc.py +0 -0
  107. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/myokx.py +0 -0
  108. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/ndax.py +0 -0
  109. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/novadax.py +0 -0
  110. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/oceanex.py +0 -0
  111. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/okcoin.py +0 -0
  112. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/okx.py +0 -0
  113. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/onetrading.py +0 -0
  114. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/oxfun.py +0 -0
  115. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/p2b.py +0 -0
  116. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/paradex.py +0 -0
  117. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/paymium.py +0 -0
  118. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/phemex.py +0 -0
  119. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/poloniex.py +0 -0
  120. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/poloniexfutures.py +0 -0
  121. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/probit.py +0 -0
  122. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/timex.py +0 -0
  123. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/tokocrypto.py +0 -0
  124. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/upbit.py +0 -0
  125. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/vertex.py +0 -0
  126. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/wavesexchange.py +0 -0
  127. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/whitebit.py +0 -0
  128. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/woo.py +0 -0
  129. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/woofipro.py +0 -0
  130. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/xt.py +0 -0
  131. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/yobit.py +0 -0
  132. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/zaif.py +0 -0
  133. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/abstract/zonda.py +0 -0
  134. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/ace.py +0 -0
  135. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/alpaca.py +0 -0
  136. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/ascendex.py +0 -0
  137. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/ace.py +0 -0
  138. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/alpaca.py +0 -0
  139. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/ascendex.py +0 -0
  140. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/base/__init__.py +0 -0
  141. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/base/throttler.py +0 -0
  142. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/base/ws/__init__.py +0 -0
  143. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/base/ws/aiohttp_client.py +0 -0
  144. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/base/ws/cache.py +0 -0
  145. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/base/ws/client.py +0 -0
  146. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/base/ws/fast_client.py +0 -0
  147. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/base/ws/functions.py +0 -0
  148. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/base/ws/future.py +0 -0
  149. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/base/ws/order_book.py +0 -0
  150. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/base/ws/order_book_side.py +0 -0
  151. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/bequant.py +0 -0
  152. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/bigone.py +0 -0
  153. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/binance.py +0 -0
  154. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/binancecoinm.py +0 -0
  155. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/binanceus.py +0 -0
  156. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/binanceusdm.py +0 -0
  157. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/bingx.py +0 -0
  158. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/bit2c.py +0 -0
  159. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/bitbank.py +0 -0
  160. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/bitbns.py +0 -0
  161. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/bitcoincom.py +0 -0
  162. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/bitfinex.py +0 -0
  163. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/bitfinex1.py +0 -0
  164. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/bitflyer.py +0 -0
  165. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/bitget.py +0 -0
  166. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/bithumb.py +0 -0
  167. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/bitmart.py +0 -0
  168. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/bitmex.py +0 -0
  169. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/bitopro.py +0 -0
  170. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/bitpanda.py +0 -0
  171. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/bitso.py +0 -0
  172. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/bitstamp.py +0 -0
  173. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/bitteam.py +0 -0
  174. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/bitvavo.py +0 -0
  175. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/bl3p.py +0 -0
  176. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/blockchaincom.py +0 -0
  177. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/blofin.py +0 -0
  178. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/btcalpha.py +0 -0
  179. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/btcbox.py +0 -0
  180. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/btcmarkets.py +0 -0
  181. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/btcturk.py +0 -0
  182. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/cex.py +0 -0
  183. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/coinbaseadvanced.py +0 -0
  184. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/coinbaseexchange.py +0 -0
  185. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/coinbaseinternational.py +0 -0
  186. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/coincatch.py +0 -0
  187. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/coincheck.py +0 -0
  188. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/coinex.py +0 -0
  189. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/coinlist.py +0 -0
  190. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/coinmate.py +0 -0
  191. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/coinmetro.py +0 -0
  192. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/coinone.py +0 -0
  193. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/coinsph.py +0 -0
  194. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/coinspot.py +0 -0
  195. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/cryptocom.py +0 -0
  196. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/cryptomus.py +0 -0
  197. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/defx.py +0 -0
  198. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/delta.py +0 -0
  199. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/deribit.py +0 -0
  200. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/derive.py +0 -0
  201. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/digifinex.py +0 -0
  202. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/ellipx.py +0 -0
  203. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/exmo.py +0 -0
  204. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/fmfwio.py +0 -0
  205. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/gate.py +0 -0
  206. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/gateio.py +0 -0
  207. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/gemini.py +0 -0
  208. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/hashkey.py +0 -0
  209. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/hitbtc.py +0 -0
  210. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/hollaex.py +0 -0
  211. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/htx.py +0 -0
  212. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/huobi.py +0 -0
  213. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/huobijp.py +0 -0
  214. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/hyperliquid.py +0 -0
  215. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/idex.py +0 -0
  216. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/independentreserve.py +0 -0
  217. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/indodax.py +0 -0
  218. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/kraken.py +0 -0
  219. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/krakenfutures.py +0 -0
  220. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/kucoin.py +0 -0
  221. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/kucoinfutures.py +0 -0
  222. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/kuna.py +0 -0
  223. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/latoken.py +0 -0
  224. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/lbank.py +0 -0
  225. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/mercado.py +0 -0
  226. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/mexc.py +0 -0
  227. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/myokx.py +0 -0
  228. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/ndax.py +0 -0
  229. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/novadax.py +0 -0
  230. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/oceanex.py +0 -0
  231. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/okcoin.py +0 -0
  232. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/okx.py +0 -0
  233. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/onetrading.py +0 -0
  234. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/oxfun.py +0 -0
  235. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/p2b.py +0 -0
  236. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/paradex.py +0 -0
  237. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/paymium.py +0 -0
  238. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/phemex.py +0 -0
  239. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/poloniex.py +0 -0
  240. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/poloniexfutures.py +0 -0
  241. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/probit.py +0 -0
  242. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/timex.py +0 -0
  243. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/tokocrypto.py +0 -0
  244. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/upbit.py +0 -0
  245. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/vertex.py +0 -0
  246. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/wavesexchange.py +0 -0
  247. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/whitebit.py +0 -0
  248. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/woo.py +0 -0
  249. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/woofipro.py +0 -0
  250. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/xt.py +0 -0
  251. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/yobit.py +0 -0
  252. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/zaif.py +0 -0
  253. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/async_support/zonda.py +0 -0
  254. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/base/__init__.py +0 -0
  255. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/base/decimal_to_precision.py +0 -0
  256. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/base/errors.py +0 -0
  257. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/base/precise.py +0 -0
  258. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/base/types.py +0 -0
  259. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/bequant.py +0 -0
  260. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/bigone.py +0 -0
  261. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/binance.py +0 -0
  262. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/binancecoinm.py +0 -0
  263. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/binanceus.py +0 -0
  264. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/binanceusdm.py +0 -0
  265. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/bingx.py +0 -0
  266. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/bit2c.py +0 -0
  267. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/bitbank.py +0 -0
  268. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/bitbns.py +0 -0
  269. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/bitcoincom.py +0 -0
  270. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/bitfinex.py +0 -0
  271. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/bitfinex1.py +0 -0
  272. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/bitflyer.py +0 -0
  273. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/bitget.py +0 -0
  274. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/bithumb.py +0 -0
  275. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/bitmart.py +0 -0
  276. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/bitmex.py +0 -0
  277. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/bitopro.py +0 -0
  278. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/bitpanda.py +0 -0
  279. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/bitso.py +0 -0
  280. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/bitstamp.py +0 -0
  281. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/bitteam.py +0 -0
  282. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/bitvavo.py +0 -0
  283. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/bl3p.py +0 -0
  284. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/blockchaincom.py +0 -0
  285. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/blofin.py +0 -0
  286. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/btcalpha.py +0 -0
  287. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/btcbox.py +0 -0
  288. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/btcmarkets.py +0 -0
  289. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/btcturk.py +0 -0
  290. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/cex.py +0 -0
  291. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/coinbaseadvanced.py +0 -0
  292. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/coinbaseexchange.py +0 -0
  293. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/coinbaseinternational.py +0 -0
  294. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/coincatch.py +0 -0
  295. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/coincheck.py +0 -0
  296. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/coinex.py +0 -0
  297. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/coinlist.py +0 -0
  298. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/coinmate.py +0 -0
  299. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/coinmetro.py +0 -0
  300. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/coinone.py +0 -0
  301. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/coinsph.py +0 -0
  302. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/coinspot.py +0 -0
  303. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/cryptocom.py +0 -0
  304. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/cryptomus.py +0 -0
  305. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/defx.py +0 -0
  306. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/delta.py +0 -0
  307. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/deribit.py +0 -0
  308. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/derive.py +0 -0
  309. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/digifinex.py +0 -0
  310. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/ellipx.py +0 -0
  311. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/exmo.py +0 -0
  312. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/fmfwio.py +0 -0
  313. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/gate.py +0 -0
  314. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/gateio.py +0 -0
  315. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/gemini.py +0 -0
  316. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/hashkey.py +0 -0
  317. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/hitbtc.py +0 -0
  318. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/hollaex.py +0 -0
  319. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/htx.py +0 -0
  320. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/huobi.py +0 -0
  321. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/huobijp.py +0 -0
  322. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/hyperliquid.py +0 -0
  323. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/idex.py +0 -0
  324. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/independentreserve.py +0 -0
  325. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/indodax.py +0 -0
  326. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/kraken.py +0 -0
  327. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/krakenfutures.py +0 -0
  328. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/kucoin.py +0 -0
  329. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/kucoinfutures.py +0 -0
  330. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/kuna.py +0 -0
  331. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/latoken.py +0 -0
  332. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/lbank.py +0 -0
  333. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/mercado.py +0 -0
  334. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/mexc.py +0 -0
  335. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/myokx.py +0 -0
  336. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/ndax.py +0 -0
  337. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/novadax.py +0 -0
  338. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/oceanex.py +0 -0
  339. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/okcoin.py +0 -0
  340. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/okx.py +0 -0
  341. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/onetrading.py +0 -0
  342. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/oxfun.py +0 -0
  343. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/p2b.py +0 -0
  344. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/paradex.py +0 -0
  345. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/paymium.py +0 -0
  346. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/phemex.py +0 -0
  347. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/poloniex.py +0 -0
  348. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/poloniexfutures.py +0 -0
  349. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/pro/alpaca.py +0 -0
  350. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/pro/ascendex.py +0 -0
  351. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/pro/bequant.py +0 -0
  352. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/pro/binance.py +0 -0
  353. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/pro/binancecoinm.py +0 -0
  354. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/pro/binanceus.py +0 -0
  355. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/pro/binanceusdm.py +0 -0
  356. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/pro/bingx.py +0 -0
  357. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/pro/bitcoincom.py +0 -0
  358. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/pro/bitfinex.py +0 -0
  359. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/pro/bitfinex1.py +0 -0
  360. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/pro/bitget.py +0 -0
  361. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/pro/bithumb.py +0 -0
  362. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/pro/bitmart.py +0 -0
  363. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/pro/bitmex.py +0 -0
  364. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/pro/bitopro.py +0 -0
  365. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/pro/bitpanda.py +0 -0
  366. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/pro/bitrue.py +0 -0
  367. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/pro/bitstamp.py +0 -0
  368. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/pro/bitvavo.py +0 -0
  369. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/pro/blockchaincom.py +0 -0
  370. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/pro/blofin.py +0 -0
  371. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/pro/bybit.py +0 -0
  372. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/pro/cex.py +0 -0
  373. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/pro/coinbase.py +0 -0
  374. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/pro/coinbaseadvanced.py +0 -0
  375. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/pro/coinbaseexchange.py +0 -0
  376. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/pro/coinbaseinternational.py +0 -0
  377. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/pro/coincatch.py +0 -0
  378. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/pro/coincheck.py +0 -0
  379. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/pro/coinex.py +0 -0
  380. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/pro/coinone.py +0 -0
  381. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/pro/cryptocom.py +0 -0
  382. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/pro/defx.py +0 -0
  383. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/pro/deribit.py +0 -0
  384. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/pro/derive.py +0 -0
  385. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/pro/exmo.py +0 -0
  386. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/pro/gate.py +0 -0
  387. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/pro/gateio.py +0 -0
  388. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/pro/gemini.py +0 -0
  389. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/pro/hashkey.py +0 -0
  390. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/pro/hitbtc.py +0 -0
  391. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/pro/hollaex.py +0 -0
  392. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/pro/htx.py +0 -0
  393. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/pro/huobi.py +0 -0
  394. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/pro/huobijp.py +0 -0
  395. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/pro/hyperliquid.py +0 -0
  396. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/pro/idex.py +0 -0
  397. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/pro/independentreserve.py +0 -0
  398. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/pro/kraken.py +0 -0
  399. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/pro/krakenfutures.py +0 -0
  400. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/pro/kucoin.py +0 -0
  401. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/pro/kucoinfutures.py +0 -0
  402. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/pro/lbank.py +0 -0
  403. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/pro/luno.py +0 -0
  404. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/pro/mexc.py +0 -0
  405. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/pro/myokx.py +0 -0
  406. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/pro/ndax.py +0 -0
  407. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/pro/okcoin.py +0 -0
  408. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/pro/okx.py +0 -0
  409. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/pro/onetrading.py +0 -0
  410. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/pro/oxfun.py +0 -0
  411. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/pro/p2b.py +0 -0
  412. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/pro/paradex.py +0 -0
  413. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/pro/phemex.py +0 -0
  414. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/pro/poloniex.py +0 -0
  415. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/pro/poloniexfutures.py +0 -0
  416. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/pro/probit.py +0 -0
  417. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/pro/upbit.py +0 -0
  418. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/pro/vertex.py +0 -0
  419. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/pro/wazirx.py +0 -0
  420. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/pro/whitebit.py +0 -0
  421. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/pro/woo.py +0 -0
  422. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/pro/woofipro.py +0 -0
  423. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/pro/xt.py +0 -0
  424. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/probit.py +0 -0
  425. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/__init__.py +0 -0
  426. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/ecdsa/__init__.py +0 -0
  427. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/ecdsa/_version.py +0 -0
  428. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/ecdsa/curves.py +0 -0
  429. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/ecdsa/der.py +0 -0
  430. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/ecdsa/ecdsa.py +0 -0
  431. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/ecdsa/ellipticcurve.py +0 -0
  432. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/ecdsa/keys.py +0 -0
  433. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/ecdsa/numbertheory.py +0 -0
  434. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/ecdsa/rfc6979.py +0 -0
  435. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/ecdsa/util.py +0 -0
  436. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/ethereum/__init__.py +0 -0
  437. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/ethereum/abi/__init__.py +0 -0
  438. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/ethereum/abi/abi.py +0 -0
  439. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/ethereum/abi/base.py +0 -0
  440. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/ethereum/abi/codec.py +0 -0
  441. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/ethereum/abi/constants.py +0 -0
  442. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/ethereum/abi/decoding.py +0 -0
  443. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/ethereum/abi/encoding.py +0 -0
  444. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/ethereum/abi/exceptions.py +0 -0
  445. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/ethereum/abi/grammar.py +0 -0
  446. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/ethereum/abi/packed.py +0 -0
  447. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/ethereum/abi/py.typed +0 -0
  448. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/ethereum/abi/registry.py +0 -0
  449. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/ethereum/abi/tools/__init__.py +0 -0
  450. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/ethereum/abi/tools/_strategies.py +0 -0
  451. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/ethereum/abi/utils/__init__.py +0 -0
  452. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/ethereum/abi/utils/numeric.py +0 -0
  453. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/ethereum/abi/utils/padding.py +0 -0
  454. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/ethereum/abi/utils/string.py +0 -0
  455. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/ethereum/account/__init__.py +0 -0
  456. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/ethereum/account/encode_typed_data/__init__.py +0 -0
  457. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/ethereum/account/encode_typed_data/encoding_and_hashing.py +0 -0
  458. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/ethereum/account/encode_typed_data/helpers.py +0 -0
  459. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/ethereum/account/messages.py +0 -0
  460. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/ethereum/account/py.typed +0 -0
  461. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/ethereum/hexbytes/__init__.py +0 -0
  462. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/ethereum/hexbytes/_utils.py +0 -0
  463. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/ethereum/hexbytes/main.py +0 -0
  464. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/ethereum/hexbytes/py.typed +0 -0
  465. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/ethereum/typing/__init__.py +0 -0
  466. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/ethereum/typing/abi.py +0 -0
  467. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/ethereum/typing/bls.py +0 -0
  468. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/ethereum/typing/discovery.py +0 -0
  469. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/ethereum/typing/encoding.py +0 -0
  470. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/ethereum/typing/enums.py +0 -0
  471. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/ethereum/typing/ethpm.py +0 -0
  472. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/ethereum/typing/evm.py +0 -0
  473. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/ethereum/typing/networks.py +0 -0
  474. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/ethereum/typing/py.typed +0 -0
  475. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/ethereum/utils/__init__.py +0 -0
  476. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/ethereum/utils/abi.py +0 -0
  477. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/ethereum/utils/address.py +0 -0
  478. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/ethereum/utils/applicators.py +0 -0
  479. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/ethereum/utils/conversions.py +0 -0
  480. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/ethereum/utils/currency.py +0 -0
  481. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/ethereum/utils/curried/__init__.py +0 -0
  482. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/ethereum/utils/debug.py +0 -0
  483. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/ethereum/utils/decorators.py +0 -0
  484. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/ethereum/utils/encoding.py +0 -0
  485. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/ethereum/utils/exceptions.py +0 -0
  486. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/ethereum/utils/functional.py +0 -0
  487. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/ethereum/utils/hexadecimal.py +0 -0
  488. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/ethereum/utils/humanize.py +0 -0
  489. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/ethereum/utils/logging.py +0 -0
  490. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/ethereum/utils/module_loading.py +0 -0
  491. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/ethereum/utils/numeric.py +0 -0
  492. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/ethereum/utils/py.typed +0 -0
  493. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/ethereum/utils/toolz.py +0 -0
  494. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/ethereum/utils/types.py +0 -0
  495. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/ethereum/utils/typing/__init__.py +0 -0
  496. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/ethereum/utils/typing/misc.py +0 -0
  497. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/ethereum/utils/units.py +0 -0
  498. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/keccak/__init__.py +0 -0
  499. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/keccak/keccak.py +0 -0
  500. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/lark/__init__.py +0 -0
  501. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/lark/__pyinstaller/__init__.py +0 -0
  502. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/lark/__pyinstaller/hook-lark.py +0 -0
  503. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/lark/ast_utils.py +0 -0
  504. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/lark/common.py +0 -0
  505. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/lark/exceptions.py +0 -0
  506. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/lark/grammar.py +0 -0
  507. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/lark/grammars/__init__.py +0 -0
  508. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/lark/indenter.py +0 -0
  509. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/lark/lark.py +0 -0
  510. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/lark/lexer.py +0 -0
  511. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/lark/load_grammar.py +0 -0
  512. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/lark/parse_tree_builder.py +0 -0
  513. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/lark/parser_frontends.py +0 -0
  514. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/lark/parsers/__init__.py +0 -0
  515. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/lark/parsers/cyk.py +0 -0
  516. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/lark/parsers/earley.py +0 -0
  517. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/lark/parsers/earley_common.py +0 -0
  518. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/lark/parsers/earley_forest.py +0 -0
  519. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/lark/parsers/grammar_analysis.py +0 -0
  520. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/lark/parsers/lalr_analysis.py +0 -0
  521. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/lark/parsers/lalr_interactive_parser.py +0 -0
  522. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/lark/parsers/lalr_parser.py +0 -0
  523. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/lark/parsers/lalr_parser_state.py +0 -0
  524. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/lark/parsers/xearley.py +0 -0
  525. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/lark/py.typed +0 -0
  526. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/lark/reconstruct.py +0 -0
  527. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/lark/tools/__init__.py +0 -0
  528. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/lark/tools/nearley.py +0 -0
  529. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/lark/tools/serialize.py +0 -0
  530. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/lark/tools/standalone.py +0 -0
  531. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/lark/tree.py +0 -0
  532. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/lark/tree_matcher.py +0 -0
  533. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/lark/tree_templates.py +0 -0
  534. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/lark/utils.py +0 -0
  535. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/lark/visitors.py +0 -0
  536. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/marshmallow/__init__.py +0 -0
  537. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/marshmallow/base.py +0 -0
  538. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/marshmallow/class_registry.py +0 -0
  539. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/marshmallow/decorators.py +0 -0
  540. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/marshmallow/error_store.py +0 -0
  541. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/marshmallow/exceptions.py +0 -0
  542. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/marshmallow/fields.py +0 -0
  543. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/marshmallow/orderedset.py +0 -0
  544. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/marshmallow/py.typed +0 -0
  545. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/marshmallow/schema.py +0 -0
  546. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/marshmallow/types.py +0 -0
  547. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/marshmallow/utils.py +0 -0
  548. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/marshmallow/validate.py +0 -0
  549. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/marshmallow/warnings.py +0 -0
  550. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/marshmallow_dataclass/__init__.py +0 -0
  551. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/marshmallow_dataclass/collection_field.py +0 -0
  552. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/marshmallow_dataclass/lazy_class_attribute.py +0 -0
  553. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/marshmallow_dataclass/mypy.py +0 -0
  554. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/marshmallow_dataclass/py.typed +0 -0
  555. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/marshmallow_dataclass/typing.py +0 -0
  556. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/marshmallow_dataclass/union_field.py +0 -0
  557. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/marshmallow_oneofschema/__init__.py +0 -0
  558. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/marshmallow_oneofschema/one_of_schema.py +0 -0
  559. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/marshmallow_oneofschema/py.typed +0 -0
  560. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/msgpack/__init__.py +0 -0
  561. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/msgpack/exceptions.py +0 -0
  562. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/msgpack/ext.py +0 -0
  563. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/msgpack/fallback.py +0 -0
  564. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/parsimonious/__init__.py +0 -0
  565. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/parsimonious/exceptions.py +0 -0
  566. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/parsimonious/expressions.py +0 -0
  567. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/parsimonious/grammar.py +0 -0
  568. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/parsimonious/nodes.py +0 -0
  569. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/parsimonious/utils.py +0 -0
  570. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/starknet/__init__.py +0 -0
  571. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/starknet/cairo/__init__.py +0 -0
  572. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/starknet/cairo/data_types.py +0 -0
  573. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/starknet/cairo/deprecated_parse/__init__.py +0 -0
  574. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/starknet/cairo/deprecated_parse/cairo_types.py +0 -0
  575. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/starknet/cairo/deprecated_parse/parser.py +0 -0
  576. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/starknet/cairo/deprecated_parse/parser_transformer.py +0 -0
  577. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/starknet/cairo/felt.py +0 -0
  578. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/starknet/cairo/type_parser.py +0 -0
  579. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/starknet/cairo/v1/__init__.py +0 -0
  580. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/starknet/cairo/v1/type_parser.py +0 -0
  581. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/starknet/cairo/v2/__init__.py +0 -0
  582. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/starknet/cairo/v2/type_parser.py +0 -0
  583. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/starknet/ccxt_utils.py +0 -0
  584. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/starknet/common.py +0 -0
  585. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/starknet/constants.py +0 -0
  586. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/starknet/hash/__init__.py +0 -0
  587. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/starknet/hash/address.py +0 -0
  588. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/starknet/hash/compiled_class_hash_objects.py +0 -0
  589. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/starknet/hash/selector.py +0 -0
  590. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/starknet/hash/storage.py +0 -0
  591. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/starknet/hash/utils.py +0 -0
  592. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/starknet/models/__init__.py +0 -0
  593. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/starknet/models/typed_data.py +0 -0
  594. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/starknet/serialization/__init__.py +0 -0
  595. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/starknet/serialization/_calldata_reader.py +0 -0
  596. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/starknet/serialization/_context.py +0 -0
  597. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/starknet/serialization/data_serializers/__init__.py +0 -0
  598. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/starknet/serialization/data_serializers/_common.py +0 -0
  599. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/starknet/serialization/data_serializers/array_serializer.py +0 -0
  600. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/starknet/serialization/data_serializers/bool_serializer.py +0 -0
  601. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/starknet/serialization/data_serializers/byte_array_serializer.py +0 -0
  602. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/starknet/serialization/data_serializers/cairo_data_serializer.py +0 -0
  603. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/starknet/serialization/data_serializers/enum_serializer.py +0 -0
  604. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/starknet/serialization/data_serializers/felt_serializer.py +0 -0
  605. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/starknet/serialization/data_serializers/named_tuple_serializer.py +0 -0
  606. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/starknet/serialization/data_serializers/option_serializer.py +0 -0
  607. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/starknet/serialization/data_serializers/output_serializer.py +0 -0
  608. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/starknet/serialization/data_serializers/payload_serializer.py +0 -0
  609. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/starknet/serialization/data_serializers/struct_serializer.py +0 -0
  610. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/starknet/serialization/data_serializers/tuple_serializer.py +0 -0
  611. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/starknet/serialization/data_serializers/uint256_serializer.py +0 -0
  612. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/starknet/serialization/data_serializers/uint_serializer.py +0 -0
  613. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/starknet/serialization/data_serializers/unit_serializer.py +0 -0
  614. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/starknet/serialization/errors.py +0 -0
  615. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/starknet/serialization/factory.py +0 -0
  616. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/starknet/serialization/function_serialization_adapter.py +0 -0
  617. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/starknet/serialization/tuple_dataclass.py +0 -0
  618. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/starknet/utils/__init__.py +0 -0
  619. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/starknet/utils/constructor_args_translator.py +0 -0
  620. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/starknet/utils/iterable.py +0 -0
  621. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/starknet/utils/schema.py +0 -0
  622. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/starknet/utils/typed_data.py +0 -0
  623. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/starkware/__init__.py +0 -0
  624. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/starkware/crypto/__init__.py +0 -0
  625. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/starkware/crypto/fast_pedersen_hash.py +0 -0
  626. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/starkware/crypto/math_utils.py +0 -0
  627. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/starkware/crypto/signature.py +0 -0
  628. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/starkware/crypto/utils.py +0 -0
  629. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/sympy/__init__.py +0 -0
  630. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/sympy/core/__init__.py +0 -0
  631. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/sympy/core/intfunc.py +0 -0
  632. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/sympy/external/__init__.py +0 -0
  633. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/sympy/external/gmpy.py +0 -0
  634. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/sympy/external/importtools.py +0 -0
  635. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/sympy/external/ntheory.py +0 -0
  636. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/sympy/external/pythonmpq.py +0 -0
  637. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/toolz/__init__.py +0 -0
  638. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/toolz/_signatures.py +0 -0
  639. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/toolz/_version.py +0 -0
  640. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/toolz/compatibility.py +0 -0
  641. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/toolz/curried/__init__.py +0 -0
  642. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/toolz/curried/exceptions.py +0 -0
  643. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/toolz/curried/operator.py +0 -0
  644. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/toolz/dicttoolz.py +0 -0
  645. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/toolz/functoolz.py +0 -0
  646. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/toolz/itertoolz.py +0 -0
  647. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/toolz/recipes.py +0 -0
  648. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/toolz/utils.py +0 -0
  649. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/typing_inspect/__init__.py +0 -0
  650. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/static_dependencies/typing_inspect/typing_inspect.py +0 -0
  651. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/test/__init__.py +0 -0
  652. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/test/tests_async.py +0 -0
  653. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/test/tests_helpers.py +0 -0
  654. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/test/tests_init.py +0 -0
  655. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/test/tests_sync.py +0 -0
  656. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/timex.py +0 -0
  657. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/tokocrypto.py +0 -0
  658. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/upbit.py +0 -0
  659. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/vertex.py +0 -0
  660. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/wavesexchange.py +0 -0
  661. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/whitebit.py +0 -0
  662. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/woo.py +0 -0
  663. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/woofipro.py +0 -0
  664. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/xt.py +0 -0
  665. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/yobit.py +0 -0
  666. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/zaif.py +0 -0
  667. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt/zonda.py +0 -0
  668. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt.egg-info/SOURCES.txt +0 -0
  669. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt.egg-info/dependency_links.txt +0 -0
  670. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt.egg-info/requires.txt +0 -0
  671. {ccxt-4.4.67 → ccxt-4.4.68}/ccxt.egg-info/top_level.txt +0 -0
  672. {ccxt-4.4.67 → ccxt-4.4.68}/setup.cfg +0 -0
  673. {ccxt-4.4.67 → ccxt-4.4.68}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ccxt
3
- Version: 4.4.67
3
+ Version: 4.4.68
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
@@ -72,7 +72,7 @@ Current feature list:
72
72
  ## Certified Cryptocurrency Exchanges
73
73
 
74
74
 
75
- | logo | id | name | ver | type | certified | pro | discount |
75
+ |logo |id |name |ver |type |certified |pro |discount |
76
76
  |-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------|-----------------------------------------------------------------------------------------|:--------------------------------------------------------------------------------------------------------------------------------:|--------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------|:----------------------------------------------------------------------------:|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
77
77
  | [![binance](https://github.com/user-attachments/assets/e9419b93-ccb0-46aa-9bff-c883f096274b)](https://accounts.binance.com/en/register?ref=D7YA7CLY) | binance | [Binance](https://accounts.binance.com/en/register?ref=D7YA7CLY) | [![API Version *](https://img.shields.io/badge/*-lightgray)](https://developers.binance.com/en) | ![CEX – Centralized EXchange](https://img.shields.io/badge/CEX-green.svg "CEX – Centralized EXchange") | [![CCXT Certified](https://img.shields.io/badge/CCXT-Certified-green.svg)](https://github.com/ccxt/ccxt/wiki/Certification) | [![CCXT Pro](https://img.shields.io/badge/CCXT-Pro-black)](https://ccxt.pro) | [![Sign up with Binance using CCXT's referral link for a 10% discount!](https://img.shields.io/static/v1?label=Fee&message=%2d10%25&color=orange)](https://accounts.binance.com/en/register?ref=D7YA7CLY) |
78
78
  | [![binancecoinm](https://github.com/user-attachments/assets/387cfc4e-5f33-48cd-8f5c-cd4854dabf0c)](https://accounts.binance.com/en/register?ref=D7YA7CLY) | binancecoinm | [Binance COIN-M](https://accounts.binance.com/en/register?ref=D7YA7CLY) | [![API Version *](https://img.shields.io/badge/*-lightgray)](https://binance-docs.github.io/apidocs/delivery/en/) | ![CEX – Centralized EXchange](https://img.shields.io/badge/CEX-green.svg "CEX – Centralized EXchange") | [![CCXT Certified](https://img.shields.io/badge/CCXT-Certified-green.svg)](https://github.com/ccxt/ccxt/wiki/Certification) | [![CCXT Pro](https://img.shields.io/badge/CCXT-Pro-black)](https://ccxt.pro) | [![Sign up with Binance COIN-M using CCXT's referral link for a 10% discount!](https://img.shields.io/static/v1?label=Fee&message=%2d10%25&color=orange)](https://accounts.binance.com/en/register?ref=D7YA7CLY) |
@@ -99,7 +99,7 @@ Current feature list:
99
99
 
100
100
  The CCXT library currently supports the following 106 cryptocurrency exchange markets and trading APIs:
101
101
 
102
- | logo | id | name | ver | type | certified | pro |
102
+ |logo |id |name |ver |type |certified |pro |
103
103
  |-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------|----------------------------------------------------------------------------------------------|:------------------------------------------------------------------------------------------------------------------------------------------------:|--------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------|
104
104
  | [![ace](https://github.com/user-attachments/assets/115f1e4a-0fd0-4b76-85d5-a49ebf64d1c8)](https://ace.io/) | ace | [ACE](https://ace.io/) | [![API Version 2](https://img.shields.io/badge/2-lightgray)](https://github.com/ace-exchange/ace-offical-api-docs) | ![CEX – Centralized EXchange](https://img.shields.io/badge/CEX-green.svg "CEX – Centralized EXchange") | | |
105
105
  | [![alpaca](https://github.com/user-attachments/assets/e9476df8-a450-4c3e-ab9a-1a7794219e1b)](https://alpaca.markets) | alpaca | [Alpaca](https://alpaca.markets) | [![API Version *](https://img.shields.io/badge/*-lightgray)](https://alpaca.markets/docs/) | ![CEX – Centralized EXchange](https://img.shields.io/badge/CEX-green.svg "CEX – Centralized EXchange") | | [![CCXT Pro](https://img.shields.io/badge/CCXT-Pro-black)](https://ccxt.pro) |
@@ -267,13 +267,13 @@ console.log(version, Object.keys(exchanges));
267
267
 
268
268
  All-in-one browser bundle (dependencies included), served from a CDN of your choice:
269
269
 
270
- * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.4.67/dist/ccxt.browser.min.js
271
- * unpkg: https://unpkg.com/ccxt@4.4.67/dist/ccxt.browser.min.js
270
+ * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.4.68/dist/ccxt.browser.min.js
271
+ * unpkg: https://unpkg.com/ccxt@4.4.68/dist/ccxt.browser.min.js
272
272
 
273
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.
274
274
 
275
275
  ```HTML
276
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.4.67/dist/ccxt.browser.min.js"></script>
276
+ <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.4.68/dist/ccxt.browser.min.js"></script>
277
277
  ```
278
278
 
279
279
  Creates a global `ccxt` object:
@@ -22,7 +22,7 @@
22
22
 
23
23
  # ----------------------------------------------------------------------------
24
24
 
25
- __version__ = '4.4.67'
25
+ __version__ = '4.4.68'
26
26
 
27
27
  # ----------------------------------------------------------------------------
28
28
 
@@ -6,7 +6,7 @@ class ImplicitAPI:
6
6
  public_get_orders_market = publicGetOrdersMarket = Entry('orders/{market}', 'public', 'GET', {'cost': 1})
7
7
  public_get_ticker_market = publicGetTickerMarket = Entry('ticker/{market}', 'public', 'GET', {'cost': 1})
8
8
  public_get_history_market = publicGetHistoryMarket = Entry('history/{market}', 'public', 'GET', {'cost': 1})
9
- public_get_chart_interval_market_timestamp = publicGetChartIntervalMarketTimestamp = Entry('chart/{interval}/{market}/{timestamp}', 'public', 'GET', {'cost': 1})
9
+ public_get_chart_interval_market = publicGetChartIntervalMarket = Entry('chart/{interval}/{market}', 'public', 'GET', {'cost': 1})
10
10
  private_get_account_balance = privateGetAccountBalance = Entry('account/balance', 'private', 'GET', {'cost': 1})
11
11
  private_get_account_balances = privateGetAccountBalances = Entry('account/balances', 'private', 'GET', {'cost': 1})
12
12
  private_get_account_order_uuid = privateGetAccountOrderUuid = Entry('account/order/{uuid}', 'private', 'GET', {'cost': 1})
@@ -4,7 +4,7 @@
4
4
 
5
5
  # -----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.4.67'
7
+ __version__ = '4.4.68'
8
8
 
9
9
  # -----------------------------------------------------------------------------
10
10
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  # -----------------------------------------------------------------------------
4
4
 
5
- __version__ = '4.4.67'
5
+ __version__ = '4.4.68'
6
6
 
7
7
  # -----------------------------------------------------------------------------
8
8
 
@@ -24,7 +24,7 @@ from ccxt.async_support.base.throttler import Throttler
24
24
 
25
25
  # -----------------------------------------------------------------------------
26
26
 
27
- from ccxt.base.errors import BaseError, NetworkError, BadSymbol, BadRequest, BadResponse, ExchangeError, ExchangeNotAvailable, RequestTimeout, NotSupported, NullResponse, InvalidAddress, RateLimitExceeded
27
+ from ccxt.base.errors import BaseError, BadSymbol, BadRequest, BadResponse, ExchangeError, ExchangeNotAvailable, RequestTimeout, NotSupported, NullResponse, InvalidAddress, RateLimitExceeded, OperationFailed
28
28
  from ccxt.base.types import OrderType, OrderSide, OrderRequest, CancellationRequest
29
29
 
30
30
  # -----------------------------------------------------------------------------
@@ -881,14 +881,15 @@ class Exchange(BaseExchange):
881
881
  try:
882
882
  return await self.fetch(request['url'], request['method'], request['headers'], request['body'])
883
883
  except Exception as e:
884
- if isinstance(e, NetworkError):
884
+ if isinstance(e, OperationFailed):
885
885
  if i < retries:
886
886
  if self.verbose:
887
887
  self.log('Request failed with the error: ' + str(e) + ', retrying ' + (i + str(1)) + ' of ' + str(retries) + '...')
888
888
  if (retryDelay is not None) and (retryDelay != 0):
889
889
  await self.sleep(retryDelay)
890
- # continue #check self
891
- if i >= retries:
890
+ else:
891
+ raise e
892
+ else:
892
893
  raise e
893
894
  return None # self line is never reached, but exists for c# value return requirement
894
895
 
@@ -1634,7 +1634,7 @@ class bitrue(Exchange, ImplicitAPI):
1634
1634
  tickers: dict = {}
1635
1635
  for i in range(0, len(data)):
1636
1636
  ticker = self.safe_dict(data, i, {})
1637
- market = self.market(self.safe_value(ticker, 'symbol'))
1637
+ market = self.safe_market(self.safe_string(ticker, 'symbol'))
1638
1638
  tickers[market['id']] = ticker
1639
1639
  return self.parse_tickers(tickers, symbols)
1640
1640
 
@@ -8826,7 +8826,7 @@ classic accounts only/ spot not supported* fetches information on an order made
8826
8826
  feedback = self.id + ' private api uses /user/v3/private/query-api to check if you have a unified account. The API key of user id must own one of permissions: "Account Transfer", "Subaccount Transfer", "Withdrawal" ' + body
8827
8827
  else:
8828
8828
  feedback = self.id + ' ' + body
8829
- if body.find('Withdraw address chain or destination tag are not equal'):
8829
+ if body.find('Withdraw address chain or destination tag are not equal') > -1:
8830
8830
  feedback = feedback + '; You might also need to ensure the address is whitelisted'
8831
8831
  self.throw_broadly_matched_exception(self.exceptions['broad'], body, feedback)
8832
8832
  self.throw_exactly_matched_exception(self.exceptions['exact'], errorCode, feedback)
@@ -4127,7 +4127,8 @@ class coinbase(Exchange, ImplicitAPI):
4127
4127
  # }
4128
4128
  # }
4129
4129
  #
4130
- data = self.safe_dict(response, 'data', {})
4130
+ # https://github.com/ccxt/ccxt/issues/25484
4131
+ data = self.safe_dict_2(response, 'data', 'transfer', {})
4131
4132
  return self.parse_transaction(data)
4132
4133
 
4133
4134
  async def fetch_deposit(self, id: str, code: Str = None, params={}):
@@ -4192,7 +4193,8 @@ class coinbase(Exchange, ImplicitAPI):
4192
4193
  # }
4193
4194
  # }
4194
4195
  #
4195
- data = self.safe_dict(response, 'data', {})
4196
+ # https://github.com/ccxt/ccxt/issues/25484
4197
+ data = self.safe_dict_2(response, 'data', 'transfer', {})
4196
4198
  return self.parse_transaction(data)
4197
4199
 
4198
4200
  async def fetch_deposit_method_ids(self, params={}):
@@ -4670,6 +4672,75 @@ class coinbase(Exchange, ImplicitAPI):
4670
4672
  }
4671
4673
  return result
4672
4674
 
4675
+ async def fetch_portfolio_details(self, portfolioUuid: str, params={}) -> List[Any]:
4676
+ """
4677
+ Fetch details for a specific portfolio by UUID
4678
+
4679
+ https://docs.cloud.coinbase.com/advanced-trade/reference/retailbrokerageapi_getportfolios
4680
+
4681
+ :param str portfolioUuid: The unique identifier of the portfolio to fetch
4682
+ :param Dict [params]: Extra parameters specific to the exchange API endpoint
4683
+ :returns any[]: An account structure <https://docs.ccxt.com/#/?id=account-structure>
4684
+ """
4685
+ await self.load_markets()
4686
+ request = {
4687
+ 'portfolio_uuid': portfolioUuid,
4688
+ }
4689
+ response = await self.v3PrivateGetBrokeragePortfoliosPortfolioUuid(self.extend(request, params))
4690
+ result = self.parse_portfolio_details(response)
4691
+ return result
4692
+
4693
+ def parse_portfolio_details(self, portfolioData: dict):
4694
+ """
4695
+ Parse a Coinbase portfolio JSON object and extract relevant trading information.
4696
+ :param Dict portfolioData: The JSON response containing portfolio details
4697
+ :returns any[]: List of dictionaries with parsed portfolio position data
4698
+ """
4699
+ breakdown = portfolioData['breakdown']
4700
+ portfolioInfo = self.safe_dict(breakdown, 'portfolio', {})
4701
+ portfolioName = self.safe_string(portfolioInfo, 'name', 'Unknown')
4702
+ portfolioUuid = self.safe_string(portfolioInfo, 'uuid', '')
4703
+ spotPositions = self.safe_list(breakdown, 'spot_positions', [])
4704
+ parsedPositions = []
4705
+ for i in range(0, len(spotPositions)):
4706
+ position: dict = spotPositions[i]
4707
+ currencyCode = self.safe_string(position, 'asset', 'Unknown')
4708
+ availableBalanceStr = self.safe_string(position, 'available_to_trade_fiat', '0')
4709
+ availableBalance = self.parse_number(availableBalanceStr)
4710
+ totalBalanceFiatStr = self.safe_string(position, 'total_balance_fiat', '0')
4711
+ totalBalanceFiat = self.parse_number(totalBalanceFiatStr)
4712
+ holdAmount = totalBalanceFiat - availableBalance
4713
+ costBasisDict = self.safe_dict(position, 'cost_basis', {})
4714
+ costBasisStr = self.safe_string(costBasisDict, 'value', '0')
4715
+ averageEntryPriceDict = self.safe_dict(position, 'average_entry_price', {})
4716
+ averageEntryPriceStr = self.safe_string(averageEntryPriceDict, 'value', '0')
4717
+ positionData: dict = {
4718
+ 'currency': currencyCode,
4719
+ 'available_balance': availableBalance,
4720
+ 'hold_amount': holdAmount > holdAmount if 0 else 0,
4721
+ 'wallet_name': portfolioName,
4722
+ 'account_id': portfolioUuid,
4723
+ 'account_uuid': self.safe_string(position, 'account_uuid', ''),
4724
+ 'total_balance_fiat': totalBalanceFiat,
4725
+ 'total_balance_crypto': self.parse_number(self.safe_string(position, 'total_balance_crypto', '0')),
4726
+ 'available_to_trade_fiat': self.parse_number(self.safe_string(position, 'available_to_trade_fiat', '0')),
4727
+ 'available_to_trade_crypto': self.parse_number(self.safe_string(position, 'available_to_trade_crypto', '0')),
4728
+ 'available_to_transfer_fiat': self.parse_number(self.safe_string(position, 'available_to_transfer_fiat', '0')),
4729
+ 'available_to_transfer_crypto': self.parse_number(self.safe_string(position, 'available_to_trade_crypto', '0')),
4730
+ 'allocation': self.parse_number(self.safe_string(position, 'allocation', '0')),
4731
+ 'cost_basis': self.parse_number(costBasisStr),
4732
+ 'cost_basis_currency': self.safe_string(costBasisDict, 'currency', 'USD'),
4733
+ 'is_cash': self.safe_bool(position, 'is_cash', False),
4734
+ 'average_entry_price': self.parse_number(averageEntryPriceStr),
4735
+ 'average_entry_price_currency': self.safe_string(averageEntryPriceDict, 'currency', 'USD'),
4736
+ 'asset_uuid': self.safe_string(position, 'asset_uuid', ''),
4737
+ 'unrealized_pnl': self.parse_number(self.safe_string(position, 'unrealized_pnl', '0')),
4738
+ 'asset_color': self.safe_string(position, 'asset_color', ''),
4739
+ 'account_type': self.safe_string(position, 'account_type', ''),
4740
+ }
4741
+ parsedPositions.append(positionData)
4742
+ return parsedPositions
4743
+
4673
4744
  def create_auth_token(self, seconds: Int, method: Str = None, url: Str = None):
4674
4745
  # it may not work for v2
4675
4746
  uri = None
@@ -5,7 +5,7 @@
5
5
 
6
6
  from ccxt.async_support.base.exchange import Exchange
7
7
  from ccxt.abstract.luno import ImplicitAPI
8
- from ccxt.base.types import Account, Any, Balances, Currency, Int, LedgerEntry, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, TradingFeeInterface
8
+ from ccxt.base.types import Account, Any, Balances, Currency, DepositAddress, Int, LedgerEntry, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, TradingFeeInterface
9
9
  from typing import List
10
10
  from ccxt.base.errors import ExchangeError
11
11
  from ccxt.base.errors import ArgumentsRequired
@@ -35,6 +35,7 @@ class luno(Exchange, ImplicitAPI):
35
35
  'cancelOrder': True,
36
36
  'closeAllPositions': False,
37
37
  'closePosition': False,
38
+ 'createDepositAddress': True,
38
39
  'createOrder': True,
39
40
  'createReduceOnlyOrder': False,
40
41
  'fetchAccounts': True,
@@ -43,6 +44,7 @@ class luno(Exchange, ImplicitAPI):
43
44
  'fetchClosedOrders': True,
44
45
  'fetchCrossBorrowRate': False,
45
46
  'fetchCrossBorrowRates': False,
47
+ 'fetchDepositAddress': True,
46
48
  'fetchFundingHistory': False,
47
49
  'fetchFundingRate': False,
48
50
  'fetchFundingRateHistory': False,
@@ -1158,6 +1160,116 @@ class luno(Exchange, ImplicitAPI):
1158
1160
  'fee': None,
1159
1161
  }, currency)
1160
1162
 
1163
+ async def create_deposit_address(self, code: str, params={}) -> DepositAddress:
1164
+ """
1165
+ create a currency deposit address
1166
+
1167
+ https://www.luno.com/en/developers/api#tag/Receive/operation/createFundingAddress
1168
+
1169
+ :param str code: unified currency code of the currency for the deposit address
1170
+ :param dict [params]: extra parameters specific to the exchange API endpoint
1171
+ :param str [params.name]: an optional name for the new address
1172
+ :param int [params.account_id]: an optional account id for the new address
1173
+ :returns dict: an `address structure <https://docs.ccxt.com/#/?id=address-structure>`
1174
+ """
1175
+ await self.load_markets()
1176
+ currency = self.currency(code)
1177
+ request: dict = {
1178
+ 'asset': currency['id'],
1179
+ }
1180
+ response = await self.privatePostFundingAddress(self.extend(request, params))
1181
+ #
1182
+ # {
1183
+ # "account_id": "string",
1184
+ # "address": "string",
1185
+ # "address_meta": [
1186
+ # {
1187
+ # "label": "string",
1188
+ # "value": "string"
1189
+ # }
1190
+ # ],
1191
+ # "asset": "string",
1192
+ # "assigned_at": 0,
1193
+ # "name": "string",
1194
+ # "network": 0,
1195
+ # "qr_code_uri": "string",
1196
+ # "receive_fee": "string",
1197
+ # "total_received": "string",
1198
+ # "total_unconfirmed": "string"
1199
+ # }
1200
+ #
1201
+ return self.parse_deposit_address(response, currency)
1202
+
1203
+ async def fetch_deposit_address(self, code: str, params={}) -> DepositAddress:
1204
+ """
1205
+ fetch the deposit address for a currency associated with self account
1206
+
1207
+ https://www.luno.com/en/developers/api#tag/Receive/operation/getFundingAddress
1208
+
1209
+ :param str code: unified currency code
1210
+ :param dict [params]: extra parameters specific to the exchange API endpoint
1211
+ :param str [params.address]: a specific cryptocurrency address to retrieve
1212
+ :returns dict: an `address structure <https://docs.ccxt.com/#/?id=address-structure>`
1213
+ """
1214
+ await self.load_markets()
1215
+ currency = self.currency(code)
1216
+ request: dict = {
1217
+ 'asset': currency['id'],
1218
+ }
1219
+ response = await self.privateGetFundingAddress(self.extend(request, params))
1220
+ #
1221
+ # {
1222
+ # "account_id": "string",
1223
+ # "address": "string",
1224
+ # "address_meta": [
1225
+ # {
1226
+ # "label": "string",
1227
+ # "value": "string"
1228
+ # }
1229
+ # ],
1230
+ # "asset": "string",
1231
+ # "assigned_at": 0,
1232
+ # "name": "string",
1233
+ # "network": 0,
1234
+ # "qr_code_uri": "string",
1235
+ # "receive_fee": "string",
1236
+ # "total_received": "string",
1237
+ # "total_unconfirmed": "string"
1238
+ # }
1239
+ #
1240
+ return self.parse_deposit_address(response, currency)
1241
+
1242
+ def parse_deposit_address(self, depositAddress, currency: Currency = None) -> DepositAddress:
1243
+ #
1244
+ # {
1245
+ # "account_id": "string",
1246
+ # "address": "string",
1247
+ # "address_meta": [
1248
+ # {
1249
+ # "label": "string",
1250
+ # "value": "string"
1251
+ # }
1252
+ # ],
1253
+ # "asset": "string",
1254
+ # "assigned_at": 0,
1255
+ # "name": "string",
1256
+ # "network": 0,
1257
+ # "qr_code_uri": "string",
1258
+ # "receive_fee": "string",
1259
+ # "total_received": "string",
1260
+ # "total_unconfirmed": "string"
1261
+ # }
1262
+ #
1263
+ currencyId = self.safe_string_upper(depositAddress, 'currency')
1264
+ code = self.safe_currency_code(currencyId, currency)
1265
+ return {
1266
+ 'info': depositAddress,
1267
+ 'currency': code,
1268
+ 'network': None,
1269
+ 'address': self.safe_string(depositAddress, 'address'),
1270
+ 'tag': self.safe_string(depositAddress, 'name'),
1271
+ }
1272
+
1161
1273
  def sign(self, path, api='public', method='GET', params={}, headers=None, body=None):
1162
1274
  url = self.urls['api'][api] + '/' + self.version + '/' + self.implode_params(path, params)
1163
1275
  query = self.omit(params, self.extract_params(path))
@@ -134,7 +134,7 @@ class tradeogre(Exchange, ImplicitAPI):
134
134
  'orders/{market}': 1,
135
135
  'ticker/{market}': 1,
136
136
  'history/{market}': 1,
137
- 'chart/{interval}/{market}/{timestamp}': 1,
137
+ 'chart/{interval}/{market}': 1,
138
138
  },
139
139
  },
140
140
  'private': {
@@ -442,6 +442,7 @@ class tradeogre(Exchange, ImplicitAPI):
442
442
  :param int [since]: timestamp in ms of the earliest candle to fetch
443
443
  :param int [limit]: the maximum amount of candles to fetch
444
444
  :param dict [params]: extra parameters specific to the exchange API endpoint
445
+ :param int [params.until]: timestamp of the latest candle in ms
445
446
  :returns int[][]: A list of candles ordered, open, high, low, close, volume
446
447
  """
447
448
  await self.load_markets()
@@ -450,11 +451,11 @@ class tradeogre(Exchange, ImplicitAPI):
450
451
  'market': market['id'],
451
452
  'interval': self.safe_string(self.timeframes, timeframe, timeframe),
452
453
  }
453
- if since is None:
454
- raise BadRequest(self.id + ' fetchOHLCV requires a since argument')
455
- else:
456
- request['timestamp'] = since
457
- response = await self.publicGetChartIntervalMarketTimestamp(self.extend(request, params))
454
+ until = self.safe_integer(params, 'until')
455
+ if until is not None:
456
+ params = self.omit(params, 'until')
457
+ request['timestamp'] = until
458
+ response = await self.publicGetChartIntervalMarket(self.extend(request, params))
458
459
  #
459
460
  # [
460
461
  # [
@@ -4,7 +4,7 @@
4
4
 
5
5
  # -----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.4.67'
7
+ __version__ = '4.4.68'
8
8
 
9
9
  # -----------------------------------------------------------------------------
10
10
 
@@ -21,6 +21,7 @@ from ccxt.base.errors import ArgumentsRequired
21
21
  from ccxt.base.errors import BadSymbol
22
22
  from ccxt.base.errors import NullResponse
23
23
  from ccxt.base.errors import RateLimitExceeded
24
+ from ccxt.base.errors import OperationFailed
24
25
  from ccxt.base.errors import BadRequest
25
26
  from ccxt.base.errors import BadResponse
26
27
  from ccxt.base.errors import InvalidProxySettings
@@ -4351,14 +4352,15 @@ class Exchange(object):
4351
4352
  try:
4352
4353
  return self.fetch(request['url'], request['method'], request['headers'], request['body'])
4353
4354
  except Exception as e:
4354
- if isinstance(e, NetworkError):
4355
+ if isinstance(e, OperationFailed):
4355
4356
  if i < retries:
4356
4357
  if self.verbose:
4357
4358
  self.log('Request failed with the error: ' + str(e) + ', retrying ' + (i + str(1)) + ' of ' + str(retries) + '...')
4358
4359
  if (retryDelay is not None) and (retryDelay != 0):
4359
4360
  self.sleep(retryDelay)
4360
- # continue #check self
4361
- if i >= retries:
4361
+ else:
4362
+ raise e
4363
+ else:
4362
4364
  raise e
4363
4365
  return None # self line is never reached, but exists for c# value return requirement
4364
4366
 
@@ -1633,7 +1633,7 @@ class bitrue(Exchange, ImplicitAPI):
1633
1633
  tickers: dict = {}
1634
1634
  for i in range(0, len(data)):
1635
1635
  ticker = self.safe_dict(data, i, {})
1636
- market = self.market(self.safe_value(ticker, 'symbol'))
1636
+ market = self.safe_market(self.safe_string(ticker, 'symbol'))
1637
1637
  tickers[market['id']] = ticker
1638
1638
  return self.parse_tickers(tickers, symbols)
1639
1639
 
@@ -8825,7 +8825,7 @@ classic accounts only/ spot not supported* fetches information on an order made
8825
8825
  feedback = self.id + ' private api uses /user/v3/private/query-api to check if you have a unified account. The API key of user id must own one of permissions: "Account Transfer", "Subaccount Transfer", "Withdrawal" ' + body
8826
8826
  else:
8827
8827
  feedback = self.id + ' ' + body
8828
- if body.find('Withdraw address chain or destination tag are not equal'):
8828
+ if body.find('Withdraw address chain or destination tag are not equal') > -1:
8829
8829
  feedback = feedback + '; You might also need to ensure the address is whitelisted'
8830
8830
  self.throw_broadly_matched_exception(self.exceptions['broad'], body, feedback)
8831
8831
  self.throw_exactly_matched_exception(self.exceptions['exact'], errorCode, feedback)
@@ -4126,7 +4126,8 @@ class coinbase(Exchange, ImplicitAPI):
4126
4126
  # }
4127
4127
  # }
4128
4128
  #
4129
- data = self.safe_dict(response, 'data', {})
4129
+ # https://github.com/ccxt/ccxt/issues/25484
4130
+ data = self.safe_dict_2(response, 'data', 'transfer', {})
4130
4131
  return self.parse_transaction(data)
4131
4132
 
4132
4133
  def fetch_deposit(self, id: str, code: Str = None, params={}):
@@ -4191,7 +4192,8 @@ class coinbase(Exchange, ImplicitAPI):
4191
4192
  # }
4192
4193
  # }
4193
4194
  #
4194
- data = self.safe_dict(response, 'data', {})
4195
+ # https://github.com/ccxt/ccxt/issues/25484
4196
+ data = self.safe_dict_2(response, 'data', 'transfer', {})
4195
4197
  return self.parse_transaction(data)
4196
4198
 
4197
4199
  def fetch_deposit_method_ids(self, params={}):
@@ -4669,6 +4671,75 @@ class coinbase(Exchange, ImplicitAPI):
4669
4671
  }
4670
4672
  return result
4671
4673
 
4674
+ def fetch_portfolio_details(self, portfolioUuid: str, params={}) -> List[Any]:
4675
+ """
4676
+ Fetch details for a specific portfolio by UUID
4677
+
4678
+ https://docs.cloud.coinbase.com/advanced-trade/reference/retailbrokerageapi_getportfolios
4679
+
4680
+ :param str portfolioUuid: The unique identifier of the portfolio to fetch
4681
+ :param Dict [params]: Extra parameters specific to the exchange API endpoint
4682
+ :returns any[]: An account structure <https://docs.ccxt.com/#/?id=account-structure>
4683
+ """
4684
+ self.load_markets()
4685
+ request = {
4686
+ 'portfolio_uuid': portfolioUuid,
4687
+ }
4688
+ response = self.v3PrivateGetBrokeragePortfoliosPortfolioUuid(self.extend(request, params))
4689
+ result = self.parse_portfolio_details(response)
4690
+ return result
4691
+
4692
+ def parse_portfolio_details(self, portfolioData: dict):
4693
+ """
4694
+ Parse a Coinbase portfolio JSON object and extract relevant trading information.
4695
+ :param Dict portfolioData: The JSON response containing portfolio details
4696
+ :returns any[]: List of dictionaries with parsed portfolio position data
4697
+ """
4698
+ breakdown = portfolioData['breakdown']
4699
+ portfolioInfo = self.safe_dict(breakdown, 'portfolio', {})
4700
+ portfolioName = self.safe_string(portfolioInfo, 'name', 'Unknown')
4701
+ portfolioUuid = self.safe_string(portfolioInfo, 'uuid', '')
4702
+ spotPositions = self.safe_list(breakdown, 'spot_positions', [])
4703
+ parsedPositions = []
4704
+ for i in range(0, len(spotPositions)):
4705
+ position: dict = spotPositions[i]
4706
+ currencyCode = self.safe_string(position, 'asset', 'Unknown')
4707
+ availableBalanceStr = self.safe_string(position, 'available_to_trade_fiat', '0')
4708
+ availableBalance = self.parse_number(availableBalanceStr)
4709
+ totalBalanceFiatStr = self.safe_string(position, 'total_balance_fiat', '0')
4710
+ totalBalanceFiat = self.parse_number(totalBalanceFiatStr)
4711
+ holdAmount = totalBalanceFiat - availableBalance
4712
+ costBasisDict = self.safe_dict(position, 'cost_basis', {})
4713
+ costBasisStr = self.safe_string(costBasisDict, 'value', '0')
4714
+ averageEntryPriceDict = self.safe_dict(position, 'average_entry_price', {})
4715
+ averageEntryPriceStr = self.safe_string(averageEntryPriceDict, 'value', '0')
4716
+ positionData: dict = {
4717
+ 'currency': currencyCode,
4718
+ 'available_balance': availableBalance,
4719
+ 'hold_amount': holdAmount > holdAmount if 0 else 0,
4720
+ 'wallet_name': portfolioName,
4721
+ 'account_id': portfolioUuid,
4722
+ 'account_uuid': self.safe_string(position, 'account_uuid', ''),
4723
+ 'total_balance_fiat': totalBalanceFiat,
4724
+ 'total_balance_crypto': self.parse_number(self.safe_string(position, 'total_balance_crypto', '0')),
4725
+ 'available_to_trade_fiat': self.parse_number(self.safe_string(position, 'available_to_trade_fiat', '0')),
4726
+ 'available_to_trade_crypto': self.parse_number(self.safe_string(position, 'available_to_trade_crypto', '0')),
4727
+ 'available_to_transfer_fiat': self.parse_number(self.safe_string(position, 'available_to_transfer_fiat', '0')),
4728
+ 'available_to_transfer_crypto': self.parse_number(self.safe_string(position, 'available_to_trade_crypto', '0')),
4729
+ 'allocation': self.parse_number(self.safe_string(position, 'allocation', '0')),
4730
+ 'cost_basis': self.parse_number(costBasisStr),
4731
+ 'cost_basis_currency': self.safe_string(costBasisDict, 'currency', 'USD'),
4732
+ 'is_cash': self.safe_bool(position, 'is_cash', False),
4733
+ 'average_entry_price': self.parse_number(averageEntryPriceStr),
4734
+ 'average_entry_price_currency': self.safe_string(averageEntryPriceDict, 'currency', 'USD'),
4735
+ 'asset_uuid': self.safe_string(position, 'asset_uuid', ''),
4736
+ 'unrealized_pnl': self.parse_number(self.safe_string(position, 'unrealized_pnl', '0')),
4737
+ 'asset_color': self.safe_string(position, 'asset_color', ''),
4738
+ 'account_type': self.safe_string(position, 'account_type', ''),
4739
+ }
4740
+ parsedPositions.append(positionData)
4741
+ return parsedPositions
4742
+
4672
4743
  def create_auth_token(self, seconds: Int, method: Str = None, url: Str = None):
4673
4744
  # it may not work for v2
4674
4745
  uri = None