ccxt 4.3.54__py2.py3-none-any.whl → 4.3.55__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 (254) hide show
  1. ccxt/__init__.py +1 -1
  2. ccxt/abstract/kucoin.py +3 -0
  3. ccxt/abstract/kucoinfutures.py +3 -0
  4. ccxt/ace.py +1 -1
  5. ccxt/alpaca.py +1 -1
  6. ccxt/ascendex.py +6 -4
  7. ccxt/async_support/__init__.py +1 -1
  8. ccxt/async_support/ace.py +1 -1
  9. ccxt/async_support/alpaca.py +1 -1
  10. ccxt/async_support/ascendex.py +6 -4
  11. ccxt/async_support/base/exchange.py +1 -1
  12. ccxt/async_support/bigone.py +1 -1
  13. ccxt/async_support/binance.py +6 -6
  14. ccxt/async_support/bingx.py +3 -3
  15. ccxt/async_support/bit2c.py +1 -1
  16. ccxt/async_support/bitbank.py +1 -1
  17. ccxt/async_support/bitbns.py +1 -1
  18. ccxt/async_support/bitfinex.py +1 -1
  19. ccxt/async_support/bitfinex2.py +1 -1
  20. ccxt/async_support/bitflyer.py +1 -1
  21. ccxt/async_support/bitget.py +2 -2
  22. ccxt/async_support/bithumb.py +1 -1
  23. ccxt/async_support/bitmart.py +3 -3
  24. ccxt/async_support/bitmex.py +1 -1
  25. ccxt/async_support/bitopro.py +1 -1
  26. ccxt/async_support/bitrue.py +1 -1
  27. ccxt/async_support/bitso.py +1 -1
  28. ccxt/async_support/bitstamp.py +1 -1
  29. ccxt/async_support/bitteam.py +1 -1
  30. ccxt/async_support/bitvavo.py +2 -2
  31. ccxt/async_support/bl3p.py +1 -1
  32. ccxt/async_support/blockchaincom.py +28 -28
  33. ccxt/async_support/blofin.py +1 -1
  34. ccxt/async_support/btcalpha.py +4 -11
  35. ccxt/async_support/btcbox.py +1 -1
  36. ccxt/async_support/btcmarkets.py +1 -1
  37. ccxt/async_support/btcturk.py +1 -1
  38. ccxt/async_support/bybit.py +2 -2
  39. ccxt/async_support/cex.py +2 -2
  40. ccxt/async_support/coinbase.py +33 -33
  41. ccxt/async_support/coinbaseexchange.py +1 -1
  42. ccxt/async_support/coinbaseinternational.py +1 -1
  43. ccxt/async_support/coincheck.py +1 -1
  44. ccxt/async_support/coinex.py +2 -2
  45. ccxt/async_support/coinlist.py +2 -2
  46. ccxt/async_support/coinmate.py +1 -1
  47. ccxt/async_support/coinmetro.py +1 -1
  48. ccxt/async_support/coinone.py +1 -1
  49. ccxt/async_support/coinsph.py +1 -1
  50. ccxt/async_support/coinspot.py +1 -1
  51. ccxt/async_support/cryptocom.py +1 -1
  52. ccxt/async_support/currencycom.py +1 -1
  53. ccxt/async_support/delta.py +2 -2
  54. ccxt/async_support/deribit.py +4 -4
  55. ccxt/async_support/digifinex.py +2 -2
  56. ccxt/async_support/exmo.py +2 -2
  57. ccxt/async_support/gate.py +2 -2
  58. ccxt/async_support/gemini.py +1 -1
  59. ccxt/async_support/hitbtc.py +1 -1
  60. ccxt/async_support/hollaex.py +1 -1
  61. ccxt/async_support/htx.py +3 -3
  62. ccxt/async_support/huobijp.py +1 -1
  63. ccxt/async_support/hyperliquid.py +2 -2
  64. ccxt/async_support/idex.py +1 -1
  65. ccxt/async_support/independentreserve.py +1 -1
  66. ccxt/async_support/indodax.py +1 -1
  67. ccxt/async_support/kraken.py +2 -2
  68. ccxt/async_support/kucoin.py +127 -46
  69. ccxt/async_support/kucoinfutures.py +1 -1
  70. ccxt/async_support/kuna.py +1 -1
  71. ccxt/async_support/latoken.py +1 -1
  72. ccxt/async_support/lbank.py +1 -1
  73. ccxt/async_support/luno.py +1 -1
  74. ccxt/async_support/lykke.py +1 -1
  75. ccxt/async_support/mercado.py +1 -1
  76. ccxt/async_support/mexc.py +1 -1
  77. ccxt/async_support/ndax.py +1 -1
  78. ccxt/async_support/novadax.py +1 -1
  79. ccxt/async_support/oceanex.py +1 -1
  80. ccxt/async_support/okcoin.py +1 -1
  81. ccxt/async_support/okx.py +3 -3
  82. ccxt/async_support/onetrading.py +1 -1
  83. ccxt/async_support/oxfun.py +2 -2
  84. ccxt/async_support/p2b.py +1 -1
  85. ccxt/async_support/paymium.py +1 -1
  86. ccxt/async_support/phemex.py +2 -2
  87. ccxt/async_support/poloniex.py +4 -3
  88. ccxt/async_support/poloniexfutures.py +1 -1
  89. ccxt/async_support/probit.py +1 -1
  90. ccxt/async_support/timex.py +1 -1
  91. ccxt/async_support/tokocrypto.py +1 -1
  92. ccxt/async_support/tradeogre.py +1 -1
  93. ccxt/async_support/upbit.py +1 -1
  94. ccxt/async_support/vertex.py +2 -2
  95. ccxt/async_support/wavesexchange.py +1 -1
  96. ccxt/async_support/wazirx.py +1 -1
  97. ccxt/async_support/whitebit.py +2 -2
  98. ccxt/async_support/woo.py +5 -5
  99. ccxt/async_support/woofipro.py +3 -3
  100. ccxt/async_support/yobit.py +1 -1
  101. ccxt/async_support/zaif.py +1 -1
  102. ccxt/async_support/zonda.py +1 -1
  103. ccxt/base/exchange.py +1 -1
  104. ccxt/base/types.py +4 -1
  105. ccxt/bigone.py +1 -1
  106. ccxt/binance.py +6 -6
  107. ccxt/bingx.py +3 -3
  108. ccxt/bit2c.py +1 -1
  109. ccxt/bitbank.py +1 -1
  110. ccxt/bitbns.py +1 -1
  111. ccxt/bitfinex.py +1 -1
  112. ccxt/bitfinex2.py +1 -1
  113. ccxt/bitflyer.py +1 -1
  114. ccxt/bitget.py +2 -2
  115. ccxt/bithumb.py +1 -1
  116. ccxt/bitmart.py +3 -3
  117. ccxt/bitmex.py +1 -1
  118. ccxt/bitopro.py +1 -1
  119. ccxt/bitrue.py +1 -1
  120. ccxt/bitso.py +1 -1
  121. ccxt/bitstamp.py +1 -1
  122. ccxt/bitteam.py +1 -1
  123. ccxt/bitvavo.py +2 -2
  124. ccxt/bl3p.py +1 -1
  125. ccxt/blockchaincom.py +28 -28
  126. ccxt/blofin.py +1 -1
  127. ccxt/btcalpha.py +4 -11
  128. ccxt/btcbox.py +1 -1
  129. ccxt/btcmarkets.py +1 -1
  130. ccxt/btcturk.py +1 -1
  131. ccxt/bybit.py +2 -2
  132. ccxt/cex.py +2 -2
  133. ccxt/coinbase.py +33 -33
  134. ccxt/coinbaseexchange.py +1 -1
  135. ccxt/coinbaseinternational.py +1 -1
  136. ccxt/coincheck.py +1 -1
  137. ccxt/coinex.py +2 -2
  138. ccxt/coinlist.py +2 -2
  139. ccxt/coinmate.py +1 -1
  140. ccxt/coinmetro.py +1 -1
  141. ccxt/coinone.py +1 -1
  142. ccxt/coinsph.py +1 -1
  143. ccxt/coinspot.py +1 -1
  144. ccxt/cryptocom.py +1 -1
  145. ccxt/currencycom.py +1 -1
  146. ccxt/delta.py +2 -2
  147. ccxt/deribit.py +4 -4
  148. ccxt/digifinex.py +2 -2
  149. ccxt/exmo.py +2 -2
  150. ccxt/gate.py +2 -2
  151. ccxt/gemini.py +1 -1
  152. ccxt/hitbtc.py +1 -1
  153. ccxt/hollaex.py +1 -1
  154. ccxt/htx.py +3 -3
  155. ccxt/huobijp.py +1 -1
  156. ccxt/hyperliquid.py +2 -2
  157. ccxt/idex.py +1 -1
  158. ccxt/independentreserve.py +1 -1
  159. ccxt/indodax.py +1 -1
  160. ccxt/kraken.py +2 -2
  161. ccxt/kucoin.py +127 -46
  162. ccxt/kucoinfutures.py +1 -1
  163. ccxt/kuna.py +1 -1
  164. ccxt/latoken.py +1 -1
  165. ccxt/lbank.py +1 -1
  166. ccxt/luno.py +1 -1
  167. ccxt/lykke.py +1 -1
  168. ccxt/mercado.py +1 -1
  169. ccxt/mexc.py +1 -1
  170. ccxt/ndax.py +1 -1
  171. ccxt/novadax.py +1 -1
  172. ccxt/oceanex.py +1 -1
  173. ccxt/okcoin.py +1 -1
  174. ccxt/okx.py +3 -3
  175. ccxt/onetrading.py +1 -1
  176. ccxt/oxfun.py +2 -2
  177. ccxt/p2b.py +1 -1
  178. ccxt/paymium.py +1 -1
  179. ccxt/phemex.py +2 -2
  180. ccxt/poloniex.py +4 -3
  181. ccxt/poloniexfutures.py +1 -1
  182. ccxt/pro/__init__.py +1 -1
  183. ccxt/pro/binance.py +2 -2
  184. ccxt/pro/bitvavo.py +2 -2
  185. ccxt/pro/bybit.py +2 -2
  186. ccxt/pro/cex.py +3 -3
  187. ccxt/pro/coinbase.py +22 -1
  188. ccxt/pro/cryptocom.py +1 -1
  189. ccxt/pro/gate.py +2 -2
  190. ccxt/pro/hitbtc.py +1 -1
  191. ccxt/pro/kraken.py +2 -2
  192. ccxt/pro/kucoin.py +2 -2
  193. ccxt/pro/okx.py +2 -2
  194. ccxt/pro/oxfun.py +2 -2
  195. ccxt/pro/poloniex.py +1 -1
  196. ccxt/pro/vertex.py +1 -1
  197. ccxt/probit.py +1 -1
  198. ccxt/test/{test_async.py → tests_async.py} +27 -280
  199. ccxt/test/tests_helpers.py +284 -0
  200. ccxt/test/tests_init.py +35 -0
  201. ccxt/test/{test_sync.py → tests_sync.py} +27 -282
  202. ccxt/timex.py +1 -1
  203. ccxt/tokocrypto.py +1 -1
  204. ccxt/tradeogre.py +1 -1
  205. ccxt/upbit.py +1 -1
  206. ccxt/vertex.py +2 -2
  207. ccxt/wavesexchange.py +1 -1
  208. ccxt/wazirx.py +1 -1
  209. ccxt/whitebit.py +2 -2
  210. ccxt/woo.py +5 -5
  211. ccxt/woofipro.py +3 -3
  212. ccxt/yobit.py +1 -1
  213. ccxt/zaif.py +1 -1
  214. ccxt/zonda.py +1 -1
  215. {ccxt-4.3.54.dist-info → ccxt-4.3.55.dist-info}/METADATA +5 -5
  216. {ccxt-4.3.54.dist-info → ccxt-4.3.55.dist-info}/RECORD +219 -252
  217. ccxt/test/base/__init__.py +0 -29
  218. ccxt/test/base/test_account.py +0 -26
  219. ccxt/test/base/test_balance.py +0 -56
  220. ccxt/test/base/test_borrow_interest.py +0 -35
  221. ccxt/test/base/test_borrow_rate.py +0 -32
  222. ccxt/test/base/test_calculate_fee.py +0 -51
  223. ccxt/test/base/test_crypto.py +0 -127
  224. ccxt/test/base/test_currency.py +0 -76
  225. ccxt/test/base/test_datetime.py +0 -109
  226. ccxt/test/base/test_decimal_to_precision.py +0 -392
  227. ccxt/test/base/test_deep_extend.py +0 -68
  228. ccxt/test/base/test_deposit_withdrawal.py +0 -50
  229. ccxt/test/base/test_exchange_datetime_functions.py +0 -76
  230. ccxt/test/base/test_funding_rate_history.py +0 -29
  231. ccxt/test/base/test_last_price.py +0 -31
  232. ccxt/test/base/test_ledger_entry.py +0 -45
  233. ccxt/test/base/test_ledger_item.py +0 -48
  234. ccxt/test/base/test_leverage_tier.py +0 -33
  235. ccxt/test/base/test_liquidation.py +0 -50
  236. ccxt/test/base/test_margin_mode.py +0 -24
  237. ccxt/test/base/test_margin_modification.py +0 -35
  238. ccxt/test/base/test_market.py +0 -193
  239. ccxt/test/base/test_number.py +0 -411
  240. ccxt/test/base/test_ohlcv.py +0 -33
  241. ccxt/test/base/test_open_interest.py +0 -32
  242. ccxt/test/base/test_order.py +0 -64
  243. ccxt/test/base/test_order_book.py +0 -69
  244. ccxt/test/base/test_position.py +0 -60
  245. ccxt/test/base/test_shared_methods.py +0 -353
  246. ccxt/test/base/test_status.py +0 -24
  247. ccxt/test/base/test_throttle.py +0 -126
  248. ccxt/test/base/test_ticker.py +0 -92
  249. ccxt/test/base/test_trade.py +0 -47
  250. ccxt/test/base/test_trading_fee.py +0 -26
  251. ccxt/test/base/test_transaction.py +0 -39
  252. {ccxt-4.3.54.dist-info → ccxt-4.3.55.dist-info}/LICENSE.txt +0 -0
  253. {ccxt-4.3.54.dist-info → ccxt-4.3.55.dist-info}/WHEEL +0 -0
  254. {ccxt-4.3.54.dist-info → ccxt-4.3.55.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])