ccxt-ir 4.3.46.0.3__py2.py3-none-any.whl → 4.5.0__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 +7 -7
  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 +9 -9
  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 +31 -37
  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 +25 -24
  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 +30 -27
  183. ccxt/async_support/sarmayex.py +9 -9
  184. ccxt/async_support/sarrafex.py +13 -13
  185. ccxt/async_support/tabdeal.py +14 -13
  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 +29 -35
  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 +22 -21
  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 +28 -25
  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 +12 -11
  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.0.dist-info}/METADATA +225 -73
  435. ccxt_ir-4.5.0.dist-info/RECORD +743 -0
  436. {ccxt_ir-4.3.46.0.3.dist-info → ccxt_ir-4.5.0.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.0.dist-info/licenses}/LICENSE.txt +0 -0
  529. {ccxt_ir-4.3.46.0.3.dist-info → ccxt_ir-4.5.0.dist-info}/top_level.txt +0 -0
@@ -1,392 +0,0 @@
1
- import os
2
- import sys
3
-
4
- root = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
5
- sys.path.append(root)
6
-
7
- # ----------------------------------------------------------------------------
8
-
9
- # PLEASE DO NOT EDIT THIS FILE, IT IS GENERATED AND WILL BE OVERWRITTEN:
10
- # https://github.com/ccxt/ccxt/blob/master/CONTRIBUTING.md#how-to-contribute-code
11
-
12
- # ----------------------------------------------------------------------------
13
-
14
- from ccxt.base.decimal_to_precision import decimal_to_precision # noqa F401
15
- from ccxt.base.decimal_to_precision import TRUNCATE # noqa F401
16
- from ccxt.base.decimal_to_precision import ROUND # noqa F401
17
- from ccxt.base.decimal_to_precision import DECIMAL_PLACES # noqa F401
18
- from ccxt.base.decimal_to_precision import SIGNIFICANT_DIGITS # noqa F401
19
- from ccxt.base.decimal_to_precision import TICK_SIZE # noqa F401
20
- from ccxt.base.decimal_to_precision import PAD_WITH_ZERO # noqa F401
21
- from ccxt.base.decimal_to_precision import NO_PADDING # noqa F401
22
- from ccxt.base.decimal_to_precision import number_to_string # noqa F401
23
- from ccxt.base.exchange import Exchange # noqa F401
24
- from ccxt.base.precise import Precise # noqa F401
25
-
26
-
27
- # @ts-nocheck
28
- # eslint-disable-next-line
29
-
30
- # ----------------------------------------------------------------------------
31
- # number_to_string
32
-
33
- assert number_to_string(-7.8e-7) == '-0.00000078'
34
- assert number_to_string(7.8e-7) == '0.00000078'
35
- assert number_to_string(-17.805e-7) == '-0.0000017805'
36
- assert number_to_string(17.805e-7) == '0.0000017805'
37
- assert number_to_string(-7.0005e27) == '-7000500000000000000000000000'
38
- assert number_to_string(7.0005e27) == '7000500000000000000000000000'
39
- assert number_to_string(-7.9e27) == '-7900000000000000000000000000'
40
- assert number_to_string(7e27) == '7000000000000000000000000000'
41
- assert number_to_string(7.9e27) == '7900000000000000000000000000'
42
- assert number_to_string(-12.345) == '-12.345'
43
- assert number_to_string(12.345) == '12.345'
44
- assert number_to_string(0) == '0'
45
- assert number_to_string(7.35946e21) == '7359460000000000000000'
46
- assert number_to_string(0.00000001) == '0.00000001'
47
- assert number_to_string(1e-7) == '0.0000001'
48
- assert number_to_string(-1e-7) == '-0.0000001'
49
-
50
- # ----------------------------------------------------------------------------
51
- # testDecimalToPrecisionTruncationToNDigitsAfterDot
52
-
53
- assert decimal_to_precision('12.3456000', TRUNCATE, 100, DECIMAL_PLACES) == '12.3456'
54
- assert decimal_to_precision('12.3456', TRUNCATE, 100, DECIMAL_PLACES) == '12.3456'
55
- assert decimal_to_precision('12.3456', TRUNCATE, 4, DECIMAL_PLACES) == '12.3456'
56
- assert decimal_to_precision('12.3456', TRUNCATE, 3, DECIMAL_PLACES) == '12.345'
57
- assert decimal_to_precision('12.3456', TRUNCATE, 2, DECIMAL_PLACES) == '12.34'
58
- assert decimal_to_precision('12.3456', TRUNCATE, 1, DECIMAL_PLACES) == '12.3'
59
- assert decimal_to_precision('12.3456', TRUNCATE, 0, DECIMAL_PLACES) == '12'
60
-
61
- assert decimal_to_precision('0.0000001', TRUNCATE, 8, DECIMAL_PLACES) == '0.0000001'
62
- assert decimal_to_precision('0.00000001', TRUNCATE, 8, DECIMAL_PLACES) == '0.00000001'
63
-
64
- assert decimal_to_precision('0.000000000', TRUNCATE, 9, DECIMAL_PLACES, PAD_WITH_ZERO) == '0.000000000'
65
- assert decimal_to_precision('0.000000001', TRUNCATE, 9, DECIMAL_PLACES, PAD_WITH_ZERO) == '0.000000001'
66
-
67
- assert decimal_to_precision('12.3456', TRUNCATE, -1, DECIMAL_PLACES) == '10'
68
- assert decimal_to_precision('123.456', TRUNCATE, -1, DECIMAL_PLACES) == '120'
69
- assert decimal_to_precision('123.456', TRUNCATE, -2, DECIMAL_PLACES) == '100'
70
- assert decimal_to_precision('9.99999', TRUNCATE, -1, DECIMAL_PLACES) == '0'
71
- assert decimal_to_precision('99.9999', TRUNCATE, -1, DECIMAL_PLACES) == '90'
72
- assert decimal_to_precision('99.9999', TRUNCATE, -2, DECIMAL_PLACES) == '0'
73
-
74
- assert decimal_to_precision('0', TRUNCATE, 0, DECIMAL_PLACES) == '0'
75
- assert decimal_to_precision('-0.9', TRUNCATE, 0, DECIMAL_PLACES) == '0'
76
-
77
- # ----------------------------------------------------------------------------
78
- # testDecimalToPrecisionTruncationToNSignificantDigits
79
-
80
- assert decimal_to_precision('0.000123456700', TRUNCATE, 100, SIGNIFICANT_DIGITS) == '0.0001234567'
81
- assert decimal_to_precision('0.0001234567', TRUNCATE, 100, SIGNIFICANT_DIGITS) == '0.0001234567'
82
- assert decimal_to_precision('0.0001234567', TRUNCATE, 7, SIGNIFICANT_DIGITS) == '0.0001234567'
83
-
84
- assert decimal_to_precision('0.000123456', TRUNCATE, 6, SIGNIFICANT_DIGITS) == '0.000123456'
85
- assert decimal_to_precision('0.000123456', TRUNCATE, 5, SIGNIFICANT_DIGITS) == '0.00012345'
86
- assert decimal_to_precision('0.000123456', TRUNCATE, 2, SIGNIFICANT_DIGITS) == '0.00012'
87
- assert decimal_to_precision('0.000123456', TRUNCATE, 1, SIGNIFICANT_DIGITS) == '0.0001'
88
-
89
- assert decimal_to_precision('123.0000987654', TRUNCATE, 10, SIGNIFICANT_DIGITS, PAD_WITH_ZERO) == '123.0000987'
90
- assert decimal_to_precision('123.0000987654', TRUNCATE, 8, SIGNIFICANT_DIGITS) == '123.00009'
91
- assert decimal_to_precision('123.0000987654', TRUNCATE, 7, SIGNIFICANT_DIGITS, PAD_WITH_ZERO) == '123.0000'
92
- assert decimal_to_precision('123.0000987654', TRUNCATE, 6, SIGNIFICANT_DIGITS) == '123'
93
- assert decimal_to_precision('123.0000987654', TRUNCATE, 5, SIGNIFICANT_DIGITS, PAD_WITH_ZERO) == '123.00'
94
- assert decimal_to_precision('123.0000987654', TRUNCATE, 4, SIGNIFICANT_DIGITS) == '123'
95
- assert decimal_to_precision('123.0000987654', TRUNCATE, 4, SIGNIFICANT_DIGITS, PAD_WITH_ZERO) == '123.0'
96
- assert decimal_to_precision('123.0000987654', TRUNCATE, 3, SIGNIFICANT_DIGITS, PAD_WITH_ZERO) == '123'
97
- assert decimal_to_precision('123.0000987654', TRUNCATE, 2, SIGNIFICANT_DIGITS) == '120'
98
- assert decimal_to_precision('123.0000987654', TRUNCATE, 1, SIGNIFICANT_DIGITS) == '100'
99
- assert decimal_to_precision('123.0000987654', TRUNCATE, 1, SIGNIFICANT_DIGITS, PAD_WITH_ZERO) == '100'
100
-
101
- assert decimal_to_precision('1234', TRUNCATE, 5, SIGNIFICANT_DIGITS) == '1234'
102
- assert decimal_to_precision('1234', TRUNCATE, 5, SIGNIFICANT_DIGITS, PAD_WITH_ZERO) == '1234.0'
103
- assert decimal_to_precision('1234', TRUNCATE, 4, SIGNIFICANT_DIGITS) == '1234'
104
- assert decimal_to_precision('1234', TRUNCATE, 4, SIGNIFICANT_DIGITS, PAD_WITH_ZERO) == '1234'
105
- assert decimal_to_precision('1234.69', TRUNCATE, 0, SIGNIFICANT_DIGITS) == '0'
106
- assert decimal_to_precision('1234.69', TRUNCATE, 0, SIGNIFICANT_DIGITS, PAD_WITH_ZERO) == '0'
107
-
108
- # ----------------------------------------------------------------------------
109
- # testDecimalToPrecisionRoundingToNDigitsAfterDot
110
-
111
- assert decimal_to_precision('12.3456000', ROUND, 100, DECIMAL_PLACES) == '12.3456'
112
- assert decimal_to_precision('12.3456', ROUND, 100, DECIMAL_PLACES) == '12.3456'
113
- assert decimal_to_precision('12.3456', ROUND, 4, DECIMAL_PLACES) == '12.3456'
114
- assert decimal_to_precision('12.3456', ROUND, 3, DECIMAL_PLACES) == '12.346'
115
- assert decimal_to_precision('12.3456', ROUND, 2, DECIMAL_PLACES) == '12.35'
116
- assert decimal_to_precision('12.3456', ROUND, 1, DECIMAL_PLACES) == '12.3'
117
- assert decimal_to_precision('12.3456', ROUND, 0, DECIMAL_PLACES) == '12'
118
-
119
- # a problematic case in PHP
120
- assert decimal_to_precision('10000', ROUND, 6, DECIMAL_PLACES) == '10000'
121
- assert decimal_to_precision('0.00003186', ROUND, 8, DECIMAL_PLACES) == '0.00003186'
122
-
123
- assert decimal_to_precision('12.3456', ROUND, -1, DECIMAL_PLACES) == '10'
124
- assert decimal_to_precision('123.456', ROUND, -1, DECIMAL_PLACES) == '120'
125
- assert decimal_to_precision('123.456', ROUND, -2, DECIMAL_PLACES) == '100'
126
- assert decimal_to_precision('9.99999', ROUND, -1, DECIMAL_PLACES) == '10'
127
- assert decimal_to_precision('99.9999', ROUND, -1, DECIMAL_PLACES) == '100'
128
- assert decimal_to_precision('99.9999', ROUND, -2, DECIMAL_PLACES) == '100'
129
-
130
- assert decimal_to_precision('9.999', ROUND, 3, DECIMAL_PLACES) == '9.999'
131
- assert decimal_to_precision('9.999', ROUND, 2, DECIMAL_PLACES) == '10'
132
- assert decimal_to_precision('9.999', ROUND, 2, DECIMAL_PLACES, PAD_WITH_ZERO) == '10.00'
133
- assert decimal_to_precision('99.999', ROUND, 2, DECIMAL_PLACES, PAD_WITH_ZERO) == '100.00'
134
- assert decimal_to_precision('-99.999', ROUND, 2, DECIMAL_PLACES, PAD_WITH_ZERO) == '-100.00'
135
-
136
- # ----------------------------------------------------------------------------
137
- # testDecimalToPrecisionRoundingToNSignificantDigits
138
-
139
- assert decimal_to_precision('0.000123456700', ROUND, 100, SIGNIFICANT_DIGITS) == '0.0001234567'
140
- assert decimal_to_precision('0.0001234567', ROUND, 100, SIGNIFICANT_DIGITS) == '0.0001234567'
141
- assert decimal_to_precision('0.0001234567', ROUND, 7, SIGNIFICANT_DIGITS) == '0.0001234567'
142
-
143
- assert decimal_to_precision('0.000123456', ROUND, 6, SIGNIFICANT_DIGITS) == '0.000123456'
144
- assert decimal_to_precision('0.000123456', ROUND, 5, SIGNIFICANT_DIGITS) == '0.00012346'
145
- assert decimal_to_precision('0.000123456', ROUND, 4, SIGNIFICANT_DIGITS) == '0.0001235'
146
- assert decimal_to_precision('0.00012', ROUND, 2, SIGNIFICANT_DIGITS) == '0.00012'
147
- assert decimal_to_precision('0.0001', ROUND, 1, SIGNIFICANT_DIGITS) == '0.0001'
148
-
149
- assert decimal_to_precision('123.0000987654', ROUND, 7, SIGNIFICANT_DIGITS) == '123.0001'
150
- assert decimal_to_precision('123.0000987654', ROUND, 6, SIGNIFICANT_DIGITS) == '123'
151
-
152
- assert decimal_to_precision('0.00098765', ROUND, 2, SIGNIFICANT_DIGITS) == '0.00099'
153
- assert decimal_to_precision('0.00098765', ROUND, 2, SIGNIFICANT_DIGITS, PAD_WITH_ZERO) == '0.00099'
154
-
155
- assert decimal_to_precision('0.00098765', ROUND, 1, SIGNIFICANT_DIGITS) == '0.001'
156
- assert decimal_to_precision('0.00098765', ROUND, 10, SIGNIFICANT_DIGITS, PAD_WITH_ZERO) == '0.0009876500000'
157
-
158
- assert decimal_to_precision('0.098765', ROUND, 1, SIGNIFICANT_DIGITS, PAD_WITH_ZERO) == '0.1'
159
-
160
- assert decimal_to_precision('0', ROUND, 0, SIGNIFICANT_DIGITS) == '0'
161
- assert decimal_to_precision('-0.123', ROUND, 0, SIGNIFICANT_DIGITS) == '0'
162
-
163
- assert decimal_to_precision('0.00000044', ROUND, 5, SIGNIFICANT_DIGITS) == '0.00000044'
164
-
165
- # ----------------------------------------------------------------------------
166
- # testDecimalToPrecisionRoundingToTickSize
167
-
168
- assert decimal_to_precision('0.000123456700', ROUND, 0.00012, TICK_SIZE) == '0.00012'
169
- assert decimal_to_precision('0.0001234567', ROUND, 0.00013, TICK_SIZE) == '0.00013'
170
- assert decimal_to_precision('0.0001234567', TRUNCATE, 0.00013, TICK_SIZE) == '0'
171
- assert decimal_to_precision('101.000123456700', ROUND, 100, TICK_SIZE) == '100'
172
- assert decimal_to_precision('0.000123456700', ROUND, 100, TICK_SIZE) == '0'
173
- assert decimal_to_precision('165', TRUNCATE, 110, TICK_SIZE) == '110'
174
- assert decimal_to_precision('3210', TRUNCATE, 1110, TICK_SIZE) == '2220'
175
- assert decimal_to_precision('165', ROUND, 110, TICK_SIZE) == '220'
176
- assert decimal_to_precision('0.000123456789', ROUND, 0.00000012, TICK_SIZE) == '0.00012348'
177
- assert decimal_to_precision('0.000123456789', TRUNCATE, 0.00000012, TICK_SIZE) == '0.00012336'
178
- assert decimal_to_precision('0.000273398', ROUND, 1e-7, TICK_SIZE) == '0.0002734'
179
-
180
- assert decimal_to_precision('0.00005714', TRUNCATE, 0.00000001, TICK_SIZE) == '0.00005714'
181
- # self line causes problems in JS, fix with Precise
182
- # assert decimal_to_precision('0.0000571495257361', TRUNCATE, 0.00000001, TICK_SIZE) == '0.00005714'
183
-
184
- assert decimal_to_precision('0.01', ROUND, 0.0001, TICK_SIZE, PAD_WITH_ZERO) == '0.0100'
185
- assert decimal_to_precision('0.01', TRUNCATE, 0.0001, TICK_SIZE, PAD_WITH_ZERO) == '0.0100'
186
-
187
- assert decimal_to_precision('-0.000123456789', ROUND, 0.00000012, TICK_SIZE) == '-0.00012348'
188
- assert decimal_to_precision('-0.000123456789', TRUNCATE, 0.00000012, TICK_SIZE) == '-0.00012336'
189
- assert decimal_to_precision('-165', TRUNCATE, 110, TICK_SIZE) == '-110'
190
- assert decimal_to_precision('-165', ROUND, 110, TICK_SIZE) == '-220'
191
- assert decimal_to_precision('-1650', TRUNCATE, 1100, TICK_SIZE) == '-1100'
192
- assert decimal_to_precision('-1650', ROUND, 1100, TICK_SIZE) == '-2200'
193
-
194
- assert decimal_to_precision('0.0006', TRUNCATE, 0.0001, TICK_SIZE) == '0.0006'
195
- assert decimal_to_precision('-0.0006', TRUNCATE, 0.0001, TICK_SIZE) == '-0.0006'
196
- assert decimal_to_precision('0.6', TRUNCATE, 0.2, TICK_SIZE) == '0.6'
197
- assert decimal_to_precision('-0.6', TRUNCATE, 0.2, TICK_SIZE) == '-0.6'
198
- assert decimal_to_precision('1.2', ROUND, 0.4, TICK_SIZE) == '1.2'
199
- assert decimal_to_precision('-1.2', ROUND, 0.4, TICK_SIZE) == '-1.2'
200
- assert decimal_to_precision('1.2', ROUND, 0.02, TICK_SIZE) == '1.2'
201
- assert decimal_to_precision('-1.2', ROUND, 0.02, TICK_SIZE) == '-1.2'
202
- assert decimal_to_precision('44', ROUND, 4.4, TICK_SIZE) == '44'
203
- assert decimal_to_precision('-44', ROUND, 4.4, TICK_SIZE) == '-44'
204
- assert decimal_to_precision('44.00000001', ROUND, 4.4, TICK_SIZE) == '44'
205
- assert decimal_to_precision('-44.00000001', ROUND, 4.4, TICK_SIZE) == '-44'
206
-
207
- # https://github.com/ccxt/ccxt/issues/6731
208
- assert decimal_to_precision('20', TRUNCATE, 0.00000001, TICK_SIZE) == '20'
209
-
210
- # ----------------------------------------------------------------------------
211
- # testDecimalToPrecisionNegativeNumbers
212
-
213
- assert decimal_to_precision('-0.123456', TRUNCATE, 5, DECIMAL_PLACES) == '-0.12345'
214
- assert decimal_to_precision('-0.123456', ROUND, 5, DECIMAL_PLACES) == '-0.12346'
215
-
216
- # ----------------------------------------------------------------------------
217
- # decimal_to_precision: without dot / trailing dot
218
-
219
- assert decimal_to_precision('123', TRUNCATE, 0) == '123'
220
-
221
- assert decimal_to_precision('123', TRUNCATE, 5, DECIMAL_PLACES) == '123'
222
- assert decimal_to_precision('123', TRUNCATE, 5, DECIMAL_PLACES, PAD_WITH_ZERO) == '123.00000'
223
-
224
- assert decimal_to_precision('123.', TRUNCATE, 0, DECIMAL_PLACES) == '123'
225
- assert decimal_to_precision('123.', TRUNCATE, 5, DECIMAL_PLACES, PAD_WITH_ZERO) == '123.00000'
226
-
227
- assert decimal_to_precision('0.', TRUNCATE, 0) == '0'
228
- assert decimal_to_precision('0.', TRUNCATE, 5, DECIMAL_PLACES, PAD_WITH_ZERO) == '0.00000'
229
-
230
- # ----------------------------------------------------------------------------
231
- # decimal_to_precision: rounding for equidistant digits
232
-
233
- assert decimal_to_precision('1.44', ROUND, 1, DECIMAL_PLACES) == '1.4'
234
- assert decimal_to_precision('1.45', ROUND, 1, DECIMAL_PLACES) == '1.5'
235
- assert decimal_to_precision('1.45', ROUND, 0, DECIMAL_PLACES) == '1' # not 2
236
-
237
- # ----------------------------------------------------------------------------
238
- # negative precision only implemented so far in python
239
- # pretty useless for decimal applications |x| < 5 == 0
240
- # NO_PADDING and PAD_WITH_ZERO are ignored
241
-
242
- assert decimal_to_precision('5', ROUND, -1, DECIMAL_PLACES) == '10'
243
- assert decimal_to_precision('4.999', ROUND, -1, DECIMAL_PLACES) == '0'
244
- assert decimal_to_precision('0.0431531423', ROUND, -1, DECIMAL_PLACES) == '0'
245
- assert decimal_to_precision('-69.3', ROUND, -1, DECIMAL_PLACES) == '-70'
246
- assert decimal_to_precision('5001', ROUND, -4, DECIMAL_PLACES) == '10000'
247
- assert decimal_to_precision('4999.999', ROUND, -4, DECIMAL_PLACES) == '0'
248
-
249
- assert decimal_to_precision('69.3', TRUNCATE, -2, DECIMAL_PLACES) == '0'
250
- assert decimal_to_precision('-69.3', TRUNCATE, -2, DECIMAL_PLACES) == '0'
251
- assert decimal_to_precision('69.3', TRUNCATE, -1, SIGNIFICANT_DIGITS) == '60'
252
- assert decimal_to_precision('-69.3', TRUNCATE, -1, SIGNIFICANT_DIGITS) == '-60'
253
- assert decimal_to_precision('69.3', TRUNCATE, -2, SIGNIFICANT_DIGITS) == '0'
254
- assert decimal_to_precision('1602000000000000000000', TRUNCATE, 3, SIGNIFICANT_DIGITS) == '1600000000000000000000'
255
-
256
- # ----------------------------------------------------------------------------
257
- # decimal_to_precision: stringified precision
258
- assert decimal_to_precision('-0.000123456789', ROUND, '0.00000012', TICK_SIZE) == '-0.00012348'
259
- assert decimal_to_precision('-0.000123456789', TRUNCATE, '0.00000012', TICK_SIZE) == '-0.00012336'
260
- assert decimal_to_precision('-165', TRUNCATE, '110', TICK_SIZE) == '-110'
261
- assert decimal_to_precision('-165', ROUND, '110', TICK_SIZE) == '-220'
262
-
263
- # ----------------------------------------------------------------------------
264
- # testDecimalToPrecisionErrorHandling(todo)
265
- #
266
- # throws(() =>
267
- # decimal_to_precision('123456.789', TRUNCATE, -2, DECIMAL_PLACES),
268
- # 'negative precision is not yet supported')
269
- #
270
- # throws(() =>
271
- # decimal_to_precision('foo'),
272
- # "invalid number(contains an illegal character 'f')")
273
- #
274
- # throws(() =>
275
- # decimal_to_precision('0.01', TRUNCATE, -1, TICK_SIZE),
276
- # "TICK_SIZE cant be used with negative numPrecisionDigits")
277
-
278
- # ----------------------------------------------------------------------------
279
-
280
- w = '-1.123e-6'
281
- x = '0.00000002'
282
- y = '69696900000'
283
- z = '0'
284
- a = '1e8'
285
-
286
- assert Precise.string_mul(x, y) == '1393.938'
287
- assert Precise.string_mul(y, x) == '1393.938'
288
- assert Precise.string_add(x, y) == '69696900000.00000002'
289
- assert Precise.string_add(y, x) == '69696900000.00000002'
290
- assert Precise.string_sub(x, y) == '-69696899999.99999998'
291
- assert Precise.string_sub(y, x) == '69696899999.99999998'
292
- assert Precise.string_div(x, y, 1) == '0'
293
- assert Precise.string_div(x, y) == '0'
294
- assert Precise.string_div(x, y, 19) == '0.0000000000000000002'
295
- assert Precise.string_div(x, y, 20) == '0.00000000000000000028'
296
- assert Precise.string_div(x, y, 21) == '0.000000000000000000286'
297
- assert Precise.string_div(x, y, 22) == '0.0000000000000000002869'
298
- assert Precise.string_div(y, x) == '3484845000000000000'
299
-
300
- assert Precise.string_mul(x, w) == '-0.00000000000002246'
301
- assert Precise.string_mul(w, x) == '-0.00000000000002246'
302
- assert Precise.string_add(x, w) == '-0.000001103'
303
- assert Precise.string_add(w, x) == '-0.000001103'
304
- assert Precise.string_sub(x, w) == '0.000001143'
305
- assert Precise.string_sub(w, x) == '-0.000001143'
306
- assert Precise.string_div(x, w) == '-0.017809439002671415'
307
- assert Precise.string_div(w, x) == '-56.15'
308
-
309
- assert Precise.string_mul(z, w) == '0'
310
- assert Precise.string_mul(z, x) == '0'
311
- assert Precise.string_mul(z, y) == '0'
312
- assert Precise.string_mul(w, z) == '0'
313
- assert Precise.string_mul(x, z) == '0'
314
- assert Precise.string_mul(y, z) == '0'
315
- assert Precise.string_add(z, w) == '-0.000001123'
316
- assert Precise.string_add(z, x) == '0.00000002'
317
- assert Precise.string_add(z, y) == '69696900000'
318
- assert Precise.string_add(w, z) == '-0.000001123'
319
- assert Precise.string_add(x, z) == '0.00000002'
320
- assert Precise.string_add(y, z) == '69696900000'
321
-
322
- assert Precise.string_mul(x, a) == '2'
323
- assert Precise.string_mul(a, x) == '2'
324
- assert Precise.string_mul(y, a) == '6969690000000000000'
325
- assert Precise.string_mul(a, y) == '6969690000000000000'
326
- assert Precise.string_div(y, a) == '696.969'
327
- assert Precise.string_div(y, a, -1) == '690'
328
- assert Precise.string_div(y, a, 0) == '696'
329
- assert Precise.string_div(y, a, 1) == '696.9'
330
- assert Precise.string_div(y, a, 2) == '696.96'
331
- assert Precise.string_div(a, y) == '0.001434784043479695'
332
-
333
- assert Precise.string_abs('0') == '0'
334
- assert Precise.string_abs('-0') == '0'
335
- assert Precise.string_abs('-500.1') == '500.1'
336
- assert Precise.string_abs('213') == '213'
337
-
338
- assert Precise.string_neg('0') == '0'
339
- assert Precise.string_neg('-0') == '0'
340
- assert Precise.string_neg('-500.1') == '500.1'
341
- assert Precise.string_neg('213') == '-213'
342
-
343
- assert Precise.string_mod('57.123', '10') == '7.123'
344
- assert Precise.string_mod('18', '6') == '0'
345
- assert Precise.string_mod('10.1', '0.5') == '0.1'
346
- assert Precise.string_mod('10000000', '5555') == '1000'
347
- assert Precise.string_mod('5550', '120') == '30'
348
-
349
- assert Precise.string_equals('1.0000', '1')
350
- assert Precise.string_equals('-0.0', '0')
351
- assert Precise.string_equals('-0.0', '0.0')
352
- assert Precise.string_equals('5.534000', '5.5340')
353
-
354
- assert Precise.string_min('1.0000', '2') == '1'
355
- assert Precise.string_min('2', '1.2345') == '1.2345'
356
- assert Precise.string_min('3.1415', '-2') == '-2'
357
- assert Precise.string_min('-3.1415', '-2') == '-3.1415'
358
- assert Precise.string_min('0.000', '-0.0') == '0'
359
-
360
- assert Precise.string_max('1.0000', '2') == '2'
361
- assert Precise.string_max('2', '1.2345') == '2'
362
- assert Precise.string_max('3.1415', '-2') == '3.1415'
363
- assert Precise.string_max('-3.1415', '-2') == '-2'
364
- assert Precise.string_max('0.000', '-0.0') == '0'
365
-
366
- assert not Precise.string_gt('1.0000', '2')
367
- assert Precise.string_gt('2', '1.2345')
368
- assert Precise.string_gt('3.1415', '-2')
369
- assert not Precise.string_gt('-3.1415', '-2')
370
- assert not Precise.string_gt('3.1415', '3.1415')
371
- assert Precise.string_gt('3.14150000000000000000001', '3.1415')
372
-
373
- assert not Precise.string_ge('1.0000', '2')
374
- assert Precise.string_ge('2', '1.2345')
375
- assert Precise.string_ge('3.1415', '-2')
376
- assert not Precise.string_ge('-3.1415', '-2')
377
- assert Precise.string_ge('3.1415', '3.1415')
378
- assert Precise.string_ge('3.14150000000000000000001', '3.1415')
379
-
380
- assert Precise.string_lt('1.0000', '2')
381
- assert not Precise.string_lt('2', '1.2345')
382
- assert not Precise.string_lt('3.1415', '-2')
383
- assert Precise.string_lt('-3.1415', '-2')
384
- assert not Precise.string_lt('3.1415', '3.1415')
385
- assert Precise.string_lt('3.1415', '3.14150000000000000000001')
386
-
387
- assert Precise.string_le('1.0000', '2')
388
- assert not Precise.string_le('2', '1.2345')
389
- assert not Precise.string_le('3.1415', '-2')
390
- assert Precise.string_le('-3.1415', '-2')
391
- assert Precise.string_le('3.1415', '3.1415')
392
- assert Precise.string_le('3.1415', '3.14150000000000000000001')
@@ -1,68 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
-
3
- # THIS IS A MOCKUP FILE IN PROGRESS
4
-
5
- # import argparse
6
- import os
7
- import sys
8
- from pprint import pprint
9
- # import json
10
- # import time
11
-
12
- # ------------------------------------------------------------------------------
13
-
14
- root = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
15
- sys.path.append(root)
16
-
17
- # ------------------------------------------------------------------------------
18
-
19
- import ccxt # noqa: E402
20
-
21
- # ------------------------------------------------------------------------------
22
-
23
- values = [
24
- {
25
- 'a': 1,
26
- 'b': 2,
27
- 'd': {
28
- 'a': 1,
29
- 'b': [],
30
- 'c': {'test1': 123, 'test2': 321}},
31
- 'f': 5,
32
- 'g': 123,
33
- 'i': 321,
34
- 'j': [1, 2],
35
- },
36
- {
37
- 'b': 3,
38
- 'c': 5,
39
- 'd': {
40
- 'b': {'first': 'one', 'second': 'two'},
41
- 'c': {'test2': 222}},
42
- 'e': {'one': 1, 'two': 2},
43
- 'f': [{'foo': 'bar'}],
44
- 'g': None,
45
- 'h': r'abc',
46
- 'i': None,
47
- 'j': [3, 4]
48
- }
49
- ]
50
-
51
- pprint(ccxt.Exchange.deep_extend(*values))
52
-
53
- # assert.deepEqual ({
54
- # a: 1,
55
- # b: 3,
56
- # d: {
57
- # a: 1,
58
- # b: {first: 'one', second: 'two'},
59
- # c: {test1: 123, test2: 222}
60
- # },
61
- # f: [{'foo': 'bar'}],
62
- # g: undefined,
63
- # c: 5,
64
- # e: {one: 1, two: 2},
65
- # h: /abc/g,
66
- # i: null,
67
- # j: [3, 4]
68
- # }, extended)
@@ -1,50 +0,0 @@
1
- import os
2
- import sys
3
-
4
- root = os.path.dirname(os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))))
5
- sys.path.append(root)
6
-
7
- # ----------------------------------------------------------------------------
8
-
9
- # PLEASE DO NOT EDIT THIS FILE, IT IS GENERATED AND WILL BE OVERWRITTEN:
10
- # https://github.com/ccxt/ccxt/blob/master/CONTRIBUTING.md#how-to-contribute-code
11
-
12
- # ----------------------------------------------------------------------------
13
- # -*- coding: utf-8 -*-
14
-
15
- from ccxt.test.base import test_shared_methods # noqa E402
16
-
17
- def test_deposit_withdrawal(exchange, skipped_properties, method, entry, requested_code, now):
18
- format = {
19
- 'info': {},
20
- 'id': '1234',
21
- 'txid': '0x1345FEG45EAEF7',
22
- 'timestamp': 1502962946216,
23
- 'datetime': '2017-08-17 12:42:48.000',
24
- 'network': 'ETH',
25
- 'address': '0xEFE3487358AEF352345345',
26
- 'addressTo': '0xEFE3487358AEF352345123',
27
- 'addressFrom': '0xEFE3487358AEF352345456',
28
- 'tag': 'smth',
29
- 'tagTo': 'smth',
30
- 'tagFrom': 'smth',
31
- 'type': 'deposit',
32
- 'amount': exchange.parse_number('1.234'),
33
- 'currency': 'USDT',
34
- 'status': 'ok',
35
- 'updated': 1502962946233,
36
- 'fee': {},
37
- }
38
- empty_allowed_for = ['address', 'addressTo', 'addressFrom', 'tag', 'tagTo', 'tagFrom'] # below we still do assertion for to/from
39
- test_shared_methods.assert_structure(exchange, skipped_properties, method, entry, format, empty_allowed_for)
40
- test_shared_methods.assert_timestamp_and_datetime(exchange, skipped_properties, method, entry, now)
41
- test_shared_methods.assert_currency_code(exchange, skipped_properties, method, entry, entry['currency'], requested_code)
42
- #
43
- test_shared_methods.assert_in_array(exchange, skipped_properties, method, entry, 'status', ['ok', 'pending', 'failed', 'rejected', 'canceled'])
44
- test_shared_methods.assert_in_array(exchange, skipped_properties, method, entry, 'type', ['deposit', 'withdrawal'])
45
- test_shared_methods.assert_greater_or_equal(exchange, skipped_properties, method, entry, 'amount', '0')
46
- test_shared_methods.assert_fee_structure(exchange, skipped_properties, method, entry, 'fee')
47
- if entry['type'] == 'deposit':
48
- test_shared_methods.assert_type(exchange, skipped_properties, entry, 'addressFrom', format)
49
- else:
50
- test_shared_methods.assert_type(exchange, skipped_properties, entry, 'addressTo', format)
@@ -1,76 +0,0 @@
1
- import os
2
- import sys
3
-
4
- root = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
5
- sys.path.append(root)
6
-
7
- # ----------------------------------------------------------------------------
8
-
9
- # PLEASE DO NOT EDIT THIS FILE, IT IS GENERATED AND WILL BE OVERWRITTEN:
10
- # https://github.com/ccxt/ccxt/blob/master/CONTRIBUTING.md#how-to-contribute-code
11
-
12
- # ----------------------------------------------------------------------------
13
-
14
- import ccxt # noqa: F402
15
- from ccxt.base.decimal_to_precision import ROUND_UP, ROUND_DOWN # noqa F401
16
-
17
- # ----------------------------------------------------------------------------
18
-
19
- # @ts-nocheck
20
-
21
- exchange = ccxt.Exchange({
22
- 'id': 'regirock',
23
- })
24
-
25
- # ----------------------------------------------------------------------------
26
-
27
- assert exchange.iso8601(514862627000) == '1986-04-26T01:23:47.000Z'
28
- assert exchange.iso8601(514862627559) == '1986-04-26T01:23:47.559Z'
29
- assert exchange.iso8601(514862627062) == '1986-04-26T01:23:47.062Z'
30
-
31
- assert exchange.iso8601(0) == '1970-01-01T00:00:00.000Z'
32
-
33
- assert exchange.iso8601(-1) is None
34
- assert exchange.iso8601() is None
35
- assert exchange.iso8601(None) is None
36
- assert exchange.iso8601('') is None
37
- assert exchange.iso8601('a') is None
38
- assert exchange.iso8601({}) is None
39
-
40
- # ----------------------------------------------------------------------------
41
-
42
- assert exchange.parse8601('1986-04-26T01:23:47.000Z') == 514862627000
43
- assert exchange.parse8601('1986-04-26T01:23:47.559Z') == 514862627559
44
- assert exchange.parse8601('1986-04-26T01:23:47.062Z') == 514862627062
45
-
46
- assert exchange.parse8601('1986-04-26T01:23:47.06Z') == 514862627060
47
- assert exchange.parse8601('1986-04-26T01:23:47.6Z') == 514862627600
48
-
49
- assert exchange.parse8601('1977-13-13T00:00:00.000Z') is None
50
- assert exchange.parse8601('1986-04-26T25:71:47.000Z') is None
51
-
52
- assert exchange.parse8601('3333') is None
53
- assert exchange.parse8601('Sr90') is None
54
- assert exchange.parse8601('') is None
55
- assert exchange.parse8601() is None
56
- assert exchange.parse8601(None) is None
57
- assert exchange.parse8601({}) is None
58
- assert exchange.parse8601(33) is None
59
-
60
- # ----------------------------------------------------------------------------
61
-
62
- assert exchange.parse_date('1986-04-26 00:00:00') == 514857600000
63
- assert exchange.parse_date('1986-04-26T01:23:47.000Z') == 514862627000
64
- assert exchange.parse_date('1986-13-13 00:00:00') is None
65
-
66
-
67
- assert exchange.roundTimeframe('5m', exchange.parse8601('2019-08-12 13:22:08'), ROUND_DOWN) == exchange.parse8601('2019-08-12 13:20:00')
68
- assert exchange.roundTimeframe('10m', exchange.parse8601('2019-08-12 13:22:08'), ROUND_DOWN) == exchange.parse8601('2019-08-12 13:20:00')
69
- assert exchange.roundTimeframe('30m', exchange.parse8601('2019-08-12 13:22:08'), ROUND_DOWN) == exchange.parse8601('2019-08-12 13:00:00')
70
- assert exchange.roundTimeframe('1d', exchange.parse8601('2019-08-12 13:22:08'), ROUND_DOWN) == exchange.parse8601('2019-08-12 00:00:00')
71
-
72
- assert exchange.roundTimeframe('5m', exchange.parse8601('2019-08-12 13:22:08'), ROUND_UP) == exchange.parse8601('2019-08-12 13:25:00')
73
- assert exchange.roundTimeframe('10m', exchange.parse8601('2019-08-12 13:22:08'), ROUND_UP) == exchange.parse8601('2019-08-12 13:30:00')
74
- assert exchange.roundTimeframe('30m', exchange.parse8601('2019-08-12 13:22:08'), ROUND_UP) == exchange.parse8601('2019-08-12 13:30:00')
75
- assert exchange.roundTimeframe('1h', exchange.parse8601('2019-08-12 13:22:08'), ROUND_UP) == exchange.parse8601('2019-08-12 14:00:00')
76
- assert exchange.roundTimeframe('1d', exchange.parse8601('2019-08-12 13:22:08'), ROUND_UP) == exchange.parse8601('2019-08-13 00:00:00')
@@ -1,29 +0,0 @@
1
- import os
2
- import sys
3
-
4
- root = os.path.dirname(os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))))
5
- sys.path.append(root)
6
-
7
- # ----------------------------------------------------------------------------
8
-
9
- # PLEASE DO NOT EDIT THIS FILE, IT IS GENERATED AND WILL BE OVERWRITTEN:
10
- # https://github.com/ccxt/ccxt/blob/master/CONTRIBUTING.md#how-to-contribute-code
11
-
12
- # ----------------------------------------------------------------------------
13
- # -*- coding: utf-8 -*-
14
-
15
- from ccxt.test.base import test_shared_methods # noqa E402
16
-
17
- def test_funding_rate_history(exchange, skipped_properties, method, entry, symbol):
18
- format = {
19
- 'info': {},
20
- 'symbol': 'BTC/USDT:USDT',
21
- 'timestamp': 1638230400000,
22
- 'datetime': '2021-11-30T00:00:00.000Z',
23
- 'fundingRate': exchange.parse_number('0.0006'),
24
- }
25
- test_shared_methods.assert_structure(exchange, skipped_properties, method, entry, format)
26
- test_shared_methods.assert_symbol(exchange, skipped_properties, method, entry, 'symbol', symbol)
27
- test_shared_methods.assert_timestamp_and_datetime(exchange, skipped_properties, method, entry)
28
- test_shared_methods.assert_greater(exchange, skipped_properties, method, entry, 'fundingRate', '-100')
29
- test_shared_methods.assert_less(exchange, skipped_properties, method, entry, 'fundingRate', '100')
@@ -1,31 +0,0 @@
1
- import os
2
- import sys
3
-
4
- root = os.path.dirname(os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))))
5
- sys.path.append(root)
6
-
7
- # ----------------------------------------------------------------------------
8
-
9
- # PLEASE DO NOT EDIT THIS FILE, IT IS GENERATED AND WILL BE OVERWRITTEN:
10
- # https://github.com/ccxt/ccxt/blob/master/CONTRIBUTING.md#how-to-contribute-code
11
-
12
- # ----------------------------------------------------------------------------
13
- # -*- coding: utf-8 -*-
14
-
15
- from ccxt.test.base import test_shared_methods # noqa E402
16
-
17
- def test_last_price(exchange, skipped_properties, method, entry, symbol):
18
- format = {
19
- 'info': {},
20
- 'symbol': 'ETH/BTC',
21
- 'timestamp': 1502962946216,
22
- 'datetime': '2017-09-01T00:00:00',
23
- 'price': exchange.parse_number('1.234'),
24
- 'side': 'buy',
25
- }
26
- empty_allowed_for = ['timestamp', 'datetime', 'side']
27
- test_shared_methods.assert_structure(exchange, skipped_properties, method, entry, format, empty_allowed_for)
28
- test_shared_methods.assert_timestamp_and_datetime(exchange, skipped_properties, method, entry)
29
- #
30
- test_shared_methods.assert_greater(exchange, skipped_properties, method, entry, 'price', '0')
31
- test_shared_methods.assert_in_array(exchange, skipped_properties, method, entry, 'side', ['buy', 'sell', None])