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,464 @@
1
+ /*
2
+ * MessagePack unpacking routine template
3
+ *
4
+ * Copyright (C) 2008-2010 FURUHASHI Sadayuki
5
+ *
6
+ * Licensed under the Apache License, Version 2.0 (the "License");
7
+ * you may not use this file except in compliance with the License.
8
+ * You may obtain a copy of the License at
9
+ *
10
+ * http://www.apache.org/licenses/LICENSE-2.0
11
+ *
12
+ * Unless required by applicable law or agreed to in writing, software
13
+ * distributed under the License is distributed on an "AS IS" BASIS,
14
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ * See the License for the specific language governing permissions and
16
+ * limitations under the License.
17
+ */
18
+
19
+ #ifndef USE_CASE_RANGE
20
+ #if !defined(_MSC_VER)
21
+ #define USE_CASE_RANGE
22
+ #endif
23
+ #endif
24
+
25
+ typedef struct unpack_stack {
26
+ PyObject* obj;
27
+ Py_ssize_t size;
28
+ Py_ssize_t count;
29
+ unsigned int ct;
30
+ PyObject* map_key;
31
+ } unpack_stack;
32
+
33
+ struct unpack_context {
34
+ unpack_user user;
35
+ unsigned int cs;
36
+ unsigned int trail;
37
+ unsigned int top;
38
+ /*
39
+ unpack_stack* stack;
40
+ unsigned int stack_size;
41
+ unpack_stack embed_stack[MSGPACK_EMBED_STACK_SIZE];
42
+ */
43
+ unpack_stack stack[MSGPACK_EMBED_STACK_SIZE];
44
+ };
45
+
46
+
47
+ static inline void unpack_init(unpack_context* ctx)
48
+ {
49
+ ctx->cs = CS_HEADER;
50
+ ctx->trail = 0;
51
+ ctx->top = 0;
52
+ /*
53
+ ctx->stack = ctx->embed_stack;
54
+ ctx->stack_size = MSGPACK_EMBED_STACK_SIZE;
55
+ */
56
+ ctx->stack[0].obj = unpack_callback_root(&ctx->user);
57
+ }
58
+
59
+ /*
60
+ static inline void unpack_destroy(unpack_context* ctx)
61
+ {
62
+ if(ctx->stack_size != MSGPACK_EMBED_STACK_SIZE) {
63
+ free(ctx->stack);
64
+ }
65
+ }
66
+ */
67
+
68
+ static inline PyObject* unpack_data(unpack_context* ctx)
69
+ {
70
+ return (ctx)->stack[0].obj;
71
+ }
72
+
73
+ static inline void unpack_clear(unpack_context *ctx)
74
+ {
75
+ Py_CLEAR(ctx->stack[0].obj);
76
+ }
77
+
78
+ template <bool construct>
79
+ static inline int unpack_execute(unpack_context* ctx, const char* data, Py_ssize_t len, Py_ssize_t* off)
80
+ {
81
+ assert(len >= *off);
82
+
83
+ const unsigned char* p = (unsigned char*)data + *off;
84
+ const unsigned char* const pe = (unsigned char*)data + len;
85
+ const void* n = p;
86
+
87
+ unsigned int trail = ctx->trail;
88
+ unsigned int cs = ctx->cs;
89
+ unsigned int top = ctx->top;
90
+ unpack_stack* stack = ctx->stack;
91
+ /*
92
+ unsigned int stack_size = ctx->stack_size;
93
+ */
94
+ unpack_user* user = &ctx->user;
95
+
96
+ PyObject* obj = NULL;
97
+ unpack_stack* c = NULL;
98
+
99
+ int ret;
100
+
101
+ #define construct_cb(name) \
102
+ construct && unpack_callback ## name
103
+
104
+ #define push_simple_value(func) \
105
+ if(construct_cb(func)(user, &obj) < 0) { goto _failed; } \
106
+ goto _push
107
+ #define push_fixed_value(func, arg) \
108
+ if(construct_cb(func)(user, arg, &obj) < 0) { goto _failed; } \
109
+ goto _push
110
+ #define push_variable_value(func, base, pos, len) \
111
+ if(construct_cb(func)(user, \
112
+ (const char*)base, (const char*)pos, len, &obj) < 0) { goto _failed; } \
113
+ goto _push
114
+
115
+ #define again_fixed_trail(_cs, trail_len) \
116
+ trail = trail_len; \
117
+ cs = _cs; \
118
+ goto _fixed_trail_again
119
+ #define again_fixed_trail_if_zero(_cs, trail_len, ifzero) \
120
+ trail = trail_len; \
121
+ if(trail == 0) { goto ifzero; } \
122
+ cs = _cs; \
123
+ goto _fixed_trail_again
124
+
125
+ #define start_container(func, count_, ct_) \
126
+ if(top >= MSGPACK_EMBED_STACK_SIZE) { ret = -3; goto _end; } \
127
+ if(construct_cb(func)(user, count_, &stack[top].obj) < 0) { goto _failed; } \
128
+ if((count_) == 0) { obj = stack[top].obj; \
129
+ if (construct_cb(func##_end)(user, &obj) < 0) { goto _failed; } \
130
+ goto _push; } \
131
+ stack[top].ct = ct_; \
132
+ stack[top].size = count_; \
133
+ stack[top].count = 0; \
134
+ ++top; \
135
+ goto _header_again
136
+
137
+ #define NEXT_CS(p) ((unsigned int)*p & 0x1f)
138
+
139
+ #ifdef USE_CASE_RANGE
140
+ #define SWITCH_RANGE_BEGIN switch(*p) {
141
+ #define SWITCH_RANGE(FROM, TO) case FROM ... TO:
142
+ #define SWITCH_RANGE_DEFAULT default:
143
+ #define SWITCH_RANGE_END }
144
+ #else
145
+ #define SWITCH_RANGE_BEGIN { if(0) {
146
+ #define SWITCH_RANGE(FROM, TO) } else if(FROM <= *p && *p <= TO) {
147
+ #define SWITCH_RANGE_DEFAULT } else {
148
+ #define SWITCH_RANGE_END } }
149
+ #endif
150
+
151
+ if(p == pe) { goto _out; }
152
+ do {
153
+ switch(cs) {
154
+ case CS_HEADER:
155
+ SWITCH_RANGE_BEGIN
156
+ SWITCH_RANGE(0x00, 0x7f) // Positive Fixnum
157
+ push_fixed_value(_uint8, *(uint8_t*)p);
158
+ SWITCH_RANGE(0xe0, 0xff) // Negative Fixnum
159
+ push_fixed_value(_int8, *(int8_t*)p);
160
+ SWITCH_RANGE(0xc0, 0xdf) // Variable
161
+ switch(*p) {
162
+ case 0xc0: // nil
163
+ push_simple_value(_nil);
164
+ //case 0xc1: // never used
165
+ case 0xc2: // false
166
+ push_simple_value(_false);
167
+ case 0xc3: // true
168
+ push_simple_value(_true);
169
+ case 0xc4: // bin 8
170
+ again_fixed_trail(NEXT_CS(p), 1);
171
+ case 0xc5: // bin 16
172
+ again_fixed_trail(NEXT_CS(p), 2);
173
+ case 0xc6: // bin 32
174
+ again_fixed_trail(NEXT_CS(p), 4);
175
+ case 0xc7: // ext 8
176
+ again_fixed_trail(NEXT_CS(p), 1);
177
+ case 0xc8: // ext 16
178
+ again_fixed_trail(NEXT_CS(p), 2);
179
+ case 0xc9: // ext 32
180
+ again_fixed_trail(NEXT_CS(p), 4);
181
+ case 0xca: // float
182
+ case 0xcb: // double
183
+ case 0xcc: // unsigned int 8
184
+ case 0xcd: // unsigned int 16
185
+ case 0xce: // unsigned int 32
186
+ case 0xcf: // unsigned int 64
187
+ case 0xd0: // signed int 8
188
+ case 0xd1: // signed int 16
189
+ case 0xd2: // signed int 32
190
+ case 0xd3: // signed int 64
191
+ again_fixed_trail(NEXT_CS(p), 1 << (((unsigned int)*p) & 0x03));
192
+ case 0xd4: // fixext 1
193
+ case 0xd5: // fixext 2
194
+ case 0xd6: // fixext 4
195
+ case 0xd7: // fixext 8
196
+ again_fixed_trail_if_zero(ACS_EXT_VALUE,
197
+ (1 << (((unsigned int)*p) & 0x03))+1,
198
+ _ext_zero);
199
+ case 0xd8: // fixext 16
200
+ again_fixed_trail_if_zero(ACS_EXT_VALUE, 16+1, _ext_zero);
201
+ case 0xd9: // str 8
202
+ again_fixed_trail(NEXT_CS(p), 1);
203
+ case 0xda: // raw 16
204
+ case 0xdb: // raw 32
205
+ case 0xdc: // array 16
206
+ case 0xdd: // array 32
207
+ case 0xde: // map 16
208
+ case 0xdf: // map 32
209
+ again_fixed_trail(NEXT_CS(p), 2 << (((unsigned int)*p) & 0x01));
210
+ default:
211
+ ret = -2;
212
+ goto _end;
213
+ }
214
+ SWITCH_RANGE(0xa0, 0xbf) // FixRaw
215
+ again_fixed_trail_if_zero(ACS_RAW_VALUE, ((unsigned int)*p & 0x1f), _raw_zero);
216
+ SWITCH_RANGE(0x90, 0x9f) // FixArray
217
+ start_container(_array, ((unsigned int)*p) & 0x0f, CT_ARRAY_ITEM);
218
+ SWITCH_RANGE(0x80, 0x8f) // FixMap
219
+ start_container(_map, ((unsigned int)*p) & 0x0f, CT_MAP_KEY);
220
+
221
+ SWITCH_RANGE_DEFAULT
222
+ ret = -2;
223
+ goto _end;
224
+ SWITCH_RANGE_END
225
+ // end CS_HEADER
226
+
227
+
228
+ _fixed_trail_again:
229
+ ++p;
230
+
231
+ default:
232
+ if((size_t)(pe - p) < trail) { goto _out; }
233
+ n = p; p += trail - 1;
234
+ switch(cs) {
235
+ case CS_EXT_8:
236
+ again_fixed_trail_if_zero(ACS_EXT_VALUE, *(uint8_t*)n+1, _ext_zero);
237
+ case CS_EXT_16:
238
+ again_fixed_trail_if_zero(ACS_EXT_VALUE,
239
+ _msgpack_load16(uint16_t,n)+1,
240
+ _ext_zero);
241
+ case CS_EXT_32:
242
+ again_fixed_trail_if_zero(ACS_EXT_VALUE,
243
+ _msgpack_load32(uint32_t,n)+1,
244
+ _ext_zero);
245
+ case CS_FLOAT: {
246
+ double f;
247
+ #if PY_VERSION_HEX >= 0x030B00A7
248
+ f = PyFloat_Unpack4((const char*)n, 0);
249
+ #else
250
+ f = _PyFloat_Unpack4((unsigned char*)n, 0);
251
+ #endif
252
+ push_fixed_value(_float, f); }
253
+ case CS_DOUBLE: {
254
+ double f;
255
+ #if PY_VERSION_HEX >= 0x030B00A7
256
+ f = PyFloat_Unpack8((const char*)n, 0);
257
+ #else
258
+ f = _PyFloat_Unpack8((unsigned char*)n, 0);
259
+ #endif
260
+ push_fixed_value(_double, f); }
261
+ case CS_UINT_8:
262
+ push_fixed_value(_uint8, *(uint8_t*)n);
263
+ case CS_UINT_16:
264
+ push_fixed_value(_uint16, _msgpack_load16(uint16_t,n));
265
+ case CS_UINT_32:
266
+ push_fixed_value(_uint32, _msgpack_load32(uint32_t,n));
267
+ case CS_UINT_64:
268
+ push_fixed_value(_uint64, _msgpack_load64(uint64_t,n));
269
+
270
+ case CS_INT_8:
271
+ push_fixed_value(_int8, *(int8_t*)n);
272
+ case CS_INT_16:
273
+ push_fixed_value(_int16, _msgpack_load16(int16_t,n));
274
+ case CS_INT_32:
275
+ push_fixed_value(_int32, _msgpack_load32(int32_t,n));
276
+ case CS_INT_64:
277
+ push_fixed_value(_int64, _msgpack_load64(int64_t,n));
278
+
279
+ case CS_BIN_8:
280
+ again_fixed_trail_if_zero(ACS_BIN_VALUE, *(uint8_t*)n, _bin_zero);
281
+ case CS_BIN_16:
282
+ again_fixed_trail_if_zero(ACS_BIN_VALUE, _msgpack_load16(uint16_t,n), _bin_zero);
283
+ case CS_BIN_32:
284
+ again_fixed_trail_if_zero(ACS_BIN_VALUE, _msgpack_load32(uint32_t,n), _bin_zero);
285
+ case ACS_BIN_VALUE:
286
+ _bin_zero:
287
+ push_variable_value(_bin, data, n, trail);
288
+
289
+ case CS_RAW_8:
290
+ again_fixed_trail_if_zero(ACS_RAW_VALUE, *(uint8_t*)n, _raw_zero);
291
+ case CS_RAW_16:
292
+ again_fixed_trail_if_zero(ACS_RAW_VALUE, _msgpack_load16(uint16_t,n), _raw_zero);
293
+ case CS_RAW_32:
294
+ again_fixed_trail_if_zero(ACS_RAW_VALUE, _msgpack_load32(uint32_t,n), _raw_zero);
295
+ case ACS_RAW_VALUE:
296
+ _raw_zero:
297
+ push_variable_value(_raw, data, n, trail);
298
+
299
+ case ACS_EXT_VALUE:
300
+ _ext_zero:
301
+ push_variable_value(_ext, data, n, trail);
302
+
303
+ case CS_ARRAY_16:
304
+ start_container(_array, _msgpack_load16(uint16_t,n), CT_ARRAY_ITEM);
305
+ case CS_ARRAY_32:
306
+ /* FIXME security guard */
307
+ start_container(_array, _msgpack_load32(uint32_t,n), CT_ARRAY_ITEM);
308
+
309
+ case CS_MAP_16:
310
+ start_container(_map, _msgpack_load16(uint16_t,n), CT_MAP_KEY);
311
+ case CS_MAP_32:
312
+ /* FIXME security guard */
313
+ start_container(_map, _msgpack_load32(uint32_t,n), CT_MAP_KEY);
314
+
315
+ default:
316
+ goto _failed;
317
+ }
318
+ }
319
+
320
+ _push:
321
+ if(top == 0) { goto _finish; }
322
+ c = &stack[top-1];
323
+ switch(c->ct) {
324
+ case CT_ARRAY_ITEM:
325
+ if(construct_cb(_array_item)(user, c->count, &c->obj, obj) < 0) { goto _failed; }
326
+ if(++c->count == c->size) {
327
+ obj = c->obj;
328
+ if (construct_cb(_array_end)(user, &obj) < 0) { goto _failed; }
329
+ --top;
330
+ /*printf("stack pop %d\n", top);*/
331
+ goto _push;
332
+ }
333
+ goto _header_again;
334
+ case CT_MAP_KEY:
335
+ c->map_key = obj;
336
+ c->ct = CT_MAP_VALUE;
337
+ goto _header_again;
338
+ case CT_MAP_VALUE:
339
+ if(construct_cb(_map_item)(user, c->count, &c->obj, c->map_key, obj) < 0) { goto _failed; }
340
+ if(++c->count == c->size) {
341
+ obj = c->obj;
342
+ if (construct_cb(_map_end)(user, &obj) < 0) { goto _failed; }
343
+ --top;
344
+ /*printf("stack pop %d\n", top);*/
345
+ goto _push;
346
+ }
347
+ c->ct = CT_MAP_KEY;
348
+ goto _header_again;
349
+
350
+ default:
351
+ goto _failed;
352
+ }
353
+
354
+ _header_again:
355
+ cs = CS_HEADER;
356
+ ++p;
357
+ } while(p != pe);
358
+ goto _out;
359
+
360
+
361
+ _finish:
362
+ if (!construct)
363
+ unpack_callback_nil(user, &obj);
364
+ stack[0].obj = obj;
365
+ ++p;
366
+ ret = 1;
367
+ /*printf("-- finish --\n"); */
368
+ goto _end;
369
+
370
+ _failed:
371
+ /*printf("** FAILED **\n"); */
372
+ ret = -1;
373
+ goto _end;
374
+
375
+ _out:
376
+ ret = 0;
377
+ goto _end;
378
+
379
+ _end:
380
+ ctx->cs = cs;
381
+ ctx->trail = trail;
382
+ ctx->top = top;
383
+ *off = p - (const unsigned char*)data;
384
+
385
+ return ret;
386
+ #undef construct_cb
387
+ }
388
+
389
+ #undef SWITCH_RANGE_BEGIN
390
+ #undef SWITCH_RANGE
391
+ #undef SWITCH_RANGE_DEFAULT
392
+ #undef SWITCH_RANGE_END
393
+ #undef push_simple_value
394
+ #undef push_fixed_value
395
+ #undef push_variable_value
396
+ #undef again_fixed_trail
397
+ #undef again_fixed_trail_if_zero
398
+ #undef start_container
399
+
400
+ template <unsigned int fixed_offset, unsigned int var_offset>
401
+ static inline int unpack_container_header(unpack_context* ctx, const char* data, Py_ssize_t len, Py_ssize_t* off)
402
+ {
403
+ assert(len >= *off);
404
+ uint32_t size;
405
+ const unsigned char *const p = (unsigned char*)data + *off;
406
+
407
+ #define inc_offset(inc) \
408
+ if (len - *off < inc) \
409
+ return 0; \
410
+ *off += inc;
411
+
412
+ switch (*p) {
413
+ case var_offset:
414
+ inc_offset(3);
415
+ size = _msgpack_load16(uint16_t, p + 1);
416
+ break;
417
+ case var_offset + 1:
418
+ inc_offset(5);
419
+ size = _msgpack_load32(uint32_t, p + 1);
420
+ break;
421
+ #ifdef USE_CASE_RANGE
422
+ case fixed_offset + 0x0 ... fixed_offset + 0xf:
423
+ #else
424
+ case fixed_offset + 0x0:
425
+ case fixed_offset + 0x1:
426
+ case fixed_offset + 0x2:
427
+ case fixed_offset + 0x3:
428
+ case fixed_offset + 0x4:
429
+ case fixed_offset + 0x5:
430
+ case fixed_offset + 0x6:
431
+ case fixed_offset + 0x7:
432
+ case fixed_offset + 0x8:
433
+ case fixed_offset + 0x9:
434
+ case fixed_offset + 0xa:
435
+ case fixed_offset + 0xb:
436
+ case fixed_offset + 0xc:
437
+ case fixed_offset + 0xd:
438
+ case fixed_offset + 0xe:
439
+ case fixed_offset + 0xf:
440
+ #endif
441
+ ++*off;
442
+ size = ((unsigned int)*p) & 0x0f;
443
+ break;
444
+ default:
445
+ PyErr_SetString(PyExc_ValueError, "Unexpected type header on stream");
446
+ return -1;
447
+ }
448
+ unpack_callback_uint32(&ctx->user, size, &ctx->stack[0].obj);
449
+ return 1;
450
+ }
451
+
452
+ #undef SWITCH_RANGE_BEGIN
453
+ #undef SWITCH_RANGE
454
+ #undef SWITCH_RANGE_DEFAULT
455
+ #undef SWITCH_RANGE_END
456
+
457
+ static const execute_fn unpack_construct = &unpack_execute<true>;
458
+ static const execute_fn unpack_skip = &unpack_execute<false>;
459
+ static const execute_fn read_array_header = &unpack_container_header<0x90, 0xdc>;
460
+ static const execute_fn read_map_header = &unpack_container_header<0x80, 0xde>;
461
+
462
+ #undef NEXT_CS
463
+
464
+ /* vim: set ts=4 sw=4 sts=4 expandtab */
@@ -0,0 +1,10 @@
1
+ """Parsimonious's public API. Import from here.
2
+
3
+ Things may move around in modules deeper than this one.
4
+
5
+ """
6
+ from .exceptions import (ParseError, IncompleteParseError,
7
+ VisitationError, UndefinedLabel,
8
+ BadGrammar)
9
+ from .grammar import Grammar, TokenGrammar
10
+ from .nodes import NodeVisitor, VisitationError, rule
@@ -0,0 +1,105 @@
1
+
2
+ from .utils import StrAndRepr
3
+
4
+
5
+ class ParseError(StrAndRepr, Exception):
6
+ """A call to ``Expression.parse()`` or ``match()`` didn't match."""
7
+
8
+ def __init__(self, text, pos=-1, expr=None):
9
+ # It would be nice to use self.args, but I don't want to pay a penalty
10
+ # to call descriptors or have the confusion of numerical indices in
11
+ # Expression.match_core().
12
+ self.text = text
13
+ self.pos = pos
14
+ self.expr = expr
15
+
16
+ def __str__(self):
17
+ rule_name = ((u"'%s'" % self.expr.name) if self.expr.name else
18
+ str(self.expr))
19
+ return u"Rule %s didn't match at '%s' (line %s, column %s)." % (
20
+ rule_name,
21
+ self.text[self.pos:self.pos + 20],
22
+ self.line(),
23
+ self.column())
24
+
25
+ # TODO: Add line, col, and separated-out error message so callers can build
26
+ # their own presentation.
27
+
28
+ def line(self):
29
+ """Return the 1-based line number where the expression ceased to
30
+ match."""
31
+ # This is a method rather than a property in case we ever wanted to
32
+ # pass in which line endings we want to use.
33
+ return self.text.count('\n', 0, self.pos) + 1
34
+
35
+ def column(self):
36
+ """Return the 1-based column where the expression ceased to match."""
37
+ # We choose 1-based because that's what Python does with SyntaxErrors.
38
+ try:
39
+ return self.pos - self.text.rindex('\n', 0, self.pos)
40
+ except ValueError:
41
+ return self.pos + 1
42
+
43
+
44
+ class IncompleteParseError(ParseError):
45
+ """A call to ``parse()`` matched a whole Expression but did not consume the
46
+ entire text."""
47
+
48
+ def __str__(self):
49
+ return u"Rule '%s' matched in its entirety, but it didn't consume all the text. The non-matching portion of the text begins with '%s' (line %s, column %s)." % (
50
+ self.expr.name,
51
+ self.text[self.pos:self.pos + 20],
52
+ self.line(),
53
+ self.column())
54
+
55
+
56
+ class VisitationError(Exception):
57
+ """Something went wrong while traversing a parse tree.
58
+
59
+ This exception exists to augment an underlying exception with information
60
+ about where in the parse tree the error occurred. Otherwise, it could be
61
+ tiresome to figure out what went wrong; you'd have to play back the whole
62
+ tree traversal in your head.
63
+
64
+ """
65
+ # TODO: Make sure this is pickleable. Probably use @property pattern. Make
66
+ # the original exc and node available on it if they don't cause a whole
67
+ # raft of stack frames to be retained.
68
+ def __init__(self, exc, exc_class, node):
69
+ """Construct.
70
+
71
+ :arg exc: What went wrong. We wrap this and add more info.
72
+ :arg node: The node at which the error occurred
73
+
74
+ """
75
+ self.original_class = exc_class
76
+ super(VisitationError, self).__init__(
77
+ '%s: %s\n\n'
78
+ 'Parse tree:\n'
79
+ '%s' %
80
+ (exc_class.__name__,
81
+ exc,
82
+ node.prettily(error=node)))
83
+
84
+
85
+ class BadGrammar(StrAndRepr, Exception):
86
+ """Something was wrong with the definition of a grammar.
87
+
88
+ Note that a ParseError might be raised instead if the error is in the
89
+ grammar definition syntax.
90
+
91
+ """
92
+
93
+
94
+ class UndefinedLabel(BadGrammar):
95
+ """A rule referenced in a grammar was never defined.
96
+
97
+ Circular references and forward references are okay, but you have to define
98
+ stuff at some point.
99
+
100
+ """
101
+ def __init__(self, label):
102
+ self.label = label
103
+
104
+ def __str__(self):
105
+ return u'The label "%s" was never defined.' % self.label