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
ccxt/probit.py
CHANGED
@@ -6,20 +6,21 @@
|
|
6
6
|
from ccxt.base.exchange import Exchange
|
7
7
|
from ccxt.abstract.probit import ImplicitAPI
|
8
8
|
import math
|
9
|
-
from ccxt.base.types import Balances, Currency, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction
|
9
|
+
from ccxt.base.types import Balances, Currencies, Currency, DepositAddress, 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 ArgumentsRequired
|
13
14
|
from ccxt.base.errors import BadRequest
|
14
15
|
from ccxt.base.errors import BadSymbol
|
15
|
-
from ccxt.base.errors import
|
16
|
+
from ccxt.base.errors import MarketClosed
|
16
17
|
from ccxt.base.errors import InsufficientFunds
|
17
18
|
from ccxt.base.errors import InvalidAddress
|
18
19
|
from ccxt.base.errors import InvalidOrder
|
19
20
|
from ccxt.base.errors import DDoSProtection
|
20
21
|
from ccxt.base.errors import RateLimitExceeded
|
21
22
|
from ccxt.base.errors import ExchangeNotAvailable
|
22
|
-
from ccxt.base.errors import
|
23
|
+
from ccxt.base.errors import BadResponse
|
23
24
|
from ccxt.base.decimal_to_precision import TRUNCATE
|
24
25
|
from ccxt.base.decimal_to_precision import TICK_SIZE
|
25
26
|
from ccxt.base.precise import Precise
|
@@ -61,6 +62,7 @@ class probit(Exchange, ImplicitAPI):
|
|
61
62
|
'fetchCurrencies': True,
|
62
63
|
'fetchDepositAddress': True,
|
63
64
|
'fetchDepositAddresses': True,
|
65
|
+
'fetchDepositAddressesByNetwork': False,
|
64
66
|
'fetchDeposits': True,
|
65
67
|
'fetchDepositsWithdrawals': True,
|
66
68
|
'fetchFundingHistory': False,
|
@@ -82,8 +84,11 @@ class probit(Exchange, ImplicitAPI):
|
|
82
84
|
'fetchOrder': True,
|
83
85
|
'fetchOrderBook': True,
|
84
86
|
'fetchPosition': False,
|
87
|
+
'fetchPositionHistory': False,
|
85
88
|
'fetchPositionMode': False,
|
86
89
|
'fetchPositions': False,
|
90
|
+
'fetchPositionsForSymbol': False,
|
91
|
+
'fetchPositionsHistory': False,
|
87
92
|
'fetchPositionsRisk': False,
|
88
93
|
'fetchPremiumIndexOHLCV': False,
|
89
94
|
'fetchTicker': True,
|
@@ -98,6 +103,7 @@ class probit(Exchange, ImplicitAPI):
|
|
98
103
|
'fetchWithdrawal': False,
|
99
104
|
'fetchWithdrawals': True,
|
100
105
|
'reduceMargin': False,
|
106
|
+
'sandbox': True,
|
101
107
|
'setLeverage': False,
|
102
108
|
'setMarginMode': False,
|
103
109
|
'setPositionMode': False,
|
@@ -190,7 +196,7 @@ class probit(Exchange, ImplicitAPI):
|
|
190
196
|
'RATE_LIMIT_EXCEEDED': RateLimitExceeded, # You are sending requests too frequently. Please try it later.
|
191
197
|
'MARKET_UNAVAILABLE': ExchangeNotAvailable, # Market is closed today
|
192
198
|
'INVALID_MARKET': BadSymbol, # Requested market is not exist
|
193
|
-
'MARKET_CLOSED':
|
199
|
+
'MARKET_CLOSED': MarketClosed, # {"errorCode":"MARKET_CLOSED"}
|
194
200
|
'MARKET_NOT_FOUND': BadSymbol, # {"errorCode":"MARKET_NOT_FOUND","message":"8e2b8496-0a1e-5beb-b990-a205b902eabe","details":{}}
|
195
201
|
'INVALID_CURRENCY': BadRequest, # Requested currency is not exist on ProBit system
|
196
202
|
'TOO_MANY_OPEN_ORDERS': DDoSProtection, # Too many open orders
|
@@ -216,49 +222,32 @@ class probit(Exchange, ImplicitAPI):
|
|
216
222
|
},
|
217
223
|
},
|
218
224
|
'commonCurrencies': {
|
219
|
-
'
|
220
|
-
'AZU': 'Azultec',
|
221
|
-
'BCC': 'BCC',
|
222
|
-
'BDP': 'BidiPass',
|
223
|
-
'BIRD': 'Birdchain',
|
224
|
-
'BTCBEAR': 'BEAR',
|
225
|
-
'BTCBULL': 'BULL',
|
225
|
+
'BB': 'Baby Bali',
|
226
226
|
'CBC': 'CryptoBharatCoin',
|
227
|
-
'CHE': 'Chellit',
|
228
|
-
'CLR': 'Color Platform',
|
229
227
|
'CTK': 'Cryptyk',
|
230
228
|
'CTT': 'Castweet',
|
231
|
-
'DIP': 'Dipper',
|
232
229
|
'DKT': 'DAKOTA',
|
233
230
|
'EGC': 'EcoG9coin',
|
234
231
|
'EPS': 'Epanus', # conflict with EPS Ellipsis https://github.com/ccxt/ccxt/issues/8909
|
235
232
|
'FX': 'Fanzy',
|
236
|
-
'GDT': 'Gorilla Diamond',
|
237
233
|
'GM': 'GM Holding',
|
238
234
|
'GOGOL': 'GOL',
|
239
235
|
'GOL': 'Goldofir',
|
240
|
-
'GRB': 'Global Reward Bank',
|
241
|
-
'HBC': 'Hybrid Bank Cash',
|
242
236
|
'HUSL': 'The Hustle App',
|
243
237
|
'LAND': 'Landbox',
|
244
|
-
'LBK': 'Legal Block',
|
245
|
-
'ORC': 'Oracle System',
|
246
|
-
'PXP': 'PIXSHOP COIN',
|
247
|
-
'PYE': 'CreamPYE',
|
248
|
-
'ROOK': 'Reckoon',
|
249
|
-
'SOC': 'Soda Coin',
|
250
238
|
'SST': 'SocialSwap',
|
251
239
|
'TCT': 'Top Coin Token',
|
252
240
|
'TOR': 'Torex',
|
253
|
-
'TPAY': 'Tetra Pay',
|
254
241
|
'UNI': 'UNICORN Token',
|
255
242
|
'UNISWAP': 'UNI',
|
256
243
|
},
|
257
244
|
})
|
258
245
|
|
259
|
-
def fetch_markets(self, params={}):
|
246
|
+
def fetch_markets(self, params={}) -> List[Market]:
|
260
247
|
"""
|
261
|
-
|
248
|
+
|
249
|
+
https://docs-en.probit.com/reference/market
|
250
|
+
|
262
251
|
retrieves data on all markets for probit
|
263
252
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
264
253
|
:returns dict[]: an array of objects representing market data
|
@@ -291,13 +280,15 @@ class probit(Exchange, ImplicitAPI):
|
|
291
280
|
markets = self.safe_value(response, 'data', [])
|
292
281
|
return self.parse_markets(markets)
|
293
282
|
|
294
|
-
def parse_market(self, market) -> Market:
|
283
|
+
def parse_market(self, market: dict) -> Market:
|
295
284
|
id = self.safe_string(market, 'id')
|
296
285
|
baseId = self.safe_string(market, 'base_currency_id')
|
297
286
|
quoteId = self.safe_string(market, 'quote_currency_id')
|
298
287
|
base = self.safe_currency_code(baseId)
|
299
288
|
quote = self.safe_currency_code(quoteId)
|
300
289
|
closed = self.safe_bool(market, 'closed', False)
|
290
|
+
showInUI = self.safe_bool(market, 'show_in_ui', True)
|
291
|
+
active = not closed and showInUI
|
301
292
|
takerFeeRate = self.safe_string(market, 'taker_fee_rate')
|
302
293
|
taker = Precise.string_div(takerFeeRate, '100')
|
303
294
|
makerFeeRate = self.safe_string(market, 'maker_fee_rate')
|
@@ -317,7 +308,7 @@ class probit(Exchange, ImplicitAPI):
|
|
317
308
|
'swap': False,
|
318
309
|
'future': False,
|
319
310
|
'option': False,
|
320
|
-
'active':
|
311
|
+
'active': active,
|
321
312
|
'contract': False,
|
322
313
|
'linear': None,
|
323
314
|
'inverse': None,
|
@@ -355,9 +346,11 @@ class probit(Exchange, ImplicitAPI):
|
|
355
346
|
'info': market,
|
356
347
|
}
|
357
348
|
|
358
|
-
def fetch_currencies(self, params={}):
|
349
|
+
def fetch_currencies(self, params={}) -> Currencies:
|
359
350
|
"""
|
360
|
-
|
351
|
+
|
352
|
+
https://docs-en.probit.com/reference/currency
|
353
|
+
|
361
354
|
fetches all available currencies on an exchange
|
362
355
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
363
356
|
:returns dict: an associative dictionary of currencies
|
@@ -420,7 +413,7 @@ class probit(Exchange, ImplicitAPI):
|
|
420
413
|
# }
|
421
414
|
#
|
422
415
|
currencies = self.safe_value(response, 'data', [])
|
423
|
-
result = {}
|
416
|
+
result: dict = {}
|
424
417
|
for i in range(0, len(currencies)):
|
425
418
|
currency = currencies[i]
|
426
419
|
id = self.safe_string(currency, 'id')
|
@@ -430,7 +423,7 @@ class probit(Exchange, ImplicitAPI):
|
|
430
423
|
platforms = self.safe_value(currency, 'platform', [])
|
431
424
|
platformsByPriority = self.sort_by(platforms, 'priority')
|
432
425
|
platform = None
|
433
|
-
networkList = {}
|
426
|
+
networkList: dict = {}
|
434
427
|
for j in range(0, len(platformsByPriority)):
|
435
428
|
network = platformsByPriority[j]
|
436
429
|
idInner = self.safe_string(network, 'id')
|
@@ -520,7 +513,7 @@ class probit(Exchange, ImplicitAPI):
|
|
520
513
|
return result
|
521
514
|
|
522
515
|
def parse_balance(self, response) -> Balances:
|
523
|
-
result = {
|
516
|
+
result: dict = {
|
524
517
|
'info': response,
|
525
518
|
'timestamp': None,
|
526
519
|
'datetime': None,
|
@@ -538,7 +531,9 @@ class probit(Exchange, ImplicitAPI):
|
|
538
531
|
|
539
532
|
def fetch_balance(self, params={}) -> Balances:
|
540
533
|
"""
|
541
|
-
|
534
|
+
|
535
|
+
https://docs-en.probit.com/reference/balance
|
536
|
+
|
542
537
|
query for balance and get the amount of funds available for trading or funds locked in orders
|
543
538
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
544
539
|
:returns dict: a `balance structure <https://docs.ccxt.com/#/?id=balance-structure>`
|
@@ -560,7 +555,9 @@ class probit(Exchange, ImplicitAPI):
|
|
560
555
|
|
561
556
|
def fetch_order_book(self, symbol: str, limit: Int = None, params={}) -> OrderBook:
|
562
557
|
"""
|
563
|
-
|
558
|
+
|
559
|
+
https://docs-en.probit.com/reference/order_book
|
560
|
+
|
564
561
|
fetches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
|
565
562
|
:param str symbol: unified symbol of the market to fetch the order book for
|
566
563
|
:param int [limit]: the maximum amount of order book entries to return
|
@@ -569,7 +566,7 @@ class probit(Exchange, ImplicitAPI):
|
|
569
566
|
"""
|
570
567
|
self.load_markets()
|
571
568
|
market = self.market(symbol)
|
572
|
-
request = {
|
569
|
+
request: dict = {
|
573
570
|
'market_id': market['id'],
|
574
571
|
}
|
575
572
|
response = self.publicGetOrderBook(self.extend(request, params))
|
@@ -588,14 +585,16 @@ class probit(Exchange, ImplicitAPI):
|
|
588
585
|
|
589
586
|
def fetch_tickers(self, symbols: Strings = None, params={}) -> Tickers:
|
590
587
|
"""
|
591
|
-
|
588
|
+
|
589
|
+
https://docs-en.probit.com/reference/ticker
|
590
|
+
|
592
591
|
fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
|
593
592
|
:param str[]|None symbols: unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
|
594
593
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
595
594
|
:returns dict: a dictionary of `ticker structures <https://docs.ccxt.com/#/?id=ticker-structure>`
|
596
595
|
"""
|
597
596
|
self.load_markets()
|
598
|
-
request = {}
|
597
|
+
request: dict = {}
|
599
598
|
if symbols is not None:
|
600
599
|
marketIds = self.market_ids(symbols)
|
601
600
|
request['market_ids'] = ','.join(marketIds)
|
@@ -616,12 +615,14 @@ class probit(Exchange, ImplicitAPI):
|
|
616
615
|
# ]
|
617
616
|
# }
|
618
617
|
#
|
619
|
-
data = self.
|
618
|
+
data = self.safe_list(response, 'data', [])
|
620
619
|
return self.parse_tickers(data, symbols)
|
621
620
|
|
622
621
|
def fetch_ticker(self, symbol: str, params={}) -> Ticker:
|
623
622
|
"""
|
624
|
-
|
623
|
+
|
624
|
+
https://docs-en.probit.com/reference/ticker
|
625
|
+
|
625
626
|
fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
|
626
627
|
:param str symbol: unified symbol of the market to fetch the ticker for
|
627
628
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
@@ -629,7 +630,7 @@ class probit(Exchange, ImplicitAPI):
|
|
629
630
|
"""
|
630
631
|
self.load_markets()
|
631
632
|
market = self.market(symbol)
|
632
|
-
request = {
|
633
|
+
request: dict = {
|
633
634
|
'market_ids': market['id'],
|
634
635
|
}
|
635
636
|
response = self.publicGetTicker(self.extend(request, params))
|
@@ -655,7 +656,7 @@ class probit(Exchange, ImplicitAPI):
|
|
655
656
|
raise BadResponse(self.id + ' fetchTicker() returned an empty response')
|
656
657
|
return self.parse_ticker(ticker, market)
|
657
658
|
|
658
|
-
def parse_ticker(self, ticker, market: Market = None) -> Ticker:
|
659
|
+
def parse_ticker(self, ticker: dict, market: Market = None) -> Ticker:
|
659
660
|
#
|
660
661
|
# {
|
661
662
|
# "last":"0.022902",
|
@@ -700,7 +701,9 @@ class probit(Exchange, ImplicitAPI):
|
|
700
701
|
|
701
702
|
def fetch_my_trades(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
|
702
703
|
"""
|
703
|
-
|
704
|
+
|
705
|
+
https://docs-en.probit.com/reference/trade
|
706
|
+
|
704
707
|
fetch all trades made by the user
|
705
708
|
:param str symbol: unified market symbol
|
706
709
|
:param int [since]: the earliest time in ms to fetch trades for
|
@@ -711,7 +714,7 @@ class probit(Exchange, ImplicitAPI):
|
|
711
714
|
self.load_markets()
|
712
715
|
market: Market = None
|
713
716
|
now = self.milliseconds()
|
714
|
-
request = {
|
717
|
+
request: dict = {
|
715
718
|
'limit': 100,
|
716
719
|
'start_time': self.iso8601(now - 31536000000), # -365 days
|
717
720
|
'end_time': self.iso8601(now),
|
@@ -744,12 +747,14 @@ class probit(Exchange, ImplicitAPI):
|
|
744
747
|
# ]
|
745
748
|
# }
|
746
749
|
#
|
747
|
-
data = self.
|
750
|
+
data = self.safe_list(response, 'data', [])
|
748
751
|
return self.parse_trades(data, market, since, limit)
|
749
752
|
|
750
753
|
def fetch_trades(self, symbol: str, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
|
751
754
|
"""
|
752
|
-
|
755
|
+
|
756
|
+
https://docs-en.probit.com/reference/trade-1
|
757
|
+
|
753
758
|
get the list of most recent trades for a particular symbol
|
754
759
|
:param str symbol: unified symbol of the market to fetch trades for
|
755
760
|
:param int [since]: timestamp in ms of the earliest trade to fetch
|
@@ -759,7 +764,7 @@ class probit(Exchange, ImplicitAPI):
|
|
759
764
|
"""
|
760
765
|
self.load_markets()
|
761
766
|
market = self.market(symbol)
|
762
|
-
request = {
|
767
|
+
request: dict = {
|
763
768
|
'market_id': market['id'],
|
764
769
|
'start_time': '1970-01-01T00:00:00.000Z',
|
765
770
|
'end_time': self.iso8601(self.milliseconds()),
|
@@ -793,10 +798,10 @@ class probit(Exchange, ImplicitAPI):
|
|
793
798
|
# ]
|
794
799
|
# }
|
795
800
|
#
|
796
|
-
data = self.
|
801
|
+
data = self.safe_list(response, 'data', [])
|
797
802
|
return self.parse_trades(data, market, since, limit)
|
798
803
|
|
799
|
-
def parse_trade(self, trade, market: Market = None) -> Trade:
|
804
|
+
def parse_trade(self, trade: dict, market: Market = None) -> Trade:
|
800
805
|
#
|
801
806
|
# fetchTrades(public)
|
802
807
|
#
|
@@ -864,7 +869,9 @@ class probit(Exchange, ImplicitAPI):
|
|
864
869
|
|
865
870
|
def fetch_time(self, params={}):
|
866
871
|
"""
|
867
|
-
|
872
|
+
|
873
|
+
https://docs-en.probit.com/reference/time
|
874
|
+
|
868
875
|
fetches the current integer timestamp in milliseconds from the exchange server
|
869
876
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
870
877
|
:returns int: the current integer timestamp in milliseconds from the exchange server
|
@@ -907,7 +914,9 @@ class probit(Exchange, ImplicitAPI):
|
|
907
914
|
|
908
915
|
def fetch_ohlcv(self, symbol: str, timeframe='1m', since: Int = None, limit: Int = None, params={}) -> List[list]:
|
909
916
|
"""
|
910
|
-
|
917
|
+
|
918
|
+
https://docs-en.probit.com/reference/candle
|
919
|
+
|
911
920
|
fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market
|
912
921
|
:param str symbol: unified symbol of the market to fetch OHLCV data for
|
913
922
|
:param str timeframe: the length of time each candle represents
|
@@ -922,7 +931,7 @@ class probit(Exchange, ImplicitAPI):
|
|
922
931
|
limit = 100 if (limit is None) else limit
|
923
932
|
requestLimit = self.sum(limit, 1)
|
924
933
|
requestLimit = min(1000, requestLimit) # max 1000
|
925
|
-
request = {
|
934
|
+
request: dict = {
|
926
935
|
'market_ids': market['id'],
|
927
936
|
'interval': interval,
|
928
937
|
'sort': 'asc', # 'asc' will always include the start_time, 'desc' will always include end_time
|
@@ -963,7 +972,7 @@ class probit(Exchange, ImplicitAPI):
|
|
963
972
|
# ]
|
964
973
|
# }
|
965
974
|
#
|
966
|
-
data = self.
|
975
|
+
data = self.safe_list(response, 'data', [])
|
967
976
|
return self.parse_ohlcvs(data, market, timeframe, since, limit)
|
968
977
|
|
969
978
|
def parse_ohlcv(self, ohlcv, market: Market = None) -> list:
|
@@ -991,7 +1000,9 @@ class probit(Exchange, ImplicitAPI):
|
|
991
1000
|
|
992
1001
|
def fetch_open_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
|
993
1002
|
"""
|
994
|
-
|
1003
|
+
|
1004
|
+
https://docs-en.probit.com/reference/open_order-1
|
1005
|
+
|
995
1006
|
fetch all unfilled currently open orders
|
996
1007
|
:param str symbol: unified market symbol
|
997
1008
|
:param int [since]: the earliest time in ms to fetch open orders for
|
@@ -1001,18 +1012,20 @@ class probit(Exchange, ImplicitAPI):
|
|
1001
1012
|
"""
|
1002
1013
|
self.load_markets()
|
1003
1014
|
since = self.parse8601(since)
|
1004
|
-
request = {}
|
1015
|
+
request: dict = {}
|
1005
1016
|
market: Market = None
|
1006
1017
|
if symbol is not None:
|
1007
1018
|
market = self.market(symbol)
|
1008
1019
|
request['market_id'] = market['id']
|
1009
1020
|
response = self.privateGetOpenOrder(self.extend(request, params))
|
1010
|
-
data = self.
|
1021
|
+
data = self.safe_list(response, 'data')
|
1011
1022
|
return self.parse_orders(data, market, since, limit)
|
1012
1023
|
|
1013
1024
|
def fetch_closed_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
|
1014
1025
|
"""
|
1015
|
-
|
1026
|
+
|
1027
|
+
https://docs-en.probit.com/reference/order
|
1028
|
+
|
1016
1029
|
fetches information on multiple closed orders made by the user
|
1017
1030
|
:param str symbol: unified market symbol of the market orders were made in
|
1018
1031
|
:param int [since]: the earliest time in ms to fetch orders for
|
@@ -1021,7 +1034,7 @@ class probit(Exchange, ImplicitAPI):
|
|
1021
1034
|
:returns Order[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
|
1022
1035
|
"""
|
1023
1036
|
self.load_markets()
|
1024
|
-
request = {
|
1037
|
+
request: dict = {
|
1025
1038
|
'start_time': self.iso8601(0),
|
1026
1039
|
'end_time': self.iso8601(self.milliseconds()),
|
1027
1040
|
'limit': 100,
|
@@ -1035,13 +1048,16 @@ class probit(Exchange, ImplicitAPI):
|
|
1035
1048
|
if limit:
|
1036
1049
|
request['limit'] = limit
|
1037
1050
|
response = self.privateGetOrderHistory(self.extend(request, params))
|
1038
|
-
data = self.
|
1051
|
+
data = self.safe_list(response, 'data')
|
1039
1052
|
return self.parse_orders(data, market, since, limit)
|
1040
1053
|
|
1041
1054
|
def fetch_order(self, id: str, symbol: Str = None, params={}):
|
1042
1055
|
"""
|
1043
|
-
|
1056
|
+
|
1057
|
+
https://docs-en.probit.com/reference/order-3
|
1058
|
+
|
1044
1059
|
fetches information on an order made by the user
|
1060
|
+
:param str id: the order id
|
1045
1061
|
:param str symbol: unified symbol of the market the order was made in
|
1046
1062
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1047
1063
|
:returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
|
@@ -1050,7 +1066,7 @@ class probit(Exchange, ImplicitAPI):
|
|
1050
1066
|
raise ArgumentsRequired(self.id + ' fetchOrder() requires a symbol argument')
|
1051
1067
|
self.load_markets()
|
1052
1068
|
market = self.market(symbol)
|
1053
|
-
request = {
|
1069
|
+
request: dict = {
|
1054
1070
|
'market_id': market['id'],
|
1055
1071
|
}
|
1056
1072
|
clientOrderId = self.safe_string_2(params, 'clientOrderId', 'client_order_id')
|
@@ -1061,18 +1077,18 @@ class probit(Exchange, ImplicitAPI):
|
|
1061
1077
|
query = self.omit(params, ['clientOrderId', 'client_order_id'])
|
1062
1078
|
response = self.privateGetOrder(self.extend(request, query))
|
1063
1079
|
data = self.safe_value(response, 'data', [])
|
1064
|
-
order = self.
|
1080
|
+
order = self.safe_dict(data, 0)
|
1065
1081
|
return self.parse_order(order, market)
|
1066
1082
|
|
1067
|
-
def parse_order_status(self, status):
|
1068
|
-
statuses = {
|
1083
|
+
def parse_order_status(self, status: Str):
|
1084
|
+
statuses: dict = {
|
1069
1085
|
'open': 'open',
|
1070
1086
|
'cancelled': 'canceled',
|
1071
1087
|
'filled': 'closed',
|
1072
1088
|
}
|
1073
1089
|
return self.safe_string(statuses, status, status)
|
1074
1090
|
|
1075
|
-
def parse_order(self, order, market: Market = None) -> Order:
|
1091
|
+
def parse_order(self, order: dict, market: Market = None) -> Order:
|
1076
1092
|
#
|
1077
1093
|
# {
|
1078
1094
|
# id,
|
@@ -1124,7 +1140,6 @@ class probit(Exchange, ImplicitAPI):
|
|
1124
1140
|
'side': side,
|
1125
1141
|
'status': status,
|
1126
1142
|
'price': price,
|
1127
|
-
'stopPrice': None,
|
1128
1143
|
'triggerPrice': None,
|
1129
1144
|
'amount': amount,
|
1130
1145
|
'filled': filled,
|
@@ -1141,12 +1156,14 @@ class probit(Exchange, ImplicitAPI):
|
|
1141
1156
|
def create_order(self, symbol: str, type: OrderType, side: OrderSide, amount: float, price: Num = None, params={}):
|
1142
1157
|
"""
|
1143
1158
|
create a trade order
|
1144
|
-
|
1159
|
+
|
1160
|
+
https://docs-en.probit.com/reference/order-1
|
1161
|
+
|
1145
1162
|
:param str symbol: unified symbol of the market to create an order in
|
1146
1163
|
:param str type: 'market' or 'limit'
|
1147
1164
|
:param str side: 'buy' or 'sell'
|
1148
1165
|
:param float amount: how much you want to trade in units of the base currency
|
1149
|
-
:param float [price]: the price at which the order is to be
|
1166
|
+
:param float [price]: the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
|
1150
1167
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1151
1168
|
:param float [params.cost]: the quote quantity that can be used alternative for the amount for market buy orders
|
1152
1169
|
:returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
|
@@ -1156,7 +1173,7 @@ class probit(Exchange, ImplicitAPI):
|
|
1156
1173
|
options = self.safe_value(self.options, 'timeInForce')
|
1157
1174
|
defaultTimeInForce = self.safe_value(options, type)
|
1158
1175
|
timeInForce = self.safe_string_2(params, 'timeInForce', 'time_in_force', defaultTimeInForce)
|
1159
|
-
request = {
|
1176
|
+
request: dict = {
|
1160
1177
|
'market_id': market['id'],
|
1161
1178
|
'type': type,
|
1162
1179
|
'side': side,
|
@@ -1226,7 +1243,9 @@ class probit(Exchange, ImplicitAPI):
|
|
1226
1243
|
|
1227
1244
|
def cancel_order(self, id: str, symbol: Str = None, params={}):
|
1228
1245
|
"""
|
1229
|
-
|
1246
|
+
|
1247
|
+
https://docs-en.probit.com/reference/order-2
|
1248
|
+
|
1230
1249
|
cancels an open order
|
1231
1250
|
:param str id: order id
|
1232
1251
|
:param str symbol: unified symbol of the market the order was made in
|
@@ -1237,15 +1256,15 @@ class probit(Exchange, ImplicitAPI):
|
|
1237
1256
|
raise ArgumentsRequired(self.id + ' cancelOrder() requires a symbol argument')
|
1238
1257
|
self.load_markets()
|
1239
1258
|
market = self.market(symbol)
|
1240
|
-
request = {
|
1259
|
+
request: dict = {
|
1241
1260
|
'market_id': market['id'],
|
1242
1261
|
'order_id': id,
|
1243
1262
|
}
|
1244
1263
|
response = self.privatePostCancelOrder(self.extend(request, params))
|
1245
|
-
data = self.
|
1264
|
+
data = self.safe_dict(response, 'data')
|
1246
1265
|
return self.parse_order(data)
|
1247
1266
|
|
1248
|
-
def parse_deposit_address(self, depositAddress, currency: Currency = None):
|
1267
|
+
def parse_deposit_address(self, depositAddress, currency: Currency = None) -> DepositAddress:
|
1249
1268
|
address = self.safe_string(depositAddress, 'address')
|
1250
1269
|
tag = self.safe_string(depositAddress, 'destination_tag')
|
1251
1270
|
currencyId = self.safe_string(depositAddress, 'currency_id')
|
@@ -1254,16 +1273,18 @@ class probit(Exchange, ImplicitAPI):
|
|
1254
1273
|
network = self.safe_string(depositAddress, 'platform_id')
|
1255
1274
|
self.check_address(address)
|
1256
1275
|
return {
|
1276
|
+
'info': depositAddress,
|
1257
1277
|
'currency': code,
|
1278
|
+
'network': network,
|
1258
1279
|
'address': address,
|
1259
1280
|
'tag': tag,
|
1260
|
-
'network': network,
|
1261
|
-
'info': depositAddress,
|
1262
1281
|
}
|
1263
1282
|
|
1264
|
-
def fetch_deposit_address(self, code: str, params={}):
|
1283
|
+
def fetch_deposit_address(self, code: str, params={}) -> DepositAddress:
|
1265
1284
|
"""
|
1266
|
-
|
1285
|
+
|
1286
|
+
https://docs-en.probit.com/reference/deposit_address
|
1287
|
+
|
1267
1288
|
fetch the deposit address for a currency associated with self account
|
1268
1289
|
:param str code: unified currency code
|
1269
1290
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
@@ -1271,7 +1292,7 @@ class probit(Exchange, ImplicitAPI):
|
|
1271
1292
|
"""
|
1272
1293
|
self.load_markets()
|
1273
1294
|
currency = self.currency(code)
|
1274
|
-
request = {
|
1295
|
+
request: dict = {
|
1275
1296
|
'currency_id': currency['id'],
|
1276
1297
|
# 'platform_id': 'TRON',(undocumented)
|
1277
1298
|
}
|
@@ -1311,16 +1332,18 @@ class probit(Exchange, ImplicitAPI):
|
|
1311
1332
|
raise InvalidAddress(self.id + ' fetchDepositAddress() returned an empty response')
|
1312
1333
|
return self.parse_deposit_address(firstAddress, currency)
|
1313
1334
|
|
1314
|
-
def fetch_deposit_addresses(self, codes:
|
1335
|
+
def fetch_deposit_addresses(self, codes: Strings = None, params={}) -> List[DepositAddress]:
|
1315
1336
|
"""
|
1316
|
-
|
1337
|
+
|
1338
|
+
https://docs-en.probit.com/reference/deposit_address
|
1339
|
+
|
1317
1340
|
fetch deposit addresses for multiple currencies and chain types
|
1318
1341
|
:param str[]|None codes: list of unified currency codes, default is None
|
1319
1342
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1320
1343
|
:returns dict: a list of `address structures <https://docs.ccxt.com/#/?id=address-structure>`
|
1321
1344
|
"""
|
1322
1345
|
self.load_markets()
|
1323
|
-
request = {}
|
1346
|
+
request: dict = {}
|
1324
1347
|
if codes:
|
1325
1348
|
currencyIds = []
|
1326
1349
|
for i in range(0, len(codes)):
|
@@ -1328,12 +1351,14 @@ class probit(Exchange, ImplicitAPI):
|
|
1328
1351
|
currencyIds.append(currency['id'])
|
1329
1352
|
request['currency_id'] = ','.join(codes)
|
1330
1353
|
response = self.privateGetDepositAddress(self.extend(request, params))
|
1331
|
-
data = self.
|
1354
|
+
data = self.safe_list(response, 'data', [])
|
1332
1355
|
return self.parse_deposit_addresses(data, codes)
|
1333
1356
|
|
1334
|
-
def withdraw(self, code: str, amount: float, address, tag=None, params={}):
|
1357
|
+
def withdraw(self, code: str, amount: float, address: str, tag=None, params={}) -> Transaction:
|
1335
1358
|
"""
|
1336
|
-
|
1359
|
+
|
1360
|
+
https://docs-en.probit.com/reference/withdrawal
|
1361
|
+
|
1337
1362
|
make a withdrawal
|
1338
1363
|
:param str code: unified currency code
|
1339
1364
|
:param float amount: the amount to withdraw
|
@@ -1352,7 +1377,7 @@ class probit(Exchange, ImplicitAPI):
|
|
1352
1377
|
currency = self.currency(code)
|
1353
1378
|
if tag is None:
|
1354
1379
|
tag = ''
|
1355
|
-
request = {
|
1380
|
+
request: dict = {
|
1356
1381
|
'currency_id': currency['id'],
|
1357
1382
|
# 'platform_id': 'ETH', # if omitted it will use the default platform for the currency
|
1358
1383
|
'address': address,
|
@@ -1371,7 +1396,7 @@ class probit(Exchange, ImplicitAPI):
|
|
1371
1396
|
request['platform_id'] = network
|
1372
1397
|
params = self.omit(params, 'network')
|
1373
1398
|
response = self.privatePostWithdrawal(self.extend(request, params))
|
1374
|
-
data = self.
|
1399
|
+
data = self.safe_dict(response, 'data')
|
1375
1400
|
return self.parse_transaction(data, currency)
|
1376
1401
|
|
1377
1402
|
def fetch_deposits(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
|
@@ -1383,7 +1408,7 @@ class probit(Exchange, ImplicitAPI):
|
|
1383
1408
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1384
1409
|
:returns dict[]: a list of `transaction structures <https://docs.ccxt.com/#/?id=transaction-structure>`
|
1385
1410
|
"""
|
1386
|
-
request = {
|
1411
|
+
request: dict = {
|
1387
1412
|
'type': 'deposit',
|
1388
1413
|
}
|
1389
1414
|
result = self.fetch_transactions(code, since, limit, self.extend(request, params))
|
@@ -1398,27 +1423,28 @@ class probit(Exchange, ImplicitAPI):
|
|
1398
1423
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1399
1424
|
:returns dict[]: a list of `transaction structures <https://docs.ccxt.com/#/?id=transaction-structure>`
|
1400
1425
|
"""
|
1401
|
-
request = {
|
1426
|
+
request: dict = {
|
1402
1427
|
'type': 'withdrawal',
|
1403
1428
|
}
|
1404
1429
|
result = self.fetch_transactions(code, since, limit, self.extend(request, params))
|
1405
1430
|
return result
|
1406
1431
|
|
1407
|
-
def
|
1432
|
+
def fetch_deposits_withdrawals(self, code: Str = None, since: Int = None, limit: Int = None, params={}):
|
1408
1433
|
"""
|
1409
|
-
|
1410
|
-
|
1411
|
-
|
1434
|
+
fetch history of deposits and withdrawals
|
1435
|
+
|
1436
|
+
https://docs-en.probit.com/reference/transferpayment
|
1437
|
+
|
1412
1438
|
:param str code: unified currency code
|
1413
1439
|
:param int [since]: the earliest time in ms to fetch transactions for
|
1414
1440
|
:param int [limit]: the maximum number of transaction structures to retrieve
|
1415
|
-
:param int [params.until]: the latest time in ms to fetch transactions for
|
1416
1441
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1442
|
+
:param int [params.until]: the latest time in ms to fetch transactions for
|
1417
1443
|
:returns dict[]: a list of `transaction structures <https://docs.ccxt.com/#/?id=transaction-structure>`
|
1418
1444
|
"""
|
1419
1445
|
self.load_markets()
|
1420
1446
|
currency: Currency = None
|
1421
|
-
request = {}
|
1447
|
+
request: dict = {}
|
1422
1448
|
if code is not None:
|
1423
1449
|
currency = self.currency(code)
|
1424
1450
|
request['currency_id'] = currency['id']
|
@@ -1426,10 +1452,10 @@ class probit(Exchange, ImplicitAPI):
|
|
1426
1452
|
request['start_time'] = self.iso8601(since)
|
1427
1453
|
else:
|
1428
1454
|
request['start_time'] = self.iso8601(1)
|
1429
|
-
until = self.
|
1455
|
+
until = self.safe_integer(params, 'until')
|
1430
1456
|
if until is not None:
|
1431
1457
|
request['end_time'] = self.iso8601(until)
|
1432
|
-
params = self.omit(params, ['until'
|
1458
|
+
params = self.omit(params, ['until'])
|
1433
1459
|
else:
|
1434
1460
|
request['end_time'] = self.iso8601(self.milliseconds())
|
1435
1461
|
if limit is not None:
|
@@ -1464,7 +1490,7 @@ class probit(Exchange, ImplicitAPI):
|
|
1464
1490
|
data = self.safe_list(response, 'data', [])
|
1465
1491
|
return self.parse_transactions(data, currency, since, limit)
|
1466
1492
|
|
1467
|
-
def parse_transaction(self, transaction, currency: Currency = None) -> Transaction:
|
1493
|
+
def parse_transaction(self, transaction: dict, currency: Currency = None) -> Transaction:
|
1468
1494
|
#
|
1469
1495
|
# {
|
1470
1496
|
# "id": "01211d4b-0e68-41d6-97cb-298bfe2cab67",
|
@@ -1527,8 +1553,8 @@ class probit(Exchange, ImplicitAPI):
|
|
1527
1553
|
'info': transaction,
|
1528
1554
|
}
|
1529
1555
|
|
1530
|
-
def parse_transaction_status(self, status):
|
1531
|
-
statuses = {
|
1556
|
+
def parse_transaction_status(self, status: Str):
|
1557
|
+
statuses: dict = {
|
1532
1558
|
'requested': 'pending',
|
1533
1559
|
'pending': 'pending',
|
1534
1560
|
'confirming': 'pending',
|
@@ -1542,7 +1568,9 @@ class probit(Exchange, ImplicitAPI):
|
|
1542
1568
|
|
1543
1569
|
def fetch_deposit_withdraw_fees(self, codes: Strings = None, params={}):
|
1544
1570
|
"""
|
1545
|
-
|
1571
|
+
|
1572
|
+
https://docs-en.probit.com/reference/currency
|
1573
|
+
|
1546
1574
|
fetch deposit and withdraw fees
|
1547
1575
|
:param str[]|None codes: list of unified currency codes
|
1548
1576
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
@@ -1605,7 +1633,7 @@ class probit(Exchange, ImplicitAPI):
|
|
1605
1633
|
# ]
|
1606
1634
|
# }
|
1607
1635
|
#
|
1608
|
-
data = self.
|
1636
|
+
data = self.safe_list(response, 'data')
|
1609
1637
|
return self.parse_deposit_withdraw_fees(data, codes, 'id')
|
1610
1638
|
|
1611
1639
|
def parse_deposit_withdraw_fee(self, fee, currency: Currency = None):
|
@@ -1645,7 +1673,7 @@ class probit(Exchange, ImplicitAPI):
|
|
1645
1673
|
#
|
1646
1674
|
depositWithdrawFee = self.deposit_withdraw_fee({})
|
1647
1675
|
platforms = self.safe_value(fee, 'platform', [])
|
1648
|
-
depositResult = {
|
1676
|
+
depositResult: dict = {
|
1649
1677
|
'fee': None,
|
1650
1678
|
'percentage': None,
|
1651
1679
|
}
|
@@ -1656,7 +1684,7 @@ class probit(Exchange, ImplicitAPI):
|
|
1656
1684
|
withdrawalFees = self.safe_value(network, 'withdrawal_fee', {})
|
1657
1685
|
withdrawFee = self.safe_number(withdrawalFees[0], 'amount')
|
1658
1686
|
if len(withdrawalFees):
|
1659
|
-
withdrawResult = {
|
1687
|
+
withdrawResult: dict = {
|
1660
1688
|
'fee': withdrawFee,
|
1661
1689
|
'percentage': False if (withdrawFee is not None) else None,
|
1662
1690
|
}
|
@@ -1713,13 +1741,15 @@ class probit(Exchange, ImplicitAPI):
|
|
1713
1741
|
|
1714
1742
|
def sign_in(self, params={}):
|
1715
1743
|
"""
|
1716
|
-
|
1744
|
+
|
1745
|
+
https://docs-en.probit.com/reference/token
|
1746
|
+
|
1717
1747
|
sign in, must be called prior to using other authenticated methods
|
1718
1748
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1719
1749
|
:returns: response from exchange
|
1720
1750
|
"""
|
1721
1751
|
self.check_required_credentials()
|
1722
|
-
request = {
|
1752
|
+
request: dict = {
|
1723
1753
|
'grant_type': 'client_credentials', # the only supported value
|
1724
1754
|
}
|
1725
1755
|
response = self.accountsPostToken(self.extend(request, params))
|
@@ -1736,15 +1766,18 @@ class probit(Exchange, ImplicitAPI):
|
|
1736
1766
|
self.options['expires'] = self.sum(self.milliseconds(), expiresIn * 1000)
|
1737
1767
|
return response
|
1738
1768
|
|
1739
|
-
def handle_errors(self, code, reason, url, method, headers, body, response, requestHeaders, requestBody):
|
1769
|
+
def handle_errors(self, code: int, reason: str, url: str, method: str, headers: dict, body: str, response, requestHeaders, requestBody):
|
1740
1770
|
if response is None:
|
1741
1771
|
return None # fallback to default error handler
|
1742
1772
|
if 'errorCode' in response:
|
1743
1773
|
errorCode = self.safe_string(response, 'errorCode')
|
1744
|
-
message = self.safe_string(response, 'message')
|
1745
1774
|
if errorCode is not None:
|
1746
|
-
|
1747
|
-
self.
|
1748
|
-
self.
|
1775
|
+
errMessage = self.safe_string(response, 'message', '')
|
1776
|
+
details = self.safe_value(response, 'details')
|
1777
|
+
feedback = self.id + ' ' + errorCode + ' ' + errMessage + ' ' + self.json(details)
|
1778
|
+
if 'exact' in self.exceptions:
|
1779
|
+
self.throw_exactly_matched_exception(self.exceptions['exact'], errorCode, feedback)
|
1780
|
+
if 'broad' in self.exceptions:
|
1781
|
+
self.throw_broadly_matched_exception(self.exceptions['broad'], errMessage, feedback)
|
1749
1782
|
raise ExchangeError(feedback)
|
1750
1783
|
return None
|