coinex-api 0.0.15__py3-none-any.whl → 0.0.16__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 (289) 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.15.dist-info → coinex_api-0.0.16.dist-info}/METADATA +1 -1
  287. coinex_api-0.0.16.dist-info/RECORD +288 -0
  288. coinex_api-0.0.15.dist-info/RECORD +0 -3
  289. {coinex_api-0.0.15.dist-info → coinex_api-0.0.16.dist-info}/WHEEL +0 -0
@@ -0,0 +1,132 @@
1
+ from ....marshmallow import Schema, fields
2
+ from ....marshmallow_oneofschema import OneOfSchema
3
+
4
+ from .shape import (
5
+ CONSTRUCTOR_ENTRY,
6
+ DATA_KIND,
7
+ ENUM_ENTRY,
8
+ EVENT_ENTRY,
9
+ FUNCTION_ENTRY,
10
+ IMPL_ENTRY,
11
+ INTERFACE_ENTRY,
12
+ L1_HANDLER_ENTRY,
13
+ NESTED_KIND,
14
+ STRUCT_ENTRY,
15
+ )
16
+
17
+
18
+ class TypeSchema(Schema):
19
+ type = fields.String(data_key="type", required=True)
20
+
21
+
22
+ class TypedParameterSchema(TypeSchema):
23
+ name = fields.String(data_key="name", required=True)
24
+
25
+
26
+ class FunctionBaseSchema(Schema):
27
+ name = fields.String(data_key="name", required=True)
28
+ inputs = fields.List(
29
+ fields.Nested(TypedParameterSchema()), data_key="inputs", required=True
30
+ )
31
+ outputs = fields.List(
32
+ fields.Nested(TypeSchema()), data_key="outputs", required=True
33
+ )
34
+ state_mutability = fields.String(data_key="state_mutability", default=None)
35
+
36
+
37
+ class FunctionAbiEntrySchema(FunctionBaseSchema):
38
+ type = fields.Constant(FUNCTION_ENTRY, data_key="type", required=True)
39
+
40
+
41
+ class ConstructorAbiEntrySchema(Schema):
42
+ type = fields.Constant(CONSTRUCTOR_ENTRY, data_key="type", required=True)
43
+ name = fields.String(data_key="name", required=True)
44
+ inputs = fields.List(
45
+ fields.Nested(TypedParameterSchema()), data_key="inputs", required=True
46
+ )
47
+
48
+
49
+ class L1HandlerAbiEntrySchema(FunctionBaseSchema):
50
+ type = fields.Constant(L1_HANDLER_ENTRY, data_key="type", required=True)
51
+
52
+
53
+ class EventStructMemberSchema(TypedParameterSchema):
54
+ kind = fields.Constant(DATA_KIND, data_key="kind", required=True)
55
+
56
+
57
+ class EventStructAbiEntrySchema(Schema):
58
+ type = fields.Constant(EVENT_ENTRY, data_key="type", required=True)
59
+ name = fields.String(data_key="name", required=True)
60
+ kind = fields.Constant(STRUCT_ENTRY, data_key="kind", required=True)
61
+ members = fields.List(
62
+ fields.Nested(EventStructMemberSchema()), data_key="members", required=True
63
+ )
64
+
65
+
66
+ class EventEnumVariantSchema(TypedParameterSchema):
67
+ kind = fields.Constant(NESTED_KIND, data_key="kind", required=True)
68
+
69
+
70
+ class EventEnumAbiEntrySchema(Schema):
71
+ type = fields.Constant(EVENT_ENTRY, data_key="type", required=True)
72
+ name = fields.String(data_key="name", required=True)
73
+ kind = fields.Constant(ENUM_ENTRY, data_key="kind", required=True)
74
+ variants = fields.List(
75
+ fields.Nested(EventEnumVariantSchema()), data_key="variants", required=True
76
+ )
77
+
78
+
79
+ class EventAbiEntrySchema(OneOfSchema):
80
+ type_field = "kind"
81
+ type_field_remove = False
82
+ type_schemas = {
83
+ STRUCT_ENTRY: EventStructAbiEntrySchema,
84
+ ENUM_ENTRY: EventEnumAbiEntrySchema,
85
+ }
86
+
87
+
88
+ class StructAbiEntrySchema(Schema):
89
+ type = fields.Constant(STRUCT_ENTRY, data_key="type", required=True)
90
+ name = fields.String(data_key="name", required=True)
91
+ members = fields.List(
92
+ fields.Nested(TypedParameterSchema()), data_key="members", required=True
93
+ )
94
+
95
+
96
+ class EnumAbiEntrySchema(Schema):
97
+ type = fields.Constant(ENUM_ENTRY, data_key="type", required=True)
98
+ name = fields.String(data_key="name", required=True)
99
+ variants = fields.List(
100
+ fields.Nested(TypedParameterSchema(), data_key="variants", required=True)
101
+ )
102
+
103
+
104
+ class ImplAbiEntrySchema(Schema):
105
+ type = fields.Constant(IMPL_ENTRY, data_key="type", required=True)
106
+ name = fields.String(data_key="name", required=True)
107
+ interface_name = fields.String(data_key="interface_name", required=True)
108
+
109
+
110
+ class InterfaceAbiEntrySchema(Schema):
111
+ type = fields.Constant(INTERFACE_ENTRY, data_key="type", required=True)
112
+ name = fields.String(data_key="name", required=True)
113
+
114
+ items = fields.List(
115
+ fields.Nested(
116
+ FunctionAbiEntrySchema(), data_key="items", required=True
117
+ ) # for now only functions can be defined here
118
+ )
119
+
120
+
121
+ class ContractAbiEntrySchema(OneOfSchema):
122
+ type_field_remove = False
123
+ type_schemas = {
124
+ FUNCTION_ENTRY: FunctionAbiEntrySchema,
125
+ EVENT_ENTRY: EventAbiEntrySchema,
126
+ STRUCT_ENTRY: StructAbiEntrySchema,
127
+ ENUM_ENTRY: EnumAbiEntrySchema,
128
+ CONSTRUCTOR_ENTRY: ConstructorAbiEntrySchema,
129
+ L1_HANDLER_ENTRY: L1HandlerAbiEntrySchema,
130
+ IMPL_ENTRY: ImplAbiEntrySchema,
131
+ INTERFACE_ENTRY: InterfaceAbiEntrySchema,
132
+ }
@@ -0,0 +1,107 @@
1
+ from __future__ import annotations
2
+
3
+ from typing import List, Literal, Optional, TypedDict, Union
4
+
5
+ STRUCT_ENTRY = "struct"
6
+ EVENT_ENTRY = "event"
7
+ FUNCTION_ENTRY = "function"
8
+ ENUM_ENTRY = "enum"
9
+ CONSTRUCTOR_ENTRY = "constructor"
10
+ L1_HANDLER_ENTRY = "l1_handler"
11
+ IMPL_ENTRY = "impl"
12
+ INTERFACE_ENTRY = "interface"
13
+
14
+ DATA_KIND = "data"
15
+ NESTED_KIND = "nested"
16
+
17
+
18
+ class TypeDict(TypedDict):
19
+ type: str
20
+
21
+
22
+ class TypedParameterDict(TypeDict):
23
+ name: str
24
+
25
+
26
+ class StructDict(TypedDict):
27
+ type: Literal["struct"]
28
+ name: str
29
+ members: List[TypedParameterDict]
30
+
31
+
32
+ class FunctionBaseDict(TypedDict):
33
+ name: str
34
+ inputs: List[TypedParameterDict]
35
+ outputs: List[TypeDict]
36
+ state_mutability: Optional[Literal["external", "view"]]
37
+
38
+
39
+ class FunctionDict(FunctionBaseDict):
40
+ type: Literal["function"]
41
+
42
+
43
+ class ConstructorDict(TypedDict):
44
+ type: Literal["constructor"]
45
+ name: str
46
+ inputs: List[TypedParameterDict]
47
+
48
+
49
+ class L1HandlerDict(FunctionBaseDict):
50
+ type: Literal["l1_handler"]
51
+
52
+
53
+ class EventBaseDict(TypedDict):
54
+ type: Literal["event"]
55
+ name: str
56
+
57
+
58
+ class EventStructMemberDict(TypedParameterDict):
59
+ kind: Literal["data"]
60
+
61
+
62
+ class EventStructDict(EventBaseDict):
63
+ kind: Literal["struct"]
64
+ members: List[EventStructMemberDict]
65
+
66
+
67
+ class EventEnumVariantDict(TypedParameterDict):
68
+ kind: Literal["nested"]
69
+
70
+
71
+ class EventEnumDict(EventBaseDict):
72
+ kind: Literal["enum"]
73
+ variants: List[EventEnumVariantDict]
74
+
75
+
76
+ EventDict = Union[EventStructDict, EventEnumDict]
77
+
78
+
79
+ class EnumDict(TypedDict):
80
+ type: Literal["enum"]
81
+ name: str
82
+ variants: List[TypedParameterDict]
83
+
84
+
85
+ class ImplDict(TypedDict):
86
+ type: Literal["impl"]
87
+ name: str
88
+ interface_name: str
89
+
90
+
91
+ class InterfaceDict(TypedDict):
92
+ type: Literal["interface"]
93
+ name: str
94
+ items: List[FunctionDict] # for now only functions can be defined here
95
+
96
+
97
+ AbiDictEntry = Union[
98
+ StructDict,
99
+ FunctionDict,
100
+ EventDict,
101
+ EnumDict,
102
+ ConstructorDict,
103
+ L1HandlerDict,
104
+ ImplDict,
105
+ InterfaceDict,
106
+ ]
107
+ AbiDictList = List[AbiDictEntry]
@@ -0,0 +1,123 @@
1
+ from __future__ import annotations
2
+
3
+ from abc import ABC
4
+ from collections import OrderedDict
5
+ from dataclasses import dataclass
6
+ from typing import List
7
+
8
+
9
+ class CairoType(ABC):
10
+ """
11
+ Base type for all Cairo type representations. All types extend it.
12
+ """
13
+
14
+
15
+ @dataclass
16
+ class FeltType(CairoType):
17
+ """
18
+ Type representation of Cairo field element.
19
+ """
20
+
21
+
22
+ @dataclass
23
+ class BoolType(CairoType):
24
+ """
25
+ Type representation of Cairo boolean.
26
+ """
27
+
28
+
29
+ @dataclass
30
+ class TupleType(CairoType):
31
+ """
32
+ Type representation of Cairo tuples without named fields.
33
+ """
34
+
35
+ types: List[CairoType] #: types of every tuple element.
36
+
37
+
38
+ @dataclass
39
+ class NamedTupleType(CairoType):
40
+ """
41
+ Type representation of Cairo tuples with named fields.
42
+ """
43
+
44
+ types: OrderedDict[str, CairoType] #: types of every tuple member.
45
+
46
+
47
+ @dataclass
48
+ class ArrayType(CairoType):
49
+ """
50
+ Type representation of Cairo arrays.
51
+ """
52
+
53
+ inner_type: CairoType #: type of element inside array.
54
+
55
+
56
+ @dataclass
57
+ class StructType(CairoType):
58
+ """
59
+ Type representation of Cairo structures.
60
+ """
61
+
62
+ name: str #: Structure name
63
+ # We need ordered dict, because it is important in serialization
64
+ types: OrderedDict[str, CairoType] #: types of every structure member.
65
+
66
+
67
+ @dataclass
68
+ class EnumType(CairoType):
69
+ """
70
+ Type representation of Cairo enums.
71
+ """
72
+
73
+ name: str
74
+ variants: OrderedDict[str, CairoType]
75
+
76
+
77
+ @dataclass
78
+ class OptionType(CairoType):
79
+ """
80
+ Type representation of Cairo options.
81
+ """
82
+
83
+ type: CairoType
84
+
85
+
86
+ @dataclass
87
+ class UintType(CairoType):
88
+ """
89
+ Type representation of Cairo unsigned integers.
90
+ """
91
+
92
+ bits: int
93
+
94
+ def check_range(self, value: int):
95
+ """
96
+ Utility method checking if the `value` is in range.
97
+ """
98
+
99
+
100
+ @dataclass
101
+ class TypeIdentifier(CairoType):
102
+ """
103
+ Type representation of Cairo identifiers.
104
+ """
105
+
106
+ name: str
107
+
108
+
109
+ @dataclass
110
+ class UnitType(CairoType):
111
+ """
112
+ Type representation of Cairo unit `()`.
113
+ """
114
+
115
+
116
+ @dataclass
117
+ class EventType(CairoType):
118
+ """
119
+ Type representation of Cairo Event.
120
+ """
121
+
122
+ name: str
123
+ types: OrderedDict[str, CairoType]
@@ -0,0 +1,77 @@
1
+ import dataclasses
2
+ from typing import List, Optional
3
+
4
+
5
+ class CairoType:
6
+ """
7
+ Base class for cairo types.
8
+ """
9
+
10
+
11
+ @dataclasses.dataclass
12
+ class TypeFelt(CairoType):
13
+ pass
14
+
15
+
16
+ @dataclasses.dataclass
17
+ class TypeCodeoffset(CairoType):
18
+ pass
19
+
20
+
21
+ @dataclasses.dataclass
22
+ class TypePointer(CairoType):
23
+ pointee: CairoType
24
+
25
+
26
+ @dataclasses.dataclass
27
+ class TypeIdentifier(CairoType):
28
+ """
29
+ Represents a name of an unresolved type.
30
+ This type can be resolved to TypeStruct or TypeDefinition.
31
+ """
32
+
33
+ name: str
34
+
35
+
36
+ @dataclasses.dataclass
37
+ class TypeStruct(CairoType):
38
+ scope: str
39
+
40
+
41
+ @dataclasses.dataclass
42
+ class TypeFunction(CairoType):
43
+ """
44
+ Represents a type of a function.
45
+ """
46
+
47
+ scope: str
48
+
49
+
50
+ @dataclasses.dataclass
51
+ class TypeTuple(CairoType):
52
+ """
53
+ Represents a type of a named or unnamed tuple.
54
+ For example, "(felt, felt*)" or "(a: felt, b: felt*)".
55
+ """
56
+
57
+ @dataclasses.dataclass
58
+ class Item(CairoType):
59
+ """
60
+ Represents a possibly named type item of a TypeTuple.
61
+ For example: "felt" or "a: felt".
62
+ """
63
+
64
+ name: Optional[str]
65
+ typ: CairoType
66
+
67
+ members: List["TypeTuple.Item"]
68
+ has_trailing_comma: bool = dataclasses.field(hash=False, compare=False)
69
+
70
+ @property
71
+ def is_named(self) -> bool:
72
+ return all(member.name is not None for member in self.members)
73
+
74
+
75
+ @dataclasses.dataclass
76
+ class ExprIdentifier(CairoType):
77
+ name: str
@@ -0,0 +1,46 @@
1
+ from ....lark import Lark
2
+
3
+ from .cairo_types import CairoType
4
+ from .parser_transformer import ParserTransformer
5
+
6
+ CAIRO_EBNF = """
7
+ %import common.WS_INLINE
8
+ %ignore WS_INLINE
9
+
10
+ IDENTIFIER: /[a-zA-Z_][a-zA-Z_0-9]*/
11
+ _DBL_STAR: "**"
12
+ COMMA: ","
13
+
14
+ ?type: non_identifier_type
15
+ | identifier -> type_struct
16
+
17
+ comma_separated{item}: item? (COMMA item)* COMMA?
18
+
19
+ named_type: identifier (":" type)? | non_identifier_type
20
+ non_identifier_type: "felt" -> type_felt
21
+ | "codeoffset" -> type_codeoffset
22
+ | type "*" -> type_pointer
23
+ | type _DBL_STAR -> type_pointer2
24
+ | "(" comma_separated{named_type} ")" -> type_tuple
25
+
26
+ identifier: IDENTIFIER ("." IDENTIFIER)*
27
+ """
28
+
29
+
30
+ def parse(code: str) -> CairoType:
31
+ """
32
+ Parses the given string and returns a CairoType.
33
+ """
34
+
35
+ grammar = CAIRO_EBNF
36
+
37
+ grammar_parser = Lark(
38
+ grammar=grammar,
39
+ start=["type"],
40
+ parser="lalr",
41
+ )
42
+
43
+ parsed = grammar_parser.parse(code)
44
+ transformed = ParserTransformer().transform(parsed)
45
+
46
+ return transformed
@@ -0,0 +1,138 @@
1
+ import dataclasses
2
+ from typing import Optional, Tuple
3
+
4
+ from ....lark import Token, Transformer, v_args
5
+
6
+ from .cairo_types import (
7
+ CairoType,
8
+ ExprIdentifier,
9
+ TypeCodeoffset,
10
+ TypeFelt,
11
+ TypeIdentifier,
12
+ TypePointer,
13
+ TypeStruct,
14
+ TypeTuple,
15
+ )
16
+
17
+
18
+ @dataclasses.dataclass
19
+ class ParserContext:
20
+ """
21
+ Represents information that affects the parsing process.
22
+ """
23
+
24
+ # If True, treat type identifiers as resolved.
25
+ resolved_types: bool = False
26
+
27
+
28
+ class ParserError(Exception):
29
+ """
30
+ Base exception for parsing process.
31
+ """
32
+
33
+
34
+ @dataclasses.dataclass
35
+ class CommaSeparated:
36
+ """
37
+ Represents a list of comma separated values, such as expressions or types.
38
+ """
39
+
40
+ args: list
41
+ has_trailing_comma: bool
42
+
43
+
44
+ class ParserTransformer(Transformer):
45
+ """
46
+ Transforms the lark tree into an AST based on the classes defined in cairo_types.py.
47
+ """
48
+
49
+ # pylint: disable=unused-argument, no-self-use
50
+
51
+ def __init__(self):
52
+ super().__init__()
53
+ self.parser_context = ParserContext()
54
+
55
+ def __default__(self, data: str, children, meta):
56
+ raise TypeError(f"Unable to parse tree node of type {data}")
57
+
58
+ def comma_separated(self, value) -> CommaSeparated:
59
+ saw_comma = None
60
+ args: list = []
61
+ for v in value:
62
+ if isinstance(v, Token) and v.type == "COMMA":
63
+ if saw_comma is not False:
64
+ raise ParserError("Unexpected comma.")
65
+ saw_comma = True
66
+ else:
67
+ if saw_comma is False:
68
+ raise ParserError("Expected a comma before this expression.")
69
+ args.append(v)
70
+
71
+ # Reset state.
72
+ saw_comma = False
73
+
74
+ if saw_comma is None:
75
+ saw_comma = False
76
+
77
+ return CommaSeparated(args=args, has_trailing_comma=saw_comma)
78
+
79
+ # Types.
80
+
81
+ @v_args(meta=True)
82
+ def named_type(self, meta, value) -> TypeTuple.Item:
83
+ name: Optional[str]
84
+ if len(value) == 1:
85
+ # Unnamed type.
86
+ (typ,) = value
87
+ name = None
88
+ if isinstance(typ, ExprIdentifier):
89
+ typ = self.type_struct([typ])
90
+ elif len(value) == 2:
91
+ # Named type.
92
+ identifier, typ = value
93
+ assert isinstance(identifier, ExprIdentifier)
94
+ assert isinstance(typ, CairoType)
95
+ if "." in identifier.name:
96
+ raise ParserError("Unexpected . in name.")
97
+ name = identifier.name
98
+ else:
99
+ raise NotImplementedError(f"Unexpected number of values. {value}")
100
+
101
+ return TypeTuple.Item(name=name, typ=typ)
102
+
103
+ @v_args(meta=True)
104
+ def type_felt(self, meta, value):
105
+ return TypeFelt()
106
+
107
+ @v_args(meta=True)
108
+ def type_codeoffset(self, meta, value):
109
+ return TypeCodeoffset()
110
+
111
+ def type_struct(self, value):
112
+ assert len(value) == 1 and isinstance(value[0], ExprIdentifier)
113
+ if self.parser_context.resolved_types:
114
+ # If parser_context.resolved_types is True, assume that the type is a struct.
115
+ return TypeStruct(scope=value[0].name)
116
+
117
+ return TypeIdentifier(name=value[0].name)
118
+
119
+ @v_args(meta=True)
120
+ def type_pointer(self, meta, value):
121
+ return TypePointer(pointee=value[0])
122
+
123
+ @v_args(meta=True)
124
+ def type_pointer2(self, meta, value):
125
+ return TypePointer(pointee=TypePointer(pointee=value[0]))
126
+
127
+ @v_args(meta=True)
128
+ def type_tuple(self, meta, value: Tuple[CommaSeparated]):
129
+ (lst,) = value
130
+ return TypeTuple(members=lst.args, has_trailing_comma=lst.has_trailing_comma)
131
+
132
+ @v_args(meta=True)
133
+ def identifier(self, meta, value):
134
+ return ExprIdentifier(name=".".join(x.value for x in value))
135
+
136
+ @v_args(meta=True)
137
+ def identifier_def(self, meta, value):
138
+ return ExprIdentifier(name=value[0].value)
@@ -0,0 +1,64 @@
1
+ from typing import List
2
+
3
+ from ..constants import FIELD_PRIME
4
+
5
+ CairoData = List[int]
6
+
7
+
8
+ MAX_UINT256 = (1 << 256) - 1
9
+ MIN_UINT256 = 0
10
+
11
+
12
+ def uint256_range_check(value: int):
13
+ if not MIN_UINT256 <= value <= MAX_UINT256:
14
+ raise ValueError(
15
+ f"Uint256 is expected to be in range [0;2**256), got: {value}."
16
+ )
17
+
18
+
19
+ MIN_FELT = -FIELD_PRIME // 2
20
+ MAX_FELT = FIELD_PRIME // 2
21
+
22
+
23
+ def is_in_felt_range(value: int) -> bool:
24
+ return 0 <= value < FIELD_PRIME
25
+
26
+
27
+ def cairo_vm_range_check(value: int):
28
+ if not is_in_felt_range(value):
29
+ raise ValueError(
30
+ f"Felt is expected to be in range [0; {FIELD_PRIME}), got: {value}."
31
+ )
32
+
33
+
34
+ def encode_shortstring(text: str) -> int:
35
+ """
36
+ A function which encodes short string value (at most 31 characters) into cairo felt (MSB as first character)
37
+
38
+ :param text: A short string value in python
39
+ :return: Short string value encoded into felt
40
+ """
41
+ if len(text) > 31:
42
+ raise ValueError(
43
+ f"Shortstring cannot be longer than 31 characters, got: {len(text)}."
44
+ )
45
+
46
+ try:
47
+ text_bytes = text.encode("ascii")
48
+ except UnicodeEncodeError as u_err:
49
+ raise ValueError(f"Expected an ascii string. Found: {repr(text)}.") from u_err
50
+ value = int.from_bytes(text_bytes, "big")
51
+
52
+ cairo_vm_range_check(value)
53
+ return value
54
+
55
+
56
+ def decode_shortstring(value: int) -> str:
57
+ """
58
+ A function which decodes a felt value to short string (at most 31 characters)
59
+
60
+ :param value: A felt value
61
+ :return: Decoded string which is corresponds to that felt
62
+ """
63
+ cairo_vm_range_check(value)
64
+ return "".join([chr(i) for i in value.to_bytes(31, byteorder="big")]).lstrip("\x00")