ccxt 4.2.77__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 +24 -0
- ccxt/abstract/kucoinfutures.py +34 -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 +3030 -1087
- 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 +3104 -880
- 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 +238 -49
- ccxt/async_support/bitget.py +1513 -563
- ccxt/async_support/bithumb.py +199 -65
- 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 +392 -148
- 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 +2231 -1193
- ccxt/async_support/cex.py +1409 -1329
- ccxt/async_support/coinbase.py +1454 -287
- 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 +404 -109
- ccxt/async_support/deribit.py +557 -323
- 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 +1472 -463
- 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 +1633 -268
- 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 +917 -357
- 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 +1776 -454
- 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 +1137 -296
- 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 +1722 -480
- 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 +3030 -1087
- ccxt/binancecoinm.py +2 -1
- ccxt/binanceus.py +12 -1
- ccxt/binanceusdm.py +3 -1
- ccxt/bingx.py +3104 -880
- 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 +238 -49
- ccxt/bitget.py +1513 -563
- ccxt/bithumb.py +198 -65
- 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 +392 -148
- ccxt/btcalpha.py +161 -55
- ccxt/btcbox.py +250 -34
- ccxt/btcmarkets.py +232 -85
- ccxt/btcturk.py +159 -60
- ccxt/bybit.py +2231 -1193
- ccxt/cex.py +1408 -1329
- ccxt/coinbase.py +1454 -287
- 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 +404 -109
- ccxt/deribit.py +557 -323
- ccxt/digifinex.py +340 -223
- ccxt/ellipx.py +1826 -0
- ccxt/exmo.py +259 -128
- ccxt/gate.py +1472 -463
- 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 +1632 -268
- 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 +917 -357
- 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 +1776 -454
- 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 +62 -14
- 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 +203 -81
- 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 +965 -665
- 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 +167 -31
- ccxt/pro/exmo.py +252 -20
- 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 +92 -33
- ccxt/pro/poloniex.py +128 -49
- ccxt/pro/poloniexfutures.py +53 -32
- ccxt/pro/probit.py +92 -85
- 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 +437 -65
- 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} +456 -391
- ccxt/test/tests_helpers.py +285 -0
- ccxt/test/tests_init.py +39 -0
- ccxt/test/{test_sync.py → tests_sync.py} +456 -393
- 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 +1137 -296
- 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.77.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.77.dist-info/METADATA +0 -626
- ccxt-4.2.77.dist-info/RECORD +0 -534
- {ccxt-4.2.77.dist-info → ccxt-4.4.48.dist-info}/top_level.txt +0 -0
ccxt/huobijp.py
CHANGED
@@ -6,9 +6,10 @@
|
|
6
6
|
from ccxt.base.exchange import Exchange
|
7
7
|
from ccxt.abstract.huobijp import ImplicitAPI
|
8
8
|
import hashlib
|
9
|
-
from ccxt.base.types import Account, Balances, Currency, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction
|
9
|
+
from ccxt.base.types import Account, Balances, Currencies, Currency, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction
|
10
10
|
from typing import List
|
11
11
|
from ccxt.base.errors import ExchangeError
|
12
|
+
from ccxt.base.errors import AuthenticationError
|
12
13
|
from ccxt.base.errors import PermissionDenied
|
13
14
|
from ccxt.base.errors import ArgumentsRequired
|
14
15
|
from ccxt.base.errors import BadRequest
|
@@ -21,7 +22,6 @@ from ccxt.base.errors import NetworkError
|
|
21
22
|
from ccxt.base.errors import ExchangeNotAvailable
|
22
23
|
from ccxt.base.errors import OnMaintenance
|
23
24
|
from ccxt.base.errors import RequestTimeout
|
24
|
-
from ccxt.base.errors import AuthenticationError
|
25
25
|
from ccxt.base.decimal_to_precision import TRUNCATE
|
26
26
|
from ccxt.base.decimal_to_precision import TICK_SIZE
|
27
27
|
from ccxt.base.precise import Precise
|
@@ -323,6 +323,7 @@ class huobijp(Exchange, ImplicitAPI):
|
|
323
323
|
'fetchMarketsMethod': 'publicGetCommonSymbols',
|
324
324
|
'fetchBalanceMethod': 'privateGetAccountAccountsIdBalance',
|
325
325
|
'createOrderMethod': 'privatePostOrderOrdersPlace',
|
326
|
+
'currencyToPrecisionRoundingMode': TRUNCATE,
|
326
327
|
'language': 'en-US',
|
327
328
|
'broker': {
|
328
329
|
'id': 'AA03022abc',
|
@@ -361,14 +362,14 @@ class huobijp(Exchange, ImplicitAPI):
|
|
361
362
|
self.load_markets()
|
362
363
|
if symbols is None:
|
363
364
|
symbols = self.symbols
|
364
|
-
result = {}
|
365
|
+
result: dict = {}
|
365
366
|
for i in range(0, len(symbols)):
|
366
367
|
symbol = symbols[i]
|
367
368
|
result[symbol] = self.fetch_trading_limits_by_id(self.market_id(symbol), params)
|
368
369
|
return result
|
369
370
|
|
370
371
|
def fetch_trading_limits_by_id(self, id: str, params={}):
|
371
|
-
request = {
|
372
|
+
request: dict = {
|
372
373
|
'symbol': id,
|
373
374
|
}
|
374
375
|
response = self.publicGetCommonExchange(self.extend(request, params))
|
@@ -419,7 +420,7 @@ class huobijp(Exchange, ImplicitAPI):
|
|
419
420
|
def cost_to_precision(self, symbol, cost):
|
420
421
|
return self.decimal_to_precision(cost, TRUNCATE, self.markets[symbol]['precision']['cost'], self.precisionMode)
|
421
422
|
|
422
|
-
def fetch_markets(self, params={}):
|
423
|
+
def fetch_markets(self, params={}) -> List[Market]:
|
423
424
|
"""
|
424
425
|
retrieves data on all markets for huobijp
|
425
426
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
@@ -530,7 +531,7 @@ class huobijp(Exchange, ImplicitAPI):
|
|
530
531
|
})
|
531
532
|
return result
|
532
533
|
|
533
|
-
def parse_ticker(self, ticker, market: Market = None) -> Ticker:
|
534
|
+
def parse_ticker(self, ticker: dict, market: Market = None) -> Ticker:
|
534
535
|
#
|
535
536
|
# fetchTicker
|
536
537
|
#
|
@@ -621,7 +622,7 @@ class huobijp(Exchange, ImplicitAPI):
|
|
621
622
|
"""
|
622
623
|
self.load_markets()
|
623
624
|
market = self.market(symbol)
|
624
|
-
request = {
|
625
|
+
request: dict = {
|
625
626
|
'symbol': market['id'],
|
626
627
|
'type': 'step0',
|
627
628
|
}
|
@@ -666,7 +667,7 @@ class huobijp(Exchange, ImplicitAPI):
|
|
666
667
|
"""
|
667
668
|
self.load_markets()
|
668
669
|
market = self.market(symbol)
|
669
|
-
request = {
|
670
|
+
request: dict = {
|
670
671
|
'symbol': market['id'],
|
671
672
|
}
|
672
673
|
response = self.marketGetDetailMerged(self.extend(request, params))
|
@@ -708,7 +709,7 @@ class huobijp(Exchange, ImplicitAPI):
|
|
708
709
|
response = self.marketGetTickers(params)
|
709
710
|
tickers = self.safe_value(response, 'data', [])
|
710
711
|
timestamp = self.safe_integer(response, 'ts')
|
711
|
-
result = {}
|
712
|
+
result: dict = {}
|
712
713
|
for i in range(0, len(tickers)):
|
713
714
|
marketId = self.safe_string(tickers[i], 'symbol')
|
714
715
|
market = self.safe_market(marketId)
|
@@ -719,7 +720,7 @@ class huobijp(Exchange, ImplicitAPI):
|
|
719
720
|
result[symbol] = ticker
|
720
721
|
return self.filter_by_array_tickers(result, 'symbol', symbols)
|
721
722
|
|
722
|
-
def parse_trade(self, trade, market: Market = None) -> Trade:
|
723
|
+
def parse_trade(self, trade: dict, market: Market = None) -> Trade:
|
723
724
|
#
|
724
725
|
# fetchTrades(public)
|
725
726
|
#
|
@@ -808,7 +809,7 @@ class huobijp(Exchange, ImplicitAPI):
|
|
808
809
|
:returns dict[]: a list of `trade structures <https://docs.ccxt.com/#/?id=trade-structure>`
|
809
810
|
"""
|
810
811
|
self.load_markets()
|
811
|
-
request = {
|
812
|
+
request: dict = {
|
812
813
|
'id': id,
|
813
814
|
}
|
814
815
|
response = self.privateGetOrderOrdersIdMatchresults(self.extend(request, params))
|
@@ -825,7 +826,7 @@ class huobijp(Exchange, ImplicitAPI):
|
|
825
826
|
"""
|
826
827
|
self.load_markets()
|
827
828
|
market = None
|
828
|
-
request = {}
|
829
|
+
request: dict = {}
|
829
830
|
if symbol is not None:
|
830
831
|
market = self.market(symbol)
|
831
832
|
request['symbol'] = market['id']
|
@@ -848,7 +849,7 @@ class huobijp(Exchange, ImplicitAPI):
|
|
848
849
|
"""
|
849
850
|
self.load_markets()
|
850
851
|
market = self.market(symbol)
|
851
|
-
request = {
|
852
|
+
request: dict = {
|
852
853
|
'symbol': market['id'],
|
853
854
|
}
|
854
855
|
if limit is not None:
|
@@ -922,12 +923,12 @@ class huobijp(Exchange, ImplicitAPI):
|
|
922
923
|
"""
|
923
924
|
self.load_markets()
|
924
925
|
market = self.market(symbol)
|
925
|
-
request = {
|
926
|
+
request: dict = {
|
926
927
|
'symbol': market['id'],
|
927
928
|
'period': self.safe_string(self.timeframes, timeframe, timeframe),
|
928
929
|
}
|
929
930
|
if limit is not None:
|
930
|
-
request['size'] = limit
|
931
|
+
request['size'] = min(limit, 2000)
|
931
932
|
response = self.marketGetHistoryKline(self.extend(request, params))
|
932
933
|
#
|
933
934
|
# {
|
@@ -941,7 +942,7 @@ class huobijp(Exchange, ImplicitAPI):
|
|
941
942
|
# ]
|
942
943
|
# }
|
943
944
|
#
|
944
|
-
data = self.
|
945
|
+
data = self.safe_list(response, 'data', [])
|
945
946
|
return self.parse_ohlcvs(data, market, timeframe, since, limit)
|
946
947
|
|
947
948
|
def fetch_accounts(self, params={}) -> List[Account]:
|
@@ -954,13 +955,13 @@ class huobijp(Exchange, ImplicitAPI):
|
|
954
955
|
response = self.privateGetAccountAccounts(params)
|
955
956
|
return response['data']
|
956
957
|
|
957
|
-
def fetch_currencies(self, params={}):
|
958
|
+
def fetch_currencies(self, params={}) -> Currencies:
|
958
959
|
"""
|
959
960
|
fetches all available currencies on an exchange
|
960
961
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
961
962
|
:returns dict: an associative dictionary of currencies
|
962
963
|
"""
|
963
|
-
request = {
|
964
|
+
request: dict = {
|
964
965
|
'language': self.options['language'],
|
965
966
|
}
|
966
967
|
response = self.publicGetSettingsCurrencys(self.extend(request, params))
|
@@ -1005,7 +1006,7 @@ class huobijp(Exchange, ImplicitAPI):
|
|
1005
1006
|
# }
|
1006
1007
|
#
|
1007
1008
|
currencies = self.safe_value(response, 'data', [])
|
1008
|
-
result = {}
|
1009
|
+
result: dict = {}
|
1009
1010
|
for i in range(0, len(currencies)):
|
1010
1011
|
currency = currencies[i]
|
1011
1012
|
id = self.safe_value(currency, 'name')
|
@@ -1051,7 +1052,7 @@ class huobijp(Exchange, ImplicitAPI):
|
|
1051
1052
|
|
1052
1053
|
def parse_balance(self, response) -> Balances:
|
1053
1054
|
balances = self.safe_value(response['data'], 'list', [])
|
1054
|
-
result = {'info': response}
|
1055
|
+
result: dict = {'info': response}
|
1055
1056
|
for i in range(0, len(balances)):
|
1056
1057
|
balance = balances[i]
|
1057
1058
|
currencyId = self.safe_string(balance, 'currency')
|
@@ -1077,7 +1078,7 @@ class huobijp(Exchange, ImplicitAPI):
|
|
1077
1078
|
self.load_markets()
|
1078
1079
|
self.load_accounts()
|
1079
1080
|
method = self.options['fetchBalanceMethod']
|
1080
|
-
request = {
|
1081
|
+
request: dict = {
|
1081
1082
|
'id': self.accounts[0]['id'],
|
1082
1083
|
}
|
1083
1084
|
response = getattr(self, method)(self.extend(request, params))
|
@@ -1085,7 +1086,7 @@ class huobijp(Exchange, ImplicitAPI):
|
|
1085
1086
|
|
1086
1087
|
def fetch_orders_by_states(self, states, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
|
1087
1088
|
self.load_markets()
|
1088
|
-
request = {
|
1089
|
+
request: dict = {
|
1089
1090
|
'states': states,
|
1090
1091
|
}
|
1091
1092
|
market = None
|
@@ -1116,16 +1117,17 @@ class huobijp(Exchange, ImplicitAPI):
|
|
1116
1117
|
def fetch_order(self, id: str, symbol: Str = None, params={}):
|
1117
1118
|
"""
|
1118
1119
|
fetches information on an order made by the user
|
1120
|
+
:param str id: order id
|
1119
1121
|
:param str symbol: unified symbol of the market the order was made in
|
1120
1122
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1121
1123
|
:returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
|
1122
1124
|
"""
|
1123
1125
|
self.load_markets()
|
1124
|
-
request = {
|
1126
|
+
request: dict = {
|
1125
1127
|
'id': id,
|
1126
1128
|
}
|
1127
1129
|
response = self.privateGetOrderOrdersId(self.extend(request, params))
|
1128
|
-
order = self.
|
1130
|
+
order = self.safe_dict(response, 'data')
|
1129
1131
|
return self.parse_order(order)
|
1130
1132
|
|
1131
1133
|
def fetch_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
|
@@ -1169,7 +1171,7 @@ class huobijp(Exchange, ImplicitAPI):
|
|
1169
1171
|
|
1170
1172
|
def fetch_open_orders_v2(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
|
1171
1173
|
self.load_markets()
|
1172
|
-
request = {}
|
1174
|
+
request: dict = {}
|
1173
1175
|
market = None
|
1174
1176
|
if symbol is not None:
|
1175
1177
|
market = self.market(symbol)
|
@@ -1210,11 +1212,11 @@ class huobijp(Exchange, ImplicitAPI):
|
|
1210
1212
|
# ]
|
1211
1213
|
# }
|
1212
1214
|
#
|
1213
|
-
data = self.
|
1215
|
+
data = self.safe_list(response, 'data', [])
|
1214
1216
|
return self.parse_orders(data, market, since, limit)
|
1215
1217
|
|
1216
|
-
def parse_order_status(self, status):
|
1217
|
-
statuses = {
|
1218
|
+
def parse_order_status(self, status: Str):
|
1219
|
+
statuses: dict = {
|
1218
1220
|
'partial-filled': 'open',
|
1219
1221
|
'partial-canceled': 'canceled',
|
1220
1222
|
'filled': 'closed',
|
@@ -1223,7 +1225,7 @@ class huobijp(Exchange, ImplicitAPI):
|
|
1223
1225
|
}
|
1224
1226
|
return self.safe_string(statuses, status, status)
|
1225
1227
|
|
1226
|
-
def parse_order(self, order, market: Market = None) -> Order:
|
1228
|
+
def parse_order(self, order: dict, market: Market = None) -> Order:
|
1227
1229
|
#
|
1228
1230
|
# { id: 13997833014,
|
1229
1231
|
# "symbol": "ethbtc",
|
@@ -1293,7 +1295,6 @@ class huobijp(Exchange, ImplicitAPI):
|
|
1293
1295
|
'postOnly': None,
|
1294
1296
|
'side': side,
|
1295
1297
|
'price': price,
|
1296
|
-
'stopPrice': None,
|
1297
1298
|
'triggerPrice': None,
|
1298
1299
|
'average': None,
|
1299
1300
|
'cost': cost,
|
@@ -1327,14 +1328,14 @@ class huobijp(Exchange, ImplicitAPI):
|
|
1327
1328
|
:param str type: 'market' or 'limit'
|
1328
1329
|
:param str side: 'buy' or 'sell'
|
1329
1330
|
:param float amount: how much of currency you want to trade in units of base currency
|
1330
|
-
:param float [price]: the price at which the order is to be
|
1331
|
+
:param float [price]: the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
|
1331
1332
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1332
1333
|
:returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
|
1333
1334
|
"""
|
1334
1335
|
self.load_markets()
|
1335
1336
|
self.load_accounts()
|
1336
1337
|
market = self.market(symbol)
|
1337
|
-
request = {
|
1338
|
+
request: dict = {
|
1338
1339
|
'account-id': self.accounts[0]['id'],
|
1339
1340
|
'symbol': market['id'],
|
1340
1341
|
'type': side + '-' + type,
|
@@ -1430,7 +1431,7 @@ class huobijp(Exchange, ImplicitAPI):
|
|
1430
1431
|
self.load_markets()
|
1431
1432
|
clientOrderIds = self.safe_value_2(params, 'clientOrderIds', 'client-order-ids')
|
1432
1433
|
params = self.omit(params, ['clientOrderIds', 'client-order-ids'])
|
1433
|
-
request = {}
|
1434
|
+
request: dict = {}
|
1434
1435
|
if clientOrderIds is None:
|
1435
1436
|
request['order-ids'] = ids
|
1436
1437
|
else:
|
@@ -1468,7 +1469,61 @@ class huobijp(Exchange, ImplicitAPI):
|
|
1468
1469
|
# }
|
1469
1470
|
# }
|
1470
1471
|
#
|
1471
|
-
return response
|
1472
|
+
return self.parse_cancel_orders(response)
|
1473
|
+
|
1474
|
+
def parse_cancel_orders(self, orders):
|
1475
|
+
#
|
1476
|
+
# {
|
1477
|
+
# "success": [
|
1478
|
+
# "5983466"
|
1479
|
+
# ],
|
1480
|
+
# "failed": [
|
1481
|
+
# {
|
1482
|
+
# "err-msg": "Incorrect order state",
|
1483
|
+
# "order-state": 7,
|
1484
|
+
# "order-id": "",
|
1485
|
+
# "err-code": "order-orderstate-error",
|
1486
|
+
# "client-order-id": "first"
|
1487
|
+
# },
|
1488
|
+
# ...
|
1489
|
+
# ]
|
1490
|
+
# }
|
1491
|
+
#
|
1492
|
+
# {
|
1493
|
+
# "errors": [
|
1494
|
+
# {
|
1495
|
+
# "order_id": "769206471845261312",
|
1496
|
+
# "err_code": 1061,
|
1497
|
+
# "err_msg": "This order doesnt exist."
|
1498
|
+
# }
|
1499
|
+
# ],
|
1500
|
+
# "successes": "1258075374411399168,1258075393254871040"
|
1501
|
+
# }
|
1502
|
+
#
|
1503
|
+
successes = self.safe_string(orders, 'successes')
|
1504
|
+
success = None
|
1505
|
+
if successes is not None:
|
1506
|
+
success = successes.split(',')
|
1507
|
+
else:
|
1508
|
+
success = self.safe_list(orders, 'success', [])
|
1509
|
+
failed = self.safe_list_2(orders, 'errors', 'failed', [])
|
1510
|
+
result = []
|
1511
|
+
for i in range(0, len(success)):
|
1512
|
+
order = success[i]
|
1513
|
+
result.append(self.safe_order({
|
1514
|
+
'info': order,
|
1515
|
+
'id': order,
|
1516
|
+
'status': 'canceled',
|
1517
|
+
}))
|
1518
|
+
for i in range(0, len(failed)):
|
1519
|
+
order = failed[i]
|
1520
|
+
result.append(self.safe_order({
|
1521
|
+
'info': order,
|
1522
|
+
'id': self.safe_string_2(order, 'order-id', 'order_id'),
|
1523
|
+
'status': 'failed',
|
1524
|
+
'clientOrderId': self.safe_string(order, 'client-order-id'),
|
1525
|
+
}))
|
1526
|
+
return result
|
1472
1527
|
|
1473
1528
|
def cancel_all_orders(self, symbol: Str = None, params={}):
|
1474
1529
|
"""
|
@@ -1478,7 +1533,7 @@ class huobijp(Exchange, ImplicitAPI):
|
|
1478
1533
|
:returns dict[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
|
1479
1534
|
"""
|
1480
1535
|
self.load_markets()
|
1481
|
-
request = {
|
1536
|
+
request: dict = {
|
1482
1537
|
# 'account-id' string False NA The account id used for self cancel Refer to GET /v1/account/accounts
|
1483
1538
|
# 'symbol': market['id'], # a list of comma-separated symbols, all symbols by default
|
1484
1539
|
# 'types' 'string', buy-market, sell-market, buy-limit, sell-limit, buy-ioc, sell-ioc, buy-stop-limit, sell-stop-limit, buy-limit-fok, sell-limit-fok, buy-stop-limit-fok, sell-stop-limit-fok
|
@@ -1500,18 +1555,12 @@ class huobijp(Exchange, ImplicitAPI):
|
|
1500
1555
|
# }
|
1501
1556
|
# }
|
1502
1557
|
#
|
1503
|
-
|
1504
|
-
|
1505
|
-
|
1506
|
-
|
1507
|
-
|
1508
|
-
|
1509
|
-
lastCharacterIndex = len(networkId) - 1
|
1510
|
-
lastCharacter = networkId[lastCharacterIndex]
|
1511
|
-
if lastCharacter == '1':
|
1512
|
-
networkId = networkId[0:lastCharacterIndex]
|
1513
|
-
networksById = {}
|
1514
|
-
return self.safe_string(networksById, networkId, networkId)
|
1558
|
+
data = self.safe_dict(response, 'data', {})
|
1559
|
+
return [
|
1560
|
+
self.safe_order({
|
1561
|
+
'info': data,
|
1562
|
+
}),
|
1563
|
+
]
|
1515
1564
|
|
1516
1565
|
def parse_deposit_address(self, depositAddress, currency: Currency = None):
|
1517
1566
|
#
|
@@ -1556,7 +1605,7 @@ class huobijp(Exchange, ImplicitAPI):
|
|
1556
1605
|
currency = None
|
1557
1606
|
if code is not None:
|
1558
1607
|
currency = self.currency(code)
|
1559
|
-
request = {
|
1608
|
+
request: dict = {
|
1560
1609
|
'type': 'deposit',
|
1561
1610
|
'from': 0, # From 'id' ... if you want to get results after a particular transaction id, pass the id in params.from
|
1562
1611
|
}
|
@@ -1583,7 +1632,7 @@ class huobijp(Exchange, ImplicitAPI):
|
|
1583
1632
|
currency = None
|
1584
1633
|
if code is not None:
|
1585
1634
|
currency = self.currency(code)
|
1586
|
-
request = {
|
1635
|
+
request: dict = {
|
1587
1636
|
'type': 'withdraw',
|
1588
1637
|
'from': 0, # From 'id' ... if you want to get results after a particular transaction id, pass the id in params.from
|
1589
1638
|
}
|
@@ -1595,7 +1644,7 @@ class huobijp(Exchange, ImplicitAPI):
|
|
1595
1644
|
# return response
|
1596
1645
|
return self.parse_transactions(response['data'], currency, since, limit)
|
1597
1646
|
|
1598
|
-
def parse_transaction(self, transaction, currency: Currency = None) -> Transaction:
|
1647
|
+
def parse_transaction(self, transaction: dict, currency: Currency = None) -> Transaction:
|
1599
1648
|
#
|
1600
1649
|
# fetchDeposits
|
1601
1650
|
#
|
@@ -1673,8 +1722,8 @@ class huobijp(Exchange, ImplicitAPI):
|
|
1673
1722
|
},
|
1674
1723
|
}
|
1675
1724
|
|
1676
|
-
def parse_transaction_status(self, status):
|
1677
|
-
statuses = {
|
1725
|
+
def parse_transaction_status(self, status: Str):
|
1726
|
+
statuses: dict = {
|
1678
1727
|
# deposit statuses
|
1679
1728
|
'unknown': 'failed',
|
1680
1729
|
'confirming': 'pending',
|
@@ -1696,7 +1745,7 @@ class huobijp(Exchange, ImplicitAPI):
|
|
1696
1745
|
}
|
1697
1746
|
return self.safe_string(statuses, status, status)
|
1698
1747
|
|
1699
|
-
def withdraw(self, code: str, amount: float, address, tag=None, params={}):
|
1748
|
+
def withdraw(self, code: str, amount: float, address: str, tag=None, params={}) -> Transaction:
|
1700
1749
|
"""
|
1701
1750
|
make a withdrawal
|
1702
1751
|
:param str code: unified currency code
|
@@ -1710,7 +1759,7 @@ class huobijp(Exchange, ImplicitAPI):
|
|
1710
1759
|
self.load_markets()
|
1711
1760
|
self.check_address(address)
|
1712
1761
|
currency = self.currency(code)
|
1713
|
-
request = {
|
1762
|
+
request: dict = {
|
1714
1763
|
'address': address, # only supports existing addresses in your withdraw address list
|
1715
1764
|
'amount': amount,
|
1716
1765
|
'currency': currency['id'].lower(),
|
@@ -1749,7 +1798,7 @@ class huobijp(Exchange, ImplicitAPI):
|
|
1749
1798
|
if api == 'private' or api == 'v2Private':
|
1750
1799
|
self.check_required_credentials()
|
1751
1800
|
timestamp = self.ymdhms(self.milliseconds(), 'T')
|
1752
|
-
request = {
|
1801
|
+
request: dict = {
|
1753
1802
|
'SignatureMethod': 'HmacSHA256',
|
1754
1803
|
'SignatureVersion': '2',
|
1755
1804
|
'AccessKeyId': self.apiKey,
|
@@ -1782,7 +1831,7 @@ class huobijp(Exchange, ImplicitAPI):
|
|
1782
1831
|
}) + url
|
1783
1832
|
return {'url': url, 'method': method, 'body': body, 'headers': headers}
|
1784
1833
|
|
1785
|
-
def handle_errors(self, httpCode, reason, url, method, headers, body, response, requestHeaders, requestBody):
|
1834
|
+
def handle_errors(self, httpCode: int, reason: str, url: str, method: str, headers: dict, body: str, response, requestHeaders, requestBody):
|
1786
1835
|
if response is None:
|
1787
1836
|
return None # fallback to default error handler
|
1788
1837
|
if 'status' in response:
|