ccxt 4.2.76__py2.py3-none-any.whl → 4.4.48__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.
- ccxt/__init__.py +36 -14
- ccxt/abstract/alpaca.py +4 -0
- ccxt/abstract/bigone.py +1 -1
- ccxt/abstract/binance.py +112 -48
- ccxt/abstract/binancecoinm.py +112 -48
- ccxt/abstract/binanceus.py +147 -83
- ccxt/abstract/binanceusdm.py +112 -48
- ccxt/abstract/bingx.py +133 -78
- ccxt/abstract/bitbank.py +5 -0
- ccxt/abstract/bitfinex.py +136 -65
- ccxt/abstract/bitfinex1.py +69 -0
- ccxt/abstract/bitflyer.py +1 -0
- ccxt/abstract/bitget.py +8 -1
- ccxt/abstract/bitmart.py +13 -1
- ccxt/abstract/bitopro.py +1 -0
- ccxt/abstract/bitpanda.py +0 -12
- ccxt/abstract/bitrue.py +3 -3
- ccxt/abstract/bitstamp.py +26 -3
- ccxt/abstract/blofin.py +24 -0
- ccxt/abstract/btcbox.py +1 -0
- ccxt/abstract/bybit.py +29 -14
- ccxt/abstract/cex.py +28 -29
- ccxt/abstract/coinbase.py +6 -0
- ccxt/abstract/coinbaseadvanced.py +94 -0
- ccxt/abstract/{coinbasepro.py → coinbaseexchange.py} +1 -0
- ccxt/abstract/coinbaseinternational.py +1 -1
- ccxt/abstract/coincatch.py +94 -0
- ccxt/abstract/coinex.py +233 -123
- ccxt/abstract/coinmetro.py +1 -0
- ccxt/abstract/cryptocom.py +14 -0
- ccxt/abstract/defx.py +69 -0
- ccxt/abstract/deribit.py +1 -0
- ccxt/abstract/digifinex.py +1 -0
- ccxt/abstract/ellipx.py +25 -0
- ccxt/abstract/gate.py +20 -0
- ccxt/abstract/gateio.py +20 -0
- ccxt/abstract/gemini.py +1 -0
- ccxt/abstract/hashkey.py +67 -0
- ccxt/abstract/hyperliquid.py +1 -1
- ccxt/abstract/independentreserve.py +6 -0
- ccxt/abstract/kraken.py +4 -3
- ccxt/abstract/krakenfutures.py +4 -0
- ccxt/abstract/kucoin.py +25 -0
- ccxt/abstract/kucoinfutures.py +35 -0
- ccxt/abstract/luno.py +2 -0
- ccxt/abstract/mexc.py +4 -0
- ccxt/abstract/myokx.py +340 -0
- ccxt/abstract/oceanex.py +5 -0
- ccxt/abstract/okx.py +30 -0
- ccxt/abstract/onetrading.py +0 -12
- ccxt/abstract/oxfun.py +34 -0
- ccxt/abstract/paradex.py +40 -0
- ccxt/abstract/phemex.py +1 -0
- ccxt/abstract/upbit.py +4 -0
- ccxt/abstract/vertex.py +19 -0
- ccxt/abstract/whitebit.py +31 -1
- ccxt/abstract/woo.py +6 -2
- ccxt/abstract/woofipro.py +119 -0
- ccxt/abstract/xt.py +153 -0
- ccxt/abstract/zonda.py +6 -0
- ccxt/ace.py +164 -60
- ccxt/alpaca.py +727 -63
- ccxt/ascendex.py +395 -249
- ccxt/async_support/__init__.py +36 -14
- ccxt/async_support/ace.py +164 -60
- ccxt/async_support/alpaca.py +727 -63
- ccxt/async_support/ascendex.py +396 -249
- ccxt/async_support/base/exchange.py +531 -155
- ccxt/async_support/base/ws/aiohttp_client.py +28 -5
- ccxt/async_support/base/ws/cache.py +3 -2
- ccxt/async_support/base/ws/client.py +26 -5
- ccxt/async_support/base/ws/fast_client.py +4 -3
- ccxt/async_support/base/ws/functions.py +1 -1
- ccxt/async_support/base/ws/future.py +40 -31
- ccxt/async_support/base/ws/order_book_side.py +3 -0
- ccxt/async_support/bequant.py +1 -1
- ccxt/async_support/bigone.py +329 -202
- ccxt/async_support/binance.py +3513 -1511
- ccxt/async_support/binancecoinm.py +2 -1
- ccxt/async_support/binanceus.py +12 -1
- ccxt/async_support/binanceusdm.py +3 -1
- ccxt/async_support/bingx.py +3105 -881
- ccxt/async_support/bit2c.py +119 -38
- ccxt/async_support/bitbank.py +215 -76
- ccxt/async_support/bitbns.py +124 -53
- ccxt/async_support/bitfinex.py +3236 -1078
- ccxt/async_support/bitfinex1.py +1711 -0
- ccxt/async_support/bitflyer.py +239 -50
- ccxt/async_support/bitget.py +1513 -563
- ccxt/async_support/bithumb.py +201 -67
- ccxt/async_support/bitmart.py +1320 -435
- ccxt/async_support/bitmex.py +308 -111
- ccxt/async_support/bitopro.py +256 -96
- ccxt/async_support/bitrue.py +365 -233
- ccxt/async_support/bitso.py +201 -89
- ccxt/async_support/bitstamp.py +438 -269
- ccxt/async_support/bitteam.py +179 -73
- ccxt/async_support/bitvavo.py +180 -70
- ccxt/async_support/bl3p.py +92 -25
- ccxt/async_support/blockchaincom.py +193 -79
- ccxt/async_support/blofin.py +403 -150
- ccxt/async_support/btcalpha.py +161 -55
- ccxt/async_support/btcbox.py +250 -34
- ccxt/async_support/btcmarkets.py +232 -85
- ccxt/async_support/btcturk.py +159 -60
- ccxt/async_support/bybit.py +2326 -1255
- ccxt/async_support/cex.py +1409 -1329
- ccxt/async_support/coinbase.py +1455 -288
- ccxt/async_support/coinbaseadvanced.py +17 -0
- ccxt/async_support/{coinbasepro.py → coinbaseexchange.py} +233 -99
- ccxt/async_support/coinbaseinternational.py +428 -88
- ccxt/async_support/coincatch.py +5152 -0
- ccxt/async_support/coincheck.py +121 -38
- ccxt/async_support/coinex.py +4020 -3339
- ccxt/async_support/coinlist.py +273 -116
- ccxt/async_support/coinmate.py +204 -97
- ccxt/async_support/coinmetro.py +203 -110
- ccxt/async_support/coinone.py +142 -68
- ccxt/async_support/coinsph.py +206 -89
- ccxt/async_support/coinspot.py +137 -62
- ccxt/async_support/cryptocom.py +515 -185
- ccxt/async_support/currencycom.py +203 -85
- ccxt/async_support/defx.py +2066 -0
- ccxt/async_support/delta.py +467 -158
- ccxt/async_support/deribit.py +558 -324
- ccxt/async_support/digifinex.py +340 -223
- ccxt/async_support/ellipx.py +1826 -0
- ccxt/async_support/exmo.py +259 -128
- ccxt/async_support/gate.py +1473 -464
- ccxt/async_support/gemini.py +206 -84
- ccxt/async_support/hashkey.py +4164 -0
- ccxt/async_support/hitbtc.py +334 -178
- ccxt/async_support/hollaex.py +134 -83
- ccxt/async_support/htx.py +1095 -563
- ccxt/async_support/huobijp.py +105 -56
- ccxt/async_support/hyperliquid.py +1634 -269
- ccxt/async_support/idex.py +148 -95
- ccxt/async_support/independentreserve.py +236 -31
- ccxt/async_support/indodax.py +165 -62
- ccxt/async_support/kraken.py +871 -354
- ccxt/async_support/krakenfutures.py +324 -100
- ccxt/async_support/kucoin.py +1050 -355
- ccxt/async_support/kucoinfutures.py +1004 -149
- ccxt/async_support/kuna.py +138 -106
- ccxt/async_support/latoken.py +135 -79
- ccxt/async_support/lbank.py +290 -113
- ccxt/async_support/luno.py +112 -62
- ccxt/async_support/lykke.py +104 -55
- ccxt/async_support/mercado.py +36 -29
- ccxt/async_support/mexc.py +995 -429
- ccxt/async_support/myokx.py +43 -0
- ccxt/async_support/ndax.py +163 -82
- ccxt/async_support/novadax.py +121 -75
- ccxt/async_support/oceanex.py +175 -59
- ccxt/async_support/okcoin.py +222 -163
- ccxt/async_support/okx.py +1777 -455
- ccxt/async_support/onetrading.py +132 -414
- ccxt/async_support/oxfun.py +2832 -0
- ccxt/async_support/p2b.py +79 -51
- ccxt/async_support/paradex.py +2017 -0
- ccxt/async_support/paymium.py +56 -32
- ccxt/async_support/phemex.py +572 -196
- ccxt/async_support/poloniex.py +218 -95
- ccxt/async_support/poloniexfutures.py +260 -92
- ccxt/async_support/probit.py +143 -110
- ccxt/async_support/timex.py +123 -70
- ccxt/async_support/tokocrypto.py +129 -93
- ccxt/async_support/tradeogre.py +39 -25
- ccxt/async_support/upbit.py +322 -113
- ccxt/async_support/vertex.py +2983 -0
- ccxt/async_support/wavesexchange.py +227 -173
- ccxt/async_support/wazirx.py +145 -65
- ccxt/async_support/whitebit.py +533 -138
- ccxt/async_support/woo.py +1155 -295
- ccxt/async_support/woofipro.py +2716 -0
- ccxt/async_support/xt.py +4628 -0
- ccxt/async_support/yobit.py +160 -92
- ccxt/async_support/zaif.py +80 -33
- ccxt/async_support/zonda.py +140 -69
- ccxt/base/errors.py +51 -20
- ccxt/base/exchange.py +1729 -482
- ccxt/base/precise.py +10 -0
- ccxt/base/types.py +223 -4
- ccxt/bequant.py +1 -1
- ccxt/bigone.py +329 -202
- ccxt/binance.py +3513 -1511
- ccxt/binancecoinm.py +2 -1
- ccxt/binanceus.py +12 -1
- ccxt/binanceusdm.py +3 -1
- ccxt/bingx.py +3105 -881
- ccxt/bit2c.py +119 -38
- ccxt/bitbank.py +215 -76
- ccxt/bitbns.py +124 -53
- ccxt/bitfinex.py +3235 -1078
- ccxt/bitfinex1.py +1710 -0
- ccxt/bitflyer.py +239 -50
- ccxt/bitget.py +1513 -563
- ccxt/bithumb.py +200 -67
- ccxt/bitmart.py +1320 -435
- ccxt/bitmex.py +308 -111
- ccxt/bitopro.py +256 -96
- ccxt/bitrue.py +365 -233
- ccxt/bitso.py +201 -89
- ccxt/bitstamp.py +438 -269
- ccxt/bitteam.py +179 -73
- ccxt/bitvavo.py +180 -70
- ccxt/bl3p.py +92 -25
- ccxt/blockchaincom.py +193 -79
- ccxt/blofin.py +403 -150
- ccxt/btcalpha.py +161 -55
- ccxt/btcbox.py +250 -34
- ccxt/btcmarkets.py +232 -85
- ccxt/btcturk.py +159 -60
- ccxt/bybit.py +2326 -1255
- ccxt/cex.py +1408 -1329
- ccxt/coinbase.py +1455 -288
- ccxt/coinbaseadvanced.py +17 -0
- ccxt/{coinbasepro.py → coinbaseexchange.py} +233 -99
- ccxt/coinbaseinternational.py +428 -88
- ccxt/coincatch.py +5152 -0
- ccxt/coincheck.py +121 -38
- ccxt/coinex.py +4020 -3339
- ccxt/coinlist.py +273 -116
- ccxt/coinmate.py +204 -97
- ccxt/coinmetro.py +203 -110
- ccxt/coinone.py +142 -68
- ccxt/coinsph.py +206 -89
- ccxt/coinspot.py +137 -62
- ccxt/cryptocom.py +515 -185
- ccxt/currencycom.py +203 -85
- ccxt/defx.py +2065 -0
- ccxt/delta.py +467 -158
- ccxt/deribit.py +558 -324
- ccxt/digifinex.py +340 -223
- ccxt/ellipx.py +1826 -0
- ccxt/exmo.py +259 -128
- ccxt/gate.py +1473 -464
- ccxt/gemini.py +206 -84
- ccxt/hashkey.py +4164 -0
- ccxt/hitbtc.py +334 -178
- ccxt/hollaex.py +134 -83
- ccxt/htx.py +1095 -563
- ccxt/huobijp.py +105 -56
- ccxt/hyperliquid.py +1633 -269
- ccxt/idex.py +148 -95
- ccxt/independentreserve.py +235 -31
- ccxt/indodax.py +165 -62
- ccxt/kraken.py +871 -354
- ccxt/krakenfutures.py +324 -100
- ccxt/kucoin.py +1050 -355
- ccxt/kucoinfutures.py +1004 -149
- ccxt/kuna.py +138 -106
- ccxt/latoken.py +135 -79
- ccxt/lbank.py +290 -113
- ccxt/luno.py +112 -62
- ccxt/lykke.py +104 -55
- ccxt/mercado.py +36 -29
- ccxt/mexc.py +994 -429
- ccxt/myokx.py +43 -0
- ccxt/ndax.py +163 -82
- ccxt/novadax.py +121 -75
- ccxt/oceanex.py +175 -59
- ccxt/okcoin.py +222 -163
- ccxt/okx.py +1777 -455
- ccxt/onetrading.py +132 -414
- ccxt/oxfun.py +2831 -0
- ccxt/p2b.py +79 -51
- ccxt/paradex.py +2017 -0
- ccxt/paymium.py +56 -32
- ccxt/phemex.py +572 -196
- ccxt/poloniex.py +218 -95
- ccxt/poloniexfutures.py +260 -92
- ccxt/pro/__init__.py +29 -5
- ccxt/pro/alpaca.py +32 -17
- ccxt/pro/ascendex.py +63 -15
- ccxt/pro/bequant.py +4 -0
- ccxt/pro/binance.py +1596 -329
- ccxt/pro/binancecoinm.py +1 -0
- ccxt/pro/binanceus.py +2 -9
- ccxt/pro/binanceusdm.py +2 -0
- ccxt/pro/bingx.py +527 -134
- ccxt/pro/bitcoincom.py +4 -1
- ccxt/pro/bitfinex.py +731 -266
- ccxt/pro/bitfinex1.py +635 -0
- ccxt/pro/bitget.py +726 -357
- ccxt/pro/bithumb.py +380 -0
- ccxt/pro/bitmart.py +138 -39
- ccxt/pro/bitmex.py +199 -40
- ccxt/pro/bitopro.py +25 -13
- ccxt/pro/bitrue.py +31 -32
- ccxt/pro/bitstamp.py +7 -6
- ccxt/pro/bitvavo.py +204 -82
- ccxt/pro/blockchaincom.py +30 -17
- ccxt/pro/blofin.py +692 -0
- ccxt/pro/bybit.py +791 -82
- ccxt/pro/cex.py +99 -51
- ccxt/pro/coinbase.py +220 -30
- ccxt/{async_support/hitbtc3.py → pro/coinbaseadvanced.py} +5 -5
- ccxt/pro/{coinbasepro.py → coinbaseexchange.py} +19 -19
- ccxt/pro/coinbaseinternational.py +193 -30
- ccxt/pro/coincatch.py +1464 -0
- ccxt/pro/coincheck.py +11 -6
- ccxt/pro/coinex.py +967 -661
- ccxt/pro/coinone.py +17 -10
- ccxt/pro/cryptocom.py +446 -66
- ccxt/pro/currencycom.py +11 -10
- ccxt/pro/defx.py +832 -0
- ccxt/pro/deribit.py +168 -32
- ccxt/pro/exmo.py +253 -21
- ccxt/pro/gate.py +729 -64
- ccxt/pro/gemini.py +44 -26
- ccxt/pro/hashkey.py +802 -0
- ccxt/pro/hitbtc.py +208 -103
- ccxt/pro/hollaex.py +25 -9
- ccxt/pro/htx.py +83 -39
- ccxt/pro/huobijp.py +17 -16
- ccxt/pro/hyperliquid.py +502 -31
- ccxt/pro/idex.py +28 -13
- ccxt/pro/independentreserve.py +21 -16
- ccxt/pro/kraken.py +298 -51
- ccxt/pro/krakenfutures.py +166 -75
- ccxt/pro/kucoin.py +395 -77
- ccxt/pro/kucoinfutures.py +400 -99
- ccxt/pro/lbank.py +52 -31
- ccxt/pro/luno.py +12 -10
- ccxt/pro/mexc.py +400 -50
- ccxt/pro/myokx.py +28 -0
- ccxt/pro/ndax.py +25 -12
- ccxt/pro/okcoin.py +28 -9
- ccxt/pro/okx.py +935 -124
- ccxt/pro/onetrading.py +41 -24
- ccxt/pro/oxfun.py +1054 -0
- ccxt/pro/p2b.py +100 -24
- ccxt/pro/paradex.py +352 -0
- ccxt/pro/phemex.py +93 -34
- ccxt/pro/poloniex.py +129 -50
- ccxt/pro/poloniexfutures.py +53 -32
- ccxt/pro/probit.py +93 -86
- ccxt/pro/upbit.py +401 -8
- ccxt/pro/vertex.py +943 -0
- ccxt/pro/wazirx.py +46 -28
- ccxt/pro/whitebit.py +65 -12
- ccxt/pro/woo.py +486 -70
- ccxt/pro/woofipro.py +1271 -0
- ccxt/pro/xt.py +1067 -0
- ccxt/probit.py +143 -110
- ccxt/static_dependencies/__init__.py +1 -1
- ccxt/static_dependencies/lark/__init__.py +38 -0
- ccxt/static_dependencies/lark/__pyinstaller/__init__.py +6 -0
- ccxt/static_dependencies/lark/__pyinstaller/hook-lark.py +14 -0
- ccxt/static_dependencies/lark/ast_utils.py +59 -0
- ccxt/static_dependencies/lark/common.py +86 -0
- ccxt/static_dependencies/lark/exceptions.py +292 -0
- ccxt/static_dependencies/lark/grammar.py +130 -0
- ccxt/static_dependencies/lark/grammars/__init__.py +0 -0
- ccxt/static_dependencies/lark/indenter.py +143 -0
- ccxt/static_dependencies/lark/lark.py +658 -0
- ccxt/static_dependencies/lark/lexer.py +678 -0
- ccxt/static_dependencies/lark/load_grammar.py +1428 -0
- ccxt/static_dependencies/lark/parse_tree_builder.py +391 -0
- ccxt/static_dependencies/lark/parser_frontends.py +257 -0
- ccxt/static_dependencies/lark/parsers/__init__.py +0 -0
- ccxt/static_dependencies/lark/parsers/cyk.py +340 -0
- ccxt/static_dependencies/lark/parsers/earley.py +314 -0
- ccxt/static_dependencies/lark/parsers/earley_common.py +42 -0
- ccxt/static_dependencies/lark/parsers/earley_forest.py +801 -0
- ccxt/static_dependencies/lark/parsers/grammar_analysis.py +203 -0
- ccxt/static_dependencies/lark/parsers/lalr_analysis.py +332 -0
- ccxt/static_dependencies/lark/parsers/lalr_interactive_parser.py +158 -0
- ccxt/static_dependencies/lark/parsers/lalr_parser.py +122 -0
- ccxt/static_dependencies/lark/parsers/lalr_parser_state.py +110 -0
- ccxt/static_dependencies/lark/parsers/xearley.py +165 -0
- ccxt/static_dependencies/lark/py.typed +0 -0
- ccxt/static_dependencies/lark/reconstruct.py +107 -0
- ccxt/static_dependencies/lark/tools/__init__.py +70 -0
- ccxt/static_dependencies/lark/tools/nearley.py +202 -0
- ccxt/static_dependencies/lark/tools/serialize.py +32 -0
- ccxt/static_dependencies/lark/tools/standalone.py +196 -0
- ccxt/static_dependencies/lark/tree.py +267 -0
- ccxt/static_dependencies/lark/tree_matcher.py +186 -0
- ccxt/static_dependencies/lark/tree_templates.py +180 -0
- ccxt/static_dependencies/lark/utils.py +343 -0
- ccxt/static_dependencies/lark/visitors.py +596 -0
- ccxt/static_dependencies/marshmallow/__init__.py +81 -0
- ccxt/static_dependencies/marshmallow/base.py +65 -0
- ccxt/static_dependencies/marshmallow/class_registry.py +94 -0
- ccxt/static_dependencies/marshmallow/decorators.py +231 -0
- ccxt/static_dependencies/marshmallow/error_store.py +60 -0
- ccxt/static_dependencies/marshmallow/exceptions.py +71 -0
- ccxt/static_dependencies/marshmallow/fields.py +2114 -0
- ccxt/static_dependencies/marshmallow/orderedset.py +89 -0
- ccxt/static_dependencies/marshmallow/py.typed +0 -0
- ccxt/static_dependencies/marshmallow/schema.py +1228 -0
- ccxt/static_dependencies/marshmallow/types.py +12 -0
- ccxt/static_dependencies/marshmallow/utils.py +378 -0
- ccxt/static_dependencies/marshmallow/validate.py +678 -0
- ccxt/static_dependencies/marshmallow/warnings.py +2 -0
- ccxt/static_dependencies/marshmallow_dataclass/__init__.py +1047 -0
- ccxt/static_dependencies/marshmallow_dataclass/collection_field.py +51 -0
- ccxt/static_dependencies/marshmallow_dataclass/lazy_class_attribute.py +45 -0
- ccxt/static_dependencies/marshmallow_dataclass/mypy.py +71 -0
- ccxt/static_dependencies/marshmallow_dataclass/py.typed +0 -0
- ccxt/static_dependencies/marshmallow_dataclass/typing.py +14 -0
- ccxt/static_dependencies/marshmallow_dataclass/union_field.py +82 -0
- ccxt/static_dependencies/marshmallow_oneofschema/__init__.py +1 -0
- ccxt/static_dependencies/marshmallow_oneofschema/one_of_schema.py +193 -0
- ccxt/static_dependencies/marshmallow_oneofschema/py.typed +0 -0
- ccxt/static_dependencies/starknet/__init__.py +0 -0
- ccxt/static_dependencies/starknet/cairo/__init__.py +0 -0
- ccxt/static_dependencies/starknet/cairo/data_types.py +123 -0
- ccxt/static_dependencies/starknet/cairo/deprecated_parse/__init__.py +0 -0
- ccxt/static_dependencies/starknet/cairo/deprecated_parse/cairo_types.py +77 -0
- ccxt/static_dependencies/starknet/cairo/deprecated_parse/parser.py +46 -0
- ccxt/static_dependencies/starknet/cairo/deprecated_parse/parser_transformer.py +138 -0
- ccxt/static_dependencies/starknet/cairo/felt.py +64 -0
- ccxt/static_dependencies/starknet/cairo/type_parser.py +121 -0
- ccxt/static_dependencies/starknet/cairo/v1/__init__.py +0 -0
- ccxt/static_dependencies/starknet/cairo/v1/type_parser.py +59 -0
- ccxt/static_dependencies/starknet/cairo/v2/__init__.py +0 -0
- ccxt/static_dependencies/starknet/cairo/v2/type_parser.py +77 -0
- ccxt/static_dependencies/starknet/ccxt_utils.py +7 -0
- ccxt/static_dependencies/starknet/common.py +15 -0
- ccxt/static_dependencies/starknet/constants.py +39 -0
- ccxt/static_dependencies/starknet/hash/__init__.py +0 -0
- ccxt/static_dependencies/starknet/hash/address.py +79 -0
- ccxt/static_dependencies/starknet/hash/compiled_class_hash_objects.py +111 -0
- ccxt/static_dependencies/starknet/hash/selector.py +16 -0
- ccxt/static_dependencies/starknet/hash/storage.py +12 -0
- ccxt/static_dependencies/starknet/hash/utils.py +78 -0
- ccxt/static_dependencies/starknet/models/__init__.py +0 -0
- ccxt/static_dependencies/starknet/models/typed_data.py +45 -0
- ccxt/static_dependencies/starknet/serialization/__init__.py +24 -0
- ccxt/static_dependencies/starknet/serialization/_calldata_reader.py +40 -0
- ccxt/static_dependencies/starknet/serialization/_context.py +142 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/__init__.py +10 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/_common.py +82 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/array_serializer.py +43 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/bool_serializer.py +37 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/byte_array_serializer.py +66 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/cairo_data_serializer.py +71 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/enum_serializer.py +71 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/felt_serializer.py +50 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/named_tuple_serializer.py +58 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/option_serializer.py +43 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/output_serializer.py +40 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/payload_serializer.py +72 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/struct_serializer.py +36 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/tuple_serializer.py +36 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/uint256_serializer.py +76 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/uint_serializer.py +100 -0
- ccxt/static_dependencies/starknet/serialization/data_serializers/unit_serializer.py +32 -0
- ccxt/static_dependencies/starknet/serialization/errors.py +10 -0
- ccxt/static_dependencies/starknet/serialization/factory.py +229 -0
- ccxt/static_dependencies/starknet/serialization/function_serialization_adapter.py +110 -0
- ccxt/static_dependencies/starknet/serialization/tuple_dataclass.py +59 -0
- ccxt/static_dependencies/starknet/utils/__init__.py +0 -0
- ccxt/static_dependencies/starknet/utils/constructor_args_translator.py +86 -0
- ccxt/static_dependencies/starknet/utils/iterable.py +13 -0
- ccxt/static_dependencies/starknet/utils/schema.py +13 -0
- ccxt/static_dependencies/starknet/utils/typed_data.py +182 -0
- ccxt/static_dependencies/starkware/__init__.py +0 -0
- ccxt/static_dependencies/starkware/crypto/__init__.py +0 -0
- ccxt/static_dependencies/starkware/crypto/fast_pedersen_hash.py +50 -0
- ccxt/static_dependencies/starkware/crypto/math_utils.py +78 -0
- ccxt/static_dependencies/starkware/crypto/signature.py +2344 -0
- ccxt/static_dependencies/starkware/crypto/utils.py +63 -0
- ccxt/static_dependencies/sympy/__init__.py +0 -0
- ccxt/static_dependencies/sympy/core/__init__.py +0 -0
- ccxt/static_dependencies/sympy/core/intfunc.py +35 -0
- ccxt/static_dependencies/sympy/external/__init__.py +0 -0
- ccxt/static_dependencies/sympy/external/gmpy.py +345 -0
- ccxt/static_dependencies/sympy/external/importtools.py +187 -0
- ccxt/static_dependencies/sympy/external/ntheory.py +637 -0
- ccxt/static_dependencies/sympy/external/pythonmpq.py +341 -0
- ccxt/static_dependencies/typing_inspect/__init__.py +0 -0
- ccxt/static_dependencies/typing_inspect/typing_inspect.py +851 -0
- ccxt/test/{test_async.py → tests_async.py} +465 -407
- ccxt/test/tests_helpers.py +285 -0
- ccxt/test/tests_init.py +39 -0
- ccxt/test/{test_sync.py → tests_sync.py} +465 -409
- ccxt/timex.py +123 -70
- ccxt/tokocrypto.py +129 -93
- ccxt/tradeogre.py +39 -25
- ccxt/upbit.py +322 -113
- ccxt/vertex.py +2983 -0
- ccxt/wavesexchange.py +227 -173
- ccxt/wazirx.py +145 -65
- ccxt/whitebit.py +533 -138
- ccxt/woo.py +1155 -295
- ccxt/woofipro.py +2716 -0
- ccxt/xt.py +4627 -0
- ccxt/yobit.py +159 -92
- ccxt/zaif.py +80 -33
- ccxt/zonda.py +140 -69
- ccxt-4.4.48.dist-info/LICENSE.txt +21 -0
- ccxt-4.4.48.dist-info/METADATA +646 -0
- ccxt-4.4.48.dist-info/RECORD +669 -0
- {ccxt-4.2.76.dist-info → ccxt-4.4.48.dist-info}/WHEEL +1 -1
- ccxt/abstract/bitbay.py +0 -47
- ccxt/abstract/bitfinex2.py +0 -139
- ccxt/abstract/hitbtc3.py +0 -115
- ccxt/async_support/bitbay.py +0 -17
- ccxt/async_support/bitfinex2.py +0 -3496
- ccxt/async_support/flowbtc.py +0 -34
- ccxt/bitbay.py +0 -17
- ccxt/bitfinex2.py +0 -3496
- ccxt/flowbtc.py +0 -34
- ccxt/hitbtc3.py +0 -16
- ccxt/pro/bitfinex2.py +0 -1081
- ccxt/test/base/__init__.py +0 -28
- ccxt/test/base/test_account.py +0 -26
- ccxt/test/base/test_balance.py +0 -56
- ccxt/test/base/test_borrow_interest.py +0 -35
- ccxt/test/base/test_borrow_rate.py +0 -32
- ccxt/test/base/test_calculate_fee.py +0 -51
- ccxt/test/base/test_crypto.py +0 -127
- ccxt/test/base/test_currency.py +0 -76
- ccxt/test/base/test_datetime.py +0 -103
- ccxt/test/base/test_decimal_to_precision.py +0 -392
- ccxt/test/base/test_deep_extend.py +0 -68
- ccxt/test/base/test_deposit_withdrawal.py +0 -50
- ccxt/test/base/test_exchange_datetime_functions.py +0 -76
- ccxt/test/base/test_funding_rate_history.py +0 -29
- ccxt/test/base/test_last_price.py +0 -32
- ccxt/test/base/test_ledger_entry.py +0 -45
- ccxt/test/base/test_ledger_item.py +0 -48
- ccxt/test/base/test_leverage_tier.py +0 -33
- ccxt/test/base/test_margin_mode.py +0 -24
- ccxt/test/base/test_margin_modification.py +0 -35
- ccxt/test/base/test_market.py +0 -190
- ccxt/test/base/test_number.py +0 -411
- ccxt/test/base/test_ohlcv.py +0 -32
- ccxt/test/base/test_open_interest.py +0 -32
- ccxt/test/base/test_order.py +0 -64
- ccxt/test/base/test_order_book.py +0 -63
- ccxt/test/base/test_position.py +0 -60
- ccxt/test/base/test_shared_methods.py +0 -345
- ccxt/test/base/test_status.py +0 -24
- ccxt/test/base/test_throttle.py +0 -126
- ccxt/test/base/test_ticker.py +0 -86
- ccxt/test/base/test_trade.py +0 -47
- ccxt/test/base/test_trading_fee.py +0 -26
- ccxt/test/base/test_transaction.py +0 -39
- ccxt-4.2.76.dist-info/METADATA +0 -626
- ccxt-4.2.76.dist-info/RECORD +0 -534
- {ccxt-4.2.76.dist-info → ccxt-4.4.48.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,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.base.precise import Precise # noqa E402
|
16
|
-
from ccxt.test.base import test_shared_methods # noqa E402
|
17
|
-
|
18
|
-
def test_last_price(exchange, skipped_properties, method, entry, symbol):
|
19
|
-
format = {
|
20
|
-
'info': {},
|
21
|
-
'symbol': 'ETH/BTC',
|
22
|
-
'timestamp': 1502962946216,
|
23
|
-
'datetime': '2017-09-01T00:00:00',
|
24
|
-
'price': exchange.parse_number('1.234'),
|
25
|
-
'side': 'buy',
|
26
|
-
}
|
27
|
-
empty_allowed_for = ['timestamp', 'datetime', 'side']
|
28
|
-
test_shared_methods.assert_structure(exchange, skipped_properties, method, entry, format, empty_allowed_for)
|
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, 'price', '0')
|
32
|
-
test_shared_methods.assert_in_array(exchange, skipped_properties, method, entry, 'side', ['buy', 'sell', None])
|