crypticorn 2.16.0__tar.gz → 2.17.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.16.0 → crypticorn-2.17.0rc1}/CHANGELOG.md +8 -0
- {crypticorn-2.16.0/crypticorn.egg-info → crypticorn-2.17.0rc1}/PKG-INFO +2 -1
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/common/__init__.py +2 -0
- crypticorn-2.17.0rc1/crypticorn/common/metrics.py +20 -0
- crypticorn-2.17.0rc1/crypticorn/common/middleware.py +69 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/common/router/admin_router.py +12 -2
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/common/warnings.py +6 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1/crypticorn.egg-info}/PKG-INFO +2 -1
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn.egg-info/SOURCES.txt +1 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn.egg-info/requires.txt +1 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/pyproject.toml +1 -1
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/requirements/main.txt +1 -0
- crypticorn-2.16.0/crypticorn/common/middleware.py +0 -28
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/LICENSE +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/MANIFEST.in +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/README.md +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/__init__.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/auth/__init__.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/auth/client/__init__.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/auth/client/api/__init__.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/auth/client/api/admin_api.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/auth/client/api/auth_api.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/auth/client/api/service_api.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/auth/client/api/user_api.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/auth/client/api/wallet_api.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/auth/client/api_client.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/auth/client/api_response.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/auth/client/configuration.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/auth/client/exceptions.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/auth/client/models/__init__.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/auth/client/models/add_wallet200_response.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/auth/client/models/add_wallet_request.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/auth/client/models/authorize_user200_response.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/auth/client/models/authorize_user200_response_auth.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/auth/client/models/authorize_user_request.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/auth/client/models/create_api_key200_response.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/auth/client/models/create_api_key_request.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/auth/client/models/create_user_request.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/auth/client/models/get_api_keys200_response_inner.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/auth/client/models/list_wallets200_response.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/auth/client/models/list_wallets200_response_balances_inner.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/auth/client/models/list_wallets200_response_balances_inner_sale_round.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/auth/client/models/list_wallets200_response_balances_inner_wallet.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/auth/client/models/list_wallets200_response_balances_inner_wallet_vesting_wallets_inner.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/auth/client/models/list_wallets200_response_data_inner.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/auth/client/models/list_wallets200_response_user_value.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/auth/client/models/logout_default_response.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/auth/client/models/logout_default_response_issues_inner.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/auth/client/models/oauth_callback200_response.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/auth/client/models/oauth_callback200_response_user.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/auth/client/models/refresh_token_info200_response.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/auth/client/models/refresh_token_info200_response_user_session.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/auth/client/models/resend_verification_email_request.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/auth/client/models/revoke_user_tokens_request.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/auth/client/models/rotate_tokens200_response.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/auth/client/models/token_info200_response.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/auth/client/models/unlink_wallet_request.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/auth/client/models/update_user_request.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/auth/client/models/user_by_username200_response.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/auth/client/models/user_reset_password_request.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/auth/client/models/user_set_password_request.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/auth/client/models/verify200_response.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/auth/client/models/verify_email200_response.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/auth/client/models/verify_email200_response_auth.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/auth/client/models/verify_email200_response_auth_auth.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/auth/client/models/verify_email_request.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/auth/client/models/verify_wallet_request.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/auth/client/models/wallet_verified200_response.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/auth/client/models/whoami200_response.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/auth/client/py.typed +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/auth/client/rest.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/auth/main.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/cli/__init__.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/cli/__main__.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/cli/init.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/cli/templates/Dockerfile +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/cli/templates/__init__.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/cli/templates/auth.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/cli/templates/dependabot.yml +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/cli/templates/merge-env.sh +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/cli/templates/ruff.yml +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/cli/version.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/client.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/common/ansi_colors.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/common/auth.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/common/decorators.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/common/enums.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/common/errors.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/common/exceptions.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/common/logging.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/common/mixins.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/common/openapi.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/common/pagination.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/common/router/status_router.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/common/scopes.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/common/urls.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/common/utils.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/hive/__init__.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/hive/client/__init__.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/hive/client/api/__init__.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/hive/client/api/admin_api.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/hive/client/api/data_api.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/hive/client/api/models_api.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/hive/client/api/status_api.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/hive/client/api_client.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/hive/client/api_response.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/hive/client/configuration.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/hive/client/exceptions.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/hive/client/models/__init__.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/hive/client/models/api_error_identifier.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/hive/client/models/api_error_level.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/hive/client/models/api_error_type.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/hive/client/models/coin_info.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/hive/client/models/coins.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/hive/client/models/data_download_response.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/hive/client/models/data_info.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/hive/client/models/data_options.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/hive/client/models/data_version.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/hive/client/models/data_version_info.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/hive/client/models/download_links.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/hive/client/models/evaluation.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/hive/client/models/evaluation_response.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/hive/client/models/exception_detail.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/hive/client/models/feature_size.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/hive/client/models/log_level.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/hive/client/models/model_create.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/hive/client/models/model_read.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/hive/client/models/model_status.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/hive/client/models/model_update.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/hive/client/models/target.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/hive/client/models/target_info.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/hive/client/models/target_type.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/hive/client/py.typed +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/hive/client/rest.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/hive/main.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/hive/utils.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/klines/__init__.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/klines/client/__init__.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/klines/client/api/__init__.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/klines/client/api/admin_api.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/klines/client/api/change_in_timeframe_api.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/klines/client/api/funding_rates_api.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/klines/client/api/ohlcv_data_api.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/klines/client/api/status_api.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/klines/client/api/symbols_api.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/klines/client/api/udf_api.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/klines/client/api_client.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/klines/client/api_response.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/klines/client/configuration.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/klines/client/exceptions.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/klines/client/models/__init__.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/klines/client/models/api_error_identifier.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/klines/client/models/api_error_level.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/klines/client/models/api_error_type.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/klines/client/models/change_in_timeframe.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/klines/client/models/exception_detail.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/klines/client/models/funding_rate.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/klines/client/models/funding_rate_response.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/klines/client/models/internal_exchange.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/klines/client/models/log_level.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/klines/client/models/market_type.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/klines/client/models/ohlcv.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/klines/client/models/resolution.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/klines/client/models/search_symbol.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/klines/client/models/sort_direction.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/klines/client/models/symbol_group.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/klines/client/models/symbol_info.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/klines/client/models/symbol_type.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/klines/client/models/timeframe.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/klines/client/models/udf_config.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/klines/client/py.typed +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/klines/client/rest.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/klines/main.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/metrics/__init__.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/metrics/client/__init__.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/metrics/client/api/__init__.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/metrics/client/api/admin_api.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/metrics/client/api/exchanges_api.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/metrics/client/api/indicators_api.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/metrics/client/api/logs_api.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/metrics/client/api/marketcap_api.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/metrics/client/api/markets_api.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/metrics/client/api/quote_currencies_api.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/metrics/client/api/status_api.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/metrics/client/api/tokens_api.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/metrics/client/api_client.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/metrics/client/api_response.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/metrics/client/configuration.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/metrics/client/exceptions.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/metrics/client/models/__init__.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/metrics/client/models/api_error_identifier.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/metrics/client/models/api_error_level.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/metrics/client/models/api_error_type.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/metrics/client/models/exception_detail.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/metrics/client/models/exchange_availability.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/metrics/client/models/exchange_mapping.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/metrics/client/models/internal_exchange.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/metrics/client/models/log_level.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/metrics/client/models/market_type.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/metrics/client/models/marketcap_ranking.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/metrics/client/models/marketcap_symbol_ranking.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/metrics/client/models/ohlcv.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/metrics/client/models/severity.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/metrics/client/models/time_interval.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/metrics/client/models/trading_status.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/metrics/client/py.typed +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/metrics/client/rest.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/metrics/main.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/pay/__init__.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/pay/client/__init__.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/pay/client/api/__init__.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/pay/client/api/admin_api.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/pay/client/api/now_payments_api.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/pay/client/api/payments_api.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/pay/client/api/products_api.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/pay/client/api/status_api.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/pay/client/api_client.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/pay/client/api_response.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/pay/client/configuration.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/pay/client/exceptions.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/pay/client/models/__init__.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/pay/client/models/api_error_identifier.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/pay/client/models/api_error_level.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/pay/client/models/api_error_type.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/pay/client/models/exception_detail.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/pay/client/models/log_level.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/pay/client/models/now_create_invoice_req.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/pay/client/models/now_create_invoice_res.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/pay/client/models/payment.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/pay/client/models/payment_status.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/pay/client/models/product.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/pay/client/models/product_create.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/pay/client/models/product_update.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/pay/client/models/provider.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/pay/client/models/scope.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/pay/client/models/subscription.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/pay/client/py.typed +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/pay/client/rest.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/pay/main.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/trade/__init__.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/trade/client/__init__.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/trade/client/api/__init__.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/trade/client/api/admin_api.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/trade/client/api/api_keys_api.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/trade/client/api/bots_api.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/trade/client/api/exchanges_api.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/trade/client/api/futures_trading_panel_api.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/trade/client/api/notifications_api.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/trade/client/api/orders_api.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/trade/client/api/status_api.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/trade/client/api/strategies_api.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/trade/client/api/trading_actions_api.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/trade/client/api_client.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/trade/client/api_response.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/trade/client/configuration.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/trade/client/exceptions.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/trade/client/models/__init__.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/trade/client/models/api_error_identifier.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/trade/client/models/api_error_level.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/trade/client/models/api_error_type.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/trade/client/models/bot.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/trade/client/models/bot_create.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/trade/client/models/bot_status.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/trade/client/models/bot_update.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/trade/client/models/exception_detail.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/trade/client/models/exchange.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/trade/client/models/exchange_key.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/trade/client/models/exchange_key_create.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/trade/client/models/exchange_key_update.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/trade/client/models/execution_ids.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/trade/client/models/futures_balance.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/trade/client/models/futures_trading_action.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/trade/client/models/futures_trading_action_create.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/trade/client/models/log_level.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/trade/client/models/margin_mode.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/trade/client/models/market_type.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/trade/client/models/notification.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/trade/client/models/notification_create.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/trade/client/models/notification_update.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/trade/client/models/order.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/trade/client/models/order_status.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/trade/client/models/post_futures_action.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/trade/client/models/spot_trading_action_create.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/trade/client/models/strategy.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/trade/client/models/strategy_create.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/trade/client/models/strategy_exchange_info.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/trade/client/models/strategy_update.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/trade/client/models/tpsl.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/trade/client/models/tpsl_create.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/trade/client/models/trading_action_type.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/trade/client/py.typed +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/trade/client/rest.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/trade/main.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn.egg-info/dependency_links.txt +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn.egg-info/entry_points.txt +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn.egg-info/top_level.txt +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/requirements/dev.txt +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/requirements/extra.txt +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/requirements/test.txt +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/setup.cfg +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/static/favicon.svg +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/static/logo.svg +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/static/pip-structure.drawio +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/static/pip-structure.svg +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/tests/test_auth_client.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/tests/test_config.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/tests/test_custom_session.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/tests/test_enums.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/tests/test_errors.py +0 -0
- {crypticorn-2.16.0 → crypticorn-2.17.0rc1}/tests/test_pagination.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: crypticorn
|
3
|
-
Version: 2.
|
3
|
+
Version: 2.17.0rc1
|
4
4
|
Summary: Maximise Your Crypto Trading Profits with Machine Learning
|
5
5
|
Author-email: Crypticorn <timon@crypticorn.com>
|
6
6
|
License-Expression: MIT
|
@@ -25,6 +25,7 @@ Requires-Dist: click<9.0.0,>=8.0.0
|
|
25
25
|
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
|
+
Requires-Dist: prometheus-client<1.0.0,>=0.22.0
|
28
29
|
Requires-Dist: urllib3<3.0.0,>=1.25.3
|
29
30
|
Requires-Dist: python_dateutil<3.0.0,>=2.8.2
|
30
31
|
Requires-Dist: aiohttp<4.0.0,>=3.8.4
|
@@ -13,5 +13,7 @@ from crypticorn.common.ansi_colors import *
|
|
13
13
|
from crypticorn.common.middleware import *
|
14
14
|
from crypticorn.common.warnings import *
|
15
15
|
from crypticorn.common.openapi import *
|
16
|
+
from crypticorn.common.metrics import *
|
16
17
|
from crypticorn.common.router.status_router import router as status_router
|
17
18
|
from crypticorn.common.router.admin_router import router as admin_router
|
19
|
+
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# metrics/registry.py
|
2
|
+
from prometheus_client import (
|
3
|
+
Counter, Gauge, Histogram, Summary, CollectorRegistry
|
4
|
+
)
|
5
|
+
|
6
|
+
registry = CollectorRegistry()
|
7
|
+
|
8
|
+
http_requests_total = Counter(
|
9
|
+
"http_requests_total",
|
10
|
+
"Total HTTP requests",
|
11
|
+
["method", "endpoint", "status_code"],
|
12
|
+
registry=registry
|
13
|
+
)
|
14
|
+
|
15
|
+
http_request_duration_seconds = Histogram(
|
16
|
+
"http_request_duration_seconds",
|
17
|
+
"HTTP request duration in seconds",
|
18
|
+
["endpoint"],
|
19
|
+
registry=registry
|
20
|
+
)
|
@@ -0,0 +1,69 @@
|
|
1
|
+
import time
|
2
|
+
from fastapi import FastAPI
|
3
|
+
from fastapi.middleware.cors import CORSMiddleware
|
4
|
+
from starlette.middleware.base import BaseHTTPMiddleware
|
5
|
+
from starlette.requests import Request
|
6
|
+
from crypticorn.common.logging import configure_logging
|
7
|
+
from contextlib import asynccontextmanager
|
8
|
+
from typing_extensions import deprecated
|
9
|
+
import warnings
|
10
|
+
from crypticorn.common.warnings import CrypticornDeprecatedSince217
|
11
|
+
from crypticorn.common.metrics import http_requests_total, http_request_duration_seconds
|
12
|
+
|
13
|
+
class PrometheusMiddleware(BaseHTTPMiddleware):
|
14
|
+
async def dispatch(self, request, call_next):
|
15
|
+
start = time.perf_counter()
|
16
|
+
response = await call_next(request)
|
17
|
+
duration = time.perf_counter() - start
|
18
|
+
|
19
|
+
http_requests_total.labels(
|
20
|
+
method=request.method,
|
21
|
+
endpoint=request.url.path,
|
22
|
+
status_code=response.status_code
|
23
|
+
).inc()
|
24
|
+
|
25
|
+
http_request_duration_seconds.labels(
|
26
|
+
endpoint=request.url.path
|
27
|
+
).observe(duration)
|
28
|
+
|
29
|
+
return response
|
30
|
+
|
31
|
+
|
32
|
+
@deprecated("Use add_middleware instead", category=None)
|
33
|
+
def add_cors_middleware(app: "FastAPI"):
|
34
|
+
warnings.warn("add_cors_middleware is deprecated. Use add_middleware instead.", CrypticornDeprecatedSince217)
|
35
|
+
app.add_middleware(
|
36
|
+
CORSMiddleware,
|
37
|
+
allow_origins=[
|
38
|
+
"http://localhost:5173", # vite dev server
|
39
|
+
"http://localhost:4173", # vite preview server
|
40
|
+
],
|
41
|
+
allow_origin_regex="^https://([a-zA-Z0-9-]+.)*crypticorn.(dev|com)/?$", # matches (multiple or no) subdomains of crypticorn.dev and crypticorn.com
|
42
|
+
allow_credentials=True,
|
43
|
+
allow_methods=["*"],
|
44
|
+
allow_headers=["*"],
|
45
|
+
)
|
46
|
+
|
47
|
+
def add_middleware(app: "FastAPI"):
|
48
|
+
app.add_middleware(
|
49
|
+
CORSMiddleware,
|
50
|
+
allow_origins=[
|
51
|
+
"http://localhost:5173", # vite dev server
|
52
|
+
"http://localhost:4173", # vite preview server
|
53
|
+
],
|
54
|
+
allow_origin_regex="^https://([a-zA-Z0-9-]+.)*crypticorn.(dev|com)/?$", # matches (multiple or no) subdomains of crypticorn.dev and crypticorn.com
|
55
|
+
allow_credentials=True,
|
56
|
+
allow_methods=["*"],
|
57
|
+
allow_headers=["*"],
|
58
|
+
)
|
59
|
+
app.add_middleware(PrometheusMiddleware)
|
60
|
+
|
61
|
+
|
62
|
+
@asynccontextmanager
|
63
|
+
async def default_lifespan(app: FastAPI):
|
64
|
+
"""Default lifespan for the applications.
|
65
|
+
This is used to configure the logging for the application.
|
66
|
+
To override this, pass a different lifespan to the FastAPI constructor or call this lifespan within a custom lifespan.
|
67
|
+
"""
|
68
|
+
configure_logging()
|
69
|
+
yield
|
@@ -11,10 +11,12 @@ import threading
|
|
11
11
|
import time
|
12
12
|
import psutil
|
13
13
|
import re
|
14
|
-
|
14
|
+
import logging
|
15
15
|
from typing import Literal
|
16
|
+
from fastapi import APIRouter, Query, Response
|
17
|
+
from prometheus_client import generate_latest, CONTENT_TYPE_LATEST
|
16
18
|
from crypticorn.common.logging import LogLevel
|
17
|
-
import
|
19
|
+
from crypticorn.common.metrics import registry
|
18
20
|
|
19
21
|
router = APIRouter(tags=["Admin"], prefix="/admin")
|
20
22
|
|
@@ -104,3 +106,11 @@ def list_installed_packages(
|
|
104
106
|
or any(re.match(pattern, dist.metadata["Name"]) for pattern in include)
|
105
107
|
}
|
106
108
|
return dict(sorted(packages.items()))
|
109
|
+
|
110
|
+
|
111
|
+
@router.get("/metrics", operation_id="getMetrics")
|
112
|
+
def metrics():
|
113
|
+
"""
|
114
|
+
Get Prometheus metrics for the application. Returns plain text.
|
115
|
+
"""
|
116
|
+
return Response(generate_latest(registry), media_type=CONTENT_TYPE_LATEST)
|
@@ -62,6 +62,12 @@ class CrypticornDeprecatedSince215(CrypticornDeprecationWarning):
|
|
62
62
|
def __init__(self, message: str, *args: object) -> None:
|
63
63
|
super().__init__(message, *args, since=(2, 15), expected_removal=(3, 0))
|
64
64
|
|
65
|
+
class CrypticornDeprecatedSince217(CrypticornDeprecationWarning):
|
66
|
+
"""A specific `CrypticornDeprecationWarning` subclass defining functionality deprecated since Crypticorn 2.17."""
|
67
|
+
|
68
|
+
def __init__(self, message: str, *args: object) -> None:
|
69
|
+
super().__init__(message, *args, since=(2, 17), expected_removal=(3, 0))
|
70
|
+
|
65
71
|
|
66
72
|
class CrypticornExperimentalWarning(Warning):
|
67
73
|
"""A Crypticorn specific experimental functionality warning.
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: crypticorn
|
3
|
-
Version: 2.
|
3
|
+
Version: 2.17.0rc1
|
4
4
|
Summary: Maximise Your Crypto Trading Profits with Machine Learning
|
5
5
|
Author-email: Crypticorn <timon@crypticorn.com>
|
6
6
|
License-Expression: MIT
|
@@ -25,6 +25,7 @@ Requires-Dist: click<9.0.0,>=8.0.0
|
|
25
25
|
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
|
+
Requires-Dist: prometheus-client<1.0.0,>=0.22.0
|
28
29
|
Requires-Dist: urllib3<3.0.0,>=1.25.3
|
29
30
|
Requires-Dist: python_dateutil<3.0.0,>=2.8.2
|
30
31
|
Requires-Dist: aiohttp<4.0.0,>=3.8.4
|
@@ -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.
|
8
|
+
version = "2.17.0-rc.1"
|
9
9
|
keywords = ["machine learning", "data science", "crypto", "modelling"]
|
10
10
|
dynamic = ["dependencies", "optional-dependencies"]
|
11
11
|
|
@@ -4,6 +4,7 @@ click >= 8.0.0, < 9.0.0
|
|
4
4
|
psutil >= 7.0.0, < 8.0.0
|
5
5
|
setuptools >= 80.0.0, < 81.0.0
|
6
6
|
strenum # drop this once we drop python 3.10, StrEnum is available in stdlib (enum) in 3.11+
|
7
|
+
prometheus-client >= 0.22.0, < 1.0.0
|
7
8
|
|
8
9
|
# crypticorn/trade/requirements.txt
|
9
10
|
urllib3 >= 1.25.3, < 3.0.0
|
@@ -1,28 +0,0 @@
|
|
1
|
-
from fastapi import FastAPI
|
2
|
-
from fastapi.middleware.cors import CORSMiddleware
|
3
|
-
from crypticorn.common.logging import configure_logging
|
4
|
-
from contextlib import asynccontextmanager
|
5
|
-
|
6
|
-
|
7
|
-
def add_cors_middleware(app: "FastAPI"):
|
8
|
-
app.add_middleware(
|
9
|
-
CORSMiddleware,
|
10
|
-
allow_origins=[
|
11
|
-
"http://localhost:5173", # vite dev server
|
12
|
-
"http://localhost:4173", # vite preview server
|
13
|
-
],
|
14
|
-
allow_origin_regex="^https://([a-zA-Z0-9-]+.)*crypticorn.(dev|com)/?$", # matches (multiple or no) subdomains of crypticorn.dev and crypticorn.com
|
15
|
-
allow_credentials=True,
|
16
|
-
allow_methods=["*"],
|
17
|
-
allow_headers=["*"],
|
18
|
-
)
|
19
|
-
|
20
|
-
|
21
|
-
@asynccontextmanager
|
22
|
-
async def default_lifespan(app: FastAPI):
|
23
|
-
"""Default lifespan for the applications.
|
24
|
-
This is used to configure the logging for the application.
|
25
|
-
To override this, pass a different lifespan to the FastAPI constructor or call this lifespan within a custom lifespan.
|
26
|
-
"""
|
27
|
-
configure_logging()
|
28
|
-
yield
|
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.16.0 → crypticorn-2.17.0rc1}/crypticorn/auth/client/models/add_wallet200_response.py
RENAMED
File without changes
|
{crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/auth/client/models/add_wallet_request.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/auth/client/models/authorize_user_request.py
RENAMED
File without changes
|
File without changes
|
{crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/auth/client/models/create_api_key_request.py
RENAMED
File without changes
|
{crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/auth/client/models/create_user_request.py
RENAMED
File without changes
|
File without changes
|
{crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/auth/client/models/list_wallets200_response.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.16.0 → crypticorn-2.17.0rc1}/crypticorn/auth/client/models/logout_default_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
|
{crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/auth/client/models/token_info200_response.py
RENAMED
File without changes
|
{crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/auth/client/models/unlink_wallet_request.py
RENAMED
File without changes
|
{crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/auth/client/models/update_user_request.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/auth/client/models/verify200_response.py
RENAMED
File without changes
|
{crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/auth/client/models/verify_email200_response.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/auth/client/models/verify_email_request.py
RENAMED
File without changes
|
{crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/auth/client/models/verify_wallet_request.py
RENAMED
File without changes
|
File without changes
|
{crypticorn-2.16.0 → crypticorn-2.17.0rc1}/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
|
{crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/hive/client/models/api_error_identifier.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/hive/client/models/data_download_response.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/hive/client/models/data_version_info.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/hive/client/models/evaluation_response.py
RENAMED
File without changes
|
{crypticorn-2.16.0 → crypticorn-2.17.0rc1}/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
|
{crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/klines/client/api/change_in_timeframe_api.py
RENAMED
File without changes
|
{crypticorn-2.16.0 → crypticorn-2.17.0rc1}/crypticorn/klines/client/api/funding_rates_api.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|