coinex-api 0.0.14__py3-none-any.whl → 0.0.15__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.
- {coinex_api-0.0.14.dist-info → coinex_api-0.0.15.dist-info}/METADATA +1 -1
- coinex_api-0.0.15.dist-info/RECORD +3 -0
- coinex/__init__.py +0 -7
- coinex/ccxt/__init__.py +0 -101
- coinex/ccxt/abstract/coinex.py +0 -237
- coinex/ccxt/async_support/__init__.py +0 -80
- coinex/ccxt/async_support/base/__init__.py +0 -1
- coinex/ccxt/async_support/base/exchange.py +0 -2100
- coinex/ccxt/async_support/base/throttler.py +0 -50
- coinex/ccxt/async_support/base/ws/__init__.py +0 -38
- coinex/ccxt/async_support/base/ws/aiohttp_client.py +0 -147
- coinex/ccxt/async_support/base/ws/cache.py +0 -213
- coinex/ccxt/async_support/base/ws/client.py +0 -214
- coinex/ccxt/async_support/base/ws/fast_client.py +0 -97
- coinex/ccxt/async_support/base/ws/functions.py +0 -59
- coinex/ccxt/async_support/base/ws/future.py +0 -69
- coinex/ccxt/async_support/base/ws/order_book.py +0 -78
- coinex/ccxt/async_support/base/ws/order_book_side.py +0 -174
- coinex/ccxt/async_support/coinex.py +0 -5833
- coinex/ccxt/base/__init__.py +0 -27
- coinex/ccxt/base/decimal_to_precision.py +0 -174
- coinex/ccxt/base/errors.py +0 -267
- coinex/ccxt/base/exchange.py +0 -6769
- coinex/ccxt/base/precise.py +0 -297
- coinex/ccxt/base/types.py +0 -577
- coinex/ccxt/coinex.py +0 -5832
- coinex/ccxt/pro/__init__.py +0 -21
- coinex/ccxt/pro/coinex.py +0 -1366
- coinex/ccxt/static_dependencies/README.md +0 -1
- coinex/ccxt/static_dependencies/__init__.py +0 -1
- coinex/ccxt/static_dependencies/ecdsa/__init__.py +0 -14
- coinex/ccxt/static_dependencies/ecdsa/_version.py +0 -520
- coinex/ccxt/static_dependencies/ecdsa/curves.py +0 -56
- coinex/ccxt/static_dependencies/ecdsa/der.py +0 -221
- coinex/ccxt/static_dependencies/ecdsa/ecdsa.py +0 -310
- coinex/ccxt/static_dependencies/ecdsa/ellipticcurve.py +0 -197
- coinex/ccxt/static_dependencies/ecdsa/keys.py +0 -332
- coinex/ccxt/static_dependencies/ecdsa/numbertheory.py +0 -531
- coinex/ccxt/static_dependencies/ecdsa/rfc6979.py +0 -100
- coinex/ccxt/static_dependencies/ecdsa/util.py +0 -266
- coinex/ccxt/static_dependencies/ethereum/__init__.py +0 -7
- coinex/ccxt/static_dependencies/ethereum/abi/__init__.py +0 -16
- coinex/ccxt/static_dependencies/ethereum/abi/abi.py +0 -19
- coinex/ccxt/static_dependencies/ethereum/abi/base.py +0 -152
- coinex/ccxt/static_dependencies/ethereum/abi/codec.py +0 -217
- coinex/ccxt/static_dependencies/ethereum/abi/constants.py +0 -3
- coinex/ccxt/static_dependencies/ethereum/abi/decoding.py +0 -565
- coinex/ccxt/static_dependencies/ethereum/abi/encoding.py +0 -720
- coinex/ccxt/static_dependencies/ethereum/abi/exceptions.py +0 -139
- coinex/ccxt/static_dependencies/ethereum/abi/grammar.py +0 -443
- coinex/ccxt/static_dependencies/ethereum/abi/packed.py +0 -13
- coinex/ccxt/static_dependencies/ethereum/abi/py.typed +0 -0
- coinex/ccxt/static_dependencies/ethereum/abi/registry.py +0 -643
- coinex/ccxt/static_dependencies/ethereum/abi/tools/__init__.py +0 -3
- coinex/ccxt/static_dependencies/ethereum/abi/tools/_strategies.py +0 -230
- coinex/ccxt/static_dependencies/ethereum/abi/utils/__init__.py +0 -0
- coinex/ccxt/static_dependencies/ethereum/abi/utils/numeric.py +0 -83
- coinex/ccxt/static_dependencies/ethereum/abi/utils/padding.py +0 -27
- coinex/ccxt/static_dependencies/ethereum/abi/utils/string.py +0 -19
- coinex/ccxt/static_dependencies/ethereum/account/__init__.py +0 -3
- coinex/ccxt/static_dependencies/ethereum/account/encode_typed_data/__init__.py +0 -4
- coinex/ccxt/static_dependencies/ethereum/account/encode_typed_data/encoding_and_hashing.py +0 -239
- coinex/ccxt/static_dependencies/ethereum/account/encode_typed_data/helpers.py +0 -40
- coinex/ccxt/static_dependencies/ethereum/account/messages.py +0 -263
- coinex/ccxt/static_dependencies/ethereum/account/py.typed +0 -0
- coinex/ccxt/static_dependencies/ethereum/hexbytes/__init__.py +0 -5
- coinex/ccxt/static_dependencies/ethereum/hexbytes/_utils.py +0 -54
- coinex/ccxt/static_dependencies/ethereum/hexbytes/main.py +0 -65
- coinex/ccxt/static_dependencies/ethereum/hexbytes/py.typed +0 -0
- coinex/ccxt/static_dependencies/ethereum/typing/__init__.py +0 -63
- coinex/ccxt/static_dependencies/ethereum/typing/abi.py +0 -6
- coinex/ccxt/static_dependencies/ethereum/typing/bls.py +0 -7
- coinex/ccxt/static_dependencies/ethereum/typing/discovery.py +0 -5
- coinex/ccxt/static_dependencies/ethereum/typing/encoding.py +0 -7
- coinex/ccxt/static_dependencies/ethereum/typing/enums.py +0 -17
- coinex/ccxt/static_dependencies/ethereum/typing/ethpm.py +0 -9
- coinex/ccxt/static_dependencies/ethereum/typing/evm.py +0 -20
- coinex/ccxt/static_dependencies/ethereum/typing/networks.py +0 -1122
- coinex/ccxt/static_dependencies/ethereum/typing/py.typed +0 -0
- coinex/ccxt/static_dependencies/ethereum/utils/__init__.py +0 -115
- coinex/ccxt/static_dependencies/ethereum/utils/abi.py +0 -72
- coinex/ccxt/static_dependencies/ethereum/utils/address.py +0 -171
- coinex/ccxt/static_dependencies/ethereum/utils/applicators.py +0 -151
- coinex/ccxt/static_dependencies/ethereum/utils/conversions.py +0 -190
- coinex/ccxt/static_dependencies/ethereum/utils/currency.py +0 -107
- coinex/ccxt/static_dependencies/ethereum/utils/curried/__init__.py +0 -269
- coinex/ccxt/static_dependencies/ethereum/utils/debug.py +0 -20
- coinex/ccxt/static_dependencies/ethereum/utils/decorators.py +0 -132
- coinex/ccxt/static_dependencies/ethereum/utils/encoding.py +0 -6
- coinex/ccxt/static_dependencies/ethereum/utils/exceptions.py +0 -4
- coinex/ccxt/static_dependencies/ethereum/utils/functional.py +0 -75
- coinex/ccxt/static_dependencies/ethereum/utils/hexadecimal.py +0 -74
- coinex/ccxt/static_dependencies/ethereum/utils/humanize.py +0 -188
- coinex/ccxt/static_dependencies/ethereum/utils/logging.py +0 -159
- coinex/ccxt/static_dependencies/ethereum/utils/module_loading.py +0 -31
- coinex/ccxt/static_dependencies/ethereum/utils/numeric.py +0 -43
- coinex/ccxt/static_dependencies/ethereum/utils/py.typed +0 -0
- coinex/ccxt/static_dependencies/ethereum/utils/toolz.py +0 -76
- coinex/ccxt/static_dependencies/ethereum/utils/types.py +0 -54
- coinex/ccxt/static_dependencies/ethereum/utils/typing/__init__.py +0 -18
- coinex/ccxt/static_dependencies/ethereum/utils/typing/misc.py +0 -14
- coinex/ccxt/static_dependencies/ethereum/utils/units.py +0 -31
- coinex/ccxt/static_dependencies/keccak/__init__.py +0 -3
- coinex/ccxt/static_dependencies/keccak/keccak.py +0 -197
- coinex/ccxt/static_dependencies/lark/__init__.py +0 -38
- coinex/ccxt/static_dependencies/lark/__pyinstaller/__init__.py +0 -6
- coinex/ccxt/static_dependencies/lark/__pyinstaller/hook-lark.py +0 -14
- coinex/ccxt/static_dependencies/lark/ast_utils.py +0 -59
- coinex/ccxt/static_dependencies/lark/common.py +0 -86
- coinex/ccxt/static_dependencies/lark/exceptions.py +0 -292
- coinex/ccxt/static_dependencies/lark/grammar.py +0 -130
- coinex/ccxt/static_dependencies/lark/grammars/__init__.py +0 -0
- coinex/ccxt/static_dependencies/lark/grammars/common.lark +0 -59
- coinex/ccxt/static_dependencies/lark/grammars/lark.lark +0 -62
- coinex/ccxt/static_dependencies/lark/grammars/python.lark +0 -302
- coinex/ccxt/static_dependencies/lark/grammars/unicode.lark +0 -7
- coinex/ccxt/static_dependencies/lark/indenter.py +0 -143
- coinex/ccxt/static_dependencies/lark/lark.py +0 -658
- coinex/ccxt/static_dependencies/lark/lexer.py +0 -678
- coinex/ccxt/static_dependencies/lark/load_grammar.py +0 -1428
- coinex/ccxt/static_dependencies/lark/parse_tree_builder.py +0 -391
- coinex/ccxt/static_dependencies/lark/parser_frontends.py +0 -257
- coinex/ccxt/static_dependencies/lark/parsers/__init__.py +0 -0
- coinex/ccxt/static_dependencies/lark/parsers/cyk.py +0 -340
- coinex/ccxt/static_dependencies/lark/parsers/earley.py +0 -314
- coinex/ccxt/static_dependencies/lark/parsers/earley_common.py +0 -42
- coinex/ccxt/static_dependencies/lark/parsers/earley_forest.py +0 -801
- coinex/ccxt/static_dependencies/lark/parsers/grammar_analysis.py +0 -203
- coinex/ccxt/static_dependencies/lark/parsers/lalr_analysis.py +0 -332
- coinex/ccxt/static_dependencies/lark/parsers/lalr_interactive_parser.py +0 -158
- coinex/ccxt/static_dependencies/lark/parsers/lalr_parser.py +0 -122
- coinex/ccxt/static_dependencies/lark/parsers/lalr_parser_state.py +0 -110
- coinex/ccxt/static_dependencies/lark/parsers/xearley.py +0 -165
- coinex/ccxt/static_dependencies/lark/py.typed +0 -0
- coinex/ccxt/static_dependencies/lark/reconstruct.py +0 -107
- coinex/ccxt/static_dependencies/lark/tools/__init__.py +0 -70
- coinex/ccxt/static_dependencies/lark/tools/nearley.py +0 -202
- coinex/ccxt/static_dependencies/lark/tools/serialize.py +0 -32
- coinex/ccxt/static_dependencies/lark/tools/standalone.py +0 -196
- coinex/ccxt/static_dependencies/lark/tree.py +0 -267
- coinex/ccxt/static_dependencies/lark/tree_matcher.py +0 -186
- coinex/ccxt/static_dependencies/lark/tree_templates.py +0 -180
- coinex/ccxt/static_dependencies/lark/utils.py +0 -343
- coinex/ccxt/static_dependencies/lark/visitors.py +0 -596
- coinex/ccxt/static_dependencies/marshmallow/__init__.py +0 -81
- coinex/ccxt/static_dependencies/marshmallow/base.py +0 -65
- coinex/ccxt/static_dependencies/marshmallow/class_registry.py +0 -94
- coinex/ccxt/static_dependencies/marshmallow/decorators.py +0 -231
- coinex/ccxt/static_dependencies/marshmallow/error_store.py +0 -60
- coinex/ccxt/static_dependencies/marshmallow/exceptions.py +0 -71
- coinex/ccxt/static_dependencies/marshmallow/fields.py +0 -2114
- coinex/ccxt/static_dependencies/marshmallow/orderedset.py +0 -89
- coinex/ccxt/static_dependencies/marshmallow/py.typed +0 -0
- coinex/ccxt/static_dependencies/marshmallow/schema.py +0 -1228
- coinex/ccxt/static_dependencies/marshmallow/types.py +0 -12
- coinex/ccxt/static_dependencies/marshmallow/utils.py +0 -378
- coinex/ccxt/static_dependencies/marshmallow/validate.py +0 -678
- coinex/ccxt/static_dependencies/marshmallow/warnings.py +0 -2
- coinex/ccxt/static_dependencies/marshmallow_dataclass/__init__.py +0 -1047
- coinex/ccxt/static_dependencies/marshmallow_dataclass/collection_field.py +0 -51
- coinex/ccxt/static_dependencies/marshmallow_dataclass/lazy_class_attribute.py +0 -45
- coinex/ccxt/static_dependencies/marshmallow_dataclass/mypy.py +0 -71
- coinex/ccxt/static_dependencies/marshmallow_dataclass/py.typed +0 -0
- coinex/ccxt/static_dependencies/marshmallow_dataclass/typing.py +0 -14
- coinex/ccxt/static_dependencies/marshmallow_dataclass/union_field.py +0 -82
- coinex/ccxt/static_dependencies/marshmallow_oneofschema/__init__.py +0 -1
- coinex/ccxt/static_dependencies/marshmallow_oneofschema/one_of_schema.py +0 -193
- coinex/ccxt/static_dependencies/marshmallow_oneofschema/py.typed +0 -0
- coinex/ccxt/static_dependencies/msgpack/__init__.py +0 -55
- coinex/ccxt/static_dependencies/msgpack/_cmsgpack.pyx +0 -11
- coinex/ccxt/static_dependencies/msgpack/_packer.pyx +0 -374
- coinex/ccxt/static_dependencies/msgpack/_unpacker.pyx +0 -547
- coinex/ccxt/static_dependencies/msgpack/buff_converter.h +0 -8
- coinex/ccxt/static_dependencies/msgpack/exceptions.py +0 -48
- coinex/ccxt/static_dependencies/msgpack/ext.py +0 -168
- coinex/ccxt/static_dependencies/msgpack/fallback.py +0 -951
- coinex/ccxt/static_dependencies/msgpack/pack.h +0 -89
- coinex/ccxt/static_dependencies/msgpack/pack_template.h +0 -820
- coinex/ccxt/static_dependencies/msgpack/sysdep.h +0 -194
- coinex/ccxt/static_dependencies/msgpack/unpack.h +0 -391
- coinex/ccxt/static_dependencies/msgpack/unpack_define.h +0 -95
- coinex/ccxt/static_dependencies/msgpack/unpack_template.h +0 -464
- coinex/ccxt/static_dependencies/parsimonious/__init__.py +0 -10
- coinex/ccxt/static_dependencies/parsimonious/exceptions.py +0 -105
- coinex/ccxt/static_dependencies/parsimonious/expressions.py +0 -479
- coinex/ccxt/static_dependencies/parsimonious/grammar.py +0 -487
- coinex/ccxt/static_dependencies/parsimonious/nodes.py +0 -325
- coinex/ccxt/static_dependencies/parsimonious/utils.py +0 -40
- coinex/ccxt/static_dependencies/starknet/__init__.py +0 -0
- coinex/ccxt/static_dependencies/starknet/abi/v0/__init__.py +0 -2
- coinex/ccxt/static_dependencies/starknet/abi/v0/model.py +0 -44
- coinex/ccxt/static_dependencies/starknet/abi/v0/parser.py +0 -216
- coinex/ccxt/static_dependencies/starknet/abi/v0/schemas.py +0 -72
- coinex/ccxt/static_dependencies/starknet/abi/v0/shape.py +0 -63
- coinex/ccxt/static_dependencies/starknet/abi/v1/__init__.py +0 -2
- coinex/ccxt/static_dependencies/starknet/abi/v1/core_structures.json +0 -14
- coinex/ccxt/static_dependencies/starknet/abi/v1/model.py +0 -39
- coinex/ccxt/static_dependencies/starknet/abi/v1/parser.py +0 -220
- coinex/ccxt/static_dependencies/starknet/abi/v1/parser_transformer.py +0 -179
- coinex/ccxt/static_dependencies/starknet/abi/v1/schemas.py +0 -66
- coinex/ccxt/static_dependencies/starknet/abi/v1/shape.py +0 -47
- coinex/ccxt/static_dependencies/starknet/abi/v2/__init__.py +0 -2
- coinex/ccxt/static_dependencies/starknet/abi/v2/model.py +0 -89
- coinex/ccxt/static_dependencies/starknet/abi/v2/parser.py +0 -293
- coinex/ccxt/static_dependencies/starknet/abi/v2/parser_transformer.py +0 -192
- coinex/ccxt/static_dependencies/starknet/abi/v2/schemas.py +0 -132
- coinex/ccxt/static_dependencies/starknet/abi/v2/shape.py +0 -107
- coinex/ccxt/static_dependencies/starknet/cairo/__init__.py +0 -0
- coinex/ccxt/static_dependencies/starknet/cairo/data_types.py +0 -123
- coinex/ccxt/static_dependencies/starknet/cairo/deprecated_parse/__init__.py +0 -0
- coinex/ccxt/static_dependencies/starknet/cairo/deprecated_parse/cairo_types.py +0 -77
- coinex/ccxt/static_dependencies/starknet/cairo/deprecated_parse/parser.py +0 -46
- coinex/ccxt/static_dependencies/starknet/cairo/deprecated_parse/parser_transformer.py +0 -138
- coinex/ccxt/static_dependencies/starknet/cairo/felt.py +0 -64
- coinex/ccxt/static_dependencies/starknet/cairo/type_parser.py +0 -121
- coinex/ccxt/static_dependencies/starknet/cairo/v1/__init__.py +0 -0
- coinex/ccxt/static_dependencies/starknet/cairo/v1/type_parser.py +0 -59
- coinex/ccxt/static_dependencies/starknet/cairo/v2/__init__.py +0 -0
- coinex/ccxt/static_dependencies/starknet/cairo/v2/type_parser.py +0 -77
- coinex/ccxt/static_dependencies/starknet/ccxt_utils.py +0 -7
- coinex/ccxt/static_dependencies/starknet/common.py +0 -15
- coinex/ccxt/static_dependencies/starknet/constants.py +0 -39
- coinex/ccxt/static_dependencies/starknet/hash/__init__.py +0 -0
- coinex/ccxt/static_dependencies/starknet/hash/address.py +0 -79
- coinex/ccxt/static_dependencies/starknet/hash/compiled_class_hash_objects.py +0 -111
- coinex/ccxt/static_dependencies/starknet/hash/selector.py +0 -16
- coinex/ccxt/static_dependencies/starknet/hash/storage.py +0 -12
- coinex/ccxt/static_dependencies/starknet/hash/utils.py +0 -78
- coinex/ccxt/static_dependencies/starknet/models/__init__.py +0 -0
- coinex/ccxt/static_dependencies/starknet/models/typed_data.py +0 -45
- coinex/ccxt/static_dependencies/starknet/serialization/__init__.py +0 -24
- coinex/ccxt/static_dependencies/starknet/serialization/_calldata_reader.py +0 -40
- coinex/ccxt/static_dependencies/starknet/serialization/_context.py +0 -142
- coinex/ccxt/static_dependencies/starknet/serialization/data_serializers/__init__.py +0 -10
- coinex/ccxt/static_dependencies/starknet/serialization/data_serializers/_common.py +0 -82
- coinex/ccxt/static_dependencies/starknet/serialization/data_serializers/array_serializer.py +0 -43
- coinex/ccxt/static_dependencies/starknet/serialization/data_serializers/bool_serializer.py +0 -37
- coinex/ccxt/static_dependencies/starknet/serialization/data_serializers/byte_array_serializer.py +0 -66
- coinex/ccxt/static_dependencies/starknet/serialization/data_serializers/cairo_data_serializer.py +0 -71
- coinex/ccxt/static_dependencies/starknet/serialization/data_serializers/enum_serializer.py +0 -71
- coinex/ccxt/static_dependencies/starknet/serialization/data_serializers/felt_serializer.py +0 -50
- coinex/ccxt/static_dependencies/starknet/serialization/data_serializers/named_tuple_serializer.py +0 -58
- coinex/ccxt/static_dependencies/starknet/serialization/data_serializers/option_serializer.py +0 -43
- coinex/ccxt/static_dependencies/starknet/serialization/data_serializers/output_serializer.py +0 -40
- coinex/ccxt/static_dependencies/starknet/serialization/data_serializers/payload_serializer.py +0 -72
- coinex/ccxt/static_dependencies/starknet/serialization/data_serializers/struct_serializer.py +0 -36
- coinex/ccxt/static_dependencies/starknet/serialization/data_serializers/tuple_serializer.py +0 -36
- coinex/ccxt/static_dependencies/starknet/serialization/data_serializers/uint256_serializer.py +0 -76
- coinex/ccxt/static_dependencies/starknet/serialization/data_serializers/uint_serializer.py +0 -100
- coinex/ccxt/static_dependencies/starknet/serialization/data_serializers/unit_serializer.py +0 -32
- coinex/ccxt/static_dependencies/starknet/serialization/errors.py +0 -10
- coinex/ccxt/static_dependencies/starknet/serialization/factory.py +0 -229
- coinex/ccxt/static_dependencies/starknet/serialization/function_serialization_adapter.py +0 -110
- coinex/ccxt/static_dependencies/starknet/serialization/tuple_dataclass.py +0 -59
- coinex/ccxt/static_dependencies/starknet/utils/__init__.py +0 -0
- coinex/ccxt/static_dependencies/starknet/utils/constructor_args_translator.py +0 -86
- coinex/ccxt/static_dependencies/starknet/utils/iterable.py +0 -13
- coinex/ccxt/static_dependencies/starknet/utils/schema.py +0 -13
- coinex/ccxt/static_dependencies/starknet/utils/typed_data.py +0 -182
- coinex/ccxt/static_dependencies/starkware/__init__.py +0 -0
- coinex/ccxt/static_dependencies/starkware/crypto/__init__.py +0 -0
- coinex/ccxt/static_dependencies/starkware/crypto/fast_pedersen_hash.py +0 -50
- coinex/ccxt/static_dependencies/starkware/crypto/math_utils.py +0 -78
- coinex/ccxt/static_dependencies/starkware/crypto/signature.py +0 -2344
- coinex/ccxt/static_dependencies/starkware/crypto/utils.py +0 -63
- coinex/ccxt/static_dependencies/sympy/__init__.py +0 -0
- coinex/ccxt/static_dependencies/sympy/core/__init__.py +0 -0
- coinex/ccxt/static_dependencies/sympy/core/intfunc.py +0 -35
- coinex/ccxt/static_dependencies/sympy/external/__init__.py +0 -0
- coinex/ccxt/static_dependencies/sympy/external/gmpy.py +0 -345
- coinex/ccxt/static_dependencies/sympy/external/importtools.py +0 -187
- coinex/ccxt/static_dependencies/sympy/external/ntheory.py +0 -637
- coinex/ccxt/static_dependencies/sympy/external/pythonmpq.py +0 -341
- coinex/ccxt/static_dependencies/toolz/__init__.py +0 -26
- coinex/ccxt/static_dependencies/toolz/_signatures.py +0 -784
- coinex/ccxt/static_dependencies/toolz/_version.py +0 -520
- coinex/ccxt/static_dependencies/toolz/compatibility.py +0 -30
- coinex/ccxt/static_dependencies/toolz/curried/__init__.py +0 -101
- coinex/ccxt/static_dependencies/toolz/curried/exceptions.py +0 -22
- coinex/ccxt/static_dependencies/toolz/curried/operator.py +0 -22
- coinex/ccxt/static_dependencies/toolz/dicttoolz.py +0 -339
- coinex/ccxt/static_dependencies/toolz/functoolz.py +0 -1049
- coinex/ccxt/static_dependencies/toolz/itertoolz.py +0 -1057
- coinex/ccxt/static_dependencies/toolz/recipes.py +0 -46
- coinex/ccxt/static_dependencies/toolz/utils.py +0 -9
- coinex/ccxt/static_dependencies/typing_inspect/__init__.py +0 -0
- coinex/ccxt/static_dependencies/typing_inspect/typing_inspect.py +0 -851
- coinex_api-0.0.14.dist-info/RECORD +0 -288
- {coinex_api-0.0.14.dist-info → coinex_api-0.0.15.dist-info}/WHEEL +0 -0
@@ -1,97 +0,0 @@
|
|
1
|
-
"""A faster version of aiohttp's websocket client that uses select and other optimizations"""
|
2
|
-
|
3
|
-
import asyncio
|
4
|
-
import socket
|
5
|
-
import collections
|
6
|
-
from ccxt.async_support.base.ws.aiohttp_client import AiohttpClient
|
7
|
-
from ccxt.base.errors import NetworkError
|
8
|
-
|
9
|
-
|
10
|
-
class FastClient(AiohttpClient):
|
11
|
-
transport = None
|
12
|
-
|
13
|
-
def __init__(self, url, on_message_callback, on_error_callback, on_close_callback, on_connected_callback, config={}):
|
14
|
-
super(FastClient, self).__init__(url, on_message_callback, on_error_callback, on_close_callback, on_connected_callback, config)
|
15
|
-
# instead of using the deque in aiohttp we implement our own for speed
|
16
|
-
# https://github.com/aio-libs/aiohttp/blob/1d296d549050aa335ef542421b8b7dad788246d5/aiohttp/streams.py#L534
|
17
|
-
self.stack = collections.deque()
|
18
|
-
self.callback_scheduled = False
|
19
|
-
|
20
|
-
def receive_loop(self):
|
21
|
-
def handler():
|
22
|
-
if not self.stack:
|
23
|
-
self.callback_scheduled = False
|
24
|
-
return
|
25
|
-
message = self.stack.popleft()
|
26
|
-
try:
|
27
|
-
self.handle_message(message)
|
28
|
-
except Exception as error:
|
29
|
-
self.reject(error)
|
30
|
-
self.asyncio_loop.call_soon(handler)
|
31
|
-
|
32
|
-
def feed_data(message, size):
|
33
|
-
if not self.callback_scheduled:
|
34
|
-
self.callback_scheduled = True
|
35
|
-
self.asyncio_loop.call_soon(handler)
|
36
|
-
self.stack.append(message)
|
37
|
-
|
38
|
-
def feed_eof():
|
39
|
-
if self.connection._close_code == 1000: # OK close
|
40
|
-
self.on_close(1000)
|
41
|
-
else:
|
42
|
-
self.on_error(NetworkError("Abnormal closure of client")) # ABNORMAL_CLOSURE
|
43
|
-
|
44
|
-
def wrapper(func):
|
45
|
-
def parse_frame(buf):
|
46
|
-
while self.stack:
|
47
|
-
self.handle_message(self.stack.popleft())
|
48
|
-
return func(buf)
|
49
|
-
return parse_frame
|
50
|
-
|
51
|
-
async def close(code=1000, message=b''):
|
52
|
-
# this is needed because our other wrappers break the closing process
|
53
|
-
# we also don't wait for a response to the close message to speed it up
|
54
|
-
# this code is adapted from aiohttp client_ws.py
|
55
|
-
_self = self.connection
|
56
|
-
if not _self._closed:
|
57
|
-
_self._cancel_heartbeat()
|
58
|
-
_self._closed = True
|
59
|
-
try:
|
60
|
-
await _self._writer.close(code, message)
|
61
|
-
_self._response.close()
|
62
|
-
_self._close_code = 1000
|
63
|
-
except asyncio.CancelledError:
|
64
|
-
_self._response.close()
|
65
|
-
_self._close_code = 1006
|
66
|
-
raise
|
67
|
-
except Exception as exc:
|
68
|
-
_self._close_code = 1006
|
69
|
-
_self._exception = exc
|
70
|
-
return True
|
71
|
-
|
72
|
-
connection = self.connection._conn
|
73
|
-
if connection.closed:
|
74
|
-
# connection got terminated after the connection was made and before the receive loop ran
|
75
|
-
self.on_close(1006)
|
76
|
-
return
|
77
|
-
self.transport = connection.transport
|
78
|
-
# increase the RCVBUF so that the tcp window size can be larger
|
79
|
-
sock = self.transport.get_extra_info('socket')
|
80
|
-
current_size = sock.getsockopt(socket.SOL_SOCKET, socket.SO_RCVBUF)
|
81
|
-
# 2 mebibytes is a performance value
|
82
|
-
new_size = max(current_size, 2097152)
|
83
|
-
sock.setsockopt(socket.SOL_SOCKET, socket.SO_RCVBUF, new_size)
|
84
|
-
|
85
|
-
ws_reader = connection.protocol._payload_parser
|
86
|
-
ws_reader.parse_frame = wrapper(ws_reader.parse_frame)
|
87
|
-
ws_reader.queue.feed_data = feed_data
|
88
|
-
ws_reader.queue.feed_eof = feed_eof
|
89
|
-
self.connection.close = close
|
90
|
-
# return a future so super class won't complain
|
91
|
-
return asyncio.sleep(0)
|
92
|
-
|
93
|
-
def reset(self, error):
|
94
|
-
super(FastClient, self).reset(error)
|
95
|
-
self.stack.clear()
|
96
|
-
if self.transport:
|
97
|
-
self.transport.abort()
|
@@ -1,59 +0,0 @@
|
|
1
|
-
# -*- coding: utf-8 -*-
|
2
|
-
|
3
|
-
from zlib import decompress, MAX_WBITS
|
4
|
-
from base64 import b64decode
|
5
|
-
from gzip import GzipFile
|
6
|
-
from io import BytesIO
|
7
|
-
import time
|
8
|
-
import datetime
|
9
|
-
|
10
|
-
|
11
|
-
def inflate(data):
|
12
|
-
return decompress(data, -MAX_WBITS)
|
13
|
-
|
14
|
-
|
15
|
-
def inflate64(data):
|
16
|
-
return inflate(b64decode(data))
|
17
|
-
|
18
|
-
|
19
|
-
def gunzip(data):
|
20
|
-
return GzipFile('', 'rb', 9, BytesIO(data)).read().decode('utf-8')
|
21
|
-
|
22
|
-
|
23
|
-
# Tmp : added methods below to avoid circular imports between exchange.py and aiohttp.py
|
24
|
-
|
25
|
-
def milliseconds():
|
26
|
-
return int(time.time() * 1000)
|
27
|
-
|
28
|
-
|
29
|
-
def iso8601(timestamp=None):
|
30
|
-
if timestamp is None:
|
31
|
-
return timestamp
|
32
|
-
if not isinstance(timestamp, int):
|
33
|
-
return None
|
34
|
-
if int(timestamp) < 0:
|
35
|
-
return None
|
36
|
-
try:
|
37
|
-
utc = datetime.datetime.fromtimestamp(timestamp // 1000, datetime.timezone.utc)
|
38
|
-
return utc.strftime('%Y-%m-%dT%H:%M:%S.%f')[:-6] + "{:03d}".format(int(timestamp) % 1000) + 'Z'
|
39
|
-
except (TypeError, OverflowError, OSError):
|
40
|
-
return None
|
41
|
-
|
42
|
-
|
43
|
-
def is_json_encoded_object(input):
|
44
|
-
return (isinstance(input, str) and
|
45
|
-
(len(input) >= 2) and
|
46
|
-
((input[0] == '{') or (input[0] == '[')))
|
47
|
-
|
48
|
-
|
49
|
-
def deep_extend(*args):
|
50
|
-
result = None
|
51
|
-
for arg in args:
|
52
|
-
if isinstance(arg, dict):
|
53
|
-
if not isinstance(result, dict):
|
54
|
-
result = {}
|
55
|
-
for key in arg:
|
56
|
-
result[key] = deep_extend(result[key] if key in result else None, arg[key])
|
57
|
-
else:
|
58
|
-
result = arg
|
59
|
-
return result
|
@@ -1,69 +0,0 @@
|
|
1
|
-
import asyncio
|
2
|
-
from ccxt import ExchangeClosedByUser
|
3
|
-
|
4
|
-
class Future(asyncio.Future):
|
5
|
-
|
6
|
-
is_race_future = False
|
7
|
-
|
8
|
-
def resolve(self, result=None):
|
9
|
-
if not self.done():
|
10
|
-
try:
|
11
|
-
self.set_result(result)
|
12
|
-
except BaseException as e:
|
13
|
-
print("Error in Future.resolve")
|
14
|
-
raise e
|
15
|
-
|
16
|
-
def reject(self, error=None):
|
17
|
-
if not self.done():
|
18
|
-
# If not an exception, wrap it in a generic Exception
|
19
|
-
if not isinstance(error, BaseException):
|
20
|
-
error = Exception(error)
|
21
|
-
try:
|
22
|
-
self.set_exception(error)
|
23
|
-
except BaseException as e:
|
24
|
-
print("Error in Future.reject")
|
25
|
-
raise e
|
26
|
-
|
27
|
-
@classmethod
|
28
|
-
def race(cls, futures):
|
29
|
-
future = Future()
|
30
|
-
for f in futures:
|
31
|
-
f.is_race_future = True
|
32
|
-
coro = asyncio.wait(futures, return_when=asyncio.FIRST_COMPLETED)
|
33
|
-
task = asyncio.create_task(coro)
|
34
|
-
|
35
|
-
def callback(done):
|
36
|
-
try:
|
37
|
-
complete, pending = done.result()
|
38
|
-
# check for exceptions
|
39
|
-
for i, f in enumerate(complete):
|
40
|
-
try:
|
41
|
-
f.result()
|
42
|
-
except ExchangeClosedByUser as e:
|
43
|
-
if len(pending) == 0 and i == len(complete) - 1:
|
44
|
-
future.reject(e)
|
45
|
-
# wait for all the sub promises to be reject before rejecting future
|
46
|
-
continue
|
47
|
-
except asyncio.CancelledError as e:
|
48
|
-
continue
|
49
|
-
except Exception as e:
|
50
|
-
future.reject(e)
|
51
|
-
return
|
52
|
-
# no exceptions return first result
|
53
|
-
futures_list = list(complete)
|
54
|
-
|
55
|
-
are_all_canceled = all([f.cancelled() for f in futures_list])
|
56
|
-
if are_all_canceled:
|
57
|
-
future.reject(ExchangeClosedByUser('Connection closed by the user'))
|
58
|
-
return
|
59
|
-
|
60
|
-
first = futures_list[0]
|
61
|
-
|
62
|
-
first_result = first.result()
|
63
|
-
future.resolve(first_result)
|
64
|
-
except asyncio.CancelledError as e:
|
65
|
-
future.reject(e)
|
66
|
-
except Exception as e:
|
67
|
-
future.reject(e)
|
68
|
-
task.add_done_callback(callback)
|
69
|
-
return future
|
@@ -1,78 +0,0 @@
|
|
1
|
-
# -*- coding: utf-8 -*-
|
2
|
-
|
3
|
-
from ccxt.async_support.base.ws import order_book_side
|
4
|
-
from ccxt import Exchange
|
5
|
-
import sys
|
6
|
-
|
7
|
-
|
8
|
-
class OrderBook(dict):
|
9
|
-
def __init__(self, snapshot={}, depth=None):
|
10
|
-
self.cache = []
|
11
|
-
depth = depth or sys.maxsize
|
12
|
-
defaults = {
|
13
|
-
'bids': [],
|
14
|
-
'asks': [],
|
15
|
-
'timestamp': None,
|
16
|
-
'datetime': None,
|
17
|
-
'nonce': None,
|
18
|
-
'symbol': None,
|
19
|
-
}
|
20
|
-
# do not mutate snapshot
|
21
|
-
defaults.update(snapshot)
|
22
|
-
if not isinstance(defaults['asks'], order_book_side.OrderBookSide):
|
23
|
-
defaults['asks'] = order_book_side.Asks(defaults['asks'], depth)
|
24
|
-
if not isinstance(defaults['bids'], order_book_side.OrderBookSide):
|
25
|
-
defaults['bids'] = order_book_side.Bids(defaults['bids'], depth)
|
26
|
-
defaults['datetime'] = Exchange.iso8601(defaults.get('timestamp'))
|
27
|
-
# merge to self
|
28
|
-
super(OrderBook, self).__init__(defaults)
|
29
|
-
|
30
|
-
def limit(self):
|
31
|
-
self['asks'].limit()
|
32
|
-
self['bids'].limit()
|
33
|
-
return self
|
34
|
-
|
35
|
-
def reset(self, snapshot={}):
|
36
|
-
self['asks']._index.clear()
|
37
|
-
self['asks'].clear()
|
38
|
-
for ask in snapshot.get('asks', []):
|
39
|
-
self['asks'].storeArray(ask)
|
40
|
-
self['bids']._index.clear()
|
41
|
-
self['bids'].clear()
|
42
|
-
for bid in snapshot.get('bids', []):
|
43
|
-
self['bids'].storeArray(bid)
|
44
|
-
self['nonce'] = snapshot.get('nonce')
|
45
|
-
self['timestamp'] = snapshot.get('timestamp')
|
46
|
-
self['datetime'] = Exchange.iso8601(self['timestamp'])
|
47
|
-
self['symbol'] = snapshot.get('symbol')
|
48
|
-
|
49
|
-
def update(self, snapshot):
|
50
|
-
nonce = snapshot.get('nonce')
|
51
|
-
if nonce is not None and self['nonce'] is not None and nonce < self['nonce']:
|
52
|
-
return self
|
53
|
-
self.reset(snapshot)
|
54
|
-
|
55
|
-
# -----------------------------------------------------------------------------
|
56
|
-
# overwrites absolute volumes at price levels
|
57
|
-
# or deletes price levels based on order counts (3rd value in a bidask delta)
|
58
|
-
|
59
|
-
|
60
|
-
class CountedOrderBook(OrderBook):
|
61
|
-
def __init__(self, snapshot={}, depth=None):
|
62
|
-
copy = Exchange.extend(snapshot, {
|
63
|
-
'asks': order_book_side.CountedAsks(snapshot.get('asks', []), depth),
|
64
|
-
'bids': order_book_side.CountedBids(snapshot.get('bids', []), depth),
|
65
|
-
})
|
66
|
-
super(CountedOrderBook, self).__init__(copy, depth)
|
67
|
-
|
68
|
-
# -----------------------------------------------------------------------------
|
69
|
-
# indexed by order ids (3rd value in a bidask delta)
|
70
|
-
|
71
|
-
|
72
|
-
class IndexedOrderBook(OrderBook):
|
73
|
-
def __init__(self, snapshot={}, depth=None):
|
74
|
-
copy = Exchange.extend(snapshot, {
|
75
|
-
'asks': order_book_side.IndexedAsks(snapshot.get('asks', []), depth),
|
76
|
-
'bids': order_book_side.IndexedBids(snapshot.get('bids', []), depth),
|
77
|
-
})
|
78
|
-
super(IndexedOrderBook, self).__init__(copy, depth)
|
@@ -1,174 +0,0 @@
|
|
1
|
-
# -*- coding: utf-8 -*-
|
2
|
-
|
3
|
-
import sys
|
4
|
-
import bisect
|
5
|
-
|
6
|
-
"""Author: Carlo Revelli"""
|
7
|
-
"""Fast bisect bindings"""
|
8
|
-
"""https://github.com/python/cpython/blob/master/Modules/_bisectmodule.c"""
|
9
|
-
"""Performs a binary search when inserting keys in sorted order"""
|
10
|
-
|
11
|
-
|
12
|
-
class OrderBookSide(list):
|
13
|
-
side = None # set to True for bids and False for asks
|
14
|
-
|
15
|
-
def __init__(self, deltas=[], depth=None):
|
16
|
-
super(OrderBookSide, self).__init__()
|
17
|
-
self._depth = depth or sys.maxsize
|
18
|
-
self._n = sys.maxsize
|
19
|
-
# parallel to self
|
20
|
-
self._index = []
|
21
|
-
for delta in deltas:
|
22
|
-
self.storeArray(list(delta))
|
23
|
-
|
24
|
-
def store_array(self, delta):
|
25
|
-
return self.storeArray(delta)
|
26
|
-
|
27
|
-
def storeArray(self, delta):
|
28
|
-
price = delta[0]
|
29
|
-
size = delta[1]
|
30
|
-
index_price = -price if self.side else price
|
31
|
-
index = bisect.bisect_left(self._index, index_price)
|
32
|
-
if size:
|
33
|
-
if index < len(self._index) and self._index[index] == index_price:
|
34
|
-
self[index][1] = size
|
35
|
-
else:
|
36
|
-
self._index.insert(index, index_price)
|
37
|
-
self.insert(index, delta)
|
38
|
-
elif index < len(self._index) and self._index[index] == index_price:
|
39
|
-
del self._index[index]
|
40
|
-
del self[index]
|
41
|
-
|
42
|
-
def store(self, price, size):
|
43
|
-
self.storeArray([price, size])
|
44
|
-
|
45
|
-
def limit(self):
|
46
|
-
difference = len(self) - self._depth
|
47
|
-
for _ in range(difference):
|
48
|
-
self.remove_index(self.pop())
|
49
|
-
self._index.pop()
|
50
|
-
|
51
|
-
def remove_index(self, order):
|
52
|
-
pass
|
53
|
-
|
54
|
-
def __len__(self):
|
55
|
-
length = super(OrderBookSide, self).__len__()
|
56
|
-
return min(length, self._n)
|
57
|
-
|
58
|
-
def __getitem__(self, item):
|
59
|
-
if isinstance(item, slice):
|
60
|
-
start, stop, step = item.indices(len(self))
|
61
|
-
return [self[i] for i in range(start, stop, step)]
|
62
|
-
else:
|
63
|
-
return super(OrderBookSide, self).__getitem__(item)
|
64
|
-
|
65
|
-
def __eq__(self, other):
|
66
|
-
if isinstance(other, list):
|
67
|
-
return list(self) == other
|
68
|
-
return super(OrderBookSide, self).__eq__(other)
|
69
|
-
|
70
|
-
def __repr__(self):
|
71
|
-
return str(list(self))
|
72
|
-
|
73
|
-
# -----------------------------------------------------------------------------
|
74
|
-
# overwrites absolute volumes at price levels
|
75
|
-
# or deletes price levels based on order counts (3rd value in a bidask delta)
|
76
|
-
# this class stores vector arrays of values indexed by price
|
77
|
-
|
78
|
-
|
79
|
-
class CountedOrderBookSide(OrderBookSide):
|
80
|
-
def __init__(self, deltas=[], depth=None):
|
81
|
-
super(CountedOrderBookSide, self).__init__(deltas, depth)
|
82
|
-
|
83
|
-
def storeArray(self, delta):
|
84
|
-
price = delta[0]
|
85
|
-
size = delta[1]
|
86
|
-
count = delta[2]
|
87
|
-
index_price = -price if self.side else price
|
88
|
-
index = bisect.bisect_left(self._index, index_price)
|
89
|
-
if size and count:
|
90
|
-
if index < len(self._index) and self._index[index] == index_price:
|
91
|
-
self[index][1] = size
|
92
|
-
self[index][2] = count
|
93
|
-
else:
|
94
|
-
self._index.insert(index, index_price)
|
95
|
-
self.insert(index, delta)
|
96
|
-
elif index < len(self._index) and self._index[index] == index_price:
|
97
|
-
del self._index[index]
|
98
|
-
del self[index]
|
99
|
-
|
100
|
-
def store(self, price, size, count):
|
101
|
-
self.storeArray([price, size, count])
|
102
|
-
|
103
|
-
# -----------------------------------------------------------------------------
|
104
|
-
# indexed by order ids (3rd value in a bidask delta)
|
105
|
-
|
106
|
-
|
107
|
-
class IndexedOrderBookSide(OrderBookSide):
|
108
|
-
def __init__(self, deltas=[], depth=None):
|
109
|
-
self._hashmap = {}
|
110
|
-
super(IndexedOrderBookSide, self).__init__(deltas, depth)
|
111
|
-
|
112
|
-
def storeArray(self, delta):
|
113
|
-
price = delta[0]
|
114
|
-
if price is not None:
|
115
|
-
index_price = -price if self.side else price
|
116
|
-
else:
|
117
|
-
index_price = None
|
118
|
-
size = delta[1]
|
119
|
-
order_id = delta[2]
|
120
|
-
if size:
|
121
|
-
if order_id in self._hashmap:
|
122
|
-
old_price = self._hashmap[order_id]
|
123
|
-
index_price = index_price or old_price
|
124
|
-
# in case the price is not defined
|
125
|
-
delta[0] = abs(index_price)
|
126
|
-
# matches if price is not defined or if price matches
|
127
|
-
if index_price == old_price:
|
128
|
-
# just overwrite the old index
|
129
|
-
index = bisect.bisect_left(self._index, index_price)
|
130
|
-
while self[index][2] != order_id:
|
131
|
-
index += 1
|
132
|
-
self._index[index] = index_price
|
133
|
-
self[index] = delta
|
134
|
-
return
|
135
|
-
else:
|
136
|
-
# remove old price level
|
137
|
-
old_index = bisect.bisect_left(self._index, old_price)
|
138
|
-
while self[old_index][2] != order_id:
|
139
|
-
old_index += 1
|
140
|
-
del self._index[old_index]
|
141
|
-
del self[old_index]
|
142
|
-
# insert new price level
|
143
|
-
self._hashmap[order_id] = index_price
|
144
|
-
index = bisect.bisect_left(self._index, index_price)
|
145
|
-
while index < len (self._index) and self._index[index] == index_price and self[index][2] < order_id:
|
146
|
-
index += 1
|
147
|
-
self._index.insert(index, index_price)
|
148
|
-
self.insert(index, delta)
|
149
|
-
elif order_id in self._hashmap:
|
150
|
-
old_price = self._hashmap[order_id]
|
151
|
-
index = bisect.bisect_left(self._index, old_price)
|
152
|
-
while self[index][2] != order_id:
|
153
|
-
index += 1
|
154
|
-
del self._index[index]
|
155
|
-
del self[index]
|
156
|
-
del self._hashmap[order_id]
|
157
|
-
|
158
|
-
def remove_index(self, order):
|
159
|
-
order_id = order[2]
|
160
|
-
if order_id in self._hashmap:
|
161
|
-
del self._hashmap[order_id]
|
162
|
-
|
163
|
-
def store(self, price, size, order_id):
|
164
|
-
self.storeArray([price, size, order_id])
|
165
|
-
|
166
|
-
# -----------------------------------------------------------------------------
|
167
|
-
# a more elegant syntax is possible here, but native inheritance is portable
|
168
|
-
|
169
|
-
class Asks(OrderBookSide): side = False # noqa
|
170
|
-
class Bids(OrderBookSide): side = True # noqa
|
171
|
-
class CountedAsks(CountedOrderBookSide): side = False # noqa
|
172
|
-
class CountedBids(CountedOrderBookSide): side = True # noqa
|
173
|
-
class IndexedAsks(IndexedOrderBookSide): side = False # noqa
|
174
|
-
class IndexedBids(IndexedOrderBookSide): side = True # noqa
|