crypticorn 2.17.0rc1__tar.gz → 2.17.0rc3__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 (327) hide show
  1. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/CHANGELOG.md +33 -0
  2. {crypticorn-2.17.0rc1/crypticorn.egg-info → crypticorn-2.17.0rc3}/PKG-INFO +64 -20
  3. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/README.md +62 -20
  4. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/__init__.py +2 -2
  5. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/auth/client/api/admin_api.py +415 -13
  6. crypticorn-2.17.0rc3/crypticorn/auth/client/api/auth_api.py +5575 -0
  7. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/auth/client/api/service_api.py +258 -7
  8. crypticorn-2.17.0rc3/crypticorn/auth/client/api/user_api.py +5002 -0
  9. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/auth/client/api/wallet_api.py +1518 -77
  10. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/auth/client/models/create_api_key_request.py +2 -1
  11. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/auth/client/models/get_api_keys200_response_inner.py +2 -1
  12. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/auth/client/rest.py +23 -4
  13. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/auth/main.py +8 -5
  14. crypticorn-2.17.0rc3/crypticorn/client.py +330 -0
  15. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/common/__init__.py +0 -1
  16. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/common/auth.py +2 -1
  17. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/common/metrics.py +4 -6
  18. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/common/middleware.py +10 -5
  19. crypticorn-2.17.0rc3/crypticorn/common/pagination.py +172 -0
  20. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/common/router/admin_router.py +1 -1
  21. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/common/utils.py +2 -1
  22. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/common/warnings.py +1 -0
  23. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/hive/client/api/admin_api.py +1234 -51
  24. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/hive/client/api/data_api.py +517 -13
  25. crypticorn-2.17.0rc3/crypticorn/hive/client/api/models_api.py +3460 -0
  26. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/hive/client/api/status_api.py +415 -13
  27. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/hive/client/models/api_error_identifier.py +1 -1
  28. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/hive/client/rest.py +23 -4
  29. crypticorn-2.17.0rc3/crypticorn/hive/main.py +172 -0
  30. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/klines/client/api/admin_api.py +1234 -51
  31. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/klines/client/api/change_in_timeframe_api.py +278 -7
  32. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/klines/client/api/funding_rates_api.py +324 -7
  33. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/klines/client/api/ohlcv_data_api.py +399 -7
  34. crypticorn-2.17.0rc3/crypticorn/klines/client/api/status_api.py +910 -0
  35. crypticorn-2.17.0rc1/crypticorn/klines/client/api/status_api.py → crypticorn-2.17.0rc3/crypticorn/klines/client/api/symbols_api.py +206 -213
  36. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/klines/client/api/udf_api.py +1393 -120
  37. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/klines/client/models/api_error_identifier.py +3 -1
  38. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/klines/client/rest.py +23 -4
  39. crypticorn-2.17.0rc3/crypticorn/klines/main.py +178 -0
  40. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/metrics/client/api/admin_api.py +1234 -51
  41. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/metrics/client/api/exchanges_api.py +1405 -140
  42. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/metrics/client/api/indicators_api.py +640 -13
  43. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/metrics/client/api/logs_api.py +305 -7
  44. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/metrics/client/api/marketcap_api.py +1240 -60
  45. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/metrics/client/api/markets_api.py +352 -7
  46. crypticorn-2.17.0rc1/crypticorn/metrics/client/api/tokens_api.py → crypticorn-2.17.0rc3/crypticorn/metrics/client/api/quote_currencies_api.py +223 -194
  47. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/metrics/client/api/status_api.py +415 -13
  48. crypticorn-2.17.0rc1/crypticorn/trade/client/api/exchanges_api.py → crypticorn-2.17.0rc3/crypticorn/metrics/client/api/tokens_api.py +381 -222
  49. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/metrics/client/configuration.py +4 -2
  50. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/metrics/client/rest.py +23 -4
  51. crypticorn-2.17.0rc3/crypticorn/metrics/main.py +206 -0
  52. crypticorn-2.17.0rc1/crypticorn/auth/client/api/auth_api.py → crypticorn-2.17.0rc3/crypticorn/pay/client/api/admin_api.py +1500 -1517
  53. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/pay/client/api/now_payments_api.py +1013 -42
  54. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/pay/client/api/payments_api.py +580 -13
  55. crypticorn-2.17.0rc1/crypticorn/hive/client/api/models_api.py → crypticorn-2.17.0rc3/crypticorn/pay/client/api/products_api.py +1045 -963
  56. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/pay/client/api/status_api.py +415 -13
  57. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/pay/client/configuration.py +2 -2
  58. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/pay/client/models/api_error_identifier.py +7 -7
  59. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/pay/client/models/scope.py +1 -0
  60. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/pay/client/rest.py +23 -4
  61. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/pay/main.py +10 -6
  62. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/trade/client/__init__.py +2 -1
  63. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/trade/client/api/__init__.py +0 -1
  64. crypticorn-2.17.0rc1/crypticorn/auth/client/api/user_api.py → crypticorn-2.17.0rc3/crypticorn/trade/client/api/admin_api.py +1524 -1261
  65. crypticorn-2.17.0rc3/crypticorn/trade/client/api/api_keys_api.py +2824 -0
  66. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/trade/client/api/bots_api.py +1106 -47
  67. crypticorn-2.17.0rc1/crypticorn/trade/client/api/futures_trading_panel_api.py → crypticorn-2.17.0rc3/crypticorn/trade/client/api/exchanges_api.py +548 -542
  68. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/trade/client/api/notifications_api.py +1340 -112
  69. crypticorn-2.17.0rc1/crypticorn/trade/client/api/status_api.py → crypticorn-2.17.0rc3/crypticorn/trade/client/api/orders_api.py +237 -213
  70. crypticorn-2.17.0rc1/crypticorn/trade/client/api/trading_actions_api.py → crypticorn-2.17.0rc3/crypticorn/trade/client/api/status_api.py +410 -304
  71. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/trade/client/api/strategies_api.py +1170 -69
  72. crypticorn-2.17.0rc1/crypticorn/trade/client/api/api_keys_api.py → crypticorn-2.17.0rc3/crypticorn/trade/client/api/trading_actions_api.py +690 -586
  73. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/trade/client/models/__init__.py +2 -0
  74. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/trade/client/models/exchange.py +6 -1
  75. crypticorn-2.17.0rc3/crypticorn/trade/client/models/exchange_key_balance.py +111 -0
  76. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/trade/client/models/futures_balance.py +27 -25
  77. crypticorn-2.17.0rc3/crypticorn/trade/client/models/spot_balance.py +110 -0
  78. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/trade/client/models/strategy.py +5 -3
  79. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/trade/client/models/strategy_create.py +6 -4
  80. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/trade/client/models/strategy_exchange_info.py +16 -4
  81. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/trade/client/models/strategy_update.py +2 -2
  82. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/trade/client/rest.py +23 -4
  83. crypticorn-2.17.0rc3/crypticorn/trade/main.py +47 -0
  84. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3/crypticorn.egg-info}/PKG-INFO +64 -20
  85. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn.egg-info/SOURCES.txt +8 -3
  86. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn.egg-info/requires.txt +2 -0
  87. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/pyproject.toml +1 -1
  88. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/requirements/main.txt +1 -0
  89. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/requirements/test.txt +1 -0
  90. crypticorn-2.17.0rc3/tests/test_async_client.py +189 -0
  91. crypticorn-2.17.0rc1/tests/test_custom_session.py → crypticorn-2.17.0rc3/tests/test_async_custom_session.py +10 -10
  92. crypticorn-2.17.0rc3/tests/test_common_routers.py +111 -0
  93. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/tests/test_config.py +3 -3
  94. crypticorn-2.17.0rc3/tests/test_pagination.py +161 -0
  95. crypticorn-2.17.0rc3/tests/test_sync_client.py +96 -0
  96. crypticorn-2.17.0rc3/tests/test_sync_custom_session.py +190 -0
  97. crypticorn-2.17.0rc1/crypticorn/client.py +0 -162
  98. crypticorn-2.17.0rc1/crypticorn/common/pagination.py +0 -53
  99. crypticorn-2.17.0rc1/crypticorn/hive/main.py +0 -98
  100. crypticorn-2.17.0rc1/crypticorn/klines/client/api/symbols_api.py +0 -283
  101. crypticorn-2.17.0rc1/crypticorn/klines/main.py +0 -101
  102. crypticorn-2.17.0rc1/crypticorn/metrics/client/api/quote_currencies_api.py +0 -289
  103. crypticorn-2.17.0rc1/crypticorn/metrics/main.py +0 -112
  104. crypticorn-2.17.0rc1/crypticorn/pay/client/api/admin_api.py +0 -1455
  105. crypticorn-2.17.0rc1/crypticorn/pay/client/api/products_api.py +0 -1078
  106. crypticorn-2.17.0rc1/crypticorn/trade/client/api/admin_api.py +0 -1455
  107. crypticorn-2.17.0rc1/crypticorn/trade/client/api/orders_api.py +0 -299
  108. crypticorn-2.17.0rc1/crypticorn/trade/main.py +0 -44
  109. crypticorn-2.17.0rc1/tests/test_pagination.py +0 -62
  110. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/LICENSE +0 -0
  111. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/MANIFEST.in +0 -0
  112. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/auth/__init__.py +0 -0
  113. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/auth/client/__init__.py +0 -0
  114. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/auth/client/api/__init__.py +0 -0
  115. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/auth/client/api_client.py +0 -0
  116. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/auth/client/api_response.py +0 -0
  117. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/auth/client/configuration.py +0 -0
  118. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/auth/client/exceptions.py +0 -0
  119. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/auth/client/models/__init__.py +0 -0
  120. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/auth/client/models/add_wallet200_response.py +0 -0
  121. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/auth/client/models/add_wallet_request.py +0 -0
  122. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/auth/client/models/authorize_user200_response.py +0 -0
  123. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/auth/client/models/authorize_user200_response_auth.py +0 -0
  124. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/auth/client/models/authorize_user_request.py +0 -0
  125. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/auth/client/models/create_api_key200_response.py +0 -0
  126. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/auth/client/models/create_user_request.py +0 -0
  127. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/auth/client/models/list_wallets200_response.py +0 -0
  128. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/auth/client/models/list_wallets200_response_balances_inner.py +0 -0
  129. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/auth/client/models/list_wallets200_response_balances_inner_sale_round.py +0 -0
  130. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/auth/client/models/list_wallets200_response_balances_inner_wallet.py +0 -0
  131. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/auth/client/models/list_wallets200_response_balances_inner_wallet_vesting_wallets_inner.py +0 -0
  132. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/auth/client/models/list_wallets200_response_data_inner.py +0 -0
  133. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/auth/client/models/list_wallets200_response_user_value.py +0 -0
  134. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/auth/client/models/logout_default_response.py +0 -0
  135. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/auth/client/models/logout_default_response_issues_inner.py +0 -0
  136. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/auth/client/models/oauth_callback200_response.py +0 -0
  137. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/auth/client/models/oauth_callback200_response_user.py +0 -0
  138. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/auth/client/models/refresh_token_info200_response.py +0 -0
  139. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/auth/client/models/refresh_token_info200_response_user_session.py +0 -0
  140. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/auth/client/models/resend_verification_email_request.py +0 -0
  141. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/auth/client/models/revoke_user_tokens_request.py +0 -0
  142. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/auth/client/models/rotate_tokens200_response.py +0 -0
  143. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/auth/client/models/token_info200_response.py +0 -0
  144. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/auth/client/models/unlink_wallet_request.py +0 -0
  145. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/auth/client/models/update_user_request.py +0 -0
  146. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/auth/client/models/user_by_username200_response.py +0 -0
  147. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/auth/client/models/user_reset_password_request.py +0 -0
  148. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/auth/client/models/user_set_password_request.py +0 -0
  149. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/auth/client/models/verify200_response.py +0 -0
  150. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/auth/client/models/verify_email200_response.py +0 -0
  151. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/auth/client/models/verify_email200_response_auth.py +0 -0
  152. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/auth/client/models/verify_email200_response_auth_auth.py +0 -0
  153. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/auth/client/models/verify_email_request.py +0 -0
  154. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/auth/client/models/verify_wallet_request.py +0 -0
  155. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/auth/client/models/wallet_verified200_response.py +0 -0
  156. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/auth/client/models/whoami200_response.py +0 -0
  157. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/auth/client/py.typed +0 -0
  158. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/cli/__init__.py +0 -0
  159. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/cli/__main__.py +0 -0
  160. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/cli/init.py +0 -0
  161. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/cli/templates/Dockerfile +0 -0
  162. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/cli/templates/__init__.py +0 -0
  163. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/cli/templates/auth.py +0 -0
  164. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/cli/templates/dependabot.yml +0 -0
  165. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/cli/templates/merge-env.sh +0 -0
  166. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/cli/templates/ruff.yml +0 -0
  167. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/cli/version.py +0 -0
  168. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/common/ansi_colors.py +0 -0
  169. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/common/decorators.py +0 -0
  170. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/common/enums.py +0 -0
  171. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/common/errors.py +0 -0
  172. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/common/exceptions.py +0 -0
  173. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/common/logging.py +0 -0
  174. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/common/mixins.py +0 -0
  175. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/common/openapi.py +0 -0
  176. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/common/router/status_router.py +0 -0
  177. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/common/scopes.py +0 -0
  178. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/common/urls.py +0 -0
  179. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/hive/__init__.py +0 -0
  180. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/hive/client/__init__.py +0 -0
  181. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/hive/client/api/__init__.py +0 -0
  182. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/hive/client/api_client.py +0 -0
  183. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/hive/client/api_response.py +0 -0
  184. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/hive/client/configuration.py +0 -0
  185. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/hive/client/exceptions.py +0 -0
  186. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/hive/client/models/__init__.py +0 -0
  187. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/hive/client/models/api_error_level.py +0 -0
  188. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/hive/client/models/api_error_type.py +0 -0
  189. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/hive/client/models/coin_info.py +0 -0
  190. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/hive/client/models/coins.py +0 -0
  191. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/hive/client/models/data_download_response.py +0 -0
  192. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/hive/client/models/data_info.py +0 -0
  193. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/hive/client/models/data_options.py +0 -0
  194. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/hive/client/models/data_version.py +0 -0
  195. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/hive/client/models/data_version_info.py +0 -0
  196. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/hive/client/models/download_links.py +0 -0
  197. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/hive/client/models/evaluation.py +0 -0
  198. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/hive/client/models/evaluation_response.py +0 -0
  199. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/hive/client/models/exception_detail.py +0 -0
  200. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/hive/client/models/feature_size.py +0 -0
  201. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/hive/client/models/log_level.py +0 -0
  202. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/hive/client/models/model_create.py +0 -0
  203. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/hive/client/models/model_read.py +0 -0
  204. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/hive/client/models/model_status.py +0 -0
  205. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/hive/client/models/model_update.py +0 -0
  206. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/hive/client/models/target.py +0 -0
  207. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/hive/client/models/target_info.py +0 -0
  208. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/hive/client/models/target_type.py +0 -0
  209. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/hive/client/py.typed +0 -0
  210. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/hive/utils.py +0 -0
  211. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/klines/__init__.py +0 -0
  212. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/klines/client/__init__.py +0 -0
  213. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/klines/client/api/__init__.py +0 -0
  214. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/klines/client/api_client.py +0 -0
  215. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/klines/client/api_response.py +0 -0
  216. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/klines/client/configuration.py +0 -0
  217. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/klines/client/exceptions.py +0 -0
  218. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/klines/client/models/__init__.py +0 -0
  219. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/klines/client/models/api_error_level.py +0 -0
  220. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/klines/client/models/api_error_type.py +0 -0
  221. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/klines/client/models/change_in_timeframe.py +0 -0
  222. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/klines/client/models/exception_detail.py +0 -0
  223. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/klines/client/models/funding_rate.py +0 -0
  224. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/klines/client/models/funding_rate_response.py +0 -0
  225. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/klines/client/models/internal_exchange.py +0 -0
  226. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/klines/client/models/log_level.py +0 -0
  227. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/klines/client/models/market_type.py +0 -0
  228. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/klines/client/models/ohlcv.py +0 -0
  229. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/klines/client/models/resolution.py +0 -0
  230. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/klines/client/models/search_symbol.py +0 -0
  231. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/klines/client/models/sort_direction.py +0 -0
  232. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/klines/client/models/symbol_group.py +0 -0
  233. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/klines/client/models/symbol_info.py +0 -0
  234. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/klines/client/models/symbol_type.py +0 -0
  235. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/klines/client/models/timeframe.py +0 -0
  236. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/klines/client/models/udf_config.py +0 -0
  237. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/klines/client/py.typed +0 -0
  238. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/metrics/__init__.py +0 -0
  239. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/metrics/client/__init__.py +0 -0
  240. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/metrics/client/api/__init__.py +0 -0
  241. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/metrics/client/api_client.py +0 -0
  242. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/metrics/client/api_response.py +0 -0
  243. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/metrics/client/exceptions.py +0 -0
  244. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/metrics/client/models/__init__.py +0 -0
  245. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/metrics/client/models/api_error_identifier.py +0 -0
  246. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/metrics/client/models/api_error_level.py +0 -0
  247. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/metrics/client/models/api_error_type.py +0 -0
  248. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/metrics/client/models/exception_detail.py +0 -0
  249. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/metrics/client/models/exchange_availability.py +0 -0
  250. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/metrics/client/models/exchange_mapping.py +0 -0
  251. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/metrics/client/models/internal_exchange.py +0 -0
  252. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/metrics/client/models/log_level.py +0 -0
  253. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/metrics/client/models/market_type.py +0 -0
  254. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/metrics/client/models/marketcap_ranking.py +0 -0
  255. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/metrics/client/models/marketcap_symbol_ranking.py +0 -0
  256. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/metrics/client/models/ohlcv.py +0 -0
  257. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/metrics/client/models/severity.py +0 -0
  258. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/metrics/client/models/time_interval.py +0 -0
  259. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/metrics/client/models/trading_status.py +0 -0
  260. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/metrics/client/py.typed +0 -0
  261. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/pay/__init__.py +0 -0
  262. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/pay/client/__init__.py +0 -0
  263. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/pay/client/api/__init__.py +0 -0
  264. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/pay/client/api_client.py +0 -0
  265. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/pay/client/api_response.py +0 -0
  266. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/pay/client/exceptions.py +0 -0
  267. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/pay/client/models/__init__.py +0 -0
  268. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/pay/client/models/api_error_level.py +0 -0
  269. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/pay/client/models/api_error_type.py +0 -0
  270. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/pay/client/models/exception_detail.py +0 -0
  271. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/pay/client/models/log_level.py +0 -0
  272. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/pay/client/models/now_create_invoice_req.py +0 -0
  273. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/pay/client/models/now_create_invoice_res.py +0 -0
  274. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/pay/client/models/payment.py +0 -0
  275. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/pay/client/models/payment_status.py +0 -0
  276. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/pay/client/models/product.py +0 -0
  277. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/pay/client/models/product_create.py +0 -0
  278. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/pay/client/models/product_update.py +0 -0
  279. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/pay/client/models/provider.py +0 -0
  280. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/pay/client/models/subscription.py +0 -0
  281. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/pay/client/py.typed +0 -0
  282. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/trade/__init__.py +0 -0
  283. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/trade/client/api_client.py +0 -0
  284. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/trade/client/api_response.py +0 -0
  285. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/trade/client/configuration.py +0 -0
  286. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/trade/client/exceptions.py +0 -0
  287. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/trade/client/models/api_error_identifier.py +0 -0
  288. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/trade/client/models/api_error_level.py +0 -0
  289. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/trade/client/models/api_error_type.py +0 -0
  290. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/trade/client/models/bot.py +0 -0
  291. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/trade/client/models/bot_create.py +0 -0
  292. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/trade/client/models/bot_status.py +0 -0
  293. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/trade/client/models/bot_update.py +0 -0
  294. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/trade/client/models/exception_detail.py +0 -0
  295. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/trade/client/models/exchange_key.py +0 -0
  296. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/trade/client/models/exchange_key_create.py +0 -0
  297. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/trade/client/models/exchange_key_update.py +0 -0
  298. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/trade/client/models/execution_ids.py +0 -0
  299. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/trade/client/models/futures_trading_action.py +0 -0
  300. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/trade/client/models/futures_trading_action_create.py +0 -0
  301. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/trade/client/models/log_level.py +0 -0
  302. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/trade/client/models/margin_mode.py +0 -0
  303. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/trade/client/models/market_type.py +0 -0
  304. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/trade/client/models/notification.py +0 -0
  305. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/trade/client/models/notification_create.py +0 -0
  306. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/trade/client/models/notification_update.py +0 -0
  307. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/trade/client/models/order.py +0 -0
  308. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/trade/client/models/order_status.py +0 -0
  309. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/trade/client/models/post_futures_action.py +0 -0
  310. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/trade/client/models/spot_trading_action_create.py +0 -0
  311. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/trade/client/models/tpsl.py +0 -0
  312. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/trade/client/models/tpsl_create.py +0 -0
  313. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/trade/client/models/trading_action_type.py +0 -0
  314. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn/trade/client/py.typed +0 -0
  315. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn.egg-info/dependency_links.txt +0 -0
  316. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn.egg-info/entry_points.txt +0 -0
  317. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/crypticorn.egg-info/top_level.txt +0 -0
  318. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/requirements/dev.txt +0 -0
  319. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/requirements/extra.txt +0 -0
  320. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/setup.cfg +0 -0
  321. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/static/favicon.svg +0 -0
  322. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/static/logo.svg +0 -0
  323. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/static/pip-structure.drawio +0 -0
  324. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/static/pip-structure.svg +0 -0
  325. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/tests/test_auth_client.py +0 -0
  326. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/tests/test_enums.py +0 -0
  327. {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc3}/tests/test_errors.py +0 -0
@@ -1,6 +1,39 @@
1
1
  # CHANGELOG
2
2
 
3
3
 
4
+ ## v2.17.0-rc.3 (2025-06-05)
5
+
6
+ ### Bug Fixes
7
+
8
+ - Fixes bearer auth in websocket
9
+ ([`cb2f5f0`](https://github.com/crypticorn-ai/api-client/commit/cb2f5f07be25b8009f734de0d4bfdd4dd8b5c357))
10
+
11
+
12
+ ## v2.17.0-rc.2 (2025-06-05)
13
+
14
+ ### Documentation
15
+
16
+ - Document SyncClient support
17
+ ([`8935d22`](https://github.com/crypticorn-ai/api-client/commit/8935d221afe6cb6da2529a05341e104b98bb9fbb))
18
+
19
+ ### Features
20
+
21
+ - Add support for pagination, sorting and filtering query parameters
22
+ ([`3afcf2b`](https://github.com/crypticorn-ai/api-client/commit/3afcf2bb8eff65a1c38c738f19e7480550f91798))
23
+
24
+ - Add support for synchronous usage with `SyncClient`. Both API clients are compatible with each
25
+ other.
26
+ ([`02e7622`](https://github.com/crypticorn-ai/api-client/commit/02e7622669bd590a853b12c9aa10183db06a73f1))
27
+
28
+ - Deprecate ApiClient for Async and SyncClient
29
+ ([`a00b450`](https://github.com/crypticorn-ai/api-client/commit/a00b4502197fb2287aca893042d197d5f9811076))
30
+
31
+ ### Testing
32
+
33
+ - Improve tests for pagination query params
34
+ ([`de1f82a`](https://github.com/crypticorn-ai/api-client/commit/de1f82ae6f5461e172459ec4558dd29c0b2646ad))
35
+
36
+
4
37
  ## v2.17.0-rc.1 (2025-06-01)
5
38
 
6
39
  ### Features
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: crypticorn
3
- Version: 2.17.0rc1
3
+ Version: 2.17.0rc3
4
4
  Summary: Maximise Your Crypto Trading Profits with Machine Learning
5
5
  Author-email: Crypticorn <timon@crypticorn.com>
6
6
  License-Expression: MIT
@@ -26,6 +26,7 @@ Requires-Dist: psutil<8.0.0,>=7.0.0
26
26
  Requires-Dist: setuptools<81.0.0,>=80.0.0
27
27
  Requires-Dist: strenum
28
28
  Requires-Dist: prometheus-client<1.0.0,>=0.22.0
29
+ Requires-Dist: asgiref<4.0.0,>=3.6.0
29
30
  Requires-Dist: urllib3<3.0.0,>=1.25.3
30
31
  Requires-Dist: python_dateutil<3.0.0,>=2.8.2
31
32
  Requires-Dist: aiohttp<4.0.0,>=3.8.4
@@ -50,6 +51,7 @@ Requires-Dist: pytest-asyncio==0.26.0; extra == "test"
50
51
  Requires-Dist: pytest-cov==6.1.1; extra == "test"
51
52
  Requires-Dist: python-dotenv==1.0.1; extra == "test"
52
53
  Requires-Dist: PyJWT==2.10.0; extra == "test"
54
+ Requires-Dist: httpx>=0.27.0; extra == "test"
53
55
  Provides-Extra: extra
54
56
  Requires-Dist: pandas<3.0.0,>=2.2.0; extra == "extra"
55
57
  Dynamic: license-file
@@ -79,11 +81,15 @@ You can install extra dependencies grouped in the extras `extra`, `dev` (develop
79
81
 
80
82
  ## Structure
81
83
 
82
- Our API is available as an asynchronous Python SDK. The main entry point you need is the `ApiClient` class, which you would import like this:
84
+ Our API is available as both an asynchronous and synchronous Python SDK. The main entry points are:
85
+
86
+ - `AsyncClient` - Asynchronous client for async/await usage
87
+ - `SyncClient` - Synchronous client for traditional blocking calls
88
+
83
89
  ```python
84
- from crypticorn import ApiClient
90
+ from crypticorn import AsyncClient, SyncClient
85
91
  ```
86
- 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:
92
+ Both clients serve as the central interface for API operations and instantiate multiple API wrappers corresponding to our micro services. These are structured the following:
87
93
 
88
94
  <img src="static/pip-structure.svg" alt="pip package structure" />
89
95
 
@@ -111,20 +117,22 @@ There are scopes which don't follow this structure. Those are either scopes that
111
117
 
112
118
  ## Basic Usage
113
119
 
114
- You can use the client with the async context protocol...
120
+ ### Asynchronous Client
121
+
122
+ You can use the async client with the context manager protocol...
115
123
  ```python
116
- async with ApiClient(api_key="your-api-key") as client:
117
- await client.pay.products.get_products()
124
+ async with AsyncClient(api_key="your-api-key") as client:
125
+ await client.pay.products.get_products()
118
126
  ```
119
127
  ...or without it like this...
120
128
  ```python
121
- client = ApiClient(api_key="your-api-key")
122
- asyncio.run(client.pay.models.get_products())
129
+ client = AsyncClient(api_key="your-api-key")
130
+ asyncio.run(client.pay.products.get_products())
123
131
  asyncio.run(client.close())
124
132
  ```
125
133
  ...or this.
126
134
  ```python
127
- client = ApiClient(api_key="your-api-key")
135
+ client = AsyncClient(api_key="your-api-key")
128
136
 
129
137
  async def main():
130
138
  await client.pay.products.get_products()
@@ -133,6 +141,29 @@ asyncio.run(main())
133
141
  asyncio.run(client.close())
134
142
  ```
135
143
 
144
+ ### Synchronous Client
145
+
146
+ For traditional synchronous usage without async/await, use the `SyncClient`:
147
+
148
+ ```python
149
+ from crypticorn import SyncClient
150
+
151
+ # With context manager (recommended)
152
+ with SyncClient(api_key="your-api-key") as client:
153
+ products = client.pay.products.get_products()
154
+ status = client.trade.status.ping()
155
+
156
+ # Or without context manager
157
+ client = SyncClient(api_key="your-api-key")
158
+ try:
159
+ products = client.pay.products.get_products()
160
+ status = client.trade.status.ping()
161
+ finally:
162
+ client.close() # Manual cleanup required
163
+ ```
164
+
165
+ The sync client provides the same API surface as the async client, but all methods return results directly instead of coroutines. Under the hood, it uses `asgiref.async_to_sync` to bridge async operations to synchronous calls, ensuring reliable operation without requiring async/await syntax.
166
+
136
167
  ## Response Types
137
168
 
138
169
  There are three different available output formats you can choose from:
@@ -140,7 +171,10 @@ There are three different available output formats you can choose from:
140
171
  ### Serialized Response
141
172
  You can get fully serialized responses as pydantic models. Using this, you get the full benefits of pydantic's type checking.
142
173
  ```python
174
+ # Async client
143
175
  res = await client.pay.products.get_products()
176
+ # Sync client
177
+ res = client.pay.products.get_products()
144
178
  print(res)
145
179
  ```
146
180
  The output would look like this:
@@ -150,7 +184,10 @@ The output would look like this:
150
184
 
151
185
  ### Serialized Response with HTTP Info
152
186
  ```python
187
+ # Async client
153
188
  res = await client.pay.products.get_products_with_http_info()
189
+ # Sync client
190
+ res = client.pay.products.get_products_with_http_info()
154
191
  print(res)
155
192
  ```
156
193
  The output would look like this:
@@ -171,8 +208,12 @@ print(res.headers)
171
208
  ### JSON Response
172
209
  You can receive a classical JSON response by suffixing the function name with `_without_preload_content`
173
210
  ```python
211
+ # Async client
174
212
  response = await client.pay.products.get_products_without_preload_content()
175
213
  print(await response.json())
214
+
215
+ # Sync client - Note: use regular methods instead as response.json() returns a coroutine
216
+ response = client.pay.products.get_products_without_preload_content()
176
217
  ```
177
218
  The output would look like this:
178
219
  ```python
@@ -202,33 +243,34 @@ To override e.g. the host for the Hive client to connect to localhost:8000 inste
202
243
  from crypticorn.hive import Configuration as HiveConfig
203
244
  from crypticorn.common import Service
204
245
 
205
- async with ApiClient() as client:
246
+ # Async client
247
+ async with AsyncClient() as client:
248
+ client.configure(config=HiveConfig(host="http://localhost:8000"), service=Service.HIVE)
249
+
250
+ # Sync client
251
+ with SyncClient() as client:
206
252
  client.configure(config=HiveConfig(host="http://localhost:8000"), service=Service.HIVE)
207
253
  ```
208
254
 
209
255
  ### Session Management
210
256
 
211
- By default, `ApiClient` manages a single shared `aiohttp.ClientSession` for all service wrappers.
257
+ By default, `AsyncClient` manages a single shared `aiohttp.ClientSession` for all service wrappers.
212
258
  However, you can pass your own pre-configured `aiohttp.ClientSession` if you need advanced control — for example, to add retries, custom headers, logging, or mocking behavior.
213
259
 
214
260
  When you inject a custom session, you are responsible for managing its lifecycle, including closing when you're done.
215
261
 
216
262
  ```python
217
263
  import aiohttp
218
- from crypticorn import ApiClient
264
+ from crypticorn import AsyncClient
219
265
 
220
266
  async def main():
221
267
  custom_session = aiohttp.ClientSession()
222
- async with ApiClient(api_key="your-key", http_client=custom_session) as client:
268
+ async with AsyncClient(api_key="your-key", http_client=custom_session) as client:
223
269
  await client.trade.status.ping()
224
270
  await custom_session.close()
225
- # or
226
- custom_session = aiohttp.ClientSession()
227
- client = ApiClient(api_key="your-key", http_client=custom_session)
228
- await client.trade.status.ping()
229
- await custom_session.close()
271
+
230
272
  ```
231
- If you don’t pass a session, `ApiClient` will create and manage one internally. In that case, it will be automatically closed when using `async with` or when calling `await client.close()` manually.
273
+ If you don’t pass a session, `AsyncClient` will create and manage one internally. In that case, it will be automatically closed when using `async with` or when calling `await client.close()` manually.
232
274
 
233
275
  ### Disable Logging
234
276
 
@@ -238,3 +280,5 @@ In case you don't want any logging statements by the `crypticorn` logger to be l
238
280
  from crypticorn.common import disable_logging
239
281
  disable_logging()
240
282
  ```
283
+
284
+ **Note on Sync Client**: The `SyncClient` uses per-operation sessions (creates and closes a session for each API call) to ensure reliable synchronous behavior. Custom sessions are accepted but not used. This approach prevents event loop conflicts at the cost of slightly higher overhead per operation.
@@ -23,11 +23,15 @@ You can install extra dependencies grouped in the extras `extra`, `dev` (develop
23
23
 
24
24
  ## Structure
25
25
 
26
- Our API is available as an asynchronous Python SDK. The main entry point you need is the `ApiClient` class, which you would import like this:
26
+ Our API is available as both an asynchronous and synchronous Python SDK. The main entry points are:
27
+
28
+ - `AsyncClient` - Asynchronous client for async/await usage
29
+ - `SyncClient` - Synchronous client for traditional blocking calls
30
+
27
31
  ```python
28
- from crypticorn import ApiClient
32
+ from crypticorn import AsyncClient, SyncClient
29
33
  ```
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:
34
+ Both clients serve as the central interface for API operations and instantiate multiple API wrappers corresponding to our micro services. These are structured the following:
31
35
 
32
36
  <img src="static/pip-structure.svg" alt="pip package structure" />
33
37
 
@@ -55,20 +59,22 @@ There are scopes which don't follow this structure. Those are either scopes that
55
59
 
56
60
  ## Basic Usage
57
61
 
58
- You can use the client with the async context protocol...
62
+ ### Asynchronous Client
63
+
64
+ You can use the async client with the context manager protocol...
59
65
  ```python
60
- async with ApiClient(api_key="your-api-key") as client:
61
- await client.pay.products.get_products()
66
+ async with AsyncClient(api_key="your-api-key") as client:
67
+ await client.pay.products.get_products()
62
68
  ```
63
69
  ...or without it like this...
64
70
  ```python
65
- client = ApiClient(api_key="your-api-key")
66
- asyncio.run(client.pay.models.get_products())
71
+ client = AsyncClient(api_key="your-api-key")
72
+ asyncio.run(client.pay.products.get_products())
67
73
  asyncio.run(client.close())
68
74
  ```
69
75
  ...or this.
70
76
  ```python
71
- client = ApiClient(api_key="your-api-key")
77
+ client = AsyncClient(api_key="your-api-key")
72
78
 
73
79
  async def main():
74
80
  await client.pay.products.get_products()
@@ -77,6 +83,29 @@ asyncio.run(main())
77
83
  asyncio.run(client.close())
78
84
  ```
79
85
 
86
+ ### Synchronous Client
87
+
88
+ For traditional synchronous usage without async/await, use the `SyncClient`:
89
+
90
+ ```python
91
+ from crypticorn import SyncClient
92
+
93
+ # With context manager (recommended)
94
+ with SyncClient(api_key="your-api-key") as client:
95
+ products = client.pay.products.get_products()
96
+ status = client.trade.status.ping()
97
+
98
+ # Or without context manager
99
+ client = SyncClient(api_key="your-api-key")
100
+ try:
101
+ products = client.pay.products.get_products()
102
+ status = client.trade.status.ping()
103
+ finally:
104
+ client.close() # Manual cleanup required
105
+ ```
106
+
107
+ The sync client provides the same API surface as the async client, but all methods return results directly instead of coroutines. Under the hood, it uses `asgiref.async_to_sync` to bridge async operations to synchronous calls, ensuring reliable operation without requiring async/await syntax.
108
+
80
109
  ## Response Types
81
110
 
82
111
  There are three different available output formats you can choose from:
@@ -84,7 +113,10 @@ There are three different available output formats you can choose from:
84
113
  ### Serialized Response
85
114
  You can get fully serialized responses as pydantic models. Using this, you get the full benefits of pydantic's type checking.
86
115
  ```python
116
+ # Async client
87
117
  res = await client.pay.products.get_products()
118
+ # Sync client
119
+ res = client.pay.products.get_products()
88
120
  print(res)
89
121
  ```
90
122
  The output would look like this:
@@ -94,7 +126,10 @@ The output would look like this:
94
126
 
95
127
  ### Serialized Response with HTTP Info
96
128
  ```python
129
+ # Async client
97
130
  res = await client.pay.products.get_products_with_http_info()
131
+ # Sync client
132
+ res = client.pay.products.get_products_with_http_info()
98
133
  print(res)
99
134
  ```
100
135
  The output would look like this:
@@ -115,8 +150,12 @@ print(res.headers)
115
150
  ### JSON Response
116
151
  You can receive a classical JSON response by suffixing the function name with `_without_preload_content`
117
152
  ```python
153
+ # Async client
118
154
  response = await client.pay.products.get_products_without_preload_content()
119
155
  print(await response.json())
156
+
157
+ # Sync client - Note: use regular methods instead as response.json() returns a coroutine
158
+ response = client.pay.products.get_products_without_preload_content()
120
159
  ```
121
160
  The output would look like this:
122
161
  ```python
@@ -146,33 +185,34 @@ To override e.g. the host for the Hive client to connect to localhost:8000 inste
146
185
  from crypticorn.hive import Configuration as HiveConfig
147
186
  from crypticorn.common import Service
148
187
 
149
- async with ApiClient() as client:
188
+ # Async client
189
+ async with AsyncClient() as client:
190
+ client.configure(config=HiveConfig(host="http://localhost:8000"), service=Service.HIVE)
191
+
192
+ # Sync client
193
+ with SyncClient() as client:
150
194
  client.configure(config=HiveConfig(host="http://localhost:8000"), service=Service.HIVE)
151
195
  ```
152
196
 
153
197
  ### Session Management
154
198
 
155
- By default, `ApiClient` manages a single shared `aiohttp.ClientSession` for all service wrappers.
199
+ By default, `AsyncClient` manages a single shared `aiohttp.ClientSession` for all service wrappers.
156
200
  However, you can pass your own pre-configured `aiohttp.ClientSession` if you need advanced control — for example, to add retries, custom headers, logging, or mocking behavior.
157
201
 
158
202
  When you inject a custom session, you are responsible for managing its lifecycle, including closing when you're done.
159
203
 
160
204
  ```python
161
205
  import aiohttp
162
- from crypticorn import ApiClient
206
+ from crypticorn import AsyncClient
163
207
 
164
208
  async def main():
165
209
  custom_session = aiohttp.ClientSession()
166
- async with ApiClient(api_key="your-key", http_client=custom_session) as client:
210
+ async with AsyncClient(api_key="your-key", http_client=custom_session) as client:
167
211
  await client.trade.status.ping()
168
212
  await custom_session.close()
169
- # or
170
- custom_session = aiohttp.ClientSession()
171
- client = ApiClient(api_key="your-key", http_client=custom_session)
172
- await client.trade.status.ping()
173
- await custom_session.close()
213
+
174
214
  ```
175
- If you don’t pass a session, `ApiClient` will create and manage one internally. In that case, it will be automatically closed when using `async with` or when calling `await client.close()` manually.
215
+ If you don’t pass a session, `AsyncClient` will create and manage one internally. In that case, it will be automatically closed when using `async with` or when calling `await client.close()` manually.
176
216
 
177
217
  ### Disable Logging
178
218
 
@@ -181,4 +221,6 @@ In case you don't want any logging statements by the `crypticorn` logger to be l
181
221
  ```python
182
222
  from crypticorn.common import disable_logging
183
223
  disable_logging()
184
- ```
224
+ ```
225
+
226
+ **Note on Sync Client**: The `SyncClient` uses per-operation sessions (creates and closes a session for each API call) to ensure reliable synchronous behavior. Custom sessions are accepted but not used. This approach prevents event loop conflicts at the cost of slightly higher overhead per operation.
@@ -14,6 +14,6 @@ warnings.filterwarnings("default", "", DeprecationWarning)
14
14
  configure_logging()
15
15
  logging.captureWarnings(True)
16
16
 
17
- from crypticorn.client import ApiClient
17
+ from crypticorn.client import AsyncClient, SyncClient, ApiClient
18
18
 
19
- __all__ = ["ApiClient"]
19
+ __all__ = ["AsyncClient", "SyncClient", "ApiClient"]