coinex-api 0.0.7__py3-none-any.whl → 0.0.8__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.7.dist-info → coinex_api-0.0.8.dist-info}/METADATA +33 -14
- coinex_api-0.0.8.dist-info/RECORD +3 -0
- coinex_api/__init__.py +0 -7
- coinex_api/ccxt/__init__.py +0 -101
- coinex_api/ccxt/abstract/coinex.py +0 -237
- coinex_api/ccxt/async_support/__init__.py +0 -80
- coinex_api/ccxt/async_support/base/__init__.py +0 -1
- coinex_api/ccxt/async_support/base/exchange.py +0 -2100
- coinex_api/ccxt/async_support/base/throttler.py +0 -50
- coinex_api/ccxt/async_support/base/ws/__init__.py +0 -38
- coinex_api/ccxt/async_support/base/ws/aiohttp_client.py +0 -147
- coinex_api/ccxt/async_support/base/ws/cache.py +0 -213
- coinex_api/ccxt/async_support/base/ws/client.py +0 -214
- coinex_api/ccxt/async_support/base/ws/fast_client.py +0 -97
- coinex_api/ccxt/async_support/base/ws/functions.py +0 -59
- coinex_api/ccxt/async_support/base/ws/future.py +0 -69
- coinex_api/ccxt/async_support/base/ws/order_book.py +0 -78
- coinex_api/ccxt/async_support/base/ws/order_book_side.py +0 -174
- coinex_api/ccxt/async_support/coinex.py +0 -5833
- coinex_api/ccxt/base/__init__.py +0 -27
- coinex_api/ccxt/base/decimal_to_precision.py +0 -174
- coinex_api/ccxt/base/errors.py +0 -267
- coinex_api/ccxt/base/exchange.py +0 -6770
- coinex_api/ccxt/base/precise.py +0 -297
- coinex_api/ccxt/base/types.py +0 -577
- coinex_api/ccxt/coinex.py +0 -5832
- coinex_api/ccxt/pro/__init__.py +0 -21
- coinex_api/ccxt/pro/coinex.py +0 -1366
- coinex_api/ccxt/static_dependencies/README.md +0 -1
- coinex_api/ccxt/static_dependencies/__init__.py +0 -1
- coinex_api/ccxt/static_dependencies/ecdsa/__init__.py +0 -14
- coinex_api/ccxt/static_dependencies/ecdsa/_version.py +0 -520
- coinex_api/ccxt/static_dependencies/ecdsa/curves.py +0 -56
- coinex_api/ccxt/static_dependencies/ecdsa/der.py +0 -221
- coinex_api/ccxt/static_dependencies/ecdsa/ecdsa.py +0 -310
- coinex_api/ccxt/static_dependencies/ecdsa/ellipticcurve.py +0 -197
- coinex_api/ccxt/static_dependencies/ecdsa/keys.py +0 -332
- coinex_api/ccxt/static_dependencies/ecdsa/numbertheory.py +0 -531
- coinex_api/ccxt/static_dependencies/ecdsa/rfc6979.py +0 -100
- coinex_api/ccxt/static_dependencies/ecdsa/util.py +0 -266
- coinex_api/ccxt/static_dependencies/ethereum/__init__.py +0 -7
- coinex_api/ccxt/static_dependencies/ethereum/abi/__init__.py +0 -16
- coinex_api/ccxt/static_dependencies/ethereum/abi/abi.py +0 -19
- coinex_api/ccxt/static_dependencies/ethereum/abi/base.py +0 -152
- coinex_api/ccxt/static_dependencies/ethereum/abi/codec.py +0 -217
- coinex_api/ccxt/static_dependencies/ethereum/abi/constants.py +0 -3
- coinex_api/ccxt/static_dependencies/ethereum/abi/decoding.py +0 -565
- coinex_api/ccxt/static_dependencies/ethereum/abi/encoding.py +0 -720
- coinex_api/ccxt/static_dependencies/ethereum/abi/exceptions.py +0 -139
- coinex_api/ccxt/static_dependencies/ethereum/abi/grammar.py +0 -443
- coinex_api/ccxt/static_dependencies/ethereum/abi/packed.py +0 -13
- coinex_api/ccxt/static_dependencies/ethereum/abi/py.typed +0 -0
- coinex_api/ccxt/static_dependencies/ethereum/abi/registry.py +0 -643
- coinex_api/ccxt/static_dependencies/ethereum/abi/tools/__init__.py +0 -3
- coinex_api/ccxt/static_dependencies/ethereum/abi/tools/_strategies.py +0 -230
- coinex_api/ccxt/static_dependencies/ethereum/abi/utils/__init__.py +0 -0
- coinex_api/ccxt/static_dependencies/ethereum/abi/utils/numeric.py +0 -83
- coinex_api/ccxt/static_dependencies/ethereum/abi/utils/padding.py +0 -27
- coinex_api/ccxt/static_dependencies/ethereum/abi/utils/string.py +0 -19
- coinex_api/ccxt/static_dependencies/ethereum/account/__init__.py +0 -3
- coinex_api/ccxt/static_dependencies/ethereum/account/encode_typed_data/__init__.py +0 -4
- coinex_api/ccxt/static_dependencies/ethereum/account/encode_typed_data/encoding_and_hashing.py +0 -239
- coinex_api/ccxt/static_dependencies/ethereum/account/encode_typed_data/helpers.py +0 -40
- coinex_api/ccxt/static_dependencies/ethereum/account/messages.py +0 -263
- coinex_api/ccxt/static_dependencies/ethereum/account/py.typed +0 -0
- coinex_api/ccxt/static_dependencies/ethereum/hexbytes/__init__.py +0 -5
- coinex_api/ccxt/static_dependencies/ethereum/hexbytes/_utils.py +0 -54
- coinex_api/ccxt/static_dependencies/ethereum/hexbytes/main.py +0 -65
- coinex_api/ccxt/static_dependencies/ethereum/hexbytes/py.typed +0 -0
- coinex_api/ccxt/static_dependencies/ethereum/typing/__init__.py +0 -63
- coinex_api/ccxt/static_dependencies/ethereum/typing/abi.py +0 -6
- coinex_api/ccxt/static_dependencies/ethereum/typing/bls.py +0 -7
- coinex_api/ccxt/static_dependencies/ethereum/typing/discovery.py +0 -5
- coinex_api/ccxt/static_dependencies/ethereum/typing/encoding.py +0 -7
- coinex_api/ccxt/static_dependencies/ethereum/typing/enums.py +0 -17
- coinex_api/ccxt/static_dependencies/ethereum/typing/ethpm.py +0 -9
- coinex_api/ccxt/static_dependencies/ethereum/typing/evm.py +0 -20
- coinex_api/ccxt/static_dependencies/ethereum/typing/networks.py +0 -1122
- coinex_api/ccxt/static_dependencies/ethereum/typing/py.typed +0 -0
- coinex_api/ccxt/static_dependencies/ethereum/utils/__init__.py +0 -115
- coinex_api/ccxt/static_dependencies/ethereum/utils/abi.py +0 -72
- coinex_api/ccxt/static_dependencies/ethereum/utils/address.py +0 -171
- coinex_api/ccxt/static_dependencies/ethereum/utils/applicators.py +0 -151
- coinex_api/ccxt/static_dependencies/ethereum/utils/conversions.py +0 -190
- coinex_api/ccxt/static_dependencies/ethereum/utils/currency.py +0 -107
- coinex_api/ccxt/static_dependencies/ethereum/utils/curried/__init__.py +0 -269
- coinex_api/ccxt/static_dependencies/ethereum/utils/debug.py +0 -20
- coinex_api/ccxt/static_dependencies/ethereum/utils/decorators.py +0 -132
- coinex_api/ccxt/static_dependencies/ethereum/utils/encoding.py +0 -6
- coinex_api/ccxt/static_dependencies/ethereum/utils/exceptions.py +0 -4
- coinex_api/ccxt/static_dependencies/ethereum/utils/functional.py +0 -75
- coinex_api/ccxt/static_dependencies/ethereum/utils/hexadecimal.py +0 -74
- coinex_api/ccxt/static_dependencies/ethereum/utils/humanize.py +0 -188
- coinex_api/ccxt/static_dependencies/ethereum/utils/logging.py +0 -159
- coinex_api/ccxt/static_dependencies/ethereum/utils/module_loading.py +0 -31
- coinex_api/ccxt/static_dependencies/ethereum/utils/numeric.py +0 -43
- coinex_api/ccxt/static_dependencies/ethereum/utils/py.typed +0 -0
- coinex_api/ccxt/static_dependencies/ethereum/utils/toolz.py +0 -76
- coinex_api/ccxt/static_dependencies/ethereum/utils/types.py +0 -54
- coinex_api/ccxt/static_dependencies/ethereum/utils/typing/__init__.py +0 -18
- coinex_api/ccxt/static_dependencies/ethereum/utils/typing/misc.py +0 -14
- coinex_api/ccxt/static_dependencies/ethereum/utils/units.py +0 -31
- coinex_api/ccxt/static_dependencies/keccak/__init__.py +0 -3
- coinex_api/ccxt/static_dependencies/keccak/keccak.py +0 -197
- coinex_api/ccxt/static_dependencies/lark/__init__.py +0 -38
- coinex_api/ccxt/static_dependencies/lark/__pyinstaller/__init__.py +0 -6
- coinex_api/ccxt/static_dependencies/lark/__pyinstaller/hook-lark.py +0 -14
- coinex_api/ccxt/static_dependencies/lark/ast_utils.py +0 -59
- coinex_api/ccxt/static_dependencies/lark/common.py +0 -86
- coinex_api/ccxt/static_dependencies/lark/exceptions.py +0 -292
- coinex_api/ccxt/static_dependencies/lark/grammar.py +0 -130
- coinex_api/ccxt/static_dependencies/lark/grammars/__init__.py +0 -0
- coinex_api/ccxt/static_dependencies/lark/grammars/common.lark +0 -59
- coinex_api/ccxt/static_dependencies/lark/grammars/lark.lark +0 -62
- coinex_api/ccxt/static_dependencies/lark/grammars/python.lark +0 -302
- coinex_api/ccxt/static_dependencies/lark/grammars/unicode.lark +0 -7
- coinex_api/ccxt/static_dependencies/lark/indenter.py +0 -143
- coinex_api/ccxt/static_dependencies/lark/lark.py +0 -658
- coinex_api/ccxt/static_dependencies/lark/lexer.py +0 -678
- coinex_api/ccxt/static_dependencies/lark/load_grammar.py +0 -1428
- coinex_api/ccxt/static_dependencies/lark/parse_tree_builder.py +0 -391
- coinex_api/ccxt/static_dependencies/lark/parser_frontends.py +0 -257
- coinex_api/ccxt/static_dependencies/lark/parsers/__init__.py +0 -0
- coinex_api/ccxt/static_dependencies/lark/parsers/cyk.py +0 -340
- coinex_api/ccxt/static_dependencies/lark/parsers/earley.py +0 -314
- coinex_api/ccxt/static_dependencies/lark/parsers/earley_common.py +0 -42
- coinex_api/ccxt/static_dependencies/lark/parsers/earley_forest.py +0 -801
- coinex_api/ccxt/static_dependencies/lark/parsers/grammar_analysis.py +0 -203
- coinex_api/ccxt/static_dependencies/lark/parsers/lalr_analysis.py +0 -332
- coinex_api/ccxt/static_dependencies/lark/parsers/lalr_interactive_parser.py +0 -158
- coinex_api/ccxt/static_dependencies/lark/parsers/lalr_parser.py +0 -122
- coinex_api/ccxt/static_dependencies/lark/parsers/lalr_parser_state.py +0 -110
- coinex_api/ccxt/static_dependencies/lark/parsers/xearley.py +0 -165
- coinex_api/ccxt/static_dependencies/lark/py.typed +0 -0
- coinex_api/ccxt/static_dependencies/lark/reconstruct.py +0 -107
- coinex_api/ccxt/static_dependencies/lark/tools/__init__.py +0 -70
- coinex_api/ccxt/static_dependencies/lark/tools/nearley.py +0 -202
- coinex_api/ccxt/static_dependencies/lark/tools/serialize.py +0 -32
- coinex_api/ccxt/static_dependencies/lark/tools/standalone.py +0 -196
- coinex_api/ccxt/static_dependencies/lark/tree.py +0 -267
- coinex_api/ccxt/static_dependencies/lark/tree_matcher.py +0 -186
- coinex_api/ccxt/static_dependencies/lark/tree_templates.py +0 -180
- coinex_api/ccxt/static_dependencies/lark/utils.py +0 -343
- coinex_api/ccxt/static_dependencies/lark/visitors.py +0 -596
- coinex_api/ccxt/static_dependencies/marshmallow/__init__.py +0 -81
- coinex_api/ccxt/static_dependencies/marshmallow/base.py +0 -65
- coinex_api/ccxt/static_dependencies/marshmallow/class_registry.py +0 -94
- coinex_api/ccxt/static_dependencies/marshmallow/decorators.py +0 -231
- coinex_api/ccxt/static_dependencies/marshmallow/error_store.py +0 -60
- coinex_api/ccxt/static_dependencies/marshmallow/exceptions.py +0 -71
- coinex_api/ccxt/static_dependencies/marshmallow/fields.py +0 -2114
- coinex_api/ccxt/static_dependencies/marshmallow/orderedset.py +0 -89
- coinex_api/ccxt/static_dependencies/marshmallow/py.typed +0 -0
- coinex_api/ccxt/static_dependencies/marshmallow/schema.py +0 -1228
- coinex_api/ccxt/static_dependencies/marshmallow/types.py +0 -12
- coinex_api/ccxt/static_dependencies/marshmallow/utils.py +0 -378
- coinex_api/ccxt/static_dependencies/marshmallow/validate.py +0 -678
- coinex_api/ccxt/static_dependencies/marshmallow/warnings.py +0 -2
- coinex_api/ccxt/static_dependencies/marshmallow_dataclass/__init__.py +0 -1047
- coinex_api/ccxt/static_dependencies/marshmallow_dataclass/collection_field.py +0 -51
- coinex_api/ccxt/static_dependencies/marshmallow_dataclass/lazy_class_attribute.py +0 -45
- coinex_api/ccxt/static_dependencies/marshmallow_dataclass/mypy.py +0 -71
- coinex_api/ccxt/static_dependencies/marshmallow_dataclass/py.typed +0 -0
- coinex_api/ccxt/static_dependencies/marshmallow_dataclass/typing.py +0 -14
- coinex_api/ccxt/static_dependencies/marshmallow_dataclass/union_field.py +0 -82
- coinex_api/ccxt/static_dependencies/marshmallow_oneofschema/__init__.py +0 -1
- coinex_api/ccxt/static_dependencies/marshmallow_oneofschema/one_of_schema.py +0 -193
- coinex_api/ccxt/static_dependencies/marshmallow_oneofschema/py.typed +0 -0
- coinex_api/ccxt/static_dependencies/msgpack/__init__.py +0 -55
- coinex_api/ccxt/static_dependencies/msgpack/_cmsgpack.pyx +0 -11
- coinex_api/ccxt/static_dependencies/msgpack/_packer.pyx +0 -374
- coinex_api/ccxt/static_dependencies/msgpack/_unpacker.pyx +0 -547
- coinex_api/ccxt/static_dependencies/msgpack/buff_converter.h +0 -8
- coinex_api/ccxt/static_dependencies/msgpack/exceptions.py +0 -48
- coinex_api/ccxt/static_dependencies/msgpack/ext.py +0 -168
- coinex_api/ccxt/static_dependencies/msgpack/fallback.py +0 -951
- coinex_api/ccxt/static_dependencies/msgpack/pack.h +0 -89
- coinex_api/ccxt/static_dependencies/msgpack/pack_template.h +0 -820
- coinex_api/ccxt/static_dependencies/msgpack/sysdep.h +0 -194
- coinex_api/ccxt/static_dependencies/msgpack/unpack.h +0 -391
- coinex_api/ccxt/static_dependencies/msgpack/unpack_define.h +0 -95
- coinex_api/ccxt/static_dependencies/msgpack/unpack_template.h +0 -464
- coinex_api/ccxt/static_dependencies/parsimonious/__init__.py +0 -10
- coinex_api/ccxt/static_dependencies/parsimonious/exceptions.py +0 -105
- coinex_api/ccxt/static_dependencies/parsimonious/expressions.py +0 -479
- coinex_api/ccxt/static_dependencies/parsimonious/grammar.py +0 -487
- coinex_api/ccxt/static_dependencies/parsimonious/nodes.py +0 -325
- coinex_api/ccxt/static_dependencies/parsimonious/utils.py +0 -40
- coinex_api/ccxt/static_dependencies/starknet/__init__.py +0 -0
- coinex_api/ccxt/static_dependencies/starknet/abi/v0/__init__.py +0 -2
- coinex_api/ccxt/static_dependencies/starknet/abi/v0/model.py +0 -44
- coinex_api/ccxt/static_dependencies/starknet/abi/v0/parser.py +0 -216
- coinex_api/ccxt/static_dependencies/starknet/abi/v0/schemas.py +0 -72
- coinex_api/ccxt/static_dependencies/starknet/abi/v0/shape.py +0 -63
- coinex_api/ccxt/static_dependencies/starknet/abi/v1/__init__.py +0 -2
- coinex_api/ccxt/static_dependencies/starknet/abi/v1/core_structures.json +0 -14
- coinex_api/ccxt/static_dependencies/starknet/abi/v1/model.py +0 -39
- coinex_api/ccxt/static_dependencies/starknet/abi/v1/parser.py +0 -220
- coinex_api/ccxt/static_dependencies/starknet/abi/v1/parser_transformer.py +0 -179
- coinex_api/ccxt/static_dependencies/starknet/abi/v1/schemas.py +0 -66
- coinex_api/ccxt/static_dependencies/starknet/abi/v1/shape.py +0 -47
- coinex_api/ccxt/static_dependencies/starknet/abi/v2/__init__.py +0 -2
- coinex_api/ccxt/static_dependencies/starknet/abi/v2/model.py +0 -89
- coinex_api/ccxt/static_dependencies/starknet/abi/v2/parser.py +0 -293
- coinex_api/ccxt/static_dependencies/starknet/abi/v2/parser_transformer.py +0 -192
- coinex_api/ccxt/static_dependencies/starknet/abi/v2/schemas.py +0 -132
- coinex_api/ccxt/static_dependencies/starknet/abi/v2/shape.py +0 -107
- coinex_api/ccxt/static_dependencies/starknet/cairo/__init__.py +0 -0
- coinex_api/ccxt/static_dependencies/starknet/cairo/data_types.py +0 -123
- coinex_api/ccxt/static_dependencies/starknet/cairo/deprecated_parse/__init__.py +0 -0
- coinex_api/ccxt/static_dependencies/starknet/cairo/deprecated_parse/cairo_types.py +0 -77
- coinex_api/ccxt/static_dependencies/starknet/cairo/deprecated_parse/parser.py +0 -46
- coinex_api/ccxt/static_dependencies/starknet/cairo/deprecated_parse/parser_transformer.py +0 -138
- coinex_api/ccxt/static_dependencies/starknet/cairo/felt.py +0 -64
- coinex_api/ccxt/static_dependencies/starknet/cairo/type_parser.py +0 -121
- coinex_api/ccxt/static_dependencies/starknet/cairo/v1/__init__.py +0 -0
- coinex_api/ccxt/static_dependencies/starknet/cairo/v1/type_parser.py +0 -59
- coinex_api/ccxt/static_dependencies/starknet/cairo/v2/__init__.py +0 -0
- coinex_api/ccxt/static_dependencies/starknet/cairo/v2/type_parser.py +0 -77
- coinex_api/ccxt/static_dependencies/starknet/ccxt_utils.py +0 -7
- coinex_api/ccxt/static_dependencies/starknet/common.py +0 -15
- coinex_api/ccxt/static_dependencies/starknet/constants.py +0 -39
- coinex_api/ccxt/static_dependencies/starknet/hash/__init__.py +0 -0
- coinex_api/ccxt/static_dependencies/starknet/hash/address.py +0 -79
- coinex_api/ccxt/static_dependencies/starknet/hash/compiled_class_hash_objects.py +0 -111
- coinex_api/ccxt/static_dependencies/starknet/hash/selector.py +0 -16
- coinex_api/ccxt/static_dependencies/starknet/hash/storage.py +0 -12
- coinex_api/ccxt/static_dependencies/starknet/hash/utils.py +0 -78
- coinex_api/ccxt/static_dependencies/starknet/models/__init__.py +0 -0
- coinex_api/ccxt/static_dependencies/starknet/models/typed_data.py +0 -45
- coinex_api/ccxt/static_dependencies/starknet/serialization/__init__.py +0 -24
- coinex_api/ccxt/static_dependencies/starknet/serialization/_calldata_reader.py +0 -40
- coinex_api/ccxt/static_dependencies/starknet/serialization/_context.py +0 -142
- coinex_api/ccxt/static_dependencies/starknet/serialization/data_serializers/__init__.py +0 -10
- coinex_api/ccxt/static_dependencies/starknet/serialization/data_serializers/_common.py +0 -82
- coinex_api/ccxt/static_dependencies/starknet/serialization/data_serializers/array_serializer.py +0 -43
- coinex_api/ccxt/static_dependencies/starknet/serialization/data_serializers/bool_serializer.py +0 -37
- coinex_api/ccxt/static_dependencies/starknet/serialization/data_serializers/byte_array_serializer.py +0 -66
- coinex_api/ccxt/static_dependencies/starknet/serialization/data_serializers/cairo_data_serializer.py +0 -71
- coinex_api/ccxt/static_dependencies/starknet/serialization/data_serializers/enum_serializer.py +0 -71
- coinex_api/ccxt/static_dependencies/starknet/serialization/data_serializers/felt_serializer.py +0 -50
- coinex_api/ccxt/static_dependencies/starknet/serialization/data_serializers/named_tuple_serializer.py +0 -58
- coinex_api/ccxt/static_dependencies/starknet/serialization/data_serializers/option_serializer.py +0 -43
- coinex_api/ccxt/static_dependencies/starknet/serialization/data_serializers/output_serializer.py +0 -40
- coinex_api/ccxt/static_dependencies/starknet/serialization/data_serializers/payload_serializer.py +0 -72
- coinex_api/ccxt/static_dependencies/starknet/serialization/data_serializers/struct_serializer.py +0 -36
- coinex_api/ccxt/static_dependencies/starknet/serialization/data_serializers/tuple_serializer.py +0 -36
- coinex_api/ccxt/static_dependencies/starknet/serialization/data_serializers/uint256_serializer.py +0 -76
- coinex_api/ccxt/static_dependencies/starknet/serialization/data_serializers/uint_serializer.py +0 -100
- coinex_api/ccxt/static_dependencies/starknet/serialization/data_serializers/unit_serializer.py +0 -32
- coinex_api/ccxt/static_dependencies/starknet/serialization/errors.py +0 -10
- coinex_api/ccxt/static_dependencies/starknet/serialization/factory.py +0 -229
- coinex_api/ccxt/static_dependencies/starknet/serialization/function_serialization_adapter.py +0 -110
- coinex_api/ccxt/static_dependencies/starknet/serialization/tuple_dataclass.py +0 -59
- coinex_api/ccxt/static_dependencies/starknet/utils/__init__.py +0 -0
- coinex_api/ccxt/static_dependencies/starknet/utils/constructor_args_translator.py +0 -86
- coinex_api/ccxt/static_dependencies/starknet/utils/iterable.py +0 -13
- coinex_api/ccxt/static_dependencies/starknet/utils/schema.py +0 -13
- coinex_api/ccxt/static_dependencies/starknet/utils/typed_data.py +0 -182
- coinex_api/ccxt/static_dependencies/starkware/__init__.py +0 -0
- coinex_api/ccxt/static_dependencies/starkware/crypto/__init__.py +0 -0
- coinex_api/ccxt/static_dependencies/starkware/crypto/fast_pedersen_hash.py +0 -50
- coinex_api/ccxt/static_dependencies/starkware/crypto/math_utils.py +0 -78
- coinex_api/ccxt/static_dependencies/starkware/crypto/signature.py +0 -2344
- coinex_api/ccxt/static_dependencies/starkware/crypto/utils.py +0 -63
- coinex_api/ccxt/static_dependencies/sympy/__init__.py +0 -0
- coinex_api/ccxt/static_dependencies/sympy/core/__init__.py +0 -0
- coinex_api/ccxt/static_dependencies/sympy/core/intfunc.py +0 -35
- coinex_api/ccxt/static_dependencies/sympy/external/__init__.py +0 -0
- coinex_api/ccxt/static_dependencies/sympy/external/gmpy.py +0 -345
- coinex_api/ccxt/static_dependencies/sympy/external/importtools.py +0 -187
- coinex_api/ccxt/static_dependencies/sympy/external/ntheory.py +0 -637
- coinex_api/ccxt/static_dependencies/sympy/external/pythonmpq.py +0 -341
- coinex_api/ccxt/static_dependencies/toolz/__init__.py +0 -26
- coinex_api/ccxt/static_dependencies/toolz/_signatures.py +0 -784
- coinex_api/ccxt/static_dependencies/toolz/_version.py +0 -520
- coinex_api/ccxt/static_dependencies/toolz/compatibility.py +0 -30
- coinex_api/ccxt/static_dependencies/toolz/curried/__init__.py +0 -101
- coinex_api/ccxt/static_dependencies/toolz/curried/exceptions.py +0 -22
- coinex_api/ccxt/static_dependencies/toolz/curried/operator.py +0 -22
- coinex_api/ccxt/static_dependencies/toolz/dicttoolz.py +0 -339
- coinex_api/ccxt/static_dependencies/toolz/functoolz.py +0 -1049
- coinex_api/ccxt/static_dependencies/toolz/itertoolz.py +0 -1057
- coinex_api/ccxt/static_dependencies/toolz/recipes.py +0 -46
- coinex_api/ccxt/static_dependencies/toolz/utils.py +0 -9
- coinex_api/ccxt/static_dependencies/typing_inspect/__init__.py +0 -0
- coinex_api/ccxt/static_dependencies/typing_inspect/typing_inspect.py +0 -851
- coinex_api-0.0.7.dist-info/RECORD +0 -288
- {coinex_api-0.0.7.dist-info → coinex_api-0.0.8.dist-info}/WHEEL +0 -0
@@ -1,24 +0,0 @@
|
|
1
|
-
# PayloadSerializer and FunctionSerializationAdapter would mostly be used by users
|
2
|
-
from .data_serializers import (
|
3
|
-
ArraySerializer,
|
4
|
-
CairoDataSerializer,
|
5
|
-
FeltSerializer,
|
6
|
-
NamedTupleSerializer,
|
7
|
-
PayloadSerializer,
|
8
|
-
StructSerializer,
|
9
|
-
TupleSerializer,
|
10
|
-
Uint256Serializer,
|
11
|
-
)
|
12
|
-
from .errors import (
|
13
|
-
CairoSerializerException,
|
14
|
-
InvalidTypeException,
|
15
|
-
InvalidValueException,
|
16
|
-
)
|
17
|
-
from .factory import (
|
18
|
-
serializer_for_event,
|
19
|
-
serializer_for_function,
|
20
|
-
serializer_for_payload,
|
21
|
-
serializer_for_type,
|
22
|
-
)
|
23
|
-
from .function_serialization_adapter import FunctionSerializationAdapter
|
24
|
-
from .tuple_dataclass import TupleDataclass
|
@@ -1,40 +0,0 @@
|
|
1
|
-
from typing import List
|
2
|
-
|
3
|
-
from ..cairo.felt import CairoData
|
4
|
-
|
5
|
-
|
6
|
-
class OutOfBoundsError(Exception):
|
7
|
-
def __init__(self, position: int, requested_size: int, remaining_size: int):
|
8
|
-
super().__init__(
|
9
|
-
f"Requested {requested_size} elements, {remaining_size} available."
|
10
|
-
)
|
11
|
-
self.position = position
|
12
|
-
self.requested_size = requested_size
|
13
|
-
self.remaining_len = remaining_size
|
14
|
-
|
15
|
-
|
16
|
-
class CalldataReader:
|
17
|
-
_data: List[int]
|
18
|
-
_position: int
|
19
|
-
|
20
|
-
def __init__(self, data: List[int]):
|
21
|
-
self._data = data
|
22
|
-
self._position = 0
|
23
|
-
|
24
|
-
@property
|
25
|
-
def remaining_len(self) -> int:
|
26
|
-
return len(self._data) - self._position
|
27
|
-
|
28
|
-
def read(self, size: int) -> CairoData:
|
29
|
-
if size < 1:
|
30
|
-
raise ValueError("size must be greater than 0")
|
31
|
-
|
32
|
-
if size > self.remaining_len:
|
33
|
-
raise OutOfBoundsError(
|
34
|
-
position=self._position,
|
35
|
-
requested_size=size,
|
36
|
-
remaining_size=self.remaining_len,
|
37
|
-
)
|
38
|
-
data = self._data[self._position : self._position + size]
|
39
|
-
self._position += size
|
40
|
-
return data
|
@@ -1,142 +0,0 @@
|
|
1
|
-
from __future__ import annotations
|
2
|
-
|
3
|
-
from abc import ABC
|
4
|
-
from contextlib import contextmanager
|
5
|
-
from typing import Any, Generator, Iterator, List
|
6
|
-
|
7
|
-
from ._calldata_reader import (
|
8
|
-
CairoData,
|
9
|
-
CalldataReader,
|
10
|
-
OutOfBoundsError,
|
11
|
-
)
|
12
|
-
from .errors import InvalidTypeException, InvalidValueException
|
13
|
-
|
14
|
-
|
15
|
-
class Context(ABC):
|
16
|
-
"""
|
17
|
-
Holds information about context when (de)serializing data. This is needed to inform what and where went
|
18
|
-
wrong during processing. Every separate (de)serialization should have its own context.
|
19
|
-
"""
|
20
|
-
|
21
|
-
_namespace_stack: List[str]
|
22
|
-
|
23
|
-
def __init__(self):
|
24
|
-
self._namespace_stack = []
|
25
|
-
|
26
|
-
@property
|
27
|
-
def current_entity(self):
|
28
|
-
"""
|
29
|
-
Name of currently processed entity.
|
30
|
-
|
31
|
-
:return: transformed path.
|
32
|
-
"""
|
33
|
-
return ".".join(self._namespace_stack)
|
34
|
-
|
35
|
-
@contextmanager
|
36
|
-
def push_entity(self, name: str) -> Generator:
|
37
|
-
"""
|
38
|
-
Manager used for maintaining information about names of (de)serialized types. Wraps some errors with
|
39
|
-
custom errors, adding information about the context.
|
40
|
-
|
41
|
-
:param name: name of (de)serialized entity.
|
42
|
-
"""
|
43
|
-
# This ensures the name will be popped if everything is ok. In case an exception is raised we want the stack to
|
44
|
-
# be filled to wrap the error at the end.
|
45
|
-
self._namespace_stack.append(name)
|
46
|
-
yield
|
47
|
-
self._namespace_stack.pop()
|
48
|
-
|
49
|
-
def ensure_valid_value(self, valid: bool, text: str):
|
50
|
-
if not valid:
|
51
|
-
raise InvalidValueException(f"{self._error_prefix}: {text}.")
|
52
|
-
|
53
|
-
def ensure_valid_type(self, value: Any, valid: bool, expected_type: str):
|
54
|
-
if not valid:
|
55
|
-
raise InvalidTypeException(
|
56
|
-
f"{self._error_prefix}: expected {expected_type}, "
|
57
|
-
f"received '{value}' of type '{type(value)}'."
|
58
|
-
)
|
59
|
-
|
60
|
-
@contextmanager
|
61
|
-
def _wrap_errors(self):
|
62
|
-
try:
|
63
|
-
yield
|
64
|
-
except OutOfBoundsError as err:
|
65
|
-
action_name = (
|
66
|
-
f"deserialize '{self.current_entity}'"
|
67
|
-
if self._namespace_stack
|
68
|
-
else "deserialize"
|
69
|
-
)
|
70
|
-
# This way we can precisely inform user what's wrong when reading calldata.
|
71
|
-
raise InvalidValueException(
|
72
|
-
f"Not enough data to {action_name}. "
|
73
|
-
f"Can't read {err.requested_size} values at position {err.position}, {err.remaining_len} available."
|
74
|
-
) from err
|
75
|
-
|
76
|
-
# Those two are based on ValueError and TypeError, we have to catch them early
|
77
|
-
except (InvalidValueException, InvalidTypeException) as err:
|
78
|
-
raise err
|
79
|
-
|
80
|
-
except ValueError as err:
|
81
|
-
raise InvalidValueException(f"{self._error_prefix}: {err}") from err
|
82
|
-
except TypeError as err:
|
83
|
-
raise InvalidTypeException(f"{self._error_prefix}: {err}") from err
|
84
|
-
|
85
|
-
@property
|
86
|
-
def _error_prefix(self):
|
87
|
-
if not self._namespace_stack:
|
88
|
-
return "Error"
|
89
|
-
return f"Error at path '{self.current_entity}'"
|
90
|
-
|
91
|
-
|
92
|
-
class SerializationContext(Context):
|
93
|
-
"""
|
94
|
-
Context used during serialization.
|
95
|
-
"""
|
96
|
-
|
97
|
-
# Type is iterator, because ContextManager doesn't work with pyright :|
|
98
|
-
# https://github.com/microsoft/pyright/issues/476
|
99
|
-
@classmethod
|
100
|
-
@contextmanager
|
101
|
-
def create(cls) -> Iterator[SerializationContext]:
|
102
|
-
context = cls()
|
103
|
-
with context._wrap_errors():
|
104
|
-
yield context
|
105
|
-
|
106
|
-
|
107
|
-
class DeserializationContext(Context):
|
108
|
-
"""
|
109
|
-
Context used during deserialization.
|
110
|
-
"""
|
111
|
-
|
112
|
-
reader: CalldataReader
|
113
|
-
|
114
|
-
def __init__(self, calldata: CairoData):
|
115
|
-
"""
|
116
|
-
Don't use default constructor. Use DeserializationContext.create context manager.
|
117
|
-
"""
|
118
|
-
super().__init__()
|
119
|
-
self._namespace_stack = []
|
120
|
-
self.reader = CalldataReader(calldata)
|
121
|
-
|
122
|
-
@classmethod
|
123
|
-
@contextmanager
|
124
|
-
def create(cls, data: CairoData) -> Iterator[DeserializationContext]:
|
125
|
-
context = cls(data)
|
126
|
-
with context._wrap_errors():
|
127
|
-
yield context
|
128
|
-
context._ensure_all_values_read(len(data))
|
129
|
-
|
130
|
-
def _ensure_all_values_read(self, total_len: int):
|
131
|
-
values_not_used = self.reader.remaining_len
|
132
|
-
if values_not_used != 0:
|
133
|
-
# We want to output up to 3 values. It there is more they will be truncated like "0x1,0x1,0x1..."
|
134
|
-
max_values_to_show = 3
|
135
|
-
values_to_show = min(values_not_used, max_values_to_show)
|
136
|
-
example = ",".join(hex(v) for v in self.reader.read(values_to_show))
|
137
|
-
suffix = "..." if values_not_used > max_values_to_show else ""
|
138
|
-
|
139
|
-
raise InvalidValueException(
|
140
|
-
f"Last {values_not_used} values '{example}{suffix}' out of total {total_len} "
|
141
|
-
"values were not used during deserialization."
|
142
|
-
)
|
@@ -1,10 +0,0 @@
|
|
1
|
-
from .array_serializer import ArraySerializer
|
2
|
-
from .bool_serializer import BoolSerializer
|
3
|
-
from .byte_array_serializer import ByteArraySerializer
|
4
|
-
from .cairo_data_serializer import CairoDataSerializer
|
5
|
-
from .felt_serializer import FeltSerializer
|
6
|
-
from .named_tuple_serializer import NamedTupleSerializer
|
7
|
-
from .payload_serializer import PayloadSerializer
|
8
|
-
from .struct_serializer import StructSerializer
|
9
|
-
from .tuple_serializer import TupleSerializer
|
10
|
-
from .uint256_serializer import Uint256Serializer
|
@@ -1,82 +0,0 @@
|
|
1
|
-
# We have to use parametrised type from typing
|
2
|
-
from collections import OrderedDict as _OrderedDict
|
3
|
-
from typing import Dict, Generator, List, OrderedDict
|
4
|
-
|
5
|
-
from .._context import (
|
6
|
-
DeserializationContext,
|
7
|
-
SerializationContext,
|
8
|
-
)
|
9
|
-
from .cairo_data_serializer import (
|
10
|
-
CairoDataSerializer,
|
11
|
-
)
|
12
|
-
|
13
|
-
# The actual serialization logic is very similar among all serializers: they either serialize data based on
|
14
|
-
# position or their name. Having this logic reused adds indirection, but makes sure proper logic is used everywhere.
|
15
|
-
|
16
|
-
|
17
|
-
def deserialize_to_list(
|
18
|
-
deserializers: List[CairoDataSerializer], context: DeserializationContext
|
19
|
-
) -> List:
|
20
|
-
"""
|
21
|
-
Deserializes data from context to list. This logic is used in every sequential type (arrays and tuples).
|
22
|
-
"""
|
23
|
-
result = []
|
24
|
-
|
25
|
-
for index, serializer in enumerate(deserializers):
|
26
|
-
with context.push_entity(f"[{index}]"):
|
27
|
-
result.append(serializer.deserialize_with_context(context))
|
28
|
-
|
29
|
-
return result
|
30
|
-
|
31
|
-
|
32
|
-
def deserialize_to_dict(
|
33
|
-
deserializers: OrderedDict[str, CairoDataSerializer],
|
34
|
-
context: DeserializationContext,
|
35
|
-
) -> OrderedDict:
|
36
|
-
"""
|
37
|
-
Deserializes data from context to dictionary. This logic is used in every type with named fields (structs,
|
38
|
-
named tuples and payloads).
|
39
|
-
"""
|
40
|
-
result = _OrderedDict()
|
41
|
-
|
42
|
-
for key, serializer in deserializers.items():
|
43
|
-
with context.push_entity(key):
|
44
|
-
result[key] = serializer.deserialize_with_context(context)
|
45
|
-
|
46
|
-
return result
|
47
|
-
|
48
|
-
|
49
|
-
def serialize_from_list(
|
50
|
-
serializers: List[CairoDataSerializer], context: SerializationContext, values: List
|
51
|
-
) -> Generator[int, None, None]:
|
52
|
-
"""
|
53
|
-
Serializes data from list. This logic is used in every sequential type (arrays and tuples).
|
54
|
-
"""
|
55
|
-
context.ensure_valid_value(
|
56
|
-
len(serializers) == len(values),
|
57
|
-
f"expected {len(serializers)} elements, {len(values)} provided",
|
58
|
-
)
|
59
|
-
|
60
|
-
for index, (serializer, value) in enumerate(zip(serializers, values)):
|
61
|
-
with context.push_entity(f"[{index}]"):
|
62
|
-
yield from serializer.serialize_with_context(context, value)
|
63
|
-
|
64
|
-
|
65
|
-
def serialize_from_dict(
|
66
|
-
serializers: OrderedDict[str, CairoDataSerializer],
|
67
|
-
context: SerializationContext,
|
68
|
-
values: Dict,
|
69
|
-
) -> Generator[int, None, None]:
|
70
|
-
"""
|
71
|
-
Serializes data from dict. This logic is used in every type with named fields (structs, named tuples and payloads).
|
72
|
-
"""
|
73
|
-
excessive_keys = set(values.keys()).difference(serializers.keys())
|
74
|
-
context.ensure_valid_value(
|
75
|
-
not excessive_keys,
|
76
|
-
f"unexpected keys '{','.join(excessive_keys)}' were provided",
|
77
|
-
)
|
78
|
-
|
79
|
-
for name, serializer in serializers.items():
|
80
|
-
with context.push_entity(name):
|
81
|
-
context.ensure_valid_value(name in values, f"key '{name}' is missing")
|
82
|
-
yield from serializer.serialize_with_context(context, values[name])
|
coinex_api/ccxt/static_dependencies/starknet/serialization/data_serializers/array_serializer.py
DELETED
@@ -1,43 +0,0 @@
|
|
1
|
-
from dataclasses import dataclass
|
2
|
-
from typing import Generator, Iterable, List
|
3
|
-
|
4
|
-
from .._context import (
|
5
|
-
DeserializationContext,
|
6
|
-
SerializationContext,
|
7
|
-
)
|
8
|
-
from ..data_serializers._common import (
|
9
|
-
deserialize_to_list,
|
10
|
-
serialize_from_list,
|
11
|
-
)
|
12
|
-
from ..data_serializers.cairo_data_serializer import (
|
13
|
-
CairoDataSerializer,
|
14
|
-
)
|
15
|
-
|
16
|
-
|
17
|
-
@dataclass
|
18
|
-
class ArraySerializer(CairoDataSerializer[Iterable, List]):
|
19
|
-
"""
|
20
|
-
Serializer for arrays. In abi they are represented as a pointer to a type.
|
21
|
-
Can serialize any iterable and prepends its length to resulting list.
|
22
|
-
Deserializes data to a list.
|
23
|
-
|
24
|
-
Examples:
|
25
|
-
[1,2,3] => [3,1,2,3]
|
26
|
-
[] => [0]
|
27
|
-
"""
|
28
|
-
|
29
|
-
inner_serializer: CairoDataSerializer
|
30
|
-
|
31
|
-
def deserialize_with_context(self, context: DeserializationContext) -> List:
|
32
|
-
with context.push_entity("len"):
|
33
|
-
[size] = context.reader.read(1)
|
34
|
-
|
35
|
-
return deserialize_to_list([self.inner_serializer] * size, context)
|
36
|
-
|
37
|
-
def serialize_with_context(
|
38
|
-
self, context: SerializationContext, value: List
|
39
|
-
) -> Generator[int, None, None]:
|
40
|
-
yield len(value)
|
41
|
-
yield from serialize_from_list(
|
42
|
-
[self.inner_serializer] * len(value), context, value
|
43
|
-
)
|
coinex_api/ccxt/static_dependencies/starknet/serialization/data_serializers/bool_serializer.py
DELETED
@@ -1,37 +0,0 @@
|
|
1
|
-
from dataclasses import dataclass
|
2
|
-
from typing import Generator
|
3
|
-
|
4
|
-
from .._context import (
|
5
|
-
Context,
|
6
|
-
DeserializationContext,
|
7
|
-
SerializationContext,
|
8
|
-
)
|
9
|
-
from .cairo_data_serializer import (
|
10
|
-
CairoDataSerializer,
|
11
|
-
)
|
12
|
-
|
13
|
-
|
14
|
-
@dataclass
|
15
|
-
class BoolSerializer(CairoDataSerializer[bool, int]):
|
16
|
-
"""
|
17
|
-
Serializer for boolean.
|
18
|
-
"""
|
19
|
-
|
20
|
-
def deserialize_with_context(self, context: DeserializationContext) -> bool:
|
21
|
-
[val] = context.reader.read(1)
|
22
|
-
self._ensure_bool(context, val)
|
23
|
-
return bool(val)
|
24
|
-
|
25
|
-
def serialize_with_context(
|
26
|
-
self, context: SerializationContext, value: bool
|
27
|
-
) -> Generator[int, None, None]:
|
28
|
-
context.ensure_valid_type(value, isinstance(value, bool), "bool")
|
29
|
-
self._ensure_bool(context, value)
|
30
|
-
yield int(value)
|
31
|
-
|
32
|
-
@staticmethod
|
33
|
-
def _ensure_bool(context: Context, value: int):
|
34
|
-
context.ensure_valid_value(
|
35
|
-
value in [0, 1],
|
36
|
-
f"invalid value '{value}' - must be in [0, 2) range",
|
37
|
-
)
|
coinex_api/ccxt/static_dependencies/starknet/serialization/data_serializers/byte_array_serializer.py
DELETED
@@ -1,66 +0,0 @@
|
|
1
|
-
from dataclasses import dataclass
|
2
|
-
from typing import Generator
|
3
|
-
|
4
|
-
from ...cairo.felt import decode_shortstring, encode_shortstring
|
5
|
-
from .._context import (
|
6
|
-
DeserializationContext,
|
7
|
-
SerializationContext,
|
8
|
-
)
|
9
|
-
from ._common import (
|
10
|
-
deserialize_to_list,
|
11
|
-
serialize_from_list,
|
12
|
-
)
|
13
|
-
from .cairo_data_serializer import (
|
14
|
-
CairoDataSerializer,
|
15
|
-
)
|
16
|
-
from .felt_serializer import FeltSerializer
|
17
|
-
|
18
|
-
BYTES_31_SIZE = 31
|
19
|
-
|
20
|
-
|
21
|
-
@dataclass
|
22
|
-
class ByteArraySerializer(CairoDataSerializer[str, str]):
|
23
|
-
"""
|
24
|
-
Serializer for ByteArrays. Serializes to and deserializes from str values.
|
25
|
-
|
26
|
-
Examples:
|
27
|
-
"" => [0,0,0]
|
28
|
-
"hello" => [0,448378203247,5]
|
29
|
-
"""
|
30
|
-
|
31
|
-
def deserialize_with_context(self, context: DeserializationContext) -> str:
|
32
|
-
with context.push_entity("data_array_len"):
|
33
|
-
[size] = context.reader.read(1)
|
34
|
-
|
35
|
-
data = deserialize_to_list([FeltSerializer()] * size, context)
|
36
|
-
|
37
|
-
with context.push_entity("pending_word"):
|
38
|
-
[pending_word] = context.reader.read(1)
|
39
|
-
|
40
|
-
with context.push_entity("pending_word_len"):
|
41
|
-
[pending_word_len] = context.reader.read(1)
|
42
|
-
|
43
|
-
pending_word = decode_shortstring(pending_word)
|
44
|
-
context.ensure_valid_value(
|
45
|
-
len(pending_word) == pending_word_len,
|
46
|
-
f"Invalid length {pending_word_len} for pending word {pending_word}",
|
47
|
-
)
|
48
|
-
|
49
|
-
data_joined = "".join(map(decode_shortstring, data))
|
50
|
-
return data_joined + pending_word
|
51
|
-
|
52
|
-
def serialize_with_context(
|
53
|
-
self, context: SerializationContext, value: str
|
54
|
-
) -> Generator[int, None, None]:
|
55
|
-
context.ensure_valid_type(value, isinstance(value, str), "str")
|
56
|
-
data = [
|
57
|
-
value[i : i + BYTES_31_SIZE] for i in range(0, len(value), BYTES_31_SIZE)
|
58
|
-
]
|
59
|
-
pending_word = (
|
60
|
-
"" if len(data) == 0 or len(data[-1]) == BYTES_31_SIZE else data.pop(-1)
|
61
|
-
)
|
62
|
-
|
63
|
-
yield len(data)
|
64
|
-
yield from serialize_from_list([FeltSerializer()] * len(data), context, data)
|
65
|
-
yield encode_shortstring(pending_word)
|
66
|
-
yield len(pending_word)
|
coinex_api/ccxt/static_dependencies/starknet/serialization/data_serializers/cairo_data_serializer.py
DELETED
@@ -1,71 +0,0 @@
|
|
1
|
-
from abc import ABC, abstractmethod
|
2
|
-
from typing import Generator, Generic, List, TypeVar
|
3
|
-
|
4
|
-
from .._calldata_reader import CairoData
|
5
|
-
from .._context import (
|
6
|
-
DeserializationContext,
|
7
|
-
SerializationContext,
|
8
|
-
)
|
9
|
-
|
10
|
-
# Python type that is accepted by a serializer
|
11
|
-
# pylint: disable=invalid-name
|
12
|
-
SerializationType = TypeVar("SerializationType")
|
13
|
-
|
14
|
-
# Python type that will be returned from a serializer. Often same as SerializationType.
|
15
|
-
# pylint: disable=invalid-name
|
16
|
-
DeserializationType = TypeVar("DeserializationType")
|
17
|
-
|
18
|
-
|
19
|
-
class CairoDataSerializer(ABC, Generic[SerializationType, DeserializationType]):
|
20
|
-
"""
|
21
|
-
Base class for serializing/deserializing data to/from calldata.
|
22
|
-
"""
|
23
|
-
|
24
|
-
def deserialize(self, data: List[int]) -> DeserializationType:
|
25
|
-
"""
|
26
|
-
Transform calldata into python value.
|
27
|
-
|
28
|
-
:param data: calldata to deserialize.
|
29
|
-
:return: defined DeserializationType.
|
30
|
-
"""
|
31
|
-
with DeserializationContext.create(data) as context:
|
32
|
-
return self.deserialize_with_context(context)
|
33
|
-
|
34
|
-
def serialize(self, data: SerializationType) -> CairoData:
|
35
|
-
"""
|
36
|
-
Transform python data into calldata.
|
37
|
-
|
38
|
-
:param data: data to serialize.
|
39
|
-
:return: calldata.
|
40
|
-
"""
|
41
|
-
with SerializationContext.create() as context:
|
42
|
-
serialized_data = list(self.serialize_with_context(context, data))
|
43
|
-
|
44
|
-
return self.remove_units_from_serialized_data(serialized_data)
|
45
|
-
|
46
|
-
@abstractmethod
|
47
|
-
def deserialize_with_context(
|
48
|
-
self, context: DeserializationContext
|
49
|
-
) -> DeserializationType:
|
50
|
-
"""
|
51
|
-
Transform calldata into python value.
|
52
|
-
|
53
|
-
:param context: context of this deserialization.
|
54
|
-
:return: defined DeserializationType.
|
55
|
-
"""
|
56
|
-
|
57
|
-
@abstractmethod
|
58
|
-
def serialize_with_context(
|
59
|
-
self, context: SerializationContext, value: SerializationType
|
60
|
-
) -> Generator[int, None, None]:
|
61
|
-
"""
|
62
|
-
Transform python value into calldata.
|
63
|
-
|
64
|
-
:param context: context of this serialization.
|
65
|
-
:param value: python value to serialize.
|
66
|
-
:return: defined SerializationType.
|
67
|
-
"""
|
68
|
-
|
69
|
-
@staticmethod
|
70
|
-
def remove_units_from_serialized_data(serialized_data: List) -> List:
|
71
|
-
return [x for x in serialized_data if x is not None]
|
coinex_api/ccxt/static_dependencies/starknet/serialization/data_serializers/enum_serializer.py
DELETED
@@ -1,71 +0,0 @@
|
|
1
|
-
from dataclasses import dataclass
|
2
|
-
from typing import Dict, Generator, OrderedDict, Tuple, Union
|
3
|
-
|
4
|
-
from .._context import (
|
5
|
-
DeserializationContext,
|
6
|
-
SerializationContext,
|
7
|
-
)
|
8
|
-
from .cairo_data_serializer import (
|
9
|
-
CairoDataSerializer,
|
10
|
-
)
|
11
|
-
from ..tuple_dataclass import TupleDataclass
|
12
|
-
|
13
|
-
|
14
|
-
@dataclass
|
15
|
-
class EnumSerializer(CairoDataSerializer[Union[Dict, TupleDataclass], TupleDataclass]):
|
16
|
-
"""
|
17
|
-
Serializer of enums.
|
18
|
-
Can serialize a dictionary and TupleDataclass.
|
19
|
-
Deserializes data to a TupleDataclass.
|
20
|
-
|
21
|
-
Example:
|
22
|
-
enum MyEnum {
|
23
|
-
a: u128,
|
24
|
-
b: u128
|
25
|
-
}
|
26
|
-
|
27
|
-
{"a": 1} => [0, 1]
|
28
|
-
{"b": 100} => [1, 100]
|
29
|
-
TupleDataclass(variant='a', value=100) => [0, 100]
|
30
|
-
"""
|
31
|
-
|
32
|
-
serializers: OrderedDict[str, CairoDataSerializer]
|
33
|
-
|
34
|
-
def deserialize_with_context(
|
35
|
-
self, context: DeserializationContext
|
36
|
-
) -> TupleDataclass:
|
37
|
-
[variant_index] = context.reader.read(1)
|
38
|
-
variant_name, serializer = self._get_variant(variant_index)
|
39
|
-
|
40
|
-
with context.push_entity("enum.variant: " + variant_name):
|
41
|
-
result_dict = {
|
42
|
-
"variant": variant_name,
|
43
|
-
"value": serializer.deserialize_with_context(context),
|
44
|
-
}
|
45
|
-
|
46
|
-
return TupleDataclass.from_dict(result_dict)
|
47
|
-
|
48
|
-
def serialize_with_context(
|
49
|
-
self, context: SerializationContext, value: Union[Dict, TupleDataclass]
|
50
|
-
) -> Generator[int, None, None]:
|
51
|
-
if isinstance(value, Dict):
|
52
|
-
items = list(value.items())
|
53
|
-
if len(items) != 1:
|
54
|
-
raise ValueError(
|
55
|
-
"Can serialize only one enum variant, got: " + str(len(items))
|
56
|
-
)
|
57
|
-
|
58
|
-
variant_name, variant_value = items[0]
|
59
|
-
else:
|
60
|
-
variant_name, variant_value = value
|
61
|
-
|
62
|
-
yield self._get_variant_index(variant_name)
|
63
|
-
yield from self.serializers[variant_name].serialize_with_context(
|
64
|
-
context, variant_value
|
65
|
-
)
|
66
|
-
|
67
|
-
def _get_variant(self, variant_index: int) -> Tuple[str, CairoDataSerializer]:
|
68
|
-
return list(self.serializers.items())[variant_index]
|
69
|
-
|
70
|
-
def _get_variant_index(self, variant_name: str) -> int:
|
71
|
-
return list(self.serializers.keys()).index(variant_name)
|
coinex_api/ccxt/static_dependencies/starknet/serialization/data_serializers/felt_serializer.py
DELETED
@@ -1,50 +0,0 @@
|
|
1
|
-
import warnings
|
2
|
-
from dataclasses import dataclass
|
3
|
-
from typing import Generator
|
4
|
-
|
5
|
-
from ...cairo.felt import encode_shortstring, is_in_felt_range
|
6
|
-
from ...constants import FIELD_PRIME
|
7
|
-
from .._context import (
|
8
|
-
Context,
|
9
|
-
DeserializationContext,
|
10
|
-
SerializationContext,
|
11
|
-
)
|
12
|
-
from .cairo_data_serializer import (
|
13
|
-
CairoDataSerializer,
|
14
|
-
)
|
15
|
-
|
16
|
-
|
17
|
-
@dataclass
|
18
|
-
class FeltSerializer(CairoDataSerializer[int, int]):
|
19
|
-
"""
|
20
|
-
Serializer for field element. At the time of writing it is the only existing numeric type.
|
21
|
-
"""
|
22
|
-
|
23
|
-
def deserialize_with_context(self, context: DeserializationContext) -> int:
|
24
|
-
[val] = context.reader.read(1)
|
25
|
-
self._ensure_felt(context, val)
|
26
|
-
return val
|
27
|
-
|
28
|
-
def serialize_with_context(
|
29
|
-
self, context: SerializationContext, value: int
|
30
|
-
) -> Generator[int, None, None]:
|
31
|
-
if isinstance(value, str):
|
32
|
-
warnings.warn(
|
33
|
-
"Serializing shortstrings in FeltSerializer is deprecated. "
|
34
|
-
"Use starknet_py.cairo.felt.encode_shortstring instead.",
|
35
|
-
category=DeprecationWarning,
|
36
|
-
)
|
37
|
-
value = encode_shortstring(value)
|
38
|
-
yield value
|
39
|
-
return
|
40
|
-
|
41
|
-
context.ensure_valid_type(value, isinstance(value, int), "int")
|
42
|
-
self._ensure_felt(context, value)
|
43
|
-
yield value
|
44
|
-
|
45
|
-
@staticmethod
|
46
|
-
def _ensure_felt(context: Context, value: int):
|
47
|
-
context.ensure_valid_value(
|
48
|
-
is_in_felt_range(value),
|
49
|
-
f"invalid value '{value}' - must be in [0, {FIELD_PRIME}) range",
|
50
|
-
)
|