crypticorn 2.10.2__tar.gz → 2.11.0__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.2 → crypticorn-2.11.0}/CHANGELOG.md +31 -0
  2. {crypticorn-2.10.2/crypticorn.egg-info → crypticorn-2.11.0}/PKG-INFO +4 -3
  3. {crypticorn-2.10.2 → crypticorn-2.11.0}/README.md +1 -1
  4. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/common/ansi_colors.py +4 -2
  5. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/common/auth.py +11 -9
  6. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/common/enums.py +5 -1
  7. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/common/errors.py +5 -1
  8. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/common/exceptions.py +4 -1
  9. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/common/logging.py +5 -1
  10. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/common/scopes.py +4 -1
  11. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/common/urls.py +5 -1
  12. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/common/utils.py +3 -3
  13. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/common/warnings.py +2 -2
  14. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/metrics/main.py +6 -5
  15. {crypticorn-2.10.2 → crypticorn-2.11.0/crypticorn.egg-info}/PKG-INFO +4 -3
  16. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn.egg-info/requires.txt +1 -0
  17. {crypticorn-2.10.2 → crypticorn-2.11.0}/pyproject.toml +2 -2
  18. {crypticorn-2.10.2 → crypticorn-2.11.0}/requirements/main.txt +1 -0
  19. {crypticorn-2.10.2 → crypticorn-2.11.0}/LICENSE +0 -0
  20. {crypticorn-2.10.2 → crypticorn-2.11.0}/MANIFEST.in +0 -0
  21. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/__init__.py +0 -0
  22. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/auth/__init__.py +0 -0
  23. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/auth/client/__init__.py +0 -0
  24. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/auth/client/api/__init__.py +0 -0
  25. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/auth/client/api/admin_api.py +0 -0
  26. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/auth/client/api/auth_api.py +0 -0
  27. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/auth/client/api/service_api.py +0 -0
  28. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/auth/client/api/user_api.py +0 -0
  29. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/auth/client/api/wallet_api.py +0 -0
  30. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/auth/client/api_client.py +0 -0
  31. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/auth/client/api_response.py +0 -0
  32. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/auth/client/configuration.py +0 -0
  33. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/auth/client/exceptions.py +0 -0
  34. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/auth/client/models/__init__.py +0 -0
  35. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/auth/client/models/add_wallet200_response.py +0 -0
  36. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/auth/client/models/add_wallet_request.py +0 -0
  37. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/auth/client/models/authorize_user200_response.py +0 -0
  38. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/auth/client/models/authorize_user200_response_auth.py +0 -0
  39. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/auth/client/models/authorize_user_request.py +0 -0
  40. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/auth/client/models/create_api_key200_response.py +0 -0
  41. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/auth/client/models/create_api_key_request.py +0 -0
  42. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/auth/client/models/create_user_request.py +0 -0
  43. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/auth/client/models/get_api_keys200_response_inner.py +0 -0
  44. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/auth/client/models/list_wallets200_response.py +0 -0
  45. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/auth/client/models/list_wallets200_response_balances_inner.py +0 -0
  46. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/auth/client/models/list_wallets200_response_balances_inner_sale_round.py +0 -0
  47. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/auth/client/models/list_wallets200_response_balances_inner_wallet.py +0 -0
  48. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/auth/client/models/list_wallets200_response_balances_inner_wallet_vesting_wallets_inner.py +0 -0
  49. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/auth/client/models/list_wallets200_response_data_inner.py +0 -0
  50. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/auth/client/models/list_wallets200_response_user_value.py +0 -0
  51. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/auth/client/models/logout_default_response.py +0 -0
  52. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/auth/client/models/logout_default_response_issues_inner.py +0 -0
  53. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/auth/client/models/oauth_callback200_response.py +0 -0
  54. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/auth/client/models/oauth_callback200_response_user.py +0 -0
  55. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/auth/client/models/refresh_token_info200_response.py +0 -0
  56. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/auth/client/models/refresh_token_info200_response_user_session.py +0 -0
  57. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/auth/client/models/resend_verification_email_request.py +0 -0
  58. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/auth/client/models/revoke_user_tokens_request.py +0 -0
  59. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/auth/client/models/rotate_tokens200_response.py +0 -0
  60. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/auth/client/models/token_info200_response.py +0 -0
  61. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/auth/client/models/unlink_wallet_request.py +0 -0
  62. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/auth/client/models/update_user_request.py +0 -0
  63. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/auth/client/models/user_by_username200_response.py +0 -0
  64. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/auth/client/models/user_reset_password_request.py +0 -0
  65. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/auth/client/models/user_set_password_request.py +0 -0
  66. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/auth/client/models/verify200_response.py +0 -0
  67. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/auth/client/models/verify_email200_response.py +0 -0
  68. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/auth/client/models/verify_email200_response_auth.py +0 -0
  69. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/auth/client/models/verify_email200_response_auth_auth.py +0 -0
  70. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/auth/client/models/verify_email_request.py +0 -0
  71. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/auth/client/models/verify_wallet_request.py +0 -0
  72. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/auth/client/models/wallet_verified200_response.py +0 -0
  73. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/auth/client/models/whoami200_response.py +0 -0
  74. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/auth/client/py.typed +0 -0
  75. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/auth/client/rest.py +0 -0
  76. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/auth/main.py +0 -0
  77. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/cli/__init__.py +0 -0
  78. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/cli/__main__.py +0 -0
  79. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/cli/init.py +0 -0
  80. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/cli/templates/Dockerfile +0 -0
  81. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/cli/templates/__init__.py +0 -0
  82. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/cli/templates/auth.py +0 -0
  83. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/cli/templates/dependabot.yml +0 -0
  84. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/cli/templates/merge-env.sh +0 -0
  85. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/cli/templates/ruff.yml +0 -0
  86. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/cli/version.py +0 -0
  87. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/client.py +0 -0
  88. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/common/__init__.py +0 -0
  89. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/common/decorators.py +0 -0
  90. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/common/middleware.py +0 -0
  91. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/common/mixins.py +0 -0
  92. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/common/openapi.py +0 -0
  93. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/common/pagination.py +0 -0
  94. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/common/router/admin_router.py +0 -0
  95. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/common/router/status_router.py +0 -0
  96. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/hive/__init__.py +0 -0
  97. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/hive/client/__init__.py +0 -0
  98. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/hive/client/api/__init__.py +0 -0
  99. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/hive/client/api/admin_api.py +0 -0
  100. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/hive/client/api/data_api.py +0 -0
  101. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/hive/client/api/models_api.py +0 -0
  102. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/hive/client/api/status_api.py +0 -0
  103. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/hive/client/api_client.py +0 -0
  104. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/hive/client/api_response.py +0 -0
  105. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/hive/client/configuration.py +0 -0
  106. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/hive/client/exceptions.py +0 -0
  107. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/hive/client/models/__init__.py +0 -0
  108. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/hive/client/models/api_error_identifier.py +0 -0
  109. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/hive/client/models/api_error_level.py +0 -0
  110. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/hive/client/models/api_error_type.py +0 -0
  111. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/hive/client/models/coins.py +0 -0
  112. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/hive/client/models/data_download_response.py +0 -0
  113. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/hive/client/models/data_info.py +0 -0
  114. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/hive/client/models/data_options.py +0 -0
  115. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/hive/client/models/data_version.py +0 -0
  116. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/hive/client/models/data_version_info.py +0 -0
  117. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/hive/client/models/download_links.py +0 -0
  118. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/hive/client/models/evaluation.py +0 -0
  119. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/hive/client/models/evaluation_response.py +0 -0
  120. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/hive/client/models/exception_detail.py +0 -0
  121. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/hive/client/models/feature_size.py +0 -0
  122. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/hive/client/models/log_level.py +0 -0
  123. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/hive/client/models/model_create.py +0 -0
  124. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/hive/client/models/model_read.py +0 -0
  125. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/hive/client/models/model_status.py +0 -0
  126. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/hive/client/models/model_update.py +0 -0
  127. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/hive/client/models/target.py +0 -0
  128. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/hive/client/models/target_info.py +0 -0
  129. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/hive/client/models/target_type.py +0 -0
  130. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/hive/client/py.typed +0 -0
  131. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/hive/client/rest.py +0 -0
  132. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/hive/main.py +0 -0
  133. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/hive/utils.py +0 -0
  134. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/klines/__init__.py +0 -0
  135. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/klines/client/__init__.py +0 -0
  136. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/klines/client/api/__init__.py +0 -0
  137. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/klines/client/api/admin_api.py +0 -0
  138. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/klines/client/api/change_in_timeframe_api.py +0 -0
  139. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/klines/client/api/funding_rates_api.py +0 -0
  140. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/klines/client/api/ohlcv_data_api.py +0 -0
  141. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/klines/client/api/status_api.py +0 -0
  142. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/klines/client/api/symbols_api.py +0 -0
  143. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/klines/client/api/udf_api.py +0 -0
  144. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/klines/client/api_client.py +0 -0
  145. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/klines/client/api_response.py +0 -0
  146. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/klines/client/configuration.py +0 -0
  147. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/klines/client/exceptions.py +0 -0
  148. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/klines/client/models/__init__.py +0 -0
  149. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/klines/client/models/api_error_identifier.py +0 -0
  150. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/klines/client/models/api_error_level.py +0 -0
  151. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/klines/client/models/api_error_type.py +0 -0
  152. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/klines/client/models/change_in_timeframe.py +0 -0
  153. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/klines/client/models/exception_detail.py +0 -0
  154. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/klines/client/models/funding_rate.py +0 -0
  155. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/klines/client/models/funding_rate_response.py +0 -0
  156. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/klines/client/models/internal_exchange.py +0 -0
  157. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/klines/client/models/log_level.py +0 -0
  158. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/klines/client/models/market_type.py +0 -0
  159. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/klines/client/models/ohlcv.py +0 -0
  160. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/klines/client/models/resolution.py +0 -0
  161. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/klines/client/models/search_symbol.py +0 -0
  162. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/klines/client/models/sort_direction.py +0 -0
  163. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/klines/client/models/symbol_group.py +0 -0
  164. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/klines/client/models/symbol_info.py +0 -0
  165. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/klines/client/models/symbol_type.py +0 -0
  166. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/klines/client/models/timeframe.py +0 -0
  167. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/klines/client/models/udf_config.py +0 -0
  168. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/klines/client/py.typed +0 -0
  169. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/klines/client/rest.py +0 -0
  170. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/klines/main.py +0 -0
  171. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/metrics/__init__.py +0 -0
  172. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/metrics/client/__init__.py +0 -0
  173. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/metrics/client/api/__init__.py +0 -0
  174. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/metrics/client/api/admin_api.py +0 -0
  175. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/metrics/client/api/exchanges_api.py +0 -0
  176. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/metrics/client/api/indicators_api.py +0 -0
  177. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/metrics/client/api/logs_api.py +0 -0
  178. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/metrics/client/api/marketcap_api.py +0 -0
  179. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/metrics/client/api/markets_api.py +0 -0
  180. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/metrics/client/api/quote_currencies_api.py +0 -0
  181. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/metrics/client/api/status_api.py +0 -0
  182. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/metrics/client/api/tokens_api.py +0 -0
  183. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/metrics/client/api_client.py +0 -0
  184. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/metrics/client/api_response.py +0 -0
  185. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/metrics/client/configuration.py +0 -0
  186. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/metrics/client/exceptions.py +0 -0
  187. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/metrics/client/models/__init__.py +0 -0
  188. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/metrics/client/models/api_error_identifier.py +0 -0
  189. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/metrics/client/models/api_error_level.py +0 -0
  190. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/metrics/client/models/api_error_type.py +0 -0
  191. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/metrics/client/models/exception_detail.py +0 -0
  192. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/metrics/client/models/exchange_mapping.py +0 -0
  193. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/metrics/client/models/internal_exchange.py +0 -0
  194. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/metrics/client/models/log_level.py +0 -0
  195. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/metrics/client/models/market_type.py +0 -0
  196. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/metrics/client/models/marketcap_ranking.py +0 -0
  197. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/metrics/client/models/ohlcv.py +0 -0
  198. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/metrics/client/models/severity.py +0 -0
  199. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/metrics/client/models/time_interval.py +0 -0
  200. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/metrics/client/models/trading_status.py +0 -0
  201. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/metrics/client/py.typed +0 -0
  202. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/metrics/client/rest.py +0 -0
  203. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/pay/__init__.py +0 -0
  204. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/pay/client/__init__.py +0 -0
  205. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/pay/client/api/__init__.py +0 -0
  206. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/pay/client/api/admin_api.py +0 -0
  207. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/pay/client/api/now_payments_api.py +0 -0
  208. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/pay/client/api/payments_api.py +0 -0
  209. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/pay/client/api/products_api.py +0 -0
  210. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/pay/client/api/status_api.py +0 -0
  211. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/pay/client/api_client.py +0 -0
  212. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/pay/client/api_response.py +0 -0
  213. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/pay/client/configuration.py +0 -0
  214. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/pay/client/exceptions.py +0 -0
  215. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/pay/client/models/__init__.py +0 -0
  216. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/pay/client/models/exception_detail.py +0 -0
  217. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/pay/client/models/log_level.py +0 -0
  218. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/pay/client/models/now_create_invoice_req.py +0 -0
  219. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/pay/client/models/now_create_invoice_res.py +0 -0
  220. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/pay/client/models/payment.py +0 -0
  221. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/pay/client/models/payment_status.py +0 -0
  222. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/pay/client/models/product_create.py +0 -0
  223. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/pay/client/models/product_read.py +0 -0
  224. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/pay/client/models/product_sub_read.py +0 -0
  225. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/pay/client/models/product_update.py +0 -0
  226. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/pay/client/models/provider.py +0 -0
  227. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/pay/client/models/response_getuptime.py +0 -0
  228. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/pay/client/models/scope.py +0 -0
  229. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/pay/client/py.typed +0 -0
  230. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/pay/client/rest.py +0 -0
  231. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/pay/main.py +0 -0
  232. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/trade/__init__.py +0 -0
  233. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/trade/client/__init__.py +0 -0
  234. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/trade/client/api/__init__.py +0 -0
  235. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/trade/client/api/api_keys_api.py +0 -0
  236. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/trade/client/api/bots_api.py +0 -0
  237. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/trade/client/api/exchanges_api.py +0 -0
  238. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/trade/client/api/futures_trading_panel_api.py +0 -0
  239. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/trade/client/api/notifications_api.py +0 -0
  240. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/trade/client/api/orders_api.py +0 -0
  241. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/trade/client/api/status_api.py +0 -0
  242. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/trade/client/api/strategies_api.py +0 -0
  243. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/trade/client/api/trading_actions_api.py +0 -0
  244. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/trade/client/api_client.py +0 -0
  245. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/trade/client/api_response.py +0 -0
  246. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/trade/client/configuration.py +0 -0
  247. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/trade/client/exceptions.py +0 -0
  248. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/trade/client/models/__init__.py +0 -0
  249. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/trade/client/models/action_model.py +0 -0
  250. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/trade/client/models/bot_model.py +0 -0
  251. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/trade/client/models/bot_status.py +0 -0
  252. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/trade/client/models/exception_detail.py +0 -0
  253. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/trade/client/models/exchange_key_model.py +0 -0
  254. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/trade/client/models/execution_ids.py +0 -0
  255. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/trade/client/models/futures_balance.py +0 -0
  256. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/trade/client/models/futures_trading_action.py +0 -0
  257. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/trade/client/models/margin_mode.py +0 -0
  258. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/trade/client/models/notification_model.py +0 -0
  259. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/trade/client/models/order_model.py +0 -0
  260. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/trade/client/models/order_status.py +0 -0
  261. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/trade/client/models/post_futures_action.py +0 -0
  262. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/trade/client/models/spot_trading_action.py +0 -0
  263. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/trade/client/models/strategy_exchange_info.py +0 -0
  264. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/trade/client/models/strategy_model_input.py +0 -0
  265. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/trade/client/models/strategy_model_output.py +0 -0
  266. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/trade/client/models/tpsl.py +0 -0
  267. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/trade/client/models/trading_action_type.py +0 -0
  268. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/trade/client/py.typed +0 -0
  269. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/trade/client/rest.py +0 -0
  270. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn/trade/main.py +0 -0
  271. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn.egg-info/SOURCES.txt +0 -0
  272. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn.egg-info/dependency_links.txt +0 -0
  273. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn.egg-info/entry_points.txt +0 -0
  274. {crypticorn-2.10.2 → crypticorn-2.11.0}/crypticorn.egg-info/top_level.txt +0 -0
  275. {crypticorn-2.10.2 → crypticorn-2.11.0}/requirements/dev.txt +0 -0
  276. {crypticorn-2.10.2 → crypticorn-2.11.0}/requirements/extra.txt +0 -0
  277. {crypticorn-2.10.2 → crypticorn-2.11.0}/requirements/test.txt +0 -0
  278. {crypticorn-2.10.2 → crypticorn-2.11.0}/setup.cfg +0 -0
  279. {crypticorn-2.10.2 → crypticorn-2.11.0}/tests/test_auth_client.py +0 -0
  280. {crypticorn-2.10.2 → crypticorn-2.11.0}/tests/test_config.py +0 -0
  281. {crypticorn-2.10.2 → crypticorn-2.11.0}/tests/test_enums.py +0 -0
  282. {crypticorn-2.10.2 → crypticorn-2.11.0}/tests/test_errors.py +0 -0
  283. {crypticorn-2.10.2 → crypticorn-2.11.0}/tests/test_pagination.py +0 -0
@@ -1,6 +1,37 @@
1
1
  # CHANGELOG
2
2
 
3
3
 
4
+ ## v2.11.0 (2025-05-13)
5
+
6
+ ### Bug Fixes
7
+
8
+ - Use strenum as backport for python < 3.11
9
+ ([`a14589b`](https://github.com/crypticorn-ai/api-client/commit/a14589b7c70a07b2a896526ee373d1136e07c675))
10
+
11
+ ### Continuous Integration
12
+
13
+ - Test on all supported python versions
14
+ ([`63e8006`](https://github.com/crypticorn-ai/api-client/commit/63e8006d2e226ddcf139f5ce25bd7edfc9a99ca3))
15
+
16
+ ### Features
17
+
18
+ - Add support for python 3.9
19
+ ([`d4ca2d2`](https://github.com/crypticorn-ai/api-client/commit/d4ca2d2723091756b31a70c1d851c0ab746b9bde))
20
+
21
+ ### Refactoring
22
+
23
+ - Update type annotations to use Union for compatibility
24
+ ([`4476864`](https://github.com/crypticorn-ai/api-client/commit/4476864fc52be5516e2d187254669b28da6d9202))
25
+
26
+
27
+ ## v2.10.3 (2025-05-12)
28
+
29
+ ### Bug Fixes
30
+
31
+ - Improve market cap symbols df response
32
+ ([`23fac22`](https://github.com/crypticorn-ai/api-client/commit/23fac222e0af61bb8663f99d058ef5f37a7a675a))
33
+
34
+
4
35
  ## v2.10.2 (2025-05-12)
5
36
 
6
37
  ### Bug Fixes
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: crypticorn
3
- Version: 2.10.2
3
+ Version: 2.11.0
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
@@ -32,13 +32,14 @@ Classifier: Programming Language :: Python :: 3.11
32
32
  Classifier: Programming Language :: Python :: 3.12
33
33
  Classifier: Programming Language :: Python :: 3.13
34
34
  Classifier: Typing :: Typed
35
- Requires-Python: >=3.10
35
+ Requires-Python: >=3.9
36
36
  Description-Content-Type: text/markdown
37
37
  License-File: LICENSE
38
38
  Requires-Dist: fastapi<1.0.0,>=0.115.0
39
39
  Requires-Dist: click<9.0.0,>=8.0.0
40
40
  Requires-Dist: psutil<8.0.0,>=7.0.0
41
41
  Requires-Dist: setuptools<81.0.0,>=80.0.0
42
+ Requires-Dist: strenum
42
43
  Requires-Dist: urllib3<3.0.0,>=1.25.3
43
44
  Requires-Dist: python_dateutil<3.0.0,>=2.8.2
44
45
  Requires-Dist: aiohttp<4.0.0,>=3.8.4
@@ -76,7 +77,7 @@ crypto market - and programmatically interact with the entire Crypticorn ecosyst
76
77
 
77
78
  ## Installation
78
79
 
79
- You need Python 3.10+ installed to be able to use this library.
80
+ You need Python 3.9+ installed to be able to use this library.
80
81
 
81
82
  You can install the latest stable version from [PyPi](https://pypi.org/project/crypticorn/):
82
83
  ```bash
@@ -7,7 +7,7 @@ crypto market - and programmatically interact with the entire Crypticorn ecosyst
7
7
 
8
8
  ## Installation
9
9
 
10
- You need Python 3.10+ installed to be able to use this library.
10
+ You need Python 3.9+ installed to be able to use this library.
11
11
 
12
12
  You can install the latest stable version from [PyPi](https://pypi.org/project/crypticorn/):
13
13
  ```bash
@@ -1,5 +1,7 @@
1
- from enum import StrEnum
2
-
1
+ try:
2
+ from enum import StrEnum
3
+ except ImportError:
4
+ from strenum import StrEnum
3
5
 
4
6
  class AnsiColors(StrEnum):
5
7
  """Provides a collection of ANSI color codes for terminal text formatting, including regular, bright, and bold text colors. Useful for creating colorful and readable console output."""
@@ -18,7 +18,7 @@ from fastapi.security import (
18
18
  APIKeyHeader,
19
19
  )
20
20
  from typing_extensions import Annotated
21
-
21
+ from typing import Union
22
22
  # Auth Schemes
23
23
  http_bearer = HTTPBearer(
24
24
  bearerFormat="JWT",
@@ -132,7 +132,7 @@ class AuthHandler:
132
132
 
133
133
  async def api_key_auth(
134
134
  self,
135
- api_key: Annotated[str | None, Depends(apikey_header)] = None,
135
+ api_key: Annotated[Union[str, None], Depends(apikey_header)] = None,
136
136
  sec: SecurityScopes = SecurityScopes(),
137
137
  ) -> Verify200Response:
138
138
  """
@@ -144,7 +144,7 @@ class AuthHandler:
144
144
  async def bearer_auth(
145
145
  self,
146
146
  bearer: Annotated[
147
- HTTPAuthorizationCredentials | None,
147
+ Union[HTTPAuthorizationCredentials, None],
148
148
  Depends(http_bearer),
149
149
  ] = None,
150
150
  sec: SecurityScopes = SecurityScopes(),
@@ -158,9 +158,11 @@ class AuthHandler:
158
158
  async def combined_auth(
159
159
  self,
160
160
  bearer: Annotated[
161
- HTTPAuthorizationCredentials | None, Depends(http_bearer)
161
+ Union[HTTPAuthorizationCredentials, None], Depends(http_bearer)
162
+ ] = None,
163
+ api_key: Annotated[
164
+ Union[str, None], Depends(apikey_header)
162
165
  ] = None,
163
- api_key: Annotated[str | None, Depends(apikey_header)] = None,
164
166
  sec: SecurityScopes = SecurityScopes(),
165
167
  ) -> Verify200Response:
166
168
  """
@@ -202,7 +204,7 @@ class AuthHandler:
202
204
 
203
205
  async def ws_api_key_auth(
204
206
  self,
205
- api_key: Annotated[str | None, Query()] = None,
207
+ api_key: Annotated[Union[str, None], Query()] = None,
206
208
  sec: SecurityScopes = SecurityScopes(),
207
209
  ) -> Verify200Response:
208
210
  """
@@ -213,7 +215,7 @@ class AuthHandler:
213
215
 
214
216
  async def ws_bearer_auth(
215
217
  self,
216
- bearer: Annotated[str | None, Query()] = None,
218
+ bearer: Annotated[Union[str, None], Query()] = None,
217
219
  sec: SecurityScopes = SecurityScopes(),
218
220
  ) -> Verify200Response:
219
221
  """
@@ -224,8 +226,8 @@ class AuthHandler:
224
226
 
225
227
  async def ws_combined_auth(
226
228
  self,
227
- bearer: Annotated[str | None, Query()] = None,
228
- api_key: Annotated[str | None, Query()] = None,
229
+ bearer: Annotated[Union[str, None], Query()] = None,
230
+ api_key: Annotated[Union[str, None], Query()] = None,
229
231
  sec: SecurityScopes = SecurityScopes(),
230
232
  ) -> Verify200Response:
231
233
  """
@@ -1,6 +1,10 @@
1
1
  """Defines common enumerations used throughout the codebase for type safety and consistency."""
2
2
 
3
- from enum import StrEnum
3
+ try:
4
+ from enum import StrEnum
5
+ except ImportError:
6
+ from strenum import StrEnum
7
+
4
8
  from crypticorn.common.mixins import ValidateEnumMixin
5
9
 
6
10
 
@@ -1,8 +1,12 @@
1
1
  """Comprehensive error handling system defining various API error types, HTTP exceptions, and error content structures."""
2
2
 
3
- from enum import Enum, StrEnum
3
+ from enum import Enum
4
4
  from fastapi import status
5
5
  from crypticorn.common.mixins import ApiErrorFallback
6
+ try:
7
+ from enum import StrEnum
8
+ except ImportError:
9
+ from strenum import StrEnum
6
10
 
7
11
 
8
12
  class ApiErrorType(StrEnum):
@@ -1,5 +1,4 @@
1
1
  from typing import Optional, Dict, Any
2
- from enum import StrEnum
3
2
  from pydantic import BaseModel, Field
4
3
  from fastapi import HTTPException as FastAPIHTTPException, Request, FastAPI
5
4
  from fastapi.exceptions import RequestValidationError, ResponseValidationError
@@ -7,6 +6,10 @@ from fastapi.responses import JSONResponse
7
6
  from crypticorn.common import ApiError, ApiErrorIdentifier, ApiErrorType, ApiErrorLevel
8
7
  import logging
9
8
  import json
9
+ try:
10
+ from enum import StrEnum
11
+ except ImportError:
12
+ from strenum import StrEnum
10
13
 
11
14
  _logger = logging.getLogger("crypticorn")
12
15
 
@@ -2,12 +2,16 @@ from __future__ import annotations
2
2
 
3
3
  import logging
4
4
  import sys
5
- from enum import StrEnum
6
5
  from crypticorn.common.mixins import ValidateEnumMixin
7
6
  from crypticorn.common.ansi_colors import AnsiColors as C
8
7
  from datetime import datetime
9
8
  import os
10
9
 
10
+ try:
11
+ from enum import StrEnum
12
+ except ImportError:
13
+ from strenum import StrEnum
14
+
11
15
 
12
16
  class LogLevel(ValidateEnumMixin, StrEnum):
13
17
  DEBUG = "DEBUG"
@@ -1,4 +1,7 @@
1
- from enum import StrEnum
1
+ try:
2
+ from enum import StrEnum
3
+ except ImportError:
4
+ from strenum import StrEnum
2
5
 
3
6
 
4
7
  class Scope(StrEnum):
@@ -1,6 +1,10 @@
1
- from enum import StrEnum
2
1
  from crypticorn.common.enums import ValidateEnumMixin
3
2
 
3
+ try:
4
+ from enum import StrEnum
5
+ except ImportError:
6
+ from strenum import StrEnum
7
+
4
8
 
5
9
  class ApiEnv(StrEnum):
6
10
  """The environment the API is being used with."""
@@ -1,7 +1,7 @@
1
1
  """General utility functions and helper methods used across the codebase."""
2
2
 
3
3
  from datetime import datetime
4
- from typing import Any
4
+ from typing import Any, Union
5
5
  from decimal import Decimal
6
6
  import string
7
7
  import random
@@ -41,8 +41,8 @@ def gen_random_id(length: int = 20) -> str:
41
41
  "The `is_equal` method is deprecated; use `math.is_close` instead.", category=None
42
42
  )
43
43
  def is_equal(
44
- a: float | Decimal,
45
- b: float | Decimal,
44
+ a: Union[float, Decimal],
45
+ b: Union[float, Decimal],
46
46
  rel_tol: float = 1e-9,
47
47
  abs_tol: float = 0.0,
48
48
  ) -> bool:
@@ -1,7 +1,7 @@
1
1
  """Crypticorn-specific warnings."""
2
2
 
3
3
  from __future__ import annotations
4
-
4
+ from typing import Union
5
5
 
6
6
  class CrypticornDeprecationWarning(DeprecationWarning):
7
7
  """A Crypticorn specific deprecation warning.
@@ -24,7 +24,7 @@ class CrypticornDeprecationWarning(DeprecationWarning):
24
24
  message: str,
25
25
  *args: object,
26
26
  since: tuple[int, int],
27
- expected_removal: tuple[int, int] | None = None,
27
+ expected_removal: Union[tuple[int, int], None] = None,
28
28
  ) -> None:
29
29
  super().__init__(message, *args)
30
30
  self.message = message.rstrip(".")
@@ -51,8 +51,12 @@ class MarketcapApiWrapper(MarketcapApi):
51
51
  """
52
52
  pd = optional_import("pandas", "extra")
53
53
  response = await self.get_marketcap_symbols(*args, **kwargs)
54
- df = pd.DataFrame(response)
55
- df.rename(columns={df.columns[0]: "timestamp"}, inplace=True)
54
+ rows = []
55
+ for item in response:
56
+ row = {"timestamp": item.timestamp}
57
+ row.update({i+1: sym for i, sym in enumerate(item.symbols)})
58
+ rows.append(row)
59
+ df = pd.DataFrame(rows)
56
60
  return df
57
61
 
58
62
 
@@ -100,9 +104,6 @@ class ExchangesApiWrapper(ExchangesApi):
100
104
  cols = ["timestamp"] + sorted([col for col in df.columns if col != "timestamp"])
101
105
  df = df[cols]
102
106
 
103
- # Convert timestamp to unix timestamp
104
- df["timestamp"] = pd.to_datetime(df["timestamp"]).astype("int64") // 10**9
105
-
106
107
  # Convert exchange availability to boolean integers (0/1)
107
108
  df = df.astype(
108
109
  {
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: crypticorn
3
- Version: 2.10.2
3
+ Version: 2.11.0
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
@@ -32,13 +32,14 @@ Classifier: Programming Language :: Python :: 3.11
32
32
  Classifier: Programming Language :: Python :: 3.12
33
33
  Classifier: Programming Language :: Python :: 3.13
34
34
  Classifier: Typing :: Typed
35
- Requires-Python: >=3.10
35
+ Requires-Python: >=3.9
36
36
  Description-Content-Type: text/markdown
37
37
  License-File: LICENSE
38
38
  Requires-Dist: fastapi<1.0.0,>=0.115.0
39
39
  Requires-Dist: click<9.0.0,>=8.0.0
40
40
  Requires-Dist: psutil<8.0.0,>=7.0.0
41
41
  Requires-Dist: setuptools<81.0.0,>=80.0.0
42
+ Requires-Dist: strenum
42
43
  Requires-Dist: urllib3<3.0.0,>=1.25.3
43
44
  Requires-Dist: python_dateutil<3.0.0,>=2.8.2
44
45
  Requires-Dist: aiohttp<4.0.0,>=3.8.4
@@ -76,7 +77,7 @@ crypto market - and programmatically interact with the entire Crypticorn ecosyst
76
77
 
77
78
  ## Installation
78
79
 
79
- You need Python 3.10+ installed to be able to use this library.
80
+ You need Python 3.9+ installed to be able to use this library.
80
81
 
81
82
  You can install the latest stable version from [PyPi](https://pypi.org/project/crypticorn/):
82
83
  ```bash
@@ -2,6 +2,7 @@ fastapi<1.0.0,>=0.115.0
2
2
  click<9.0.0,>=8.0.0
3
3
  psutil<8.0.0,>=7.0.0
4
4
  setuptools<81.0.0,>=80.0.0
5
+ strenum
5
6
  urllib3<3.0.0,>=1.25.3
6
7
  python_dateutil<3.0.0,>=2.8.2
7
8
  aiohttp<4.0.0,>=3.8.4
@@ -3,9 +3,9 @@ name = "crypticorn"
3
3
  description = "Maximise Your Crypto Trading Profits with Machine Learning"
4
4
  readme = "README.md"
5
5
  license = {file = 'LICENSE'}
6
- requires-python = ">=3.10"
6
+ requires-python = ">=3.9"
7
7
  authors = [{name = "Crypticorn", email = "timon@crypticorn.com"}]
8
- version = "2.10.2"
8
+ version = "2.11.0"
9
9
  keywords = ["machine learning", "data science", "crypto", "modelling"]
10
10
  dynamic = ["dependencies", "optional-dependencies"]
11
11
 
@@ -3,6 +3,7 @@ fastapi>=0.115.0, < 1.0.0
3
3
  click >= 8.0.0, < 9.0.0
4
4
  psutil >= 7.0.0, < 8.0.0
5
5
  setuptools >= 80.0.0, < 81.0.0
6
+ strenum # drop this once we drop python 3.10, StrEnum is available in stdlib (enum) in 3.11+
6
7
 
7
8
  # crypticorn/trade/requirements.txt
8
9
  urllib3 >= 1.25.3, < 3.0.0
File without changes
File without changes