crypticorn 2.7.4__tar.gz → 2.8.0rc1__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.8.0rc1/CHANGELOG.md +470 -0
- crypticorn-2.8.0rc1/MANIFEST.in +2 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/PKG-INFO +1 -1
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/common/__init__.py +4 -1
- crypticorn-2.8.0rc1/crypticorn/common/ansi_colors.py +40 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/common/auth.py +1 -1
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/common/exceptions.py +18 -8
- crypticorn-2.8.0rc1/crypticorn/common/logging.py +103 -0
- crypticorn-2.8.0rc1/crypticorn/common/router/admin_router.py +96 -0
- {crypticorn-2.7.4/crypticorn/common → crypticorn-2.8.0rc1/crypticorn/common/router}/status_router.py +0 -20
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/common/scopes.py +5 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn.egg-info/PKG-INFO +1 -1
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn.egg-info/SOURCES.txt +5 -1
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/pyproject.toml +1 -1
- crypticorn-2.7.4/MANIFEST.in +0 -1
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/README.md +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/__init__.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/auth/__init__.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/auth/client/__init__.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/auth/client/api/__init__.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/auth/client/api/admin_api.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/auth/client/api/auth_api.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/auth/client/api/service_api.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/auth/client/api/user_api.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/auth/client/api/wallet_api.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/auth/client/api_client.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/auth/client/api_response.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/auth/client/configuration.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/auth/client/exceptions.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/auth/client/models/__init__.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/auth/client/models/add_wallet200_response.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/auth/client/models/add_wallet_request.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/auth/client/models/authorize_user200_response.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/auth/client/models/authorize_user200_response_auth.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/auth/client/models/authorize_user_request.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/auth/client/models/create_api_key200_response.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/auth/client/models/create_api_key_request.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/auth/client/models/create_user_request.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/auth/client/models/get_api_keys200_response_inner.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/auth/client/models/list_wallets200_response.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/auth/client/models/list_wallets200_response_balances_inner.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/auth/client/models/list_wallets200_response_balances_inner_sale_round.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/auth/client/models/list_wallets200_response_balances_inner_wallet.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/auth/client/models/list_wallets200_response_balances_inner_wallet_vesting_wallets_inner.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/auth/client/models/list_wallets200_response_data_inner.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/auth/client/models/list_wallets200_response_user_value.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/auth/client/models/logout_default_response.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/auth/client/models/logout_default_response_issues_inner.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/auth/client/models/oauth_callback200_response.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/auth/client/models/oauth_callback200_response_user.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/auth/client/models/refresh_token_info200_response.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/auth/client/models/refresh_token_info200_response_user_session.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/auth/client/models/resend_verification_email_request.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/auth/client/models/revoke_user_tokens_request.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/auth/client/models/rotate_tokens200_response.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/auth/client/models/token_info200_response.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/auth/client/models/unlink_wallet_request.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/auth/client/models/update_user_request.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/auth/client/models/user_by_username200_response.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/auth/client/models/user_reset_password_request.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/auth/client/models/user_set_password_request.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/auth/client/models/verify200_response.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/auth/client/models/verify_email200_response.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/auth/client/models/verify_email200_response_auth.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/auth/client/models/verify_email200_response_auth_auth.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/auth/client/models/verify_email_request.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/auth/client/models/verify_wallet_request.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/auth/client/models/wallet_verified200_response.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/auth/client/models/whoami200_response.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/auth/client/py.typed +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/auth/client/rest.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/auth/main.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/cli/__init__.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/cli/__main__.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/cli/init.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/cli/templates/Dockerfile +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/cli/templates/__init__.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/cli/templates/auth.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/cli/templates/dependabot.yml +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/cli/templates/ruff.yml +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/client.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/common/decorators.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/common/enums.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/common/errors.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/common/mixins.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/common/pagination.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/common/urls.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/common/utils.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/hive/__init__.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/hive/client/__init__.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/hive/client/api/__init__.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/hive/client/api/data_api.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/hive/client/api/models_api.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/hive/client/api/status_api.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/hive/client/api_client.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/hive/client/api_response.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/hive/client/configuration.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/hive/client/exceptions.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/hive/client/models/__init__.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/hive/client/models/coins.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/hive/client/models/data_download_response.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/hive/client/models/data_info.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/hive/client/models/data_value_value_value_inner.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/hive/client/models/data_version.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/hive/client/models/data_version_info.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/hive/client/models/download_links.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/hive/client/models/evaluation.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/hive/client/models/evaluation_response.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/hive/client/models/exception_detail.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/hive/client/models/feature_size.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/hive/client/models/model.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/hive/client/models/model_create.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/hive/client/models/model_status.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/hive/client/models/model_update.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/hive/client/models/target.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/hive/client/models/target_info.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/hive/client/models/target_type.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/hive/client/py.typed +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/hive/client/rest.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/hive/main.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/hive/utils.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/klines/__init__.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/klines/client/__init__.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/klines/client/api/__init__.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/klines/client/api/change_in_timeframe_api.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/klines/client/api/funding_rates_api.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/klines/client/api/ohlcv_data_api.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/klines/client/api/status_api.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/klines/client/api/symbols_api.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/klines/client/api/udf_api.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/klines/client/api_client.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/klines/client/api_response.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/klines/client/configuration.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/klines/client/exceptions.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/klines/client/models/__init__.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/klines/client/models/change_in_timeframe.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/klines/client/models/exception_detail.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/klines/client/models/funding_rate.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/klines/client/models/ohlcv_history.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/klines/client/models/resolution.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/klines/client/models/search_symbol.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/klines/client/models/sort_direction.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/klines/client/models/symbol_group.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/klines/client/models/symbol_info.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/klines/client/models/symbol_type.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/klines/client/models/timeframe.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/klines/client/models/udf_config.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/klines/client/py.typed +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/klines/client/rest.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/klines/main.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/metrics/__init__.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/metrics/client/__init__.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/metrics/client/api/__init__.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/metrics/client/api/exchanges_api.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/metrics/client/api/indicators_api.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/metrics/client/api/logs_api.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/metrics/client/api/marketcap_api.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/metrics/client/api/markets_api.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/metrics/client/api/status_api.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/metrics/client/api/tokens_api.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/metrics/client/api_client.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/metrics/client/api_response.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/metrics/client/configuration.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/metrics/client/exceptions.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/metrics/client/models/__init__.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/metrics/client/models/exception_detail.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/metrics/client/models/severity.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/metrics/client/models/time_interval.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/metrics/client/models/trading_status.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/metrics/client/py.typed +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/metrics/client/rest.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/metrics/main.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/pay/__init__.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/pay/client/__init__.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/pay/client/api/__init__.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/pay/client/api/now_payments_api.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/pay/client/api/payments_api.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/pay/client/api/products_api.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/pay/client/api/status_api.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/pay/client/api_client.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/pay/client/api_response.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/pay/client/configuration.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/pay/client/exceptions.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/pay/client/models/__init__.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/pay/client/models/exception_detail.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/pay/client/models/now_create_invoice_req.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/pay/client/models/now_create_invoice_res.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/pay/client/models/payment.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/pay/client/models/payment_status.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/pay/client/models/product_create.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/pay/client/models/product_read.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/pay/client/models/product_sub_read.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/pay/client/models/product_update.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/pay/client/models/provider.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/pay/client/models/scope.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/pay/client/py.typed +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/pay/client/rest.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/pay/main.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/trade/__init__.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/trade/client/__init__.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/trade/client/api/__init__.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/trade/client/api/api_keys_api.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/trade/client/api/bots_api.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/trade/client/api/exchanges_api.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/trade/client/api/futures_trading_panel_api.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/trade/client/api/notifications_api.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/trade/client/api/orders_api.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/trade/client/api/status_api.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/trade/client/api/strategies_api.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/trade/client/api/trading_actions_api.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/trade/client/api_client.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/trade/client/api_response.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/trade/client/configuration.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/trade/client/exceptions.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/trade/client/models/__init__.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/trade/client/models/action_model.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/trade/client/models/bot_model.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/trade/client/models/bot_status.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/trade/client/models/exception_detail.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/trade/client/models/exchange_key_model.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/trade/client/models/execution_ids.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/trade/client/models/futures_balance.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/trade/client/models/futures_trading_action.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/trade/client/models/margin_mode.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/trade/client/models/notification_model.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/trade/client/models/order_model.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/trade/client/models/order_status.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/trade/client/models/post_futures_action.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/trade/client/models/spot_trading_action.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/trade/client/models/strategy_exchange_info.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/trade/client/models/strategy_model_input.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/trade/client/models/strategy_model_output.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/trade/client/models/tpsl.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/trade/client/models/trading_action_type.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/trade/client/py.typed +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/trade/client/rest.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn/trade/main.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn.egg-info/dependency_links.txt +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn.egg-info/entry_points.txt +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn.egg-info/requires.txt +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/crypticorn.egg-info/top_level.txt +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/requirements/dev.txt +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/requirements/extra.txt +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/requirements/main.txt +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/requirements/test.txt +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/setup.cfg +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/tests/test_auth_client.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/tests/test_config.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/tests/test_enums.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/tests/test_errors.py +0 -0
- {crypticorn-2.7.4 → crypticorn-2.8.0rc1}/tests/test_pagination.py +0 -0
@@ -0,0 +1,470 @@
|
|
1
|
+
# CHANGELOG
|
2
|
+
|
3
|
+
|
4
|
+
## v2.8.0-rc.1 (2025-05-04)
|
5
|
+
|
6
|
+
### Features
|
7
|
+
|
8
|
+
- Add router with admin endpoints
|
9
|
+
([`0d38178`](https://github.com/crypticorn-ai/api-client/commit/0d381784f91cab776ca1ee3b8407433dae4421c3))
|
10
|
+
|
11
|
+
- Configure formatted logging
|
12
|
+
([`f8c35e9`](https://github.com/crypticorn-ai/api-client/commit/f8c35e900bcf4a279cc8e046e58935ec5c5c62ee))
|
13
|
+
|
14
|
+
|
15
|
+
## v2.7.5 (2025-05-04)
|
16
|
+
|
17
|
+
### Bug Fixes
|
18
|
+
|
19
|
+
- Log errors and exceptions
|
20
|
+
([`578d6d3`](https://github.com/crypticorn-ai/api-client/commit/578d6d3176e07a7d4cb87e79617d67ab2e1d62de))
|
21
|
+
|
22
|
+
### Build System
|
23
|
+
|
24
|
+
- Include changelog in build
|
25
|
+
([`a78acb7`](https://github.com/crypticorn-ai/api-client/commit/a78acb7a18a957cfefa8e64ce593b13ddcd4fae7))
|
26
|
+
|
27
|
+
|
28
|
+
## v2.7.4 (2025-05-04)
|
29
|
+
|
30
|
+
### Bug Fixes
|
31
|
+
|
32
|
+
- Include cli templates in build
|
33
|
+
([`8d46b4c`](https://github.com/crypticorn-ai/api-client/commit/8d46b4c6bc6bd413a86d1661a4ae9647ed66755c))
|
34
|
+
|
35
|
+
### Documentation
|
36
|
+
|
37
|
+
- Update README and add license
|
38
|
+
([`1876008`](https://github.com/crypticorn-ai/api-client/commit/187600869b9248aef2b66e881711ddfb96a01538))
|
39
|
+
|
40
|
+
|
41
|
+
## v2.7.3 (2025-05-03)
|
42
|
+
|
43
|
+
### Bug Fixes
|
44
|
+
|
45
|
+
- Fixes attribute bug in http exception handling
|
46
|
+
([`a90b593`](https://github.com/crypticorn-ai/api-client/commit/a90b593bfa3e08a1703a7e2e1fc8a7bb8ac456e3))
|
47
|
+
|
48
|
+
|
49
|
+
## v2.7.2 (2025-05-03)
|
50
|
+
|
51
|
+
### Bug Fixes
|
52
|
+
|
53
|
+
- Add write:pay:now to default scopes
|
54
|
+
([`8375248`](https://github.com/crypticorn-ai/api-client/commit/83752484e3570a1f39eacda4223100d7f3fbadd0))
|
55
|
+
|
56
|
+
|
57
|
+
## v2.7.1 (2025-05-02)
|
58
|
+
|
59
|
+
### Bug Fixes
|
60
|
+
|
61
|
+
- Use pydantic instead of json response in api wrappers
|
62
|
+
([`ddd623b`](https://github.com/crypticorn-ai/api-client/commit/ddd623b28cb542ae6dd1bab02044c682cac206af))
|
63
|
+
|
64
|
+
|
65
|
+
## v2.7.0 (2025-05-01)
|
66
|
+
|
67
|
+
### Features
|
68
|
+
|
69
|
+
- Add download functionality for hive download data endpoint
|
70
|
+
([`ee09d17`](https://github.com/crypticorn-ai/api-client/commit/ee09d177a28f3879e549eb3044c24b5e6197a528))
|
71
|
+
|
72
|
+
|
73
|
+
## v2.6.0 (2025-04-30)
|
74
|
+
|
75
|
+
### Features
|
76
|
+
|
77
|
+
- Add admin flag on auth verify response and user by username endpoint
|
78
|
+
([`3f27fba`](https://github.com/crypticorn-ai/api-client/commit/3f27fba655e15a42a947ad1c67bcf4319c3daed6))
|
79
|
+
|
80
|
+
- Add common pagination query parameters
|
81
|
+
([`4157137`](https://github.com/crypticorn-ai/api-client/commit/415713725541bb4a180f11de12fea2c3071c5f55))
|
82
|
+
|
83
|
+
- Add common webscoket error handling
|
84
|
+
([`334a450`](https://github.com/crypticorn-ai/api-client/commit/334a45054797616fdd8bb917381e189bb64e4678))
|
85
|
+
|
86
|
+
### Testing
|
87
|
+
|
88
|
+
- Add api key generation and remove duplicate tests
|
89
|
+
([`d60a890`](https://github.com/crypticorn-ai/api-client/commit/d60a89071fe7bc25025fbdf2298cb560d9fbdfb8))
|
90
|
+
|
91
|
+
|
92
|
+
## v2.5.3 (2025-04-29)
|
93
|
+
|
94
|
+
### Bug Fixes
|
95
|
+
|
96
|
+
- Use ExceptionContent in throw utilities
|
97
|
+
([`b38ebf1`](https://github.com/crypticorn-ai/api-client/commit/b38ebf1443d1df126f7e1014b5c25f1e17f56fdc))
|
98
|
+
|
99
|
+
|
100
|
+
## v2.5.2 (2025-04-29)
|
101
|
+
|
102
|
+
### Bug Fixes
|
103
|
+
|
104
|
+
- Only allow type ApiError in throw utility functions
|
105
|
+
([`7604342`](https://github.com/crypticorn-ai/api-client/commit/7604342baa6dd2bee816ae446dfcc08edb298ddb))
|
106
|
+
|
107
|
+
### Build System
|
108
|
+
|
109
|
+
- Clean generated code before regenerating
|
110
|
+
([`b563024`](https://github.com/crypticorn-ai/api-client/commit/b56302497e79e2a64e7403d15a0f3d3bd3233b63))
|
111
|
+
|
112
|
+
|
113
|
+
## v2.5.1 (2025-04-27)
|
114
|
+
|
115
|
+
### Bug Fixes
|
116
|
+
|
117
|
+
- Integrate exception handling in auth handler
|
118
|
+
([`b7835ef`](https://github.com/crypticorn-ai/api-client/commit/b7835efef54adbd021ecce27c002c5e5501cb99c))
|
119
|
+
|
120
|
+
### Build System
|
121
|
+
|
122
|
+
- Exclude shared classes and enums from openapi to reduce duplication upon client generation
|
123
|
+
([`1987864`](https://github.com/crypticorn-ai/api-client/commit/1987864392397d7ee74ddb9ecbfb61c6d83134dc))
|
124
|
+
|
125
|
+
### Continuous Integration
|
126
|
+
|
127
|
+
- Run codecov workflow on push and pull request
|
128
|
+
([`cf2bc16`](https://github.com/crypticorn-ai/api-client/commit/cf2bc165d04b855839812ea626a3647b17a91458))
|
129
|
+
|
130
|
+
### Refactoring
|
131
|
+
|
132
|
+
- Improve sub package registration in ApiClient to reduce redundance
|
133
|
+
([`bdea044`](https://github.com/crypticorn-ai/api-client/commit/bdea044a6bc5180daed59b9a504866d2f519ae05))
|
134
|
+
|
135
|
+
- Integrate custom exception handling in auth handler
|
136
|
+
([`3f997e2`](https://github.com/crypticorn-ai/api-client/commit/3f997e23c1493296deaab23063b709d08702d5af))
|
137
|
+
|
138
|
+
### Testing
|
139
|
+
|
140
|
+
- Add jwt generation function
|
141
|
+
([`c2bc90f`](https://github.com/crypticorn-ai/api-client/commit/c2bc90fb878656642787755330a99c6b9056f14c))
|
142
|
+
|
143
|
+
- Update exception assertions with latest changes auth handler
|
144
|
+
([`4c220e5`](https://github.com/crypticorn-ai/api-client/commit/4c220e5bd31d1a7fd64d0f302044acfd4d4927e9))
|
145
|
+
|
146
|
+
|
147
|
+
## v2.5.0 (2025-04-26)
|
148
|
+
|
149
|
+
|
150
|
+
## v2.5.0-rc.5 (2025-04-26)
|
151
|
+
|
152
|
+
### Features
|
153
|
+
|
154
|
+
- Add details field to `ExceptionContent` to support additional details about the error
|
155
|
+
([`3ae6bc5`](https://github.com/crypticorn-ai/api-client/commit/3ae6bc57ae4e1e8a23c46511cdc5bf9c1eadc40d))
|
156
|
+
|
157
|
+
### Refactoring
|
158
|
+
|
159
|
+
- Rename exception class names
|
160
|
+
([`7f50e11`](https://github.com/crypticorn-ai/api-client/commit/7f50e114ceee596dcf3e25d3decfe78c849ad22e))
|
161
|
+
|
162
|
+
|
163
|
+
## v2.5.0-rc.4 (2025-04-26)
|
164
|
+
|
165
|
+
### Bug Fixes
|
166
|
+
|
167
|
+
- Remove wrong media type from `exception_response`
|
168
|
+
([`34920f0`](https://github.com/crypticorn-ai/api-client/commit/34920f0a51eded25e64324654d711e8716ee707c))
|
169
|
+
|
170
|
+
|
171
|
+
## v2.5.0-rc.3 (2025-04-26)
|
172
|
+
|
173
|
+
### Bug Fixes
|
174
|
+
|
175
|
+
- Fixes TypeError bug in deprecated decorator
|
176
|
+
([`4344581`](https://github.com/crypticorn-ai/api-client/commit/4344581f2737377334d2ab0203c8872e0acdfadb))
|
177
|
+
|
178
|
+
### Features
|
179
|
+
|
180
|
+
- Add exception handler and improve custom exception
|
181
|
+
([`64c05ea`](https://github.com/crypticorn-ai/api-client/commit/64c05eafd011556b49786034d58a4de264438bfd))
|
182
|
+
|
183
|
+
|
184
|
+
## v2.5.0-rc.2 (2025-04-25)
|
185
|
+
|
186
|
+
### Bug Fixes
|
187
|
+
|
188
|
+
- Enforce stricter types on Http Exception and improve descriptions and doc string
|
189
|
+
([`0941780`](https://github.com/crypticorn-ai/api-client/commit/094178099ca1d01d763f41cce6ac898cbc77a9a3))
|
190
|
+
|
191
|
+
|
192
|
+
## v2.5.0-rc.1 (2025-04-25)
|
193
|
+
|
194
|
+
### Build System
|
195
|
+
|
196
|
+
- Update generation script to catch fallback if local server is not running
|
197
|
+
([`b5e9a16`](https://github.com/crypticorn-ai/api-client/commit/b5e9a16092c836bea38657b7ddab252945696848))
|
198
|
+
|
199
|
+
### Chores
|
200
|
+
|
201
|
+
- Deprecate is_equal function
|
202
|
+
([`b3b3094`](https://github.com/crypticorn-ai/api-client/commit/b3b309428dc078673a5b1718a7075855bce0c098))
|
203
|
+
|
204
|
+
### Features
|
205
|
+
|
206
|
+
- Add custom Http Exception class with shared error codes
|
207
|
+
([`aa0d851`](https://github.com/crypticorn-ai/api-client/commit/aa0d8515936ea65951608a9704f8d840069ac15d))
|
208
|
+
|
209
|
+
|
210
|
+
## v2.4.7 (2025-04-17)
|
211
|
+
|
212
|
+
### Bug Fixes
|
213
|
+
|
214
|
+
- Raise custom WebsockeError in ws auth dependencies
|
215
|
+
([`94f8b62`](https://github.com/crypticorn-ai/api-client/commit/94f8b62593d3f44785b11812102c3a4ab9195073))
|
216
|
+
|
217
|
+
### Performance Improvements
|
218
|
+
|
219
|
+
- Make pandas an optional dependency to decrease package size
|
220
|
+
([`cb942c7`](https://github.com/crypticorn-ai/api-client/commit/cb942c74d5d7836f9cab1beb2b1d5ee6a9be4d4e))
|
221
|
+
|
222
|
+
|
223
|
+
## v2.4.6 (2025-04-13)
|
224
|
+
|
225
|
+
### Bug Fixes
|
226
|
+
|
227
|
+
- Fixes config override bug
|
228
|
+
([`58c096b`](https://github.com/crypticorn-ai/api-client/commit/58c096b98a738c2c318768bae9f28ddb100fe127))
|
229
|
+
|
230
|
+
### Documentation
|
231
|
+
|
232
|
+
- Extend usage section
|
233
|
+
([`2887872`](https://github.com/crypticorn-ai/api-client/commit/28878720eeb0ad7461165402c5521258c1c7dc0e))
|
234
|
+
|
235
|
+
|
236
|
+
## v2.4.5 (2025-04-13)
|
237
|
+
|
238
|
+
### Bug Fixes
|
239
|
+
|
240
|
+
- Fixes fallback bug with pydantic
|
241
|
+
([`70d1257`](https://github.com/crypticorn-ai/api-client/commit/70d125723c7e707f765892270e6aa6977b5b25a5))
|
242
|
+
|
243
|
+
|
244
|
+
## v2.4.4 (2025-04-12)
|
245
|
+
|
246
|
+
### Bug Fixes
|
247
|
+
|
248
|
+
- Auth fixes on auth module
|
249
|
+
([`7c3ed5d`](https://github.com/crypticorn-ai/api-client/commit/7c3ed5d460e464939716361014514baff50d380d))
|
250
|
+
|
251
|
+
### Documentation
|
252
|
+
|
253
|
+
- Update advanced usage section
|
254
|
+
([`1c804bf`](https://github.com/crypticorn-ai/api-client/commit/1c804bf6eddceb19c31a553c1ff98b31fdd8cbc0))
|
255
|
+
|
256
|
+
|
257
|
+
## v2.4.3 (2025-04-12)
|
258
|
+
|
259
|
+
### Bug Fixes
|
260
|
+
|
261
|
+
- Fix utils import
|
262
|
+
([`29cc346`](https://github.com/crypticorn-ai/api-client/commit/29cc346c2ff835f8732644fbe21aadf62153c1d0))
|
263
|
+
|
264
|
+
|
265
|
+
## v2.4.2 (2025-04-12)
|
266
|
+
|
267
|
+
### Bug Fixes
|
268
|
+
|
269
|
+
- Add global utils and add http error mapping
|
270
|
+
([`c3ce565`](https://github.com/crypticorn-ai/api-client/commit/c3ce565446535038f196f65b9fdf276a6ce71563))
|
271
|
+
|
272
|
+
|
273
|
+
## v2.4.1 (2025-04-12)
|
274
|
+
|
275
|
+
### Bug Fixes
|
276
|
+
|
277
|
+
- Add market metrics scopes
|
278
|
+
([`2dc0b4f`](https://github.com/crypticorn-ai/api-client/commit/2dc0b4f1761d5bae07c946448a820d1fc9814288))
|
279
|
+
|
280
|
+
### Documentation
|
281
|
+
|
282
|
+
- Update structure section
|
283
|
+
([`cc77abc`](https://github.com/crypticorn-ai/api-client/commit/cc77abc19b5813e335356f4539654e04b8ba2014))
|
284
|
+
|
285
|
+
|
286
|
+
## v2.4.0 (2025-04-12)
|
287
|
+
|
288
|
+
### Features
|
289
|
+
|
290
|
+
- Add enum fallbacks, enum validation mixin and enum tests
|
291
|
+
([`63bd61c`](https://github.com/crypticorn-ai/api-client/commit/63bd61cd826f9de1aec40d5f877d82126b59fbf8))
|
292
|
+
|
293
|
+
- Start cli support for initializing files from templates
|
294
|
+
([`5411d12`](https://github.com/crypticorn-ai/api-client/commit/5411d12704605e6d6af46477ff74e1ac44abd259))
|
295
|
+
|
296
|
+
|
297
|
+
## v2.3.0 (2025-04-11)
|
298
|
+
|
299
|
+
### Features
|
300
|
+
|
301
|
+
- Add exchange and market enums
|
302
|
+
([`8ad2d7d`](https://github.com/crypticorn-ai/api-client/commit/8ad2d7dc982261f3e710c3e61755ea9613d982c3))
|
303
|
+
|
304
|
+
|
305
|
+
## v2.2.3 (2025-04-11)
|
306
|
+
|
307
|
+
### Bug Fixes
|
308
|
+
|
309
|
+
- Update error codes
|
310
|
+
([`3121fb0`](https://github.com/crypticorn-ai/api-client/commit/3121fb0bb4d05a6d62083d806fbc636761254448))
|
311
|
+
|
312
|
+
|
313
|
+
## v2.2.2 (2025-04-09)
|
314
|
+
|
315
|
+
### Bug Fixes
|
316
|
+
|
317
|
+
- Refactor generated model name by partial_model and add to init file
|
318
|
+
([`e663848`](https://github.com/crypticorn-ai/api-client/commit/e6638483bdeb01121749b579268493c7c67227dc))
|
319
|
+
|
320
|
+
|
321
|
+
## v2.2.1 (2025-04-09)
|
322
|
+
|
323
|
+
### Bug Fixes
|
324
|
+
|
325
|
+
- Add pydantic decorator that makes all fields of a model optional
|
326
|
+
([`1ae4432`](https://github.com/crypticorn-ai/api-client/commit/1ae44325194be3ca86eb72be5d3edc2442dd00cc))
|
327
|
+
|
328
|
+
|
329
|
+
## v2.2.0 (2025-04-09)
|
330
|
+
|
331
|
+
### Bug Fixes
|
332
|
+
|
333
|
+
- Fix import issues (fixes #22) and add auth module to main client
|
334
|
+
([`7f3f7c2`](https://github.com/crypticorn-ai/api-client/commit/7f3f7c2120af053b916aaa045444331998986f7d))
|
335
|
+
|
336
|
+
### Documentation
|
337
|
+
|
338
|
+
- Update README with configuration and response type sections
|
339
|
+
([`a9fbccf`](https://github.com/crypticorn-ai/api-client/commit/a9fbccfed254573d3e62332901704f39d8a6777f))
|
340
|
+
|
341
|
+
### Features
|
342
|
+
|
343
|
+
- Add module based configuration options for the client
|
344
|
+
([`553400c`](https://github.com/crypticorn-ai/api-client/commit/553400c642d3da4459daa4fa9b56588e9f519581))
|
345
|
+
|
346
|
+
|
347
|
+
## v2.1.6 (2025-04-08)
|
348
|
+
|
349
|
+
### Bug Fixes
|
350
|
+
|
351
|
+
- Add market metrics module
|
352
|
+
([`2954702`](https://github.com/crypticorn-ai/api-client/commit/29547025a0226bca1b9da9cfff5c89d3ed30f497))
|
353
|
+
|
354
|
+
|
355
|
+
## v2.1.5 (2025-04-08)
|
356
|
+
|
357
|
+
### Bug Fixes
|
358
|
+
|
359
|
+
- Update auth and trade module
|
360
|
+
([`df936b6`](https://github.com/crypticorn-ai/api-client/commit/df936b6eb76179a3eac6d7997c82ef30e74de860))
|
361
|
+
|
362
|
+
|
363
|
+
## v2.1.4 (2025-04-08)
|
364
|
+
|
365
|
+
### Bug Fixes
|
366
|
+
|
367
|
+
- Refactor api errors
|
368
|
+
([`885a20e`](https://github.com/crypticorn-ai/api-client/commit/885a20ec839dcf14fb4ec8d946cea76dcb15a65e))
|
369
|
+
|
370
|
+
|
371
|
+
## v2.1.3 (2025-04-08)
|
372
|
+
|
373
|
+
### Bug Fixes
|
374
|
+
|
375
|
+
- Use SecurityScopes class instead of list[Scope]
|
376
|
+
([`b41c718`](https://github.com/crypticorn-ai/api-client/commit/b41c718acc108e05b307abb399137c2fc30e56fd))
|
377
|
+
|
378
|
+
|
379
|
+
## v2.1.2 (2025-04-08)
|
380
|
+
|
381
|
+
### Bug Fixes
|
382
|
+
|
383
|
+
- Allow scopes to be set as strings
|
384
|
+
([`600babb`](https://github.com/crypticorn-ai/api-client/commit/600babb87c93aeecdc42aa19ebff1076a76404ea))
|
385
|
+
|
386
|
+
|
387
|
+
## v2.1.1 (2025-04-08)
|
388
|
+
|
389
|
+
### Bug Fixes
|
390
|
+
|
391
|
+
- Remove three unused scopes
|
392
|
+
([`3167308`](https://github.com/crypticorn-ai/api-client/commit/3167308b3df0c68b8e4c134841b437f40315a8e9))
|
393
|
+
|
394
|
+
|
395
|
+
## v2.1.0 (2025-04-07)
|
396
|
+
|
397
|
+
### Features
|
398
|
+
|
399
|
+
- Add api key authorization and websocket auth support
|
400
|
+
([`adeb8bd`](https://github.com/crypticorn-ai/api-client/commit/adeb8bdf42ed3da1b63b430f291e920e97d62d14))
|
401
|
+
|
402
|
+
### Refactoring
|
403
|
+
|
404
|
+
- Rename scopes and make requirements more strict
|
405
|
+
([`abf53a6`](https://github.com/crypticorn-ai/api-client/commit/abf53a6de46703a3ac2b0c66c101ec58ae8928f2))
|
406
|
+
|
407
|
+
|
408
|
+
## v2.0.1 (2025-04-06)
|
409
|
+
|
410
|
+
### Bug Fixes
|
411
|
+
|
412
|
+
- Refactor Scopes and Exception handling in auth client
|
413
|
+
([`8e9a64a`](https://github.com/crypticorn-ai/api-client/commit/8e9a64aa091cc3c840230ad2a7167c98426ae5c9))
|
414
|
+
|
415
|
+
### Build System
|
416
|
+
|
417
|
+
- Fix ci syntax and ssh errors
|
418
|
+
([`9ecfaa4`](https://github.com/crypticorn-ai/api-client/commit/9ecfaa4f09dfa4ae1667f9c1b9307d2623288f5f))
|
419
|
+
|
420
|
+
- Separate ci and update package config and deps
|
421
|
+
([`5367f2a`](https://github.com/crypticorn-ai/api-client/commit/5367f2a79028ed1f5e2c05ddded91a9ddbd0d9fa))
|
422
|
+
|
423
|
+
- Update ci
|
424
|
+
([`799fd96`](https://github.com/crypticorn-ai/api-client/commit/799fd962529b0120b290c3f5c253e9050b40a41b))
|
425
|
+
|
426
|
+
### Documentation
|
427
|
+
|
428
|
+
- Update Readme
|
429
|
+
([`39825b1`](https://github.com/crypticorn-ai/api-client/commit/39825b1506c2d5663ae8eecc6f73f8d6bed5692e))
|
430
|
+
|
431
|
+
|
432
|
+
## v2.0.0 (2025-04-06)
|
433
|
+
|
434
|
+
### Build System
|
435
|
+
|
436
|
+
- Add psr build_command
|
437
|
+
([`b661846`](https://github.com/crypticorn-ai/api-client/commit/b6618464c7d7727d34ab4a448f2e0104fcf4f3cc))
|
438
|
+
|
439
|
+
- Fix ci-cd
|
440
|
+
([`6edcb36`](https://github.com/crypticorn-ai/api-client/commit/6edcb3611673f191ec482e9d40614c7c2d2b59f3))
|
441
|
+
|
442
|
+
- Fix signing error in ci
|
443
|
+
([`0dcbf22`](https://github.com/crypticorn-ai/api-client/commit/0dcbf22892dbc17297cf9b91b35d62ec205a76ea))
|
444
|
+
|
445
|
+
- Fixes pypi packages dir
|
446
|
+
([`a25a458`](https://github.com/crypticorn-ai/api-client/commit/a25a4580c6a656e30d55b52c837480b833cb9aab))
|
447
|
+
|
448
|
+
- Update ci cd and configure PSR
|
449
|
+
([`e5d6fa5`](https://github.com/crypticorn-ai/api-client/commit/e5d6fa5d2ff4355f59fd4c92e4b9bed77fcae2d8))
|
450
|
+
|
451
|
+
BREAKING CHANGE: add several more backend api clients and restructure the modules
|
452
|
+
|
453
|
+
|
454
|
+
## v1.0.0 (2024-11-27)
|
455
|
+
|
456
|
+
### Continuous Integration
|
457
|
+
|
458
|
+
- Trigger workflow on PRs and changes to public folder (close #4)
|
459
|
+
([`08b9317`](https://github.com/crypticorn-ai/api-client/commit/08b931780ac872c6034883cd5ab83d2c7b380414))
|
460
|
+
|
461
|
+
### Features
|
462
|
+
|
463
|
+
- Add get Economics News
|
464
|
+
([`81575b1`](https://github.com/crypticorn-ai/api-client/commit/81575b18a7c925c5dafe18bd9e15807a282134e3))
|
465
|
+
|
466
|
+
- Add get Economics News
|
467
|
+
([`ccbfb7a`](https://github.com/crypticorn-ai/api-client/commit/ccbfb7a3d857ff5d531ec06f3b9df05b63f8dbf3))
|
468
|
+
|
469
|
+
- Add get Economics News
|
470
|
+
([`bc6574d`](https://github.com/crypticorn-ai/api-client/commit/bc6574dcadcdc9d05e860fde0aa285a4e7dcba32))
|
@@ -8,4 +8,7 @@ from crypticorn.common.enums import *
|
|
8
8
|
from crypticorn.common.utils import *
|
9
9
|
from crypticorn.common.exceptions import *
|
10
10
|
from crypticorn.common.pagination import *
|
11
|
-
from crypticorn.common.
|
11
|
+
from crypticorn.common.logging import *
|
12
|
+
from crypticorn.common.ansi_colors import *
|
13
|
+
from crypticorn.common.router.status_router import router as status_router
|
14
|
+
from crypticorn.common.router.admin_router import router as admin_router
|
@@ -0,0 +1,40 @@
|
|
1
|
+
from enum import StrEnum
|
2
|
+
from typing import TYPE_CHECKING
|
3
|
+
|
4
|
+
if TYPE_CHECKING:
|
5
|
+
pass
|
6
|
+
|
7
|
+
|
8
|
+
class AnsiColors(StrEnum):
|
9
|
+
# Regular Text Colors
|
10
|
+
BLACK = "\033[30m" # black
|
11
|
+
RED = "\033[31m" # red
|
12
|
+
GREEN = "\033[32m" # green
|
13
|
+
YELLOW = "\033[33m" # yellow
|
14
|
+
BLUE = "\033[34m" # blue
|
15
|
+
MAGENTA = "\033[35m" # magenta
|
16
|
+
CYAN = "\033[36m" # cyan
|
17
|
+
WHITE = "\033[37m" # white
|
18
|
+
|
19
|
+
# Bright Text Colors
|
20
|
+
BLACK_BRIGHT = "\033[90m" # black_bright
|
21
|
+
RED_BRIGHT = "\033[91m" # red_bright
|
22
|
+
GREEN_BRIGHT = "\033[92m" # green_bright
|
23
|
+
YELLOW_BRIGHT = "\033[93m" # yellow_bright
|
24
|
+
BLUE_BRIGHT = "\033[94m" # blue_bright
|
25
|
+
MAGENTA_BRIGHT = "\033[95m" # magenta_bright
|
26
|
+
CYAN_BRIGHT = "\033[96m" # cyan_bright
|
27
|
+
WHITE_BRIGHT = "\033[97m" # white_bright
|
28
|
+
|
29
|
+
# Bold Text Colors
|
30
|
+
BLACK_BOLD = "\033[1;30m" # black_bold
|
31
|
+
RED_BOLD = "\033[1;31m" # red_bold
|
32
|
+
GREEN_BOLD = "\033[1;32m" # green_bold
|
33
|
+
YELLOW_BOLD = "\033[1;33m" # yellow_bold
|
34
|
+
BLUE_BOLD = "\033[1;34m" # blue_bold
|
35
|
+
MAGENTA_BOLD = "\033[1;35m" # magenta_bold
|
36
|
+
CYAN_BOLD = "\033[1;36m" # cyan_bold
|
37
|
+
WHITE_BOLD = "\033[1;37m" # white_bold
|
38
|
+
|
39
|
+
# Reset Color
|
40
|
+
RESET = "\033[0m"
|
@@ -75,7 +75,7 @@ class AuthHandler:
|
|
75
75
|
raise HTTPException(
|
76
76
|
content=ExceptionContent(
|
77
77
|
error=ApiError.INSUFFICIENT_SCOPES,
|
78
|
-
message="Insufficient scopes to access this resource",
|
78
|
+
message="Insufficient scopes to access this resource (required: " + ", ".join(api_scopes) + ")",
|
79
79
|
),
|
80
80
|
)
|
81
81
|
|
@@ -5,6 +5,9 @@ from fastapi import HTTPException as FastAPIHTTPException, Request, FastAPI
|
|
5
5
|
from fastapi.exceptions import RequestValidationError, ResponseValidationError
|
6
6
|
from fastapi.responses import JSONResponse
|
7
7
|
from crypticorn.common import ApiError, ApiErrorIdentifier, ApiErrorType, ApiErrorLevel
|
8
|
+
import logging
|
9
|
+
|
10
|
+
logger = logging.getLogger(__name__)
|
8
11
|
|
9
12
|
|
10
13
|
class ExceptionType(StrEnum):
|
@@ -89,37 +92,44 @@ class WebSocketException(HTTPException):
|
|
89
92
|
)
|
90
93
|
|
91
94
|
|
92
|
-
async def general_handler(request: Request, exc: Exception):
|
95
|
+
async def general_handler(request: Request, exc: Exception) -> JSONResponse:
|
93
96
|
"""This is the default exception handler for all exceptions."""
|
94
97
|
body = ExceptionContent(message=str(exc), error=ApiError.UNKNOWN_ERROR)
|
95
|
-
|
98
|
+
res = JSONResponse(
|
96
99
|
status_code=body.enrich().status_code, content=HTTPException(content=body).detail
|
97
100
|
)
|
101
|
+
logger.error(f"Response validation error: {res}")
|
102
|
+
return res
|
98
103
|
|
99
104
|
|
100
|
-
async def request_validation_handler(request: Request, exc: RequestValidationError):
|
105
|
+
async def request_validation_handler(request: Request, exc: RequestValidationError) -> JSONResponse:
|
101
106
|
"""This is the exception handler for all request validation errors."""
|
102
107
|
body = ExceptionContent(message=str(exc), error=ApiError.INVALID_DATA_REQUEST)
|
103
|
-
|
108
|
+
res = JSONResponse(
|
104
109
|
status_code=body.enrich().status_code, content=HTTPException(content=body).detail
|
105
110
|
)
|
111
|
+
logger.error(f"Response validation error: {res}")
|
112
|
+
return res
|
106
113
|
|
107
114
|
|
108
|
-
async def response_validation_handler(request: Request, exc: ResponseValidationError):
|
115
|
+
async def response_validation_handler(request: Request, exc: ResponseValidationError) -> JSONResponse:
|
109
116
|
"""This is the exception handler for all response validation errors."""
|
110
117
|
body = ExceptionContent(message=str(exc), error=ApiError.INVALID_DATA_RESPONSE)
|
111
|
-
|
118
|
+
res = JSONResponse(
|
112
119
|
status_code=body.enrich().status_code, content=HTTPException(content=body).detail
|
113
120
|
)
|
121
|
+
logger.error(f"Response validation error: {res}")
|
122
|
+
return res
|
114
123
|
|
115
124
|
|
116
|
-
async def http_handler(request: Request, exc: HTTPException):
|
125
|
+
async def http_handler(request: Request, exc: HTTPException) -> JSONResponse:
|
117
126
|
"""This is the exception handler for HTTPExceptions. It unwraps the HTTPException and returns the detail in a flat JSON response."""
|
127
|
+
logger.error(f"HTTP error: {exc.detail}")
|
118
128
|
return JSONResponse(status_code=exc.status_code, content=exc.detail)
|
119
129
|
|
120
130
|
|
121
131
|
def register_exception_handlers(app: FastAPI):
|
122
|
-
"""Utility to register serveral exception handlers in one go. Catches Exception, HTTPException and Data Validation errors and responds with a unified json body."""
|
132
|
+
"""Utility to register serveral exception handlers in one go. Catches Exception, HTTPException and Data Validation errors, logs them and responds with a unified json body."""
|
123
133
|
app.add_exception_handler(Exception, general_handler)
|
124
134
|
app.add_exception_handler(FastAPIHTTPException, http_handler)
|
125
135
|
app.add_exception_handler(RequestValidationError, request_validation_handler)
|