crypticorn 2.17.0rc1__tar.gz → 2.17.0rc2__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.
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/CHANGELOG.md +25 -0
- {crypticorn-2.17.0rc1/crypticorn.egg-info → crypticorn-2.17.0rc2}/PKG-INFO +64 -20
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/README.md +62 -20
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/__init__.py +2 -2
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/auth/client/api/admin_api.py +415 -13
- crypticorn-2.17.0rc2/crypticorn/auth/client/api/auth_api.py +5575 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/auth/client/api/service_api.py +258 -7
- crypticorn-2.17.0rc2/crypticorn/auth/client/api/user_api.py +5002 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/auth/client/api/wallet_api.py +1518 -77
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/auth/client/models/create_api_key_request.py +2 -1
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/auth/client/models/get_api_keys200_response_inner.py +2 -1
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/auth/client/rest.py +23 -4
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/auth/main.py +8 -5
- crypticorn-2.17.0rc2/crypticorn/client.py +330 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/common/__init__.py +0 -1
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/common/metrics.py +4 -6
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/common/middleware.py +10 -5
- crypticorn-2.17.0rc2/crypticorn/common/pagination.py +172 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/common/router/admin_router.py +1 -1
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/common/utils.py +2 -1
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/common/warnings.py +1 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/hive/client/api/admin_api.py +1234 -51
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/hive/client/api/data_api.py +517 -13
- crypticorn-2.17.0rc2/crypticorn/hive/client/api/models_api.py +3460 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/hive/client/api/status_api.py +415 -13
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/hive/client/models/api_error_identifier.py +1 -1
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/hive/client/rest.py +23 -4
- crypticorn-2.17.0rc2/crypticorn/hive/main.py +172 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/klines/client/api/admin_api.py +1234 -51
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/klines/client/api/change_in_timeframe_api.py +278 -7
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/klines/client/api/funding_rates_api.py +324 -7
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/klines/client/api/ohlcv_data_api.py +399 -7
- crypticorn-2.17.0rc2/crypticorn/klines/client/api/status_api.py +910 -0
- crypticorn-2.17.0rc1/crypticorn/klines/client/api/status_api.py → crypticorn-2.17.0rc2/crypticorn/klines/client/api/symbols_api.py +206 -213
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/klines/client/api/udf_api.py +1393 -120
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/klines/client/models/api_error_identifier.py +3 -1
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/klines/client/rest.py +23 -4
- crypticorn-2.17.0rc2/crypticorn/klines/main.py +178 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/metrics/client/api/admin_api.py +1234 -51
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/metrics/client/api/exchanges_api.py +1405 -140
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/metrics/client/api/indicators_api.py +640 -13
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/metrics/client/api/logs_api.py +305 -7
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/metrics/client/api/marketcap_api.py +1240 -60
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/metrics/client/api/markets_api.py +352 -7
- crypticorn-2.17.0rc1/crypticorn/metrics/client/api/tokens_api.py → crypticorn-2.17.0rc2/crypticorn/metrics/client/api/quote_currencies_api.py +223 -194
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/metrics/client/api/status_api.py +415 -13
- crypticorn-2.17.0rc1/crypticorn/trade/client/api/exchanges_api.py → crypticorn-2.17.0rc2/crypticorn/metrics/client/api/tokens_api.py +381 -222
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/metrics/client/configuration.py +4 -2
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/metrics/client/rest.py +23 -4
- crypticorn-2.17.0rc2/crypticorn/metrics/main.py +206 -0
- crypticorn-2.17.0rc1/crypticorn/auth/client/api/auth_api.py → crypticorn-2.17.0rc2/crypticorn/pay/client/api/admin_api.py +1500 -1517
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/pay/client/api/now_payments_api.py +1013 -42
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/pay/client/api/payments_api.py +580 -13
- crypticorn-2.17.0rc1/crypticorn/hive/client/api/models_api.py → crypticorn-2.17.0rc2/crypticorn/pay/client/api/products_api.py +1045 -963
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/pay/client/api/status_api.py +415 -13
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/pay/client/configuration.py +2 -2
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/pay/client/models/api_error_identifier.py +7 -7
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/pay/client/models/scope.py +1 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/pay/client/rest.py +23 -4
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/pay/main.py +10 -6
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/trade/client/__init__.py +2 -1
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/trade/client/api/__init__.py +0 -1
- crypticorn-2.17.0rc1/crypticorn/auth/client/api/user_api.py → crypticorn-2.17.0rc2/crypticorn/trade/client/api/admin_api.py +1524 -1261
- crypticorn-2.17.0rc2/crypticorn/trade/client/api/api_keys_api.py +2824 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/trade/client/api/bots_api.py +1106 -47
- crypticorn-2.17.0rc1/crypticorn/trade/client/api/futures_trading_panel_api.py → crypticorn-2.17.0rc2/crypticorn/trade/client/api/exchanges_api.py +548 -542
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/trade/client/api/notifications_api.py +1340 -112
- crypticorn-2.17.0rc1/crypticorn/trade/client/api/status_api.py → crypticorn-2.17.0rc2/crypticorn/trade/client/api/orders_api.py +237 -213
- crypticorn-2.17.0rc1/crypticorn/trade/client/api/trading_actions_api.py → crypticorn-2.17.0rc2/crypticorn/trade/client/api/status_api.py +410 -304
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/trade/client/api/strategies_api.py +1170 -69
- crypticorn-2.17.0rc1/crypticorn/trade/client/api/api_keys_api.py → crypticorn-2.17.0rc2/crypticorn/trade/client/api/trading_actions_api.py +690 -586
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/trade/client/models/__init__.py +2 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/trade/client/models/exchange.py +6 -1
- crypticorn-2.17.0rc2/crypticorn/trade/client/models/exchange_key_balance.py +111 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/trade/client/models/futures_balance.py +27 -25
- crypticorn-2.17.0rc2/crypticorn/trade/client/models/spot_balance.py +110 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/trade/client/models/strategy.py +5 -3
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/trade/client/models/strategy_create.py +6 -4
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/trade/client/models/strategy_exchange_info.py +16 -4
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/trade/client/models/strategy_update.py +2 -2
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/trade/client/rest.py +23 -4
- crypticorn-2.17.0rc2/crypticorn/trade/main.py +47 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2/crypticorn.egg-info}/PKG-INFO +64 -20
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn.egg-info/SOURCES.txt +8 -3
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn.egg-info/requires.txt +2 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/pyproject.toml +1 -1
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/requirements/main.txt +1 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/requirements/test.txt +1 -0
- crypticorn-2.17.0rc2/tests/test_async_client.py +189 -0
- crypticorn-2.17.0rc1/tests/test_custom_session.py → crypticorn-2.17.0rc2/tests/test_async_custom_session.py +10 -10
- crypticorn-2.17.0rc2/tests/test_common_routers.py +111 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/tests/test_config.py +3 -3
- crypticorn-2.17.0rc2/tests/test_pagination.py +161 -0
- crypticorn-2.17.0rc2/tests/test_sync_client.py +96 -0
- crypticorn-2.17.0rc2/tests/test_sync_custom_session.py +190 -0
- crypticorn-2.17.0rc1/crypticorn/client.py +0 -162
- crypticorn-2.17.0rc1/crypticorn/common/pagination.py +0 -53
- crypticorn-2.17.0rc1/crypticorn/hive/main.py +0 -98
- crypticorn-2.17.0rc1/crypticorn/klines/client/api/symbols_api.py +0 -283
- crypticorn-2.17.0rc1/crypticorn/klines/main.py +0 -101
- crypticorn-2.17.0rc1/crypticorn/metrics/client/api/quote_currencies_api.py +0 -289
- crypticorn-2.17.0rc1/crypticorn/metrics/main.py +0 -112
- crypticorn-2.17.0rc1/crypticorn/pay/client/api/admin_api.py +0 -1455
- crypticorn-2.17.0rc1/crypticorn/pay/client/api/products_api.py +0 -1078
- crypticorn-2.17.0rc1/crypticorn/trade/client/api/admin_api.py +0 -1455
- crypticorn-2.17.0rc1/crypticorn/trade/client/api/orders_api.py +0 -299
- crypticorn-2.17.0rc1/crypticorn/trade/main.py +0 -44
- crypticorn-2.17.0rc1/tests/test_pagination.py +0 -62
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/LICENSE +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/MANIFEST.in +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/auth/__init__.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/auth/client/__init__.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/auth/client/api/__init__.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/auth/client/api_client.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/auth/client/api_response.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/auth/client/configuration.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/auth/client/exceptions.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/auth/client/models/__init__.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/auth/client/models/add_wallet200_response.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/auth/client/models/add_wallet_request.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/auth/client/models/authorize_user200_response.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/auth/client/models/authorize_user200_response_auth.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/auth/client/models/authorize_user_request.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/auth/client/models/create_api_key200_response.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/auth/client/models/create_user_request.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/auth/client/models/list_wallets200_response.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/auth/client/models/list_wallets200_response_balances_inner.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/auth/client/models/list_wallets200_response_balances_inner_sale_round.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/auth/client/models/list_wallets200_response_balances_inner_wallet.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/auth/client/models/list_wallets200_response_balances_inner_wallet_vesting_wallets_inner.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/auth/client/models/list_wallets200_response_data_inner.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/auth/client/models/list_wallets200_response_user_value.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/auth/client/models/logout_default_response.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/auth/client/models/logout_default_response_issues_inner.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/auth/client/models/oauth_callback200_response.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/auth/client/models/oauth_callback200_response_user.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/auth/client/models/refresh_token_info200_response.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/auth/client/models/refresh_token_info200_response_user_session.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/auth/client/models/resend_verification_email_request.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/auth/client/models/revoke_user_tokens_request.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/auth/client/models/rotate_tokens200_response.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/auth/client/models/token_info200_response.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/auth/client/models/unlink_wallet_request.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/auth/client/models/update_user_request.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/auth/client/models/user_by_username200_response.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/auth/client/models/user_reset_password_request.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/auth/client/models/user_set_password_request.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/auth/client/models/verify200_response.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/auth/client/models/verify_email200_response.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/auth/client/models/verify_email200_response_auth.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/auth/client/models/verify_email200_response_auth_auth.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/auth/client/models/verify_email_request.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/auth/client/models/verify_wallet_request.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/auth/client/models/wallet_verified200_response.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/auth/client/models/whoami200_response.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/auth/client/py.typed +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/cli/__init__.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/cli/__main__.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/cli/init.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/cli/templates/Dockerfile +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/cli/templates/__init__.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/cli/templates/auth.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/cli/templates/dependabot.yml +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/cli/templates/merge-env.sh +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/cli/templates/ruff.yml +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/cli/version.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/common/ansi_colors.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/common/auth.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/common/decorators.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/common/enums.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/common/errors.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/common/exceptions.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/common/logging.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/common/mixins.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/common/openapi.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/common/router/status_router.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/common/scopes.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/common/urls.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/hive/__init__.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/hive/client/__init__.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/hive/client/api/__init__.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/hive/client/api_client.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/hive/client/api_response.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/hive/client/configuration.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/hive/client/exceptions.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/hive/client/models/__init__.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/hive/client/models/api_error_level.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/hive/client/models/api_error_type.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/hive/client/models/coin_info.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/hive/client/models/coins.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/hive/client/models/data_download_response.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/hive/client/models/data_info.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/hive/client/models/data_options.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/hive/client/models/data_version.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/hive/client/models/data_version_info.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/hive/client/models/download_links.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/hive/client/models/evaluation.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/hive/client/models/evaluation_response.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/hive/client/models/exception_detail.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/hive/client/models/feature_size.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/hive/client/models/log_level.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/hive/client/models/model_create.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/hive/client/models/model_read.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/hive/client/models/model_status.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/hive/client/models/model_update.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/hive/client/models/target.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/hive/client/models/target_info.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/hive/client/models/target_type.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/hive/client/py.typed +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/hive/utils.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/klines/__init__.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/klines/client/__init__.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/klines/client/api/__init__.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/klines/client/api_client.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/klines/client/api_response.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/klines/client/configuration.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/klines/client/exceptions.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/klines/client/models/__init__.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/klines/client/models/api_error_level.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/klines/client/models/api_error_type.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/klines/client/models/change_in_timeframe.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/klines/client/models/exception_detail.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/klines/client/models/funding_rate.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/klines/client/models/funding_rate_response.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/klines/client/models/internal_exchange.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/klines/client/models/log_level.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/klines/client/models/market_type.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/klines/client/models/ohlcv.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/klines/client/models/resolution.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/klines/client/models/search_symbol.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/klines/client/models/sort_direction.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/klines/client/models/symbol_group.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/klines/client/models/symbol_info.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/klines/client/models/symbol_type.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/klines/client/models/timeframe.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/klines/client/models/udf_config.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/klines/client/py.typed +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/metrics/__init__.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/metrics/client/__init__.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/metrics/client/api/__init__.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/metrics/client/api_client.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/metrics/client/api_response.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/metrics/client/exceptions.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/metrics/client/models/__init__.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/metrics/client/models/api_error_identifier.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/metrics/client/models/api_error_level.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/metrics/client/models/api_error_type.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/metrics/client/models/exception_detail.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/metrics/client/models/exchange_availability.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/metrics/client/models/exchange_mapping.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/metrics/client/models/internal_exchange.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/metrics/client/models/log_level.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/metrics/client/models/market_type.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/metrics/client/models/marketcap_ranking.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/metrics/client/models/marketcap_symbol_ranking.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/metrics/client/models/ohlcv.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/metrics/client/models/severity.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/metrics/client/models/time_interval.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/metrics/client/models/trading_status.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/metrics/client/py.typed +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/pay/__init__.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/pay/client/__init__.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/pay/client/api/__init__.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/pay/client/api_client.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/pay/client/api_response.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/pay/client/exceptions.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/pay/client/models/__init__.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/pay/client/models/api_error_level.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/pay/client/models/api_error_type.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/pay/client/models/exception_detail.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/pay/client/models/log_level.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/pay/client/models/now_create_invoice_req.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/pay/client/models/now_create_invoice_res.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/pay/client/models/payment.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/pay/client/models/payment_status.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/pay/client/models/product.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/pay/client/models/product_create.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/pay/client/models/product_update.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/pay/client/models/provider.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/pay/client/models/subscription.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/pay/client/py.typed +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/trade/__init__.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/trade/client/api_client.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/trade/client/api_response.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/trade/client/configuration.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/trade/client/exceptions.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/trade/client/models/api_error_identifier.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/trade/client/models/api_error_level.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/trade/client/models/api_error_type.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/trade/client/models/bot.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/trade/client/models/bot_create.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/trade/client/models/bot_status.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/trade/client/models/bot_update.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/trade/client/models/exception_detail.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/trade/client/models/exchange_key.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/trade/client/models/exchange_key_create.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/trade/client/models/exchange_key_update.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/trade/client/models/execution_ids.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/trade/client/models/futures_trading_action.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/trade/client/models/futures_trading_action_create.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/trade/client/models/log_level.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/trade/client/models/margin_mode.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/trade/client/models/market_type.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/trade/client/models/notification.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/trade/client/models/notification_create.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/trade/client/models/notification_update.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/trade/client/models/order.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/trade/client/models/order_status.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/trade/client/models/post_futures_action.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/trade/client/models/spot_trading_action_create.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/trade/client/models/tpsl.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/trade/client/models/tpsl_create.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/trade/client/models/trading_action_type.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn/trade/client/py.typed +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn.egg-info/dependency_links.txt +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn.egg-info/entry_points.txt +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/crypticorn.egg-info/top_level.txt +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/requirements/dev.txt +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/requirements/extra.txt +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/setup.cfg +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/static/favicon.svg +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/static/logo.svg +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/static/pip-structure.drawio +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/static/pip-structure.svg +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/tests/test_auth_client.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/tests/test_enums.py +0 -0
- {crypticorn-2.17.0rc1 → crypticorn-2.17.0rc2}/tests/test_errors.py +0 -0
@@ -1,6 +1,31 @@
|
|
1
1
|
# CHANGELOG
|
2
2
|
|
3
3
|
|
4
|
+
## v2.17.0-rc.2 (2025-06-05)
|
5
|
+
|
6
|
+
### Documentation
|
7
|
+
|
8
|
+
- Document SyncClient support
|
9
|
+
([`8935d22`](https://github.com/crypticorn-ai/api-client/commit/8935d221afe6cb6da2529a05341e104b98bb9fbb))
|
10
|
+
|
11
|
+
### Features
|
12
|
+
|
13
|
+
- Add support for pagination, sorting and filtering query parameters
|
14
|
+
([`3afcf2b`](https://github.com/crypticorn-ai/api-client/commit/3afcf2bb8eff65a1c38c738f19e7480550f91798))
|
15
|
+
|
16
|
+
- Add support for synchronous usage with `SyncClient`. Both API clients are compatible with each
|
17
|
+
other.
|
18
|
+
([`02e7622`](https://github.com/crypticorn-ai/api-client/commit/02e7622669bd590a853b12c9aa10183db06a73f1))
|
19
|
+
|
20
|
+
- Deprecate ApiClient for Async and SyncClient
|
21
|
+
([`a00b450`](https://github.com/crypticorn-ai/api-client/commit/a00b4502197fb2287aca893042d197d5f9811076))
|
22
|
+
|
23
|
+
### Testing
|
24
|
+
|
25
|
+
- Improve tests for pagination query params
|
26
|
+
([`de1f82a`](https://github.com/crypticorn-ai/api-client/commit/de1f82ae6f5461e172459ec4558dd29c0b2646ad))
|
27
|
+
|
28
|
+
|
4
29
|
## v2.17.0-rc.1 (2025-06-01)
|
5
30
|
|
6
31
|
### Features
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: crypticorn
|
3
|
-
Version: 2.17.
|
3
|
+
Version: 2.17.0rc2
|
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
|
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
|
90
|
+
from crypticorn import AsyncClient, SyncClient
|
85
91
|
```
|
86
|
-
|
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
|
-
|
120
|
+
### Asynchronous Client
|
121
|
+
|
122
|
+
You can use the async client with the context manager protocol...
|
115
123
|
```python
|
116
|
-
async with
|
117
|
-
|
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 =
|
122
|
-
asyncio.run(client.pay.
|
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 =
|
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
|
-
|
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, `
|
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
|
264
|
+
from crypticorn import AsyncClient
|
219
265
|
|
220
266
|
async def main():
|
221
267
|
custom_session = aiohttp.ClientSession()
|
222
|
-
async with
|
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
|
-
|
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, `
|
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
|
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
|
32
|
+
from crypticorn import AsyncClient, SyncClient
|
29
33
|
```
|
30
|
-
|
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
|
-
|
62
|
+
### Asynchronous Client
|
63
|
+
|
64
|
+
You can use the async client with the context manager protocol...
|
59
65
|
```python
|
60
|
-
async with
|
61
|
-
|
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 =
|
66
|
-
asyncio.run(client.pay.
|
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 =
|
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
|
-
|
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, `
|
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
|
206
|
+
from crypticorn import AsyncClient
|
163
207
|
|
164
208
|
async def main():
|
165
209
|
custom_session = aiohttp.ClientSession()
|
166
|
-
async with
|
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
|
-
|
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, `
|
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"]
|