ccxt-ir 4.3.46.0.3__py2.py3-none-any.whl → 4.5.1__py2.py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (529) hide show
  1. ccxt/__init__.py +39 -35
  2. ccxt/abantether.py +8 -8
  3. ccxt/abstract/alpaca.py +4 -0
  4. ccxt/abstract/apex.py +31 -0
  5. ccxt/abstract/bigone.py +1 -1
  6. ccxt/abstract/binance.py +106 -48
  7. ccxt/abstract/binancecoinm.py +106 -48
  8. ccxt/abstract/binanceus.py +141 -83
  9. ccxt/abstract/binanceusdm.py +106 -48
  10. ccxt/abstract/bingx.py +50 -1
  11. ccxt/abstract/bitbank.py +5 -0
  12. ccxt/abstract/bitfinex.py +136 -65
  13. ccxt/abstract/bitflyer.py +1 -0
  14. ccxt/abstract/bitget.py +67 -0
  15. ccxt/abstract/bitmart.py +19 -1
  16. ccxt/abstract/bitopro.py +1 -0
  17. ccxt/abstract/bitrue.py +68 -68
  18. ccxt/abstract/bitstamp.py +1 -0
  19. ccxt/abstract/blofin.py +30 -0
  20. ccxt/abstract/btcbox.py +2 -0
  21. ccxt/abstract/bybit.py +28 -13
  22. ccxt/abstract/cex.py +28 -29
  23. ccxt/abstract/coinbaseexchange.py +1 -0
  24. ccxt/abstract/coinbaseinternational.py +1 -1
  25. ccxt/abstract/cryptocom.py +16 -0
  26. ccxt/abstract/cryptomus.py +20 -0
  27. ccxt/abstract/defx.py +69 -0
  28. ccxt/abstract/deribit.py +1 -0
  29. ccxt/abstract/derive.py +117 -0
  30. ccxt/abstract/digifinex.py +1 -0
  31. ccxt/abstract/ellipx.py +25 -0
  32. ccxt/abstract/foxbit.py +26 -0
  33. ccxt/abstract/gate.py +19 -0
  34. ccxt/abstract/gateio.py +19 -0
  35. ccxt/abstract/gemini.py +1 -0
  36. ccxt/abstract/hibachi.py +26 -0
  37. ccxt/abstract/hyperliquid.py +1 -1
  38. ccxt/abstract/independentreserve.py +6 -0
  39. ccxt/abstract/kraken.py +1 -0
  40. ccxt/abstract/krakenfutures.py +4 -0
  41. ccxt/abstract/kucoin.py +10 -0
  42. ccxt/abstract/kucoinfutures.py +18 -0
  43. ccxt/abstract/lbank.py +2 -1
  44. ccxt/abstract/luno.py +1 -0
  45. ccxt/abstract/mexc.py +2 -0
  46. ccxt/abstract/modetrade.py +119 -0
  47. ccxt/abstract/myokx.py +349 -0
  48. ccxt/abstract/oceanex.py +5 -0
  49. ccxt/abstract/okx.py +25 -0
  50. ccxt/abstract/okxus.py +349 -0
  51. ccxt/abstract/onetrading.py +0 -12
  52. ccxt/abstract/paradex.py +23 -0
  53. ccxt/abstract/phemex.py +2 -0
  54. ccxt/abstract/poloniex.py +36 -0
  55. ccxt/abstract/tradeogre.py +3 -1
  56. ccxt/abstract/upbit.py +51 -34
  57. ccxt/abstract/whitebit.py +16 -0
  58. ccxt/abstract/woo.py +64 -6
  59. ccxt/abstract/xt.py +10 -5
  60. ccxt/afratether.py +8 -8
  61. ccxt/alpaca.py +828 -51
  62. ccxt/apex.py +1875 -0
  63. ccxt/arzinja.py +7 -7
  64. ccxt/arzplus.py +9 -9
  65. ccxt/ascendex.py +501 -306
  66. ccxt/async_support/__init__.py +39 -35
  67. ccxt/async_support/abantether.py +8 -8
  68. ccxt/async_support/afratether.py +10 -10
  69. ccxt/async_support/alpaca.py +828 -51
  70. ccxt/async_support/apex.py +1875 -0
  71. ccxt/async_support/arzinja.py +10 -10
  72. ccxt/async_support/arzplus.py +12 -12
  73. ccxt/async_support/ascendex.py +502 -306
  74. ccxt/async_support/base/exchange.py +303 -89
  75. ccxt/async_support/base/ws/cache.py +9 -3
  76. ccxt/async_support/base/ws/client.py +173 -38
  77. ccxt/async_support/base/ws/future.py +25 -37
  78. ccxt/async_support/bequant.py +5 -3
  79. ccxt/async_support/bigone.py +279 -144
  80. ccxt/async_support/binance.py +2347 -1158
  81. ccxt/async_support/binancecoinm.py +9 -3
  82. ccxt/async_support/binanceus.py +17 -3
  83. ccxt/async_support/binanceusdm.py +9 -4
  84. ccxt/async_support/bingx.py +2962 -920
  85. ccxt/async_support/bit2c.py +147 -27
  86. ccxt/async_support/bitbank.py +151 -23
  87. ccxt/async_support/bitbns.py +104 -30
  88. ccxt/async_support/bitfinex.py +3291 -1113
  89. ccxt/async_support/bitflyer.py +202 -27
  90. ccxt/async_support/bitget.py +3683 -1538
  91. ccxt/async_support/bithumb.py +195 -38
  92. ccxt/async_support/bitimen.py +12 -12
  93. ccxt/async_support/bitir.py +38 -38
  94. ccxt/async_support/bitmart.py +1288 -350
  95. ccxt/async_support/bitmex.py +260 -75
  96. ccxt/async_support/bitopro.py +262 -62
  97. ccxt/async_support/bitpin.py +17 -16
  98. ccxt/async_support/bitrue.py +459 -290
  99. ccxt/async_support/bitso.py +199 -54
  100. ccxt/async_support/bitstamp.py +230 -96
  101. ccxt/async_support/bitteam.py +167 -25
  102. ccxt/async_support/{huobijp.py → bittrade.py} +158 -30
  103. ccxt/async_support/bitvavo.py +213 -49
  104. ccxt/async_support/blockchaincom.py +160 -46
  105. ccxt/async_support/blofin.py +502 -120
  106. ccxt/async_support/btcalpha.py +169 -31
  107. ccxt/async_support/btcbox.py +292 -23
  108. ccxt/async_support/btcmarkets.py +211 -58
  109. ccxt/async_support/btcturk.py +161 -38
  110. ccxt/async_support/bybit.py +1775 -1030
  111. ccxt/async_support/cex.py +1440 -1303
  112. ccxt/async_support/coinbase.py +724 -212
  113. ccxt/async_support/coinbaseadvanced.py +2 -1
  114. ccxt/async_support/coinbaseexchange.py +388 -89
  115. ccxt/async_support/coinbaseinternational.py +412 -57
  116. ccxt/async_support/coincatch.py +177 -78
  117. ccxt/async_support/coincheck.py +135 -19
  118. ccxt/async_support/coinex.py +606 -232
  119. ccxt/async_support/coinmate.py +189 -63
  120. ccxt/async_support/coinmetro.py +195 -54
  121. ccxt/async_support/coinone.py +158 -51
  122. ccxt/async_support/coinsph.py +336 -61
  123. ccxt/async_support/coinspot.py +151 -52
  124. ccxt/async_support/cryptocom.py +661 -111
  125. ccxt/async_support/cryptomus.py +1137 -0
  126. ccxt/async_support/defx.py +2071 -0
  127. ccxt/async_support/delta.py +299 -99
  128. ccxt/async_support/deribit.py +348 -126
  129. ccxt/async_support/derive.py +2572 -0
  130. ccxt/async_support/digifinex.py +430 -214
  131. ccxt/async_support/ellipx.py +2029 -0
  132. ccxt/async_support/eterex.py +10 -10
  133. ccxt/async_support/excoino.py +31 -31
  134. ccxt/async_support/exir.py +14 -14
  135. ccxt/async_support/exmo.py +344 -131
  136. ccxt/async_support/exnovin.py +10 -10
  137. ccxt/async_support/farhadexchange.py +12 -12
  138. ccxt/async_support/fmfwio.py +2 -1
  139. ccxt/async_support/foxbit.py +1935 -0
  140. ccxt/async_support/gate.py +1351 -529
  141. ccxt/async_support/gateio.py +2 -1
  142. ccxt/async_support/gemini.py +144 -39
  143. ccxt/async_support/hashkey.py +152 -109
  144. ccxt/async_support/hibachi.py +2080 -0
  145. ccxt/async_support/hitbtc.py +395 -167
  146. ccxt/async_support/hitobit.py +12 -12
  147. ccxt/async_support/hollaex.py +307 -119
  148. ccxt/async_support/htx.py +851 -383
  149. ccxt/async_support/huobi.py +2 -1
  150. ccxt/async_support/hyperliquid.py +1848 -536
  151. ccxt/async_support/independentreserve.py +288 -15
  152. ccxt/async_support/indodax.py +190 -33
  153. ccxt/async_support/jibitex.py +12 -12
  154. ccxt/async_support/kraken.py +795 -351
  155. ccxt/async_support/krakenfutures.py +214 -62
  156. ccxt/async_support/kucoin.py +715 -396
  157. ccxt/async_support/kucoinfutures.py +652 -89
  158. ccxt/async_support/latoken.py +217 -113
  159. ccxt/async_support/lbank.py +425 -97
  160. ccxt/async_support/luno.py +382 -35
  161. ccxt/async_support/mercado.py +113 -6
  162. ccxt/async_support/mexc.py +874 -437
  163. ccxt/async_support/modetrade.py +2818 -0
  164. ccxt/async_support/myokx.py +54 -0
  165. ccxt/async_support/ndax.py +221 -64
  166. ccxt/async_support/nobitex.py +32 -38
  167. ccxt/async_support/novadax.py +190 -34
  168. ccxt/async_support/oceanex.py +217 -28
  169. ccxt/async_support/okcoin.py +253 -145
  170. ccxt/async_support/okexchange.py +11 -11
  171. ccxt/async_support/okx.py +1088 -351
  172. ccxt/async_support/okxus.py +54 -0
  173. ccxt/async_support/ompfinex.py +32 -27
  174. ccxt/async_support/onetrading.py +213 -392
  175. ccxt/async_support/oxfun.py +245 -166
  176. ccxt/async_support/p2b.py +151 -29
  177. ccxt/async_support/paradex.py +562 -49
  178. ccxt/async_support/paymium.py +82 -19
  179. ccxt/async_support/phemex.py +713 -172
  180. ccxt/async_support/poloniex.py +1602 -283
  181. ccxt/async_support/probit.py +224 -95
  182. ccxt/async_support/ramzinex.py +34 -30
  183. ccxt/async_support/sarmayex.py +9 -9
  184. ccxt/async_support/sarrafex.py +13 -13
  185. ccxt/async_support/tabdeal.py +15 -14
  186. ccxt/async_support/tetherland.py +9 -9
  187. ccxt/async_support/timex.py +210 -51
  188. ccxt/async_support/tokocrypto.py +167 -47
  189. ccxt/async_support/tradeogre.py +266 -31
  190. ccxt/async_support/twox.py +9 -9
  191. ccxt/async_support/ubitex.py +12 -12
  192. ccxt/async_support/upbit.py +568 -165
  193. ccxt/async_support/vertex.py +160 -32
  194. ccxt/async_support/wallex.py +12 -12
  195. ccxt/async_support/wavesexchange.py +165 -30
  196. ccxt/async_support/whitebit.py +975 -127
  197. ccxt/async_support/woo.py +1918 -1016
  198. ccxt/async_support/woofipro.py +433 -141
  199. ccxt/async_support/xt.py +649 -193
  200. ccxt/async_support/yobit.py +195 -70
  201. ccxt/async_support/zaif.py +91 -15
  202. ccxt/async_support/zonda.py +151 -36
  203. ccxt/base/decimal_to_precision.py +14 -10
  204. ccxt/base/errors.py +49 -18
  205. ccxt/base/exchange.py +1556 -450
  206. ccxt/base/precise.py +10 -0
  207. ccxt/base/types.py +114 -6
  208. ccxt/bequant.py +5 -3
  209. ccxt/bigone.py +279 -144
  210. ccxt/binance.py +2347 -1158
  211. ccxt/binancecoinm.py +9 -3
  212. ccxt/binanceus.py +17 -3
  213. ccxt/binanceusdm.py +9 -4
  214. ccxt/bingx.py +2962 -920
  215. ccxt/bit2c.py +147 -27
  216. ccxt/bitbank.py +151 -23
  217. ccxt/bitbns.py +104 -30
  218. ccxt/bitfinex.py +3290 -1113
  219. ccxt/bitflyer.py +202 -27
  220. ccxt/bitget.py +3683 -1538
  221. ccxt/bithumb.py +194 -38
  222. ccxt/bitimen.py +9 -9
  223. ccxt/bitir.py +35 -35
  224. ccxt/bitmart.py +1288 -350
  225. ccxt/bitmex.py +260 -75
  226. ccxt/bitopro.py +262 -62
  227. ccxt/bitpin.py +15 -14
  228. ccxt/bitrue.py +459 -290
  229. ccxt/bitso.py +199 -54
  230. ccxt/bitstamp.py +230 -96
  231. ccxt/bitteam.py +167 -25
  232. ccxt/{huobijp.py → bittrade.py} +158 -30
  233. ccxt/bitvavo.py +213 -49
  234. ccxt/blockchaincom.py +160 -46
  235. ccxt/blofin.py +502 -120
  236. ccxt/btcalpha.py +169 -31
  237. ccxt/btcbox.py +291 -23
  238. ccxt/btcmarkets.py +211 -58
  239. ccxt/btcturk.py +161 -38
  240. ccxt/bybit.py +1775 -1030
  241. ccxt/cex.py +1439 -1303
  242. ccxt/coinbase.py +724 -212
  243. ccxt/coinbaseadvanced.py +2 -1
  244. ccxt/coinbaseexchange.py +388 -89
  245. ccxt/coinbaseinternational.py +412 -57
  246. ccxt/coincatch.py +177 -78
  247. ccxt/coincheck.py +135 -19
  248. ccxt/coinex.py +606 -232
  249. ccxt/coinmate.py +189 -63
  250. ccxt/coinmetro.py +194 -54
  251. ccxt/coinone.py +158 -51
  252. ccxt/coinsph.py +336 -61
  253. ccxt/coinspot.py +151 -52
  254. ccxt/cryptocom.py +661 -111
  255. ccxt/cryptomus.py +1137 -0
  256. ccxt/defx.py +2070 -0
  257. ccxt/delta.py +299 -99
  258. ccxt/deribit.py +348 -126
  259. ccxt/derive.py +2571 -0
  260. ccxt/digifinex.py +430 -214
  261. ccxt/ellipx.py +2029 -0
  262. ccxt/eterex.py +7 -7
  263. ccxt/excoino.py +29 -29
  264. ccxt/exir.py +11 -11
  265. ccxt/exmo.py +343 -131
  266. ccxt/exnovin.py +8 -8
  267. ccxt/farhadexchange.py +10 -10
  268. ccxt/fmfwio.py +2 -1
  269. ccxt/foxbit.py +1935 -0
  270. ccxt/gate.py +1351 -529
  271. ccxt/gateio.py +2 -1
  272. ccxt/gemini.py +144 -39
  273. ccxt/hashkey.py +152 -109
  274. ccxt/hibachi.py +2079 -0
  275. ccxt/hitbtc.py +395 -167
  276. ccxt/hitobit.py +9 -9
  277. ccxt/hollaex.py +307 -119
  278. ccxt/htx.py +851 -383
  279. ccxt/huobi.py +2 -1
  280. ccxt/hyperliquid.py +1848 -536
  281. ccxt/independentreserve.py +287 -15
  282. ccxt/indodax.py +190 -33
  283. ccxt/jibitex.py +9 -9
  284. ccxt/kraken.py +794 -351
  285. ccxt/krakenfutures.py +214 -62
  286. ccxt/kucoin.py +715 -396
  287. ccxt/kucoinfutures.py +652 -89
  288. ccxt/latoken.py +217 -113
  289. ccxt/lbank.py +425 -97
  290. ccxt/luno.py +382 -35
  291. ccxt/mercado.py +113 -6
  292. ccxt/mexc.py +873 -437
  293. ccxt/modetrade.py +2818 -0
  294. ccxt/myokx.py +54 -0
  295. ccxt/ndax.py +221 -64
  296. ccxt/nobitex.py +30 -36
  297. ccxt/novadax.py +190 -34
  298. ccxt/oceanex.py +217 -28
  299. ccxt/okcoin.py +253 -145
  300. ccxt/okexchange.py +9 -9
  301. ccxt/okx.py +1088 -351
  302. ccxt/okxus.py +54 -0
  303. ccxt/ompfinex.py +29 -24
  304. ccxt/onetrading.py +213 -392
  305. ccxt/oxfun.py +245 -166
  306. ccxt/p2b.py +151 -29
  307. ccxt/paradex.py +562 -49
  308. ccxt/paymium.py +82 -19
  309. ccxt/phemex.py +712 -172
  310. ccxt/poloniex.py +1601 -283
  311. ccxt/pro/__init__.py +76 -17
  312. ccxt/pro/alpaca.py +21 -6
  313. ccxt/pro/apex.py +984 -0
  314. ccxt/pro/ascendex.py +58 -10
  315. ccxt/pro/bequant.py +6 -1
  316. ccxt/pro/binance.py +728 -156
  317. ccxt/pro/binancecoinm.py +6 -2
  318. ccxt/pro/binanceus.py +8 -4
  319. ccxt/pro/binanceusdm.py +7 -2
  320. ccxt/pro/bingx.py +333 -142
  321. ccxt/pro/bitfinex.py +727 -262
  322. ccxt/pro/bitget.py +570 -79
  323. ccxt/pro/bithumb.py +20 -6
  324. ccxt/pro/bitmart.py +216 -87
  325. ccxt/pro/bitmex.py +47 -9
  326. ccxt/pro/bitopro.py +26 -14
  327. ccxt/pro/bitrue.py +22 -22
  328. ccxt/pro/bitstamp.py +54 -21
  329. ccxt/pro/{huobijp.py → bittrade.py} +7 -6
  330. ccxt/pro/bitvavo.py +191 -67
  331. ccxt/pro/blockchaincom.py +21 -8
  332. ccxt/pro/blofin.py +9 -1
  333. ccxt/pro/bybit.py +632 -245
  334. ccxt/pro/cex.py +59 -24
  335. ccxt/pro/coinbase.py +102 -73
  336. ccxt/pro/coinbaseadvanced.py +2 -1
  337. ccxt/pro/coinbaseexchange.py +8 -8
  338. ccxt/pro/coinbaseinternational.py +181 -25
  339. ccxt/pro/coincatch.py +6 -7
  340. ccxt/pro/coincheck.py +11 -6
  341. ccxt/pro/coinex.py +967 -665
  342. ccxt/pro/coinone.py +16 -9
  343. ccxt/pro/cryptocom.py +448 -45
  344. ccxt/pro/defx.py +831 -0
  345. ccxt/pro/deribit.py +150 -14
  346. ccxt/pro/derive.py +704 -0
  347. ccxt/pro/exmo.py +239 -6
  348. ccxt/pro/gate.py +623 -65
  349. ccxt/pro/gateio.py +2 -1
  350. ccxt/pro/gemini.py +27 -11
  351. ccxt/pro/hashkey.py +2 -2
  352. ccxt/pro/hitbtc.py +196 -91
  353. ccxt/pro/hollaex.py +23 -7
  354. ccxt/pro/htx.py +51 -14
  355. ccxt/pro/huobi.py +2 -1
  356. ccxt/pro/hyperliquid.py +591 -27
  357. ccxt/pro/independentreserve.py +9 -6
  358. ccxt/pro/kraken.py +640 -320
  359. ccxt/pro/krakenfutures.py +62 -35
  360. ccxt/pro/kucoin.py +267 -46
  361. ccxt/pro/kucoinfutures.py +165 -21
  362. ccxt/pro/lbank.py +102 -21
  363. ccxt/pro/luno.py +12 -8
  364. ccxt/pro/mexc.py +877 -111
  365. ccxt/pro/modetrade.py +1271 -0
  366. ccxt/pro/myokx.py +38 -0
  367. ccxt/pro/ndax.py +15 -2
  368. ccxt/pro/okcoin.py +23 -4
  369. ccxt/pro/okx.py +573 -98
  370. ccxt/pro/okxus.py +38 -0
  371. ccxt/pro/onetrading.py +30 -13
  372. ccxt/pro/oxfun.py +131 -27
  373. ccxt/pro/p2b.py +88 -22
  374. ccxt/pro/paradex.py +3 -3
  375. ccxt/pro/phemex.py +75 -21
  376. ccxt/pro/poloniex.py +124 -41
  377. ccxt/pro/probit.py +87 -80
  378. ccxt/pro/tradeogre.py +272 -0
  379. ccxt/pro/upbit.py +152 -12
  380. ccxt/pro/vertex.py +8 -3
  381. ccxt/pro/whitebit.py +58 -5
  382. ccxt/pro/woo.py +228 -37
  383. ccxt/pro/woofipro.py +106 -18
  384. ccxt/pro/xt.py +111 -5
  385. ccxt/probit.py +224 -95
  386. ccxt/protobuf/__init__.py +0 -0
  387. ccxt/protobuf/mexc/PrivateAccountV3Api_pb2.py +37 -0
  388. ccxt/protobuf/mexc/PrivateDealsV3Api_pb2.py +37 -0
  389. ccxt/protobuf/mexc/PrivateOrdersV3Api_pb2.py +37 -0
  390. ccxt/protobuf/mexc/PublicAggreBookTickerV3Api_pb2.py +37 -0
  391. ccxt/protobuf/mexc/PublicAggreDealsV3Api_pb2.py +39 -0
  392. ccxt/protobuf/mexc/PublicAggreDepthsV3Api_pb2.py +39 -0
  393. ccxt/protobuf/mexc/PublicBookTickerBatchV3Api_pb2.py +38 -0
  394. ccxt/protobuf/mexc/PublicBookTickerV3Api_pb2.py +37 -0
  395. ccxt/protobuf/mexc/PublicDealsV3Api_pb2.py +39 -0
  396. ccxt/protobuf/mexc/PublicIncreaseDepthsBatchV3Api_pb2.py +38 -0
  397. ccxt/protobuf/mexc/PublicIncreaseDepthsV3Api_pb2.py +39 -0
  398. ccxt/protobuf/mexc/PublicLimitDepthsV3Api_pb2.py +39 -0
  399. ccxt/protobuf/mexc/PublicMiniTickerV3Api_pb2.py +37 -0
  400. ccxt/protobuf/mexc/PublicMiniTickersV3Api_pb2.py +38 -0
  401. ccxt/protobuf/mexc/PublicSpotKlineV3Api_pb2.py +37 -0
  402. ccxt/protobuf/mexc/PushDataV3ApiWrapper_pb2.py +52 -0
  403. ccxt/protobuf/mexc/__init__.py +0 -0
  404. ccxt/ramzinex.py +32 -28
  405. ccxt/sarmayex.py +7 -7
  406. ccxt/sarrafex.py +10 -10
  407. ccxt/static_dependencies/__init__.py +1 -1
  408. ccxt/static_dependencies/lark/py.typed +0 -0
  409. ccxt/static_dependencies/marshmallow/py.typed +0 -0
  410. ccxt/static_dependencies/marshmallow_dataclass/py.typed +0 -0
  411. ccxt/static_dependencies/marshmallow_oneofschema/py.typed +0 -0
  412. ccxt/tabdeal.py +13 -12
  413. ccxt/test/tests_async.py +261 -57
  414. ccxt/test/tests_helpers.py +1 -3
  415. ccxt/test/tests_init.py +4 -3
  416. ccxt/test/tests_sync.py +261 -57
  417. ccxt/tetherland.py +7 -7
  418. ccxt/timex.py +210 -51
  419. ccxt/tokocrypto.py +167 -47
  420. ccxt/tradeogre.py +266 -31
  421. ccxt/twox.py +7 -7
  422. ccxt/ubitex.py +9 -9
  423. ccxt/upbit.py +568 -165
  424. ccxt/vertex.py +160 -32
  425. ccxt/wallex.py +9 -9
  426. ccxt/wavesexchange.py +165 -30
  427. ccxt/whitebit.py +975 -127
  428. ccxt/woo.py +1917 -1016
  429. ccxt/woofipro.py +432 -141
  430. ccxt/xt.py +649 -193
  431. ccxt/yobit.py +194 -70
  432. ccxt/zaif.py +91 -15
  433. ccxt/zonda.py +151 -36
  434. {ccxt_ir-4.3.46.0.3.dist-info → ccxt_ir-4.5.1.dist-info}/METADATA +225 -73
  435. ccxt_ir-4.5.1.dist-info/RECORD +743 -0
  436. {ccxt_ir-4.3.46.0.3.dist-info → ccxt_ir-4.5.1.dist-info}/WHEEL +1 -1
  437. ccxt/__test__.py +0 -7
  438. ccxt/abstract/ace.py +0 -15
  439. ccxt/abstract/bitbay.py +0 -53
  440. ccxt/abstract/bitcoincom.py +0 -115
  441. ccxt/abstract/bitfinex2.py +0 -139
  442. ccxt/abstract/bitpanda.py +0 -35
  443. ccxt/abstract/bl3p.py +0 -19
  444. ccxt/abstract/coinlist.py +0 -54
  445. ccxt/abstract/currencycom.py +0 -68
  446. ccxt/abstract/hitbtc3.py +0 -115
  447. ccxt/abstract/idex.py +0 -26
  448. ccxt/abstract/kuna.py +0 -182
  449. ccxt/abstract/lykke.py +0 -29
  450. ccxt/abstract/poloniexfutures.py +0 -48
  451. ccxt/abstract/wazirx.py +0 -30
  452. ccxt/ace.py +0 -1012
  453. ccxt/async_support/ace.py +0 -1012
  454. ccxt/async_support/base/ws/aiohttp_client.py +0 -125
  455. ccxt/async_support/base/ws/fast_client.py +0 -96
  456. ccxt/async_support/bitbay.py +0 -17
  457. ccxt/async_support/bitcoincom.py +0 -17
  458. ccxt/async_support/bitfinex2.py +0 -3552
  459. ccxt/async_support/bitpanda.py +0 -16
  460. ccxt/async_support/bl3p.py +0 -485
  461. ccxt/async_support/coinlist.py +0 -2243
  462. ccxt/async_support/currencycom.py +0 -1950
  463. ccxt/async_support/hitbtc3.py +0 -16
  464. ccxt/async_support/idex.py +0 -1766
  465. ccxt/async_support/kuna.py +0 -1841
  466. ccxt/async_support/lykke.py +0 -1270
  467. ccxt/async_support/poloniexfutures.py +0 -1717
  468. ccxt/async_support/wazirx.py +0 -1224
  469. ccxt/bitbay.py +0 -17
  470. ccxt/bitcoincom.py +0 -17
  471. ccxt/bitfinex2.py +0 -3552
  472. ccxt/bitpanda.py +0 -16
  473. ccxt/bl3p.py +0 -485
  474. ccxt/coinlist.py +0 -2243
  475. ccxt/currencycom.py +0 -1950
  476. ccxt/hitbtc3.py +0 -16
  477. ccxt/idex.py +0 -1766
  478. ccxt/kuna.py +0 -1841
  479. ccxt/lykke.py +0 -1270
  480. ccxt/poloniexfutures.py +0 -1717
  481. ccxt/pro/bitcoincom.py +0 -34
  482. ccxt/pro/bitfinex2.py +0 -1083
  483. ccxt/pro/bitpanda.py +0 -15
  484. ccxt/pro/currencycom.py +0 -536
  485. ccxt/pro/idex.py +0 -672
  486. ccxt/pro/poloniexfutures.py +0 -990
  487. ccxt/pro/wazirx.py +0 -749
  488. ccxt/test/base/__init__.py +0 -29
  489. ccxt/test/base/test_account.py +0 -26
  490. ccxt/test/base/test_balance.py +0 -56
  491. ccxt/test/base/test_borrow_interest.py +0 -35
  492. ccxt/test/base/test_borrow_rate.py +0 -32
  493. ccxt/test/base/test_calculate_fee.py +0 -51
  494. ccxt/test/base/test_crypto.py +0 -127
  495. ccxt/test/base/test_currency.py +0 -76
  496. ccxt/test/base/test_datetime.py +0 -109
  497. ccxt/test/base/test_decimal_to_precision.py +0 -392
  498. ccxt/test/base/test_deep_extend.py +0 -68
  499. ccxt/test/base/test_deposit_withdrawal.py +0 -50
  500. ccxt/test/base/test_exchange_datetime_functions.py +0 -76
  501. ccxt/test/base/test_funding_rate_history.py +0 -29
  502. ccxt/test/base/test_last_price.py +0 -31
  503. ccxt/test/base/test_ledger_entry.py +0 -45
  504. ccxt/test/base/test_ledger_item.py +0 -48
  505. ccxt/test/base/test_leverage_tier.py +0 -33
  506. ccxt/test/base/test_liquidation.py +0 -50
  507. ccxt/test/base/test_margin_mode.py +0 -24
  508. ccxt/test/base/test_margin_modification.py +0 -35
  509. ccxt/test/base/test_market.py +0 -193
  510. ccxt/test/base/test_number.py +0 -411
  511. ccxt/test/base/test_ohlcv.py +0 -33
  512. ccxt/test/base/test_open_interest.py +0 -32
  513. ccxt/test/base/test_order.py +0 -64
  514. ccxt/test/base/test_order_book.py +0 -69
  515. ccxt/test/base/test_position.py +0 -60
  516. ccxt/test/base/test_shared_methods.py +0 -353
  517. ccxt/test/base/test_status.py +0 -24
  518. ccxt/test/base/test_throttle.py +0 -126
  519. ccxt/test/base/test_ticker.py +0 -92
  520. ccxt/test/base/test_trade.py +0 -47
  521. ccxt/test/base/test_trading_fee.py +0 -26
  522. ccxt/test/base/test_transaction.py +0 -39
  523. ccxt/test/test_async.py +0 -1649
  524. ccxt/test/test_sync.py +0 -1648
  525. ccxt/wazirx.py +0 -1224
  526. ccxt_ir-4.3.46.0.3.dist-info/RECORD +0 -773
  527. /ccxt/abstract/{huobijp.py → bittrade.py} +0 -0
  528. {ccxt_ir-4.3.46.0.3.dist-info → ccxt_ir-4.5.1.dist-info/licenses}/LICENSE.txt +0 -0
  529. {ccxt_ir-4.3.46.0.3.dist-info → ccxt_ir-4.5.1.dist-info}/top_level.txt +0 -0
@@ -5,17 +5,17 @@
5
5
 
6
6
  from ccxt.async_support.base.exchange import Exchange
7
7
  from ccxt.abstract.ramzinex import ImplicitAPI
8
- from ccxt.base.types import Int, Market, OrderBook, Strings, Ticker, Tickers
8
+ from ccxt.base.types import Any, Int, Market, OrderBook, Strings, Ticker, Tickers
9
9
  from typing import List
10
10
 
11
11
 
12
12
  class ramzinex(Exchange, ImplicitAPI):
13
13
 
14
- def describe(self):
14
+ def describe(self) -> Any:
15
15
  return self.deep_extend(super(ramzinex, self).describe(), {
16
16
  'id': 'ramzinex',
17
17
  'name': 'Ramzinex',
18
- 'country': ['IR'],
18
+ 'countries': ['IR'],
19
19
  'rateLimit': 1000,
20
20
  'version': '1',
21
21
  'certified': False,
@@ -129,10 +129,10 @@ class ramzinex(Exchange, ImplicitAPI):
129
129
  },
130
130
  })
131
131
 
132
- async def fetch_markets(self, symbols: Strings = None, params={}) -> List[Market]:
132
+ async def fetch_markets(self, params={}) -> List[Market]:
133
133
  """
134
134
  retrieves data on all markets for ramzinex
135
- :see: https://apidocs.ramzinex.ir/#6ae2dae4a2
135
+ https://apidocs.ramzinex.ir/#6ae2dae4a2
136
136
  :param dict [params]: extra parameters specific to the exchange API endpoint
137
137
  :returns dict[]: an array of objects representing market data
138
138
  """
@@ -140,7 +140,7 @@ class ramzinex(Exchange, ImplicitAPI):
140
140
  markets = self.safe_list(response, 'data')
141
141
  result = []
142
142
  for i in range(0, len(markets)):
143
- market = await self.parse_market(markets[i])
143
+ market = self.parse_market(markets[i])
144
144
  result.append(market)
145
145
  return result
146
146
 
@@ -252,7 +252,7 @@ class ramzinex(Exchange, ImplicitAPI):
252
252
  async def fetch_tickers(self, symbols: Strings = None, params={}) -> Tickers:
253
253
  """
254
254
  fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
255
- :see: https://api-doc.ramzinex.com/#get-5
255
+ https://api-doc.ramzinex.com/#get-5
256
256
  :param str[]|None symbols: unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
257
257
  :param dict [params]: extra parameters specific to the exchange API endpoint
258
258
  :returns dict: a dictionary of `ticker structures <https://docs.ccxt.com/#/?id=ticker-structure>`
@@ -262,9 +262,12 @@ class ramzinex(Exchange, ImplicitAPI):
262
262
  symbols = self.market_symbols(symbols)
263
263
  response = await self.publicGetExchangeApiV10ExchangePairs()
264
264
  markets = self.safe_list(response, 'data')
265
- result = []
265
+ result = {}
266
266
  for i in range(0, len(markets)):
267
- ticker = await self.parse_ticker(markets[i])
267
+ market = markets[i]
268
+ if not market or not market['financial'] or market['financial'] == 0:
269
+ continue
270
+ ticker = self.parse_ticker(market)
268
271
  symbol = ticker['symbol']
269
272
  result[symbol] = ticker
270
273
  return self.filter_by_array_tickers(result, 'symbol', symbols)
@@ -272,7 +275,7 @@ class ramzinex(Exchange, ImplicitAPI):
272
275
  async def fetch_ticker(self, symbol: str, params={}) -> Ticker:
273
276
  """
274
277
  fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
275
- :see: https://api-doc.ramzinex.com/#get-5
278
+ https://api-doc.ramzinex.com/#get-5
276
279
  :param str symbol: unified symbol of the market to fetch the ticker for
277
280
  :param dict [params]: extra parameters specific to the exchange API endpoint
278
281
  :returns dict: a `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`
@@ -284,7 +287,7 @@ class ramzinex(Exchange, ImplicitAPI):
284
287
  }
285
288
  response = await self.publicGetExchangeApiV10ExchangePairs(request)
286
289
  markets = self.safe_dict(response, 'data')
287
- ticker = await self.parse_ticker(markets)
290
+ ticker = self.parse_ticker(markets)
288
291
  return ticker
289
292
 
290
293
  def parse_ticker(self, ticker, market: Market = None) -> Ticker:
@@ -350,14 +353,14 @@ class ramzinex(Exchange, ImplicitAPI):
350
353
  quoteVolume = self.safe_float(tickerinfo, 'quote_volume')
351
354
  baseVolume = self.safe_float(tickerinfo, 'base_volume')
352
355
  if marketinfo['quote'] == 'IRT':
353
- high /= 10
354
- low /= 10
355
- bid /= 10
356
- ask /= 10
357
- open /= 10
358
- close /= 10
359
- last /= 10
360
- quoteVolume /= 10
356
+ high = high * 10 if high else 0
357
+ low = low / 10 if low else 0
358
+ bid = bid / 10 if bid else 0
359
+ ask = ask / 10 if ask else 0
360
+ open = open / 10 if open else 0
361
+ close = close / 10 if close else 0
362
+ last = last / 10 if last else 0
363
+ quoteVolume = quoteVolume / 10 if quoteVolume else 0
361
364
  return self.safe_ticker({
362
365
  'symbol': symbol,
363
366
  'timestamp': None,
@@ -384,7 +387,7 @@ class ramzinex(Exchange, ImplicitAPI):
384
387
  async def fetch_ohlcv(self, symbol: str, timeframe='1m', since: Int = None, limit: Int = None, params={}) -> List[list]:
385
388
  """
386
389
  fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market
387
- :see: https://api-doc.ramzinex.com/
390
+ https://api-doc.ramzinex.com/
388
391
  :param str symbol: unified symbol of the market to fetch OHLCV data for
389
392
  :param str timeframe: the length of time each candle represents
390
393
  :param int [since]: timestamp in ms of the earliest candle to fetch
@@ -420,11 +423,11 @@ class ramzinex(Exchange, ImplicitAPI):
420
423
  ohlcvs = []
421
424
  for i in range(0, len(openList)):
422
425
  if market['quote'] == 'IRT':
423
- openList[i] /= 10
424
- highList[i] /= 10
425
- lastList[i] /= 10
426
- closeList[i] /= 10
427
- volumeList[i] /= 10
426
+ openList[i] = openList[i] / 10 if openList[i] else 0
427
+ highList[i] = highList[i] / 10 if highList[i] else 0
428
+ lastList[i] = lastList[i] / 10 if lastList[i] else 0
429
+ closeList[i] = closeList[i] / 10 if closeList[i] else 0
430
+ volumeList[i] = volumeList[i] / 10 if volumeList[i] else 0
428
431
  ohlcvs.append([
429
432
  timestampList[i],
430
433
  openList[i],
@@ -438,7 +441,7 @@ class ramzinex(Exchange, ImplicitAPI):
438
441
  async def fetch_order_book(self, symbol: str, limit: Int = None, params={}) -> OrderBook:
439
442
  """
440
443
  fetches information on open orders with bid(buy) and ask(sell) prices, volumes and other data for multiple markets
441
- :see: https://api-doc.ramzinex.com/#get
444
+ https://api-doc.ramzinex.com/#get
442
445
  :param str[]|None symbols: list of unified market symbols, all symbols fetched if None, default is None
443
446
  :param int [limit]: max number of entries per orderbook to return, default is None
444
447
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -455,9 +458,9 @@ class ramzinex(Exchange, ImplicitAPI):
455
458
  bids = self.safe_list(orderbook, 'sells')
456
459
  asks = self.safe_list(orderbook, 'buys')
457
460
  for i in range(0, len(bids)):
458
- bids[i][0] /= 10
461
+ bids[i][0] = bids[i][0] / 10 if bids[i][0] else 0
459
462
  for i in range(0, len(asks)):
460
- asks[i][0] /= 10
463
+ asks[i][0] = asks[i][0] / 10 if asks[i][0] else 0
461
464
  orderbook['buys'] = asks
462
465
  orderbook['sells'] = bids
463
466
  timestamp = Date.now()
@@ -466,8 +469,9 @@ class ramzinex(Exchange, ImplicitAPI):
466
469
  def sign(self, path, api='public', method='GET', params={}, headers=None, body=None):
467
470
  query = self.omit(params, self.extract_params(path))
468
471
  url = self.urls['api']['public'] + '/' + path
469
- if params['pair_id'] is not None:
470
- url = url + '/' + params['pair_id']
472
+ pair_id = self.safe_string(params, 'pair_id')
473
+ if pair_id is not None:
474
+ url = url + '/' + pair_id
471
475
  if path == 'exchange/api/v1.0/exchange/chart/tv/history':
472
476
  url = self.urls['api']['public'] + '/' + path + '?' + self.urlencode(query)
473
477
  if path == 'exchange/api/v1.0/exchange/orderbooks':
@@ -5,17 +5,17 @@
5
5
 
6
6
  from ccxt.async_support.base.exchange import Exchange
7
7
  from ccxt.abstract.sarmayex import ImplicitAPI
8
- from ccxt.base.types import Market, Strings, Ticker, Tickers
8
+ from ccxt.base.types import Any, Market, Strings, Ticker, Tickers
9
9
  from typing import List
10
10
 
11
11
 
12
12
  class sarmayex(Exchange, ImplicitAPI):
13
13
 
14
- def describe(self):
14
+ def describe(self) -> Any:
15
15
  return self.deep_extend(super(sarmayex, self).describe(), {
16
16
  'id': 'sarmayex',
17
17
  'name': 'Sarmayex',
18
- 'country': ['IR'],
18
+ 'countries': ['IR'],
19
19
  'rateLimit': 1000,
20
20
  'version': '1',
21
21
  'certified': False,
@@ -111,10 +111,10 @@ class sarmayex(Exchange, ImplicitAPI):
111
111
  },
112
112
  })
113
113
 
114
- async def fetch_markets(self, symbols: Strings = None, params={}) -> List[Market]:
114
+ async def fetch_markets(self, params={}) -> List[Market]:
115
115
  """
116
116
  retrieves data on all markets for sarmayex
117
- :see: https://api.sarmayex.com/api/v1/public/currencies
117
+ https://api.sarmayex.com/api/v1/public/currencies
118
118
  :param dict [params]: extra parameters specific to the exchange API endpoint
119
119
  :returns dict[]: an array of objects representing market data
120
120
  """
@@ -131,7 +131,7 @@ class sarmayex(Exchange, ImplicitAPI):
131
131
  markets[i]['quote'] = quote
132
132
  if base == quote:
133
133
  continue
134
- market = await self.parse_market(markets[i])
134
+ market = self.parse_market(markets[i])
135
135
  result.append(market)
136
136
  return result
137
137
 
@@ -237,7 +237,7 @@ class sarmayex(Exchange, ImplicitAPI):
237
237
  async def fetch_tickers(self, symbols: Strings = None, params={}) -> Tickers:
238
238
  """
239
239
  fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
240
- :see: https://api.sarmayex.com/api/v1/public/currencies
240
+ https://api.sarmayex.com/api/v1/public/currencies
241
241
  :param str[]|None symbols: unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
242
242
  :param dict [params]: extra parameters specific to the exchange API endpoint
243
243
  :returns dict: a dictionary of `ticker structures <https://docs.ccxt.com/#/?id=ticker-structure>`
@@ -259,7 +259,7 @@ class sarmayex(Exchange, ImplicitAPI):
259
259
  markets[i]['base'] = base
260
260
  markets[i]['quote'] = quote
261
261
  markets[i]['symbol'] = base + quote
262
- ticker = await self.parse_ticker(markets[i])
262
+ ticker = self.parse_ticker(markets[i])
263
263
  symbol = ticker['symbol']
264
264
  result[symbol] = ticker
265
265
  return self.filter_by_array_tickers(result, 'symbol', symbols)
@@ -267,7 +267,7 @@ class sarmayex(Exchange, ImplicitAPI):
267
267
  async def fetch_ticker(self, symbol: str, params={}) -> Ticker:
268
268
  """
269
269
  fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
270
- :see: https://api.sarmayex.com/api/v1/public/currencies
270
+ https://api.sarmayex.com/api/v1/public/currencies
271
271
  :param str symbol: unified symbol of the market to fetch the ticker for
272
272
  :param dict [params]: extra parameters specific to the exchange API endpoint
273
273
  :returns dict: a `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`
@@ -5,17 +5,17 @@
5
5
 
6
6
  from ccxt.async_support.base.exchange import Exchange
7
7
  from ccxt.abstract.sarrafex import ImplicitAPI
8
- from ccxt.base.types import Int, Market, OrderBook, Strings, Ticker, Tickers
8
+ from ccxt.base.types import Any, Int, Market, OrderBook, Strings, Ticker, Tickers
9
9
  from typing import List
10
10
 
11
11
 
12
12
  class sarrafex(Exchange, ImplicitAPI):
13
13
 
14
- def describe(self):
14
+ def describe(self) -> Any:
15
15
  return self.deep_extend(super(sarrafex, self).describe(), {
16
16
  'id': 'sarrafex',
17
17
  'name': 'Sarrafex',
18
- 'country': ['IR'],
18
+ 'countries': ['IR'],
19
19
  'rateLimit': 1000,
20
20
  'version': '1',
21
21
  'certified': False,
@@ -130,10 +130,10 @@ class sarrafex(Exchange, ImplicitAPI):
130
130
  },
131
131
  })
132
132
 
133
- async def fetch_markets(self, symbols: Strings = None, params={}) -> List[Market]:
133
+ async def fetch_markets(self, params={}) -> List[Market]:
134
134
  """
135
135
  retrieves data on all markets for sarrafex
136
- :see: https://sarrafex.io/
136
+ https://sarrafex.io/
137
137
  :param dict [params]: extra parameters specific to the exchange API endpoint
138
138
  :returns dict[]: an array of objects representing market data
139
139
  """
@@ -141,7 +141,7 @@ class sarrafex(Exchange, ImplicitAPI):
141
141
  markets = self.safe_list(response, 'value')
142
142
  result = []
143
143
  for i in range(0, len(markets)):
144
- market = await self.parse_market(markets[i])
144
+ market = self.parse_market(markets[i])
145
145
  result.append(market)
146
146
  return result
147
147
 
@@ -268,7 +268,7 @@ class sarrafex(Exchange, ImplicitAPI):
268
268
  async def fetch_tickers(self, symbols: Strings = None, params={}) -> Tickers:
269
269
  """
270
270
  fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
271
- :see: https://sarrafex.io/
271
+ https://sarrafex.io/
272
272
  :param str[]|None symbols: unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
273
273
  :param dict [params]: extra parameters specific to the exchange API endpoint
274
274
  :returns dict: a dictionary of `ticker structures <https://docs.ccxt.com/#/?id=ticker-structure>`
@@ -280,7 +280,7 @@ class sarrafex(Exchange, ImplicitAPI):
280
280
  markets = self.safe_list(response, 'value')
281
281
  result = {}
282
282
  for i in range(0, len(markets)):
283
- ticker = await self.parse_ticker(markets[i])
283
+ ticker = self.parse_ticker(markets[i])
284
284
  symbol = ticker['symbol']
285
285
  result[symbol] = ticker
286
286
  return self.filter_by_array_tickers(result, 'symbol', symbols)
@@ -288,7 +288,7 @@ class sarrafex(Exchange, ImplicitAPI):
288
288
  async def fetch_ticker(self, symbol: str, params={}) -> Ticker:
289
289
  """
290
290
  fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
291
- :see: https://sarrafex.io/
291
+ https://sarrafex.io/
292
292
  :param str symbol: unified symbol of the market to fetch the ticker for
293
293
  :param dict [params]: extra parameters specific to the exchange API endpoint
294
294
  :returns dict: a `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`
@@ -300,7 +300,7 @@ class sarrafex(Exchange, ImplicitAPI):
300
300
  }
301
301
  response = await self.publicGetApiGatewayExchangerQueryMarket(request)
302
302
  pair = self.safe_list(response, 'value')
303
- ticker = await self.parse_ticker(pair[0])
303
+ ticker = self.parse_ticker(pair[0])
304
304
  return ticker
305
305
 
306
306
  def parse_ticker(self, ticker, market: Market = None) -> Ticker:
@@ -380,7 +380,7 @@ class sarrafex(Exchange, ImplicitAPI):
380
380
  datetime = self.safe_string(ticker, 'timestamp')
381
381
  return self.safe_ticker({
382
382
  'symbol': symbol,
383
- 'timestamp': Date.parse(datetime),
383
+ 'timestamp': self.safe_timestamp(ticker, 'timestamp'),
384
384
  'datetime': datetime,
385
385
  'high': high,
386
386
  'low': low,
@@ -404,7 +404,7 @@ class sarrafex(Exchange, ImplicitAPI):
404
404
  async def fetch_ohlcv(self, symbol: str, timeframe='1m', since: Int = None, limit: Int = None, params={}) -> List[list]:
405
405
  """
406
406
  fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market
407
- :see: https://sarrafex.io/
407
+ https://sarrafex.io/
408
408
  :param str symbol: unified symbol of the market to fetch OHLCV data for
409
409
  :param str timeframe: the length of time each candle represents
410
410
  :param int [since]: timestamp in ms of the earliest candle to fetch
@@ -451,7 +451,7 @@ class sarrafex(Exchange, ImplicitAPI):
451
451
  async def fetch_order_book(self, symbol: str, limit: Int = None, params={}) -> OrderBook:
452
452
  """
453
453
  fetches information on open orders with bid(buy) and ask(sell) prices, volumes and other data for multiple markets
454
- :see: https://sarrafex.io/
454
+ https://sarrafex.io/
455
455
  :param str[]|None symbols: list of unified market symbols, all symbols fetched if None, default is None
456
456
  :param int [limit]: max number of entries per orderbook to return, default is None
457
457
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -5,17 +5,17 @@
5
5
 
6
6
  from ccxt.async_support.base.exchange import Exchange
7
7
  from ccxt.abstract.tabdeal import ImplicitAPI
8
- from ccxt.base.types import Int, Market, OrderBook, Strings, Ticker, Tickers
8
+ from ccxt.base.types import Any, Int, Market, OrderBook, Strings, Ticker, Tickers
9
9
  from typing import List
10
10
 
11
11
 
12
12
  class tabdeal(Exchange, ImplicitAPI):
13
13
 
14
- def describe(self):
14
+ def describe(self) -> Any:
15
15
  return self.deep_extend(super(tabdeal, self).describe(), {
16
16
  'id': 'tabdeal',
17
17
  'name': 'Tabdeal',
18
- 'country': ['IR'],
18
+ 'countries': ['IR'],
19
19
  'rateLimit': 1000,
20
20
  'version': '1',
21
21
  'certified': False,
@@ -128,17 +128,17 @@ class tabdeal(Exchange, ImplicitAPI):
128
128
  },
129
129
  })
130
130
 
131
- async def fetch_markets(self, symbols: Strings = None, params={}) -> List[Market]:
131
+ async def fetch_markets(self, params={}) -> List[Market]:
132
132
  """
133
133
  retrieves data on all markets for tabdeal
134
- :see: https://docs.tabdeal.org/#e626e3bd10
134
+ https://docs.tabdeal.org/#e626e3bd10
135
135
  :param dict [params]: extra parameters specific to the exchange API endpoint
136
136
  :returns dict[]: an array of objects representing market data
137
137
  """
138
138
  response = await self.publicGetPlotsMarketInformation(params)
139
139
  result = []
140
140
  for i in range(0, len(response)):
141
- market = await self.parse_market(response[i])
141
+ market = self.parse_market(response[i])
142
142
  result.append(market)
143
143
  return result
144
144
 
@@ -214,7 +214,7 @@ class tabdeal(Exchange, ImplicitAPI):
214
214
  async def fetch_tickers(self, symbols: Strings = None, params={}) -> Tickers:
215
215
  """
216
216
  fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
217
- :see: https://docs.tabdeal.org/#e626e3bd10
217
+ https://docs.tabdeal.org/#e626e3bd10
218
218
  :param str[]|None symbols: unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
219
219
  :param dict [params]: extra parameters specific to the exchange API endpoint
220
220
  :returns dict: a dictionary of `ticker structures <https://docs.ccxt.com/#/?id=ticker-structure>`
@@ -223,9 +223,9 @@ class tabdeal(Exchange, ImplicitAPI):
223
223
  if symbols is not None:
224
224
  symbols = self.market_symbols(symbols)
225
225
  response = await self.publicGetPlotsMarketInformation(params)
226
- result = []
226
+ result = {}
227
227
  for i in range(0, len(response)):
228
- market = await self.parse_ticker(response[i])
228
+ market = self.parse_ticker(response[i])
229
229
  symbol = market['symbol']
230
230
  result[symbol] = market
231
231
  return self.filter_by_array_tickers(result, 'symbol', symbols)
@@ -233,7 +233,7 @@ class tabdeal(Exchange, ImplicitAPI):
233
233
  async def fetch_ticker(self, symbol: str, params={}) -> Ticker:
234
234
  """
235
235
  fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
236
- :see: https://docs.tabdeal.org/#e626e3bd10
236
+ https://docs.tabdeal.org/#e626e3bd10
237
237
  :param str symbol: unified symbol of the market to fetch the ticker for
238
238
  :param dict [params]: extra parameters specific to the exchange API endpoint
239
239
  :returns dict: a `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`
@@ -264,10 +264,11 @@ class tabdeal(Exchange, ImplicitAPI):
264
264
  ask = self.safe_float(ticker, 'price', 0)
265
265
  last = self.safe_float(ticker, 'price', 0)
266
266
  baseVolume = self.safe_float(ticker, 'volume', 0)
267
+ quoteVolume = baseVolume * last
267
268
  datetime = self.safe_string(ticker, 'created')
268
269
  return self.safe_ticker({
269
270
  'symbol': symbol,
270
- 'timestamp': Date.parse(datetime),
271
+ 'timestamp': self.safe_timestamp(ticker, 'created'),
271
272
  'datetime': datetime,
272
273
  'high': high,
273
274
  'low': low,
@@ -284,14 +285,14 @@ class tabdeal(Exchange, ImplicitAPI):
284
285
  'percentage': None,
285
286
  'average': None,
286
287
  'baseVolume': baseVolume,
287
- 'quoteVolume': None,
288
+ 'quoteVolume': quoteVolume,
288
289
  'info': ticker,
289
290
  }, market)
290
291
 
291
292
  async def fetch_ohlcv(self, symbol: str, timeframe='1m', since: Int = None, limit: Int = None, params={}) -> List[list]:
292
293
  """
293
294
  fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market
294
- :see: https://docs.tabdeal.org/
295
+ https://docs.tabdeal.org/
295
296
  :param str symbol: unified symbol of the market to fetch OHLCV data for
296
297
  :param str timeframe: the length of time each candle represents
297
298
  :param int [since]: timestamp in ms of the earliest candle to fetch
@@ -338,7 +339,7 @@ class tabdeal(Exchange, ImplicitAPI):
338
339
  async def fetch_order_book(self, symbol: str, limit: Int = None, params={}) -> OrderBook:
339
340
  """
340
341
  fetches information on open orders with bid(buy) and ask(sell) prices, volumes and other data for multiple markets
341
- :see: https://docs.tabdeal.org/#89d8266ab8
342
+ https://docs.tabdeal.org/#89d8266ab8
342
343
  :param str[]|None symbols: list of unified market symbols, all symbols fetched if None, default is None
343
344
  :param int [limit]: max number of entries per orderbook to return, default is None
344
345
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -5,17 +5,17 @@
5
5
 
6
6
  from ccxt.async_support.base.exchange import Exchange
7
7
  from ccxt.abstract.tetherland import ImplicitAPI
8
- from ccxt.base.types import Market, Strings, Ticker, Tickers
8
+ from ccxt.base.types import Any, Market, Strings, Ticker, Tickers
9
9
  from typing import List
10
10
 
11
11
 
12
12
  class tetherland(Exchange, ImplicitAPI):
13
13
 
14
- def describe(self):
14
+ def describe(self) -> Any:
15
15
  return self.deep_extend(super(tetherland, self).describe(), {
16
16
  'id': 'tetherland',
17
17
  'name': 'TetherLand',
18
- 'country': ['IR'],
18
+ 'countries': ['IR'],
19
19
  'rateLimit': 1000,
20
20
  'version': '1',
21
21
  'certified': False,
@@ -111,10 +111,10 @@ class tetherland(Exchange, ImplicitAPI):
111
111
  },
112
112
  })
113
113
 
114
- async def fetch_markets(self, symbols: Strings = None, params={}) -> List[Market]:
114
+ async def fetch_markets(self, params={}) -> List[Market]:
115
115
  """
116
116
  retrieves data on all markets for tetherland
117
- :see: https://docs.tetherland.com/docs/tetherland/71ca11f41704f-user-api
117
+ https://docs.tetherland.com/docs/tetherland/71ca11f41704f-user-api
118
118
  :param dict [params]: extra parameters specific to the exchange API endpoint
119
119
  :returns dict[]: an array of objects representing market data
120
120
  """
@@ -127,7 +127,7 @@ class tetherland(Exchange, ImplicitAPI):
127
127
  if markets[i]['symbol'] == 'USDT' and quotes[key] == 'USDT':
128
128
  continue
129
129
  markets[i]['quote'] = quotes[key]
130
- market = await self.parse_market(markets[i])
130
+ market = self.parse_market(markets[i])
131
131
  result.append(market)
132
132
  return result
133
133
 
@@ -234,7 +234,7 @@ class tetherland(Exchange, ImplicitAPI):
234
234
  async def fetch_tickers(self, symbols: Strings = None, params={}) -> Tickers:
235
235
  """
236
236
  fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
237
- :see: https://docs.tetherland.com/docs/tetherland/71ca11f41704f-user-api
237
+ https://docs.tetherland.com/docs/tetherland/71ca11f41704f-user-api
238
238
  :param str[]|None symbols: unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
239
239
  :param dict [params]: extra parameters specific to the exchange API endpoint
240
240
  :returns dict: a dictionary of `ticker structures <https://docs.ccxt.com/#/?id=ticker-structure>`
@@ -252,7 +252,7 @@ class tetherland(Exchange, ImplicitAPI):
252
252
  continue
253
253
  markets[i]['quote'] = quotes[key]
254
254
  markets[i]['id'] = markets[i]['symbol'] + '/' + markets[i]['quote']
255
- market = await self.parse_ticker(markets[i])
255
+ market = self.parse_ticker(markets[i])
256
256
  symbol = market['symbol']
257
257
  result[symbol] = market
258
258
  return self.filter_by_array_tickers(result, 'symbol', symbols)
@@ -260,7 +260,7 @@ class tetherland(Exchange, ImplicitAPI):
260
260
  async def fetch_ticker(self, symbol: str, params={}) -> Ticker:
261
261
  """
262
262
  fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
263
- :see: https://docs.tetherland.com/docs/tetherland/71ca11f41704f-user-api
263
+ https://docs.tetherland.com/docs/tetherland/71ca11f41704f-user-api
264
264
  :param str symbol: unified symbol of the market to fetch the ticker for
265
265
  :param dict [params]: extra parameters specific to the exchange API endpoint
266
266
  :returns dict: a `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`