coinex-api 0.0.12__py3-none-any.whl → 0.0.14__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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.12.dist-info → coinex_api-0.0.14.dist-info}/METADATA +1 -1
  287. coinex_api-0.0.14.dist-info/RECORD +288 -0
  288. coinex_api-0.0.12.dist-info/RECORD +0 -3
  289. {coinex_api-0.0.12.dist-info → coinex_api-0.0.14.dist-info}/WHEEL +0 -0
@@ -0,0 +1,115 @@
1
+ from importlib.metadata import (
2
+ version as __version,
3
+ )
4
+
5
+ # from .abi import (
6
+ # event_abi_to_log_topic,
7
+ # event_signature_to_log_topic,
8
+ # function_abi_to_4byte_selector,
9
+ # function_signature_to_4byte_selector,
10
+ # )
11
+ from .address import (
12
+ is_address,
13
+ is_binary_address,
14
+ is_canonical_address,
15
+ is_checksum_address,
16
+ is_checksum_formatted_address,
17
+ is_hex_address,
18
+ is_normalized_address,
19
+ is_same_address,
20
+ to_canonical_address,
21
+ to_checksum_address,
22
+ to_normalized_address,
23
+ )
24
+ from .applicators import (
25
+ apply_formatter_at_index,
26
+ apply_formatter_if,
27
+ apply_formatter_to_array,
28
+ apply_formatters_to_dict,
29
+ apply_formatters_to_sequence,
30
+ apply_key_map,
31
+ apply_one_of_formatters,
32
+ combine_argument_formatters,
33
+ )
34
+ from .conversions import (
35
+ hexstr_if_str,
36
+ text_if_str,
37
+ to_bytes,
38
+ to_hex,
39
+ to_int,
40
+ to_text,
41
+ )
42
+ from .currency import (
43
+ denoms,
44
+ from_wei,
45
+ to_wei,
46
+ )
47
+ from .decorators import (
48
+ combomethod,
49
+ replace_exceptions,
50
+ )
51
+ from .encoding import (
52
+ big_endian_to_int,
53
+ int_to_big_endian,
54
+ )
55
+ from .exceptions import (
56
+ ValidationError,
57
+ )
58
+ from .functional import (
59
+ apply_to_return_value,
60
+ flatten_return,
61
+ reversed_return,
62
+ sort_return,
63
+ to_dict,
64
+ to_list,
65
+ to_ordered_dict,
66
+ to_set,
67
+ to_tuple,
68
+ )
69
+ from .hexadecimal import (
70
+ add_0x_prefix,
71
+ decode_hex,
72
+ encode_hex,
73
+ is_0x_prefixed,
74
+ is_hex,
75
+ is_hexstr,
76
+ remove_0x_prefix,
77
+ )
78
+ from .humanize import (
79
+ humanize_bytes,
80
+ humanize_hash,
81
+ humanize_integer_sequence,
82
+ humanize_ipfs_uri,
83
+ humanize_seconds,
84
+ humanize_wei,
85
+ )
86
+ from .logging import (
87
+ DEBUG2_LEVEL_NUM,
88
+ ExtendedDebugLogger,
89
+ HasExtendedDebugLogger,
90
+ HasExtendedDebugLoggerMeta,
91
+ HasLogger,
92
+ HasLoggerMeta,
93
+ get_extended_debug_logger,
94
+ get_logger,
95
+ setup_DEBUG2_logging,
96
+ )
97
+ from .module_loading import (
98
+ import_string,
99
+ )
100
+ from .numeric import (
101
+ clamp,
102
+ )
103
+ from .types import (
104
+ is_boolean,
105
+ is_bytes,
106
+ is_dict,
107
+ is_integer,
108
+ is_list,
109
+ is_list_like,
110
+ is_null,
111
+ is_number,
112
+ is_string,
113
+ is_text,
114
+ is_tuple,
115
+ )
@@ -0,0 +1,72 @@
1
+ from typing import (
2
+ Any,
3
+ Dict,
4
+ )
5
+
6
+ from .conversions import (
7
+ to_bytes
8
+ )
9
+
10
+ from ...keccak import (
11
+ SHA3 as keccak,
12
+ )
13
+
14
+
15
+ def collapse_if_tuple(abi: Dict[str, Any]) -> str:
16
+ """
17
+ Converts a tuple from a dict to a parenthesized list of its types.
18
+
19
+ >>> from eth_utils.abi import collapse_if_tuple
20
+ >>> collapse_if_tuple(
21
+ ... {
22
+ ... 'components': [
23
+ ... {'name': 'anAddress', 'type': 'address'},
24
+ ... {'name': 'anInt', 'type': 'uint256'},
25
+ ... {'name': 'someBytes', 'type': 'bytes'},
26
+ ... ],
27
+ ... 'type': 'tuple',
28
+ ... }
29
+ ... )
30
+ '(address,uint256,bytes)'
31
+ """
32
+ typ = abi["type"]
33
+ if not isinstance(typ, str):
34
+ raise TypeError(
35
+ f"The 'type' must be a string, but got {repr(typ)} of type {type(typ)}"
36
+ )
37
+ elif not typ.startswith("tuple"):
38
+ return typ
39
+
40
+ delimited = ",".join(collapse_if_tuple(c) for c in abi["components"])
41
+ # Whatever comes after "tuple" is the array dims. The ABI spec states that
42
+ # this will have the form "", "[]", or "[k]".
43
+ array_dim = typ[5:]
44
+ collapsed = f"({delimited}){array_dim}"
45
+
46
+ return collapsed
47
+
48
+
49
+ def _abi_to_signature(abi: Dict[str, Any]) -> str:
50
+ fn_input_types = ",".join(
51
+ [collapse_if_tuple(abi_input) for abi_input in abi.get("inputs", [])]
52
+ )
53
+ function_signature = f"{abi['name']}({fn_input_types})"
54
+ return function_signature
55
+
56
+
57
+ def function_signature_to_4byte_selector(event_signature: str) -> bytes:
58
+ return keccak(to_bytes(text=event_signature.replace(" ", "")))[:4]
59
+
60
+
61
+ def function_abi_to_4byte_selector(function_abi: Dict[str, Any]) -> bytes:
62
+ function_signature = _abi_to_signature(function_abi)
63
+ return function_signature_to_4byte_selector(function_signature)
64
+
65
+
66
+ def event_signature_to_log_topic(event_signature: str) -> bytes:
67
+ return keccak(to_bytes(text=event_signature.replace(" ", "")))
68
+
69
+
70
+ def event_abi_to_log_topic(event_abi: Dict[str, Any]) -> bytes:
71
+ event_signature = _abi_to_signature(event_abi)
72
+ return event_signature_to_log_topic(event_signature)
@@ -0,0 +1,171 @@
1
+ import re
2
+ from typing import (
3
+ Any,
4
+ Union,
5
+ cast,
6
+ )
7
+
8
+ from ..typing import (
9
+ Address,
10
+ AnyAddress,
11
+ ChecksumAddress,
12
+ HexAddress,
13
+ HexStr,
14
+ )
15
+
16
+ from .conversions import (
17
+ hexstr_if_str,
18
+ to_hex,
19
+ to_bytes,
20
+ )
21
+ from ...keccak import (
22
+ SHA3 as keccak,
23
+ )
24
+ from .hexadecimal import (
25
+ add_0x_prefix,
26
+ decode_hex,
27
+ encode_hex,
28
+ remove_0x_prefix,
29
+ )
30
+ from .types import (
31
+ is_bytes,
32
+ is_text,
33
+ )
34
+
35
+ _HEX_ADDRESS_REGEXP = re.compile("(0x)?[0-9a-f]{40}", re.IGNORECASE | re.ASCII)
36
+
37
+
38
+ def is_hex_address(value: Any) -> bool:
39
+ """
40
+ Checks if the given string of text type is an address in hexadecimal encoded form.
41
+ """
42
+ if not is_text(value):
43
+ return False
44
+ return _HEX_ADDRESS_REGEXP.fullmatch(value) is not None
45
+
46
+
47
+ def is_binary_address(value: Any) -> bool:
48
+ """
49
+ Checks if the given string is an address in raw bytes form.
50
+ """
51
+ if not is_bytes(value):
52
+ return False
53
+ elif len(value) != 20:
54
+ return False
55
+ else:
56
+ return True
57
+
58
+
59
+ def is_address(value: Any) -> bool:
60
+ """
61
+ Is the given string an address in any of the known formats?
62
+ """
63
+ if is_hex_address(value):
64
+ if _is_checksum_formatted(value):
65
+ return is_checksum_address(value)
66
+ return True
67
+
68
+ if is_binary_address(value):
69
+ return True
70
+
71
+ return False
72
+
73
+
74
+ def to_normalized_address(value: Union[AnyAddress, str, bytes]) -> HexAddress:
75
+ """
76
+ Converts an address to its normalized hexadecimal representation.
77
+ """
78
+ try:
79
+ hex_address = hexstr_if_str(to_hex, value).lower()
80
+ except AttributeError:
81
+ raise TypeError(f"Value must be any string, instead got type {type(value)}")
82
+ if is_address(hex_address):
83
+ return HexAddress(HexStr(hex_address))
84
+ else:
85
+ raise ValueError(
86
+ f"Unknown format {repr(value)}, attempted to normalize to "
87
+ f"{repr(hex_address)}"
88
+ )
89
+
90
+
91
+ def is_normalized_address(value: Any) -> bool:
92
+ """
93
+ Returns whether the provided value is an address in its normalized form.
94
+ """
95
+ if not is_address(value):
96
+ return False
97
+ else:
98
+ is_equal = value == to_normalized_address(value)
99
+ return cast(bool, is_equal)
100
+
101
+
102
+ def to_canonical_address(address: Union[AnyAddress, str, bytes]) -> Address:
103
+ """
104
+ Convert a valid address to its canonical form (20-length bytes).
105
+ """
106
+ return Address(decode_hex(to_normalized_address(address)))
107
+
108
+
109
+ def is_canonical_address(address: Any) -> bool:
110
+ """
111
+ Returns `True` if the `value` is an address in its canonical form.
112
+ """
113
+ if not is_bytes(address) or len(address) != 20:
114
+ return False
115
+ is_equal = address == to_canonical_address(address)
116
+ return cast(bool, is_equal)
117
+
118
+
119
+ def is_same_address(left: AnyAddress, right: AnyAddress) -> bool:
120
+ """
121
+ Checks if both addresses are same or not.
122
+ """
123
+ if not is_address(left) or not is_address(right):
124
+ raise ValueError("Both values must be valid addresses")
125
+ else:
126
+ return bool(to_normalized_address(left) == to_normalized_address(right))
127
+
128
+
129
+ def to_checksum_address(value: Union[AnyAddress, str, bytes]) -> ChecksumAddress:
130
+ """
131
+ Makes a checksum address given a supported format.
132
+ """
133
+ norm_address = to_normalized_address(value)
134
+ address_hash = encode_hex(keccak(to_bytes(text=remove_0x_prefix(HexStr(norm_address)))))
135
+
136
+ checksum_address = add_0x_prefix(
137
+ HexStr(
138
+ "".join(
139
+ (
140
+ norm_address[i].upper()
141
+ if int(address_hash[i], 16) > 7
142
+ else norm_address[i]
143
+ )
144
+ for i in range(2, 42)
145
+ )
146
+ )
147
+ )
148
+ return ChecksumAddress(HexAddress(checksum_address))
149
+
150
+
151
+ def is_checksum_address(value: Any) -> bool:
152
+ if not is_text(value):
153
+ return False
154
+
155
+ if not is_hex_address(value):
156
+ return False
157
+ is_equal = value == to_checksum_address(value)
158
+ return cast(bool, is_equal)
159
+
160
+
161
+ def _is_checksum_formatted(value: Any) -> bool:
162
+ unprefixed_value = remove_0x_prefix(value)
163
+ return (
164
+ not unprefixed_value.islower()
165
+ and not unprefixed_value.isupper()
166
+ and not unprefixed_value.isnumeric()
167
+ )
168
+
169
+
170
+ def is_checksum_formatted_address(value: Any) -> bool:
171
+ return is_hex_address(value) and _is_checksum_formatted(value)
@@ -0,0 +1,151 @@
1
+ from typing import (
2
+ Any,
3
+ Callable,
4
+ Dict,
5
+ Generator,
6
+ List,
7
+ Tuple,
8
+ )
9
+ import warnings
10
+
11
+ from .decorators import (
12
+ return_arg_type,
13
+ )
14
+ from .functional import (
15
+ to_dict,
16
+ )
17
+ from .toolz import (
18
+ compose,
19
+ curry,
20
+ )
21
+
22
+ Formatters = Callable[[List[Any]], List[Any]]
23
+
24
+
25
+ @return_arg_type(2)
26
+ def apply_formatter_at_index(
27
+ formatter: Callable[..., Any], at_index: int, value: List[Any]
28
+ ) -> Generator[List[Any], None, None]:
29
+ if at_index + 1 > len(value):
30
+ raise IndexError(
31
+ f"Not enough values in iterable to apply formatter. Got: {len(value)}. "
32
+ f"Need: {at_index + 1}"
33
+ )
34
+ for index, item in enumerate(value):
35
+ if index == at_index:
36
+ yield formatter(item)
37
+ else:
38
+ yield item
39
+
40
+
41
+ def combine_argument_formatters(*formatters: List[Callable[..., Any]]) -> Formatters:
42
+ warnings.warn(
43
+ DeprecationWarning(
44
+ "combine_argument_formatters(formatter1, formatter2)([item1, item2])"
45
+ "has been deprecated and will be removed in a subsequent major version "
46
+ "release of the eth-utils library. Update your calls to use "
47
+ "apply_formatters_to_sequence([formatter1, formatter2], [item1, item2]) "
48
+ "instead."
49
+ ),
50
+ stacklevel=2,
51
+ )
52
+
53
+ _formatter_at_index = curry(apply_formatter_at_index)
54
+ return compose( # type: ignore
55
+ *(
56
+ _formatter_at_index(formatter, index)
57
+ for index, formatter in enumerate(formatters)
58
+ )
59
+ )
60
+
61
+
62
+ @return_arg_type(1)
63
+ def apply_formatters_to_sequence(
64
+ formatters: List[Any], sequence: List[Any]
65
+ ) -> Generator[List[Any], None, None]:
66
+ if len(formatters) > len(sequence):
67
+ raise IndexError(
68
+ f"Too many formatters for sequence: {len(formatters)} formatters for "
69
+ f"{repr(sequence)}"
70
+ )
71
+ elif len(formatters) < len(sequence):
72
+ raise IndexError(
73
+ f"Too few formatters for sequence: {len(formatters)} formatters for "
74
+ f"{repr(sequence)}"
75
+ )
76
+ else:
77
+ for formatter, item in zip(formatters, sequence):
78
+ yield formatter(item)
79
+
80
+
81
+ def apply_formatter_if(
82
+ condition: Callable[..., bool], formatter: Callable[..., Any], value: Any
83
+ ) -> Any:
84
+ if condition(value):
85
+ return formatter(value)
86
+ else:
87
+ return value
88
+
89
+
90
+ @to_dict
91
+ def apply_formatters_to_dict(
92
+ formatters: Dict[Any, Any], value: Dict[Any, Any]
93
+ ) -> Generator[Tuple[Any, Any], None, None]:
94
+ for key, item in value.items():
95
+ if key in formatters:
96
+ try:
97
+ yield key, formatters[key](item)
98
+ except ValueError as exc:
99
+ new_error_message = (
100
+ f"Could not format invalid value {repr(item)} as field {repr(key)}"
101
+ )
102
+ raise ValueError(new_error_message) from exc
103
+ except TypeError as exc:
104
+ new_error_message = (
105
+ f"Could not format invalid type {repr(item)} as field {repr(key)}"
106
+ )
107
+ raise TypeError(new_error_message) from exc
108
+ else:
109
+ yield key, item
110
+
111
+
112
+ @return_arg_type(1)
113
+ def apply_formatter_to_array(
114
+ formatter: Callable[..., Any], value: List[Any]
115
+ ) -> Generator[List[Any], None, None]:
116
+ for item in value:
117
+ yield formatter(item)
118
+
119
+
120
+ def apply_one_of_formatters(
121
+ formatter_condition_pairs: Tuple[Tuple[Callable[..., Any], Callable[..., Any]]],
122
+ value: Any,
123
+ ) -> Any:
124
+ for condition, formatter in formatter_condition_pairs:
125
+ if condition(value):
126
+ return formatter(value)
127
+ else:
128
+ raise ValueError(
129
+ "The provided value did not satisfy any of the formatter conditions"
130
+ )
131
+
132
+
133
+ @to_dict
134
+ def apply_key_map(
135
+ key_mappings: Dict[Any, Any], value: Dict[Any, Any]
136
+ ) -> Generator[Tuple[Any, Any], None, None]:
137
+ key_conflicts = (
138
+ set(value.keys())
139
+ .difference(key_mappings.keys())
140
+ .intersection(v for k, v in key_mappings.items() if v in value)
141
+ )
142
+ if key_conflicts:
143
+ raise KeyError(
144
+ f"Could not apply key map due to conflicting key(s): {key_conflicts}"
145
+ )
146
+
147
+ for key, item in value.items():
148
+ if key in key_mappings:
149
+ yield key_mappings[key], item
150
+ else:
151
+ yield key, item
@@ -0,0 +1,190 @@
1
+ from typing import (
2
+ Callable,
3
+ Optional,
4
+ TypeVar,
5
+ Union,
6
+ cast,
7
+ )
8
+
9
+ from ..typing import (
10
+ HexStr,
11
+ Primitives,
12
+ )
13
+
14
+ from .decorators import (
15
+ validate_conversion_arguments,
16
+ )
17
+ from .encoding import (
18
+ big_endian_to_int,
19
+ int_to_big_endian,
20
+ )
21
+ from .hexadecimal import (
22
+ add_0x_prefix,
23
+ decode_hex,
24
+ encode_hex,
25
+ is_hexstr,
26
+ remove_0x_prefix,
27
+ )
28
+ from .types import (
29
+ is_boolean,
30
+ is_integer,
31
+ is_string,
32
+ )
33
+
34
+ T = TypeVar("T")
35
+
36
+
37
+ @validate_conversion_arguments
38
+ def to_hex(
39
+ primitive: Optional[Primitives] = None,
40
+ hexstr: Optional[HexStr] = None,
41
+ text: Optional[str] = None,
42
+ ) -> HexStr:
43
+ """
44
+ Auto converts any supported value into its hex representation.
45
+ Trims leading zeros, as defined in:
46
+ https://github.com/ethereum/wiki/wiki/JSON-RPC#hex-value-encoding
47
+ """
48
+ if hexstr is not None:
49
+ return add_0x_prefix(HexStr(hexstr.lower()))
50
+
51
+ if text is not None:
52
+ return encode_hex(text.encode("utf-8"))
53
+
54
+ if is_boolean(primitive):
55
+ return HexStr("0x1") if primitive else HexStr("0x0")
56
+
57
+ if isinstance(primitive, (bytes, bytearray)):
58
+ return encode_hex(primitive)
59
+ elif is_string(primitive):
60
+ raise TypeError(
61
+ "Unsupported type: The primitive argument must be one of: bytes,"
62
+ "bytearray, int or bool and not str"
63
+ )
64
+
65
+ if is_integer(primitive):
66
+ return HexStr(hex(cast(int, primitive)))
67
+
68
+ raise TypeError(
69
+ f"Unsupported type: '{repr(type(primitive))}'. Must be one of: bool, str, "
70
+ "bytes, bytearray or int."
71
+ )
72
+
73
+
74
+ @validate_conversion_arguments
75
+ def to_int(
76
+ primitive: Optional[Primitives] = None,
77
+ hexstr: Optional[HexStr] = None,
78
+ text: Optional[str] = None,
79
+ ) -> int:
80
+ """
81
+ Converts value to its integer representation.
82
+ Values are converted this way:
83
+
84
+ * primitive:
85
+
86
+ * bytes, bytearrays: big-endian integer
87
+ * bool: True => 1, False => 0
88
+ * hexstr: interpret hex as integer
89
+ * text: interpret as string of digits, like '12' => 12
90
+ """
91
+ if hexstr is not None:
92
+ return int(hexstr, 16)
93
+ elif text is not None:
94
+ return int(text)
95
+ elif isinstance(primitive, (bytes, bytearray)):
96
+ return big_endian_to_int(primitive)
97
+ elif isinstance(primitive, str):
98
+ raise TypeError("Pass in strings with keyword hexstr or text")
99
+ elif isinstance(primitive, (int, bool)):
100
+ return int(primitive)
101
+ else:
102
+ raise TypeError(
103
+ "Invalid type. Expected one of int/bool/str/bytes/bytearray. Got "
104
+ f"{type(primitive)}"
105
+ )
106
+
107
+
108
+ @validate_conversion_arguments
109
+ def to_bytes(
110
+ primitive: Optional[Primitives] = None,
111
+ hexstr: Optional[HexStr] = None,
112
+ text: Optional[str] = None,
113
+ ) -> bytes:
114
+ if is_boolean(primitive):
115
+ return b"\x01" if primitive else b"\x00"
116
+ elif isinstance(primitive, bytearray):
117
+ return bytes(primitive)
118
+ elif isinstance(primitive, bytes):
119
+ return primitive
120
+ elif is_integer(primitive):
121
+ return to_bytes(hexstr=to_hex(primitive))
122
+ elif hexstr is not None:
123
+ if len(hexstr) % 2:
124
+ hexstr = cast(HexStr, "0x0" + remove_0x_prefix(hexstr))
125
+ return decode_hex(hexstr)
126
+ elif text is not None:
127
+ return text.encode("utf-8")
128
+ raise TypeError(
129
+ "expected a bool, int, byte or bytearray in first arg, "
130
+ "or keyword of hexstr or text"
131
+ )
132
+
133
+
134
+ @validate_conversion_arguments
135
+ def to_text(
136
+ primitive: Optional[Primitives] = None,
137
+ hexstr: Optional[HexStr] = None,
138
+ text: Optional[str] = None,
139
+ ) -> str:
140
+ if hexstr is not None:
141
+ return to_bytes(hexstr=hexstr).decode("utf-8")
142
+ elif text is not None:
143
+ return text
144
+ elif isinstance(primitive, str):
145
+ return to_text(hexstr=primitive)
146
+ elif isinstance(primitive, (bytes, bytearray)):
147
+ return primitive.decode("utf-8")
148
+ elif is_integer(primitive):
149
+ byte_encoding = int_to_big_endian(cast(int, primitive))
150
+ return to_text(byte_encoding)
151
+ raise TypeError("Expected an int, bytes, bytearray or hexstr.")
152
+
153
+
154
+ def text_if_str(
155
+ to_type: Callable[..., T], text_or_primitive: Union[bytes, int, str]
156
+ ) -> T:
157
+ """
158
+ Convert to a type, assuming that strings can be only unicode text (not a hexstr).
159
+
160
+ :param to_type function: takes the arguments (primitive, hexstr=hexstr, text=text),
161
+ eg~ to_bytes, to_text, to_hex, to_int, etc
162
+ :param text_or_primitive bytes, str, int: value to convert
163
+ """
164
+ if isinstance(text_or_primitive, str):
165
+ return to_type(text=text_or_primitive)
166
+ else:
167
+ return to_type(text_or_primitive)
168
+
169
+
170
+ def hexstr_if_str(
171
+ to_type: Callable[..., T], hexstr_or_primitive: Union[bytes, int, str]
172
+ ) -> T:
173
+ """
174
+ Convert to a type, assuming that strings can be only hexstr (not unicode text).
175
+
176
+ :param to_type function: takes the arguments (primitive, hexstr=hexstr, text=text),
177
+ eg~ to_bytes, to_text, to_hex, to_int, etc
178
+ :param hexstr_or_primitive bytes, str, int: value to convert
179
+ """
180
+ if isinstance(hexstr_or_primitive, str):
181
+ if remove_0x_prefix(HexStr(hexstr_or_primitive)) and not is_hexstr(
182
+ hexstr_or_primitive
183
+ ):
184
+ raise ValueError(
185
+ "when sending a str, it must be a hex string. "
186
+ f"Got: {repr(hexstr_or_primitive)}"
187
+ )
188
+ return to_type(hexstr=hexstr_or_primitive)
189
+ else:
190
+ return to_type(hexstr_or_primitive)