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/pro/probit.py
CHANGED
@@ -22,6 +22,7 @@ class probit(ccxt.async_support.probit):
|
|
22
22
|
'watchTicker': True,
|
23
23
|
'watchTickers': False,
|
24
24
|
'watchTrades': True,
|
25
|
+
'watchTradesForSymbols': False,
|
25
26
|
'watchMyTrades': True,
|
26
27
|
'watchOrders': True,
|
27
28
|
'watchOrderBook': True,
|
@@ -40,38 +41,23 @@ class probit(ccxt.async_support.probit):
|
|
40
41
|
'filter': 'order_books_l2',
|
41
42
|
'interval': 100, # or 500
|
42
43
|
},
|
43
|
-
'watchTrades': {
|
44
|
-
'filter': 'recent_trades',
|
45
|
-
},
|
46
|
-
'watchTicker': {
|
47
|
-
'filter': 'ticker',
|
48
|
-
},
|
49
|
-
'watchOrders': {
|
50
|
-
'channel': 'open_order',
|
51
|
-
},
|
52
44
|
},
|
53
45
|
'streaming': {
|
54
46
|
},
|
55
|
-
'exceptions': {
|
56
|
-
},
|
57
47
|
})
|
58
48
|
|
59
49
|
async def watch_balance(self, params={}) -> Balances:
|
60
50
|
"""
|
61
51
|
watch balance and get the amount of funds available for trading or funds locked in orders
|
62
|
-
|
52
|
+
|
53
|
+
https://docs-en.probit.com/reference/balance-1
|
54
|
+
|
63
55
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
64
56
|
:returns dict: a `balance structure <https://docs.ccxt.com/#/?id=balance-structure>`
|
65
57
|
"""
|
66
58
|
await self.authenticate(params)
|
67
59
|
messageHash = 'balance'
|
68
|
-
|
69
|
-
subscribe = {
|
70
|
-
'type': 'subscribe',
|
71
|
-
'channel': 'balance',
|
72
|
-
}
|
73
|
-
request = self.extend(subscribe, params)
|
74
|
-
return await self.watch(url, messageHash, request, messageHash)
|
60
|
+
return await self.subscribe_private(messageHash, 'balance', params)
|
75
61
|
|
76
62
|
def handle_balance(self, client: Client, message):
|
77
63
|
#
|
@@ -121,15 +107,16 @@ class probit(ccxt.async_support.probit):
|
|
121
107
|
async def watch_ticker(self, symbol: str, params={}) -> Ticker:
|
122
108
|
"""
|
123
109
|
watches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
|
124
|
-
|
110
|
+
|
111
|
+
https://docs-en.probit.com/reference/marketdata
|
112
|
+
|
125
113
|
:param str symbol: unified symbol of the market to fetch the ticker for
|
126
114
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
127
115
|
:param int [params.interval]: Unit time to synchronize market information(ms). Available units: 100, 500
|
128
116
|
:returns dict: a `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`
|
129
117
|
"""
|
130
|
-
|
131
|
-
|
132
|
-
return await self.subscribe_order_book(symbol, 'ticker', filter, params)
|
118
|
+
channel = 'ticker'
|
119
|
+
return await self.subscribe_public('watchTicker', symbol, 'ticker', channel, params)
|
133
120
|
|
134
121
|
def handle_ticker(self, client: Client, message):
|
135
122
|
#
|
@@ -162,7 +149,9 @@ class probit(ccxt.async_support.probit):
|
|
162
149
|
async def watch_trades(self, symbol: str, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
|
163
150
|
"""
|
164
151
|
get the list of most recent trades for a particular symbol
|
165
|
-
|
152
|
+
|
153
|
+
https://docs-en.probit.com/reference/trade_history
|
154
|
+
|
166
155
|
:param str symbol: unified symbol of the market to fetch trades for
|
167
156
|
:param int [since]: timestamp in ms of the earliest trade to fetch
|
168
157
|
:param int [limit]: the maximum amount of trades to fetch
|
@@ -170,9 +159,9 @@ class probit(ccxt.async_support.probit):
|
|
170
159
|
:param int [params.interval]: Unit time to synchronize market information(ms). Available units: 100, 500
|
171
160
|
:returns dict[]: a list of `trade structures <https://docs.ccxt.com/#/?id=public-trades>`
|
172
161
|
"""
|
173
|
-
|
174
|
-
|
175
|
-
trades = await self.
|
162
|
+
channel = 'recent_trades'
|
163
|
+
symbol = self.safe_symbol(symbol)
|
164
|
+
trades = await self.subscribe_public('watchTrades', symbol, 'trades', channel, params)
|
176
165
|
if self.newUpdates:
|
177
166
|
limit = trades.getLimit(symbol, limit)
|
178
167
|
return self.filter_by_symbol_since_limit(trades, symbol, since, limit, True)
|
@@ -202,10 +191,11 @@ class probit(ccxt.async_support.probit):
|
|
202
191
|
symbol = self.safe_symbol(marketId)
|
203
192
|
market = self.safe_market(marketId)
|
204
193
|
trades = self.safe_value(message, 'recent_trades', [])
|
205
|
-
|
194
|
+
if self.safe_bool(message, 'reset', False):
|
195
|
+
return # see comment in handleMessage
|
206
196
|
messageHash = 'trades:' + symbol
|
207
197
|
stored = self.safe_value(self.trades, symbol)
|
208
|
-
if stored is None
|
198
|
+
if stored is None:
|
209
199
|
limit = self.safe_integer(self.options, 'tradesLimit', 1000)
|
210
200
|
stored = ArrayCache(limit)
|
211
201
|
self.trades[symbol] = stored
|
@@ -219,6 +209,9 @@ class probit(ccxt.async_support.probit):
|
|
219
209
|
async def watch_my_trades(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
|
220
210
|
"""
|
221
211
|
get the list of trades associated with the user
|
212
|
+
|
213
|
+
https://docs-en.probit.com/reference/trade_history
|
214
|
+
|
222
215
|
:param str symbol: unified symbol of the market to fetch trades for
|
223
216
|
:param int [since]: timestamp in ms of the earliest trade to fetch
|
224
217
|
:param int [limit]: the maximum amount of trades to fetch
|
@@ -227,19 +220,11 @@ class probit(ccxt.async_support.probit):
|
|
227
220
|
"""
|
228
221
|
await self.load_markets()
|
229
222
|
await self.authenticate(params)
|
230
|
-
messageHash = '
|
223
|
+
messageHash = 'trades'
|
231
224
|
if symbol is not None:
|
232
|
-
|
233
|
-
symbol = market['symbol']
|
225
|
+
symbol = self.safe_symbol(symbol)
|
234
226
|
messageHash = messageHash + ':' + symbol
|
235
|
-
|
236
|
-
channel = 'trade_history'
|
237
|
-
message = {
|
238
|
-
'type': 'subscribe',
|
239
|
-
'channel': channel,
|
240
|
-
}
|
241
|
-
request = self.extend(message, params)
|
242
|
-
trades = await self.watch(url, messageHash, request, channel)
|
227
|
+
trades = await self.subscribe_private(messageHash, 'trade_history', params)
|
243
228
|
if self.newUpdates:
|
244
229
|
limit = trades.getLimit(symbol, limit)
|
245
230
|
return self.filter_by_symbol_since_limit(trades, symbol, since, limit, True)
|
@@ -268,20 +253,27 @@ class probit(ccxt.async_support.probit):
|
|
268
253
|
length = len(rawTrades)
|
269
254
|
if length == 0:
|
270
255
|
return
|
271
|
-
|
272
|
-
|
256
|
+
if self.safe_bool(message, 'reset', False):
|
257
|
+
return # see comment in handleMessage
|
258
|
+
messageHash = 'trades'
|
273
259
|
stored = self.myTrades
|
274
|
-
if
|
260
|
+
if stored is None:
|
275
261
|
limit = self.safe_integer(self.options, 'tradesLimit', 1000)
|
276
262
|
stored = ArrayCacheBySymbolById(limit)
|
277
263
|
self.myTrades = stored
|
278
264
|
trades = self.parse_trades(rawTrades)
|
279
|
-
tradeSymbols = {}
|
265
|
+
tradeSymbols: dict = {}
|
280
266
|
for j in range(0, len(trades)):
|
281
267
|
trade = trades[j]
|
268
|
+
# don't include 'executed' state, because it's just blanket state of the trade, emited before actual trade event
|
269
|
+
if self.safe_string(trade['info'], 'status') == 'executed':
|
270
|
+
continue
|
282
271
|
tradeSymbols[trade['symbol']] = True
|
283
272
|
stored.append(trade)
|
284
273
|
unique = list(tradeSymbols.keys())
|
274
|
+
uniqueLength = len(unique)
|
275
|
+
if uniqueLength == 0:
|
276
|
+
return
|
285
277
|
for i in range(0, len(unique)):
|
286
278
|
symbol = unique[i]
|
287
279
|
symbolSpecificMessageHash = messageHash + ':' + symbol
|
@@ -291,7 +283,9 @@ class probit(ccxt.async_support.probit):
|
|
291
283
|
async def watch_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
|
292
284
|
"""
|
293
285
|
watches information on an order made by the user
|
294
|
-
|
286
|
+
|
287
|
+
https://docs-en.probit.com/reference/open_order
|
288
|
+
|
295
289
|
:param str symbol: unified symbol of the market the order was made in
|
296
290
|
:param int [since]: timestamp in ms of the earliest order to watch
|
297
291
|
:param int [limit]: the maximum amount of orders to watch
|
@@ -300,20 +294,11 @@ class probit(ccxt.async_support.probit):
|
|
300
294
|
:returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
|
301
295
|
"""
|
302
296
|
await self.authenticate(params)
|
303
|
-
url = self.urls['api']['ws']
|
304
297
|
messageHash = 'orders'
|
305
298
|
if symbol is not None:
|
306
|
-
|
307
|
-
symbol = market['symbol']
|
299
|
+
symbol = self.safe_symbol(symbol)
|
308
300
|
messageHash = messageHash + ':' + symbol
|
309
|
-
|
310
|
-
channel, params = self.handle_option_and_params(params, 'watchOrders', 'channel', 'open_order')
|
311
|
-
subscribe = {
|
312
|
-
'type': 'subscribe',
|
313
|
-
'channel': channel,
|
314
|
-
}
|
315
|
-
request = self.extend(subscribe, params)
|
316
|
-
orders = await self.watch(url, messageHash, request, channel)
|
301
|
+
orders = await self.subscribe_private(messageHash, 'open_order', params)
|
317
302
|
if self.newUpdates:
|
318
303
|
limit = orders.getLimit(symbol, limit)
|
319
304
|
return self.filter_by_symbol_since_limit(orders, symbol, since, limit, True)
|
@@ -354,7 +339,7 @@ class probit(ccxt.async_support.probit):
|
|
354
339
|
limit = self.safe_integer(self.options, 'ordersLimit', 1000)
|
355
340
|
stored = ArrayCacheBySymbolById(limit)
|
356
341
|
self.orders = stored
|
357
|
-
orderSymbols = {}
|
342
|
+
orderSymbols: dict = {}
|
358
343
|
for i in range(0, len(rawOrders)):
|
359
344
|
rawOrder = rawOrders[i]
|
360
345
|
order = self.parse_order(rawOrder)
|
@@ -370,45 +355,57 @@ class probit(ccxt.async_support.probit):
|
|
370
355
|
async def watch_order_book(self, symbol: str, limit: Int = None, params={}) -> OrderBook:
|
371
356
|
"""
|
372
357
|
watches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
|
373
|
-
|
358
|
+
|
359
|
+
https://docs-en.probit.com/reference/marketdata
|
360
|
+
|
374
361
|
:param str symbol: unified symbol of the market to fetch the order book for
|
375
362
|
:param int [limit]: the maximum amount of order book entries to return
|
376
363
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
377
364
|
:returns dict: A dictionary of `order book structures <https://docs.ccxt.com/#/?id=order-book-structure>` indexed by market symbols
|
378
365
|
"""
|
379
|
-
|
380
|
-
|
381
|
-
orderbook = await self.
|
366
|
+
channel = None
|
367
|
+
channel, params = self.handle_option_and_params(params, 'watchOrderBook', 'filter', 'order_books')
|
368
|
+
orderbook = await self.subscribe_public('watchOrderBook', symbol, 'orderbook', channel, params)
|
382
369
|
return orderbook.limit()
|
383
370
|
|
384
|
-
async def
|
371
|
+
async def subscribe_private(self, messageHash, channel, params):
|
372
|
+
url = self.urls['api']['ws']
|
373
|
+
subscribe: dict = {
|
374
|
+
'type': 'subscribe',
|
375
|
+
'channel': channel,
|
376
|
+
}
|
377
|
+
request = self.extend(subscribe, params)
|
378
|
+
subscribeHash = messageHash
|
379
|
+
return await self.watch(url, messageHash, request, subscribeHash)
|
380
|
+
|
381
|
+
async def subscribe_public(self, methodName: str, symbol: str, dataType, filter, params={}):
|
385
382
|
await self.load_markets()
|
386
383
|
market = self.market(symbol)
|
387
384
|
symbol = market['symbol']
|
388
385
|
url = self.urls['api']['ws']
|
389
386
|
client = self.client(url)
|
390
|
-
|
391
|
-
|
392
|
-
subscriptionHash = 'marketdata:' + symbol
|
393
|
-
messageHash = messageHash + ':' + symbol
|
387
|
+
subscribeHash = 'marketdata:' + symbol
|
388
|
+
messageHash = dataType + ':' + symbol
|
394
389
|
filters = {}
|
395
|
-
if
|
390
|
+
if subscribeHash in client.subscriptions:
|
396
391
|
# already subscribed
|
397
|
-
filters = client.subscriptions[
|
392
|
+
filters = client.subscriptions[subscribeHash]
|
398
393
|
if not (filter in filters):
|
399
394
|
# resubscribe
|
400
|
-
del client.subscriptions[
|
395
|
+
del client.subscriptions[subscribeHash]
|
401
396
|
filters[filter] = True
|
402
397
|
keys = list(filters.keys())
|
403
|
-
|
398
|
+
interval = None
|
399
|
+
interval, params = self.handle_option_and_params(params, methodName, 'interval', 100)
|
400
|
+
request: dict = {
|
401
|
+
'type': 'subscribe',
|
404
402
|
'channel': 'marketdata',
|
405
|
-
'interval': interval,
|
406
403
|
'market_id': market['id'],
|
407
|
-
'type': 'subscribe',
|
408
404
|
'filter': keys,
|
405
|
+
'interval': interval,
|
409
406
|
}
|
410
|
-
request = self.extend(
|
411
|
-
return await self.watch(url, messageHash, request,
|
407
|
+
request = self.extend(request, params)
|
408
|
+
return await self.watch(url, messageHash, request, subscribeHash, filters)
|
412
409
|
|
413
410
|
def handle_order_book(self, client: Client, message, orderBook):
|
414
411
|
#
|
@@ -428,10 +425,10 @@ class probit(ccxt.async_support.probit):
|
|
428
425
|
symbol = self.safe_symbol(marketId)
|
429
426
|
dataBySide = self.group_by(orderBook, 'side')
|
430
427
|
messageHash = 'orderbook:' + symbol
|
431
|
-
orderbook = self.safe_value(self.orderbooks, symbol)
|
432
|
-
if
|
433
|
-
|
434
|
-
|
428
|
+
# orderbook = self.safe_value(self.orderbooks, symbol)
|
429
|
+
if not (symbol in self.orderbooks):
|
430
|
+
self.orderbooks[symbol] = self.order_book({})
|
431
|
+
orderbook = self.orderbooks[symbol]
|
435
432
|
reset = self.safe_bool(message, 'reset', False)
|
436
433
|
if reset:
|
437
434
|
snapshot = self.parse_order_book(dataBySide, symbol, None, 'buy', 'sell', 'price', 'quantity')
|
@@ -467,8 +464,12 @@ class probit(ccxt.async_support.probit):
|
|
467
464
|
code = self.safe_string(message, 'errorCode')
|
468
465
|
errMessage = self.safe_string(message, 'message', '')
|
469
466
|
details = self.safe_value(message, 'details')
|
470
|
-
|
471
|
-
|
467
|
+
feedback = self.id + ' ' + code + ' ' + errMessage + ' ' + self.json(details)
|
468
|
+
if 'exact' in self.exceptions:
|
469
|
+
self.throw_exactly_matched_exception(self.exceptions['exact'], code, feedback)
|
470
|
+
if 'broad' in self.exceptions:
|
471
|
+
self.throw_broadly_matched_exception(self.exceptions['broad'], errMessage, feedback)
|
472
|
+
raise ExchangeError(feedback)
|
472
473
|
|
473
474
|
def handle_authenticate(self, client: Client, message):
|
474
475
|
#
|
@@ -477,7 +478,8 @@ class probit(ccxt.async_support.probit):
|
|
477
478
|
result = self.safe_string(message, 'result')
|
478
479
|
future = client.subscriptions['authenticated']
|
479
480
|
if result == 'ok':
|
480
|
-
|
481
|
+
messageHash = 'authenticated'
|
482
|
+
client.resolve(message, messageHash)
|
481
483
|
else:
|
482
484
|
future.reject(message)
|
483
485
|
del client.subscriptions['authenticated']
|
@@ -487,10 +489,12 @@ class probit(ccxt.async_support.probit):
|
|
487
489
|
if ticker is not None:
|
488
490
|
self.handle_ticker(client, message)
|
489
491
|
trades = self.safe_value(message, 'recent_trades', [])
|
490
|
-
|
492
|
+
tradesLength = len(trades)
|
493
|
+
if tradesLength:
|
491
494
|
self.handle_trades(client, message)
|
492
495
|
orderBook = self.safe_value_n(message, ['order_books', 'order_books_l1', 'order_books_l2', 'order_books_l3', 'order_books_l4'], [])
|
493
|
-
|
496
|
+
orderBookLength = len(orderBook)
|
497
|
+
if orderBookLength:
|
494
498
|
self.handle_order_book(client, message, orderBook)
|
495
499
|
|
496
500
|
def handle_message(self, client: Client, message):
|
@@ -503,6 +507,9 @@ class probit(ccxt.async_support.probit):
|
|
503
507
|
# }
|
504
508
|
# }
|
505
509
|
#
|
510
|
+
# Note about 'reset' field
|
511
|
+
# 'reset': True field - it happens once after initial subscription, which just returns old items by the moment of subscription(like "fetchMyTrades" does)
|
512
|
+
#
|
506
513
|
errorCode = self.safe_string(message, 'errorCode')
|
507
514
|
if errorCode is not None:
|
508
515
|
self.handle_error_message(client, message)
|
@@ -511,7 +518,7 @@ class probit(ccxt.async_support.probit):
|
|
511
518
|
if type == 'authorization':
|
512
519
|
self.handle_authenticate(client, message)
|
513
520
|
return
|
514
|
-
handlers = {
|
521
|
+
handlers: dict = {
|
515
522
|
'marketdata': self.handle_market_data,
|
516
523
|
'balance': self.handle_balance,
|
517
524
|
'trade_history': self.handle_my_trades,
|
@@ -542,7 +549,7 @@ class probit(ccxt.async_support.probit):
|
|
542
549
|
# }
|
543
550
|
#
|
544
551
|
accessToken = self.safe_string(response, 'access_token')
|
545
|
-
request = {
|
552
|
+
request: dict = {
|
546
553
|
'type': 'authorization',
|
547
554
|
'token': accessToken,
|
548
555
|
}
|