coinex-api 0.0.12__py3-none-any.whl → 0.0.14__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/__init__.py +7 -0
- coinex/ccxt/__init__.py +101 -0
- coinex/ccxt/abstract/coinex.py +237 -0
- coinex/ccxt/async_support/__init__.py +80 -0
- coinex/ccxt/async_support/base/__init__.py +1 -0
- coinex/ccxt/async_support/base/exchange.py +2100 -0
- coinex/ccxt/async_support/base/throttler.py +50 -0
- coinex/ccxt/async_support/base/ws/__init__.py +38 -0
- coinex/ccxt/async_support/base/ws/aiohttp_client.py +147 -0
- coinex/ccxt/async_support/base/ws/cache.py +213 -0
- coinex/ccxt/async_support/base/ws/client.py +214 -0
- coinex/ccxt/async_support/base/ws/fast_client.py +97 -0
- coinex/ccxt/async_support/base/ws/functions.py +59 -0
- coinex/ccxt/async_support/base/ws/future.py +69 -0
- coinex/ccxt/async_support/base/ws/order_book.py +78 -0
- coinex/ccxt/async_support/base/ws/order_book_side.py +174 -0
- coinex/ccxt/async_support/coinex.py +5833 -0
- coinex/ccxt/base/__init__.py +27 -0
- coinex/ccxt/base/decimal_to_precision.py +174 -0
- coinex/ccxt/base/errors.py +267 -0
- coinex/ccxt/base/exchange.py +6769 -0
- coinex/ccxt/base/precise.py +297 -0
- coinex/ccxt/base/types.py +577 -0
- coinex/ccxt/coinex.py +5832 -0
- coinex/ccxt/pro/__init__.py +21 -0
- coinex/ccxt/pro/coinex.py +1366 -0
- coinex/ccxt/static_dependencies/README.md +1 -0
- coinex/ccxt/static_dependencies/__init__.py +1 -0
- coinex/ccxt/static_dependencies/ecdsa/__init__.py +14 -0
- coinex/ccxt/static_dependencies/ecdsa/_version.py +520 -0
- coinex/ccxt/static_dependencies/ecdsa/curves.py +56 -0
- coinex/ccxt/static_dependencies/ecdsa/der.py +221 -0
- coinex/ccxt/static_dependencies/ecdsa/ecdsa.py +310 -0
- coinex/ccxt/static_dependencies/ecdsa/ellipticcurve.py +197 -0
- coinex/ccxt/static_dependencies/ecdsa/keys.py +332 -0
- coinex/ccxt/static_dependencies/ecdsa/numbertheory.py +531 -0
- coinex/ccxt/static_dependencies/ecdsa/rfc6979.py +100 -0
- coinex/ccxt/static_dependencies/ecdsa/util.py +266 -0
- coinex/ccxt/static_dependencies/ethereum/__init__.py +7 -0
- coinex/ccxt/static_dependencies/ethereum/abi/__init__.py +16 -0
- coinex/ccxt/static_dependencies/ethereum/abi/abi.py +19 -0
- coinex/ccxt/static_dependencies/ethereum/abi/base.py +152 -0
- coinex/ccxt/static_dependencies/ethereum/abi/codec.py +217 -0
- coinex/ccxt/static_dependencies/ethereum/abi/constants.py +3 -0
- coinex/ccxt/static_dependencies/ethereum/abi/decoding.py +565 -0
- coinex/ccxt/static_dependencies/ethereum/abi/encoding.py +720 -0
- coinex/ccxt/static_dependencies/ethereum/abi/exceptions.py +139 -0
- coinex/ccxt/static_dependencies/ethereum/abi/grammar.py +443 -0
- coinex/ccxt/static_dependencies/ethereum/abi/packed.py +13 -0
- coinex/ccxt/static_dependencies/ethereum/abi/py.typed +0 -0
- coinex/ccxt/static_dependencies/ethereum/abi/registry.py +643 -0
- coinex/ccxt/static_dependencies/ethereum/abi/tools/__init__.py +3 -0
- coinex/ccxt/static_dependencies/ethereum/abi/tools/_strategies.py +230 -0
- coinex/ccxt/static_dependencies/ethereum/abi/utils/__init__.py +0 -0
- coinex/ccxt/static_dependencies/ethereum/abi/utils/numeric.py +83 -0
- coinex/ccxt/static_dependencies/ethereum/abi/utils/padding.py +27 -0
- coinex/ccxt/static_dependencies/ethereum/abi/utils/string.py +19 -0
- coinex/ccxt/static_dependencies/ethereum/account/__init__.py +3 -0
- coinex/ccxt/static_dependencies/ethereum/account/encode_typed_data/__init__.py +4 -0
- coinex/ccxt/static_dependencies/ethereum/account/encode_typed_data/encoding_and_hashing.py +239 -0
- coinex/ccxt/static_dependencies/ethereum/account/encode_typed_data/helpers.py +40 -0
- coinex/ccxt/static_dependencies/ethereum/account/messages.py +263 -0
- coinex/ccxt/static_dependencies/ethereum/account/py.typed +0 -0
- coinex/ccxt/static_dependencies/ethereum/hexbytes/__init__.py +5 -0
- coinex/ccxt/static_dependencies/ethereum/hexbytes/_utils.py +54 -0
- coinex/ccxt/static_dependencies/ethereum/hexbytes/main.py +65 -0
- coinex/ccxt/static_dependencies/ethereum/hexbytes/py.typed +0 -0
- coinex/ccxt/static_dependencies/ethereum/typing/__init__.py +63 -0
- coinex/ccxt/static_dependencies/ethereum/typing/abi.py +6 -0
- coinex/ccxt/static_dependencies/ethereum/typing/bls.py +7 -0
- coinex/ccxt/static_dependencies/ethereum/typing/discovery.py +5 -0
- coinex/ccxt/static_dependencies/ethereum/typing/encoding.py +7 -0
- coinex/ccxt/static_dependencies/ethereum/typing/enums.py +17 -0
- coinex/ccxt/static_dependencies/ethereum/typing/ethpm.py +9 -0
- coinex/ccxt/static_dependencies/ethereum/typing/evm.py +20 -0
- coinex/ccxt/static_dependencies/ethereum/typing/networks.py +1122 -0
- coinex/ccxt/static_dependencies/ethereum/typing/py.typed +0 -0
- coinex/ccxt/static_dependencies/ethereum/utils/__init__.py +115 -0
- coinex/ccxt/static_dependencies/ethereum/utils/abi.py +72 -0
- coinex/ccxt/static_dependencies/ethereum/utils/address.py +171 -0
- coinex/ccxt/static_dependencies/ethereum/utils/applicators.py +151 -0
- coinex/ccxt/static_dependencies/ethereum/utils/conversions.py +190 -0
- coinex/ccxt/static_dependencies/ethereum/utils/currency.py +107 -0
- coinex/ccxt/static_dependencies/ethereum/utils/curried/__init__.py +269 -0
- coinex/ccxt/static_dependencies/ethereum/utils/debug.py +20 -0
- coinex/ccxt/static_dependencies/ethereum/utils/decorators.py +132 -0
- coinex/ccxt/static_dependencies/ethereum/utils/encoding.py +6 -0
- coinex/ccxt/static_dependencies/ethereum/utils/exceptions.py +4 -0
- coinex/ccxt/static_dependencies/ethereum/utils/functional.py +75 -0
- coinex/ccxt/static_dependencies/ethereum/utils/hexadecimal.py +74 -0
- coinex/ccxt/static_dependencies/ethereum/utils/humanize.py +188 -0
- coinex/ccxt/static_dependencies/ethereum/utils/logging.py +159 -0
- coinex/ccxt/static_dependencies/ethereum/utils/module_loading.py +31 -0
- coinex/ccxt/static_dependencies/ethereum/utils/numeric.py +43 -0
- coinex/ccxt/static_dependencies/ethereum/utils/py.typed +0 -0
- coinex/ccxt/static_dependencies/ethereum/utils/toolz.py +76 -0
- coinex/ccxt/static_dependencies/ethereum/utils/types.py +54 -0
- coinex/ccxt/static_dependencies/ethereum/utils/typing/__init__.py +18 -0
- coinex/ccxt/static_dependencies/ethereum/utils/typing/misc.py +14 -0
- coinex/ccxt/static_dependencies/ethereum/utils/units.py +31 -0
- coinex/ccxt/static_dependencies/keccak/__init__.py +3 -0
- coinex/ccxt/static_dependencies/keccak/keccak.py +197 -0
- coinex/ccxt/static_dependencies/lark/__init__.py +38 -0
- coinex/ccxt/static_dependencies/lark/__pyinstaller/__init__.py +6 -0
- coinex/ccxt/static_dependencies/lark/__pyinstaller/hook-lark.py +14 -0
- coinex/ccxt/static_dependencies/lark/ast_utils.py +59 -0
- coinex/ccxt/static_dependencies/lark/common.py +86 -0
- coinex/ccxt/static_dependencies/lark/exceptions.py +292 -0
- coinex/ccxt/static_dependencies/lark/grammar.py +130 -0
- coinex/ccxt/static_dependencies/lark/grammars/__init__.py +0 -0
- coinex/ccxt/static_dependencies/lark/grammars/common.lark +59 -0
- coinex/ccxt/static_dependencies/lark/grammars/lark.lark +62 -0
- coinex/ccxt/static_dependencies/lark/grammars/python.lark +302 -0
- coinex/ccxt/static_dependencies/lark/grammars/unicode.lark +7 -0
- coinex/ccxt/static_dependencies/lark/indenter.py +143 -0
- coinex/ccxt/static_dependencies/lark/lark.py +658 -0
- coinex/ccxt/static_dependencies/lark/lexer.py +678 -0
- coinex/ccxt/static_dependencies/lark/load_grammar.py +1428 -0
- coinex/ccxt/static_dependencies/lark/parse_tree_builder.py +391 -0
- coinex/ccxt/static_dependencies/lark/parser_frontends.py +257 -0
- coinex/ccxt/static_dependencies/lark/parsers/__init__.py +0 -0
- coinex/ccxt/static_dependencies/lark/parsers/cyk.py +340 -0
- coinex/ccxt/static_dependencies/lark/parsers/earley.py +314 -0
- coinex/ccxt/static_dependencies/lark/parsers/earley_common.py +42 -0
- coinex/ccxt/static_dependencies/lark/parsers/earley_forest.py +801 -0
- coinex/ccxt/static_dependencies/lark/parsers/grammar_analysis.py +203 -0
- coinex/ccxt/static_dependencies/lark/parsers/lalr_analysis.py +332 -0
- coinex/ccxt/static_dependencies/lark/parsers/lalr_interactive_parser.py +158 -0
- coinex/ccxt/static_dependencies/lark/parsers/lalr_parser.py +122 -0
- coinex/ccxt/static_dependencies/lark/parsers/lalr_parser_state.py +110 -0
- coinex/ccxt/static_dependencies/lark/parsers/xearley.py +165 -0
- coinex/ccxt/static_dependencies/lark/py.typed +0 -0
- coinex/ccxt/static_dependencies/lark/reconstruct.py +107 -0
- coinex/ccxt/static_dependencies/lark/tools/__init__.py +70 -0
- coinex/ccxt/static_dependencies/lark/tools/nearley.py +202 -0
- coinex/ccxt/static_dependencies/lark/tools/serialize.py +32 -0
- coinex/ccxt/static_dependencies/lark/tools/standalone.py +196 -0
- coinex/ccxt/static_dependencies/lark/tree.py +267 -0
- coinex/ccxt/static_dependencies/lark/tree_matcher.py +186 -0
- coinex/ccxt/static_dependencies/lark/tree_templates.py +180 -0
- coinex/ccxt/static_dependencies/lark/utils.py +343 -0
- coinex/ccxt/static_dependencies/lark/visitors.py +596 -0
- coinex/ccxt/static_dependencies/marshmallow/__init__.py +81 -0
- coinex/ccxt/static_dependencies/marshmallow/base.py +65 -0
- coinex/ccxt/static_dependencies/marshmallow/class_registry.py +94 -0
- coinex/ccxt/static_dependencies/marshmallow/decorators.py +231 -0
- coinex/ccxt/static_dependencies/marshmallow/error_store.py +60 -0
- coinex/ccxt/static_dependencies/marshmallow/exceptions.py +71 -0
- coinex/ccxt/static_dependencies/marshmallow/fields.py +2114 -0
- coinex/ccxt/static_dependencies/marshmallow/orderedset.py +89 -0
- coinex/ccxt/static_dependencies/marshmallow/py.typed +0 -0
- coinex/ccxt/static_dependencies/marshmallow/schema.py +1228 -0
- coinex/ccxt/static_dependencies/marshmallow/types.py +12 -0
- coinex/ccxt/static_dependencies/marshmallow/utils.py +378 -0
- coinex/ccxt/static_dependencies/marshmallow/validate.py +678 -0
- coinex/ccxt/static_dependencies/marshmallow/warnings.py +2 -0
- coinex/ccxt/static_dependencies/marshmallow_dataclass/__init__.py +1047 -0
- coinex/ccxt/static_dependencies/marshmallow_dataclass/collection_field.py +51 -0
- coinex/ccxt/static_dependencies/marshmallow_dataclass/lazy_class_attribute.py +45 -0
- coinex/ccxt/static_dependencies/marshmallow_dataclass/mypy.py +71 -0
- coinex/ccxt/static_dependencies/marshmallow_dataclass/py.typed +0 -0
- coinex/ccxt/static_dependencies/marshmallow_dataclass/typing.py +14 -0
- coinex/ccxt/static_dependencies/marshmallow_dataclass/union_field.py +82 -0
- coinex/ccxt/static_dependencies/marshmallow_oneofschema/__init__.py +1 -0
- coinex/ccxt/static_dependencies/marshmallow_oneofschema/one_of_schema.py +193 -0
- coinex/ccxt/static_dependencies/marshmallow_oneofschema/py.typed +0 -0
- coinex/ccxt/static_dependencies/msgpack/__init__.py +55 -0
- coinex/ccxt/static_dependencies/msgpack/_cmsgpack.pyx +11 -0
- coinex/ccxt/static_dependencies/msgpack/_packer.pyx +374 -0
- coinex/ccxt/static_dependencies/msgpack/_unpacker.pyx +547 -0
- coinex/ccxt/static_dependencies/msgpack/buff_converter.h +8 -0
- coinex/ccxt/static_dependencies/msgpack/exceptions.py +48 -0
- coinex/ccxt/static_dependencies/msgpack/ext.py +168 -0
- coinex/ccxt/static_dependencies/msgpack/fallback.py +951 -0
- coinex/ccxt/static_dependencies/msgpack/pack.h +89 -0
- coinex/ccxt/static_dependencies/msgpack/pack_template.h +820 -0
- coinex/ccxt/static_dependencies/msgpack/sysdep.h +194 -0
- coinex/ccxt/static_dependencies/msgpack/unpack.h +391 -0
- coinex/ccxt/static_dependencies/msgpack/unpack_define.h +95 -0
- coinex/ccxt/static_dependencies/msgpack/unpack_template.h +464 -0
- coinex/ccxt/static_dependencies/parsimonious/__init__.py +10 -0
- coinex/ccxt/static_dependencies/parsimonious/exceptions.py +105 -0
- coinex/ccxt/static_dependencies/parsimonious/expressions.py +479 -0
- coinex/ccxt/static_dependencies/parsimonious/grammar.py +487 -0
- coinex/ccxt/static_dependencies/parsimonious/nodes.py +325 -0
- coinex/ccxt/static_dependencies/parsimonious/utils.py +40 -0
- coinex/ccxt/static_dependencies/starknet/__init__.py +0 -0
- coinex/ccxt/static_dependencies/starknet/abi/v0/__init__.py +2 -0
- coinex/ccxt/static_dependencies/starknet/abi/v0/model.py +44 -0
- coinex/ccxt/static_dependencies/starknet/abi/v0/parser.py +216 -0
- coinex/ccxt/static_dependencies/starknet/abi/v0/schemas.py +72 -0
- coinex/ccxt/static_dependencies/starknet/abi/v0/shape.py +63 -0
- coinex/ccxt/static_dependencies/starknet/abi/v1/__init__.py +2 -0
- coinex/ccxt/static_dependencies/starknet/abi/v1/core_structures.json +14 -0
- coinex/ccxt/static_dependencies/starknet/abi/v1/model.py +39 -0
- coinex/ccxt/static_dependencies/starknet/abi/v1/parser.py +220 -0
- coinex/ccxt/static_dependencies/starknet/abi/v1/parser_transformer.py +179 -0
- coinex/ccxt/static_dependencies/starknet/abi/v1/schemas.py +66 -0
- coinex/ccxt/static_dependencies/starknet/abi/v1/shape.py +47 -0
- coinex/ccxt/static_dependencies/starknet/abi/v2/__init__.py +2 -0
- coinex/ccxt/static_dependencies/starknet/abi/v2/model.py +89 -0
- coinex/ccxt/static_dependencies/starknet/abi/v2/parser.py +293 -0
- coinex/ccxt/static_dependencies/starknet/abi/v2/parser_transformer.py +192 -0
- coinex/ccxt/static_dependencies/starknet/abi/v2/schemas.py +132 -0
- coinex/ccxt/static_dependencies/starknet/abi/v2/shape.py +107 -0
- coinex/ccxt/static_dependencies/starknet/cairo/__init__.py +0 -0
- coinex/ccxt/static_dependencies/starknet/cairo/data_types.py +123 -0
- coinex/ccxt/static_dependencies/starknet/cairo/deprecated_parse/__init__.py +0 -0
- coinex/ccxt/static_dependencies/starknet/cairo/deprecated_parse/cairo_types.py +77 -0
- coinex/ccxt/static_dependencies/starknet/cairo/deprecated_parse/parser.py +46 -0
- coinex/ccxt/static_dependencies/starknet/cairo/deprecated_parse/parser_transformer.py +138 -0
- coinex/ccxt/static_dependencies/starknet/cairo/felt.py +64 -0
- coinex/ccxt/static_dependencies/starknet/cairo/type_parser.py +121 -0
- coinex/ccxt/static_dependencies/starknet/cairo/v1/__init__.py +0 -0
- coinex/ccxt/static_dependencies/starknet/cairo/v1/type_parser.py +59 -0
- coinex/ccxt/static_dependencies/starknet/cairo/v2/__init__.py +0 -0
- coinex/ccxt/static_dependencies/starknet/cairo/v2/type_parser.py +77 -0
- coinex/ccxt/static_dependencies/starknet/ccxt_utils.py +7 -0
- coinex/ccxt/static_dependencies/starknet/common.py +15 -0
- coinex/ccxt/static_dependencies/starknet/constants.py +39 -0
- coinex/ccxt/static_dependencies/starknet/hash/__init__.py +0 -0
- coinex/ccxt/static_dependencies/starknet/hash/address.py +79 -0
- coinex/ccxt/static_dependencies/starknet/hash/compiled_class_hash_objects.py +111 -0
- coinex/ccxt/static_dependencies/starknet/hash/selector.py +16 -0
- coinex/ccxt/static_dependencies/starknet/hash/storage.py +12 -0
- coinex/ccxt/static_dependencies/starknet/hash/utils.py +78 -0
- coinex/ccxt/static_dependencies/starknet/models/__init__.py +0 -0
- coinex/ccxt/static_dependencies/starknet/models/typed_data.py +45 -0
- coinex/ccxt/static_dependencies/starknet/serialization/__init__.py +24 -0
- coinex/ccxt/static_dependencies/starknet/serialization/_calldata_reader.py +40 -0
- coinex/ccxt/static_dependencies/starknet/serialization/_context.py +142 -0
- coinex/ccxt/static_dependencies/starknet/serialization/data_serializers/__init__.py +10 -0
- coinex/ccxt/static_dependencies/starknet/serialization/data_serializers/_common.py +82 -0
- coinex/ccxt/static_dependencies/starknet/serialization/data_serializers/array_serializer.py +43 -0
- coinex/ccxt/static_dependencies/starknet/serialization/data_serializers/bool_serializer.py +37 -0
- coinex/ccxt/static_dependencies/starknet/serialization/data_serializers/byte_array_serializer.py +66 -0
- coinex/ccxt/static_dependencies/starknet/serialization/data_serializers/cairo_data_serializer.py +71 -0
- coinex/ccxt/static_dependencies/starknet/serialization/data_serializers/enum_serializer.py +71 -0
- coinex/ccxt/static_dependencies/starknet/serialization/data_serializers/felt_serializer.py +50 -0
- coinex/ccxt/static_dependencies/starknet/serialization/data_serializers/named_tuple_serializer.py +58 -0
- coinex/ccxt/static_dependencies/starknet/serialization/data_serializers/option_serializer.py +43 -0
- coinex/ccxt/static_dependencies/starknet/serialization/data_serializers/output_serializer.py +40 -0
- coinex/ccxt/static_dependencies/starknet/serialization/data_serializers/payload_serializer.py +72 -0
- coinex/ccxt/static_dependencies/starknet/serialization/data_serializers/struct_serializer.py +36 -0
- coinex/ccxt/static_dependencies/starknet/serialization/data_serializers/tuple_serializer.py +36 -0
- coinex/ccxt/static_dependencies/starknet/serialization/data_serializers/uint256_serializer.py +76 -0
- coinex/ccxt/static_dependencies/starknet/serialization/data_serializers/uint_serializer.py +100 -0
- coinex/ccxt/static_dependencies/starknet/serialization/data_serializers/unit_serializer.py +32 -0
- coinex/ccxt/static_dependencies/starknet/serialization/errors.py +10 -0
- coinex/ccxt/static_dependencies/starknet/serialization/factory.py +229 -0
- coinex/ccxt/static_dependencies/starknet/serialization/function_serialization_adapter.py +110 -0
- coinex/ccxt/static_dependencies/starknet/serialization/tuple_dataclass.py +59 -0
- coinex/ccxt/static_dependencies/starknet/utils/__init__.py +0 -0
- coinex/ccxt/static_dependencies/starknet/utils/constructor_args_translator.py +86 -0
- coinex/ccxt/static_dependencies/starknet/utils/iterable.py +13 -0
- coinex/ccxt/static_dependencies/starknet/utils/schema.py +13 -0
- coinex/ccxt/static_dependencies/starknet/utils/typed_data.py +182 -0
- 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 +50 -0
- coinex/ccxt/static_dependencies/starkware/crypto/math_utils.py +78 -0
- coinex/ccxt/static_dependencies/starkware/crypto/signature.py +2344 -0
- coinex/ccxt/static_dependencies/starkware/crypto/utils.py +63 -0
- 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 +35 -0
- coinex/ccxt/static_dependencies/sympy/external/__init__.py +0 -0
- coinex/ccxt/static_dependencies/sympy/external/gmpy.py +345 -0
- coinex/ccxt/static_dependencies/sympy/external/importtools.py +187 -0
- coinex/ccxt/static_dependencies/sympy/external/ntheory.py +637 -0
- coinex/ccxt/static_dependencies/sympy/external/pythonmpq.py +341 -0
- coinex/ccxt/static_dependencies/toolz/__init__.py +26 -0
- coinex/ccxt/static_dependencies/toolz/_signatures.py +784 -0
- coinex/ccxt/static_dependencies/toolz/_version.py +520 -0
- coinex/ccxt/static_dependencies/toolz/compatibility.py +30 -0
- coinex/ccxt/static_dependencies/toolz/curried/__init__.py +101 -0
- coinex/ccxt/static_dependencies/toolz/curried/exceptions.py +22 -0
- coinex/ccxt/static_dependencies/toolz/curried/operator.py +22 -0
- coinex/ccxt/static_dependencies/toolz/dicttoolz.py +339 -0
- coinex/ccxt/static_dependencies/toolz/functoolz.py +1049 -0
- coinex/ccxt/static_dependencies/toolz/itertoolz.py +1057 -0
- coinex/ccxt/static_dependencies/toolz/recipes.py +46 -0
- coinex/ccxt/static_dependencies/toolz/utils.py +9 -0
- coinex/ccxt/static_dependencies/typing_inspect/__init__.py +0 -0
- coinex/ccxt/static_dependencies/typing_inspect/typing_inspect.py +851 -0
- {coinex_api-0.0.12.dist-info → coinex_api-0.0.14.dist-info}/METADATA +1 -1
- coinex_api-0.0.14.dist-info/RECORD +288 -0
- coinex_api-0.0.12.dist-info/RECORD +0 -3
- {coinex_api-0.0.12.dist-info → coinex_api-0.0.14.dist-info}/WHEEL +0 -0
@@ -0,0 +1,374 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
|
3
|
+
from cpython cimport *
|
4
|
+
from cpython.bytearray cimport PyByteArray_Check, PyByteArray_CheckExact
|
5
|
+
from cpython.datetime cimport (
|
6
|
+
PyDateTime_CheckExact, PyDelta_CheckExact,
|
7
|
+
datetime_tzinfo, timedelta_days, timedelta_seconds, timedelta_microseconds,
|
8
|
+
)
|
9
|
+
|
10
|
+
cdef ExtType
|
11
|
+
cdef Timestamp
|
12
|
+
|
13
|
+
from .ext import ExtType, Timestamp
|
14
|
+
|
15
|
+
|
16
|
+
cdef extern from "Python.h":
|
17
|
+
|
18
|
+
int PyMemoryView_Check(object obj)
|
19
|
+
char* PyUnicode_AsUTF8AndSize(object obj, Py_ssize_t *l) except NULL
|
20
|
+
|
21
|
+
|
22
|
+
cdef extern from "pack.h":
|
23
|
+
struct msgpack_packer:
|
24
|
+
char* buf
|
25
|
+
size_t length
|
26
|
+
size_t buf_size
|
27
|
+
bint use_bin_type
|
28
|
+
|
29
|
+
int msgpack_pack_int(msgpack_packer* pk, int d)
|
30
|
+
int msgpack_pack_nil(msgpack_packer* pk)
|
31
|
+
int msgpack_pack_true(msgpack_packer* pk)
|
32
|
+
int msgpack_pack_false(msgpack_packer* pk)
|
33
|
+
int msgpack_pack_long(msgpack_packer* pk, long d)
|
34
|
+
int msgpack_pack_long_long(msgpack_packer* pk, long long d)
|
35
|
+
int msgpack_pack_unsigned_long_long(msgpack_packer* pk, unsigned long long d)
|
36
|
+
int msgpack_pack_float(msgpack_packer* pk, float d)
|
37
|
+
int msgpack_pack_double(msgpack_packer* pk, double d)
|
38
|
+
int msgpack_pack_array(msgpack_packer* pk, size_t l)
|
39
|
+
int msgpack_pack_map(msgpack_packer* pk, size_t l)
|
40
|
+
int msgpack_pack_raw(msgpack_packer* pk, size_t l)
|
41
|
+
int msgpack_pack_bin(msgpack_packer* pk, size_t l)
|
42
|
+
int msgpack_pack_raw_body(msgpack_packer* pk, char* body, size_t l)
|
43
|
+
int msgpack_pack_ext(msgpack_packer* pk, char typecode, size_t l)
|
44
|
+
int msgpack_pack_timestamp(msgpack_packer* x, long long seconds, unsigned long nanoseconds);
|
45
|
+
int msgpack_pack_unicode(msgpack_packer* pk, object o, long long limit)
|
46
|
+
|
47
|
+
cdef extern from "buff_converter.h":
|
48
|
+
object buff_to_buff(char *, Py_ssize_t)
|
49
|
+
|
50
|
+
cdef int DEFAULT_RECURSE_LIMIT=511
|
51
|
+
cdef long long ITEM_LIMIT = (2**32)-1
|
52
|
+
|
53
|
+
|
54
|
+
cdef inline int PyBytesLike_Check(object o):
|
55
|
+
return PyBytes_Check(o) or PyByteArray_Check(o)
|
56
|
+
|
57
|
+
|
58
|
+
cdef inline int PyBytesLike_CheckExact(object o):
|
59
|
+
return PyBytes_CheckExact(o) or PyByteArray_CheckExact(o)
|
60
|
+
|
61
|
+
|
62
|
+
cdef class Packer(object):
|
63
|
+
"""
|
64
|
+
MessagePack Packer
|
65
|
+
|
66
|
+
Usage::
|
67
|
+
|
68
|
+
packer = Packer()
|
69
|
+
astream.write(packer.pack(a))
|
70
|
+
astream.write(packer.pack(b))
|
71
|
+
|
72
|
+
Packer's constructor has some keyword arguments:
|
73
|
+
|
74
|
+
:param default:
|
75
|
+
When specified, it should be callable.
|
76
|
+
Convert user type to builtin type that Packer supports.
|
77
|
+
See also simplejson's document.
|
78
|
+
|
79
|
+
:param bool use_single_float:
|
80
|
+
Use single precision float type for float. (default: False)
|
81
|
+
|
82
|
+
:param bool autoreset:
|
83
|
+
Reset buffer after each pack and return its content as `bytes`. (default: True).
|
84
|
+
If set this to false, use `bytes()` to get content and `.reset()` to clear buffer.
|
85
|
+
|
86
|
+
:param bool use_bin_type:
|
87
|
+
Use bin type introduced in msgpack spec 2.0 for bytes.
|
88
|
+
It also enables str8 type for unicode. (default: True)
|
89
|
+
|
90
|
+
:param bool strict_types:
|
91
|
+
If set to true, types will be checked to be exact. Derived classes
|
92
|
+
from serializeable types will not be serialized and will be
|
93
|
+
treated as unsupported type and forwarded to default.
|
94
|
+
Additionally tuples will not be serialized as lists.
|
95
|
+
This is useful when trying to implement accurate serialization
|
96
|
+
for python types.
|
97
|
+
|
98
|
+
:param bool datetime:
|
99
|
+
If set to true, datetime with tzinfo is packed into Timestamp type.
|
100
|
+
Note that the tzinfo is stripped in the timestamp.
|
101
|
+
You can get UTC datetime with `timestamp=3` option of the Unpacker.
|
102
|
+
|
103
|
+
:param str unicode_errors:
|
104
|
+
The error handler for encoding unicode. (default: 'strict')
|
105
|
+
DO NOT USE THIS!! This option is kept for very specific usage.
|
106
|
+
"""
|
107
|
+
cdef msgpack_packer pk
|
108
|
+
cdef object _default
|
109
|
+
cdef object _berrors
|
110
|
+
cdef const char *unicode_errors
|
111
|
+
cdef bint strict_types
|
112
|
+
cdef bint use_float
|
113
|
+
cdef bint autoreset
|
114
|
+
cdef bint datetime
|
115
|
+
|
116
|
+
def __cinit__(self):
|
117
|
+
cdef int buf_size = 1024*1024
|
118
|
+
self.pk.buf = <char*> PyMem_Malloc(buf_size)
|
119
|
+
if self.pk.buf == NULL:
|
120
|
+
raise MemoryError("Unable to allocate internal buffer.")
|
121
|
+
self.pk.buf_size = buf_size
|
122
|
+
self.pk.length = 0
|
123
|
+
|
124
|
+
def __init__(self, *, default=None,
|
125
|
+
bint use_single_float=False, bint autoreset=True, bint use_bin_type=True,
|
126
|
+
bint strict_types=False, bint datetime=False, unicode_errors=None):
|
127
|
+
self.use_float = use_single_float
|
128
|
+
self.strict_types = strict_types
|
129
|
+
self.autoreset = autoreset
|
130
|
+
self.datetime = datetime
|
131
|
+
self.pk.use_bin_type = use_bin_type
|
132
|
+
if default is not None:
|
133
|
+
if not PyCallable_Check(default):
|
134
|
+
raise TypeError("default must be a callable.")
|
135
|
+
self._default = default
|
136
|
+
|
137
|
+
self._berrors = unicode_errors
|
138
|
+
if unicode_errors is None:
|
139
|
+
self.unicode_errors = NULL
|
140
|
+
else:
|
141
|
+
self.unicode_errors = self._berrors
|
142
|
+
|
143
|
+
def __dealloc__(self):
|
144
|
+
PyMem_Free(self.pk.buf)
|
145
|
+
self.pk.buf = NULL
|
146
|
+
|
147
|
+
cdef int _pack(self, object o, int nest_limit=DEFAULT_RECURSE_LIMIT) except -1:
|
148
|
+
cdef long long llval
|
149
|
+
cdef unsigned long long ullval
|
150
|
+
cdef unsigned long ulval
|
151
|
+
cdef long longval
|
152
|
+
cdef float fval
|
153
|
+
cdef double dval
|
154
|
+
cdef char* rawval
|
155
|
+
cdef int ret
|
156
|
+
cdef dict d
|
157
|
+
cdef Py_ssize_t L
|
158
|
+
cdef int default_used = 0
|
159
|
+
cdef bint strict_types = self.strict_types
|
160
|
+
cdef Py_buffer view
|
161
|
+
|
162
|
+
if nest_limit < 0:
|
163
|
+
raise ValueError("recursion limit exceeded.")
|
164
|
+
|
165
|
+
while True:
|
166
|
+
if o is None:
|
167
|
+
ret = msgpack_pack_nil(&self.pk)
|
168
|
+
elif o is True:
|
169
|
+
ret = msgpack_pack_true(&self.pk)
|
170
|
+
elif o is False:
|
171
|
+
ret = msgpack_pack_false(&self.pk)
|
172
|
+
elif PyLong_CheckExact(o) if strict_types else PyLong_Check(o):
|
173
|
+
# PyInt_Check(long) is True for Python 3.
|
174
|
+
# So we should test long before int.
|
175
|
+
try:
|
176
|
+
if o > 0:
|
177
|
+
ullval = o
|
178
|
+
ret = msgpack_pack_unsigned_long_long(&self.pk, ullval)
|
179
|
+
else:
|
180
|
+
llval = o
|
181
|
+
ret = msgpack_pack_long_long(&self.pk, llval)
|
182
|
+
except OverflowError as oe:
|
183
|
+
if not default_used and self._default is not None:
|
184
|
+
o = self._default(o)
|
185
|
+
default_used = True
|
186
|
+
continue
|
187
|
+
else:
|
188
|
+
raise OverflowError("Integer value out of range")
|
189
|
+
elif PyInt_CheckExact(o) if strict_types else PyInt_Check(o):
|
190
|
+
longval = o
|
191
|
+
ret = msgpack_pack_long(&self.pk, longval)
|
192
|
+
elif PyFloat_CheckExact(o) if strict_types else PyFloat_Check(o):
|
193
|
+
if self.use_float:
|
194
|
+
fval = o
|
195
|
+
ret = msgpack_pack_float(&self.pk, fval)
|
196
|
+
else:
|
197
|
+
dval = o
|
198
|
+
ret = msgpack_pack_double(&self.pk, dval)
|
199
|
+
elif PyBytesLike_CheckExact(o) if strict_types else PyBytesLike_Check(o):
|
200
|
+
L = Py_SIZE(o)
|
201
|
+
if L > ITEM_LIMIT:
|
202
|
+
PyErr_Format(ValueError, b"%.200s object is too large", Py_TYPE(o).tp_name)
|
203
|
+
rawval = o
|
204
|
+
ret = msgpack_pack_bin(&self.pk, L)
|
205
|
+
if ret == 0:
|
206
|
+
ret = msgpack_pack_raw_body(&self.pk, rawval, L)
|
207
|
+
elif PyUnicode_CheckExact(o) if strict_types else PyUnicode_Check(o):
|
208
|
+
if self.unicode_errors == NULL:
|
209
|
+
ret = msgpack_pack_unicode(&self.pk, o, ITEM_LIMIT);
|
210
|
+
if ret == -2:
|
211
|
+
raise ValueError("unicode string is too large")
|
212
|
+
else:
|
213
|
+
o = PyUnicode_AsEncodedString(o, NULL, self.unicode_errors)
|
214
|
+
L = Py_SIZE(o)
|
215
|
+
if L > ITEM_LIMIT:
|
216
|
+
raise ValueError("unicode string is too large")
|
217
|
+
ret = msgpack_pack_raw(&self.pk, L)
|
218
|
+
if ret == 0:
|
219
|
+
rawval = o
|
220
|
+
ret = msgpack_pack_raw_body(&self.pk, rawval, L)
|
221
|
+
elif PyDict_CheckExact(o):
|
222
|
+
d = <dict>o
|
223
|
+
L = len(d)
|
224
|
+
if L > ITEM_LIMIT:
|
225
|
+
raise ValueError("dict is too large")
|
226
|
+
ret = msgpack_pack_map(&self.pk, L)
|
227
|
+
if ret == 0:
|
228
|
+
for k, v in d.items():
|
229
|
+
ret = self._pack(k, nest_limit-1)
|
230
|
+
if ret != 0: break
|
231
|
+
ret = self._pack(v, nest_limit-1)
|
232
|
+
if ret != 0: break
|
233
|
+
elif not strict_types and PyDict_Check(o):
|
234
|
+
L = len(o)
|
235
|
+
if L > ITEM_LIMIT:
|
236
|
+
raise ValueError("dict is too large")
|
237
|
+
ret = msgpack_pack_map(&self.pk, L)
|
238
|
+
if ret == 0:
|
239
|
+
for k, v in o.items():
|
240
|
+
ret = self._pack(k, nest_limit-1)
|
241
|
+
if ret != 0: break
|
242
|
+
ret = self._pack(v, nest_limit-1)
|
243
|
+
if ret != 0: break
|
244
|
+
elif type(o) is ExtType if strict_types else isinstance(o, ExtType):
|
245
|
+
# This should be before Tuple because ExtType is namedtuple.
|
246
|
+
longval = o.code
|
247
|
+
rawval = o.data
|
248
|
+
L = len(o.data)
|
249
|
+
if L > ITEM_LIMIT:
|
250
|
+
raise ValueError("EXT data is too large")
|
251
|
+
ret = msgpack_pack_ext(&self.pk, longval, L)
|
252
|
+
ret = msgpack_pack_raw_body(&self.pk, rawval, L)
|
253
|
+
elif type(o) is Timestamp:
|
254
|
+
llval = o.seconds
|
255
|
+
ulval = o.nanoseconds
|
256
|
+
ret = msgpack_pack_timestamp(&self.pk, llval, ulval)
|
257
|
+
elif PyList_CheckExact(o) if strict_types else (PyTuple_Check(o) or PyList_Check(o)):
|
258
|
+
L = Py_SIZE(o)
|
259
|
+
if L > ITEM_LIMIT:
|
260
|
+
raise ValueError("list is too large")
|
261
|
+
ret = msgpack_pack_array(&self.pk, L)
|
262
|
+
if ret == 0:
|
263
|
+
for v in o:
|
264
|
+
ret = self._pack(v, nest_limit-1)
|
265
|
+
if ret != 0: break
|
266
|
+
elif PyMemoryView_Check(o):
|
267
|
+
if PyObject_GetBuffer(o, &view, PyBUF_SIMPLE) != 0:
|
268
|
+
raise ValueError("could not get buffer for memoryview")
|
269
|
+
L = view.len
|
270
|
+
if L > ITEM_LIMIT:
|
271
|
+
PyBuffer_Release(&view);
|
272
|
+
raise ValueError("memoryview is too large")
|
273
|
+
ret = msgpack_pack_bin(&self.pk, L)
|
274
|
+
if ret == 0:
|
275
|
+
ret = msgpack_pack_raw_body(&self.pk, <char*>view.buf, L)
|
276
|
+
PyBuffer_Release(&view);
|
277
|
+
elif self.datetime and PyDateTime_CheckExact(o) and datetime_tzinfo(o) is not None:
|
278
|
+
delta = o - epoch
|
279
|
+
if not PyDelta_CheckExact(delta):
|
280
|
+
raise ValueError("failed to calculate delta")
|
281
|
+
llval = timedelta_days(delta) * <long long>(24*60*60) + timedelta_seconds(delta)
|
282
|
+
ulval = timedelta_microseconds(delta) * 1000
|
283
|
+
ret = msgpack_pack_timestamp(&self.pk, llval, ulval)
|
284
|
+
elif not default_used and self._default:
|
285
|
+
o = self._default(o)
|
286
|
+
default_used = 1
|
287
|
+
continue
|
288
|
+
elif self.datetime and PyDateTime_CheckExact(o):
|
289
|
+
PyErr_Format(ValueError, b"can not serialize '%.200s' object where tzinfo=None", Py_TYPE(o).tp_name)
|
290
|
+
else:
|
291
|
+
PyErr_Format(TypeError, b"can not serialize '%.200s' object", Py_TYPE(o).tp_name)
|
292
|
+
return ret
|
293
|
+
|
294
|
+
cpdef pack(self, object obj):
|
295
|
+
cdef int ret
|
296
|
+
try:
|
297
|
+
ret = self._pack(obj, DEFAULT_RECURSE_LIMIT)
|
298
|
+
except:
|
299
|
+
self.pk.length = 0
|
300
|
+
raise
|
301
|
+
if ret: # should not happen.
|
302
|
+
raise RuntimeError("internal error")
|
303
|
+
if self.autoreset:
|
304
|
+
buf = PyBytes_FromStringAndSize(self.pk.buf, self.pk.length)
|
305
|
+
self.pk.length = 0
|
306
|
+
return buf
|
307
|
+
|
308
|
+
def pack_ext_type(self, typecode, data):
|
309
|
+
msgpack_pack_ext(&self.pk, typecode, len(data))
|
310
|
+
msgpack_pack_raw_body(&self.pk, data, len(data))
|
311
|
+
|
312
|
+
def pack_array_header(self, long long size):
|
313
|
+
if size > ITEM_LIMIT:
|
314
|
+
raise ValueError
|
315
|
+
cdef int ret = msgpack_pack_array(&self.pk, size)
|
316
|
+
if ret == -1:
|
317
|
+
raise MemoryError
|
318
|
+
elif ret: # should not happen
|
319
|
+
raise TypeError
|
320
|
+
if self.autoreset:
|
321
|
+
buf = PyBytes_FromStringAndSize(self.pk.buf, self.pk.length)
|
322
|
+
self.pk.length = 0
|
323
|
+
return buf
|
324
|
+
|
325
|
+
def pack_map_header(self, long long size):
|
326
|
+
if size > ITEM_LIMIT:
|
327
|
+
raise ValueError
|
328
|
+
cdef int ret = msgpack_pack_map(&self.pk, size)
|
329
|
+
if ret == -1:
|
330
|
+
raise MemoryError
|
331
|
+
elif ret: # should not happen
|
332
|
+
raise TypeError
|
333
|
+
if self.autoreset:
|
334
|
+
buf = PyBytes_FromStringAndSize(self.pk.buf, self.pk.length)
|
335
|
+
self.pk.length = 0
|
336
|
+
return buf
|
337
|
+
|
338
|
+
def pack_map_pairs(self, object pairs):
|
339
|
+
"""
|
340
|
+
Pack *pairs* as msgpack map type.
|
341
|
+
|
342
|
+
*pairs* should be a sequence of pairs.
|
343
|
+
(`len(pairs)` and `for k, v in pairs:` should be supported.)
|
344
|
+
"""
|
345
|
+
cdef int ret = msgpack_pack_map(&self.pk, len(pairs))
|
346
|
+
if ret == 0:
|
347
|
+
for k, v in pairs:
|
348
|
+
ret = self._pack(k)
|
349
|
+
if ret != 0: break
|
350
|
+
ret = self._pack(v)
|
351
|
+
if ret != 0: break
|
352
|
+
if ret == -1:
|
353
|
+
raise MemoryError
|
354
|
+
elif ret: # should not happen
|
355
|
+
raise TypeError
|
356
|
+
if self.autoreset:
|
357
|
+
buf = PyBytes_FromStringAndSize(self.pk.buf, self.pk.length)
|
358
|
+
self.pk.length = 0
|
359
|
+
return buf
|
360
|
+
|
361
|
+
def reset(self):
|
362
|
+
"""Reset internal buffer.
|
363
|
+
|
364
|
+
This method is useful only when autoreset=False.
|
365
|
+
"""
|
366
|
+
self.pk.length = 0
|
367
|
+
|
368
|
+
def bytes(self):
|
369
|
+
"""Return internal buffer contents as bytes object"""
|
370
|
+
return PyBytes_FromStringAndSize(self.pk.buf, self.pk.length)
|
371
|
+
|
372
|
+
def getbuffer(self):
|
373
|
+
"""Return view of internal buffer."""
|
374
|
+
return buff_to_buff(self.pk.buf, self.pk.length)
|