crypticorn 2.17.0rc2__tar.gz → 2.17.0rc4__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 (314) hide show
  1. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/CHANGELOG.md +26 -0
  2. {crypticorn-2.17.0rc2/crypticorn.egg-info → crypticorn-2.17.0rc4}/PKG-INFO +1 -1
  3. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/common/auth.py +7 -14
  4. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/common/pagination.py +21 -0
  5. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4/crypticorn.egg-info}/PKG-INFO +1 -1
  6. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/pyproject.toml +1 -1
  7. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/tests/test_auth_client.py +2 -2
  8. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/LICENSE +0 -0
  9. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/MANIFEST.in +0 -0
  10. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/README.md +0 -0
  11. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/__init__.py +0 -0
  12. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/__init__.py +0 -0
  13. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/__init__.py +0 -0
  14. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/api/__init__.py +0 -0
  15. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/api/admin_api.py +0 -0
  16. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/api/auth_api.py +0 -0
  17. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/api/service_api.py +0 -0
  18. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/api/user_api.py +0 -0
  19. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/api/wallet_api.py +0 -0
  20. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/api_client.py +0 -0
  21. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/api_response.py +0 -0
  22. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/configuration.py +0 -0
  23. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/exceptions.py +0 -0
  24. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/models/__init__.py +0 -0
  25. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/models/add_wallet200_response.py +0 -0
  26. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/models/add_wallet_request.py +0 -0
  27. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/models/authorize_user200_response.py +0 -0
  28. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/models/authorize_user200_response_auth.py +0 -0
  29. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/models/authorize_user_request.py +0 -0
  30. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/models/create_api_key200_response.py +0 -0
  31. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/models/create_api_key_request.py +0 -0
  32. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/models/create_user_request.py +0 -0
  33. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/models/get_api_keys200_response_inner.py +0 -0
  34. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/models/list_wallets200_response.py +0 -0
  35. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/models/list_wallets200_response_balances_inner.py +0 -0
  36. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/models/list_wallets200_response_balances_inner_sale_round.py +0 -0
  37. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/models/list_wallets200_response_balances_inner_wallet.py +0 -0
  38. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/models/list_wallets200_response_balances_inner_wallet_vesting_wallets_inner.py +0 -0
  39. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/models/list_wallets200_response_data_inner.py +0 -0
  40. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/models/list_wallets200_response_user_value.py +0 -0
  41. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/models/logout_default_response.py +0 -0
  42. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/models/logout_default_response_issues_inner.py +0 -0
  43. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/models/oauth_callback200_response.py +0 -0
  44. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/models/oauth_callback200_response_user.py +0 -0
  45. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/models/refresh_token_info200_response.py +0 -0
  46. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/models/refresh_token_info200_response_user_session.py +0 -0
  47. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/models/resend_verification_email_request.py +0 -0
  48. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/models/revoke_user_tokens_request.py +0 -0
  49. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/models/rotate_tokens200_response.py +0 -0
  50. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/models/token_info200_response.py +0 -0
  51. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/models/unlink_wallet_request.py +0 -0
  52. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/models/update_user_request.py +0 -0
  53. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/models/user_by_username200_response.py +0 -0
  54. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/models/user_reset_password_request.py +0 -0
  55. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/models/user_set_password_request.py +0 -0
  56. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/models/verify200_response.py +0 -0
  57. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/models/verify_email200_response.py +0 -0
  58. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/models/verify_email200_response_auth.py +0 -0
  59. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/models/verify_email200_response_auth_auth.py +0 -0
  60. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/models/verify_email_request.py +0 -0
  61. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/models/verify_wallet_request.py +0 -0
  62. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/models/wallet_verified200_response.py +0 -0
  63. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/models/whoami200_response.py +0 -0
  64. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/py.typed +0 -0
  65. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/rest.py +0 -0
  66. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/main.py +0 -0
  67. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/cli/__init__.py +0 -0
  68. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/cli/__main__.py +0 -0
  69. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/cli/init.py +0 -0
  70. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/cli/templates/Dockerfile +0 -0
  71. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/cli/templates/__init__.py +0 -0
  72. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/cli/templates/auth.py +0 -0
  73. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/cli/templates/dependabot.yml +0 -0
  74. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/cli/templates/merge-env.sh +0 -0
  75. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/cli/templates/ruff.yml +0 -0
  76. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/cli/version.py +0 -0
  77. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/client.py +0 -0
  78. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/common/__init__.py +0 -0
  79. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/common/ansi_colors.py +0 -0
  80. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/common/decorators.py +0 -0
  81. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/common/enums.py +0 -0
  82. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/common/errors.py +0 -0
  83. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/common/exceptions.py +0 -0
  84. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/common/logging.py +0 -0
  85. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/common/metrics.py +0 -0
  86. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/common/middleware.py +0 -0
  87. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/common/mixins.py +0 -0
  88. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/common/openapi.py +0 -0
  89. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/common/router/admin_router.py +0 -0
  90. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/common/router/status_router.py +0 -0
  91. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/common/scopes.py +0 -0
  92. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/common/urls.py +0 -0
  93. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/common/utils.py +0 -0
  94. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/common/warnings.py +0 -0
  95. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/hive/__init__.py +0 -0
  96. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/hive/client/__init__.py +0 -0
  97. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/hive/client/api/__init__.py +0 -0
  98. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/hive/client/api/admin_api.py +0 -0
  99. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/hive/client/api/data_api.py +0 -0
  100. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/hive/client/api/models_api.py +0 -0
  101. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/hive/client/api/status_api.py +0 -0
  102. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/hive/client/api_client.py +0 -0
  103. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/hive/client/api_response.py +0 -0
  104. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/hive/client/configuration.py +0 -0
  105. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/hive/client/exceptions.py +0 -0
  106. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/hive/client/models/__init__.py +0 -0
  107. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/hive/client/models/api_error_identifier.py +0 -0
  108. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/hive/client/models/api_error_level.py +0 -0
  109. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/hive/client/models/api_error_type.py +0 -0
  110. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/hive/client/models/coin_info.py +0 -0
  111. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/hive/client/models/coins.py +0 -0
  112. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/hive/client/models/data_download_response.py +0 -0
  113. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/hive/client/models/data_info.py +0 -0
  114. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/hive/client/models/data_options.py +0 -0
  115. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/hive/client/models/data_version.py +0 -0
  116. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/hive/client/models/data_version_info.py +0 -0
  117. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/hive/client/models/download_links.py +0 -0
  118. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/hive/client/models/evaluation.py +0 -0
  119. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/hive/client/models/evaluation_response.py +0 -0
  120. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/hive/client/models/exception_detail.py +0 -0
  121. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/hive/client/models/feature_size.py +0 -0
  122. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/hive/client/models/log_level.py +0 -0
  123. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/hive/client/models/model_create.py +0 -0
  124. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/hive/client/models/model_read.py +0 -0
  125. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/hive/client/models/model_status.py +0 -0
  126. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/hive/client/models/model_update.py +0 -0
  127. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/hive/client/models/target.py +0 -0
  128. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/hive/client/models/target_info.py +0 -0
  129. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/hive/client/models/target_type.py +0 -0
  130. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/hive/client/py.typed +0 -0
  131. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/hive/client/rest.py +0 -0
  132. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/hive/main.py +0 -0
  133. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/hive/utils.py +0 -0
  134. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/klines/__init__.py +0 -0
  135. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/klines/client/__init__.py +0 -0
  136. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/klines/client/api/__init__.py +0 -0
  137. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/klines/client/api/admin_api.py +0 -0
  138. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/klines/client/api/change_in_timeframe_api.py +0 -0
  139. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/klines/client/api/funding_rates_api.py +0 -0
  140. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/klines/client/api/ohlcv_data_api.py +0 -0
  141. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/klines/client/api/status_api.py +0 -0
  142. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/klines/client/api/symbols_api.py +0 -0
  143. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/klines/client/api/udf_api.py +0 -0
  144. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/klines/client/api_client.py +0 -0
  145. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/klines/client/api_response.py +0 -0
  146. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/klines/client/configuration.py +0 -0
  147. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/klines/client/exceptions.py +0 -0
  148. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/klines/client/models/__init__.py +0 -0
  149. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/klines/client/models/api_error_identifier.py +0 -0
  150. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/klines/client/models/api_error_level.py +0 -0
  151. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/klines/client/models/api_error_type.py +0 -0
  152. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/klines/client/models/change_in_timeframe.py +0 -0
  153. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/klines/client/models/exception_detail.py +0 -0
  154. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/klines/client/models/funding_rate.py +0 -0
  155. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/klines/client/models/funding_rate_response.py +0 -0
  156. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/klines/client/models/internal_exchange.py +0 -0
  157. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/klines/client/models/log_level.py +0 -0
  158. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/klines/client/models/market_type.py +0 -0
  159. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/klines/client/models/ohlcv.py +0 -0
  160. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/klines/client/models/resolution.py +0 -0
  161. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/klines/client/models/search_symbol.py +0 -0
  162. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/klines/client/models/sort_direction.py +0 -0
  163. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/klines/client/models/symbol_group.py +0 -0
  164. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/klines/client/models/symbol_info.py +0 -0
  165. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/klines/client/models/symbol_type.py +0 -0
  166. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/klines/client/models/timeframe.py +0 -0
  167. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/klines/client/models/udf_config.py +0 -0
  168. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/klines/client/py.typed +0 -0
  169. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/klines/client/rest.py +0 -0
  170. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/klines/main.py +0 -0
  171. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/metrics/__init__.py +0 -0
  172. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/metrics/client/__init__.py +0 -0
  173. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/metrics/client/api/__init__.py +0 -0
  174. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/metrics/client/api/admin_api.py +0 -0
  175. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/metrics/client/api/exchanges_api.py +0 -0
  176. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/metrics/client/api/indicators_api.py +0 -0
  177. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/metrics/client/api/logs_api.py +0 -0
  178. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/metrics/client/api/marketcap_api.py +0 -0
  179. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/metrics/client/api/markets_api.py +0 -0
  180. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/metrics/client/api/quote_currencies_api.py +0 -0
  181. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/metrics/client/api/status_api.py +0 -0
  182. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/metrics/client/api/tokens_api.py +0 -0
  183. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/metrics/client/api_client.py +0 -0
  184. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/metrics/client/api_response.py +0 -0
  185. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/metrics/client/configuration.py +0 -0
  186. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/metrics/client/exceptions.py +0 -0
  187. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/metrics/client/models/__init__.py +0 -0
  188. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/metrics/client/models/api_error_identifier.py +0 -0
  189. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/metrics/client/models/api_error_level.py +0 -0
  190. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/metrics/client/models/api_error_type.py +0 -0
  191. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/metrics/client/models/exception_detail.py +0 -0
  192. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/metrics/client/models/exchange_availability.py +0 -0
  193. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/metrics/client/models/exchange_mapping.py +0 -0
  194. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/metrics/client/models/internal_exchange.py +0 -0
  195. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/metrics/client/models/log_level.py +0 -0
  196. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/metrics/client/models/market_type.py +0 -0
  197. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/metrics/client/models/marketcap_ranking.py +0 -0
  198. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/metrics/client/models/marketcap_symbol_ranking.py +0 -0
  199. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/metrics/client/models/ohlcv.py +0 -0
  200. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/metrics/client/models/severity.py +0 -0
  201. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/metrics/client/models/time_interval.py +0 -0
  202. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/metrics/client/models/trading_status.py +0 -0
  203. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/metrics/client/py.typed +0 -0
  204. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/metrics/client/rest.py +0 -0
  205. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/metrics/main.py +0 -0
  206. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/pay/__init__.py +0 -0
  207. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/pay/client/__init__.py +0 -0
  208. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/pay/client/api/__init__.py +0 -0
  209. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/pay/client/api/admin_api.py +0 -0
  210. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/pay/client/api/now_payments_api.py +0 -0
  211. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/pay/client/api/payments_api.py +0 -0
  212. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/pay/client/api/products_api.py +0 -0
  213. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/pay/client/api/status_api.py +0 -0
  214. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/pay/client/api_client.py +0 -0
  215. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/pay/client/api_response.py +0 -0
  216. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/pay/client/configuration.py +0 -0
  217. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/pay/client/exceptions.py +0 -0
  218. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/pay/client/models/__init__.py +0 -0
  219. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/pay/client/models/api_error_identifier.py +0 -0
  220. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/pay/client/models/api_error_level.py +0 -0
  221. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/pay/client/models/api_error_type.py +0 -0
  222. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/pay/client/models/exception_detail.py +0 -0
  223. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/pay/client/models/log_level.py +0 -0
  224. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/pay/client/models/now_create_invoice_req.py +0 -0
  225. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/pay/client/models/now_create_invoice_res.py +0 -0
  226. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/pay/client/models/payment.py +0 -0
  227. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/pay/client/models/payment_status.py +0 -0
  228. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/pay/client/models/product.py +0 -0
  229. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/pay/client/models/product_create.py +0 -0
  230. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/pay/client/models/product_update.py +0 -0
  231. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/pay/client/models/provider.py +0 -0
  232. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/pay/client/models/scope.py +0 -0
  233. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/pay/client/models/subscription.py +0 -0
  234. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/pay/client/py.typed +0 -0
  235. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/pay/client/rest.py +0 -0
  236. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/pay/main.py +0 -0
  237. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/__init__.py +0 -0
  238. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/__init__.py +0 -0
  239. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/api/__init__.py +0 -0
  240. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/api/admin_api.py +0 -0
  241. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/api/api_keys_api.py +0 -0
  242. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/api/bots_api.py +0 -0
  243. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/api/exchanges_api.py +0 -0
  244. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/api/notifications_api.py +0 -0
  245. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/api/orders_api.py +0 -0
  246. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/api/status_api.py +0 -0
  247. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/api/strategies_api.py +0 -0
  248. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/api/trading_actions_api.py +0 -0
  249. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/api_client.py +0 -0
  250. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/api_response.py +0 -0
  251. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/configuration.py +0 -0
  252. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/exceptions.py +0 -0
  253. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/models/__init__.py +0 -0
  254. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/models/api_error_identifier.py +0 -0
  255. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/models/api_error_level.py +0 -0
  256. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/models/api_error_type.py +0 -0
  257. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/models/bot.py +0 -0
  258. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/models/bot_create.py +0 -0
  259. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/models/bot_status.py +0 -0
  260. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/models/bot_update.py +0 -0
  261. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/models/exception_detail.py +0 -0
  262. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/models/exchange.py +0 -0
  263. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/models/exchange_key.py +0 -0
  264. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/models/exchange_key_balance.py +0 -0
  265. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/models/exchange_key_create.py +0 -0
  266. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/models/exchange_key_update.py +0 -0
  267. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/models/execution_ids.py +0 -0
  268. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/models/futures_balance.py +0 -0
  269. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/models/futures_trading_action.py +0 -0
  270. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/models/futures_trading_action_create.py +0 -0
  271. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/models/log_level.py +0 -0
  272. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/models/margin_mode.py +0 -0
  273. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/models/market_type.py +0 -0
  274. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/models/notification.py +0 -0
  275. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/models/notification_create.py +0 -0
  276. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/models/notification_update.py +0 -0
  277. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/models/order.py +0 -0
  278. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/models/order_status.py +0 -0
  279. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/models/post_futures_action.py +0 -0
  280. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/models/spot_balance.py +0 -0
  281. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/models/spot_trading_action_create.py +0 -0
  282. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/models/strategy.py +0 -0
  283. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/models/strategy_create.py +0 -0
  284. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/models/strategy_exchange_info.py +0 -0
  285. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/models/strategy_update.py +0 -0
  286. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/models/tpsl.py +0 -0
  287. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/models/tpsl_create.py +0 -0
  288. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/models/trading_action_type.py +0 -0
  289. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/py.typed +0 -0
  290. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/rest.py +0 -0
  291. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/main.py +0 -0
  292. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn.egg-info/SOURCES.txt +0 -0
  293. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn.egg-info/dependency_links.txt +0 -0
  294. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn.egg-info/entry_points.txt +0 -0
  295. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn.egg-info/requires.txt +0 -0
  296. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn.egg-info/top_level.txt +0 -0
  297. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/requirements/dev.txt +0 -0
  298. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/requirements/extra.txt +0 -0
  299. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/requirements/main.txt +0 -0
  300. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/requirements/test.txt +0 -0
  301. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/setup.cfg +0 -0
  302. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/static/favicon.svg +0 -0
  303. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/static/logo.svg +0 -0
  304. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/static/pip-structure.drawio +0 -0
  305. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/static/pip-structure.svg +0 -0
  306. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/tests/test_async_client.py +0 -0
  307. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/tests/test_async_custom_session.py +0 -0
  308. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/tests/test_common_routers.py +0 -0
  309. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/tests/test_config.py +0 -0
  310. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/tests/test_enums.py +0 -0
  311. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/tests/test_errors.py +0 -0
  312. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/tests/test_pagination.py +0 -0
  313. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/tests/test_sync_client.py +0 -0
  314. {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/tests/test_sync_custom_session.py +0 -0
@@ -1,6 +1,32 @@
1
1
  # CHANGELOG
2
2
 
3
3
 
4
+ ## v2.17.0-rc.4 (2025-06-06)
5
+
6
+ ### Features
7
+
8
+ - Add `last` attribute and helper functions to paginated responses
9
+ ([`fe29d0c`](https://github.com/crypticorn-ai/api-client/commit/fe29d0cb1da60c0fa2dc86f9f0ec54e8d035293d))
10
+
11
+ ### Refactoring
12
+
13
+ - Add message to invalid_bearer exception
14
+ ([`5578140`](https://github.com/crypticorn-ai/api-client/commit/557814099f6c37ce015c0ad8e5989266f332e834))
15
+
16
+ ### Testing
17
+
18
+ - Update websocket authentication test
19
+ ([`4f727d5`](https://github.com/crypticorn-ai/api-client/commit/4f727d545ab7275e7f3dc8e45b1ed2f0270e4038))
20
+
21
+
22
+ ## v2.17.0-rc.3 (2025-06-05)
23
+
24
+ ### Bug Fixes
25
+
26
+ - Fixes bearer auth in websocket
27
+ ([`cb2f5f0`](https://github.com/crypticorn-ai/api-client/commit/cb2f5f07be25b8009f734de0d4bfdd4dd8b5c357))
28
+
29
+
4
30
  ## v2.17.0-rc.2 (2025-06-05)
5
31
 
6
32
  ### Documentation
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: crypticorn
3
- Version: 2.17.0rc2
3
+ Version: 2.17.0rc4
4
4
  Summary: Maximise Your Crypto Trading Profits with Machine Learning
5
5
  Author-email: Crypticorn <timon@crypticorn.com>
6
6
  License-Expression: MIT
@@ -112,6 +112,7 @@ class AuthHandler:
112
112
  elif message == "jwt expired":
113
113
  error = ApiError.EXPIRED_BEARER
114
114
  else:
115
+ message = "Invalid bearer token"
115
116
  error = (
116
117
  ApiError.INVALID_BEARER
117
118
  ) # jwt malformed, jwt not active (https://www.npmjs.com/package/jsonwebtoken#errors--codes)
@@ -234,10 +235,7 @@ class AuthHandler:
234
235
  Use this function if you only want to allow access via the API key.
235
236
  This function is used for WebSocket connections.
236
237
  """
237
- try:
238
- return await self.api_key_auth(api_key=api_key, sec=sec)
239
- except HTTPException as e:
240
- raise WebSocketException.from_http_exception(e)
238
+ return await self.api_key_auth(api_key=api_key, sec=sec)
241
239
 
242
240
  async def ws_bearer_auth(
243
241
  self,
@@ -249,10 +247,8 @@ class AuthHandler:
249
247
  Use this function if you only want to allow access via the bearer token.
250
248
  This function is used for WebSocket connections.
251
249
  """
252
- try:
253
- return await self.bearer_auth(bearer=bearer, sec=sec)
254
- except HTTPException as e:
255
- raise WebSocketException.from_http_exception(e)
250
+ credentials = HTTPAuthorizationCredentials(scheme="Bearer", credentials=bearer)
251
+ return await self.bearer_auth(bearer=credentials, sec=sec)
256
252
 
257
253
  async def ws_combined_auth(
258
254
  self,
@@ -270,9 +266,6 @@ class AuthHandler:
270
266
  if bearer
271
267
  else None
272
268
  )
273
- try:
274
- return await self.combined_auth(
275
- bearer=credentials, api_key=api_key, sec=sec
276
- )
277
- except HTTPException as e:
278
- raise WebSocketException.from_http_exception(e)
269
+ return await self.combined_auth(
270
+ bearer=credentials, api_key=api_key, sec=sec
271
+ )
@@ -2,6 +2,7 @@
2
2
 
3
3
  from typing import Annotated, Any, Generic, Type, TypeVar, Optional, Literal
4
4
  from pydantic import BaseModel, Field, model_validator
5
+ import math
5
6
 
6
7
  T = TypeVar("T")
7
8
 
@@ -17,6 +18,26 @@ class PaginatedResponse(BaseModel, Generic[T]):
17
18
  page_size: int = Field(description="The number of items per page")
18
19
  prev: Optional[int] = Field(None, description="The previous page number")
19
20
  next: Optional[int] = Field(None, description="The next page number")
21
+ last: Optional[int] = Field(None, description="The last page number")
22
+
23
+ @staticmethod
24
+ def get_next_page(total: int, page_size: int, page: int) -> Optional[int]:
25
+ """Get the next page number"""
26
+ if page < math.ceil(total / page_size):
27
+ return page + 1
28
+ return None
29
+
30
+ @staticmethod
31
+ def get_prev_page(page: int) -> Optional[int]:
32
+ """Get the previous page number"""
33
+ if page > 1:
34
+ return page - 1
35
+ return None
36
+
37
+ @staticmethod
38
+ def get_last_page(total: int, page_size: int) -> int:
39
+ """Get the last page number"""
40
+ return max(1, math.ceil(total / page_size))
20
41
 
21
42
 
22
43
  class PaginationParams(BaseModel, Generic[T]):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: crypticorn
3
- Version: 2.17.0rc2
3
+ Version: 2.17.0rc4
4
4
  Summary: Maximise Your Crypto Trading Profits with Machine Learning
5
5
  Author-email: Crypticorn <timon@crypticorn.com>
6
6
  License-Expression: MIT
@@ -5,7 +5,7 @@ readme = "README.md"
5
5
  license = "MIT"
6
6
  requires-python = ">=3.9"
7
7
  authors = [{name = "Crypticorn", email = "timon@crypticorn.com"}]
8
- version = "2.17.0-rc.2"
8
+ version = "2.17.0-rc.4"
9
9
  keywords = ["machine learning", "data science", "crypto", "modelling"]
10
10
  dynamic = ["dependencies", "optional-dependencies"]
11
11
 
@@ -153,7 +153,7 @@ async def test_combined_auth_with_expired_api_key(auth_handler: AuthHandler):
153
153
  @pytest.mark.asyncio
154
154
  async def test_ws_combined_auth_websocket_exception(auth_handler: AuthHandler):
155
155
  """Without credentials"""
156
- with pytest.raises(WebSocketException) as e:
156
+ with pytest.raises(HTTPException) as e:
157
157
  return await auth_handler.ws_combined_auth(bearer=None, api_key=None)
158
- assert e.value.status_code == 1008
158
+ assert e.value.status_code == 401
159
159
  assert e.value.detail.get("code") == ApiError.NO_CREDENTIALS.identifier
File without changes
File without changes