crypticorn 2.1.3__tar.gz → 2.1.4__tar.gz

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 (247) hide show
  1. {crypticorn-2.1.3 → crypticorn-2.1.4}/PKG-INFO +1 -1
  2. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/common/errors.py +216 -253
  3. crypticorn-2.1.4/crypticorn/common/sorter.py +36 -0
  4. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/pay/client/__init__.py +1 -0
  5. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/pay/client/api/now_payments_api.py +3 -16
  6. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/pay/client/api/payments_api.py +0 -42
  7. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/pay/client/api/products_api.py +18 -57
  8. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/pay/client/configuration.py +2 -1
  9. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/pay/client/models/__init__.py +1 -0
  10. crypticorn-2.1.4/crypticorn/pay/client/models/body_create_now_invoice.py +98 -0
  11. crypticorn-2.1.4/crypticorn/pay/client/models/body_create_product.py +98 -0
  12. crypticorn-2.1.4/crypticorn/pay/client/models/body_get_products.py +87 -0
  13. crypticorn-2.1.4/crypticorn/pay/client/models/body_handle_now_webhook.py +98 -0
  14. crypticorn-2.1.4/crypticorn/pay/client/models/body_update_product.py +98 -0
  15. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/pay/client/models/now_webhook_payload.py +1 -1
  16. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/pay/client/models/product_model.py +9 -0
  17. crypticorn-2.1.4/crypticorn/pay/client/models/scope.py +56 -0
  18. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/trade/client/api/api_keys_api.py +5 -70
  19. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/trade/client/api/bots_api.py +4 -56
  20. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/trade/client/api/exchanges_api.py +2 -19
  21. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/trade/client/api/futures_trading_panel_api.py +6 -74
  22. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/trade/client/api/notifications_api.py +6 -87
  23. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/trade/client/api/orders_api.py +2 -15
  24. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/trade/client/api/strategies_api.py +4 -56
  25. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/trade/client/api/trading_actions_api.py +1 -14
  26. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/trade/client/configuration.py +2 -1
  27. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/trade/client/models/api_error_identifier.py +4 -0
  28. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn.egg-info/PKG-INFO +1 -1
  29. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn.egg-info/SOURCES.txt +7 -0
  30. {crypticorn-2.1.3 → crypticorn-2.1.4}/pyproject.toml +1 -1
  31. {crypticorn-2.1.3 → crypticorn-2.1.4}/tests/test_auth_client.py +2 -0
  32. {crypticorn-2.1.3 → crypticorn-2.1.4}/README.md +0 -0
  33. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/__init__.py +0 -0
  34. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/auth/__init__.py +0 -0
  35. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/auth/client/__init__.py +0 -0
  36. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/auth/client/api/__init__.py +0 -0
  37. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/auth/client/api/admin_api.py +0 -0
  38. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/auth/client/api/auth_api.py +0 -0
  39. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/auth/client/api/service_api.py +0 -0
  40. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/auth/client/api/user_api.py +0 -0
  41. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/auth/client/api/wallet_api.py +0 -0
  42. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/auth/client/api_client.py +0 -0
  43. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/auth/client/api_response.py +0 -0
  44. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/auth/client/configuration.py +0 -0
  45. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/auth/client/exceptions.py +0 -0
  46. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/auth/client/models/__init__.py +0 -0
  47. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/auth/client/models/add_wallet200_response.py +0 -0
  48. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/auth/client/models/add_wallet_request.py +0 -0
  49. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/auth/client/models/authorize_user200_response.py +0 -0
  50. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/auth/client/models/authorize_user200_response_auth.py +0 -0
  51. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/auth/client/models/authorize_user_request.py +0 -0
  52. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/auth/client/models/create_api_key200_response.py +0 -0
  53. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/auth/client/models/create_api_key_request.py +0 -0
  54. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/auth/client/models/create_user_request.py +0 -0
  55. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/auth/client/models/get_api_keys200_response_inner.py +0 -0
  56. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/auth/client/models/list_wallets200_response.py +0 -0
  57. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/auth/client/models/list_wallets200_response_balances_inner.py +0 -0
  58. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/auth/client/models/list_wallets200_response_balances_inner_sale_round.py +0 -0
  59. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/auth/client/models/list_wallets200_response_balances_inner_wallet.py +0 -0
  60. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/auth/client/models/list_wallets200_response_balances_inner_wallet_vesting_wallets_inner.py +0 -0
  61. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/auth/client/models/list_wallets200_response_data_inner.py +0 -0
  62. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/auth/client/models/list_wallets200_response_user_value.py +0 -0
  63. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/auth/client/models/logout_default_response.py +0 -0
  64. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/auth/client/models/logout_default_response_issues_inner.py +0 -0
  65. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/auth/client/models/oauth_callback200_response.py +0 -0
  66. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/auth/client/models/oauth_callback200_response_user.py +0 -0
  67. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/auth/client/models/refresh_token_info200_response.py +0 -0
  68. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/auth/client/models/refresh_token_info200_response_user_session.py +0 -0
  69. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/auth/client/models/resend_verification_email_request.py +0 -0
  70. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/auth/client/models/revoke_user_tokens_request.py +0 -0
  71. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/auth/client/models/rotate_tokens200_response.py +0 -0
  72. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/auth/client/models/token_info200_response.py +0 -0
  73. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/auth/client/models/unlink_wallet_request.py +0 -0
  74. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/auth/client/models/update_user_request.py +0 -0
  75. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/auth/client/models/user_reset_password_request.py +0 -0
  76. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/auth/client/models/user_set_password_request.py +0 -0
  77. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/auth/client/models/verify200_response.py +0 -0
  78. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/auth/client/models/verify_email200_response.py +0 -0
  79. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/auth/client/models/verify_email200_response_auth.py +0 -0
  80. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/auth/client/models/verify_email200_response_auth_auth.py +0 -0
  81. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/auth/client/models/verify_email_request.py +0 -0
  82. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/auth/client/models/verify_wallet_request.py +0 -0
  83. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/auth/client/models/wallet_verified200_response.py +0 -0
  84. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/auth/client/models/whoami200_response.py +0 -0
  85. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/auth/client/py.typed +0 -0
  86. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/auth/client/rest.py +0 -0
  87. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/auth/main.py +0 -0
  88. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/client.py +0 -0
  89. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/common/__init__.py +0 -0
  90. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/common/auth.py +0 -0
  91. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/common/auth_client.py +0 -0
  92. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/common/scopes.py +0 -0
  93. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/common/urls.py +0 -0
  94. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/hive/__init__.py +0 -0
  95. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/hive/client/__init__.py +0 -0
  96. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/hive/client/api/__init__.py +0 -0
  97. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/hive/client/api/data_api.py +0 -0
  98. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/hive/client/api/models_api.py +0 -0
  99. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/hive/client/api/status_api.py +0 -0
  100. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/hive/client/api_client.py +0 -0
  101. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/hive/client/api_response.py +0 -0
  102. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/hive/client/configuration.py +0 -0
  103. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/hive/client/exceptions.py +0 -0
  104. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/hive/client/models/__init__.py +0 -0
  105. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/hive/client/models/coins.py +0 -0
  106. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/hive/client/models/data_download_response.py +0 -0
  107. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/hive/client/models/data_info.py +0 -0
  108. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/hive/client/models/data_value_value_value_inner.py +0 -0
  109. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/hive/client/models/data_version.py +0 -0
  110. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/hive/client/models/download_links.py +0 -0
  111. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/hive/client/models/evaluation.py +0 -0
  112. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/hive/client/models/evaluation_response.py +0 -0
  113. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/hive/client/models/feature_size.py +0 -0
  114. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/hive/client/models/http_validation_error.py +0 -0
  115. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/hive/client/models/model.py +0 -0
  116. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/hive/client/models/model_create.py +0 -0
  117. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/hive/client/models/model_status.py +0 -0
  118. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/hive/client/models/model_update.py +0 -0
  119. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/hive/client/models/target.py +0 -0
  120. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/hive/client/models/target_type.py +0 -0
  121. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/hive/client/models/validation_error.py +0 -0
  122. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/hive/client/models/validation_error_loc_inner.py +0 -0
  123. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/hive/client/py.typed +0 -0
  124. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/hive/client/rest.py +0 -0
  125. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/hive/main.py +0 -0
  126. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/klines/__init__.py +0 -0
  127. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/klines/client/__init__.py +0 -0
  128. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/klines/client/api/__init__.py +0 -0
  129. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/klines/client/api/funding_rates_api.py +0 -0
  130. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/klines/client/api/health_check_api.py +0 -0
  131. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/klines/client/api/ohlcv_data_api.py +0 -0
  132. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/klines/client/api/symbols_api.py +0 -0
  133. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/klines/client/api/udf_api.py +0 -0
  134. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/klines/client/api_client.py +0 -0
  135. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/klines/client/api_response.py +0 -0
  136. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/klines/client/configuration.py +0 -0
  137. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/klines/client/exceptions.py +0 -0
  138. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/klines/client/models/__init__.py +0 -0
  139. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/klines/client/models/base_response_health_check_response.py +0 -0
  140. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/klines/client/models/base_response_list_funding_rate_response.py +0 -0
  141. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/klines/client/models/base_response_list_str.py +0 -0
  142. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/klines/client/models/base_response_ohlcv_response.py +0 -0
  143. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/klines/client/models/error_response.py +0 -0
  144. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/klines/client/models/exchange.py +0 -0
  145. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/klines/client/models/funding_rate_response.py +0 -0
  146. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/klines/client/models/health_check_response.py +0 -0
  147. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/klines/client/models/history_error_response.py +0 -0
  148. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/klines/client/models/history_no_data_response.py +0 -0
  149. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/klines/client/models/history_success_response.py +0 -0
  150. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/klines/client/models/http_validation_error.py +0 -0
  151. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/klines/client/models/market.py +0 -0
  152. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/klines/client/models/ohlcv_response.py +0 -0
  153. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/klines/client/models/resolution.py +0 -0
  154. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/klines/client/models/response_get_history_udf_history_get.py +0 -0
  155. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/klines/client/models/search_symbol_response.py +0 -0
  156. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/klines/client/models/sort_direction.py +0 -0
  157. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/klines/client/models/symbol_group_response.py +0 -0
  158. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/klines/client/models/symbol_info_response.py +0 -0
  159. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/klines/client/models/symbol_type.py +0 -0
  160. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/klines/client/models/timeframe.py +0 -0
  161. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/klines/client/models/udf_config_response.py +0 -0
  162. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/klines/client/models/validation_error.py +0 -0
  163. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/klines/client/models/validation_error_loc_inner.py +0 -0
  164. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/klines/client/py.typed +0 -0
  165. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/klines/client/rest.py +0 -0
  166. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/klines/main.py +0 -0
  167. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/pay/__init__.py +0 -0
  168. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/pay/client/api/__init__.py +0 -0
  169. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/pay/client/api/status_api.py +0 -0
  170. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/pay/client/api_client.py +0 -0
  171. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/pay/client/api_response.py +0 -0
  172. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/pay/client/exceptions.py +0 -0
  173. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/pay/client/models/api_status_res.py +0 -0
  174. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/pay/client/models/combined_payment_history.py +0 -0
  175. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/pay/client/models/create_invoice_req.py +0 -0
  176. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/pay/client/models/create_invoice_res.py +0 -0
  177. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/pay/client/models/currency.py +0 -0
  178. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/pay/client/models/estimate_price_req.py +0 -0
  179. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/pay/client/models/estimate_price_res.py +0 -0
  180. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/pay/client/models/get_currencies_res.py +0 -0
  181. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/pay/client/models/get_payment_status_res.py +0 -0
  182. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/pay/client/models/get_payments_list_res.py +0 -0
  183. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/pay/client/models/http_validation_error.py +0 -0
  184. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/pay/client/models/min_amount_req.py +0 -0
  185. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/pay/client/models/min_amount_res.py +0 -0
  186. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/pay/client/models/now_api_status_res.py +0 -0
  187. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/pay/client/models/now_create_invoice_req.py +0 -0
  188. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/pay/client/models/now_create_invoice_res.py +0 -0
  189. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/pay/client/models/now_fee_structure.py +0 -0
  190. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/pay/client/models/now_payment_model.py +0 -0
  191. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/pay/client/models/now_payment_status.py +0 -0
  192. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/pay/client/models/payment.py +0 -0
  193. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/pay/client/models/payment_status.py +0 -0
  194. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/pay/client/models/product.py +0 -0
  195. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/pay/client/models/product_subs_model.py +0 -0
  196. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/pay/client/models/services.py +0 -0
  197. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/pay/client/models/unified_payment_model.py +0 -0
  198. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/pay/client/models/validation_error.py +0 -0
  199. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/pay/client/models/validation_error_loc_inner.py +0 -0
  200. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/pay/client/py.typed +0 -0
  201. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/pay/client/rest.py +0 -0
  202. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/pay/main.py +0 -0
  203. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/trade/__init__.py +0 -0
  204. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/trade/client/__init__.py +0 -0
  205. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/trade/client/api/__init__.py +0 -0
  206. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/trade/client/api/status_api.py +0 -0
  207. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/trade/client/api_client.py +0 -0
  208. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/trade/client/api_response.py +0 -0
  209. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/trade/client/exceptions.py +0 -0
  210. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/trade/client/models/__init__.py +0 -0
  211. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/trade/client/models/action_model.py +0 -0
  212. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/trade/client/models/api_error_level.py +0 -0
  213. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/trade/client/models/api_error_type.py +0 -0
  214. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/trade/client/models/api_key_model.py +0 -0
  215. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/trade/client/models/bot_model.py +0 -0
  216. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/trade/client/models/bot_status.py +0 -0
  217. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/trade/client/models/exchange.py +0 -0
  218. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/trade/client/models/execution_ids.py +0 -0
  219. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/trade/client/models/futures_balance.py +0 -0
  220. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/trade/client/models/futures_trading_action.py +0 -0
  221. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/trade/client/models/http_validation_error.py +0 -0
  222. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/trade/client/models/margin_mode.py +0 -0
  223. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/trade/client/models/market_type.py +0 -0
  224. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/trade/client/models/notification_model.py +0 -0
  225. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/trade/client/models/notification_type.py +0 -0
  226. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/trade/client/models/order_model.py +0 -0
  227. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/trade/client/models/order_status.py +0 -0
  228. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/trade/client/models/post_futures_action.py +0 -0
  229. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/trade/client/models/strategy_exchange_info.py +0 -0
  230. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/trade/client/models/strategy_model.py +0 -0
  231. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/trade/client/models/strategy_model_input.py +0 -0
  232. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/trade/client/models/strategy_model_output.py +0 -0
  233. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/trade/client/models/tpsl.py +0 -0
  234. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/trade/client/models/trading_action_type.py +0 -0
  235. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/trade/client/models/update_notification.py +0 -0
  236. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/trade/client/models/validation_error.py +0 -0
  237. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/trade/client/models/validation_error_loc_inner.py +0 -0
  238. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/trade/client/py.typed +0 -0
  239. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/trade/client/rest.py +0 -0
  240. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn/trade/main.py +0 -0
  241. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn.egg-info/dependency_links.txt +0 -0
  242. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn.egg-info/requires.txt +0 -0
  243. {crypticorn-2.1.3 → crypticorn-2.1.4}/crypticorn.egg-info/top_level.txt +0 -0
  244. {crypticorn-2.1.3 → crypticorn-2.1.4}/requirements/dev.txt +0 -0
  245. {crypticorn-2.1.3 → crypticorn-2.1.4}/requirements/main.txt +0 -0
  246. {crypticorn-2.1.3 → crypticorn-2.1.4}/requirements/test.txt +0 -0
  247. {crypticorn-2.1.3 → crypticorn-2.1.4}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: crypticorn
3
- Version: 2.1.3
3
+ Version: 2.1.4
4
4
  Summary: Maximise Your Crypto Trading Profits with AI Predictions
5
5
  Author-email: Crypticorn <timon@crypticorn.com>
6
6
  Project-URL: Homepage, https://crypticorn.com
@@ -17,218 +17,189 @@ class ApiErrorType(str, Enum):
17
17
  class ApiErrorIdentifier(str, Enum):
18
18
  """API error identifiers"""
19
19
 
20
- SUCCESS = "success"
21
- UNAUTHORIZED = "invalid_api_key"
22
- INVALID_SIGNATURE = "invalid_signature"
23
- INVALID_TIMESTAMP = "invalid_timestamp"
24
- IP_RESTRICTED = "ip_address_is_not_authorized"
25
- PERMISSION_DENIED = "insufficient_permissions_spot_and_futures_required"
26
- USER_FROZEN = "user_account_is_frozen"
27
- RATE_LIMIT = "rate_limit_exceeded"
28
- INVALID_PARAMETER = "invalid_parameter_provided"
29
- REQUEST_SCOPE_EXCEEDED = "request_scope_limit_exceeded"
20
+ API_KEY_ALREADY_EXISTS = "api_key_already_exists"
21
+ BLACK_SWAN = "black_swan"
22
+ BOT_ALREADY_DELETED = "bot_already_deleted"
23
+ BOT_DISABLED = "bot_disabled"
24
+ BOT_STOPPING_COMPLETED = "bot_stopping_completed"
25
+ CLIENT_ORDER_ID_REPEATED = "client_order_id_already_exists"
30
26
  CONTENT_TYPE_ERROR = "invalid_content_type"
31
- URL_NOT_FOUND = "requested_resource_not_found"
32
- ORDER_NOT_FOUND = "order_does_not_exist"
27
+ DELETE_BOT_ERROR = "delete_bot_error"
28
+ EXCHANGE_API_KEY_IN_USE = "exchange_api_key_in_use"
29
+ EXCHANGE_INVALID_SIGNATURE = "exchange_invalid_signature"
30
+ EXCHANGE_INVALID_TIMESTAMP = "exchange_invalid_timestamp"
31
+ EXCHANGE_IP_RESTRICTED = "exchange_ip_address_is_not_authorized"
32
+ EXCHANGE_MAINTENANCE = "exchange_system_under_maintenance"
33
+ EXCHANGE_RATE_LIMIT = "exchange_rate_limit_exceeded"
34
+ EXCHANGE_SERVICE_UNAVAILABLE = "exchange_service_temporarily_unavailable"
35
+ EXCHANGE_SYSTEM_BUSY = "exchange_system_is_busy"
36
+ EXCHANGE_SYSTEM_CONFIG_ERROR = "exchange_system_configuration_error"
37
+ EXCHANGE_SYSTEM_ERROR = "exchange_internal_system_error"
38
+ EXCHANGE_USER_FROZEN = "exchange_user_account_is_frozen"
39
+ EXCHANGE_PERMISSION_DENIED = "insufficient_permissions_spot_and_futures_required"
40
+ HEDGE_MODE_NOT_ACTIVE = "hedge_mode_not_active"
41
+ HTTP_ERROR = "http_request_error"
42
+ INSUFFICIENT_BALANCE = "insufficient_balance"
43
+ INSUFFICIENT_MARGIN = "insufficient_margin"
44
+ INSUFFICIENT_SCOPES = "insufficient_scopes"
45
+ INVALID_API_KEY = "invalid_api_key"
46
+ INVALID_BEARER = "invalid_bearer"
47
+ INVALID_EXCHANGE_API_KEY = "invalid_exchange_api_key"
48
+ INVALID_MARGIN_MODE = "invalid_margin_mode"
49
+ INVALID_PARAMETER = "invalid_parameter_provided"
50
+ JWT_EXPIRED = "jwt_expired"
51
+ LEVERAGE_EXCEEDED = "leverage_limit_exceeded"
52
+ LIQUIDATION_PRICE_VIOLATION = "order_violates_liquidation_price_constraints"
53
+ NO_CREDENTIALS = "no_credentials"
54
+ OBJECT_NOT_FOUND = "object_not_found"
33
55
  ORDER_ALREADY_FILLED = "order_is_already_filled"
34
56
  ORDER_IN_PROCESS = "order_is_being_processed"
35
57
  ORDER_LIMIT_EXCEEDED = "order_quantity_limit_exceeded"
58
+ ORDER_NOT_FOUND = "order_does_not_exist"
36
59
  ORDER_PRICE_INVALID = "order_price_is_invalid"
37
- POST_ONLY_REJECTED = "post_only_order_would_immediately_match"
38
- SYMBOL_NOT_FOUND = "symbol_does_not_exist"
39
- CLIENT_ORDER_ID_REPEATED = "client_order_id_already_exists"
40
-
41
- POSITION_NOT_FOUND = "position_does_not_exist"
60
+ ORDER_SIZE_TOO_LARGE = "order_size_too_large"
61
+ ORDER_SIZE_TOO_SMALL = "order_size_too_small"
42
62
  POSITION_LIMIT_EXCEEDED = "position_limit_exceeded"
63
+ POSITION_NOT_FOUND = "position_does_not_exist"
43
64
  POSITION_SUSPENDED = "position_opening_temporarily_suspended"
44
- INSUFFICIENT_BALANCE = "insufficient_balance"
45
- INSUFFICIENT_MARGIN = "insufficient_margin"
46
-
47
- LEVERAGE_EXCEEDED = "leverage_limit_exceeded"
65
+ POST_ONLY_REJECTED = "post_only_order_would_immediately_match"
66
+ REQUEST_SCOPE_EXCEEDED = "request_scope_limit_exceeded"
48
67
  RISK_LIMIT_EXCEEDED = "risk_limit_exceeded"
49
- LIQUIDATION_PRICE_VIOLATION = "order_violates_liquidation_price_constraints"
50
- INVALID_MARGIN_MODE = "invalid_margin_mode"
51
-
52
- SYSTEM_ERROR = "internal_system_error"
53
- SYSTEM_CONFIG_ERROR = "system_configuration_error"
54
- SERVICE_UNAVAILABLE = "service_temporarily_unavailable"
55
- SYSTEM_BUSY = "system_is_busy_please_try_again_later"
56
- MAINTENANCE = "system_under_maintenance"
57
68
  RPC_TIMEOUT = "rpc_timeout"
58
69
  SETTLEMENT_IN_PROGRESS = "system_settlement_in_process"
59
-
60
- TRADING_SUSPENDED = "trading_is_suspended"
70
+ STRATEGY_DISABLED = "strategy_disabled"
71
+ SUCCESS = "success"
72
+ SYMBOL_NOT_FOUND = "symbol_does_not_exist"
61
73
  TRADING_LOCKED = "trading_has_been_locked"
62
-
74
+ TRADING_ACTION_EXPIRED = "trading_action_expired"
75
+ TRADING_ACTION_SKIPPED = "trading_action_skipped"
76
+ TRADING_SUSPENDED = "trading_is_suspended"
63
77
  UNKNOWN_ERROR = "unknown_error_occurred"
64
- HTTP_ERROR = "http_request_error"
65
- BLACK_SWAN = "black_swan"
66
-
67
- # our bot errors
68
- ACTION_EXPIRED = "trading_action_expired"
69
- ACTION_SKIPPED = "trading_action_skipped"
70
- BOT_DISABLED = "bot_disabled"
71
- ORDER_SIZE_TOO_SMALL = "order_size_too_small"
72
- ORDER_SIZE_TOO_LARGE = "order_size_too_large"
73
- HEDGE_MODE_NOT_ACTIVE = "hedge_mode_not_active"
74
-
75
- # our API errors
76
- API_KEY_ALREADY_EXISTS = "api_key_already_exists"
77
- DELETE_BOT_ERROR = "delete_bot_error"
78
- JWT_EXPIRED = "jwt_expired"
79
- BOT_STOPPING_COMPLETED = "bot_stopping_completed"
80
- OBJECT_NOT_FOUND = "object_not_found"
81
- STRATEGY_DISABLED = "strategy_disabled"
82
- API_KEY_IN_USE = "api_key_in_use_by_bots"
83
- BOT_ALREADY_DELETED = "bot_already_deleted"
84
-
85
- # our auth errors
86
- INVALID_API_KEY = "invalid_api_key"
87
- INVALID_BEARER = "invalid_bearer"
88
- NO_CREDENTIALS = "no_credentials"
89
- INSUFFICIENT_SCOPES = "insufficient_scopes"
78
+ URL_NOT_FOUND = "requested_resource_not_found"
90
79
 
91
80
 
92
81
  class ApiErrorLevel(str, Enum):
82
+ """API error levels"""
83
+
93
84
  ERROR = "error"
94
- SUCCESS = "success"
95
85
  INFO = "info"
86
+ SUCCESS = "success"
96
87
  WARNING = "warning"
97
88
 
98
89
 
99
90
  class ApiError(Enum):
100
91
  """API error codes"""
101
92
 
102
- # Success
103
- SUCCESS = (ApiErrorIdentifier.SUCCESS, ApiErrorType.NO_ERROR, ApiErrorLevel.SUCCESS)
104
- # Authentication/Authorization
105
- UNAUTHORIZED = (
106
- ApiErrorIdentifier.UNAUTHORIZED,
107
- ApiErrorType.SERVER_ERROR,
108
- ApiErrorLevel.ERROR,
109
- )
110
- INVALID_SIGNATURE = (
111
- ApiErrorIdentifier.INVALID_SIGNATURE,
112
- ApiErrorType.SERVER_ERROR,
93
+ API_KEY_ALREADY_EXISTS = (
94
+ ApiErrorIdentifier.API_KEY_ALREADY_EXISTS,
95
+ ApiErrorType.USER_ERROR,
113
96
  ApiErrorLevel.ERROR,
114
97
  )
115
- INVALID_TIMESTAMP = (
116
- ApiErrorIdentifier.INVALID_TIMESTAMP,
117
- ApiErrorType.SERVER_ERROR,
118
- ApiErrorLevel.ERROR,
98
+ BLACK_SWAN = (
99
+ ApiErrorIdentifier.BLACK_SWAN,
100
+ ApiErrorType.USER_ERROR,
101
+ ApiErrorLevel.INFO,
119
102
  )
120
- IP_RESTRICTED = (
121
- ApiErrorIdentifier.IP_RESTRICTED,
103
+ BOT_ALREADY_DELETED = (
104
+ ApiErrorIdentifier.BOT_ALREADY_DELETED,
122
105
  ApiErrorType.SERVER_ERROR,
123
106
  ApiErrorLevel.ERROR,
124
107
  )
125
- PERMISSION_DENIED = (
126
- ApiErrorIdentifier.PERMISSION_DENIED,
127
- ApiErrorType.USER_ERROR,
128
- ApiErrorLevel.ERROR,
129
- )
130
- USER_FROZEN = (
131
- ApiErrorIdentifier.USER_FROZEN,
108
+ BOT_DISABLED = (
109
+ ApiErrorIdentifier.BOT_DISABLED,
132
110
  ApiErrorType.USER_ERROR,
133
- ApiErrorLevel.ERROR,
111
+ ApiErrorLevel.WARNING,
134
112
  )
135
-
136
- # Rate Limiting
137
- RATE_LIMIT = (
138
- ApiErrorIdentifier.RATE_LIMIT,
139
- ApiErrorType.EXCHANGE_ERROR,
140
- ApiErrorLevel.ERROR,
113
+ BOT_STOPPING_COMPLETED = (
114
+ ApiErrorIdentifier.BOT_STOPPING_COMPLETED,
115
+ ApiErrorType.NO_ERROR,
116
+ ApiErrorLevel.INFO,
141
117
  )
142
-
143
- # Invalid Parameters
144
- INVALID_PARAMETER = (
145
- ApiErrorIdentifier.INVALID_PARAMETER,
118
+ CLIENT_ORDER_ID_REPEATED = (
119
+ ApiErrorIdentifier.CLIENT_ORDER_ID_REPEATED,
146
120
  ApiErrorType.SERVER_ERROR,
147
121
  ApiErrorLevel.ERROR,
148
122
  )
149
- REQUEST_SCOPE_EXCEEDED = (
150
- ApiErrorIdentifier.REQUEST_SCOPE_EXCEEDED,
151
- ApiErrorType.EXCHANGE_ERROR,
152
- ApiErrorLevel.ERROR,
153
- )
154
123
  CONTENT_TYPE_ERROR = (
155
124
  ApiErrorIdentifier.CONTENT_TYPE_ERROR,
156
125
  ApiErrorType.SERVER_ERROR,
157
126
  ApiErrorLevel.ERROR,
158
127
  )
159
- URL_NOT_FOUND = (
160
- ApiErrorIdentifier.URL_NOT_FOUND,
128
+ DELETE_BOT_ERROR = (
129
+ ApiErrorIdentifier.DELETE_BOT_ERROR,
161
130
  ApiErrorType.SERVER_ERROR,
162
131
  ApiErrorLevel.ERROR,
163
132
  )
164
- SYMBOL_NOT_FOUND = (
165
- ApiErrorIdentifier.SYMBOL_NOT_FOUND,
133
+ EXCHANGE_INVALID_SIGNATURE = (
134
+ ApiErrorIdentifier.EXCHANGE_INVALID_SIGNATURE,
166
135
  ApiErrorType.SERVER_ERROR,
167
136
  ApiErrorLevel.ERROR,
168
137
  )
169
-
170
- # Order Related
171
- ORDER_NOT_FOUND = (
172
- ApiErrorIdentifier.ORDER_NOT_FOUND,
138
+ EXCHANGE_INVALID_TIMESTAMP = (
139
+ ApiErrorIdentifier.EXCHANGE_INVALID_TIMESTAMP,
173
140
  ApiErrorType.SERVER_ERROR,
174
141
  ApiErrorLevel.ERROR,
175
142
  )
176
- ORDER_ALREADY_FILLED = (
177
- ApiErrorIdentifier.ORDER_ALREADY_FILLED,
143
+ EXCHANGE_IP_RESTRICTED = (
144
+ ApiErrorIdentifier.EXCHANGE_IP_RESTRICTED,
178
145
  ApiErrorType.SERVER_ERROR,
179
- ApiErrorLevel.INFO,
146
+ ApiErrorLevel.ERROR,
180
147
  )
181
- ORDER_IN_PROCESS = (
182
- ApiErrorIdentifier.ORDER_IN_PROCESS,
183
- ApiErrorType.NO_ERROR,
184
- ApiErrorLevel.INFO,
148
+ EXCHANGE_API_KEY_IN_USE = (
149
+ ApiErrorIdentifier.EXCHANGE_API_KEY_IN_USE,
150
+ ApiErrorType.SERVER_ERROR,
151
+ ApiErrorLevel.ERROR,
185
152
  )
186
- ORDER_LIMIT_EXCEEDED = (
187
- ApiErrorIdentifier.ORDER_LIMIT_EXCEEDED,
153
+ EXCHANGE_MAINTENANCE = (
154
+ ApiErrorIdentifier.EXCHANGE_MAINTENANCE,
155
+ ApiErrorType.EXCHANGE_ERROR,
156
+ ApiErrorLevel.ERROR,
157
+ )
158
+ EXCHANGE_PERMISSION_DENIED = (
159
+ ApiErrorIdentifier.EXCHANGE_PERMISSION_DENIED,
188
160
  ApiErrorType.USER_ERROR,
189
161
  ApiErrorLevel.ERROR,
190
162
  )
191
- ORDER_PRICE_INVALID = (
192
- ApiErrorIdentifier.ORDER_PRICE_INVALID,
193
- ApiErrorType.SERVER_ERROR,
163
+ EXCHANGE_RATE_LIMIT = (
164
+ ApiErrorIdentifier.EXCHANGE_RATE_LIMIT,
165
+ ApiErrorType.EXCHANGE_ERROR,
194
166
  ApiErrorLevel.ERROR,
195
167
  )
196
- POST_ONLY_REJECTED = (
197
- ApiErrorIdentifier.POST_ONLY_REJECTED,
198
- ApiErrorType.SERVER_ERROR,
168
+ EXCHANGE_SERVICE_UNAVAILABLE = (
169
+ ApiErrorIdentifier.EXCHANGE_SERVICE_UNAVAILABLE,
170
+ ApiErrorType.EXCHANGE_ERROR,
199
171
  ApiErrorLevel.ERROR,
200
172
  )
201
- BLACK_SWAN = (
202
- ApiErrorIdentifier.BLACK_SWAN,
203
- ApiErrorType.USER_ERROR,
204
- ApiErrorLevel.INFO,
173
+ EXCHANGE_SYSTEM_BUSY = (
174
+ ApiErrorIdentifier.EXCHANGE_SYSTEM_BUSY,
175
+ ApiErrorType.EXCHANGE_ERROR,
176
+ ApiErrorLevel.ERROR,
205
177
  )
206
- CLIENT_ORDER_ID_REPEATED = (
207
- ApiErrorIdentifier.CLIENT_ORDER_ID_REPEATED,
208
- ApiErrorType.SERVER_ERROR,
178
+ EXCHANGE_SYSTEM_CONFIG_ERROR = (
179
+ ApiErrorIdentifier.EXCHANGE_SYSTEM_CONFIG_ERROR,
180
+ ApiErrorType.EXCHANGE_ERROR,
209
181
  ApiErrorLevel.ERROR,
210
182
  )
211
- # CONTRA_ORDER_MISSING = "No contra order available"
212
-
213
- # Position Related
214
- POSITION_NOT_FOUND = (
215
- ApiErrorIdentifier.POSITION_NOT_FOUND,
216
- ApiErrorType.NO_ERROR,
217
- ApiErrorLevel.INFO,
218
- ) # not an error because user can close a position manually which we don't know about
219
- POSITION_LIMIT_EXCEEDED = (
220
- ApiErrorIdentifier.POSITION_LIMIT_EXCEEDED,
183
+ EXCHANGE_SYSTEM_ERROR = (
184
+ ApiErrorIdentifier.EXCHANGE_SYSTEM_ERROR,
185
+ ApiErrorType.EXCHANGE_ERROR,
186
+ ApiErrorLevel.ERROR,
187
+ )
188
+ EXCHANGE_USER_FROZEN = (
189
+ ApiErrorIdentifier.EXCHANGE_USER_FROZEN,
221
190
  ApiErrorType.USER_ERROR,
222
191
  ApiErrorLevel.ERROR,
223
192
  )
224
- POSITION_SUSPENDED = (
225
- ApiErrorIdentifier.POSITION_SUSPENDED,
193
+ HEDGE_MODE_NOT_ACTIVE = (
194
+ ApiErrorIdentifier.HEDGE_MODE_NOT_ACTIVE,
195
+ ApiErrorType.USER_ERROR,
196
+ ApiErrorLevel.ERROR,
197
+ )
198
+ HTTP_ERROR = (
199
+ ApiErrorIdentifier.HTTP_ERROR,
226
200
  ApiErrorType.EXCHANGE_ERROR,
227
201
  ApiErrorLevel.ERROR,
228
202
  )
229
- # FUTURES_BRAWL_RESTRICTED = "Operation restricted for Futures Brawl", ApiErrorType.USER_ERROR
230
-
231
- # Balance/Margin
232
203
  INSUFFICIENT_BALANCE = (
233
204
  ApiErrorIdentifier.INSUFFICIENT_BALANCE,
234
205
  ApiErrorType.USER_ERROR,
@@ -239,20 +210,23 @@ class ApiError(Enum):
239
210
  ApiErrorType.USER_ERROR,
240
211
  ApiErrorLevel.ERROR,
241
212
  )
242
-
243
- # Leverage/Risk
244
- LEVERAGE_EXCEEDED = (
245
- ApiErrorIdentifier.LEVERAGE_EXCEEDED,
246
- ApiErrorType.SERVER_ERROR,
213
+ INSUFFICIENT_SCOPES = (
214
+ ApiErrorIdentifier.INSUFFICIENT_SCOPES,
215
+ ApiErrorType.USER_ERROR,
247
216
  ApiErrorLevel.ERROR,
248
217
  )
249
- RISK_LIMIT_EXCEEDED = (
250
- ApiErrorIdentifier.RISK_LIMIT_EXCEEDED,
251
- ApiErrorType.SERVER_ERROR,
218
+ INVALID_API_KEY = (
219
+ ApiErrorIdentifier.INVALID_API_KEY,
220
+ ApiErrorType.USER_ERROR,
252
221
  ApiErrorLevel.ERROR,
253
222
  )
254
- LIQUIDATION_PRICE_VIOLATION = (
255
- ApiErrorIdentifier.LIQUIDATION_PRICE_VIOLATION,
223
+ INVALID_BEARER = (
224
+ ApiErrorIdentifier.INVALID_BEARER,
225
+ ApiErrorType.USER_ERROR,
226
+ ApiErrorLevel.ERROR,
227
+ )
228
+ INVALID_EXCHANGE_API_KEY = (
229
+ ApiErrorIdentifier.INVALID_EXCHANGE_API_KEY,
256
230
  ApiErrorType.SERVER_ERROR,
257
231
  ApiErrorLevel.ERROR,
258
232
  )
@@ -261,81 +235,63 @@ class ApiError(Enum):
261
235
  ApiErrorType.SERVER_ERROR,
262
236
  ApiErrorLevel.ERROR,
263
237
  )
264
-
265
- # System Status
266
- SYSTEM_ERROR = (
267
- ApiErrorIdentifier.SYSTEM_ERROR,
268
- ApiErrorType.EXCHANGE_ERROR,
238
+ INVALID_PARAMETER = (
239
+ ApiErrorIdentifier.INVALID_PARAMETER,
240
+ ApiErrorType.SERVER_ERROR,
269
241
  ApiErrorLevel.ERROR,
270
242
  )
271
- SYSTEM_CONFIG_ERROR = (
272
- ApiErrorIdentifier.SYSTEM_CONFIG_ERROR,
273
- ApiErrorType.EXCHANGE_ERROR,
243
+ JWT_EXPIRED = (
244
+ ApiErrorIdentifier.JWT_EXPIRED,
245
+ ApiErrorType.SERVER_ERROR,
274
246
  ApiErrorLevel.ERROR,
275
247
  )
276
- SERVICE_UNAVAILABLE = (
277
- ApiErrorIdentifier.SERVICE_UNAVAILABLE,
278
- ApiErrorType.EXCHANGE_ERROR,
248
+ LEVERAGE_EXCEEDED = (
249
+ ApiErrorIdentifier.LEVERAGE_EXCEEDED,
250
+ ApiErrorType.SERVER_ERROR,
279
251
  ApiErrorLevel.ERROR,
280
252
  )
281
- SYSTEM_BUSY = (
282
- ApiErrorIdentifier.SYSTEM_BUSY,
283
- ApiErrorType.EXCHANGE_ERROR,
253
+ LIQUIDATION_PRICE_VIOLATION = (
254
+ ApiErrorIdentifier.LIQUIDATION_PRICE_VIOLATION,
255
+ ApiErrorType.SERVER_ERROR,
284
256
  ApiErrorLevel.ERROR,
285
257
  )
286
- MAINTENANCE = (
287
- ApiErrorIdentifier.MAINTENANCE,
288
- ApiErrorType.EXCHANGE_ERROR,
258
+ NO_CREDENTIALS = (
259
+ ApiErrorIdentifier.NO_CREDENTIALS,
260
+ ApiErrorType.USER_ERROR,
289
261
  ApiErrorLevel.ERROR,
290
262
  )
291
- RPC_TIMEOUT = (
292
- ApiErrorIdentifier.RPC_TIMEOUT,
293
- ApiErrorType.EXCHANGE_ERROR,
263
+ OBJECT_NOT_FOUND = (
264
+ ApiErrorIdentifier.OBJECT_NOT_FOUND,
265
+ ApiErrorType.SERVER_ERROR,
294
266
  ApiErrorLevel.ERROR,
295
267
  )
296
- SETTLEMENT_IN_PROGRESS = (
297
- ApiErrorIdentifier.SETTLEMENT_IN_PROGRESS,
298
- ApiErrorType.EXCHANGE_ERROR,
299
- ApiErrorLevel.ERROR,
268
+ ORDER_ALREADY_FILLED = (
269
+ ApiErrorIdentifier.ORDER_ALREADY_FILLED,
270
+ ApiErrorType.SERVER_ERROR,
271
+ ApiErrorLevel.INFO,
300
272
  )
301
-
302
- # Trading Status
303
- TRADING_SUSPENDED = (
304
- ApiErrorIdentifier.TRADING_SUSPENDED,
305
- ApiErrorType.EXCHANGE_ERROR,
306
- ApiErrorLevel.ERROR,
273
+ ORDER_IN_PROCESS = (
274
+ ApiErrorIdentifier.ORDER_IN_PROCESS,
275
+ ApiErrorType.NO_ERROR,
276
+ ApiErrorLevel.INFO,
307
277
  )
308
- TRADING_LOCKED = (
309
- ApiErrorIdentifier.TRADING_LOCKED,
310
- ApiErrorType.EXCHANGE_ERROR,
278
+ ORDER_LIMIT_EXCEEDED = (
279
+ ApiErrorIdentifier.ORDER_LIMIT_EXCEEDED,
280
+ ApiErrorType.USER_ERROR,
311
281
  ApiErrorLevel.ERROR,
312
282
  )
313
-
314
- # Generic
315
- UNKNOWN_ERROR = (
316
- ApiErrorIdentifier.UNKNOWN_ERROR,
317
- ApiErrorType.EXCHANGE_ERROR,
283
+ ORDER_NOT_FOUND = (
284
+ ApiErrorIdentifier.ORDER_NOT_FOUND,
285
+ ApiErrorType.SERVER_ERROR,
318
286
  ApiErrorLevel.ERROR,
319
287
  )
320
- HTTP_ERROR = (
321
- ApiErrorIdentifier.HTTP_ERROR,
322
- ApiErrorType.EXCHANGE_ERROR,
288
+ ORDER_PRICE_INVALID = (
289
+ ApiErrorIdentifier.ORDER_PRICE_INVALID,
290
+ ApiErrorType.SERVER_ERROR,
323
291
  ApiErrorLevel.ERROR,
324
292
  )
325
-
326
- # Our Bot Errors
327
- ACTION_EXPIRED = (
328
- ApiErrorIdentifier.ACTION_EXPIRED,
329
- ApiErrorType.NO_ERROR,
330
- ApiErrorLevel.INFO,
331
- )
332
- ACTION_SKIPPED = (
333
- ApiErrorIdentifier.ACTION_SKIPPED,
334
- ApiErrorType.NO_ERROR,
335
- ApiErrorLevel.INFO,
336
- )
337
- BOT_DISABLED = (
338
- ApiErrorIdentifier.BOT_DISABLED,
293
+ ORDER_SIZE_TOO_LARGE = (
294
+ ApiErrorIdentifier.ORDER_SIZE_TOO_LARGE,
339
295
  ApiErrorType.USER_ERROR,
340
296
  ApiErrorLevel.WARNING,
341
297
  )
@@ -344,41 +300,44 @@ class ApiError(Enum):
344
300
  ApiErrorType.USER_ERROR,
345
301
  ApiErrorLevel.WARNING,
346
302
  )
347
- ORDER_SIZE_TOO_LARGE = (
348
- ApiErrorIdentifier.ORDER_SIZE_TOO_LARGE,
349
- ApiErrorType.USER_ERROR,
350
- ApiErrorLevel.WARNING,
351
- )
352
- HEDGE_MODE_NOT_ACTIVE = (
353
- ApiErrorIdentifier.HEDGE_MODE_NOT_ACTIVE,
303
+ POSITION_LIMIT_EXCEEDED = (
304
+ ApiErrorIdentifier.POSITION_LIMIT_EXCEEDED,
354
305
  ApiErrorType.USER_ERROR,
355
306
  ApiErrorLevel.ERROR,
356
307
  )
357
-
358
- # our API errors
359
- API_KEY_ALREADY_EXISTS = (
360
- ApiErrorIdentifier.API_KEY_ALREADY_EXISTS,
361
- ApiErrorType.USER_ERROR,
308
+ POSITION_NOT_FOUND = (
309
+ ApiErrorIdentifier.POSITION_NOT_FOUND,
310
+ ApiErrorType.NO_ERROR,
311
+ ApiErrorLevel.INFO,
312
+ )
313
+ POSITION_SUSPENDED = (
314
+ ApiErrorIdentifier.POSITION_SUSPENDED,
315
+ ApiErrorType.EXCHANGE_ERROR,
362
316
  ApiErrorLevel.ERROR,
363
317
  )
364
- DELETE_BOT_ERROR = (
365
- ApiErrorIdentifier.DELETE_BOT_ERROR,
318
+ POST_ONLY_REJECTED = (
319
+ ApiErrorIdentifier.POST_ONLY_REJECTED,
366
320
  ApiErrorType.SERVER_ERROR,
367
321
  ApiErrorLevel.ERROR,
368
322
  )
369
- JWT_EXPIRED = (
370
- ApiErrorIdentifier.JWT_EXPIRED,
323
+ REQUEST_SCOPE_EXCEEDED = (
324
+ ApiErrorIdentifier.REQUEST_SCOPE_EXCEEDED,
325
+ ApiErrorType.EXCHANGE_ERROR,
326
+ ApiErrorLevel.ERROR,
327
+ )
328
+ RISK_LIMIT_EXCEEDED = (
329
+ ApiErrorIdentifier.RISK_LIMIT_EXCEEDED,
371
330
  ApiErrorType.SERVER_ERROR,
372
331
  ApiErrorLevel.ERROR,
373
332
  )
374
- BOT_STOPPING_COMPLETED = (
375
- ApiErrorIdentifier.BOT_STOPPING_COMPLETED,
376
- ApiErrorType.NO_ERROR,
377
- ApiErrorLevel.INFO,
333
+ RPC_TIMEOUT = (
334
+ ApiErrorIdentifier.RPC_TIMEOUT,
335
+ ApiErrorType.EXCHANGE_ERROR,
336
+ ApiErrorLevel.ERROR,
378
337
  )
379
- OBJECT_NOT_FOUND = (
380
- ApiErrorIdentifier.OBJECT_NOT_FOUND,
381
- ApiErrorType.SERVER_ERROR,
338
+ SETTLEMENT_IN_PROGRESS = (
339
+ ApiErrorIdentifier.SETTLEMENT_IN_PROGRESS,
340
+ ApiErrorType.EXCHANGE_ERROR,
382
341
  ApiErrorLevel.ERROR,
383
342
  )
384
343
  STRATEGY_DISABLED = (
@@ -386,36 +345,40 @@ class ApiError(Enum):
386
345
  ApiErrorType.SERVER_ERROR,
387
346
  ApiErrorLevel.ERROR,
388
347
  )
389
- API_KEY_IN_USE = (
390
- ApiErrorIdentifier.API_KEY_IN_USE,
348
+ SUCCESS = (ApiErrorIdentifier.SUCCESS, ApiErrorType.NO_ERROR, ApiErrorLevel.SUCCESS)
349
+ SYMBOL_NOT_FOUND = (
350
+ ApiErrorIdentifier.SYMBOL_NOT_FOUND,
391
351
  ApiErrorType.SERVER_ERROR,
392
352
  ApiErrorLevel.ERROR,
393
353
  )
394
- BOT_ALREADY_DELETED = (
395
- ApiErrorIdentifier.BOT_ALREADY_DELETED,
396
- ApiErrorType.SERVER_ERROR,
397
- ApiErrorLevel.ERROR,
354
+ TRADING_ACTION_EXPIRED = (
355
+ ApiErrorIdentifier.TRADING_ACTION_EXPIRED,
356
+ ApiErrorType.NO_ERROR,
357
+ ApiErrorLevel.INFO,
398
358
  )
399
-
400
- # our auth errors
401
- INVALID_API_KEY = (
402
- ApiErrorIdentifier.INVALID_API_KEY,
403
- ApiErrorType.USER_ERROR,
359
+ TRADING_ACTION_SKIPPED = (
360
+ ApiErrorIdentifier.TRADING_ACTION_SKIPPED,
361
+ ApiErrorType.NO_ERROR,
362
+ ApiErrorLevel.INFO,
363
+ )
364
+ TRADING_LOCKED = (
365
+ ApiErrorIdentifier.TRADING_LOCKED,
366
+ ApiErrorType.EXCHANGE_ERROR,
404
367
  ApiErrorLevel.ERROR,
405
368
  )
406
- INVALID_BEARER = (
407
- ApiErrorIdentifier.INVALID_BEARER,
408
- ApiErrorType.USER_ERROR,
369
+ TRADING_SUSPENDED = (
370
+ ApiErrorIdentifier.TRADING_SUSPENDED,
371
+ ApiErrorType.EXCHANGE_ERROR,
409
372
  ApiErrorLevel.ERROR,
410
373
  )
411
- NO_CREDENTIALS = (
412
- ApiErrorIdentifier.NO_CREDENTIALS,
413
- ApiErrorType.USER_ERROR,
374
+ UNKNOWN_ERROR = (
375
+ ApiErrorIdentifier.UNKNOWN_ERROR,
376
+ ApiErrorType.EXCHANGE_ERROR,
414
377
  ApiErrorLevel.ERROR,
415
378
  )
416
- INSUFFICIENT_SCOPES = (
417
- ApiErrorIdentifier.INSUFFICIENT_SCOPES,
418
- ApiErrorType.USER_ERROR,
379
+ URL_NOT_FOUND = (
380
+ ApiErrorIdentifier.URL_NOT_FOUND,
381
+ ApiErrorType.SERVER_ERROR,
419
382
  ApiErrorLevel.ERROR,
420
383
  )
421
384
 
@@ -429,4 +392,4 @@ class ApiError(Enum):
429
392
 
430
393
  @property
431
394
  def level(self) -> ApiErrorLevel:
432
- return self.value[2]
395
+ return self.value[2]
@@ -0,0 +1,36 @@
1
+ import re
2
+ import pyperclip
3
+
4
+ def sort_api_errors(file_content):
5
+ # Find the start of the ApiError class definition
6
+ class_start = file_content.find("class ApiErrorIdentifier(str, Enum):")
7
+ if class_start == -1:
8
+ return "Could not find ApiErrorIdentifier class"
9
+
10
+ # Find all enum definitions
11
+ enum_pattern = r' ([A-Z_]+)\s*=\s*"([a-z_]+)"'
12
+ enum_matches = re.finditer(enum_pattern, file_content)
13
+
14
+ # Extract all enum entries
15
+ enum_entries = []
16
+ for match in enum_matches:
17
+ full_match = match.group(0)
18
+ enum_name = match.group(1)
19
+ enum_entries.append((enum_name, full_match.strip()))
20
+
21
+ # Sort entries by enum name
22
+ sorted_entries = sorted(enum_entries, key=lambda x: x[0])
23
+
24
+ # Reconstruct the class content
25
+ class_header = "class ApiErrorIdentifier(str, Enum):\n\n"
26
+ sorted_content = class_header + "\n ".join(entry[1] for entry in sorted_entries)
27
+
28
+ return sorted_content
29
+
30
+ # Example usage:
31
+ if __name__ == "__main__":
32
+ with open("python/crypticorn/common/errors.py", "r") as f:
33
+ content = f.read()
34
+
35
+ sorted_content = sort_api_errors(content)
36
+ pyperclip.copy(sorted_content)
@@ -44,6 +44,7 @@ from crypticorn.pay.client.models.now_webhook_payload import NowWebhookPayload
44
44
  from crypticorn.pay.client.models.payment_status import PaymentStatus
45
45
  from crypticorn.pay.client.models.product_model import ProductModel
46
46
  from crypticorn.pay.client.models.product_subs_model import ProductSubsModel
47
+ from crypticorn.pay.client.models.scope import Scope
47
48
  from crypticorn.pay.client.models.services import Services
48
49
  from crypticorn.pay.client.models.unified_payment_model import UnifiedPaymentModel
49
50
  from crypticorn.pay.client.models.validation_error import ValidationError