ccxt 4.3.54__py2.py3-none-any.whl → 4.3.56__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.

Potentially problematic release.


This version of ccxt might be problematic. Click here for more details.

Files changed (255) hide show
  1. ccxt/__init__.py +1 -1
  2. ccxt/abstract/bingx.py +16 -0
  3. ccxt/abstract/kucoin.py +3 -0
  4. ccxt/abstract/kucoinfutures.py +3 -0
  5. ccxt/ace.py +1 -1
  6. ccxt/alpaca.py +1 -1
  7. ccxt/ascendex.py +6 -4
  8. ccxt/async_support/__init__.py +1 -1
  9. ccxt/async_support/ace.py +1 -1
  10. ccxt/async_support/alpaca.py +1 -1
  11. ccxt/async_support/ascendex.py +6 -4
  12. ccxt/async_support/base/exchange.py +19 -3
  13. ccxt/async_support/bigone.py +1 -1
  14. ccxt/async_support/binance.py +13 -13
  15. ccxt/async_support/bingx.py +36 -3
  16. ccxt/async_support/bit2c.py +1 -1
  17. ccxt/async_support/bitbank.py +1 -1
  18. ccxt/async_support/bitbns.py +1 -1
  19. ccxt/async_support/bitfinex.py +1 -1
  20. ccxt/async_support/bitfinex2.py +1 -1
  21. ccxt/async_support/bitflyer.py +8 -2
  22. ccxt/async_support/bitget.py +2 -2
  23. ccxt/async_support/bithumb.py +1 -1
  24. ccxt/async_support/bitmart.py +3 -3
  25. ccxt/async_support/bitmex.py +1 -1
  26. ccxt/async_support/bitopro.py +19 -4
  27. ccxt/async_support/bitrue.py +1 -1
  28. ccxt/async_support/bitso.py +1 -1
  29. ccxt/async_support/bitstamp.py +1 -1
  30. ccxt/async_support/bitteam.py +1 -1
  31. ccxt/async_support/bitvavo.py +2 -2
  32. ccxt/async_support/bl3p.py +1 -1
  33. ccxt/async_support/blockchaincom.py +28 -28
  34. ccxt/async_support/blofin.py +1 -1
  35. ccxt/async_support/btcalpha.py +4 -11
  36. ccxt/async_support/btcbox.py +1 -1
  37. ccxt/async_support/btcmarkets.py +28 -27
  38. ccxt/async_support/btcturk.py +1 -1
  39. ccxt/async_support/bybit.py +10 -7
  40. ccxt/async_support/cex.py +2 -2
  41. ccxt/async_support/coinbase.py +33 -33
  42. ccxt/async_support/coinbaseexchange.py +1 -1
  43. ccxt/async_support/coinbaseinternational.py +1 -1
  44. ccxt/async_support/coincheck.py +1 -1
  45. ccxt/async_support/coinex.py +2 -2
  46. ccxt/async_support/coinlist.py +2 -2
  47. ccxt/async_support/coinmate.py +1 -1
  48. ccxt/async_support/coinmetro.py +1 -1
  49. ccxt/async_support/coinone.py +1 -1
  50. ccxt/async_support/coinsph.py +1 -1
  51. ccxt/async_support/coinspot.py +1 -1
  52. ccxt/async_support/cryptocom.py +1 -1
  53. ccxt/async_support/currencycom.py +1 -1
  54. ccxt/async_support/delta.py +7 -3
  55. ccxt/async_support/deribit.py +4 -4
  56. ccxt/async_support/digifinex.py +2 -2
  57. ccxt/async_support/exmo.py +2 -2
  58. ccxt/async_support/gate.py +3 -2
  59. ccxt/async_support/gemini.py +1 -1
  60. ccxt/async_support/hitbtc.py +1 -1
  61. ccxt/async_support/hollaex.py +1 -1
  62. ccxt/async_support/htx.py +3 -3
  63. ccxt/async_support/huobijp.py +1 -1
  64. ccxt/async_support/hyperliquid.py +3 -3
  65. ccxt/async_support/idex.py +1 -1
  66. ccxt/async_support/independentreserve.py +1 -1
  67. ccxt/async_support/indodax.py +1 -1
  68. ccxt/async_support/kraken.py +2 -2
  69. ccxt/async_support/kucoin.py +127 -46
  70. ccxt/async_support/kucoinfutures.py +1 -1
  71. ccxt/async_support/kuna.py +1 -1
  72. ccxt/async_support/latoken.py +1 -1
  73. ccxt/async_support/lbank.py +28 -7
  74. ccxt/async_support/luno.py +1 -1
  75. ccxt/async_support/lykke.py +1 -1
  76. ccxt/async_support/mercado.py +1 -1
  77. ccxt/async_support/mexc.py +1 -1
  78. ccxt/async_support/ndax.py +1 -1
  79. ccxt/async_support/novadax.py +1 -1
  80. ccxt/async_support/oceanex.py +1 -1
  81. ccxt/async_support/okcoin.py +1 -1
  82. ccxt/async_support/okx.py +3 -3
  83. ccxt/async_support/onetrading.py +1 -1
  84. ccxt/async_support/oxfun.py +2 -2
  85. ccxt/async_support/p2b.py +1 -1
  86. ccxt/async_support/paymium.py +1 -1
  87. ccxt/async_support/phemex.py +2 -2
  88. ccxt/async_support/poloniex.py +4 -3
  89. ccxt/async_support/poloniexfutures.py +1 -1
  90. ccxt/async_support/probit.py +1 -1
  91. ccxt/async_support/timex.py +1 -1
  92. ccxt/async_support/tokocrypto.py +1 -1
  93. ccxt/async_support/tradeogre.py +1 -1
  94. ccxt/async_support/upbit.py +1 -1
  95. ccxt/async_support/vertex.py +2 -2
  96. ccxt/async_support/wavesexchange.py +1 -1
  97. ccxt/async_support/wazirx.py +1 -1
  98. ccxt/async_support/whitebit.py +2 -2
  99. ccxt/async_support/woo.py +5 -5
  100. ccxt/async_support/woofipro.py +3 -3
  101. ccxt/async_support/yobit.py +1 -1
  102. ccxt/async_support/zaif.py +1 -1
  103. ccxt/async_support/zonda.py +1 -1
  104. ccxt/base/exchange.py +19 -3
  105. ccxt/base/types.py +4 -1
  106. ccxt/bigone.py +1 -1
  107. ccxt/binance.py +13 -13
  108. ccxt/bingx.py +36 -3
  109. ccxt/bit2c.py +1 -1
  110. ccxt/bitbank.py +1 -1
  111. ccxt/bitbns.py +1 -1
  112. ccxt/bitfinex.py +1 -1
  113. ccxt/bitfinex2.py +1 -1
  114. ccxt/bitflyer.py +8 -2
  115. ccxt/bitget.py +2 -2
  116. ccxt/bithumb.py +1 -1
  117. ccxt/bitmart.py +3 -3
  118. ccxt/bitmex.py +1 -1
  119. ccxt/bitopro.py +19 -4
  120. ccxt/bitrue.py +1 -1
  121. ccxt/bitso.py +1 -1
  122. ccxt/bitstamp.py +1 -1
  123. ccxt/bitteam.py +1 -1
  124. ccxt/bitvavo.py +2 -2
  125. ccxt/bl3p.py +1 -1
  126. ccxt/blockchaincom.py +28 -28
  127. ccxt/blofin.py +1 -1
  128. ccxt/btcalpha.py +4 -11
  129. ccxt/btcbox.py +1 -1
  130. ccxt/btcmarkets.py +28 -27
  131. ccxt/btcturk.py +1 -1
  132. ccxt/bybit.py +10 -7
  133. ccxt/cex.py +2 -2
  134. ccxt/coinbase.py +33 -33
  135. ccxt/coinbaseexchange.py +1 -1
  136. ccxt/coinbaseinternational.py +1 -1
  137. ccxt/coincheck.py +1 -1
  138. ccxt/coinex.py +2 -2
  139. ccxt/coinlist.py +2 -2
  140. ccxt/coinmate.py +1 -1
  141. ccxt/coinmetro.py +1 -1
  142. ccxt/coinone.py +1 -1
  143. ccxt/coinsph.py +1 -1
  144. ccxt/coinspot.py +1 -1
  145. ccxt/cryptocom.py +1 -1
  146. ccxt/currencycom.py +1 -1
  147. ccxt/delta.py +7 -3
  148. ccxt/deribit.py +4 -4
  149. ccxt/digifinex.py +2 -2
  150. ccxt/exmo.py +2 -2
  151. ccxt/gate.py +3 -2
  152. ccxt/gemini.py +1 -1
  153. ccxt/hitbtc.py +1 -1
  154. ccxt/hollaex.py +1 -1
  155. ccxt/htx.py +3 -3
  156. ccxt/huobijp.py +1 -1
  157. ccxt/hyperliquid.py +3 -3
  158. ccxt/idex.py +1 -1
  159. ccxt/independentreserve.py +1 -1
  160. ccxt/indodax.py +1 -1
  161. ccxt/kraken.py +2 -2
  162. ccxt/kucoin.py +127 -46
  163. ccxt/kucoinfutures.py +1 -1
  164. ccxt/kuna.py +1 -1
  165. ccxt/latoken.py +1 -1
  166. ccxt/lbank.py +28 -7
  167. ccxt/luno.py +1 -1
  168. ccxt/lykke.py +1 -1
  169. ccxt/mercado.py +1 -1
  170. ccxt/mexc.py +1 -1
  171. ccxt/ndax.py +1 -1
  172. ccxt/novadax.py +1 -1
  173. ccxt/oceanex.py +1 -1
  174. ccxt/okcoin.py +1 -1
  175. ccxt/okx.py +3 -3
  176. ccxt/onetrading.py +1 -1
  177. ccxt/oxfun.py +2 -2
  178. ccxt/p2b.py +1 -1
  179. ccxt/paymium.py +1 -1
  180. ccxt/phemex.py +2 -2
  181. ccxt/poloniex.py +4 -3
  182. ccxt/poloniexfutures.py +1 -1
  183. ccxt/pro/__init__.py +1 -1
  184. ccxt/pro/binance.py +2 -2
  185. ccxt/pro/bitvavo.py +2 -2
  186. ccxt/pro/bybit.py +2 -2
  187. ccxt/pro/cex.py +3 -3
  188. ccxt/pro/coinbase.py +22 -1
  189. ccxt/pro/cryptocom.py +1 -1
  190. ccxt/pro/gate.py +2 -2
  191. ccxt/pro/hitbtc.py +1 -1
  192. ccxt/pro/kraken.py +2 -2
  193. ccxt/pro/kucoin.py +2 -2
  194. ccxt/pro/okx.py +2 -2
  195. ccxt/pro/oxfun.py +2 -2
  196. ccxt/pro/poloniex.py +1 -1
  197. ccxt/pro/vertex.py +1 -1
  198. ccxt/probit.py +1 -1
  199. ccxt/test/{test_async.py → tests_async.py} +27 -280
  200. ccxt/test/tests_helpers.py +284 -0
  201. ccxt/test/tests_init.py +35 -0
  202. ccxt/test/{test_sync.py → tests_sync.py} +27 -282
  203. ccxt/timex.py +1 -1
  204. ccxt/tokocrypto.py +1 -1
  205. ccxt/tradeogre.py +1 -1
  206. ccxt/upbit.py +1 -1
  207. ccxt/vertex.py +2 -2
  208. ccxt/wavesexchange.py +1 -1
  209. ccxt/wazirx.py +1 -1
  210. ccxt/whitebit.py +2 -2
  211. ccxt/woo.py +5 -5
  212. ccxt/woofipro.py +3 -3
  213. ccxt/yobit.py +1 -1
  214. ccxt/zaif.py +1 -1
  215. ccxt/zonda.py +1 -1
  216. {ccxt-4.3.54.dist-info → ccxt-4.3.56.dist-info}/METADATA +5 -7
  217. {ccxt-4.3.54.dist-info → ccxt-4.3.56.dist-info}/RECORD +220 -253
  218. ccxt/test/base/__init__.py +0 -29
  219. ccxt/test/base/test_account.py +0 -26
  220. ccxt/test/base/test_balance.py +0 -56
  221. ccxt/test/base/test_borrow_interest.py +0 -35
  222. ccxt/test/base/test_borrow_rate.py +0 -32
  223. ccxt/test/base/test_calculate_fee.py +0 -51
  224. ccxt/test/base/test_crypto.py +0 -127
  225. ccxt/test/base/test_currency.py +0 -76
  226. ccxt/test/base/test_datetime.py +0 -109
  227. ccxt/test/base/test_decimal_to_precision.py +0 -392
  228. ccxt/test/base/test_deep_extend.py +0 -68
  229. ccxt/test/base/test_deposit_withdrawal.py +0 -50
  230. ccxt/test/base/test_exchange_datetime_functions.py +0 -76
  231. ccxt/test/base/test_funding_rate_history.py +0 -29
  232. ccxt/test/base/test_last_price.py +0 -31
  233. ccxt/test/base/test_ledger_entry.py +0 -45
  234. ccxt/test/base/test_ledger_item.py +0 -48
  235. ccxt/test/base/test_leverage_tier.py +0 -33
  236. ccxt/test/base/test_liquidation.py +0 -50
  237. ccxt/test/base/test_margin_mode.py +0 -24
  238. ccxt/test/base/test_margin_modification.py +0 -35
  239. ccxt/test/base/test_market.py +0 -193
  240. ccxt/test/base/test_number.py +0 -411
  241. ccxt/test/base/test_ohlcv.py +0 -33
  242. ccxt/test/base/test_open_interest.py +0 -32
  243. ccxt/test/base/test_order.py +0 -64
  244. ccxt/test/base/test_order_book.py +0 -69
  245. ccxt/test/base/test_position.py +0 -60
  246. ccxt/test/base/test_shared_methods.py +0 -353
  247. ccxt/test/base/test_status.py +0 -24
  248. ccxt/test/base/test_throttle.py +0 -126
  249. ccxt/test/base/test_ticker.py +0 -92
  250. ccxt/test/base/test_trade.py +0 -47
  251. ccxt/test/base/test_trading_fee.py +0 -26
  252. ccxt/test/base/test_transaction.py +0 -39
  253. {ccxt-4.3.54.dist-info → ccxt-4.3.56.dist-info}/LICENSE.txt +0 -0
  254. {ccxt-4.3.54.dist-info → ccxt-4.3.56.dist-info}/WHEEL +0 -0
  255. {ccxt-4.3.54.dist-info → ccxt-4.3.56.dist-info}/top_level.txt +0 -0
@@ -1,411 +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
-
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
- # eslint-disable-next-line import/newline-after-import
27
-
28
- # ----------------------------------------------------------------------------
29
- # number_to_string
30
-
31
- assert number_to_string(-7.8e-7) == '-0.00000078'
32
- assert number_to_string(7.8e-7) == '0.00000078'
33
- assert number_to_string(-17.805e-7) == '-0.0000017805'
34
- assert number_to_string(17.805e-7) == '0.0000017805'
35
- assert number_to_string(-7.0005e27) == '-7000500000000000000000000000'
36
- assert number_to_string(7.0005e27) == '7000500000000000000000000000'
37
- assert number_to_string(-7.9e27) == '-7900000000000000000000000000'
38
- assert number_to_string(7e27) == '7000000000000000000000000000'
39
- assert number_to_string(7.9e27) == '7900000000000000000000000000'
40
- assert number_to_string(-12.345) == '-12.345'
41
- assert number_to_string(12.345) == '12.345'
42
- assert number_to_string(0) == '0'
43
- assert number_to_string(7.35946e21) == '7359460000000000000000'
44
- assert number_to_string(0.00000001) == '0.00000001'
45
- assert number_to_string(1e-7) == '0.0000001'
46
- assert number_to_string(-1e-7) == '-0.0000001'
47
-
48
- # ----------------------------------------------------------------------------
49
- # testDecimalToPrecisionTruncationToNDigitsAfterDot
50
-
51
- assert decimal_to_precision('12.3456000', TRUNCATE, 100, DECIMAL_PLACES) == '12.3456'
52
- assert decimal_to_precision('12.3456', TRUNCATE, 100, DECIMAL_PLACES) == '12.3456'
53
- assert decimal_to_precision('12.3456', TRUNCATE, 4, DECIMAL_PLACES) == '12.3456'
54
- assert decimal_to_precision('12.3456', TRUNCATE, 3, DECIMAL_PLACES) == '12.345'
55
- assert decimal_to_precision('12.3456', TRUNCATE, 2, DECIMAL_PLACES) == '12.34'
56
- assert decimal_to_precision('12.3456', TRUNCATE, 1, DECIMAL_PLACES) == '12.3'
57
- assert decimal_to_precision('12.3456', TRUNCATE, 0, DECIMAL_PLACES) == '12'
58
- # ['12.3456', TRUNCATE, -1, DECIMAL_PLACES, '10'], # not yet supported
59
- # ['123.456', TRUNCATE, -2, DECIMAL_PLACES, '120'], # not yet supported
60
- # ['123.456', TRUNCATE, -3, DECIMAL_PLACES, '100'], # not yet supported
61
-
62
- assert decimal_to_precision('0.0000001', TRUNCATE, 8, DECIMAL_PLACES) == '0.0000001'
63
- assert decimal_to_precision('0.00000001', TRUNCATE, 8, DECIMAL_PLACES) == '0.00000001'
64
-
65
- assert decimal_to_precision('0.000000000', TRUNCATE, 9, DECIMAL_PLACES, PAD_WITH_ZERO) == '0.000000000'
66
- assert decimal_to_precision('0.000000001', TRUNCATE, 9, DECIMAL_PLACES, PAD_WITH_ZERO) == '0.000000001'
67
-
68
- assert decimal_to_precision('12.3456', TRUNCATE, -1, DECIMAL_PLACES) == '10'
69
- assert decimal_to_precision('123.456', TRUNCATE, -1, DECIMAL_PLACES) == '120'
70
- assert decimal_to_precision('123.456', TRUNCATE, -2, DECIMAL_PLACES) == '100'
71
- assert decimal_to_precision('9.99999', TRUNCATE, -1, DECIMAL_PLACES) == '0'
72
- assert decimal_to_precision('99.9999', TRUNCATE, -1, DECIMAL_PLACES) == '90'
73
- assert decimal_to_precision('99.9999', TRUNCATE, -2, DECIMAL_PLACES) == '0'
74
-
75
- assert decimal_to_precision('0', TRUNCATE, 0, DECIMAL_PLACES) == '0'
76
- assert decimal_to_precision('-0.9', TRUNCATE, 0, DECIMAL_PLACES) == '0'
77
-
78
- # ----------------------------------------------------------------------------
79
- # testDecimalToPrecisionTruncationToNSignificantDigits
80
-
81
- assert decimal_to_precision('0.000123456700', TRUNCATE, 100, SIGNIFICANT_DIGITS) == '0.0001234567'
82
- assert decimal_to_precision('0.0001234567', TRUNCATE, 100, SIGNIFICANT_DIGITS) == '0.0001234567'
83
- assert decimal_to_precision('0.0001234567', TRUNCATE, 7, SIGNIFICANT_DIGITS) == '0.0001234567'
84
-
85
- assert decimal_to_precision('0.000123456', TRUNCATE, 6, SIGNIFICANT_DIGITS) == '0.000123456'
86
- assert decimal_to_precision('0.000123456', TRUNCATE, 5, SIGNIFICANT_DIGITS) == '0.00012345'
87
- assert decimal_to_precision('0.000123456', TRUNCATE, 2, SIGNIFICANT_DIGITS) == '0.00012'
88
- assert decimal_to_precision('0.000123456', TRUNCATE, 1, SIGNIFICANT_DIGITS) == '0.0001'
89
-
90
- assert decimal_to_precision('123.0000987654', TRUNCATE, 10, SIGNIFICANT_DIGITS, PAD_WITH_ZERO) == '123.0000987'
91
- assert decimal_to_precision('123.0000987654', TRUNCATE, 8, SIGNIFICANT_DIGITS) == '123.00009'
92
- assert decimal_to_precision('123.0000987654', TRUNCATE, 7, SIGNIFICANT_DIGITS, PAD_WITH_ZERO) == '123.0000'
93
- assert decimal_to_precision('123.0000987654', TRUNCATE, 6, SIGNIFICANT_DIGITS) == '123'
94
- assert decimal_to_precision('123.0000987654', TRUNCATE, 5, SIGNIFICANT_DIGITS, PAD_WITH_ZERO) == '123.00'
95
- assert decimal_to_precision('123.0000987654', TRUNCATE, 4, SIGNIFICANT_DIGITS) == '123'
96
- assert decimal_to_precision('123.0000987654', TRUNCATE, 4, SIGNIFICANT_DIGITS, PAD_WITH_ZERO) == '123.0'
97
- assert decimal_to_precision('123.0000987654', TRUNCATE, 3, SIGNIFICANT_DIGITS, PAD_WITH_ZERO) == '123'
98
- assert decimal_to_precision('123.0000987654', TRUNCATE, 2, SIGNIFICANT_DIGITS) == '120'
99
- assert decimal_to_precision('123.0000987654', TRUNCATE, 1, SIGNIFICANT_DIGITS) == '100'
100
- assert decimal_to_precision('123.0000987654', TRUNCATE, 1, SIGNIFICANT_DIGITS, PAD_WITH_ZERO) == '100'
101
-
102
- assert decimal_to_precision('1234', TRUNCATE, 5, SIGNIFICANT_DIGITS) == '1234'
103
- assert decimal_to_precision('1234', TRUNCATE, 5, SIGNIFICANT_DIGITS, PAD_WITH_ZERO) == '1234.0'
104
- assert decimal_to_precision('1234', TRUNCATE, 4, SIGNIFICANT_DIGITS) == '1234'
105
- assert decimal_to_precision('1234', TRUNCATE, 4, SIGNIFICANT_DIGITS, PAD_WITH_ZERO) == '1234'
106
- assert decimal_to_precision('1234.69', TRUNCATE, 0, SIGNIFICANT_DIGITS) == '0'
107
- assert decimal_to_precision('1234.69', TRUNCATE, 0, SIGNIFICANT_DIGITS, PAD_WITH_ZERO) == '0'
108
-
109
- # ----------------------------------------------------------------------------
110
- # testDecimalToPrecisionRoundingToNDigitsAfterDot
111
-
112
- assert decimal_to_precision('12.3456000', ROUND, 100, DECIMAL_PLACES) == '12.3456'
113
- assert decimal_to_precision('12.3456', ROUND, 100, DECIMAL_PLACES) == '12.3456'
114
- assert decimal_to_precision('12.3456', ROUND, 4, DECIMAL_PLACES) == '12.3456'
115
- assert decimal_to_precision('12.3456', ROUND, 3, DECIMAL_PLACES) == '12.346'
116
- assert decimal_to_precision('12.3456', ROUND, 2, DECIMAL_PLACES) == '12.35'
117
- assert decimal_to_precision('12.3456', ROUND, 1, DECIMAL_PLACES) == '12.3'
118
- assert decimal_to_precision('12.3456', ROUND, 0, DECIMAL_PLACES) == '12'
119
-
120
- # todo:
121
- # ['9.999', ROUND, 3, DECIMAL_PLACES, NO_PADDING, '9.999'],
122
- # ['9.999', ROUND, 2, DECIMAL_PLACES, NO_PADDING, '10'],
123
- # ['9.999', ROUND, 2, DECIMAL_PLACES, PAD_WITH_ZERO, '10.00'],
124
- # ['99.999', ROUND, 2, DECIMAL_PLACES, PAD_WITH_ZERO, '100.00'],
125
- # ['-99.999', ROUND, 2, DECIMAL_PLACES, PAD_WITH_ZERO, '-100.00'],
126
-
127
- # ['12.3456', ROUND, -1, DECIMAL_PLACES, NO_PADDING, '10'], # not yet supported
128
- # ['123.456', ROUND, -1, DECIMAL_PLACES, NO_PADDING, '120'], # not yet supported
129
- # ['123.456', ROUND, -2, DECIMAL_PLACES, NO_PADDING, '100'], # not yet supported
130
-
131
- # a problematic case in PHP
132
- assert decimal_to_precision('10000', ROUND, 6, DECIMAL_PLACES) == '10000'
133
- assert decimal_to_precision('0.00003186', ROUND, 8, DECIMAL_PLACES) == '0.00003186'
134
-
135
- assert decimal_to_precision('12.3456', ROUND, -1, DECIMAL_PLACES) == '10'
136
- assert decimal_to_precision('123.456', ROUND, -1, DECIMAL_PLACES) == '120'
137
- assert decimal_to_precision('123.456', ROUND, -2, DECIMAL_PLACES) == '100'
138
- assert decimal_to_precision('9.99999', ROUND, -1, DECIMAL_PLACES) == '10'
139
- assert decimal_to_precision('99.9999', ROUND, -1, DECIMAL_PLACES) == '100'
140
- assert decimal_to_precision('99.9999', ROUND, -2, DECIMAL_PLACES) == '100'
141
-
142
- assert decimal_to_precision('9.999', ROUND, 3, DECIMAL_PLACES) == '9.999'
143
- assert decimal_to_precision('9.999', ROUND, 2, DECIMAL_PLACES) == '10'
144
- assert decimal_to_precision('9.999', ROUND, 2, DECIMAL_PLACES, PAD_WITH_ZERO) == '10.00'
145
- assert decimal_to_precision('99.999', ROUND, 2, DECIMAL_PLACES, PAD_WITH_ZERO) == '100.00'
146
- assert decimal_to_precision('-99.999', ROUND, 2, DECIMAL_PLACES, PAD_WITH_ZERO) == '-100.00'
147
-
148
- # ----------------------------------------------------------------------------
149
- # testDecimalToPrecisionRoundingToNSignificantDigits
150
-
151
- assert decimal_to_precision('0.000123456700', ROUND, 100, SIGNIFICANT_DIGITS) == '0.0001234567'
152
- assert decimal_to_precision('0.0001234567', ROUND, 100, SIGNIFICANT_DIGITS) == '0.0001234567'
153
- assert decimal_to_precision('0.0001234567', ROUND, 7, SIGNIFICANT_DIGITS) == '0.0001234567'
154
-
155
- assert decimal_to_precision('0.000123456', ROUND, 6, SIGNIFICANT_DIGITS) == '0.000123456'
156
- assert decimal_to_precision('0.000123456', ROUND, 5, SIGNIFICANT_DIGITS) == '0.00012346'
157
- assert decimal_to_precision('0.000123456', ROUND, 4, SIGNIFICANT_DIGITS) == '0.0001235'
158
- assert decimal_to_precision('0.00012', ROUND, 2, SIGNIFICANT_DIGITS) == '0.00012'
159
- assert decimal_to_precision('0.0001', ROUND, 1, SIGNIFICANT_DIGITS) == '0.0001'
160
-
161
- assert decimal_to_precision('123.0000987654', ROUND, 7, SIGNIFICANT_DIGITS) == '123.0001'
162
- assert decimal_to_precision('123.0000987654', ROUND, 6, SIGNIFICANT_DIGITS) == '123'
163
-
164
- assert decimal_to_precision('0.00098765', ROUND, 2, SIGNIFICANT_DIGITS) == '0.00099'
165
- assert decimal_to_precision('0.00098765', ROUND, 2, SIGNIFICANT_DIGITS, PAD_WITH_ZERO) == '0.00099'
166
-
167
- assert decimal_to_precision('0.00098765', ROUND, 1, SIGNIFICANT_DIGITS) == '0.001'
168
- assert decimal_to_precision('0.00098765', ROUND, 10, SIGNIFICANT_DIGITS, PAD_WITH_ZERO) == '0.0009876500000'
169
-
170
- assert decimal_to_precision('0.098765', ROUND, 1, SIGNIFICANT_DIGITS, PAD_WITH_ZERO) == '0.1'
171
-
172
- assert decimal_to_precision('0', ROUND, 0, SIGNIFICANT_DIGITS) == '0'
173
- assert decimal_to_precision('-0.123', ROUND, 0, SIGNIFICANT_DIGITS) == '0'
174
-
175
- assert decimal_to_precision('0.00000044', ROUND, 5, SIGNIFICANT_DIGITS) == '0.00000044'
176
-
177
- # ----------------------------------------------------------------------------
178
- # testDecimalToPrecisionRoundingToTickSize
179
-
180
- assert decimal_to_precision('0.000123456700', ROUND, 0.00012, TICK_SIZE) == '0.00012'
181
- assert decimal_to_precision('0.0001234567', ROUND, 0.00013, TICK_SIZE) == '0.00013'
182
- assert decimal_to_precision('0.0001234567', TRUNCATE, 0.00013, TICK_SIZE) == '0'
183
- assert decimal_to_precision('101.000123456700', ROUND, 100, TICK_SIZE) == '100'
184
- assert decimal_to_precision('0.000123456700', ROUND, 100, TICK_SIZE) == '0'
185
- assert decimal_to_precision('165', TRUNCATE, 110, TICK_SIZE) == '110'
186
- assert decimal_to_precision('3210', TRUNCATE, 1110, TICK_SIZE) == '2220'
187
- assert decimal_to_precision('165', ROUND, 110, TICK_SIZE) == '220'
188
- assert decimal_to_precision('0.000123456789', ROUND, 0.00000012, TICK_SIZE) == '0.00012348'
189
- assert decimal_to_precision('0.000123456789', TRUNCATE, 0.00000012, TICK_SIZE) == '0.00012336'
190
- assert decimal_to_precision('0.000273398', ROUND, 1e-7, TICK_SIZE) == '0.0002734'
191
-
192
- assert decimal_to_precision('0.00005714', TRUNCATE, 0.00000001, TICK_SIZE) == '0.00005714'
193
- # self line causes problems in JS, fix with Precise
194
- # assert decimal_to_precision('0.0000571495257361', TRUNCATE, 0.00000001, TICK_SIZE) == '0.00005714'
195
-
196
- assert decimal_to_precision('0.01', ROUND, 0.0001, TICK_SIZE, PAD_WITH_ZERO) == '0.0100'
197
- assert decimal_to_precision('0.01', TRUNCATE, 0.0001, TICK_SIZE, PAD_WITH_ZERO) == '0.0100'
198
-
199
- assert decimal_to_precision('-0.000123456789', ROUND, 0.00000012, TICK_SIZE) == '-0.00012348'
200
- assert decimal_to_precision('-0.000123456789', TRUNCATE, 0.00000012, TICK_SIZE) == '-0.00012336'
201
- assert decimal_to_precision('-165', TRUNCATE, 110, TICK_SIZE) == '-110'
202
- assert decimal_to_precision('-165', ROUND, 110, TICK_SIZE) == '-220'
203
- assert decimal_to_precision('-1650', TRUNCATE, 1100, TICK_SIZE) == '-1100'
204
- assert decimal_to_precision('-1650', ROUND, 1100, TICK_SIZE) == '-2200'
205
-
206
- assert decimal_to_precision('0.0006', TRUNCATE, 0.0001, TICK_SIZE) == '0.0006'
207
- assert decimal_to_precision('-0.0006', TRUNCATE, 0.0001, TICK_SIZE) == '-0.0006'
208
- assert decimal_to_precision('0.6', TRUNCATE, 0.2, TICK_SIZE) == '0.6'
209
- assert decimal_to_precision('-0.6', TRUNCATE, 0.2, TICK_SIZE) == '-0.6'
210
- assert decimal_to_precision('1.2', ROUND, 0.4, TICK_SIZE) == '1.2'
211
- assert decimal_to_precision('-1.2', ROUND, 0.4, TICK_SIZE) == '-1.2'
212
- assert decimal_to_precision('1.2', ROUND, 0.02, TICK_SIZE) == '1.2'
213
- assert decimal_to_precision('-1.2', ROUND, 0.02, TICK_SIZE) == '-1.2'
214
- assert decimal_to_precision('44', ROUND, 4.4, TICK_SIZE) == '44'
215
- assert decimal_to_precision('-44', ROUND, 4.4, TICK_SIZE) == '-44'
216
- assert decimal_to_precision('44.00000001', ROUND, 4.4, TICK_SIZE) == '44'
217
- assert decimal_to_precision('-44.00000001', ROUND, 4.4, TICK_SIZE) == '-44'
218
-
219
- # https://github.com/ccxt/ccxt/issues/6731
220
- assert decimal_to_precision('20', TRUNCATE, 0.00000001, TICK_SIZE) == '20'
221
-
222
- # ----------------------------------------------------------------------------
223
- # testDecimalToPrecisionNegativeNumbers
224
-
225
- assert decimal_to_precision('-0.123456', TRUNCATE, 5, DECIMAL_PLACES) == '-0.12345'
226
- assert decimal_to_precision('-0.123456', ROUND, 5, DECIMAL_PLACES) == '-0.12346'
227
-
228
- # ----------------------------------------------------------------------------
229
- # decimal_to_precision: without dot / trailing dot
230
-
231
- assert decimal_to_precision('123', TRUNCATE, 0) == '123'
232
-
233
- assert decimal_to_precision('123', TRUNCATE, 5, DECIMAL_PLACES) == '123'
234
- assert decimal_to_precision('123', TRUNCATE, 5, DECIMAL_PLACES, PAD_WITH_ZERO) == '123.00000'
235
-
236
- assert decimal_to_precision('123.', TRUNCATE, 0, DECIMAL_PLACES) == '123'
237
- assert decimal_to_precision('123.', TRUNCATE, 5, DECIMAL_PLACES, PAD_WITH_ZERO) == '123.00000'
238
-
239
- assert decimal_to_precision('0.', TRUNCATE, 0) == '0'
240
- assert decimal_to_precision('0.', TRUNCATE, 5, DECIMAL_PLACES, PAD_WITH_ZERO) == '0.00000'
241
-
242
- # ----------------------------------------------------------------------------
243
- # decimal_to_precision: rounding for equidistant digits
244
-
245
- assert decimal_to_precision('1.44', ROUND, 1, DECIMAL_PLACES) == '1.4'
246
- assert decimal_to_precision('1.45', ROUND, 1, DECIMAL_PLACES) == '1.5'
247
- assert decimal_to_precision('1.45', ROUND, 0, DECIMAL_PLACES) == '1' # not 2
248
-
249
- # ----------------------------------------------------------------------------
250
- # negative precision only implemented so far in python
251
- # pretty useless for decimal applications |x| < 5 == 0
252
- # NO_PADDING and PAD_WITH_ZERO are ignored
253
-
254
- assert decimal_to_precision('5', ROUND, -1, DECIMAL_PLACES) == '10'
255
- assert decimal_to_precision('4.999', ROUND, -1, DECIMAL_PLACES) == '0'
256
- assert decimal_to_precision('0.0431531423', ROUND, -1, DECIMAL_PLACES) == '0'
257
- assert decimal_to_precision('-69.3', ROUND, -1, DECIMAL_PLACES) == '-70'
258
- assert decimal_to_precision('5001', ROUND, -4, DECIMAL_PLACES) == '10000'
259
- assert decimal_to_precision('4999.999', ROUND, -4, DECIMAL_PLACES) == '0'
260
-
261
- assert decimal_to_precision('69.3', TRUNCATE, -2, DECIMAL_PLACES) == '0'
262
- assert decimal_to_precision('-69.3', TRUNCATE, -2, DECIMAL_PLACES) == '0'
263
- assert decimal_to_precision('69.3', TRUNCATE, -1, SIGNIFICANT_DIGITS) == '60'
264
- assert decimal_to_precision('-69.3', TRUNCATE, -1, SIGNIFICANT_DIGITS) == '-60'
265
- assert decimal_to_precision('69.3', TRUNCATE, -2, SIGNIFICANT_DIGITS) == '0'
266
- assert decimal_to_precision('1602000000000000000000', TRUNCATE, 3, SIGNIFICANT_DIGITS) == '1600000000000000000000'
267
-
268
- # ----------------------------------------------------------------------------
269
- # decimal_to_precision: stringified precision
270
- assert decimal_to_precision('-0.000123456789', ROUND, '0.00000012', TICK_SIZE) == '-0.00012348'
271
- assert decimal_to_precision('-0.000123456789', TRUNCATE, '0.00000012', TICK_SIZE) == '-0.00012336'
272
- assert decimal_to_precision('-165', TRUNCATE, '110', TICK_SIZE) == '-110'
273
- assert decimal_to_precision('-165', ROUND, '110', TICK_SIZE) == '-220'
274
-
275
- # ----------------------------------------------------------------------------
276
- # testDecimalToPrecisionErrorHandling(todo)
277
- #
278
- # throws(() =>
279
- # decimal_to_precision('123456.789', TRUNCATE, -2, DECIMAL_PLACES),
280
- # 'negative precision is not yet supported')
281
- #
282
- # throws(() =>
283
- # decimal_to_precision('foo'),
284
- # "invalid number(contains an illegal character 'f')")
285
- #
286
- # throws(() =>
287
- # decimal_to_precision('0.01', TRUNCATE, -1, TICK_SIZE),
288
- # "TICK_SIZE cant be used with negative numPrecisionDigits")
289
-
290
- # ----------------------------------------------------------------------------
291
-
292
- w = '-1.123e-6'
293
- x = '0.00000002'
294
- y = '69696900000'
295
- z = '0'
296
- a = '1e8'
297
-
298
- assert Precise.string_mul(x, y) == '1393.938'
299
- assert Precise.string_mul(y, x) == '1393.938'
300
- assert Precise.string_add(x, y) == '69696900000.00000002'
301
- assert Precise.string_add(y, x) == '69696900000.00000002'
302
- assert Precise.string_sub(x, y) == '-69696899999.99999998'
303
- assert Precise.string_sub(y, x) == '69696899999.99999998'
304
- assert Precise.string_div(x, y, 1) == '0'
305
- assert Precise.string_div(x, y) == '0'
306
- assert Precise.string_div(x, y, 19) == '0.0000000000000000002'
307
- assert Precise.string_div(x, y, 20) == '0.00000000000000000028'
308
- assert Precise.string_div(x, y, 21) == '0.000000000000000000286'
309
- assert Precise.string_div(x, y, 22) == '0.0000000000000000002869'
310
- assert Precise.string_div(y, x) == '3484845000000000000'
311
-
312
- assert Precise.string_mul(x, w) == '-0.00000000000002246'
313
- assert Precise.string_mul(w, x) == '-0.00000000000002246'
314
- assert Precise.string_add(x, w) == '-0.000001103'
315
- assert Precise.string_add(w, x) == '-0.000001103'
316
- assert Precise.string_sub(x, w) == '0.000001143'
317
- assert Precise.string_sub(w, x) == '-0.000001143'
318
- assert Precise.string_div(x, w) == '-0.017809439002671415'
319
- assert Precise.string_div(w, x) == '-56.15'
320
-
321
- assert Precise.string_mul(z, w) == '0'
322
- assert Precise.string_mul(z, x) == '0'
323
- assert Precise.string_mul(z, y) == '0'
324
- assert Precise.string_mul(w, z) == '0'
325
- assert Precise.string_mul(x, z) == '0'
326
- assert Precise.string_mul(y, z) == '0'
327
- assert Precise.string_add(z, w) == '-0.000001123'
328
- assert Precise.string_add(z, x) == '0.00000002'
329
- assert Precise.string_add(z, y) == '69696900000'
330
- assert Precise.string_add(w, z) == '-0.000001123'
331
- assert Precise.string_add(x, z) == '0.00000002'
332
- assert Precise.string_add(y, z) == '69696900000'
333
-
334
- assert Precise.string_mul(x, a) == '2'
335
- assert Precise.string_mul(a, x) == '2'
336
- assert Precise.string_mul(y, a) == '6969690000000000000'
337
- assert Precise.string_mul(a, y) == '6969690000000000000'
338
- assert Precise.string_div(y, a) == '696.969'
339
- assert Precise.string_div(y, a, -1) == '690'
340
- assert Precise.string_div(y, a, 0) == '696'
341
- assert Precise.string_div(y, a, 1) == '696.9'
342
- assert Precise.string_div(y, a, 2) == '696.96'
343
- assert Precise.string_div(a, y) == '0.001434784043479695'
344
-
345
- assert Precise.string_abs('0') == '0'
346
- assert Precise.string_abs('-0') == '0'
347
- assert Precise.string_abs('-500.1') == '500.1'
348
- assert Precise.string_abs('213') == '213'
349
-
350
- assert Precise.string_neg('0') == '0'
351
- assert Precise.string_neg('-0') == '0'
352
- assert Precise.string_neg('-500.1') == '500.1'
353
- assert Precise.string_neg('213') == '-213'
354
-
355
- assert Precise.string_mod('57.123', '10') == '7.123'
356
- assert Precise.string_mod('18', '6') == '0'
357
- assert Precise.string_mod('10.1', '0.5') == '0.1'
358
- assert Precise.string_mod('10000000', '5555') == '1000'
359
- assert Precise.string_mod('5550', '120') == '30'
360
-
361
- assert Precise.string_equals('1.0000', '1')
362
- assert Precise.string_equals('-0.0', '0')
363
- assert Precise.string_equals('-0.0', '0.0')
364
- assert Precise.string_equals('5.534000', '5.5340')
365
-
366
- assert Precise.string_min('1.0000', '2') == '1'
367
- assert Precise.string_min('2', '1.2345') == '1.2345'
368
- assert Precise.string_min('3.1415', '-2') == '-2'
369
- assert Precise.string_min('-3.1415', '-2') == '-3.1415'
370
- assert Precise.string_min('0.000', '-0.0') == '0'
371
-
372
- assert Precise.string_max('1.0000', '2') == '2'
373
- assert Precise.string_max('2', '1.2345') == '2'
374
- assert Precise.string_max('3.1415', '-2') == '3.1415'
375
- assert Precise.string_max('-3.1415', '-2') == '-2'
376
- assert Precise.string_max('0.000', '-0.0') == '0'
377
-
378
- assert not Precise.string_gt('1.0000', '2')
379
- assert Precise.string_gt('2', '1.2345')
380
- assert Precise.string_gt('3.1415', '-2')
381
- assert not Precise.string_gt('-3.1415', '-2')
382
- assert not Precise.string_gt('3.1415', '3.1415')
383
- assert Precise.string_gt('3.14150000000000000000001', '3.1415')
384
-
385
- assert not Precise.string_ge('1.0000', '2')
386
- assert Precise.string_ge('2', '1.2345')
387
- assert Precise.string_ge('3.1415', '-2')
388
- assert not Precise.string_ge('-3.1415', '-2')
389
- assert Precise.string_ge('3.1415', '3.1415')
390
- assert Precise.string_ge('3.14150000000000000000001', '3.1415')
391
-
392
- assert Precise.string_lt('1.0000', '2')
393
- assert not Precise.string_lt('2', '1.2345')
394
- assert not Precise.string_lt('3.1415', '-2')
395
- assert Precise.string_lt('-3.1415', '-2')
396
- assert not Precise.string_lt('3.1415', '3.1415')
397
- assert Precise.string_lt('3.1415', '3.14150000000000000000001')
398
-
399
- assert Precise.string_le('1.0000', '2')
400
- assert not Precise.string_le('2', '1.2345')
401
- assert not Precise.string_le('3.1415', '-2')
402
- assert Precise.string_le('-3.1415', '-2')
403
- assert Precise.string_le('3.1415', '3.1415')
404
- assert Precise.string_le('3.1415', '3.14150000000000000000001')
405
-
406
- # todo
407
- # $self->assertSame(0, Exchange::sum())
408
- # $self->assertSame(2, Exchange::sum(2))
409
- # $self->assertSame(432, Exchange::sum(2, 30, 400))
410
- # eslint-disable-next-line eol-last
411
- # $self->assertSame(439, Exchange::sum(2, null, [88], 30, '7', 400, null))
@@ -1,33 +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_ohlcv(exchange, skipped_properties, method, entry, symbol, now):
18
- format = [1638230400000, exchange.parse_number('0.123'), exchange.parse_number('0.125'), exchange.parse_number('0.121'), exchange.parse_number('0.122'), exchange.parse_number('123.456')]
19
- empty_not_allowed_for = [0, 1, 2, 3, 4, 5]
20
- test_shared_methods.assert_structure(exchange, skipped_properties, method, entry, format, empty_not_allowed_for)
21
- test_shared_methods.assert_timestamp_and_datetime(exchange, skipped_properties, method, entry, now, 0)
22
- log_text = test_shared_methods.log_template(exchange, method, entry)
23
- #
24
- assert len(entry) >= 6, 'ohlcv array length should be >= 6;' + log_text
25
- if not ('roundTimestamp' in skipped_properties):
26
- test_shared_methods.assert_round_minute_timestamp(exchange, skipped_properties, method, entry, 0)
27
- high = exchange.safe_string(entry, 2)
28
- low = exchange.safe_string(entry, 3)
29
- test_shared_methods.assert_less_or_equal(exchange, skipped_properties, method, entry, '1', high)
30
- test_shared_methods.assert_greater_or_equal(exchange, skipped_properties, method, entry, '1', low)
31
- test_shared_methods.assert_less_or_equal(exchange, skipped_properties, method, entry, '4', high)
32
- test_shared_methods.assert_greater_or_equal(exchange, skipped_properties, method, entry, '4', low)
33
- assert (symbol is None) or (isinstance(symbol, str)), 'symbol ' + symbol + ' is incorrect' + log_text # todo: check with standard symbol check
@@ -1,32 +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_open_interest(exchange, skipped_properties, method, entry):
18
- format = {
19
- 'symbol': 'BTC/USDT',
20
- 'openInterestAmount': exchange.parse_number('3544581864.598'),
21
- 'openInterestValue': exchange.parse_number('3544581864.598'),
22
- 'timestamp': 1649373600000,
23
- 'datetime': '2022-04-07T23:20:00.000Z',
24
- 'info': {},
25
- }
26
- empty_allowed_for = ['symbol', 'timestamp', 'openInterestAmount', 'openInterestValue', 'datetime']
27
- test_shared_methods.assert_structure(exchange, skipped_properties, method, entry, format, empty_allowed_for)
28
- test_shared_methods.assert_symbol(exchange, skipped_properties, method, entry, 'symbol')
29
- test_shared_methods.assert_timestamp_and_datetime(exchange, skipped_properties, method, entry)
30
- #
31
- test_shared_methods.assert_greater(exchange, skipped_properties, method, entry, 'openInterestAmount', '0')
32
- test_shared_methods.assert_greater(exchange, skipped_properties, method, entry, 'openInterestValue', '0')
@@ -1,64 +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
- from ccxt.test.base.test_trade import test_trade # noqa E402
17
-
18
- def test_order(exchange, skipped_properties, method, entry, symbol, now):
19
- format = {
20
- 'info': {},
21
- 'id': '123',
22
- 'clientOrderId': '1234',
23
- 'timestamp': 1649373600000,
24
- 'datetime': '2022-04-07T23:20:00.000Z',
25
- 'lastTradeTimestamp': 1649373610000,
26
- 'symbol': 'XYZ/USDT',
27
- 'type': 'limit',
28
- 'timeInForce': 'GTC',
29
- 'postOnly': True,
30
- 'side': 'sell',
31
- 'price': exchange.parse_number('1.23456'),
32
- 'stopPrice': exchange.parse_number('1.1111'),
33
- 'amount': exchange.parse_number('1.23'),
34
- 'cost': exchange.parse_number('2.34'),
35
- 'average': exchange.parse_number('1.234'),
36
- 'filled': exchange.parse_number('1.23'),
37
- 'remaining': exchange.parse_number('0.123'),
38
- 'status': 'ok',
39
- 'fee': {},
40
- 'trades': [],
41
- }
42
- empty_allowed_for = ['clientOrderId', 'stopPrice', 'trades', 'timestamp', 'datetime', 'lastTradeTimestamp', 'average', 'type', 'timeInForce', 'postOnly', 'side', 'price', 'amount', 'cost', 'filled', 'remaining', 'status', 'fee'] # there are exchanges that return only order id, so we don't need to strictly requite all props to be set.
43
- test_shared_methods.assert_structure(exchange, skipped_properties, method, entry, format, empty_allowed_for)
44
- test_shared_methods.assert_timestamp_and_datetime(exchange, skipped_properties, method, entry, now)
45
- #
46
- test_shared_methods.assert_in_array(exchange, skipped_properties, method, entry, 'timeInForce', ['GTC', 'GTK', 'IOC', 'FOK', 'PO'])
47
- test_shared_methods.assert_in_array(exchange, skipped_properties, method, entry, 'status', ['open', 'closed', 'canceled'])
48
- test_shared_methods.assert_in_array(exchange, skipped_properties, method, entry, 'side', ['buy', 'sell'])
49
- test_shared_methods.assert_in_array(exchange, skipped_properties, method, entry, 'postOnly', [True, False])
50
- test_shared_methods.assert_symbol(exchange, skipped_properties, method, entry, 'symbol', symbol)
51
- test_shared_methods.assert_greater(exchange, skipped_properties, method, entry, 'price', '0')
52
- test_shared_methods.assert_greater(exchange, skipped_properties, method, entry, 'stopPrice', '0')
53
- test_shared_methods.assert_greater_or_equal(exchange, skipped_properties, method, entry, 'cost', '0')
54
- test_shared_methods.assert_greater(exchange, skipped_properties, method, entry, 'average', '0')
55
- test_shared_methods.assert_greater_or_equal(exchange, skipped_properties, method, entry, 'filled', '0')
56
- test_shared_methods.assert_greater_or_equal(exchange, skipped_properties, method, entry, 'remaining', '0')
57
- test_shared_methods.assert_greater_or_equal(exchange, skipped_properties, method, entry, 'amount', '0')
58
- test_shared_methods.assert_greater_or_equal(exchange, skipped_properties, method, entry, 'amount', exchange.safe_string(entry, 'remaining'))
59
- test_shared_methods.assert_greater_or_equal(exchange, skipped_properties, method, entry, 'amount', exchange.safe_string(entry, 'filled'))
60
- if not ('trades' in skipped_properties):
61
- if entry['trades'] is not None:
62
- for i in range(0, len(entry['trades'])):
63
- test_trade(exchange, skipped_properties, method, entry['trades'][i], symbol, now)
64
- test_shared_methods.assert_fee_structure(exchange, skipped_properties, method, entry, 'fee')
@@ -1,69 +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.base.precise import Precise # noqa E402
16
- from ccxt.test.base import test_shared_methods # noqa E402
17
-
18
- def test_order_book(exchange, skipped_properties, method, orderbook, symbol):
19
- format = {
20
- 'symbol': 'ETH/BTC',
21
- 'asks': [[exchange.parse_number('1.24'), exchange.parse_number('0.453')], [exchange.parse_number('1.25'), exchange.parse_number('0.157')]],
22
- 'bids': [[exchange.parse_number('1.23'), exchange.parse_number('0.123')], [exchange.parse_number('1.22'), exchange.parse_number('0.543')]],
23
- 'timestamp': 1504224000000,
24
- 'datetime': '2017-09-01T00:00:00',
25
- 'nonce': 134234234,
26
- }
27
- empty_allowed_for = ['nonce']
28
- # turn into copy: https://discord.com/channels/690203284119617602/921046068555313202/1220626834887282728
29
- orderbook = exchange.deep_extend({}, orderbook)
30
- test_shared_methods.assert_structure(exchange, skipped_properties, method, orderbook, format, empty_allowed_for)
31
- test_shared_methods.assert_timestamp_and_datetime(exchange, skipped_properties, method, orderbook)
32
- test_shared_methods.assert_symbol(exchange, skipped_properties, method, orderbook, 'symbol', symbol)
33
- log_text = test_shared_methods.log_template(exchange, method, orderbook)
34
- #
35
- if ('bid' in skipped_properties) or ('ask' in skipped_properties):
36
- return
37
- # todo: check non-emtpy arrays for bids/asks for toptier exchanges
38
- bids = orderbook['bids']
39
- bids_length = len(bids)
40
- for i in range(0, bids_length):
41
- current_bid_string = exchange.safe_string(bids[i], 0)
42
- if not ('compareToNextItem' in skipped_properties):
43
- next_i = i + 1
44
- if bids_length > next_i:
45
- next_bid_string = exchange.safe_string(bids[next_i], 0)
46
- assert Precise.string_gt(current_bid_string, next_bid_string), 'current bid should be > than the next one: ' + current_bid_string + '>' + next_bid_string + log_text
47
- if not ('compareToZero' in skipped_properties):
48
- # compare price & volume to zero
49
- test_shared_methods.assert_greater(exchange, skipped_properties, method, bids[i], 0, '0')
50
- test_shared_methods.assert_greater(exchange, skipped_properties, method, bids[i], 1, '0')
51
- asks = orderbook['asks']
52
- asks_length = len(asks)
53
- for i in range(0, asks_length):
54
- current_ask_string = exchange.safe_string(asks[i], 0)
55
- if not ('compareToNextItem' in skipped_properties):
56
- next_i = i + 1
57
- if asks_length > next_i:
58
- next_ask_string = exchange.safe_string(asks[next_i], 0)
59
- assert Precise.string_lt(current_ask_string, next_ask_string), 'current ask should be < than the next one: ' + current_ask_string + '<' + next_ask_string + log_text
60
- if not ('compareToZero' in skipped_properties):
61
- # compare price & volume to zero
62
- test_shared_methods.assert_greater(exchange, skipped_properties, method, asks[i], 0, '0')
63
- test_shared_methods.assert_greater(exchange, skipped_properties, method, asks[i], 1, '0')
64
- if not ('spread' in skipped_properties):
65
- if bids_length and asks_length:
66
- first_bid = exchange.safe_string(bids[0], 0)
67
- first_ask = exchange.safe_string(asks[0], 0)
68
- # check bid-ask spread
69
- assert Precise.string_lt(first_bid, first_ask), 'bids[0][0] (' + first_bid + ') should be < than asks[0][0] (' + first_ask + ')' + log_text