coinex-api 0.0.15__py3-none-any.whl → 0.0.17__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.
Files changed (290) hide show
  1. coinex/__init__.py +7 -0
  2. coinex/ccxt/__init__.py +101 -0
  3. coinex/ccxt/abstract/coinex.py +237 -0
  4. coinex/ccxt/async_support/__init__.py +80 -0
  5. coinex/ccxt/async_support/base/__init__.py +1 -0
  6. coinex/ccxt/async_support/base/exchange.py +2100 -0
  7. coinex/ccxt/async_support/base/throttler.py +50 -0
  8. coinex/ccxt/async_support/base/ws/__init__.py +38 -0
  9. coinex/ccxt/async_support/base/ws/aiohttp_client.py +147 -0
  10. coinex/ccxt/async_support/base/ws/cache.py +213 -0
  11. coinex/ccxt/async_support/base/ws/client.py +214 -0
  12. coinex/ccxt/async_support/base/ws/fast_client.py +97 -0
  13. coinex/ccxt/async_support/base/ws/functions.py +59 -0
  14. coinex/ccxt/async_support/base/ws/future.py +69 -0
  15. coinex/ccxt/async_support/base/ws/order_book.py +78 -0
  16. coinex/ccxt/async_support/base/ws/order_book_side.py +174 -0
  17. coinex/ccxt/async_support/coinex.py +5833 -0
  18. coinex/ccxt/base/__init__.py +27 -0
  19. coinex/ccxt/base/decimal_to_precision.py +174 -0
  20. coinex/ccxt/base/errors.py +267 -0
  21. coinex/ccxt/base/exchange.py +6769 -0
  22. coinex/ccxt/base/precise.py +297 -0
  23. coinex/ccxt/base/types.py +577 -0
  24. coinex/ccxt/coinex.py +5832 -0
  25. coinex/ccxt/pro/__init__.py +21 -0
  26. coinex/ccxt/pro/coinex.py +1366 -0
  27. coinex/ccxt/static_dependencies/README.md +1 -0
  28. coinex/ccxt/static_dependencies/__init__.py +1 -0
  29. coinex/ccxt/static_dependencies/ecdsa/__init__.py +14 -0
  30. coinex/ccxt/static_dependencies/ecdsa/_version.py +520 -0
  31. coinex/ccxt/static_dependencies/ecdsa/curves.py +56 -0
  32. coinex/ccxt/static_dependencies/ecdsa/der.py +221 -0
  33. coinex/ccxt/static_dependencies/ecdsa/ecdsa.py +310 -0
  34. coinex/ccxt/static_dependencies/ecdsa/ellipticcurve.py +197 -0
  35. coinex/ccxt/static_dependencies/ecdsa/keys.py +332 -0
  36. coinex/ccxt/static_dependencies/ecdsa/numbertheory.py +531 -0
  37. coinex/ccxt/static_dependencies/ecdsa/rfc6979.py +100 -0
  38. coinex/ccxt/static_dependencies/ecdsa/util.py +266 -0
  39. coinex/ccxt/static_dependencies/ethereum/__init__.py +7 -0
  40. coinex/ccxt/static_dependencies/ethereum/abi/__init__.py +16 -0
  41. coinex/ccxt/static_dependencies/ethereum/abi/abi.py +19 -0
  42. coinex/ccxt/static_dependencies/ethereum/abi/base.py +152 -0
  43. coinex/ccxt/static_dependencies/ethereum/abi/codec.py +217 -0
  44. coinex/ccxt/static_dependencies/ethereum/abi/constants.py +3 -0
  45. coinex/ccxt/static_dependencies/ethereum/abi/decoding.py +565 -0
  46. coinex/ccxt/static_dependencies/ethereum/abi/encoding.py +720 -0
  47. coinex/ccxt/static_dependencies/ethereum/abi/exceptions.py +139 -0
  48. coinex/ccxt/static_dependencies/ethereum/abi/grammar.py +443 -0
  49. coinex/ccxt/static_dependencies/ethereum/abi/packed.py +13 -0
  50. coinex/ccxt/static_dependencies/ethereum/abi/py.typed +0 -0
  51. coinex/ccxt/static_dependencies/ethereum/abi/registry.py +643 -0
  52. coinex/ccxt/static_dependencies/ethereum/abi/tools/__init__.py +3 -0
  53. coinex/ccxt/static_dependencies/ethereum/abi/tools/_strategies.py +230 -0
  54. coinex/ccxt/static_dependencies/ethereum/abi/utils/__init__.py +0 -0
  55. coinex/ccxt/static_dependencies/ethereum/abi/utils/numeric.py +83 -0
  56. coinex/ccxt/static_dependencies/ethereum/abi/utils/padding.py +27 -0
  57. coinex/ccxt/static_dependencies/ethereum/abi/utils/string.py +19 -0
  58. coinex/ccxt/static_dependencies/ethereum/account/__init__.py +3 -0
  59. coinex/ccxt/static_dependencies/ethereum/account/encode_typed_data/__init__.py +4 -0
  60. coinex/ccxt/static_dependencies/ethereum/account/encode_typed_data/encoding_and_hashing.py +239 -0
  61. coinex/ccxt/static_dependencies/ethereum/account/encode_typed_data/helpers.py +40 -0
  62. coinex/ccxt/static_dependencies/ethereum/account/messages.py +263 -0
  63. coinex/ccxt/static_dependencies/ethereum/account/py.typed +0 -0
  64. coinex/ccxt/static_dependencies/ethereum/hexbytes/__init__.py +5 -0
  65. coinex/ccxt/static_dependencies/ethereum/hexbytes/_utils.py +54 -0
  66. coinex/ccxt/static_dependencies/ethereum/hexbytes/main.py +65 -0
  67. coinex/ccxt/static_dependencies/ethereum/hexbytes/py.typed +0 -0
  68. coinex/ccxt/static_dependencies/ethereum/typing/__init__.py +63 -0
  69. coinex/ccxt/static_dependencies/ethereum/typing/abi.py +6 -0
  70. coinex/ccxt/static_dependencies/ethereum/typing/bls.py +7 -0
  71. coinex/ccxt/static_dependencies/ethereum/typing/discovery.py +5 -0
  72. coinex/ccxt/static_dependencies/ethereum/typing/encoding.py +7 -0
  73. coinex/ccxt/static_dependencies/ethereum/typing/enums.py +17 -0
  74. coinex/ccxt/static_dependencies/ethereum/typing/ethpm.py +9 -0
  75. coinex/ccxt/static_dependencies/ethereum/typing/evm.py +20 -0
  76. coinex/ccxt/static_dependencies/ethereum/typing/networks.py +1122 -0
  77. coinex/ccxt/static_dependencies/ethereum/typing/py.typed +0 -0
  78. coinex/ccxt/static_dependencies/ethereum/utils/__init__.py +115 -0
  79. coinex/ccxt/static_dependencies/ethereum/utils/abi.py +72 -0
  80. coinex/ccxt/static_dependencies/ethereum/utils/address.py +171 -0
  81. coinex/ccxt/static_dependencies/ethereum/utils/applicators.py +151 -0
  82. coinex/ccxt/static_dependencies/ethereum/utils/conversions.py +190 -0
  83. coinex/ccxt/static_dependencies/ethereum/utils/currency.py +107 -0
  84. coinex/ccxt/static_dependencies/ethereum/utils/curried/__init__.py +269 -0
  85. coinex/ccxt/static_dependencies/ethereum/utils/debug.py +20 -0
  86. coinex/ccxt/static_dependencies/ethereum/utils/decorators.py +132 -0
  87. coinex/ccxt/static_dependencies/ethereum/utils/encoding.py +6 -0
  88. coinex/ccxt/static_dependencies/ethereum/utils/exceptions.py +4 -0
  89. coinex/ccxt/static_dependencies/ethereum/utils/functional.py +75 -0
  90. coinex/ccxt/static_dependencies/ethereum/utils/hexadecimal.py +74 -0
  91. coinex/ccxt/static_dependencies/ethereum/utils/humanize.py +188 -0
  92. coinex/ccxt/static_dependencies/ethereum/utils/logging.py +159 -0
  93. coinex/ccxt/static_dependencies/ethereum/utils/module_loading.py +31 -0
  94. coinex/ccxt/static_dependencies/ethereum/utils/numeric.py +43 -0
  95. coinex/ccxt/static_dependencies/ethereum/utils/py.typed +0 -0
  96. coinex/ccxt/static_dependencies/ethereum/utils/toolz.py +76 -0
  97. coinex/ccxt/static_dependencies/ethereum/utils/types.py +54 -0
  98. coinex/ccxt/static_dependencies/ethereum/utils/typing/__init__.py +18 -0
  99. coinex/ccxt/static_dependencies/ethereum/utils/typing/misc.py +14 -0
  100. coinex/ccxt/static_dependencies/ethereum/utils/units.py +31 -0
  101. coinex/ccxt/static_dependencies/keccak/__init__.py +3 -0
  102. coinex/ccxt/static_dependencies/keccak/keccak.py +197 -0
  103. coinex/ccxt/static_dependencies/lark/__init__.py +38 -0
  104. coinex/ccxt/static_dependencies/lark/__pyinstaller/__init__.py +6 -0
  105. coinex/ccxt/static_dependencies/lark/__pyinstaller/hook-lark.py +14 -0
  106. coinex/ccxt/static_dependencies/lark/ast_utils.py +59 -0
  107. coinex/ccxt/static_dependencies/lark/common.py +86 -0
  108. coinex/ccxt/static_dependencies/lark/exceptions.py +292 -0
  109. coinex/ccxt/static_dependencies/lark/grammar.py +130 -0
  110. coinex/ccxt/static_dependencies/lark/grammars/__init__.py +0 -0
  111. coinex/ccxt/static_dependencies/lark/grammars/common.lark +59 -0
  112. coinex/ccxt/static_dependencies/lark/grammars/lark.lark +62 -0
  113. coinex/ccxt/static_dependencies/lark/grammars/python.lark +302 -0
  114. coinex/ccxt/static_dependencies/lark/grammars/unicode.lark +7 -0
  115. coinex/ccxt/static_dependencies/lark/indenter.py +143 -0
  116. coinex/ccxt/static_dependencies/lark/lark.py +658 -0
  117. coinex/ccxt/static_dependencies/lark/lexer.py +678 -0
  118. coinex/ccxt/static_dependencies/lark/load_grammar.py +1428 -0
  119. coinex/ccxt/static_dependencies/lark/parse_tree_builder.py +391 -0
  120. coinex/ccxt/static_dependencies/lark/parser_frontends.py +257 -0
  121. coinex/ccxt/static_dependencies/lark/parsers/__init__.py +0 -0
  122. coinex/ccxt/static_dependencies/lark/parsers/cyk.py +340 -0
  123. coinex/ccxt/static_dependencies/lark/parsers/earley.py +314 -0
  124. coinex/ccxt/static_dependencies/lark/parsers/earley_common.py +42 -0
  125. coinex/ccxt/static_dependencies/lark/parsers/earley_forest.py +801 -0
  126. coinex/ccxt/static_dependencies/lark/parsers/grammar_analysis.py +203 -0
  127. coinex/ccxt/static_dependencies/lark/parsers/lalr_analysis.py +332 -0
  128. coinex/ccxt/static_dependencies/lark/parsers/lalr_interactive_parser.py +158 -0
  129. coinex/ccxt/static_dependencies/lark/parsers/lalr_parser.py +122 -0
  130. coinex/ccxt/static_dependencies/lark/parsers/lalr_parser_state.py +110 -0
  131. coinex/ccxt/static_dependencies/lark/parsers/xearley.py +165 -0
  132. coinex/ccxt/static_dependencies/lark/py.typed +0 -0
  133. coinex/ccxt/static_dependencies/lark/reconstruct.py +107 -0
  134. coinex/ccxt/static_dependencies/lark/tools/__init__.py +70 -0
  135. coinex/ccxt/static_dependencies/lark/tools/nearley.py +202 -0
  136. coinex/ccxt/static_dependencies/lark/tools/serialize.py +32 -0
  137. coinex/ccxt/static_dependencies/lark/tools/standalone.py +196 -0
  138. coinex/ccxt/static_dependencies/lark/tree.py +267 -0
  139. coinex/ccxt/static_dependencies/lark/tree_matcher.py +186 -0
  140. coinex/ccxt/static_dependencies/lark/tree_templates.py +180 -0
  141. coinex/ccxt/static_dependencies/lark/utils.py +343 -0
  142. coinex/ccxt/static_dependencies/lark/visitors.py +596 -0
  143. coinex/ccxt/static_dependencies/marshmallow/__init__.py +81 -0
  144. coinex/ccxt/static_dependencies/marshmallow/base.py +65 -0
  145. coinex/ccxt/static_dependencies/marshmallow/class_registry.py +94 -0
  146. coinex/ccxt/static_dependencies/marshmallow/decorators.py +231 -0
  147. coinex/ccxt/static_dependencies/marshmallow/error_store.py +60 -0
  148. coinex/ccxt/static_dependencies/marshmallow/exceptions.py +71 -0
  149. coinex/ccxt/static_dependencies/marshmallow/fields.py +2114 -0
  150. coinex/ccxt/static_dependencies/marshmallow/orderedset.py +89 -0
  151. coinex/ccxt/static_dependencies/marshmallow/py.typed +0 -0
  152. coinex/ccxt/static_dependencies/marshmallow/schema.py +1228 -0
  153. coinex/ccxt/static_dependencies/marshmallow/types.py +12 -0
  154. coinex/ccxt/static_dependencies/marshmallow/utils.py +378 -0
  155. coinex/ccxt/static_dependencies/marshmallow/validate.py +678 -0
  156. coinex/ccxt/static_dependencies/marshmallow/warnings.py +2 -0
  157. coinex/ccxt/static_dependencies/marshmallow_dataclass/__init__.py +1047 -0
  158. coinex/ccxt/static_dependencies/marshmallow_dataclass/collection_field.py +51 -0
  159. coinex/ccxt/static_dependencies/marshmallow_dataclass/lazy_class_attribute.py +45 -0
  160. coinex/ccxt/static_dependencies/marshmallow_dataclass/mypy.py +71 -0
  161. coinex/ccxt/static_dependencies/marshmallow_dataclass/py.typed +0 -0
  162. coinex/ccxt/static_dependencies/marshmallow_dataclass/typing.py +14 -0
  163. coinex/ccxt/static_dependencies/marshmallow_dataclass/union_field.py +82 -0
  164. coinex/ccxt/static_dependencies/marshmallow_oneofschema/__init__.py +1 -0
  165. coinex/ccxt/static_dependencies/marshmallow_oneofschema/one_of_schema.py +193 -0
  166. coinex/ccxt/static_dependencies/marshmallow_oneofschema/py.typed +0 -0
  167. coinex/ccxt/static_dependencies/msgpack/__init__.py +55 -0
  168. coinex/ccxt/static_dependencies/msgpack/_cmsgpack.pyx +11 -0
  169. coinex/ccxt/static_dependencies/msgpack/_packer.pyx +374 -0
  170. coinex/ccxt/static_dependencies/msgpack/_unpacker.pyx +547 -0
  171. coinex/ccxt/static_dependencies/msgpack/buff_converter.h +8 -0
  172. coinex/ccxt/static_dependencies/msgpack/exceptions.py +48 -0
  173. coinex/ccxt/static_dependencies/msgpack/ext.py +168 -0
  174. coinex/ccxt/static_dependencies/msgpack/fallback.py +951 -0
  175. coinex/ccxt/static_dependencies/msgpack/pack.h +89 -0
  176. coinex/ccxt/static_dependencies/msgpack/pack_template.h +820 -0
  177. coinex/ccxt/static_dependencies/msgpack/sysdep.h +194 -0
  178. coinex/ccxt/static_dependencies/msgpack/unpack.h +391 -0
  179. coinex/ccxt/static_dependencies/msgpack/unpack_define.h +95 -0
  180. coinex/ccxt/static_dependencies/msgpack/unpack_template.h +464 -0
  181. coinex/ccxt/static_dependencies/parsimonious/__init__.py +10 -0
  182. coinex/ccxt/static_dependencies/parsimonious/exceptions.py +105 -0
  183. coinex/ccxt/static_dependencies/parsimonious/expressions.py +479 -0
  184. coinex/ccxt/static_dependencies/parsimonious/grammar.py +487 -0
  185. coinex/ccxt/static_dependencies/parsimonious/nodes.py +325 -0
  186. coinex/ccxt/static_dependencies/parsimonious/utils.py +40 -0
  187. coinex/ccxt/static_dependencies/starknet/__init__.py +0 -0
  188. coinex/ccxt/static_dependencies/starknet/abi/v0/__init__.py +2 -0
  189. coinex/ccxt/static_dependencies/starknet/abi/v0/model.py +44 -0
  190. coinex/ccxt/static_dependencies/starknet/abi/v0/parser.py +216 -0
  191. coinex/ccxt/static_dependencies/starknet/abi/v0/schemas.py +72 -0
  192. coinex/ccxt/static_dependencies/starknet/abi/v0/shape.py +63 -0
  193. coinex/ccxt/static_dependencies/starknet/abi/v1/__init__.py +2 -0
  194. coinex/ccxt/static_dependencies/starknet/abi/v1/core_structures.json +14 -0
  195. coinex/ccxt/static_dependencies/starknet/abi/v1/model.py +39 -0
  196. coinex/ccxt/static_dependencies/starknet/abi/v1/parser.py +220 -0
  197. coinex/ccxt/static_dependencies/starknet/abi/v1/parser_transformer.py +179 -0
  198. coinex/ccxt/static_dependencies/starknet/abi/v1/schemas.py +66 -0
  199. coinex/ccxt/static_dependencies/starknet/abi/v1/shape.py +47 -0
  200. coinex/ccxt/static_dependencies/starknet/abi/v2/__init__.py +2 -0
  201. coinex/ccxt/static_dependencies/starknet/abi/v2/model.py +89 -0
  202. coinex/ccxt/static_dependencies/starknet/abi/v2/parser.py +293 -0
  203. coinex/ccxt/static_dependencies/starknet/abi/v2/parser_transformer.py +192 -0
  204. coinex/ccxt/static_dependencies/starknet/abi/v2/schemas.py +132 -0
  205. coinex/ccxt/static_dependencies/starknet/abi/v2/shape.py +107 -0
  206. coinex/ccxt/static_dependencies/starknet/cairo/__init__.py +0 -0
  207. coinex/ccxt/static_dependencies/starknet/cairo/data_types.py +123 -0
  208. coinex/ccxt/static_dependencies/starknet/cairo/deprecated_parse/__init__.py +0 -0
  209. coinex/ccxt/static_dependencies/starknet/cairo/deprecated_parse/cairo_types.py +77 -0
  210. coinex/ccxt/static_dependencies/starknet/cairo/deprecated_parse/parser.py +46 -0
  211. coinex/ccxt/static_dependencies/starknet/cairo/deprecated_parse/parser_transformer.py +138 -0
  212. coinex/ccxt/static_dependencies/starknet/cairo/felt.py +64 -0
  213. coinex/ccxt/static_dependencies/starknet/cairo/type_parser.py +121 -0
  214. coinex/ccxt/static_dependencies/starknet/cairo/v1/__init__.py +0 -0
  215. coinex/ccxt/static_dependencies/starknet/cairo/v1/type_parser.py +59 -0
  216. coinex/ccxt/static_dependencies/starknet/cairo/v2/__init__.py +0 -0
  217. coinex/ccxt/static_dependencies/starknet/cairo/v2/type_parser.py +77 -0
  218. coinex/ccxt/static_dependencies/starknet/ccxt_utils.py +7 -0
  219. coinex/ccxt/static_dependencies/starknet/common.py +15 -0
  220. coinex/ccxt/static_dependencies/starknet/constants.py +39 -0
  221. coinex/ccxt/static_dependencies/starknet/hash/__init__.py +0 -0
  222. coinex/ccxt/static_dependencies/starknet/hash/address.py +79 -0
  223. coinex/ccxt/static_dependencies/starknet/hash/compiled_class_hash_objects.py +111 -0
  224. coinex/ccxt/static_dependencies/starknet/hash/selector.py +16 -0
  225. coinex/ccxt/static_dependencies/starknet/hash/storage.py +12 -0
  226. coinex/ccxt/static_dependencies/starknet/hash/utils.py +78 -0
  227. coinex/ccxt/static_dependencies/starknet/models/__init__.py +0 -0
  228. coinex/ccxt/static_dependencies/starknet/models/typed_data.py +45 -0
  229. coinex/ccxt/static_dependencies/starknet/serialization/__init__.py +24 -0
  230. coinex/ccxt/static_dependencies/starknet/serialization/_calldata_reader.py +40 -0
  231. coinex/ccxt/static_dependencies/starknet/serialization/_context.py +142 -0
  232. coinex/ccxt/static_dependencies/starknet/serialization/data_serializers/__init__.py +10 -0
  233. coinex/ccxt/static_dependencies/starknet/serialization/data_serializers/_common.py +82 -0
  234. coinex/ccxt/static_dependencies/starknet/serialization/data_serializers/array_serializer.py +43 -0
  235. coinex/ccxt/static_dependencies/starknet/serialization/data_serializers/bool_serializer.py +37 -0
  236. coinex/ccxt/static_dependencies/starknet/serialization/data_serializers/byte_array_serializer.py +66 -0
  237. coinex/ccxt/static_dependencies/starknet/serialization/data_serializers/cairo_data_serializer.py +71 -0
  238. coinex/ccxt/static_dependencies/starknet/serialization/data_serializers/enum_serializer.py +71 -0
  239. coinex/ccxt/static_dependencies/starknet/serialization/data_serializers/felt_serializer.py +50 -0
  240. coinex/ccxt/static_dependencies/starknet/serialization/data_serializers/named_tuple_serializer.py +58 -0
  241. coinex/ccxt/static_dependencies/starknet/serialization/data_serializers/option_serializer.py +43 -0
  242. coinex/ccxt/static_dependencies/starknet/serialization/data_serializers/output_serializer.py +40 -0
  243. coinex/ccxt/static_dependencies/starknet/serialization/data_serializers/payload_serializer.py +72 -0
  244. coinex/ccxt/static_dependencies/starknet/serialization/data_serializers/struct_serializer.py +36 -0
  245. coinex/ccxt/static_dependencies/starknet/serialization/data_serializers/tuple_serializer.py +36 -0
  246. coinex/ccxt/static_dependencies/starknet/serialization/data_serializers/uint256_serializer.py +76 -0
  247. coinex/ccxt/static_dependencies/starknet/serialization/data_serializers/uint_serializer.py +100 -0
  248. coinex/ccxt/static_dependencies/starknet/serialization/data_serializers/unit_serializer.py +32 -0
  249. coinex/ccxt/static_dependencies/starknet/serialization/errors.py +10 -0
  250. coinex/ccxt/static_dependencies/starknet/serialization/factory.py +229 -0
  251. coinex/ccxt/static_dependencies/starknet/serialization/function_serialization_adapter.py +110 -0
  252. coinex/ccxt/static_dependencies/starknet/serialization/tuple_dataclass.py +59 -0
  253. coinex/ccxt/static_dependencies/starknet/utils/__init__.py +0 -0
  254. coinex/ccxt/static_dependencies/starknet/utils/constructor_args_translator.py +86 -0
  255. coinex/ccxt/static_dependencies/starknet/utils/iterable.py +13 -0
  256. coinex/ccxt/static_dependencies/starknet/utils/schema.py +13 -0
  257. coinex/ccxt/static_dependencies/starknet/utils/typed_data.py +182 -0
  258. coinex/ccxt/static_dependencies/starkware/__init__.py +0 -0
  259. coinex/ccxt/static_dependencies/starkware/crypto/__init__.py +0 -0
  260. coinex/ccxt/static_dependencies/starkware/crypto/fast_pedersen_hash.py +50 -0
  261. coinex/ccxt/static_dependencies/starkware/crypto/math_utils.py +78 -0
  262. coinex/ccxt/static_dependencies/starkware/crypto/signature.py +2344 -0
  263. coinex/ccxt/static_dependencies/starkware/crypto/utils.py +63 -0
  264. coinex/ccxt/static_dependencies/sympy/__init__.py +0 -0
  265. coinex/ccxt/static_dependencies/sympy/core/__init__.py +0 -0
  266. coinex/ccxt/static_dependencies/sympy/core/intfunc.py +35 -0
  267. coinex/ccxt/static_dependencies/sympy/external/__init__.py +0 -0
  268. coinex/ccxt/static_dependencies/sympy/external/gmpy.py +345 -0
  269. coinex/ccxt/static_dependencies/sympy/external/importtools.py +187 -0
  270. coinex/ccxt/static_dependencies/sympy/external/ntheory.py +637 -0
  271. coinex/ccxt/static_dependencies/sympy/external/pythonmpq.py +341 -0
  272. coinex/ccxt/static_dependencies/toolz/__init__.py +26 -0
  273. coinex/ccxt/static_dependencies/toolz/_signatures.py +784 -0
  274. coinex/ccxt/static_dependencies/toolz/_version.py +520 -0
  275. coinex/ccxt/static_dependencies/toolz/compatibility.py +30 -0
  276. coinex/ccxt/static_dependencies/toolz/curried/__init__.py +101 -0
  277. coinex/ccxt/static_dependencies/toolz/curried/exceptions.py +22 -0
  278. coinex/ccxt/static_dependencies/toolz/curried/operator.py +22 -0
  279. coinex/ccxt/static_dependencies/toolz/dicttoolz.py +339 -0
  280. coinex/ccxt/static_dependencies/toolz/functoolz.py +1049 -0
  281. coinex/ccxt/static_dependencies/toolz/itertoolz.py +1057 -0
  282. coinex/ccxt/static_dependencies/toolz/recipes.py +46 -0
  283. coinex/ccxt/static_dependencies/toolz/utils.py +9 -0
  284. coinex/ccxt/static_dependencies/typing_inspect/__init__.py +0 -0
  285. coinex/ccxt/static_dependencies/typing_inspect/typing_inspect.py +851 -0
  286. coinex_api-0.0.17.dist-info/METADATA +425 -0
  287. coinex_api-0.0.17.dist-info/RECORD +288 -0
  288. coinex_api-0.0.15.dist-info/METADATA +0 -79
  289. coinex_api-0.0.15.dist-info/RECORD +0 -3
  290. {coinex_api-0.0.15.dist-info → coinex_api-0.0.17.dist-info}/WHEEL +0 -0
@@ -0,0 +1,58 @@
1
+ from dataclasses import dataclass
2
+ from typing import Dict, Generator, NamedTuple, OrderedDict, Union
3
+
4
+ from .._context import (
5
+ DeserializationContext,
6
+ SerializationContext,
7
+ )
8
+ from ._common import (
9
+ deserialize_to_dict,
10
+ serialize_from_dict,
11
+ )
12
+ from .cairo_data_serializer import (
13
+ CairoDataSerializer,
14
+ )
15
+ from ..tuple_dataclass import TupleDataclass
16
+
17
+
18
+ @dataclass
19
+ class NamedTupleSerializer(
20
+ CairoDataSerializer[Union[Dict, NamedTuple, TupleDataclass], TupleDataclass]
21
+ ):
22
+ """
23
+ Serializer for tuples with named fields.
24
+ Can serialize a dictionary, a named tuple and TupleDataclass.
25
+ Deserializes data to a TupleDataclass.
26
+
27
+ Example:
28
+ {"a": 1, "b": 2} => [1,2]
29
+ """
30
+
31
+ serializers: OrderedDict[str, CairoDataSerializer]
32
+
33
+ def deserialize_with_context(
34
+ self, context: DeserializationContext
35
+ ) -> TupleDataclass:
36
+ as_dictionary = deserialize_to_dict(self.serializers, context)
37
+ return TupleDataclass.from_dict(as_dictionary)
38
+
39
+ def serialize_with_context(
40
+ self,
41
+ context: SerializationContext,
42
+ value: Union[Dict, NamedTuple, TupleDataclass],
43
+ ) -> Generator[int, None, None]:
44
+ # We can't use isinstance(value, NamedTuple), because there is no NamedTuple type.
45
+ context.ensure_valid_type(
46
+ value,
47
+ isinstance(value, (dict, TupleDataclass)) or self._is_namedtuple(value),
48
+ "dict, NamedTuple or TupleDataclass",
49
+ )
50
+
51
+ # noinspection PyUnresolvedReferences, PyProtectedMember
52
+ values: Dict = value if isinstance(value, dict) else value._asdict()
53
+
54
+ yield from serialize_from_dict(self.serializers, context, values)
55
+
56
+ @staticmethod
57
+ def _is_namedtuple(value) -> bool:
58
+ return isinstance(value, tuple) and hasattr(value, "_fields")
@@ -0,0 +1,43 @@
1
+ from dataclasses import dataclass
2
+ from typing import Any, Generator, Optional
3
+
4
+ from .._context import (
5
+ DeserializationContext,
6
+ SerializationContext,
7
+ )
8
+ from .cairo_data_serializer import (
9
+ CairoDataSerializer,
10
+ )
11
+
12
+
13
+ @dataclass
14
+ class OptionSerializer(CairoDataSerializer[Optional[Any], Optional[Any]]):
15
+ """
16
+ Serializer for Option type.
17
+ Can serialize None and common CairoTypes.
18
+ Deserializes data to None or CairoType.
19
+
20
+ Example:
21
+ None => [1]
22
+ {"option1": 123, "option2": None} => [0, 123, 1]
23
+ """
24
+
25
+ serializer: CairoDataSerializer
26
+
27
+ def deserialize_with_context(
28
+ self, context: DeserializationContext
29
+ ) -> Optional[Any]:
30
+ (is_none,) = context.reader.read(1)
31
+ if is_none == 1:
32
+ return None
33
+
34
+ return self.serializer.deserialize_with_context(context)
35
+
36
+ def serialize_with_context(
37
+ self, context: SerializationContext, value: Optional[Any]
38
+ ) -> Generator[int, None, None]:
39
+ if value is None:
40
+ yield 1
41
+ else:
42
+ yield 0
43
+ yield from self.serializer.serialize_with_context(context, value)
@@ -0,0 +1,40 @@
1
+ from dataclasses import dataclass, field
2
+ from typing import Dict, Generator, List, Tuple
3
+
4
+ from .._context import (
5
+ DeserializationContext,
6
+ SerializationContext,
7
+ )
8
+ from .cairo_data_serializer import (
9
+ CairoDataSerializer,
10
+ )
11
+
12
+
13
+ @dataclass
14
+ class OutputSerializer(CairoDataSerializer[List, Tuple]):
15
+ """
16
+ Serializer for function output.
17
+ Can't serialize anything.
18
+ Deserializes data to a Tuple.
19
+
20
+ Example:
21
+ [1, 1, 1] => (340282366920938463463374607431768211457)
22
+ """
23
+
24
+ serializers: List[CairoDataSerializer] = field(init=True)
25
+
26
+ def deserialize_with_context(self, context: DeserializationContext) -> Tuple:
27
+ result = []
28
+
29
+ for index, serializer in enumerate(self.serializers):
30
+ with context.push_entity("output[" + str(index) + "]"):
31
+ result.append(serializer.deserialize_with_context(context))
32
+
33
+ return tuple(result)
34
+
35
+ def serialize_with_context(
36
+ self, context: SerializationContext, value: Dict
37
+ ) -> Generator[int, None, None]:
38
+ raise ValueError(
39
+ "Output serializer can't be used to transform python data into calldata."
40
+ )
@@ -0,0 +1,72 @@
1
+ from collections import OrderedDict as _OrderedDict
2
+ from dataclasses import InitVar, dataclass, field
3
+ from typing import Dict, Generator, OrderedDict
4
+
5
+ from .._context import (
6
+ DeserializationContext,
7
+ SerializationContext,
8
+ )
9
+ from ._common import (
10
+ deserialize_to_dict,
11
+ serialize_from_dict,
12
+ )
13
+ from .array_serializer import ArraySerializer
14
+ from .cairo_data_serializer import (
15
+ CairoDataSerializer,
16
+ )
17
+ from .felt_serializer import FeltSerializer
18
+ from ..tuple_dataclass import TupleDataclass
19
+
20
+ SIZE_SUFFIX = "_len"
21
+ SIZE_SUFFIX_LEN = len(SIZE_SUFFIX)
22
+
23
+
24
+ @dataclass
25
+ class PayloadSerializer(CairoDataSerializer[Dict, TupleDataclass]):
26
+ """
27
+ Serializer for payloads like function arguments/function outputs/events.
28
+ Can serialize a dictionary.
29
+ Deserializes data to a TupleDataclass.
30
+
31
+ Example:
32
+ {"a": 1, "b": 2} => [1,2]
33
+ """
34
+
35
+ # Value present only in constructor.
36
+ # We don't want to mutate the serializers received in constructor.
37
+ input_serializers: InitVar[OrderedDict[str, CairoDataSerializer]]
38
+
39
+ serializers: OrderedDict[str, CairoDataSerializer] = field(init=False)
40
+
41
+ def __post_init__(self, input_serializers):
42
+ """
43
+ ABI adds ARG_len for every argument ARG that is an array. We parse length as a part of ArraySerializer, so we
44
+ need to remove those lengths from args.
45
+ """
46
+ self.serializers = _OrderedDict(
47
+ (key, serializer)
48
+ for key, serializer in input_serializers.items()
49
+ if not self._is_len_arg(key, input_serializers)
50
+ )
51
+
52
+ def deserialize_with_context(
53
+ self, context: DeserializationContext
54
+ ) -> TupleDataclass:
55
+ as_dictionary = deserialize_to_dict(self.serializers, context)
56
+ return TupleDataclass.from_dict(as_dictionary)
57
+
58
+ def serialize_with_context(
59
+ self, context: SerializationContext, value: Dict
60
+ ) -> Generator[int, None, None]:
61
+ yield from serialize_from_dict(self.serializers, context, value)
62
+
63
+ @staticmethod
64
+ def _is_len_arg(arg_name: str, serializers: Dict[str, CairoDataSerializer]) -> bool:
65
+ return (
66
+ arg_name.endswith(SIZE_SUFFIX)
67
+ and isinstance(serializers[arg_name], FeltSerializer)
68
+ # There is an ArraySerializer under key that is arg_name without the size suffix
69
+ and isinstance(
70
+ serializers.get(arg_name[:-SIZE_SUFFIX_LEN]), ArraySerializer
71
+ )
72
+ )
@@ -0,0 +1,36 @@
1
+ from dataclasses import dataclass
2
+ from typing import Dict, Generator, OrderedDict
3
+
4
+ from .._context import (
5
+ DeserializationContext,
6
+ SerializationContext,
7
+ )
8
+ from ._common import (
9
+ deserialize_to_dict,
10
+ serialize_from_dict,
11
+ )
12
+ from .cairo_data_serializer import (
13
+ CairoDataSerializer,
14
+ )
15
+
16
+
17
+ @dataclass
18
+ class StructSerializer(CairoDataSerializer[Dict, Dict]):
19
+ """
20
+ Serializer of custom structures.
21
+ Can serialize a dictionary.
22
+ Deserializes data to a dictionary.
23
+
24
+ Example:
25
+ {"a": 1, "b": 2} => [1,2]
26
+ """
27
+
28
+ serializers: OrderedDict[str, CairoDataSerializer]
29
+
30
+ def deserialize_with_context(self, context: DeserializationContext) -> Dict:
31
+ return deserialize_to_dict(self.serializers, context)
32
+
33
+ def serialize_with_context(
34
+ self, context: SerializationContext, value: Dict
35
+ ) -> Generator[int, None, None]:
36
+ yield from serialize_from_dict(self.serializers, context, value)
@@ -0,0 +1,36 @@
1
+ from dataclasses import dataclass
2
+ from typing import Generator, Iterable, List, Tuple
3
+
4
+ from .._context import (
5
+ DeserializationContext,
6
+ SerializationContext,
7
+ )
8
+ from ._common import (
9
+ deserialize_to_list,
10
+ serialize_from_list,
11
+ )
12
+ from .cairo_data_serializer import (
13
+ CairoDataSerializer,
14
+ )
15
+
16
+
17
+ @dataclass
18
+ class TupleSerializer(CairoDataSerializer[Iterable, Tuple]):
19
+ """
20
+ Serializer for tuples without named fields.
21
+ Can serialize any iterable.
22
+ Deserializes data to a python tuple.
23
+
24
+ Example:
25
+ (1,2,(3,4)) => [1,2,3,4]
26
+ """
27
+
28
+ serializers: List[CairoDataSerializer]
29
+
30
+ def deserialize_with_context(self, context: DeserializationContext) -> Tuple:
31
+ return tuple(deserialize_to_list(self.serializers, context))
32
+
33
+ def serialize_with_context(
34
+ self, context: SerializationContext, value: Iterable
35
+ ) -> Generator[int, None, None]:
36
+ yield from serialize_from_list(self.serializers, context, [*value])
@@ -0,0 +1,76 @@
1
+ from dataclasses import dataclass
2
+ from typing import Generator, TypedDict, Union
3
+
4
+ from ...cairo.felt import uint256_range_check
5
+ from .._context import (
6
+ Context,
7
+ DeserializationContext,
8
+ SerializationContext,
9
+ )
10
+ from .cairo_data_serializer import (
11
+ CairoDataSerializer,
12
+ )
13
+
14
+ U128_UPPER_BOUND = 2**128
15
+
16
+
17
+ class Uint256Dict(TypedDict):
18
+ low: int
19
+ high: int
20
+
21
+
22
+ @dataclass
23
+ class Uint256Serializer(CairoDataSerializer[Union[int, Uint256Dict], int]):
24
+ """
25
+ Serializer of Uint256. In Cairo it is represented by structure {low: Uint128, high: Uint128}.
26
+ Can serialize an int.
27
+ Deserializes data to an int.
28
+
29
+ Examples:
30
+ 0 => [0,0]
31
+ 1 => [1,0]
32
+ 2**128 => [0,1]
33
+ 3 + 2**128 => [3,1]
34
+ """
35
+
36
+ def deserialize_with_context(self, context: DeserializationContext) -> int:
37
+ [low, high] = context.reader.read(2)
38
+
39
+ # Checking if resulting value is in [0, 2**256) range is not enough. Uint256 should be made of two uint128.
40
+ with context.push_entity("low"):
41
+ self._ensure_valid_uint128(low, context)
42
+ with context.push_entity("high"):
43
+ self._ensure_valid_uint128(high, context)
44
+
45
+ return (high << 128) + low
46
+
47
+ def serialize_with_context(
48
+ self, context: SerializationContext, value: Union[int, Uint256Dict]
49
+ ) -> Generator[int, None, None]:
50
+ context.ensure_valid_type(value, isinstance(value, (int, dict)), "int or dict")
51
+ if isinstance(value, int):
52
+ yield from self._serialize_from_int(value)
53
+ else:
54
+ yield from self._serialize_from_dict(context, value)
55
+
56
+ @staticmethod
57
+ def _serialize_from_int(value: int) -> Generator[int, None, None]:
58
+ uint256_range_check(value)
59
+ result = (value % 2**128, value // 2**128)
60
+ yield from result
61
+
62
+ def _serialize_from_dict(
63
+ self, context: SerializationContext, value: Uint256Dict
64
+ ) -> Generator[int, None, None]:
65
+ with context.push_entity("low"):
66
+ self._ensure_valid_uint128(value["low"], context)
67
+ yield value["low"]
68
+ with context.push_entity("high"):
69
+ self._ensure_valid_uint128(value["high"], context)
70
+ yield value["high"]
71
+
72
+ @staticmethod
73
+ def _ensure_valid_uint128(value: int, context: Context):
74
+ context.ensure_valid_value(
75
+ 0 <= value < U128_UPPER_BOUND, "expected value in range [0;2**128)"
76
+ )
@@ -0,0 +1,100 @@
1
+ from dataclasses import dataclass
2
+ from typing import Generator, TypedDict, Union
3
+
4
+ from ...cairo.felt import uint256_range_check
5
+ from .._context import (
6
+ Context,
7
+ DeserializationContext,
8
+ SerializationContext,
9
+ )
10
+ from .cairo_data_serializer import (
11
+ CairoDataSerializer,
12
+ )
13
+
14
+
15
+ class Uint256Dict(TypedDict):
16
+ low: int
17
+ high: int
18
+
19
+
20
+ @dataclass
21
+ class UintSerializer(CairoDataSerializer[Union[int, Uint256Dict], int]):
22
+ """
23
+ Serializer of uint. In Cairo there are few uints (u8, ..., u128 and u256).
24
+ u256 is represented by structure {low: u128, high: u128}.
25
+ Can serialize an int and dict.
26
+ Deserializes data to an int.
27
+
28
+ Examples:
29
+ if bits < 256:
30
+ 0 => [0]
31
+ 1 => [1]
32
+ 2**128-1 => [2**128-1]
33
+ else:
34
+ 0 => [0,0]
35
+ 1 => [1,0]
36
+ 2**128 => [0,1]
37
+ 3 + 2**128 => [3,1]
38
+ """
39
+
40
+ bits: int
41
+
42
+ def deserialize_with_context(self, context: DeserializationContext) -> int:
43
+ if self.bits < 256:
44
+ (uint,) = context.reader.read(1)
45
+ with context.push_entity("uint" + str(self.bits)):
46
+ self._ensure_valid_uint(uint, context, self.bits)
47
+
48
+ return uint
49
+
50
+ [low, high] = context.reader.read(2)
51
+
52
+ # Checking if resulting value is in [0, 2**256) range is not enough. Uint256 should be made of two uint128.
53
+ with context.push_entity("low"):
54
+ self._ensure_valid_uint(low, context, bits=128)
55
+ with context.push_entity("high"):
56
+ self._ensure_valid_uint(high, context, bits=128)
57
+
58
+ return (high << 128) + low
59
+
60
+ def serialize_with_context(
61
+ self, context: SerializationContext, value: Union[int, Uint256Dict]
62
+ ) -> Generator[int, None, None]:
63
+ context.ensure_valid_type(value, isinstance(value, (int, dict)), "int or dict")
64
+ if isinstance(value, int):
65
+ yield from self._serialize_from_int(value, context, self.bits)
66
+ else:
67
+ yield from self._serialize_from_dict(context, value)
68
+
69
+ @staticmethod
70
+ def _serialize_from_int(
71
+ value: int, context: SerializationContext, bits: int
72
+ ) -> Generator[int, None, None]:
73
+ if bits < 256:
74
+ UintSerializer._ensure_valid_uint(value, context, bits)
75
+
76
+ yield value
77
+ else:
78
+ uint256_range_check(value)
79
+
80
+ result = (value % 2**128, value >> 128)
81
+ yield from result
82
+
83
+ def _serialize_from_dict(
84
+ self, context: SerializationContext, value: Uint256Dict
85
+ ) -> Generator[int, None, None]:
86
+ with context.push_entity("low"):
87
+ self._ensure_valid_uint(value["low"], context, bits=128)
88
+ yield value["low"]
89
+ with context.push_entity("high"):
90
+ self._ensure_valid_uint(value["high"], context, bits=128)
91
+ yield value["high"]
92
+
93
+ @staticmethod
94
+ def _ensure_valid_uint(value: int, context: Context, bits: int):
95
+ """
96
+ Ensures that value is a valid uint on `bits` bits.
97
+ """
98
+ context.ensure_valid_value(
99
+ 0 <= value < 2**bits, "expected value in range [0;2**" + str(bits) + ")"
100
+ )
@@ -0,0 +1,32 @@
1
+ from dataclasses import dataclass
2
+ from typing import Any, Generator, Optional
3
+
4
+ from .._context import (
5
+ DeserializationContext,
6
+ SerializationContext,
7
+ )
8
+ from .cairo_data_serializer import (
9
+ CairoDataSerializer,
10
+ )
11
+
12
+
13
+ @dataclass
14
+ class UnitSerializer(CairoDataSerializer[None, None]):
15
+ """
16
+ Serializer for unit type.
17
+ Can only serialize None.
18
+ Deserializes data to None.
19
+
20
+ Example:
21
+ [] => None
22
+ """
23
+
24
+ def deserialize_with_context(self, context: DeserializationContext) -> None:
25
+ return None
26
+
27
+ def serialize_with_context(
28
+ self, context: SerializationContext, value: Optional[Any]
29
+ ) -> Generator[None, None, None]:
30
+ if value is not None:
31
+ raise ValueError("Can only serialize `None`.")
32
+ yield None
@@ -0,0 +1,10 @@
1
+ class CairoSerializerException(Exception):
2
+ """Exception thrown by CairoSerializer."""
3
+
4
+
5
+ class InvalidTypeException(CairoSerializerException, TypeError):
6
+ """Exception thrown when invalid type was provided."""
7
+
8
+
9
+ class InvalidValueException(CairoSerializerException, ValueError):
10
+ """Exception thrown when invalid value was provided."""