ccxt 4.2.77__py2.py3-none-any.whl → 4.4.49__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 +3205 -937
- 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 +1525 -573
- 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 +223 -97
- 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 +639 -323
- ccxt/async_support/digifinex.py +465 -233
- ccxt/async_support/ellipx.py +1887 -0
- ccxt/async_support/exmo.py +317 -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 +433 -178
- ccxt/async_support/hollaex.py +207 -83
- ccxt/async_support/htx.py +1095 -563
- ccxt/async_support/huobijp.py +178 -56
- ccxt/async_support/hyperliquid.py +1678 -292
- ccxt/async_support/idex.py +219 -95
- ccxt/async_support/independentreserve.py +300 -31
- ccxt/async_support/indodax.py +226 -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 +198 -107
- ccxt/async_support/latoken.py +199 -79
- ccxt/async_support/lbank.py +360 -113
- ccxt/async_support/luno.py +185 -62
- ccxt/async_support/lykke.py +168 -55
- ccxt/async_support/mercado.py +101 -29
- ccxt/async_support/mexc.py +995 -429
- ccxt/async_support/myokx.py +53 -0
- ccxt/async_support/ndax.py +234 -82
- ccxt/async_support/novadax.py +195 -75
- ccxt/async_support/oceanex.py +244 -59
- ccxt/async_support/okcoin.py +301 -165
- ccxt/async_support/okx.py +1776 -454
- ccxt/async_support/onetrading.py +198 -414
- ccxt/async_support/oxfun.py +2898 -0
- ccxt/async_support/p2b.py +142 -52
- ccxt/async_support/paradex.py +2085 -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 +3205 -937
- 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 +1525 -573
- 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 +223 -97
- 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 +639 -323
- ccxt/digifinex.py +465 -233
- ccxt/ellipx.py +1887 -0
- ccxt/exmo.py +317 -128
- ccxt/gate.py +1472 -463
- ccxt/gemini.py +206 -84
- ccxt/hashkey.py +4164 -0
- ccxt/hitbtc.py +433 -178
- ccxt/hollaex.py +207 -83
- ccxt/htx.py +1095 -563
- ccxt/huobijp.py +178 -56
- ccxt/hyperliquid.py +1677 -292
- ccxt/idex.py +219 -95
- ccxt/independentreserve.py +299 -31
- ccxt/indodax.py +226 -62
- ccxt/kraken.py +871 -354
- ccxt/krakenfutures.py +324 -100
- ccxt/kucoin.py +917 -357
- ccxt/kucoinfutures.py +1004 -149
- ccxt/kuna.py +198 -107
- ccxt/latoken.py +199 -79
- ccxt/lbank.py +360 -113
- ccxt/luno.py +185 -62
- ccxt/lykke.py +168 -55
- ccxt/mercado.py +101 -29
- ccxt/mexc.py +994 -429
- ccxt/myokx.py +53 -0
- ccxt/ndax.py +234 -82
- ccxt/novadax.py +195 -75
- ccxt/oceanex.py +244 -59
- ccxt/okcoin.py +301 -165
- ccxt/okx.py +1776 -454
- ccxt/onetrading.py +198 -414
- ccxt/oxfun.py +2897 -0
- ccxt/p2b.py +142 -52
- ccxt/paradex.py +2085 -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 +143 -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.49.dist-info/LICENSE.txt +21 -0
- ccxt-4.4.49.dist-info/METADATA +646 -0
- ccxt-4.4.49.dist-info/RECORD +669 -0
- {ccxt-4.2.77.dist-info → ccxt-4.4.49.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.49.dist-info}/top_level.txt +0 -0
ccxt/async_support/mercado.py
CHANGED
@@ -12,6 +12,7 @@ from ccxt.base.errors import ExchangeError
|
|
12
12
|
from ccxt.base.errors import ArgumentsRequired
|
13
13
|
from ccxt.base.errors import InvalidOrder
|
14
14
|
from ccxt.base.decimal_to_precision import TICK_SIZE
|
15
|
+
from ccxt.base.precise import Precise
|
15
16
|
|
16
17
|
|
17
18
|
class mercado(Exchange, ImplicitAPI):
|
@@ -67,8 +68,11 @@ class mercado(Exchange, ImplicitAPI):
|
|
67
68
|
'fetchOrderBook': True,
|
68
69
|
'fetchOrders': True,
|
69
70
|
'fetchPosition': False,
|
71
|
+
'fetchPositionHistory': False,
|
70
72
|
'fetchPositionMode': False,
|
71
73
|
'fetchPositions': False,
|
74
|
+
'fetchPositionsForSymbol': False,
|
75
|
+
'fetchPositionsHistory': False,
|
72
76
|
'fetchPositionsRisk': False,
|
73
77
|
'fetchPremiumIndexOHLCV': False,
|
74
78
|
'fetchTicker': True,
|
@@ -158,10 +162,75 @@ class mercado(Exchange, ImplicitAPI):
|
|
158
162
|
'XRP': 0.1,
|
159
163
|
},
|
160
164
|
},
|
165
|
+
'features': {
|
166
|
+
'spot': {
|
167
|
+
'sandbox': False,
|
168
|
+
'createOrder': {
|
169
|
+
'marginMode': False,
|
170
|
+
'triggerPrice': False,
|
171
|
+
'triggerPriceType': None,
|
172
|
+
'triggerDirection': False,
|
173
|
+
'stopLossPrice': False,
|
174
|
+
'takeProfitPrice': False,
|
175
|
+
'attachedStopLossTakeProfit': None,
|
176
|
+
'timeInForce': {
|
177
|
+
'IOC': False,
|
178
|
+
'FOK': False,
|
179
|
+
'PO': True, # todo
|
180
|
+
'GTD': False,
|
181
|
+
},
|
182
|
+
'hedged': False,
|
183
|
+
'trailing': False,
|
184
|
+
'leverage': False,
|
185
|
+
'marketBuyByCost': True, # todo
|
186
|
+
'marketBuyRequiresPrice': True,
|
187
|
+
'selfTradePrevention': False,
|
188
|
+
'iceberg': False,
|
189
|
+
},
|
190
|
+
'createOrders': None,
|
191
|
+
'fetchMyTrades': {
|
192
|
+
'marginMode': False,
|
193
|
+
'limit': None, # todo
|
194
|
+
'daysBack': 100000, # todo
|
195
|
+
'untilDays': 100000, # todo
|
196
|
+
},
|
197
|
+
'fetchOrder': {
|
198
|
+
'marginMode': False,
|
199
|
+
'trigger': False,
|
200
|
+
'trailing': False,
|
201
|
+
},
|
202
|
+
'fetchOpenOrders': {
|
203
|
+
'marginMode': False,
|
204
|
+
'limit': None,
|
205
|
+
'trigger': False,
|
206
|
+
'trailing': False,
|
207
|
+
},
|
208
|
+
'fetchOrders': {
|
209
|
+
'marginMode': False,
|
210
|
+
'limit': 500,
|
211
|
+
'daysBack': 100000,
|
212
|
+
'untilDays': 100000,
|
213
|
+
'trigger': False,
|
214
|
+
'trailing': False,
|
215
|
+
},
|
216
|
+
'fetchClosedOrders': None,
|
217
|
+
'fetchOHLCV': {
|
218
|
+
'limit': 1000,
|
219
|
+
},
|
220
|
+
},
|
221
|
+
'swap': {
|
222
|
+
'linear': None,
|
223
|
+
'inverse': None,
|
224
|
+
},
|
225
|
+
'future': {
|
226
|
+
'linear': None,
|
227
|
+
'inverse': None,
|
228
|
+
},
|
229
|
+
},
|
161
230
|
'precisionMode': TICK_SIZE,
|
162
231
|
})
|
163
232
|
|
164
|
-
async def fetch_markets(self, params={}):
|
233
|
+
async def fetch_markets(self, params={}) -> List[Market]:
|
165
234
|
"""
|
166
235
|
retrieves data on all markets for mercado
|
167
236
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
@@ -259,13 +328,13 @@ class mercado(Exchange, ImplicitAPI):
|
|
259
328
|
"""
|
260
329
|
await self.load_markets()
|
261
330
|
market = self.market(symbol)
|
262
|
-
request = {
|
331
|
+
request: dict = {
|
263
332
|
'coin': market['base'],
|
264
333
|
}
|
265
334
|
response = await self.publicGetCoinOrderbook(self.extend(request, params))
|
266
335
|
return self.parse_order_book(response, market['symbol'])
|
267
336
|
|
268
|
-
def parse_ticker(self, ticker, market: Market = None) -> Ticker:
|
337
|
+
def parse_ticker(self, ticker: dict, market: Market = None) -> Ticker:
|
269
338
|
#
|
270
339
|
# {
|
271
340
|
# "high":"103.96000000",
|
@@ -313,7 +382,7 @@ class mercado(Exchange, ImplicitAPI):
|
|
313
382
|
"""
|
314
383
|
await self.load_markets()
|
315
384
|
market = self.market(symbol)
|
316
|
-
request = {
|
385
|
+
request: dict = {
|
317
386
|
'coin': market['base'],
|
318
387
|
}
|
319
388
|
response = await self.publicGetCoinTicker(self.extend(request, params))
|
@@ -334,7 +403,7 @@ class mercado(Exchange, ImplicitAPI):
|
|
334
403
|
#
|
335
404
|
return self.parse_ticker(ticker, market)
|
336
405
|
|
337
|
-
def parse_trade(self, trade, market: Market = None) -> Trade:
|
406
|
+
def parse_trade(self, trade: dict, market: Market = None) -> Trade:
|
338
407
|
timestamp = self.safe_timestamp_2(trade, 'date', 'executed_timestamp')
|
339
408
|
market = self.safe_market(None, market)
|
340
409
|
id = self.safe_string_2(trade, 'tid', 'operation_id')
|
@@ -377,7 +446,7 @@ class mercado(Exchange, ImplicitAPI):
|
|
377
446
|
await self.load_markets()
|
378
447
|
market = self.market(symbol)
|
379
448
|
method = 'publicGetCoinTrades'
|
380
|
-
request = {
|
449
|
+
request: dict = {
|
381
450
|
'coin': market['base'],
|
382
451
|
}
|
383
452
|
if since is not None:
|
@@ -392,7 +461,7 @@ class mercado(Exchange, ImplicitAPI):
|
|
392
461
|
def parse_balance(self, response) -> Balances:
|
393
462
|
data = self.safe_value(response, 'response_data', {})
|
394
463
|
balances = self.safe_value(data, 'balance', {})
|
395
|
-
result = {'info': response}
|
464
|
+
result: dict = {'info': response}
|
396
465
|
currencyIds = list(balances.keys())
|
397
466
|
for i in range(0, len(currencyIds)):
|
398
467
|
currencyId = currencyIds[i]
|
@@ -422,13 +491,13 @@ class mercado(Exchange, ImplicitAPI):
|
|
422
491
|
:param str type: 'market' or 'limit'
|
423
492
|
:param str side: 'buy' or 'sell'
|
424
493
|
:param float amount: how much of currency you want to trade in units of base currency
|
425
|
-
:param float [price]: the price at which the order is to be
|
494
|
+
:param float [price]: the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
|
426
495
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
427
496
|
:returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
|
428
497
|
"""
|
429
498
|
await self.load_markets()
|
430
499
|
market = self.market(symbol)
|
431
|
-
request = {
|
500
|
+
request: dict = {
|
432
501
|
'coin_pair': market['id'],
|
433
502
|
}
|
434
503
|
method = self.capitalize(side) + 'Order'
|
@@ -441,7 +510,10 @@ class mercado(Exchange, ImplicitAPI):
|
|
441
510
|
if side == 'buy':
|
442
511
|
if price is None:
|
443
512
|
raise InvalidOrder(self.id + ' createOrder() requires the price argument with market buy orders to calculate total order cost(amount to spend), where cost = amount * price. Supply a price argument to createOrder() call if you want the cost to be calculated for you from price and amount')
|
444
|
-
|
513
|
+
amountString = self.number_to_string(amount)
|
514
|
+
priceString = self.number_to_string(price)
|
515
|
+
cost = self.parse_to_numeric(Precise.string_mul(amountString, priceString))
|
516
|
+
request['cost'] = self.price_to_precision(market['symbol'], cost)
|
445
517
|
else:
|
446
518
|
request['quantity'] = self.amount_to_precision(market['symbol'], amount)
|
447
519
|
response = await getattr(self, method)(self.extend(request, params))
|
@@ -463,7 +535,7 @@ class mercado(Exchange, ImplicitAPI):
|
|
463
535
|
raise ArgumentsRequired(self.id + ' cancelOrder() requires a symbol argument')
|
464
536
|
await self.load_markets()
|
465
537
|
market = self.market(symbol)
|
466
|
-
request = {
|
538
|
+
request: dict = {
|
467
539
|
'coin_pair': market['id'],
|
468
540
|
'order_id': id,
|
469
541
|
}
|
@@ -492,18 +564,18 @@ class mercado(Exchange, ImplicitAPI):
|
|
492
564
|
# }
|
493
565
|
#
|
494
566
|
responseData = self.safe_value(response, 'response_data', {})
|
495
|
-
order = self.
|
567
|
+
order = self.safe_dict(responseData, 'order', {})
|
496
568
|
return self.parse_order(order, market)
|
497
569
|
|
498
|
-
def parse_order_status(self, status):
|
499
|
-
statuses = {
|
570
|
+
def parse_order_status(self, status: Str):
|
571
|
+
statuses: dict = {
|
500
572
|
'2': 'open',
|
501
573
|
'3': 'canceled',
|
502
574
|
'4': 'closed',
|
503
575
|
}
|
504
576
|
return self.safe_string(statuses, status, status)
|
505
577
|
|
506
|
-
def parse_order(self, order, market: Market = None) -> Order:
|
578
|
+
def parse_order(self, order: dict, market: Market = None) -> Order:
|
507
579
|
#
|
508
580
|
# {
|
509
581
|
# "order_id": 4,
|
@@ -562,7 +634,6 @@ class mercado(Exchange, ImplicitAPI):
|
|
562
634
|
'postOnly': None,
|
563
635
|
'side': side,
|
564
636
|
'price': price,
|
565
|
-
'stopPrice': None,
|
566
637
|
'triggerPrice': None,
|
567
638
|
'cost': None,
|
568
639
|
'average': average,
|
@@ -577,6 +648,7 @@ class mercado(Exchange, ImplicitAPI):
|
|
577
648
|
async def fetch_order(self, id: str, symbol: Str = None, params={}):
|
578
649
|
"""
|
579
650
|
fetches information on an order made by the user
|
651
|
+
:param str id: order id
|
580
652
|
:param str symbol: unified symbol of the market the order was made in
|
581
653
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
582
654
|
:returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
|
@@ -585,16 +657,16 @@ class mercado(Exchange, ImplicitAPI):
|
|
585
657
|
raise ArgumentsRequired(self.id + ' fetchOrder() requires a symbol argument')
|
586
658
|
await self.load_markets()
|
587
659
|
market = self.market(symbol)
|
588
|
-
request = {
|
660
|
+
request: dict = {
|
589
661
|
'coin_pair': market['id'],
|
590
662
|
'order_id': int(id),
|
591
663
|
}
|
592
664
|
response = await self.privatePostGetOrder(self.extend(request, params))
|
593
665
|
responseData = self.safe_value(response, 'response_data', {})
|
594
|
-
order = self.
|
666
|
+
order = self.safe_dict(responseData, 'order')
|
595
667
|
return self.parse_order(order, market)
|
596
668
|
|
597
|
-
async def withdraw(self, code: str, amount: float, address, tag=None, params={}):
|
669
|
+
async def withdraw(self, code: str, amount: float, address: str, tag=None, params={}) -> Transaction:
|
598
670
|
"""
|
599
671
|
make a withdrawal
|
600
672
|
:param str code: unified currency code
|
@@ -608,7 +680,7 @@ class mercado(Exchange, ImplicitAPI):
|
|
608
680
|
self.check_address(address)
|
609
681
|
await self.load_markets()
|
610
682
|
currency = self.currency(code)
|
611
|
-
request = {
|
683
|
+
request: dict = {
|
612
684
|
'coin': currency['id'],
|
613
685
|
'quantity': format(amount, '.10f'),
|
614
686
|
'address': address,
|
@@ -648,10 +720,10 @@ class mercado(Exchange, ImplicitAPI):
|
|
648
720
|
# }
|
649
721
|
#
|
650
722
|
responseData = self.safe_value(response, 'response_data', {})
|
651
|
-
withdrawal = self.
|
723
|
+
withdrawal = self.safe_dict(responseData, 'withdrawal')
|
652
724
|
return self.parse_transaction(withdrawal, currency)
|
653
725
|
|
654
|
-
def parse_transaction(self, transaction, currency: Currency = None) -> Transaction:
|
726
|
+
def parse_transaction(self, transaction: dict, currency: Currency = None) -> Transaction:
|
655
727
|
#
|
656
728
|
# {
|
657
729
|
# "id": 1,
|
@@ -711,7 +783,7 @@ class mercado(Exchange, ImplicitAPI):
|
|
711
783
|
"""
|
712
784
|
await self.load_markets()
|
713
785
|
market = self.market(symbol)
|
714
|
-
request = {
|
786
|
+
request: dict = {
|
715
787
|
'resolution': self.safe_string(self.timeframes, timeframe, timeframe),
|
716
788
|
'symbol': market['base'] + '-' + market['quote'], # exceptional endpoint, that needs custom symbol syntax
|
717
789
|
}
|
@@ -740,12 +812,12 @@ class mercado(Exchange, ImplicitAPI):
|
|
740
812
|
raise ArgumentsRequired(self.id + ' fetchOrders() requires a symbol argument')
|
741
813
|
await self.load_markets()
|
742
814
|
market = self.market(symbol)
|
743
|
-
request = {
|
815
|
+
request: dict = {
|
744
816
|
'coin_pair': market['id'],
|
745
817
|
}
|
746
818
|
response = await self.privatePostListOrders(self.extend(request, params))
|
747
819
|
responseData = self.safe_value(response, 'response_data', {})
|
748
|
-
orders = self.
|
820
|
+
orders = self.safe_list(responseData, 'orders', [])
|
749
821
|
return self.parse_orders(orders, market, since, limit)
|
750
822
|
|
751
823
|
async def fetch_open_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
|
@@ -761,13 +833,13 @@ class mercado(Exchange, ImplicitAPI):
|
|
761
833
|
raise ArgumentsRequired(self.id + ' fetchOpenOrders() requires a symbol argument')
|
762
834
|
await self.load_markets()
|
763
835
|
market = self.market(symbol)
|
764
|
-
request = {
|
836
|
+
request: dict = {
|
765
837
|
'coin_pair': market['id'],
|
766
838
|
'status_list': '[2]', # open only
|
767
839
|
}
|
768
840
|
response = await self.privatePostListOrders(self.extend(request, params))
|
769
841
|
responseData = self.safe_value(response, 'response_data', {})
|
770
|
-
orders = self.
|
842
|
+
orders = self.safe_list(responseData, 'orders', [])
|
771
843
|
return self.parse_orders(orders, market, since, limit)
|
772
844
|
|
773
845
|
async def fetch_my_trades(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
|
@@ -783,7 +855,7 @@ class mercado(Exchange, ImplicitAPI):
|
|
783
855
|
raise ArgumentsRequired(self.id + ' fetchMyTrades() requires a symbol argument')
|
784
856
|
await self.load_markets()
|
785
857
|
market = self.market(symbol)
|
786
|
-
request = {
|
858
|
+
request: dict = {
|
787
859
|
'coin_pair': market['id'],
|
788
860
|
'has_fills': True,
|
789
861
|
}
|
@@ -825,7 +897,7 @@ class mercado(Exchange, ImplicitAPI):
|
|
825
897
|
}
|
826
898
|
return {'url': url, 'method': method, 'body': body, 'headers': headers}
|
827
899
|
|
828
|
-
def handle_errors(self, httpCode, reason, url, method, headers, body, response, requestHeaders, requestBody):
|
900
|
+
def handle_errors(self, httpCode: int, reason: str, url: str, method: str, headers: dict, body: str, response, requestHeaders, requestBody):
|
829
901
|
if response is None:
|
830
902
|
return None
|
831
903
|
#
|