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/lbank.py
CHANGED
@@ -26,6 +26,7 @@ class lbank(ccxt.async_support.lbank):
|
|
26
26
|
'watchTicker': True,
|
27
27
|
'watchTickers': False,
|
28
28
|
'watchTrades': True,
|
29
|
+
'watchTradesForSymbols': False,
|
29
30
|
'watchMyTrades': False,
|
30
31
|
'watchOrders': True,
|
31
32
|
'watchOrderBook': True,
|
@@ -66,7 +67,9 @@ class lbank(ccxt.async_support.lbank):
|
|
66
67
|
|
67
68
|
async def fetch_ohlcv_ws(self, symbol: str, timeframe='1m', since: Int = None, limit: Int = None, params={}) -> List[list]:
|
68
69
|
"""
|
69
|
-
|
70
|
+
|
71
|
+
https://www.lbank.com/en-US/docs/index.html#request-amp-subscription-instruction
|
72
|
+
|
70
73
|
watches historical candlestick data containing the open, high, low, and close price, and the volume of a market
|
71
74
|
:param str symbol: unified symbol of the market to fetch OHLCV data for
|
72
75
|
:param str timeframe: the length of time each candle represents
|
@@ -82,7 +85,7 @@ class lbank(ccxt.async_support.lbank):
|
|
82
85
|
timeframes = self.safe_value(watchOHLCVOptions, 'timeframes', {})
|
83
86
|
timeframeId = self.safe_string(timeframes, timeframe, timeframe)
|
84
87
|
messageHash = 'fetchOHLCV:' + market['symbol'] + ':' + timeframeId
|
85
|
-
message = {
|
88
|
+
message: dict = {
|
86
89
|
'action': 'request',
|
87
90
|
'request': 'kbar',
|
88
91
|
'kbar': timeframeId,
|
@@ -98,7 +101,9 @@ class lbank(ccxt.async_support.lbank):
|
|
98
101
|
|
99
102
|
async def watch_ohlcv(self, symbol: str, timeframe='1m', since: Int = None, limit: Int = None, params={}) -> List[list]:
|
100
103
|
"""
|
101
|
-
|
104
|
+
|
105
|
+
https://www.lbank.com/en-US/docs/index.html#subscription-of-k-line-data
|
106
|
+
|
102
107
|
watches historical candlestick data containing the open, high, low, and close price, and the volume of a market
|
103
108
|
:param str symbol: unified symbol of the market to fetch OHLCV data for
|
104
109
|
:param str timeframe: the length of time each candle represents
|
@@ -114,7 +119,7 @@ class lbank(ccxt.async_support.lbank):
|
|
114
119
|
timeframeId = self.safe_string(timeframes, timeframe, timeframe)
|
115
120
|
messageHash = 'ohlcv:' + market['symbol'] + ':' + timeframeId
|
116
121
|
url = self.urls['api']['ws']
|
117
|
-
subscribe = {
|
122
|
+
subscribe: dict = {
|
118
123
|
'action': 'subscribe',
|
119
124
|
'subscribe': 'kbar',
|
120
125
|
'kbar': timeframeId,
|
@@ -227,9 +232,11 @@ class lbank(ccxt.async_support.lbank):
|
|
227
232
|
messageHash = 'ohlcv:' + symbol + ':' + timeframeId
|
228
233
|
client.resolve(stored, messageHash)
|
229
234
|
|
230
|
-
async def fetch_ticker_ws(self, symbol, params={}) -> Ticker:
|
235
|
+
async def fetch_ticker_ws(self, symbol: str, params={}) -> Ticker:
|
231
236
|
"""
|
232
|
-
|
237
|
+
|
238
|
+
https://www.lbank.com/en-US/docs/index.html#request-amp-subscription-instruction
|
239
|
+
|
233
240
|
fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
|
234
241
|
:param str symbol: unified symbol of the market to fetch the ticker for
|
235
242
|
:param dict [params]: extra parameters specific to the cex api endpoint
|
@@ -239,7 +246,7 @@ class lbank(ccxt.async_support.lbank):
|
|
239
246
|
market = self.market(symbol)
|
240
247
|
url = self.urls['api']['ws']
|
241
248
|
messageHash = 'fetchTicker:' + market['symbol']
|
242
|
-
message = {
|
249
|
+
message: dict = {
|
243
250
|
'action': 'request',
|
244
251
|
'request': 'tick',
|
245
252
|
'pair': market['id'],
|
@@ -250,7 +257,9 @@ class lbank(ccxt.async_support.lbank):
|
|
250
257
|
|
251
258
|
async def watch_ticker(self, symbol: str, params={}) -> Ticker:
|
252
259
|
"""
|
253
|
-
|
260
|
+
|
261
|
+
https://www.lbank.com/en-US/docs/index.html#market
|
262
|
+
|
254
263
|
watches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
|
255
264
|
:param str symbol: unified symbol of the market to fetch the ticker for
|
256
265
|
:param dict params: extra parameters specific to the lbank api endpoint
|
@@ -260,7 +269,7 @@ class lbank(ccxt.async_support.lbank):
|
|
260
269
|
market = self.market(symbol)
|
261
270
|
url = self.urls['api']['ws']
|
262
271
|
messageHash = 'ticker:' + market['symbol']
|
263
|
-
message = {
|
272
|
+
message: dict = {
|
264
273
|
'action': 'subscribe',
|
265
274
|
'subscribe': 'tick',
|
266
275
|
'pair': market['id'],
|
@@ -352,7 +361,9 @@ class lbank(ccxt.async_support.lbank):
|
|
352
361
|
async def fetch_trades_ws(self, symbol: str, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
|
353
362
|
"""
|
354
363
|
get the list of most recent trades for a particular symbol
|
355
|
-
|
364
|
+
|
365
|
+
https://www.lbank.com/en-US/docs/index.html#request-amp-subscription-instruction
|
366
|
+
|
356
367
|
:param str symbol: unified symbol of the market to fetch trades for
|
357
368
|
:param int [since]: timestamp in ms of the earliest trade to fetch
|
358
369
|
:param int [limit]: the maximum amount of trades to fetch
|
@@ -365,7 +376,7 @@ class lbank(ccxt.async_support.lbank):
|
|
365
376
|
messageHash = 'fetchTrades:' + market['symbol']
|
366
377
|
if limit is None:
|
367
378
|
limit = 10
|
368
|
-
message = {
|
379
|
+
message: dict = {
|
369
380
|
'action': 'request',
|
370
381
|
'request': 'trade',
|
371
382
|
'pair': market['id'],
|
@@ -377,7 +388,9 @@ class lbank(ccxt.async_support.lbank):
|
|
377
388
|
|
378
389
|
async def watch_trades(self, symbol: str, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
|
379
390
|
"""
|
380
|
-
|
391
|
+
|
392
|
+
https://www.lbank.com/en-US/docs/index.html#trade-record
|
393
|
+
|
381
394
|
get the list of most recent trades for a particular symbol
|
382
395
|
:param str symbol: unified symbol of the market to fetch trades for
|
383
396
|
:param int [since]: timestamp in ms of the earliest trade to fetch
|
@@ -389,7 +402,7 @@ class lbank(ccxt.async_support.lbank):
|
|
389
402
|
market = self.market(symbol)
|
390
403
|
url = self.urls['api']['ws']
|
391
404
|
messageHash = 'trades:' + market['symbol']
|
392
|
-
message = {
|
405
|
+
message: dict = {
|
393
406
|
'action': 'subscribe',
|
394
407
|
'subscribe': 'trade',
|
395
408
|
'pair': market['id'],
|
@@ -482,7 +495,9 @@ class lbank(ccxt.async_support.lbank):
|
|
482
495
|
|
483
496
|
async def watch_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
|
484
497
|
"""
|
485
|
-
|
498
|
+
|
499
|
+
https://www.lbank.com/en-US/docs/index.html#update-subscribed-orders
|
500
|
+
|
486
501
|
get the list of trades associated with the user
|
487
502
|
:param str [symbol]: unified symbol of the market to fetch trades for
|
488
503
|
:param int [since]: timestamp in ms of the earliest trade to fetch
|
@@ -502,7 +517,7 @@ class lbank(ccxt.async_support.lbank):
|
|
502
517
|
symbol = self.symbol(symbol)
|
503
518
|
messageHash = 'orders:' + market['symbol']
|
504
519
|
pair = market['id']
|
505
|
-
message = {
|
520
|
+
message: dict = {
|
506
521
|
'action': 'subscribe',
|
507
522
|
'subscribe': 'orderUpdate',
|
508
523
|
'subscribeKey': key,
|
@@ -628,7 +643,7 @@ class lbank(ccxt.async_support.lbank):
|
|
628
643
|
}, market)
|
629
644
|
|
630
645
|
def parse_ws_order_status(self, status):
|
631
|
-
statuses = {
|
646
|
+
statuses: dict = {
|
632
647
|
'-1': 'canceled', # Withdrawn
|
633
648
|
'0': 'open', # Unsettled
|
634
649
|
'1': 'open', # Partial sale
|
@@ -639,7 +654,9 @@ class lbank(ccxt.async_support.lbank):
|
|
639
654
|
|
640
655
|
async def fetch_order_book_ws(self, symbol: str, limit: Int = None, params={}) -> OrderBook:
|
641
656
|
"""
|
642
|
-
|
657
|
+
|
658
|
+
https://www.lbank.com/en-US/docs/index.html#request-amp-subscription-instruction
|
659
|
+
|
643
660
|
watches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
|
644
661
|
:param str symbol: unified symbol of the market to fetch the order book for
|
645
662
|
:param int|None limit: the maximum amount of order book entries to return
|
@@ -652,7 +669,7 @@ class lbank(ccxt.async_support.lbank):
|
|
652
669
|
messageHash = 'fetchOrderbook:' + market['symbol']
|
653
670
|
if limit is None:
|
654
671
|
limit = 100
|
655
|
-
subscribe = {
|
672
|
+
subscribe: dict = {
|
656
673
|
'action': 'request',
|
657
674
|
'request': 'depth',
|
658
675
|
'depth': limit,
|
@@ -664,8 +681,9 @@ class lbank(ccxt.async_support.lbank):
|
|
664
681
|
|
665
682
|
async def watch_order_book(self, symbol: str, limit: Int = None, params={}) -> OrderBook:
|
666
683
|
"""
|
667
|
-
|
668
|
-
|
684
|
+
|
685
|
+
https://www.lbank.com/en-US/docs/index.html#market-depth
|
686
|
+
|
669
687
|
watches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
|
670
688
|
:param str symbol: unified symbol of the market to fetch the order book for
|
671
689
|
:param int|None limit: the maximum amount of order book entries to return
|
@@ -679,7 +697,7 @@ class lbank(ccxt.async_support.lbank):
|
|
679
697
|
params = self.omit(params, 'aggregation')
|
680
698
|
if limit is None:
|
681
699
|
limit = 100
|
682
|
-
subscribe = {
|
700
|
+
subscribe: dict = {
|
683
701
|
'action': 'subscribe',
|
684
702
|
'subscribe': 'depth',
|
685
703
|
'depth': limit,
|
@@ -751,10 +769,10 @@ class lbank(ccxt.async_support.lbank):
|
|
751
769
|
orderBook = self.safe_value(message, 'depth', message)
|
752
770
|
datetime = self.safe_string(message, 'TS')
|
753
771
|
timestamp = self.parse8601(datetime)
|
754
|
-
orderbook = self.safe_value(self.orderbooks, symbol)
|
755
|
-
if
|
756
|
-
|
757
|
-
|
772
|
+
# orderbook = self.safe_value(self.orderbooks, symbol)
|
773
|
+
if not (symbol in self.orderbooks):
|
774
|
+
self.orderbooks[symbol] = self.order_book({})
|
775
|
+
orderbook = self.orderbooks[symbol]
|
758
776
|
snapshot = self.parse_order_book(orderBook, symbol, timestamp, 'bids', 'asks')
|
759
777
|
orderbook.reset(snapshot)
|
760
778
|
messageHash = 'orderbook:' + symbol
|
@@ -780,10 +798,13 @@ class lbank(ccxt.async_support.lbank):
|
|
780
798
|
# {ping: 'a13a939c-5f25-4e06-9981-93cb3b890707', action: 'ping'}
|
781
799
|
#
|
782
800
|
pingId = self.safe_string(message, 'ping')
|
783
|
-
|
784
|
-
|
785
|
-
|
786
|
-
|
801
|
+
try:
|
802
|
+
await client.send({
|
803
|
+
'action': 'pong',
|
804
|
+
'pong': pingId,
|
805
|
+
})
|
806
|
+
except Exception as e:
|
807
|
+
self.on_error(client, e)
|
787
808
|
|
788
809
|
def handle_message(self, client, message):
|
789
810
|
status = self.safe_string(message, 'status')
|
@@ -794,7 +815,7 @@ class lbank(ccxt.async_support.lbank):
|
|
794
815
|
if type == 'ping':
|
795
816
|
self.spawn(self.handle_ping, client, message)
|
796
817
|
return
|
797
|
-
handlers = {
|
818
|
+
handlers: dict = {
|
798
819
|
'kbar': self.handle_ohlcv,
|
799
820
|
'depth': self.handle_order_book,
|
800
821
|
'trade': self.handle_trades,
|
@@ -829,7 +850,7 @@ class lbank(ccxt.async_support.lbank):
|
|
829
850
|
else:
|
830
851
|
expires = self.safe_integer(authenticated, 'expires', 0)
|
831
852
|
if expires < now:
|
832
|
-
request = {
|
853
|
+
request: dict = {
|
833
854
|
'subscribeKey': authenticated['key'],
|
834
855
|
}
|
835
856
|
response = await self.spotPrivatePostSubscribeRefreshKey(self.extend(request, params))
|
ccxt/pro/luno.py
CHANGED
@@ -19,6 +19,7 @@ class luno(ccxt.async_support.luno):
|
|
19
19
|
'watchTicker': False,
|
20
20
|
'watchTickers': False,
|
21
21
|
'watchTrades': True,
|
22
|
+
'watchTradesForSymbols': False,
|
22
23
|
'watchMyTrades': False,
|
23
24
|
'watchOrders': None, # is in beta
|
24
25
|
'watchOrderBook': True,
|
@@ -41,7 +42,9 @@ class luno(ccxt.async_support.luno):
|
|
41
42
|
async def watch_trades(self, symbol: str, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
|
42
43
|
"""
|
43
44
|
get the list of most recent trades for a particular symbol
|
44
|
-
|
45
|
+
|
46
|
+
https://www.luno.com/en/developers/api#tag/Streaming-API
|
47
|
+
|
45
48
|
:param str symbol: unified symbol of the market to fetch trades for
|
46
49
|
:param int [since]: timestamp in ms of the earliest trade to fetch
|
47
50
|
:param int [limit]: the maximum amount of trades to fetch
|
@@ -53,10 +56,10 @@ class luno(ccxt.async_support.luno):
|
|
53
56
|
market = self.market(symbol)
|
54
57
|
symbol = market['symbol']
|
55
58
|
subscriptionHash = '/stream/' + market['id']
|
56
|
-
subscription = {'symbol': symbol}
|
59
|
+
subscription: dict = {'symbol': symbol}
|
57
60
|
url = self.urls['api']['ws'] + subscriptionHash
|
58
61
|
messageHash = 'trades:' + symbol
|
59
|
-
subscribe = {
|
62
|
+
subscribe: dict = {
|
60
63
|
'api_key_id': self.apiKey,
|
61
64
|
'api_key_secret': self.secret,
|
62
65
|
}
|
@@ -144,10 +147,10 @@ class luno(ccxt.async_support.luno):
|
|
144
147
|
market = self.market(symbol)
|
145
148
|
symbol = market['symbol']
|
146
149
|
subscriptionHash = '/stream/' + market['id']
|
147
|
-
subscription = {'symbol': symbol}
|
150
|
+
subscription: dict = {'symbol': symbol}
|
148
151
|
url = self.urls['api']['ws'] + subscriptionHash
|
149
152
|
messageHash = 'orderbook:' + symbol
|
150
|
-
subscribe = {
|
153
|
+
subscribe: dict = {
|
151
154
|
'api_key_id': self.apiKey,
|
152
155
|
'api_key_secret': self.secret,
|
153
156
|
}
|
@@ -190,11 +193,10 @@ class luno(ccxt.async_support.luno):
|
|
190
193
|
#
|
191
194
|
symbol = subscription['symbol']
|
192
195
|
messageHash = 'orderbook:' + symbol
|
193
|
-
timestamp = self.
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
self.orderbooks[symbol] = orderbook
|
196
|
+
timestamp = self.safe_integer(message, 'timestamp')
|
197
|
+
if not (symbol in self.orderbooks):
|
198
|
+
self.orderbooks[symbol] = self.indexed_order_book({})
|
199
|
+
orderbook = self.orderbooks[symbol]
|
198
200
|
asks = self.safe_value(message, 'asks')
|
199
201
|
if asks is not None:
|
200
202
|
snapshot = self.custom_parse_order_book(message, symbol, timestamp, 'bids', 'asks', 'price', 'volume', 'id')
|