crypticorn 2.17.0rc2__tar.gz → 2.17.0rc4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/CHANGELOG.md +26 -0
- {crypticorn-2.17.0rc2/crypticorn.egg-info → crypticorn-2.17.0rc4}/PKG-INFO +1 -1
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/common/auth.py +7 -14
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/common/pagination.py +21 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4/crypticorn.egg-info}/PKG-INFO +1 -1
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/pyproject.toml +1 -1
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/tests/test_auth_client.py +2 -2
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/LICENSE +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/MANIFEST.in +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/README.md +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/__init__.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/__init__.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/__init__.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/api/__init__.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/api/admin_api.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/api/auth_api.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/api/service_api.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/api/user_api.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/api/wallet_api.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/api_client.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/api_response.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/configuration.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/exceptions.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/models/__init__.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/models/add_wallet200_response.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/models/add_wallet_request.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/models/authorize_user200_response.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/models/authorize_user200_response_auth.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/models/authorize_user_request.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/models/create_api_key200_response.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/models/create_api_key_request.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/models/create_user_request.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/models/get_api_keys200_response_inner.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/models/list_wallets200_response.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/models/list_wallets200_response_balances_inner.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/models/list_wallets200_response_balances_inner_sale_round.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/models/list_wallets200_response_balances_inner_wallet.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/models/list_wallets200_response_balances_inner_wallet_vesting_wallets_inner.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/models/list_wallets200_response_data_inner.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/models/list_wallets200_response_user_value.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/models/logout_default_response.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/models/logout_default_response_issues_inner.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/models/oauth_callback200_response.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/models/oauth_callback200_response_user.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/models/refresh_token_info200_response.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/models/refresh_token_info200_response_user_session.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/models/resend_verification_email_request.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/models/revoke_user_tokens_request.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/models/rotate_tokens200_response.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/models/token_info200_response.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/models/unlink_wallet_request.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/models/update_user_request.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/models/user_by_username200_response.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/models/user_reset_password_request.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/models/user_set_password_request.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/models/verify200_response.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/models/verify_email200_response.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/models/verify_email200_response_auth.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/models/verify_email200_response_auth_auth.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/models/verify_email_request.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/models/verify_wallet_request.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/models/wallet_verified200_response.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/models/whoami200_response.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/py.typed +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/rest.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/main.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/cli/__init__.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/cli/__main__.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/cli/init.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/cli/templates/Dockerfile +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/cli/templates/__init__.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/cli/templates/auth.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/cli/templates/dependabot.yml +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/cli/templates/merge-env.sh +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/cli/templates/ruff.yml +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/cli/version.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/client.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/common/__init__.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/common/ansi_colors.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/common/decorators.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/common/enums.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/common/errors.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/common/exceptions.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/common/logging.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/common/metrics.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/common/middleware.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/common/mixins.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/common/openapi.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/common/router/admin_router.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/common/router/status_router.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/common/scopes.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/common/urls.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/common/utils.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/common/warnings.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/hive/__init__.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/hive/client/__init__.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/hive/client/api/__init__.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/hive/client/api/admin_api.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/hive/client/api/data_api.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/hive/client/api/models_api.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/hive/client/api/status_api.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/hive/client/api_client.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/hive/client/api_response.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/hive/client/configuration.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/hive/client/exceptions.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/hive/client/models/__init__.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/hive/client/models/api_error_identifier.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/hive/client/models/api_error_level.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/hive/client/models/api_error_type.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/hive/client/models/coin_info.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/hive/client/models/coins.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/hive/client/models/data_download_response.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/hive/client/models/data_info.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/hive/client/models/data_options.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/hive/client/models/data_version.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/hive/client/models/data_version_info.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/hive/client/models/download_links.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/hive/client/models/evaluation.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/hive/client/models/evaluation_response.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/hive/client/models/exception_detail.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/hive/client/models/feature_size.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/hive/client/models/log_level.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/hive/client/models/model_create.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/hive/client/models/model_read.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/hive/client/models/model_status.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/hive/client/models/model_update.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/hive/client/models/target.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/hive/client/models/target_info.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/hive/client/models/target_type.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/hive/client/py.typed +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/hive/client/rest.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/hive/main.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/hive/utils.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/klines/__init__.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/klines/client/__init__.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/klines/client/api/__init__.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/klines/client/api/admin_api.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/klines/client/api/change_in_timeframe_api.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/klines/client/api/funding_rates_api.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/klines/client/api/ohlcv_data_api.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/klines/client/api/status_api.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/klines/client/api/symbols_api.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/klines/client/api/udf_api.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/klines/client/api_client.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/klines/client/api_response.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/klines/client/configuration.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/klines/client/exceptions.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/klines/client/models/__init__.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/klines/client/models/api_error_identifier.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/klines/client/models/api_error_level.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/klines/client/models/api_error_type.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/klines/client/models/change_in_timeframe.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/klines/client/models/exception_detail.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/klines/client/models/funding_rate.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/klines/client/models/funding_rate_response.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/klines/client/models/internal_exchange.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/klines/client/models/log_level.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/klines/client/models/market_type.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/klines/client/models/ohlcv.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/klines/client/models/resolution.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/klines/client/models/search_symbol.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/klines/client/models/sort_direction.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/klines/client/models/symbol_group.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/klines/client/models/symbol_info.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/klines/client/models/symbol_type.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/klines/client/models/timeframe.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/klines/client/models/udf_config.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/klines/client/py.typed +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/klines/client/rest.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/klines/main.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/metrics/__init__.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/metrics/client/__init__.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/metrics/client/api/__init__.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/metrics/client/api/admin_api.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/metrics/client/api/exchanges_api.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/metrics/client/api/indicators_api.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/metrics/client/api/logs_api.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/metrics/client/api/marketcap_api.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/metrics/client/api/markets_api.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/metrics/client/api/quote_currencies_api.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/metrics/client/api/status_api.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/metrics/client/api/tokens_api.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/metrics/client/api_client.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/metrics/client/api_response.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/metrics/client/configuration.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/metrics/client/exceptions.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/metrics/client/models/__init__.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/metrics/client/models/api_error_identifier.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/metrics/client/models/api_error_level.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/metrics/client/models/api_error_type.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/metrics/client/models/exception_detail.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/metrics/client/models/exchange_availability.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/metrics/client/models/exchange_mapping.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/metrics/client/models/internal_exchange.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/metrics/client/models/log_level.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/metrics/client/models/market_type.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/metrics/client/models/marketcap_ranking.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/metrics/client/models/marketcap_symbol_ranking.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/metrics/client/models/ohlcv.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/metrics/client/models/severity.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/metrics/client/models/time_interval.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/metrics/client/models/trading_status.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/metrics/client/py.typed +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/metrics/client/rest.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/metrics/main.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/pay/__init__.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/pay/client/__init__.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/pay/client/api/__init__.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/pay/client/api/admin_api.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/pay/client/api/now_payments_api.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/pay/client/api/payments_api.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/pay/client/api/products_api.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/pay/client/api/status_api.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/pay/client/api_client.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/pay/client/api_response.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/pay/client/configuration.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/pay/client/exceptions.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/pay/client/models/__init__.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/pay/client/models/api_error_identifier.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/pay/client/models/api_error_level.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/pay/client/models/api_error_type.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/pay/client/models/exception_detail.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/pay/client/models/log_level.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/pay/client/models/now_create_invoice_req.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/pay/client/models/now_create_invoice_res.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/pay/client/models/payment.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/pay/client/models/payment_status.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/pay/client/models/product.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/pay/client/models/product_create.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/pay/client/models/product_update.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/pay/client/models/provider.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/pay/client/models/scope.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/pay/client/models/subscription.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/pay/client/py.typed +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/pay/client/rest.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/pay/main.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/__init__.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/__init__.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/api/__init__.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/api/admin_api.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/api/api_keys_api.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/api/bots_api.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/api/exchanges_api.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/api/notifications_api.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/api/orders_api.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/api/status_api.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/api/strategies_api.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/api/trading_actions_api.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/api_client.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/api_response.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/configuration.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/exceptions.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/models/__init__.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/models/api_error_identifier.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/models/api_error_level.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/models/api_error_type.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/models/bot.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/models/bot_create.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/models/bot_status.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/models/bot_update.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/models/exception_detail.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/models/exchange.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/models/exchange_key.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/models/exchange_key_balance.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/models/exchange_key_create.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/models/exchange_key_update.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/models/execution_ids.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/models/futures_balance.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/models/futures_trading_action.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/models/futures_trading_action_create.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/models/log_level.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/models/margin_mode.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/models/market_type.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/models/notification.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/models/notification_create.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/models/notification_update.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/models/order.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/models/order_status.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/models/post_futures_action.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/models/spot_balance.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/models/spot_trading_action_create.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/models/strategy.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/models/strategy_create.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/models/strategy_exchange_info.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/models/strategy_update.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/models/tpsl.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/models/tpsl_create.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/models/trading_action_type.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/py.typed +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/client/rest.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/trade/main.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn.egg-info/SOURCES.txt +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn.egg-info/dependency_links.txt +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn.egg-info/entry_points.txt +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn.egg-info/requires.txt +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn.egg-info/top_level.txt +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/requirements/dev.txt +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/requirements/extra.txt +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/requirements/main.txt +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/requirements/test.txt +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/setup.cfg +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/static/favicon.svg +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/static/logo.svg +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/static/pip-structure.drawio +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/static/pip-structure.svg +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/tests/test_async_client.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/tests/test_async_custom_session.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/tests/test_common_routers.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/tests/test_config.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/tests/test_enums.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/tests/test_errors.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/tests/test_pagination.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/tests/test_sync_client.py +0 -0
- {crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/tests/test_sync_custom_session.py +0 -0
@@ -1,6 +1,32 @@
|
|
1
1
|
# CHANGELOG
|
2
2
|
|
3
3
|
|
4
|
+
## v2.17.0-rc.4 (2025-06-06)
|
5
|
+
|
6
|
+
### Features
|
7
|
+
|
8
|
+
- Add `last` attribute and helper functions to paginated responses
|
9
|
+
([`fe29d0c`](https://github.com/crypticorn-ai/api-client/commit/fe29d0cb1da60c0fa2dc86f9f0ec54e8d035293d))
|
10
|
+
|
11
|
+
### Refactoring
|
12
|
+
|
13
|
+
- Add message to invalid_bearer exception
|
14
|
+
([`5578140`](https://github.com/crypticorn-ai/api-client/commit/557814099f6c37ce015c0ad8e5989266f332e834))
|
15
|
+
|
16
|
+
### Testing
|
17
|
+
|
18
|
+
- Update websocket authentication test
|
19
|
+
([`4f727d5`](https://github.com/crypticorn-ai/api-client/commit/4f727d545ab7275e7f3dc8e45b1ed2f0270e4038))
|
20
|
+
|
21
|
+
|
22
|
+
## v2.17.0-rc.3 (2025-06-05)
|
23
|
+
|
24
|
+
### Bug Fixes
|
25
|
+
|
26
|
+
- Fixes bearer auth in websocket
|
27
|
+
([`cb2f5f0`](https://github.com/crypticorn-ai/api-client/commit/cb2f5f07be25b8009f734de0d4bfdd4dd8b5c357))
|
28
|
+
|
29
|
+
|
4
30
|
## v2.17.0-rc.2 (2025-06-05)
|
5
31
|
|
6
32
|
### Documentation
|
@@ -112,6 +112,7 @@ class AuthHandler:
|
|
112
112
|
elif message == "jwt expired":
|
113
113
|
error = ApiError.EXPIRED_BEARER
|
114
114
|
else:
|
115
|
+
message = "Invalid bearer token"
|
115
116
|
error = (
|
116
117
|
ApiError.INVALID_BEARER
|
117
118
|
) # jwt malformed, jwt not active (https://www.npmjs.com/package/jsonwebtoken#errors--codes)
|
@@ -234,10 +235,7 @@ class AuthHandler:
|
|
234
235
|
Use this function if you only want to allow access via the API key.
|
235
236
|
This function is used for WebSocket connections.
|
236
237
|
"""
|
237
|
-
|
238
|
-
return await self.api_key_auth(api_key=api_key, sec=sec)
|
239
|
-
except HTTPException as e:
|
240
|
-
raise WebSocketException.from_http_exception(e)
|
238
|
+
return await self.api_key_auth(api_key=api_key, sec=sec)
|
241
239
|
|
242
240
|
async def ws_bearer_auth(
|
243
241
|
self,
|
@@ -249,10 +247,8 @@ class AuthHandler:
|
|
249
247
|
Use this function if you only want to allow access via the bearer token.
|
250
248
|
This function is used for WebSocket connections.
|
251
249
|
"""
|
252
|
-
|
253
|
-
|
254
|
-
except HTTPException as e:
|
255
|
-
raise WebSocketException.from_http_exception(e)
|
250
|
+
credentials = HTTPAuthorizationCredentials(scheme="Bearer", credentials=bearer)
|
251
|
+
return await self.bearer_auth(bearer=credentials, sec=sec)
|
256
252
|
|
257
253
|
async def ws_combined_auth(
|
258
254
|
self,
|
@@ -270,9 +266,6 @@ class AuthHandler:
|
|
270
266
|
if bearer
|
271
267
|
else None
|
272
268
|
)
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
)
|
277
|
-
except HTTPException as e:
|
278
|
-
raise WebSocketException.from_http_exception(e)
|
269
|
+
return await self.combined_auth(
|
270
|
+
bearer=credentials, api_key=api_key, sec=sec
|
271
|
+
)
|
@@ -2,6 +2,7 @@
|
|
2
2
|
|
3
3
|
from typing import Annotated, Any, Generic, Type, TypeVar, Optional, Literal
|
4
4
|
from pydantic import BaseModel, Field, model_validator
|
5
|
+
import math
|
5
6
|
|
6
7
|
T = TypeVar("T")
|
7
8
|
|
@@ -17,6 +18,26 @@ class PaginatedResponse(BaseModel, Generic[T]):
|
|
17
18
|
page_size: int = Field(description="The number of items per page")
|
18
19
|
prev: Optional[int] = Field(None, description="The previous page number")
|
19
20
|
next: Optional[int] = Field(None, description="The next page number")
|
21
|
+
last: Optional[int] = Field(None, description="The last page number")
|
22
|
+
|
23
|
+
@staticmethod
|
24
|
+
def get_next_page(total: int, page_size: int, page: int) -> Optional[int]:
|
25
|
+
"""Get the next page number"""
|
26
|
+
if page < math.ceil(total / page_size):
|
27
|
+
return page + 1
|
28
|
+
return None
|
29
|
+
|
30
|
+
@staticmethod
|
31
|
+
def get_prev_page(page: int) -> Optional[int]:
|
32
|
+
"""Get the previous page number"""
|
33
|
+
if page > 1:
|
34
|
+
return page - 1
|
35
|
+
return None
|
36
|
+
|
37
|
+
@staticmethod
|
38
|
+
def get_last_page(total: int, page_size: int) -> int:
|
39
|
+
"""Get the last page number"""
|
40
|
+
return max(1, math.ceil(total / page_size))
|
20
41
|
|
21
42
|
|
22
43
|
class PaginationParams(BaseModel, Generic[T]):
|
@@ -5,7 +5,7 @@ readme = "README.md"
|
|
5
5
|
license = "MIT"
|
6
6
|
requires-python = ">=3.9"
|
7
7
|
authors = [{name = "Crypticorn", email = "timon@crypticorn.com"}]
|
8
|
-
version = "2.17.0-rc.
|
8
|
+
version = "2.17.0-rc.4"
|
9
9
|
keywords = ["machine learning", "data science", "crypto", "modelling"]
|
10
10
|
dynamic = ["dependencies", "optional-dependencies"]
|
11
11
|
|
@@ -153,7 +153,7 @@ async def test_combined_auth_with_expired_api_key(auth_handler: AuthHandler):
|
|
153
153
|
@pytest.mark.asyncio
|
154
154
|
async def test_ws_combined_auth_websocket_exception(auth_handler: AuthHandler):
|
155
155
|
"""Without credentials"""
|
156
|
-
with pytest.raises(
|
156
|
+
with pytest.raises(HTTPException) as e:
|
157
157
|
return await auth_handler.ws_combined_auth(bearer=None, api_key=None)
|
158
|
-
assert e.value.status_code ==
|
158
|
+
assert e.value.status_code == 401
|
159
159
|
assert e.value.detail.get("code") == ApiError.NO_CREDENTIALS.identifier
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/models/add_wallet_request.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/models/create_user_request.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/models/unlink_wallet_request.py
RENAMED
File without changes
|
{crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/models/update_user_request.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/models/verify200_response.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/models/verify_email_request.py
RENAMED
File without changes
|
{crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/models/verify_wallet_request.py
RENAMED
File without changes
|
File without changes
|
{crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/auth/client/models/whoami200_response.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/hive/client/models/api_error_identifier.py
RENAMED
File without changes
|
{crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/hive/client/models/api_error_level.py
RENAMED
File without changes
|
{crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/hive/client/models/api_error_type.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/hive/client/models/data_version_info.py
RENAMED
File without changes
|
{crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/hive/client/models/download_links.py
RENAMED
File without changes
|
File without changes
|
{crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/hive/client/models/evaluation_response.py
RENAMED
File without changes
|
{crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/hive/client/models/exception_detail.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/klines/client/api/funding_rates_api.py
RENAMED
File without changes
|
{crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/klines/client/api/ohlcv_data_api.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/klines/client/models/api_error_level.py
RENAMED
File without changes
|
{crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/klines/client/models/api_error_type.py
RENAMED
File without changes
|
{crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/klines/client/models/change_in_timeframe.py
RENAMED
File without changes
|
{crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/klines/client/models/exception_detail.py
RENAMED
File without changes
|
{crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/klines/client/models/funding_rate.py
RENAMED
File without changes
|
File without changes
|
{crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/klines/client/models/internal_exchange.py
RENAMED
File without changes
|
File without changes
|
{crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/klines/client/models/market_type.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/klines/client/models/search_symbol.py
RENAMED
File without changes
|
{crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/klines/client/models/sort_direction.py
RENAMED
File without changes
|
{crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/klines/client/models/symbol_group.py
RENAMED
File without changes
|
{crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/klines/client/models/symbol_info.py
RENAMED
File without changes
|
{crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/klines/client/models/symbol_type.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/metrics/client/api/exchanges_api.py
RENAMED
File without changes
|
{crypticorn-2.17.0rc2 → crypticorn-2.17.0rc4}/crypticorn/metrics/client/api/indicators_api.py
RENAMED
File without changes
|