crypticorn 2.10.0__tar.gz → 2.10.2__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 (283) hide show
  1. {crypticorn-2.10.0 → crypticorn-2.10.2}/CHANGELOG.md +31 -0
  2. {crypticorn-2.10.0 → crypticorn-2.10.2}/MANIFEST.in +2 -1
  3. {crypticorn-2.10.0/crypticorn.egg-info → crypticorn-2.10.2}/PKG-INFO +2 -4
  4. {crypticorn-2.10.0 → crypticorn-2.10.2}/README.md +1 -1
  5. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/cli/init.py +3 -0
  6. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/cli/templates/merge-env.sh +4 -0
  7. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/cli/version.py +1 -0
  8. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/common/decorators.py +2 -1
  9. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/common/enums.py +4 -4
  10. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/common/errors.py +6 -7
  11. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/common/mixins.py +8 -5
  12. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/common/utils.py +17 -0
  13. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/metrics/client/api/admin_api.py +14 -14
  14. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/metrics/client/api/status_api.py +6 -6
  15. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/metrics/client/configuration.py +2 -4
  16. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/metrics/client/models/api_error_identifier.py +1 -1
  17. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/metrics/client/models/api_error_level.py +1 -1
  18. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/metrics/client/models/api_error_type.py +1 -1
  19. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/metrics/client/models/exception_detail.py +1 -1
  20. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/metrics/client/models/marketcap_ranking.py +4 -5
  21. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/metrics/client/models/ohlcv.py +1 -2
  22. {crypticorn-2.10.0 → crypticorn-2.10.2/crypticorn.egg-info}/PKG-INFO +2 -4
  23. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn.egg-info/requires.txt +0 -2
  24. {crypticorn-2.10.0 → crypticorn-2.10.2}/pyproject.toml +1 -1
  25. {crypticorn-2.10.0 → crypticorn-2.10.2}/requirements/dev.txt +0 -2
  26. {crypticorn-2.10.0 → crypticorn-2.10.2}/tests/test_errors.py +9 -0
  27. {crypticorn-2.10.0 → crypticorn-2.10.2}/LICENSE +0 -0
  28. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/__init__.py +0 -0
  29. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/auth/__init__.py +0 -0
  30. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/auth/client/__init__.py +0 -0
  31. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/auth/client/api/__init__.py +0 -0
  32. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/auth/client/api/admin_api.py +0 -0
  33. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/auth/client/api/auth_api.py +0 -0
  34. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/auth/client/api/service_api.py +0 -0
  35. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/auth/client/api/user_api.py +0 -0
  36. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/auth/client/api/wallet_api.py +0 -0
  37. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/auth/client/api_client.py +0 -0
  38. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/auth/client/api_response.py +0 -0
  39. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/auth/client/configuration.py +0 -0
  40. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/auth/client/exceptions.py +0 -0
  41. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/auth/client/models/__init__.py +0 -0
  42. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/auth/client/models/add_wallet200_response.py +0 -0
  43. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/auth/client/models/add_wallet_request.py +0 -0
  44. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/auth/client/models/authorize_user200_response.py +0 -0
  45. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/auth/client/models/authorize_user200_response_auth.py +0 -0
  46. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/auth/client/models/authorize_user_request.py +0 -0
  47. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/auth/client/models/create_api_key200_response.py +0 -0
  48. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/auth/client/models/create_api_key_request.py +0 -0
  49. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/auth/client/models/create_user_request.py +0 -0
  50. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/auth/client/models/get_api_keys200_response_inner.py +0 -0
  51. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/auth/client/models/list_wallets200_response.py +0 -0
  52. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/auth/client/models/list_wallets200_response_balances_inner.py +0 -0
  53. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/auth/client/models/list_wallets200_response_balances_inner_sale_round.py +0 -0
  54. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/auth/client/models/list_wallets200_response_balances_inner_wallet.py +0 -0
  55. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/auth/client/models/list_wallets200_response_balances_inner_wallet_vesting_wallets_inner.py +0 -0
  56. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/auth/client/models/list_wallets200_response_data_inner.py +0 -0
  57. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/auth/client/models/list_wallets200_response_user_value.py +0 -0
  58. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/auth/client/models/logout_default_response.py +0 -0
  59. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/auth/client/models/logout_default_response_issues_inner.py +0 -0
  60. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/auth/client/models/oauth_callback200_response.py +0 -0
  61. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/auth/client/models/oauth_callback200_response_user.py +0 -0
  62. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/auth/client/models/refresh_token_info200_response.py +0 -0
  63. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/auth/client/models/refresh_token_info200_response_user_session.py +0 -0
  64. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/auth/client/models/resend_verification_email_request.py +0 -0
  65. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/auth/client/models/revoke_user_tokens_request.py +0 -0
  66. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/auth/client/models/rotate_tokens200_response.py +0 -0
  67. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/auth/client/models/token_info200_response.py +0 -0
  68. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/auth/client/models/unlink_wallet_request.py +0 -0
  69. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/auth/client/models/update_user_request.py +0 -0
  70. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/auth/client/models/user_by_username200_response.py +0 -0
  71. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/auth/client/models/user_reset_password_request.py +0 -0
  72. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/auth/client/models/user_set_password_request.py +0 -0
  73. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/auth/client/models/verify200_response.py +0 -0
  74. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/auth/client/models/verify_email200_response.py +0 -0
  75. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/auth/client/models/verify_email200_response_auth.py +0 -0
  76. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/auth/client/models/verify_email200_response_auth_auth.py +0 -0
  77. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/auth/client/models/verify_email_request.py +0 -0
  78. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/auth/client/models/verify_wallet_request.py +0 -0
  79. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/auth/client/models/wallet_verified200_response.py +0 -0
  80. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/auth/client/models/whoami200_response.py +0 -0
  81. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/auth/client/py.typed +0 -0
  82. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/auth/client/rest.py +0 -0
  83. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/auth/main.py +0 -0
  84. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/cli/__init__.py +0 -0
  85. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/cli/__main__.py +0 -0
  86. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/cli/templates/Dockerfile +0 -0
  87. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/cli/templates/__init__.py +0 -0
  88. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/cli/templates/auth.py +0 -0
  89. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/cli/templates/dependabot.yml +0 -0
  90. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/cli/templates/ruff.yml +0 -0
  91. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/client.py +0 -0
  92. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/common/__init__.py +0 -0
  93. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/common/ansi_colors.py +0 -0
  94. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/common/auth.py +0 -0
  95. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/common/exceptions.py +0 -0
  96. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/common/logging.py +0 -0
  97. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/common/middleware.py +0 -0
  98. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/common/openapi.py +0 -0
  99. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/common/pagination.py +0 -0
  100. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/common/router/admin_router.py +0 -0
  101. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/common/router/status_router.py +0 -0
  102. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/common/scopes.py +0 -0
  103. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/common/urls.py +0 -0
  104. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/common/warnings.py +0 -0
  105. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/hive/__init__.py +0 -0
  106. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/hive/client/__init__.py +0 -0
  107. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/hive/client/api/__init__.py +0 -0
  108. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/hive/client/api/admin_api.py +0 -0
  109. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/hive/client/api/data_api.py +0 -0
  110. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/hive/client/api/models_api.py +0 -0
  111. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/hive/client/api/status_api.py +0 -0
  112. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/hive/client/api_client.py +0 -0
  113. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/hive/client/api_response.py +0 -0
  114. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/hive/client/configuration.py +0 -0
  115. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/hive/client/exceptions.py +0 -0
  116. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/hive/client/models/__init__.py +0 -0
  117. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/hive/client/models/api_error_identifier.py +0 -0
  118. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/hive/client/models/api_error_level.py +0 -0
  119. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/hive/client/models/api_error_type.py +0 -0
  120. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/hive/client/models/coins.py +0 -0
  121. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/hive/client/models/data_download_response.py +0 -0
  122. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/hive/client/models/data_info.py +0 -0
  123. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/hive/client/models/data_options.py +0 -0
  124. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/hive/client/models/data_version.py +0 -0
  125. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/hive/client/models/data_version_info.py +0 -0
  126. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/hive/client/models/download_links.py +0 -0
  127. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/hive/client/models/evaluation.py +0 -0
  128. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/hive/client/models/evaluation_response.py +0 -0
  129. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/hive/client/models/exception_detail.py +0 -0
  130. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/hive/client/models/feature_size.py +0 -0
  131. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/hive/client/models/log_level.py +0 -0
  132. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/hive/client/models/model_create.py +0 -0
  133. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/hive/client/models/model_read.py +0 -0
  134. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/hive/client/models/model_status.py +0 -0
  135. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/hive/client/models/model_update.py +0 -0
  136. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/hive/client/models/target.py +0 -0
  137. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/hive/client/models/target_info.py +0 -0
  138. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/hive/client/models/target_type.py +0 -0
  139. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/hive/client/py.typed +0 -0
  140. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/hive/client/rest.py +0 -0
  141. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/hive/main.py +0 -0
  142. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/hive/utils.py +0 -0
  143. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/klines/__init__.py +0 -0
  144. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/klines/client/__init__.py +0 -0
  145. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/klines/client/api/__init__.py +0 -0
  146. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/klines/client/api/admin_api.py +0 -0
  147. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/klines/client/api/change_in_timeframe_api.py +0 -0
  148. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/klines/client/api/funding_rates_api.py +0 -0
  149. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/klines/client/api/ohlcv_data_api.py +0 -0
  150. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/klines/client/api/status_api.py +0 -0
  151. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/klines/client/api/symbols_api.py +0 -0
  152. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/klines/client/api/udf_api.py +0 -0
  153. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/klines/client/api_client.py +0 -0
  154. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/klines/client/api_response.py +0 -0
  155. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/klines/client/configuration.py +0 -0
  156. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/klines/client/exceptions.py +0 -0
  157. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/klines/client/models/__init__.py +0 -0
  158. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/klines/client/models/api_error_identifier.py +0 -0
  159. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/klines/client/models/api_error_level.py +0 -0
  160. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/klines/client/models/api_error_type.py +0 -0
  161. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/klines/client/models/change_in_timeframe.py +0 -0
  162. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/klines/client/models/exception_detail.py +0 -0
  163. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/klines/client/models/funding_rate.py +0 -0
  164. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/klines/client/models/funding_rate_response.py +0 -0
  165. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/klines/client/models/internal_exchange.py +0 -0
  166. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/klines/client/models/log_level.py +0 -0
  167. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/klines/client/models/market_type.py +0 -0
  168. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/klines/client/models/ohlcv.py +0 -0
  169. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/klines/client/models/resolution.py +0 -0
  170. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/klines/client/models/search_symbol.py +0 -0
  171. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/klines/client/models/sort_direction.py +0 -0
  172. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/klines/client/models/symbol_group.py +0 -0
  173. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/klines/client/models/symbol_info.py +0 -0
  174. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/klines/client/models/symbol_type.py +0 -0
  175. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/klines/client/models/timeframe.py +0 -0
  176. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/klines/client/models/udf_config.py +0 -0
  177. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/klines/client/py.typed +0 -0
  178. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/klines/client/rest.py +0 -0
  179. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/klines/main.py +0 -0
  180. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/metrics/__init__.py +0 -0
  181. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/metrics/client/__init__.py +0 -0
  182. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/metrics/client/api/__init__.py +0 -0
  183. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/metrics/client/api/exchanges_api.py +0 -0
  184. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/metrics/client/api/indicators_api.py +0 -0
  185. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/metrics/client/api/logs_api.py +0 -0
  186. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/metrics/client/api/marketcap_api.py +0 -0
  187. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/metrics/client/api/markets_api.py +0 -0
  188. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/metrics/client/api/quote_currencies_api.py +0 -0
  189. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/metrics/client/api/tokens_api.py +0 -0
  190. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/metrics/client/api_client.py +0 -0
  191. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/metrics/client/api_response.py +0 -0
  192. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/metrics/client/exceptions.py +0 -0
  193. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/metrics/client/models/__init__.py +0 -0
  194. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/metrics/client/models/exchange_mapping.py +0 -0
  195. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/metrics/client/models/internal_exchange.py +0 -0
  196. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/metrics/client/models/log_level.py +0 -0
  197. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/metrics/client/models/market_type.py +0 -0
  198. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/metrics/client/models/severity.py +0 -0
  199. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/metrics/client/models/time_interval.py +0 -0
  200. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/metrics/client/models/trading_status.py +0 -0
  201. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/metrics/client/py.typed +0 -0
  202. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/metrics/client/rest.py +0 -0
  203. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/metrics/main.py +0 -0
  204. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/pay/__init__.py +0 -0
  205. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/pay/client/__init__.py +0 -0
  206. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/pay/client/api/__init__.py +0 -0
  207. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/pay/client/api/admin_api.py +0 -0
  208. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/pay/client/api/now_payments_api.py +0 -0
  209. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/pay/client/api/payments_api.py +0 -0
  210. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/pay/client/api/products_api.py +0 -0
  211. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/pay/client/api/status_api.py +0 -0
  212. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/pay/client/api_client.py +0 -0
  213. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/pay/client/api_response.py +0 -0
  214. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/pay/client/configuration.py +0 -0
  215. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/pay/client/exceptions.py +0 -0
  216. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/pay/client/models/__init__.py +0 -0
  217. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/pay/client/models/exception_detail.py +0 -0
  218. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/pay/client/models/log_level.py +0 -0
  219. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/pay/client/models/now_create_invoice_req.py +0 -0
  220. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/pay/client/models/now_create_invoice_res.py +0 -0
  221. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/pay/client/models/payment.py +0 -0
  222. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/pay/client/models/payment_status.py +0 -0
  223. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/pay/client/models/product_create.py +0 -0
  224. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/pay/client/models/product_read.py +0 -0
  225. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/pay/client/models/product_sub_read.py +0 -0
  226. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/pay/client/models/product_update.py +0 -0
  227. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/pay/client/models/provider.py +0 -0
  228. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/pay/client/models/response_getuptime.py +0 -0
  229. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/pay/client/models/scope.py +0 -0
  230. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/pay/client/py.typed +0 -0
  231. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/pay/client/rest.py +0 -0
  232. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/pay/main.py +0 -0
  233. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/trade/__init__.py +0 -0
  234. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/trade/client/__init__.py +0 -0
  235. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/trade/client/api/__init__.py +0 -0
  236. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/trade/client/api/api_keys_api.py +0 -0
  237. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/trade/client/api/bots_api.py +0 -0
  238. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/trade/client/api/exchanges_api.py +0 -0
  239. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/trade/client/api/futures_trading_panel_api.py +0 -0
  240. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/trade/client/api/notifications_api.py +0 -0
  241. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/trade/client/api/orders_api.py +0 -0
  242. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/trade/client/api/status_api.py +0 -0
  243. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/trade/client/api/strategies_api.py +0 -0
  244. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/trade/client/api/trading_actions_api.py +0 -0
  245. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/trade/client/api_client.py +0 -0
  246. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/trade/client/api_response.py +0 -0
  247. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/trade/client/configuration.py +0 -0
  248. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/trade/client/exceptions.py +0 -0
  249. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/trade/client/models/__init__.py +0 -0
  250. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/trade/client/models/action_model.py +0 -0
  251. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/trade/client/models/bot_model.py +0 -0
  252. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/trade/client/models/bot_status.py +0 -0
  253. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/trade/client/models/exception_detail.py +0 -0
  254. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/trade/client/models/exchange_key_model.py +0 -0
  255. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/trade/client/models/execution_ids.py +0 -0
  256. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/trade/client/models/futures_balance.py +0 -0
  257. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/trade/client/models/futures_trading_action.py +0 -0
  258. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/trade/client/models/margin_mode.py +0 -0
  259. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/trade/client/models/notification_model.py +0 -0
  260. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/trade/client/models/order_model.py +0 -0
  261. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/trade/client/models/order_status.py +0 -0
  262. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/trade/client/models/post_futures_action.py +0 -0
  263. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/trade/client/models/spot_trading_action.py +0 -0
  264. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/trade/client/models/strategy_exchange_info.py +0 -0
  265. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/trade/client/models/strategy_model_input.py +0 -0
  266. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/trade/client/models/strategy_model_output.py +0 -0
  267. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/trade/client/models/tpsl.py +0 -0
  268. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/trade/client/models/trading_action_type.py +0 -0
  269. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/trade/client/py.typed +0 -0
  270. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/trade/client/rest.py +0 -0
  271. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn/trade/main.py +0 -0
  272. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn.egg-info/SOURCES.txt +0 -0
  273. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn.egg-info/dependency_links.txt +0 -0
  274. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn.egg-info/entry_points.txt +0 -0
  275. {crypticorn-2.10.0 → crypticorn-2.10.2}/crypticorn.egg-info/top_level.txt +0 -0
  276. {crypticorn-2.10.0 → crypticorn-2.10.2}/requirements/extra.txt +0 -0
  277. {crypticorn-2.10.0 → crypticorn-2.10.2}/requirements/main.txt +0 -0
  278. {crypticorn-2.10.0 → crypticorn-2.10.2}/requirements/test.txt +0 -0
  279. {crypticorn-2.10.0 → crypticorn-2.10.2}/setup.cfg +0 -0
  280. {crypticorn-2.10.0 → crypticorn-2.10.2}/tests/test_auth_client.py +0 -0
  281. {crypticorn-2.10.0 → crypticorn-2.10.2}/tests/test_config.py +0 -0
  282. {crypticorn-2.10.0 → crypticorn-2.10.2}/tests/test_enums.py +0 -0
  283. {crypticorn-2.10.0 → crypticorn-2.10.2}/tests/test_pagination.py +0 -0
@@ -1,6 +1,37 @@
1
1
  # CHANGELOG
2
2
 
3
3
 
4
+ ## v2.10.2 (2025-05-12)
5
+
6
+ ### Bug Fixes
7
+
8
+ - Convert market metrics service models to use unix ts
9
+ ([`d6c9564`](https://github.com/crypticorn-ai/api-client/commit/d6c95644aea7a239a8ffc91afb3d48db3f56b03c))
10
+
11
+ ### Chores
12
+
13
+ - Add --url flag to client generation scripts
14
+ ([`a8ebed2`](https://github.com/crypticorn-ai/api-client/commit/a8ebed2ded196ea132db236417c6c6962f4dbeb2))
15
+
16
+
17
+ ## v2.10.1 (2025-05-12)
18
+
19
+ ### Bug Fixes
20
+
21
+ - Fixes optional symbol in get_marketcap_symbols function
22
+ ([`3522a09`](https://github.com/crypticorn-ai/api-client/commit/3522a097cb159d638c717b26f9d607e813d210a9))
23
+
24
+ ### Build System
25
+
26
+ - Include static files in the structure in the distribution
27
+ ([`eb87ab4`](https://github.com/crypticorn-ai/api-client/commit/eb87ab44edb7558b09835ffe092d4a4d9517b79d))
28
+
29
+ ### Refactoring
30
+
31
+ - Remove usage of deprecated `ExcludeEnumMixin`
32
+ ([`bf4f4fb`](https://github.com/crypticorn-ai/api-client/commit/bf4f4fb4dc092a9909a6e536c5e5455244e13aac))
33
+
34
+
4
35
  ## v2.10.0 (2025-05-09)
5
36
 
6
37
  ### Build System
@@ -1,4 +1,5 @@
1
1
  graft crypticorn/cli/templates
2
2
  include CHANGELOG.md
3
3
  include README.md
4
- include LICENSE
4
+ include LICENSE
5
+ include static
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: crypticorn
3
- Version: 2.10.0
3
+ Version: 2.10.2
4
4
  Summary: Maximise Your Crypto Trading Profits with Machine Learning
5
5
  Author-email: Crypticorn <timon@crypticorn.com>
6
6
  License: Copyright © 2025 Crypticorn
@@ -50,8 +50,6 @@ Requires-Dist: tqdm<5.0.0,>=4.67.0
50
50
  Provides-Extra: dev
51
51
  Requires-Dist: build; extra == "dev"
52
52
  Requires-Dist: twine; extra == "dev"
53
- Requires-Dist: streamlit; extra == "dev"
54
- Requires-Dist: httpx; extra == "dev"
55
53
  Requires-Dist: black; extra == "dev"
56
54
  Requires-Dist: ruff; extra == "dev"
57
55
  Requires-Dist: isort; extra == "dev"
@@ -100,7 +98,7 @@ from crypticorn import ApiClient
100
98
  ```
101
99
  The ApiClient serves as the central interface for API operations. It instantiates multiple API wrappers corresponding to our micro services. These are structured the following:
102
100
 
103
- <img src="../static/pip-structure.svg" alt="pip package structure" />
101
+ <img src="pip-structure.svg" alt="pip package structure" />
104
102
 
105
103
  You can either explore each API by clicking through the library or checkout the [API Documentation](https://docs.crypticorn.com/api).
106
104
 
@@ -29,7 +29,7 @@ from crypticorn import ApiClient
29
29
  ```
30
30
  The ApiClient serves as the central interface for API operations. It instantiates multiple API wrappers corresponding to our micro services. These are structured the following:
31
31
 
32
- <img src="../static/pip-structure.svg" alt="pip package structure" />
32
+ <img src="pip-structure.svg" alt="pip package structure" />
33
33
 
34
34
  You can either explore each API by clicking through the library or checkout the [API Documentation](https://docs.crypticorn.com/api).
35
35
 
@@ -4,6 +4,7 @@ import subprocess
4
4
  import importlib.resources
5
5
  import crypticorn.cli.templates as templates
6
6
 
7
+
7
8
  def get_git_root() -> Path:
8
9
  """Get the root directory of the git repository."""
9
10
  try:
@@ -29,6 +30,7 @@ def copy_template(template_name: str, target_path: Path):
29
30
 
30
31
  click.secho(f"✅ Created: {target_path}", fg="green")
31
32
 
33
+
32
34
  def check_file_exists(path: Path, force: bool):
33
35
  if path.exists() and not force:
34
36
  click.secho(f"File already exists, use --force / -f to overwrite", fg="red")
@@ -113,6 +115,7 @@ def init_dependabot(force):
113
115
  return
114
116
  copy_template("dependabot.yml", target)
115
117
 
118
+
116
119
  @init_group.command("merge-env")
117
120
  @click.option("-f", "--force", is_flag=True, help="Force overwrite the .env file")
118
121
  def init_merge_env(force):
@@ -1,7 +1,11 @@
1
1
  #!/usr/bin/env bash
2
+
2
3
  # this script merges the env variables from the environment and the .env.example file into the .env file
3
4
  # the appended variables take precedence over the .env.example variables (if both are set)
4
5
 
6
+ # Make executable before running in github actions
7
+ # chmod +x scripts/merge-env.sh
8
+
5
9
  # Usage in a github action:
6
10
  # - name: Generate .env
7
11
  # run: ./scripts/merge-env.sh
@@ -1,6 +1,7 @@
1
1
  import importlib.metadata
2
2
  import click
3
3
 
4
+
4
5
  @click.command("version")
5
6
  def version():
6
7
  """Print the version of the crypticorn package"""
@@ -1,7 +1,8 @@
1
+ from datetime import datetime
1
2
  from typing import Optional, Type, Any, Tuple
2
3
  from copy import deepcopy
3
4
 
4
- from pydantic import BaseModel, create_model
5
+ from pydantic import BaseModel, create_model, field_validator, BeforeValidator
5
6
  from pydantic.fields import FieldInfo
6
7
 
7
8
 
@@ -1,17 +1,17 @@
1
1
  """Defines common enumerations used throughout the codebase for type safety and consistency."""
2
2
 
3
3
  from enum import StrEnum
4
- from crypticorn.common.mixins import ValidateEnumMixin, ExcludeEnumMixin
4
+ from crypticorn.common.mixins import ValidateEnumMixin
5
5
 
6
6
 
7
- class Exchange(ValidateEnumMixin, ExcludeEnumMixin, StrEnum):
7
+ class Exchange(ValidateEnumMixin, StrEnum):
8
8
  """Supported exchanges for trading"""
9
9
 
10
10
  KUCOIN = "kucoin"
11
11
  BINGX = "bingx"
12
12
 
13
13
 
14
- class InternalExchange(ValidateEnumMixin, ExcludeEnumMixin, StrEnum):
14
+ class InternalExchange(ValidateEnumMixin, StrEnum):
15
15
  """All exchanges we are using, including public (Exchange)"""
16
16
 
17
17
  KUCOIN = "kucoin"
@@ -22,7 +22,7 @@ class InternalExchange(ValidateEnumMixin, ExcludeEnumMixin, StrEnum):
22
22
  BITGET = "bitget"
23
23
 
24
24
 
25
- class MarketType(ValidateEnumMixin, ExcludeEnumMixin, StrEnum):
25
+ class MarketType(ValidateEnumMixin, StrEnum):
26
26
  """
27
27
  Market types
28
28
  """
@@ -2,10 +2,10 @@
2
2
 
3
3
  from enum import Enum, StrEnum
4
4
  from fastapi import status
5
- from crypticorn.common.mixins import ExcludeEnumMixin, ApiErrorFallback
5
+ from crypticorn.common.mixins import ApiErrorFallback
6
6
 
7
7
 
8
- class ApiErrorType(ExcludeEnumMixin, StrEnum):
8
+ class ApiErrorType(StrEnum):
9
9
  """Type of the API error."""
10
10
 
11
11
  USER_ERROR = "user error"
@@ -18,7 +18,7 @@ class ApiErrorType(ExcludeEnumMixin, StrEnum):
18
18
  """error that does not need to be handled or does not affect the program or is a placeholder."""
19
19
 
20
20
 
21
- class ApiErrorIdentifier(ExcludeEnumMixin, StrEnum):
21
+ class ApiErrorIdentifier(StrEnum):
22
22
  """Unique identifier of the API error."""
23
23
 
24
24
  ALLOCATION_BELOW_EXPOSURE = "allocation_below_current_exposure"
@@ -98,13 +98,12 @@ class ApiErrorIdentifier(ExcludeEnumMixin, StrEnum):
98
98
  UNKNOWN_ERROR = "unknown_error_occurred"
99
99
  URL_NOT_FOUND = "requested_resource_not_found"
100
100
 
101
- @property
102
101
  def get_error(self) -> "ApiError":
103
102
  """Get the corresponding ApiError."""
104
- return ApiError[self.value]
103
+ return getattr(ApiError, self.name)
105
104
 
106
105
 
107
- class ApiErrorLevel(ExcludeEnumMixin, StrEnum):
106
+ class ApiErrorLevel(StrEnum):
108
107
  """Level of the API error."""
109
108
 
110
109
  ERROR = "error"
@@ -113,7 +112,7 @@ class ApiErrorLevel(ExcludeEnumMixin, StrEnum):
113
112
  WARNING = "warning"
114
113
 
115
114
 
116
- class ApiError(ExcludeEnumMixin, Enum, metaclass=ApiErrorFallback):
115
+ class ApiError(Enum, metaclass=ApiErrorFallback):
117
116
  # Fallback to UNKNOWN_ERROR for error codes not yet published to PyPI.
118
117
  """Crypticorn API error enumeration."""
119
118
 
@@ -39,10 +39,13 @@ class ValidateEnumMixin:
39
39
  class ExcludeEnumMixin:
40
40
  """(deprecated) Mixin to exclude enum from OpenAPI schema. We use this to avoid duplicating enums when generating client code from the openapi spec."""
41
41
 
42
- warnings.warn(
43
- "The `ExcludeEnumMixin` class is deprecated. Should be removed from enums inheriting this class.",
44
- category=CrypticornDeprecatedSince28,
45
- )
42
+ def __init_subclass__(cls, **kwargs):
43
+ super().__init_subclass__(**kwargs)
44
+ if cls.__name__.startswith("ExcludeEnumMixin"):
45
+ warnings.warn(
46
+ "The `ExcludeEnumMixin` class is deprecated. Should be removed from enums inheriting this class.",
47
+ category=CrypticornDeprecatedSince28,
48
+ )
46
49
 
47
50
  @classmethod
48
51
  def __get_pydantic_json_schema__(cls, core_schema, handler):
@@ -56,7 +59,7 @@ class ApiErrorFallback(EnumMeta):
56
59
 
57
60
  def __getattr__(cls, name):
58
61
  # Let Pydantic/internal stuff pass silently ! fragile
59
- if name.startswith("__"):
62
+ if name.startswith("__") or name.startswith("_pytest"):
60
63
  raise AttributeError(name)
61
64
  _logger.warning(
62
65
  f"Unknown enum member '{name}' - update crypticorn package or check for typos"
@@ -1,5 +1,6 @@
1
1
  """General utility functions and helper methods used across the codebase."""
2
2
 
3
+ from datetime import datetime
3
4
  from typing import Any
4
5
  from decimal import Decimal
5
6
  import string
@@ -74,3 +75,19 @@ def optional_import(module_name: str, extra_name: str) -> Any:
74
75
  f"Optional dependency '{module_name}' is required for this feature. "
75
76
  f"Install it with: pip install crypticorn[{extra_name}]"
76
77
  ) from e
78
+
79
+
80
+ def datetime_to_timestamp(v: Any):
81
+ """Converts a datetime to a timestamp.
82
+ Can be used as a pydantic validator.
83
+ >>> from pydantic import BeforeValidator, BaseModel
84
+ >>> class MyModel(BaseModel):
85
+ ... timestamp: Annotated[int, BeforeValidator(datetime_to_timestamp)]
86
+ """
87
+ if isinstance(v, list):
88
+ return [
89
+ int(item.timestamp()) if isinstance(item, datetime) else item for item in v
90
+ ]
91
+ elif isinstance(v, datetime):
92
+ return int(v.timestamp())
93
+ return v
@@ -271,7 +271,7 @@ class AdminApi:
271
271
  include: Annotated[
272
272
  Optional[List[StrictStr]],
273
273
  Field(
274
- description="List of dependencies to include in the response. If not provided, all installed packages will be returned."
274
+ description="List of regex patterns to match against package names. If not provided, all installed packages will be returned."
275
275
  ),
276
276
  ] = None,
277
277
  _request_timeout: Union[
@@ -285,12 +285,12 @@ class AdminApi:
285
285
  _content_type: Optional[StrictStr] = None,
286
286
  _headers: Optional[Dict[StrictStr, Any]] = None,
287
287
  _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
288
- ) -> List[object]:
288
+ ) -> Dict[str, str]:
289
289
  """List Installed Packages
290
290
 
291
- Return a list of installed packages and versions.
291
+ Return a list of installed packages and versions. The include parameter accepts regex patterns to match against package names. For example: - crypticorn.* will match all packages starting with 'crypticorn' - .*tic.* will match all packages containing 'tic' in their name
292
292
 
293
- :param include: List of dependencies to include in the response. If not provided, all installed packages will be returned.
293
+ :param include: List of regex patterns to match against package names. If not provided, all installed packages will be returned.
294
294
  :type include: List[str]
295
295
  :param _request_timeout: timeout setting for this request. If one
296
296
  number provided, it will be total request
@@ -323,7 +323,7 @@ class AdminApi:
323
323
  )
324
324
 
325
325
  _response_types_map: Dict[str, Optional[str]] = {
326
- "200": "List[object]",
326
+ "200": "Dict[str, str]",
327
327
  }
328
328
  response_data = await self.api_client.call_api(
329
329
  *_param, _request_timeout=_request_timeout
@@ -340,7 +340,7 @@ class AdminApi:
340
340
  include: Annotated[
341
341
  Optional[List[StrictStr]],
342
342
  Field(
343
- description="List of dependencies to include in the response. If not provided, all installed packages will be returned."
343
+ description="List of regex patterns to match against package names. If not provided, all installed packages will be returned."
344
344
  ),
345
345
  ] = None,
346
346
  _request_timeout: Union[
@@ -354,12 +354,12 @@ class AdminApi:
354
354
  _content_type: Optional[StrictStr] = None,
355
355
  _headers: Optional[Dict[StrictStr, Any]] = None,
356
356
  _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
357
- ) -> ApiResponse[List[object]]:
357
+ ) -> ApiResponse[Dict[str, str]]:
358
358
  """List Installed Packages
359
359
 
360
- Return a list of installed packages and versions.
360
+ Return a list of installed packages and versions. The include parameter accepts regex patterns to match against package names. For example: - crypticorn.* will match all packages starting with 'crypticorn' - .*tic.* will match all packages containing 'tic' in their name
361
361
 
362
- :param include: List of dependencies to include in the response. If not provided, all installed packages will be returned.
362
+ :param include: List of regex patterns to match against package names. If not provided, all installed packages will be returned.
363
363
  :type include: List[str]
364
364
  :param _request_timeout: timeout setting for this request. If one
365
365
  number provided, it will be total request
@@ -392,7 +392,7 @@ class AdminApi:
392
392
  )
393
393
 
394
394
  _response_types_map: Dict[str, Optional[str]] = {
395
- "200": "List[object]",
395
+ "200": "Dict[str, str]",
396
396
  }
397
397
  response_data = await self.api_client.call_api(
398
398
  *_param, _request_timeout=_request_timeout
@@ -409,7 +409,7 @@ class AdminApi:
409
409
  include: Annotated[
410
410
  Optional[List[StrictStr]],
411
411
  Field(
412
- description="List of dependencies to include in the response. If not provided, all installed packages will be returned."
412
+ description="List of regex patterns to match against package names. If not provided, all installed packages will be returned."
413
413
  ),
414
414
  ] = None,
415
415
  _request_timeout: Union[
@@ -426,9 +426,9 @@ class AdminApi:
426
426
  ) -> RESTResponseType:
427
427
  """List Installed Packages
428
428
 
429
- Return a list of installed packages and versions.
429
+ Return a list of installed packages and versions. The include parameter accepts regex patterns to match against package names. For example: - crypticorn.* will match all packages starting with 'crypticorn' - .*tic.* will match all packages containing 'tic' in their name
430
430
 
431
- :param include: List of dependencies to include in the response. If not provided, all installed packages will be returned.
431
+ :param include: List of regex patterns to match against package names. If not provided, all installed packages will be returned.
432
432
  :type include: List[str]
433
433
  :param _request_timeout: timeout setting for this request. If one
434
434
  number provided, it will be total request
@@ -461,7 +461,7 @@ class AdminApi:
461
461
  )
462
462
 
463
463
  _response_types_map: Dict[str, Optional[str]] = {
464
- "200": "List[object]",
464
+ "200": "Dict[str, str]",
465
465
  }
466
466
  response_data = await self.api_client.call_api(
467
467
  *_param, _request_timeout=_request_timeout
@@ -17,7 +17,7 @@ from typing import Any, Dict, List, Optional, Tuple, Union
17
17
  from typing_extensions import Annotated
18
18
 
19
19
  from pydantic import StrictStr, field_validator
20
- from typing import Any, Dict, Optional
20
+ from typing import Optional
21
21
 
22
22
  from crypticorn.metrics.client.api_client import ApiClient, RequestSerialized
23
23
  from crypticorn.metrics.client.api_response import ApiResponse
@@ -294,7 +294,7 @@ class StatusApi:
294
294
  _content_type: Optional[StrictStr] = None,
295
295
  _headers: Optional[Dict[StrictStr, Any]] = None,
296
296
  _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
297
- ) -> Dict[str, object]:
297
+ ) -> str:
298
298
  """Ping
299
299
 
300
300
  Returns 'OK' if the API is running.
@@ -329,7 +329,7 @@ class StatusApi:
329
329
  )
330
330
 
331
331
  _response_types_map: Dict[str, Optional[str]] = {
332
- "200": "Dict[str, object]",
332
+ "200": "str",
333
333
  }
334
334
  response_data = await self.api_client.call_api(
335
335
  *_param, _request_timeout=_request_timeout
@@ -354,7 +354,7 @@ class StatusApi:
354
354
  _content_type: Optional[StrictStr] = None,
355
355
  _headers: Optional[Dict[StrictStr, Any]] = None,
356
356
  _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
357
- ) -> ApiResponse[Dict[str, object]]:
357
+ ) -> ApiResponse[str]:
358
358
  """Ping
359
359
 
360
360
  Returns 'OK' if the API is running.
@@ -389,7 +389,7 @@ class StatusApi:
389
389
  )
390
390
 
391
391
  _response_types_map: Dict[str, Optional[str]] = {
392
- "200": "Dict[str, object]",
392
+ "200": "str",
393
393
  }
394
394
  response_data = await self.api_client.call_api(
395
395
  *_param, _request_timeout=_request_timeout
@@ -449,7 +449,7 @@ class StatusApi:
449
449
  )
450
450
 
451
451
  _response_types_map: Dict[str, Optional[str]] = {
452
- "200": "Dict[str, object]",
452
+ "200": "str",
453
453
  }
454
454
  response_data = await self.api_client.call_api(
455
455
  *_param, _request_timeout=_request_timeout
@@ -215,9 +215,7 @@ class Configuration:
215
215
  debug: Optional[bool] = None,
216
216
  ) -> None:
217
217
  """Constructor"""
218
- self._base_path = (
219
- "https://api.crypticorn.dev/v1/metrics" if host is None else host
220
- )
218
+ self._base_path = "http://127.0.0.1:8000/v1/metrics" if host is None else host
221
219
  """Default Base url
222
220
  """
223
221
  self.server_index = 0 if server_index is None and host is None else server_index
@@ -559,7 +557,7 @@ class Configuration:
559
557
  """
560
558
  return [
561
559
  {
562
- "url": "https://api.crypticorn.dev/v1/metrics",
560
+ "url": "http://127.0.0.1:8000/v1/metrics",
563
561
  "description": "No description provided",
564
562
  }
565
563
  ]
@@ -20,7 +20,7 @@ from typing_extensions import Self
20
20
 
21
21
  class ApiErrorIdentifier(str, Enum):
22
22
  """
23
- API error identifiers
23
+ Unique identifier of the API error.
24
24
  """
25
25
 
26
26
  """
@@ -20,7 +20,7 @@ from typing_extensions import Self
20
20
 
21
21
  class ApiErrorLevel(str, Enum):
22
22
  """
23
- API error levels
23
+ Level of the API error.
24
24
  """
25
25
 
26
26
  """
@@ -20,7 +20,7 @@ from typing_extensions import Self
20
20
 
21
21
  class ApiErrorType(str, Enum):
22
22
  """
23
- Type of API error
23
+ Type of the API error.
24
24
  """
25
25
 
26
26
  """
@@ -28,7 +28,7 @@ from typing_extensions import Self
28
28
 
29
29
  class ExceptionDetail(BaseModel):
30
30
  """
31
- This is the detail of the exception. It is used to enrich the exception with additional information by unwrapping the ApiError into its components.
31
+ Exception details returned to the client.
32
32
  """ # noqa: E501
33
33
 
34
34
  message: Optional[StrictStr] = None
@@ -17,9 +17,8 @@ import pprint
17
17
  import re # noqa: F401
18
18
  import json
19
19
 
20
- from datetime import datetime
21
- from pydantic import BaseModel, ConfigDict, StrictStr
22
- from typing import Any, ClassVar, Dict, List
20
+ from pydantic import BaseModel, ConfigDict, StrictInt, StrictStr
21
+ from typing import Any, ClassVar, Dict, List, Optional
23
22
  from typing import Optional, Set
24
23
  from typing_extensions import Self
25
24
 
@@ -29,8 +28,8 @@ class MarketcapRanking(BaseModel):
29
28
  MarketcapRanking
30
29
  """ # noqa: E501
31
30
 
32
- timestamp: datetime
33
- symbols: List[StrictStr]
31
+ timestamp: StrictInt
32
+ symbols: List[Optional[StrictStr]]
34
33
  __properties: ClassVar[List[str]] = ["timestamp", "symbols"]
35
34
 
36
35
  model_config = ConfigDict(
@@ -17,7 +17,6 @@ import pprint
17
17
  import re # noqa: F401
18
18
  import json
19
19
 
20
- from datetime import datetime
21
20
  from pydantic import BaseModel, ConfigDict, StrictFloat, StrictInt
22
21
  from typing import Any, ClassVar, Dict, List, Optional, Union
23
22
  from typing import Optional, Set
@@ -29,7 +28,7 @@ class OHLCV(BaseModel):
29
28
  OHLCV
30
29
  """ # noqa: E501
31
30
 
32
- timestamp: datetime
31
+ timestamp: StrictInt
33
32
  open: Union[StrictFloat, StrictInt]
34
33
  high: Union[StrictFloat, StrictInt]
35
34
  low: Union[StrictFloat, StrictInt]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: crypticorn
3
- Version: 2.10.0
3
+ Version: 2.10.2
4
4
  Summary: Maximise Your Crypto Trading Profits with Machine Learning
5
5
  Author-email: Crypticorn <timon@crypticorn.com>
6
6
  License: Copyright © 2025 Crypticorn
@@ -50,8 +50,6 @@ Requires-Dist: tqdm<5.0.0,>=4.67.0
50
50
  Provides-Extra: dev
51
51
  Requires-Dist: build; extra == "dev"
52
52
  Requires-Dist: twine; extra == "dev"
53
- Requires-Dist: streamlit; extra == "dev"
54
- Requires-Dist: httpx; extra == "dev"
55
53
  Requires-Dist: black; extra == "dev"
56
54
  Requires-Dist: ruff; extra == "dev"
57
55
  Requires-Dist: isort; extra == "dev"
@@ -100,7 +98,7 @@ from crypticorn import ApiClient
100
98
  ```
101
99
  The ApiClient serves as the central interface for API operations. It instantiates multiple API wrappers corresponding to our micro services. These are structured the following:
102
100
 
103
- <img src="../static/pip-structure.svg" alt="pip package structure" />
101
+ <img src="pip-structure.svg" alt="pip package structure" />
104
102
 
105
103
  You can either explore each API by clicking through the library or checkout the [API Documentation](https://docs.crypticorn.com/api).
106
104
 
@@ -14,8 +14,6 @@ tqdm<5.0.0,>=4.67.0
14
14
  [dev]
15
15
  build
16
16
  twine
17
- streamlit
18
- httpx
19
17
  black
20
18
  ruff
21
19
  isort
@@ -5,7 +5,7 @@ readme = "README.md"
5
5
  license = {file = 'LICENSE'}
6
6
  requires-python = ">=3.10"
7
7
  authors = [{name = "Crypticorn", email = "timon@crypticorn.com"}]
8
- version = "2.10.0"
8
+ version = "2.10.2"
9
9
  keywords = ["machine learning", "data science", "crypto", "modelling"]
10
10
  dynamic = ["dependencies", "optional-dependencies"]
11
11
 
@@ -1,7 +1,5 @@
1
1
  build
2
2
  twine
3
- streamlit
4
- httpx
5
3
  black
6
4
  ruff
7
5
  isort
@@ -52,3 +52,12 @@ async def test_fallback():
52
52
  assert (
53
53
  ApiError.NOT_EXISTING_ERROR == ApiError.UNKNOWN_ERROR
54
54
  ), "Fallback error is not used"
55
+
56
+
57
+ @pytest.mark.asyncio
58
+ async def test_error_from_identifier():
59
+ """Checks that the error can be retrieved from the identifier"""
60
+ assert (
61
+ ApiErrorIdentifier.ALLOCATION_BELOW_EXPOSURE.get_error()
62
+ == ApiError.ALLOCATION_BELOW_EXPOSURE
63
+ )
File without changes