crypticorn 2.10.3__tar.gz → 2.11.4__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.10.3 → crypticorn-2.11.4}/CHANGELOG.md +83 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/MANIFEST.in +1 -1
- {crypticorn-2.10.3/crypticorn.egg-info → crypticorn-2.11.4}/PKG-INFO +12 -21
- {crypticorn-2.10.3 → crypticorn-2.11.4}/README.md +8 -3
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/auth/client/configuration.py +2 -2
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/auth/client/models/create_api_key_request.py +2 -1
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/auth/client/models/get_api_keys200_response_inner.py +2 -1
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/cli/templates/merge-env.sh +3 -5
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/client.py +2 -2
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/common/ansi_colors.py +4 -1
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/common/auth.py +9 -8
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/common/enums.py +5 -1
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/common/errors.py +6 -1
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/common/exceptions.py +5 -1
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/common/logging.py +5 -1
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/common/scopes.py +14 -1
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/common/urls.py +5 -1
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/common/utils.py +3 -3
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/common/warnings.py +2 -1
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/klines/main.py +13 -1
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/metrics/client/__init__.py +4 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/metrics/client/api/exchanges_api.py +7 -6
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/metrics/client/api/indicators_api.py +12 -6
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/metrics/client/api/marketcap_api.py +49 -31
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/metrics/client/configuration.py +2 -2
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/metrics/client/models/__init__.py +4 -0
- crypticorn-2.11.4/crypticorn/metrics/client/models/exchange_availability.py +88 -0
- crypticorn-2.11.4/crypticorn/metrics/client/models/marketcap_ranking.py +89 -0
- crypticorn-2.10.3/crypticorn/metrics/client/models/marketcap_ranking.py → crypticorn-2.11.4/crypticorn/metrics/client/models/marketcap_symbol_ranking.py +4 -4
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/metrics/main.py +12 -19
- {crypticorn-2.10.3 → crypticorn-2.11.4/crypticorn.egg-info}/PKG-INFO +12 -21
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn.egg-info/SOURCES.txt +6 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn.egg-info/requires.txt +1 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/pyproject.toml +8 -4
- {crypticorn-2.10.3 → crypticorn-2.11.4}/requirements/main.txt +1 -0
- crypticorn-2.11.4/static/favicon.svg +12 -0
- crypticorn-2.11.4/static/logo.svg +13 -0
- crypticorn-2.11.4/static/pip-structure.drawio +31 -0
- crypticorn-2.11.4/static/pip-structure.svg +4 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/LICENSE +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/__init__.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/auth/__init__.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/auth/client/__init__.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/auth/client/api/__init__.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/auth/client/api/admin_api.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/auth/client/api/auth_api.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/auth/client/api/service_api.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/auth/client/api/user_api.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/auth/client/api/wallet_api.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/auth/client/api_client.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/auth/client/api_response.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/auth/client/exceptions.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/auth/client/models/__init__.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/auth/client/models/add_wallet200_response.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/auth/client/models/add_wallet_request.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/auth/client/models/authorize_user200_response.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/auth/client/models/authorize_user200_response_auth.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/auth/client/models/authorize_user_request.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/auth/client/models/create_api_key200_response.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/auth/client/models/create_user_request.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/auth/client/models/list_wallets200_response.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/auth/client/models/list_wallets200_response_balances_inner.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/auth/client/models/list_wallets200_response_balances_inner_sale_round.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/auth/client/models/list_wallets200_response_balances_inner_wallet.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/auth/client/models/list_wallets200_response_balances_inner_wallet_vesting_wallets_inner.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/auth/client/models/list_wallets200_response_data_inner.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/auth/client/models/list_wallets200_response_user_value.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/auth/client/models/logout_default_response.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/auth/client/models/logout_default_response_issues_inner.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/auth/client/models/oauth_callback200_response.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/auth/client/models/oauth_callback200_response_user.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/auth/client/models/refresh_token_info200_response.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/auth/client/models/refresh_token_info200_response_user_session.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/auth/client/models/resend_verification_email_request.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/auth/client/models/revoke_user_tokens_request.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/auth/client/models/rotate_tokens200_response.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/auth/client/models/token_info200_response.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/auth/client/models/unlink_wallet_request.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/auth/client/models/update_user_request.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/auth/client/models/user_by_username200_response.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/auth/client/models/user_reset_password_request.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/auth/client/models/user_set_password_request.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/auth/client/models/verify200_response.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/auth/client/models/verify_email200_response.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/auth/client/models/verify_email200_response_auth.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/auth/client/models/verify_email200_response_auth_auth.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/auth/client/models/verify_email_request.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/auth/client/models/verify_wallet_request.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/auth/client/models/wallet_verified200_response.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/auth/client/models/whoami200_response.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/auth/client/py.typed +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/auth/client/rest.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/auth/main.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/cli/__init__.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/cli/__main__.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/cli/init.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/cli/templates/Dockerfile +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/cli/templates/__init__.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/cli/templates/auth.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/cli/templates/dependabot.yml +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/cli/templates/ruff.yml +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/cli/version.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/common/__init__.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/common/decorators.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/common/middleware.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/common/mixins.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/common/openapi.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/common/pagination.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/common/router/admin_router.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/common/router/status_router.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/hive/__init__.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/hive/client/__init__.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/hive/client/api/__init__.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/hive/client/api/admin_api.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/hive/client/api/data_api.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/hive/client/api/models_api.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/hive/client/api/status_api.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/hive/client/api_client.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/hive/client/api_response.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/hive/client/configuration.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/hive/client/exceptions.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/hive/client/models/__init__.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/hive/client/models/api_error_identifier.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/hive/client/models/api_error_level.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/hive/client/models/api_error_type.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/hive/client/models/coins.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/hive/client/models/data_download_response.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/hive/client/models/data_info.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/hive/client/models/data_options.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/hive/client/models/data_version.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/hive/client/models/data_version_info.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/hive/client/models/download_links.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/hive/client/models/evaluation.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/hive/client/models/evaluation_response.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/hive/client/models/exception_detail.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/hive/client/models/feature_size.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/hive/client/models/log_level.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/hive/client/models/model_create.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/hive/client/models/model_read.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/hive/client/models/model_status.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/hive/client/models/model_update.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/hive/client/models/target.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/hive/client/models/target_info.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/hive/client/models/target_type.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/hive/client/py.typed +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/hive/client/rest.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/hive/main.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/hive/utils.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/klines/__init__.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/klines/client/__init__.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/klines/client/api/__init__.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/klines/client/api/admin_api.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/klines/client/api/change_in_timeframe_api.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/klines/client/api/funding_rates_api.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/klines/client/api/ohlcv_data_api.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/klines/client/api/status_api.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/klines/client/api/symbols_api.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/klines/client/api/udf_api.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/klines/client/api_client.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/klines/client/api_response.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/klines/client/configuration.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/klines/client/exceptions.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/klines/client/models/__init__.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/klines/client/models/api_error_identifier.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/klines/client/models/api_error_level.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/klines/client/models/api_error_type.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/klines/client/models/change_in_timeframe.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/klines/client/models/exception_detail.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/klines/client/models/funding_rate.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/klines/client/models/funding_rate_response.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/klines/client/models/internal_exchange.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/klines/client/models/log_level.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/klines/client/models/market_type.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/klines/client/models/ohlcv.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/klines/client/models/resolution.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/klines/client/models/search_symbol.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/klines/client/models/sort_direction.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/klines/client/models/symbol_group.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/klines/client/models/symbol_info.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/klines/client/models/symbol_type.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/klines/client/models/timeframe.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/klines/client/models/udf_config.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/klines/client/py.typed +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/klines/client/rest.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/metrics/__init__.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/metrics/client/api/__init__.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/metrics/client/api/admin_api.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/metrics/client/api/logs_api.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/metrics/client/api/markets_api.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/metrics/client/api/quote_currencies_api.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/metrics/client/api/status_api.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/metrics/client/api/tokens_api.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/metrics/client/api_client.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/metrics/client/api_response.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/metrics/client/exceptions.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/metrics/client/models/api_error_identifier.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/metrics/client/models/api_error_level.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/metrics/client/models/api_error_type.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/metrics/client/models/exception_detail.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/metrics/client/models/exchange_mapping.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/metrics/client/models/internal_exchange.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/metrics/client/models/log_level.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/metrics/client/models/market_type.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/metrics/client/models/ohlcv.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/metrics/client/models/severity.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/metrics/client/models/time_interval.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/metrics/client/models/trading_status.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/metrics/client/py.typed +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/metrics/client/rest.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/pay/__init__.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/pay/client/__init__.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/pay/client/api/__init__.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/pay/client/api/admin_api.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/pay/client/api/now_payments_api.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/pay/client/api/payments_api.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/pay/client/api/products_api.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/pay/client/api/status_api.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/pay/client/api_client.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/pay/client/api_response.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/pay/client/configuration.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/pay/client/exceptions.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/pay/client/models/__init__.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/pay/client/models/exception_detail.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/pay/client/models/log_level.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/pay/client/models/now_create_invoice_req.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/pay/client/models/now_create_invoice_res.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/pay/client/models/payment.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/pay/client/models/payment_status.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/pay/client/models/product_create.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/pay/client/models/product_read.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/pay/client/models/product_sub_read.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/pay/client/models/product_update.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/pay/client/models/provider.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/pay/client/models/response_getuptime.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/pay/client/models/scope.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/pay/client/py.typed +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/pay/client/rest.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/pay/main.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/trade/__init__.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/trade/client/__init__.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/trade/client/api/__init__.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/trade/client/api/api_keys_api.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/trade/client/api/bots_api.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/trade/client/api/exchanges_api.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/trade/client/api/futures_trading_panel_api.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/trade/client/api/notifications_api.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/trade/client/api/orders_api.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/trade/client/api/status_api.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/trade/client/api/strategies_api.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/trade/client/api/trading_actions_api.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/trade/client/api_client.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/trade/client/api_response.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/trade/client/configuration.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/trade/client/exceptions.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/trade/client/models/__init__.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/trade/client/models/action_model.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/trade/client/models/bot_model.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/trade/client/models/bot_status.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/trade/client/models/exception_detail.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/trade/client/models/exchange_key_model.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/trade/client/models/execution_ids.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/trade/client/models/futures_balance.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/trade/client/models/futures_trading_action.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/trade/client/models/margin_mode.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/trade/client/models/notification_model.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/trade/client/models/order_model.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/trade/client/models/order_status.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/trade/client/models/post_futures_action.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/trade/client/models/spot_trading_action.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/trade/client/models/strategy_exchange_info.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/trade/client/models/strategy_model_input.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/trade/client/models/strategy_model_output.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/trade/client/models/tpsl.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/trade/client/models/trading_action_type.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/trade/client/py.typed +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/trade/client/rest.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/trade/main.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn.egg-info/dependency_links.txt +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn.egg-info/entry_points.txt +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn.egg-info/top_level.txt +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/requirements/dev.txt +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/requirements/extra.txt +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/requirements/test.txt +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/setup.cfg +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/tests/test_auth_client.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/tests/test_config.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/tests/test_enums.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/tests/test_errors.py +0 -0
- {crypticorn-2.10.3 → crypticorn-2.11.4}/tests/test_pagination.py +0 -0
@@ -1,6 +1,89 @@
|
|
1
1
|
# CHANGELOG
|
2
2
|
|
3
3
|
|
4
|
+
## v2.11.4 (2025-05-15)
|
5
|
+
|
6
|
+
### Bug Fixes
|
7
|
+
|
8
|
+
- Fixes dist build
|
9
|
+
([`3913bd7`](https://github.com/crypticorn-ai/api-client/commit/3913bd74a12d50727197efe72a68f36c9165c068))
|
10
|
+
|
11
|
+
|
12
|
+
## v2.11.3 (2025-05-15)
|
13
|
+
|
14
|
+
### Bug Fixes
|
15
|
+
|
16
|
+
- Fixes ci permission error copying static folder to dist
|
17
|
+
([`10f801b`](https://github.com/crypticorn-ai/api-client/commit/10f801b6f760c3f7de12fe830f9d3dc6895dde67))
|
18
|
+
|
19
|
+
|
20
|
+
## v2.11.2 (2025-05-15)
|
21
|
+
|
22
|
+
### Bug Fixes
|
23
|
+
|
24
|
+
- Fixes ohlc dataframe response
|
25
|
+
([`a334782`](https://github.com/crypticorn-ai/api-client/commit/a33478251a80e6255a9d4c0a2c43d701403c3399))
|
26
|
+
|
27
|
+
|
28
|
+
## v2.11.1 (2025-05-15)
|
29
|
+
|
30
|
+
### Bug Fixes
|
31
|
+
|
32
|
+
- Fixes dataframe conversion for get_available_exchanges_fmt
|
33
|
+
([`4c85d67`](https://github.com/crypticorn-ai/api-client/commit/4c85d67386fbda1b50a237df10a10a8eb2fb3531))
|
34
|
+
|
35
|
+
### Build System
|
36
|
+
|
37
|
+
- Include static files in dist
|
38
|
+
([`1b07130`](https://github.com/crypticorn-ai/api-client/commit/1b071302cb2f15f086b7812152cde8d425c2de9d))
|
39
|
+
|
40
|
+
### Continuous Integration
|
41
|
+
|
42
|
+
- Run test only on dev/main
|
43
|
+
([`dcc59e1`](https://github.com/crypticorn-ai/api-client/commit/dcc59e16e8138761c76da0cc936db7738058ac19))
|
44
|
+
|
45
|
+
### Documentation
|
46
|
+
|
47
|
+
- Document scope structure
|
48
|
+
([`fe0dca0`](https://github.com/crypticorn-ai/api-client/commit/fe0dca0d41ce79d0c1809a3d457a52a182cf37c4))
|
49
|
+
|
50
|
+
- Update docstring example `configure` method
|
51
|
+
([`30f59b3`](https://github.com/crypticorn-ai/api-client/commit/30f59b37b5fe3ae8f22ee0a5e72e9a7274dee23c))
|
52
|
+
|
53
|
+
### Refactoring
|
54
|
+
|
55
|
+
- Make merge-env script template more robust
|
56
|
+
([`1314f71`](https://github.com/crypticorn-ai/api-client/commit/1314f718fd4299a37e55424b3ea14c573f746aeb))
|
57
|
+
|
58
|
+
### Testing
|
59
|
+
|
60
|
+
- Add expiration to test api keys
|
61
|
+
([`2e4044f`](https://github.com/crypticorn-ai/api-client/commit/2e4044f05caa2ae35fe9cadc05eeed8f65d0049b))
|
62
|
+
|
63
|
+
|
64
|
+
## v2.11.0 (2025-05-13)
|
65
|
+
|
66
|
+
### Bug Fixes
|
67
|
+
|
68
|
+
- Use strenum as backport for python < 3.11
|
69
|
+
([`a14589b`](https://github.com/crypticorn-ai/api-client/commit/a14589b7c70a07b2a896526ee373d1136e07c675))
|
70
|
+
|
71
|
+
### Continuous Integration
|
72
|
+
|
73
|
+
- Test on all supported python versions
|
74
|
+
([`63e8006`](https://github.com/crypticorn-ai/api-client/commit/63e8006d2e226ddcf139f5ce25bd7edfc9a99ca3))
|
75
|
+
|
76
|
+
### Features
|
77
|
+
|
78
|
+
- Add support for python 3.9
|
79
|
+
([`d4ca2d2`](https://github.com/crypticorn-ai/api-client/commit/d4ca2d2723091756b31a70c1d851c0ab746b9bde))
|
80
|
+
|
81
|
+
### Refactoring
|
82
|
+
|
83
|
+
- Update type annotations to use Union for compatibility
|
84
|
+
([`4476864`](https://github.com/crypticorn-ai/api-client/commit/4476864fc52be5516e2d187254669b28da6d9202))
|
85
|
+
|
86
|
+
|
4
87
|
## v2.10.3 (2025-05-12)
|
5
88
|
|
6
89
|
### Bug Fixes
|
@@ -1,23 +1,9 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: crypticorn
|
3
|
-
Version: 2.
|
3
|
+
Version: 2.11.4
|
4
4
|
Summary: Maximise Your Crypto Trading Profits with Machine Learning
|
5
5
|
Author-email: Crypticorn <timon@crypticorn.com>
|
6
|
-
License:
|
7
|
-
|
8
|
-
All rights reserved. This software and accompanying documentation files (collectively referred to as "the Software") are the proprietary property of Crypticorn. Any unauthorised reproduction, modification, integration, publication, distribution, sublicensing, sale, or enabling access to the Software without explicit written permission from Crypticorn is strictly prohibited, subject to the conditions outlined herein:
|
9
|
-
|
10
|
-
1. The aforementioned copyright notice and this permission notice must be included unaltered in all copies, or significant portions, of the Software.
|
11
|
-
|
12
|
-
2. The Software is provided "AS IS", without any warranty, whether express or implied. Crypticorn expressly disclaims any guarantees, including but not limited to those of satisfactory quality, fitness for a particular purpose, or non-infringement of third-party rights.
|
13
|
-
|
14
|
-
3. In no event shall Crypticorn, its authors, or copyright holders be held liable for any claim, damages, or other liability arising from or associated with the use of the Software or any other dealings involving the Software, to the extent that such liability can be limited or excluded by applicable law.
|
15
|
-
|
16
|
-
Changes to this agreement may be made without notice, and it is the user's responsibility to keep abreast of any changes. This agreement and its interpretation are subject to the laws of the Federal Republic of Germany.
|
17
|
-
|
18
|
-
If any provision of this license agreement is held to be invalid or unenforceable under applicable law, the remaining provisions will continue in full force and effect. Crypticorn's failure to enforce any provision of this agreement does not constitute a waiver of its right to do so in the future.
|
19
|
-
|
20
|
-
This agreement is written in English. In the event of any discrepancy between the English version and any translation, the English version shall prevail.
|
6
|
+
License-Expression: MIT
|
21
7
|
Project-URL: Homepage, https://crypticorn.com
|
22
8
|
Project-URL: Documentation, https://docs.crypticorn.com
|
23
9
|
Project-URL: Dashboard, https://app.crypticorn.com
|
@@ -26,19 +12,19 @@ Classifier: Topic :: Scientific/Engineering
|
|
26
12
|
Classifier: Development Status :: 4 - Beta
|
27
13
|
Classifier: Intended Audience :: Developers
|
28
14
|
Classifier: Operating System :: OS Independent
|
29
|
-
Classifier: License :: OSI Approved :: MIT License
|
30
15
|
Classifier: Programming Language :: Python :: 3.10
|
31
16
|
Classifier: Programming Language :: Python :: 3.11
|
32
17
|
Classifier: Programming Language :: Python :: 3.12
|
33
18
|
Classifier: Programming Language :: Python :: 3.13
|
34
19
|
Classifier: Typing :: Typed
|
35
|
-
Requires-Python: >=3.
|
20
|
+
Requires-Python: >=3.9
|
36
21
|
Description-Content-Type: text/markdown
|
37
22
|
License-File: LICENSE
|
38
23
|
Requires-Dist: fastapi<1.0.0,>=0.115.0
|
39
24
|
Requires-Dist: click<9.0.0,>=8.0.0
|
40
25
|
Requires-Dist: psutil<8.0.0,>=7.0.0
|
41
26
|
Requires-Dist: setuptools<81.0.0,>=80.0.0
|
27
|
+
Requires-Dist: strenum
|
42
28
|
Requires-Dist: urllib3<3.0.0,>=1.25.3
|
43
29
|
Requires-Dist: python_dateutil<3.0.0,>=2.8.2
|
44
30
|
Requires-Dist: aiohttp<4.0.0,>=3.8.4
|
@@ -76,7 +62,7 @@ crypto market - and programmatically interact with the entire Crypticorn ecosyst
|
|
76
62
|
|
77
63
|
## Installation
|
78
64
|
|
79
|
-
You need Python 3.
|
65
|
+
You need Python 3.9+ installed to be able to use this library.
|
80
66
|
|
81
67
|
You can install the latest stable version from [PyPi](https://pypi.org/project/crypticorn/):
|
82
68
|
```bash
|
@@ -98,7 +84,7 @@ from crypticorn import ApiClient
|
|
98
84
|
```
|
99
85
|
The ApiClient serves as the central interface for API operations. It instantiates multiple API wrappers corresponding to our micro services. These are structured the following:
|
100
86
|
|
101
|
-
<img src="pip-structure.svg" alt="pip package structure" />
|
87
|
+
<img src="static/pip-structure.svg" alt="pip package structure" />
|
102
88
|
|
103
89
|
You can either explore each API by clicking through the library or checkout the [API Documentation](https://docs.crypticorn.com/api).
|
104
90
|
|
@@ -115,7 +101,12 @@ from crypticorn.common import Scope, Exchange
|
|
115
101
|
|
116
102
|
## Authentication
|
117
103
|
|
118
|
-
To get started, [create an API key in your dashboard](https://app.crypticorn.com/account/developer).
|
104
|
+
To get started, [create an API key in your dashboard](https://app.crypticorn.com/account/developer).
|
105
|
+
|
106
|
+
The scopes you can assign, resemble the [package structure](#structure). The first part defines if the scopes is for reading or writing a ressource, the second matches the API, the third the ROUTER being used. `read` scopes gives access to GET, `write` to PUT, PATCH, POST, DELETE endpoints.
|
107
|
+
|
108
|
+
There are scopes which don't follow this structure. Those are either scopes that must be purchased (e.g. `read:predictions`), give access to endpoints existing in all APIs (e.g. `read:admin`) or provide access to an entire service (e.g. `read:sentiment`).
|
109
|
+
|
119
110
|
|
120
111
|
## Basic Usage
|
121
112
|
|
@@ -7,7 +7,7 @@ crypto market - and programmatically interact with the entire Crypticorn ecosyst
|
|
7
7
|
|
8
8
|
## Installation
|
9
9
|
|
10
|
-
You need Python 3.
|
10
|
+
You need Python 3.9+ installed to be able to use this library.
|
11
11
|
|
12
12
|
You can install the latest stable version from [PyPi](https://pypi.org/project/crypticorn/):
|
13
13
|
```bash
|
@@ -29,7 +29,7 @@ from crypticorn import ApiClient
|
|
29
29
|
```
|
30
30
|
The ApiClient serves as the central interface for API operations. It instantiates multiple API wrappers corresponding to our micro services. These are structured the following:
|
31
31
|
|
32
|
-
<img src="pip-structure.svg" alt="pip package structure" />
|
32
|
+
<img src="static/pip-structure.svg" alt="pip package structure" />
|
33
33
|
|
34
34
|
You can either explore each API by clicking through the library or checkout the [API Documentation](https://docs.crypticorn.com/api).
|
35
35
|
|
@@ -46,7 +46,12 @@ from crypticorn.common import Scope, Exchange
|
|
46
46
|
|
47
47
|
## Authentication
|
48
48
|
|
49
|
-
To get started, [create an API key in your dashboard](https://app.crypticorn.com/account/developer).
|
49
|
+
To get started, [create an API key in your dashboard](https://app.crypticorn.com/account/developer).
|
50
|
+
|
51
|
+
The scopes you can assign, resemble the [package structure](#structure). The first part defines if the scopes is for reading or writing a ressource, the second matches the API, the third the ROUTER being used. `read` scopes gives access to GET, `write` to PUT, PATCH, POST, DELETE endpoints.
|
52
|
+
|
53
|
+
There are scopes which don't follow this structure. Those are either scopes that must be purchased (e.g. `read:predictions`), give access to endpoints existing in all APIs (e.g. `read:admin`) or provide access to an entire service (e.g. `read:sentiment`).
|
54
|
+
|
50
55
|
|
51
56
|
## Basic Usage
|
52
57
|
|
@@ -195,7 +195,7 @@ class Configuration:
|
|
195
195
|
debug: Optional[bool] = None,
|
196
196
|
) -> None:
|
197
197
|
"""Constructor"""
|
198
|
-
self._base_path = "
|
198
|
+
self._base_path = "https://api.crypticorn.dev/v1/auth" if host is None else host
|
199
199
|
"""Default Base url
|
200
200
|
"""
|
201
201
|
self.server_index = 0 if server_index is None and host is None else server_index
|
@@ -528,7 +528,7 @@ class Configuration:
|
|
528
528
|
"""
|
529
529
|
return [
|
530
530
|
{
|
531
|
-
"url": "
|
531
|
+
"url": "https://api.crypticorn.dev/v1/auth",
|
532
532
|
"description": "No description provided",
|
533
533
|
}
|
534
534
|
]
|
{crypticorn-2.10.3 → crypticorn-2.11.4}/crypticorn/auth/client/models/create_api_key_request.py
RENAMED
@@ -78,12 +78,13 @@ class CreateApiKeyRequest(BaseModel):
|
|
78
78
|
"read:metrics:tokens",
|
79
79
|
"read:metrics:markets",
|
80
80
|
"read:sentiment",
|
81
|
+
"read:klines",
|
81
82
|
"read:admin",
|
82
83
|
"write:admin",
|
83
84
|
]
|
84
85
|
):
|
85
86
|
raise ValueError(
|
86
|
-
"each list item must be one of ('read:predictions', 'read:hive:model', 'read:hive:data', 'write:hive:model', 'read:trade:bots', 'write:trade:bots', 'read:trade:exchangekeys', 'write:trade:exchangekeys', 'read:trade:orders', 'read:trade:actions', 'write:trade:actions', 'read:trade:exchanges', 'read:trade:futures', 'write:trade:futures', 'read:trade:notifications', 'write:trade:notifications', 'read:trade:strategies', 'write:trade:strategies', 'read:pay:payments', 'read:pay:products', 'write:pay:products', 'read:pay:now', 'write:pay:now', 'read:metrics:marketcap', 'read:metrics:indicators', 'read:metrics:exchanges', 'read:metrics:tokens', 'read:metrics:markets', 'read:sentiment', 'read:admin', 'write:admin')"
|
87
|
+
"each list item must be one of ('read:predictions', 'read:hive:model', 'read:hive:data', 'write:hive:model', 'read:trade:bots', 'write:trade:bots', 'read:trade:exchangekeys', 'write:trade:exchangekeys', 'read:trade:orders', 'read:trade:actions', 'write:trade:actions', 'read:trade:exchanges', 'read:trade:futures', 'write:trade:futures', 'read:trade:notifications', 'write:trade:notifications', 'read:trade:strategies', 'write:trade:strategies', 'read:pay:payments', 'read:pay:products', 'write:pay:products', 'read:pay:now', 'write:pay:now', 'read:metrics:marketcap', 'read:metrics:indicators', 'read:metrics:exchanges', 'read:metrics:tokens', 'read:metrics:markets', 'read:sentiment', 'read:klines', 'read:admin', 'write:admin')"
|
87
88
|
)
|
88
89
|
return value
|
89
90
|
|
@@ -86,12 +86,13 @@ class GetApiKeys200ResponseInner(BaseModel):
|
|
86
86
|
"read:metrics:tokens",
|
87
87
|
"read:metrics:markets",
|
88
88
|
"read:sentiment",
|
89
|
+
"read:klines",
|
89
90
|
"read:admin",
|
90
91
|
"write:admin",
|
91
92
|
]
|
92
93
|
):
|
93
94
|
raise ValueError(
|
94
|
-
"each list item must be one of ('read:predictions', 'read:hive:model', 'read:hive:data', 'write:hive:model', 'read:trade:bots', 'write:trade:bots', 'read:trade:exchangekeys', 'write:trade:exchangekeys', 'read:trade:orders', 'read:trade:actions', 'write:trade:actions', 'read:trade:exchanges', 'read:trade:futures', 'write:trade:futures', 'read:trade:notifications', 'write:trade:notifications', 'read:trade:strategies', 'write:trade:strategies', 'read:pay:payments', 'read:pay:products', 'write:pay:products', 'read:pay:now', 'write:pay:now', 'read:metrics:marketcap', 'read:metrics:indicators', 'read:metrics:exchanges', 'read:metrics:tokens', 'read:metrics:markets', 'read:sentiment', 'read:admin', 'write:admin')"
|
95
|
+
"each list item must be one of ('read:predictions', 'read:hive:model', 'read:hive:data', 'write:hive:model', 'read:trade:bots', 'write:trade:bots', 'read:trade:exchangekeys', 'write:trade:exchangekeys', 'read:trade:orders', 'read:trade:actions', 'write:trade:actions', 'read:trade:exchanges', 'read:trade:futures', 'write:trade:futures', 'read:trade:notifications', 'write:trade:notifications', 'read:trade:strategies', 'write:trade:strategies', 'read:pay:payments', 'read:pay:products', 'write:pay:products', 'read:pay:now', 'write:pay:now', 'read:metrics:marketcap', 'read:metrics:indicators', 'read:metrics:exchanges', 'read:metrics:tokens', 'read:metrics:markets', 'read:sentiment', 'read:klines', 'read:admin', 'write:admin')"
|
95
96
|
)
|
96
97
|
return value
|
97
98
|
|
@@ -1,17 +1,15 @@
|
|
1
1
|
#!/usr/bin/env bash
|
2
|
-
|
3
2
|
# this script merges the env variables from the environment and the .env.example file into the .env file
|
4
3
|
# the appended variables take precedence over the .env.example variables (if both are set)
|
5
4
|
|
6
|
-
# Make executable before running in github actions
|
7
|
-
# chmod +x scripts/merge-env.sh
|
8
|
-
|
9
5
|
# Usage in a github action:
|
10
6
|
# - name: Generate .env
|
11
7
|
# run: ./scripts/merge-env.sh
|
8
|
+
# add this after checkout before copying files to the host
|
12
9
|
|
13
10
|
set -e
|
14
11
|
|
15
12
|
cp .env.example .env
|
16
13
|
echo >> .env
|
17
|
-
|
14
|
+
echo "# Environment variables" >> .env
|
15
|
+
printenv | awk -F= '/^[a-zA-Z_][a-zA-Z0-9_]*=/{print $1"=\""substr($0, index($0,$2))"\""}' | sort | uniq >> .env
|
@@ -119,8 +119,8 @@ class ApiClient:
|
|
119
119
|
:param service: The service to configure.
|
120
120
|
|
121
121
|
Example:
|
122
|
-
>>> async with ApiClient(
|
123
|
-
|
122
|
+
>>> async with ApiClient() as client:
|
123
|
+
... client.configure(config=HiveConfig(host="http://localhost:8000"), service=Service.HIVE)
|
124
124
|
"""
|
125
125
|
assert Service.validate(service), f"Invalid service: {service}"
|
126
126
|
client = self._services[service]
|
@@ -18,6 +18,7 @@ from fastapi.security import (
|
|
18
18
|
APIKeyHeader,
|
19
19
|
)
|
20
20
|
from typing_extensions import Annotated
|
21
|
+
from typing import Union
|
21
22
|
|
22
23
|
# Auth Schemes
|
23
24
|
http_bearer = HTTPBearer(
|
@@ -132,7 +133,7 @@ class AuthHandler:
|
|
132
133
|
|
133
134
|
async def api_key_auth(
|
134
135
|
self,
|
135
|
-
api_key: Annotated[str
|
136
|
+
api_key: Annotated[Union[str, None], Depends(apikey_header)] = None,
|
136
137
|
sec: SecurityScopes = SecurityScopes(),
|
137
138
|
) -> Verify200Response:
|
138
139
|
"""
|
@@ -144,7 +145,7 @@ class AuthHandler:
|
|
144
145
|
async def bearer_auth(
|
145
146
|
self,
|
146
147
|
bearer: Annotated[
|
147
|
-
HTTPAuthorizationCredentials
|
148
|
+
Union[HTTPAuthorizationCredentials, None],
|
148
149
|
Depends(http_bearer),
|
149
150
|
] = None,
|
150
151
|
sec: SecurityScopes = SecurityScopes(),
|
@@ -158,9 +159,9 @@ class AuthHandler:
|
|
158
159
|
async def combined_auth(
|
159
160
|
self,
|
160
161
|
bearer: Annotated[
|
161
|
-
HTTPAuthorizationCredentials
|
162
|
+
Union[HTTPAuthorizationCredentials, None], Depends(http_bearer)
|
162
163
|
] = None,
|
163
|
-
api_key: Annotated[str
|
164
|
+
api_key: Annotated[Union[str, None], Depends(apikey_header)] = None,
|
164
165
|
sec: SecurityScopes = SecurityScopes(),
|
165
166
|
) -> Verify200Response:
|
166
167
|
"""
|
@@ -202,7 +203,7 @@ class AuthHandler:
|
|
202
203
|
|
203
204
|
async def ws_api_key_auth(
|
204
205
|
self,
|
205
|
-
api_key: Annotated[str
|
206
|
+
api_key: Annotated[Union[str, None], Query()] = None,
|
206
207
|
sec: SecurityScopes = SecurityScopes(),
|
207
208
|
) -> Verify200Response:
|
208
209
|
"""
|
@@ -213,7 +214,7 @@ class AuthHandler:
|
|
213
214
|
|
214
215
|
async def ws_bearer_auth(
|
215
216
|
self,
|
216
|
-
bearer: Annotated[str
|
217
|
+
bearer: Annotated[Union[str, None], Query()] = None,
|
217
218
|
sec: SecurityScopes = SecurityScopes(),
|
218
219
|
) -> Verify200Response:
|
219
220
|
"""
|
@@ -224,8 +225,8 @@ class AuthHandler:
|
|
224
225
|
|
225
226
|
async def ws_combined_auth(
|
226
227
|
self,
|
227
|
-
bearer: Annotated[str
|
228
|
-
api_key: Annotated[str
|
228
|
+
bearer: Annotated[Union[str, None], Query()] = None,
|
229
|
+
api_key: Annotated[Union[str, None], Query()] = None,
|
229
230
|
sec: SecurityScopes = SecurityScopes(),
|
230
231
|
) -> Verify200Response:
|
231
232
|
"""
|
@@ -1,6 +1,10 @@
|
|
1
1
|
"""Defines common enumerations used throughout the codebase for type safety and consistency."""
|
2
2
|
|
3
|
-
|
3
|
+
try:
|
4
|
+
from enum import StrEnum
|
5
|
+
except ImportError:
|
6
|
+
from strenum import StrEnum
|
7
|
+
|
4
8
|
from crypticorn.common.mixins import ValidateEnumMixin
|
5
9
|
|
6
10
|
|
@@ -1,9 +1,14 @@
|
|
1
1
|
"""Comprehensive error handling system defining various API error types, HTTP exceptions, and error content structures."""
|
2
2
|
|
3
|
-
from enum import Enum
|
3
|
+
from enum import Enum
|
4
4
|
from fastapi import status
|
5
5
|
from crypticorn.common.mixins import ApiErrorFallback
|
6
6
|
|
7
|
+
try:
|
8
|
+
from enum import StrEnum
|
9
|
+
except ImportError:
|
10
|
+
from strenum import StrEnum
|
11
|
+
|
7
12
|
|
8
13
|
class ApiErrorType(StrEnum):
|
9
14
|
"""Type of the API error."""
|
@@ -1,5 +1,4 @@
|
|
1
1
|
from typing import Optional, Dict, Any
|
2
|
-
from enum import StrEnum
|
3
2
|
from pydantic import BaseModel, Field
|
4
3
|
from fastapi import HTTPException as FastAPIHTTPException, Request, FastAPI
|
5
4
|
from fastapi.exceptions import RequestValidationError, ResponseValidationError
|
@@ -8,6 +7,11 @@ from crypticorn.common import ApiError, ApiErrorIdentifier, ApiErrorType, ApiErr
|
|
8
7
|
import logging
|
9
8
|
import json
|
10
9
|
|
10
|
+
try:
|
11
|
+
from enum import StrEnum
|
12
|
+
except ImportError:
|
13
|
+
from strenum import StrEnum
|
14
|
+
|
11
15
|
_logger = logging.getLogger("crypticorn")
|
12
16
|
|
13
17
|
|
@@ -2,12 +2,16 @@ from __future__ import annotations
|
|
2
2
|
|
3
3
|
import logging
|
4
4
|
import sys
|
5
|
-
from enum import StrEnum
|
6
5
|
from crypticorn.common.mixins import ValidateEnumMixin
|
7
6
|
from crypticorn.common.ansi_colors import AnsiColors as C
|
8
7
|
from datetime import datetime
|
9
8
|
import os
|
10
9
|
|
10
|
+
try:
|
11
|
+
from enum import StrEnum
|
12
|
+
except ImportError:
|
13
|
+
from strenum import StrEnum
|
14
|
+
|
11
15
|
|
12
16
|
class LogLevel(ValidateEnumMixin, StrEnum):
|
13
17
|
DEBUG = "DEBUG"
|
@@ -1,4 +1,7 @@
|
|
1
|
-
|
1
|
+
try:
|
2
|
+
from enum import StrEnum
|
3
|
+
except ImportError:
|
4
|
+
from strenum import StrEnum
|
2
5
|
|
3
6
|
|
4
7
|
class Scope(StrEnum):
|
@@ -52,6 +55,9 @@ class Scope(StrEnum):
|
|
52
55
|
# Sentiment scopes
|
53
56
|
READ_SENTIMENT = "read:sentiment"
|
54
57
|
|
58
|
+
# Klines scopes
|
59
|
+
READ_KLINES = "read:klines"
|
60
|
+
|
55
61
|
@classmethod
|
56
62
|
def admin_scopes(cls) -> list["Scope"]:
|
57
63
|
"""Scopes that are only available to admins."""
|
@@ -74,4 +80,11 @@ class Scope(StrEnum):
|
|
74
80
|
"""Scopes that can be purchased."""
|
75
81
|
return [
|
76
82
|
cls.READ_PREDICTIONS,
|
83
|
+
cls.READ_METRICS_MARKETCAP,
|
84
|
+
cls.READ_METRICS_INDICATORS,
|
85
|
+
cls.READ_METRICS_EXCHANGES,
|
86
|
+
cls.READ_METRICS_TOKENS,
|
87
|
+
cls.READ_METRICS_MARKETS,
|
88
|
+
cls.READ_KLINES,
|
89
|
+
cls.READ_SENTIMENT,
|
77
90
|
]
|
@@ -1,7 +1,7 @@
|
|
1
1
|
"""General utility functions and helper methods used across the codebase."""
|
2
2
|
|
3
3
|
from datetime import datetime
|
4
|
-
from typing import Any
|
4
|
+
from typing import Any, Union
|
5
5
|
from decimal import Decimal
|
6
6
|
import string
|
7
7
|
import random
|
@@ -41,8 +41,8 @@ def gen_random_id(length: int = 20) -> str:
|
|
41
41
|
"The `is_equal` method is deprecated; use `math.is_close` instead.", category=None
|
42
42
|
)
|
43
43
|
def is_equal(
|
44
|
-
a: float
|
45
|
-
b: float
|
44
|
+
a: Union[float, Decimal],
|
45
|
+
b: Union[float, Decimal],
|
46
46
|
rel_tol: float = 1e-9,
|
47
47
|
abs_tol: float = 0.0,
|
48
48
|
) -> bool:
|
@@ -1,6 +1,7 @@
|
|
1
1
|
"""Crypticorn-specific warnings."""
|
2
2
|
|
3
3
|
from __future__ import annotations
|
4
|
+
from typing import Union
|
4
5
|
|
5
6
|
|
6
7
|
class CrypticornDeprecationWarning(DeprecationWarning):
|
@@ -24,7 +25,7 @@ class CrypticornDeprecationWarning(DeprecationWarning):
|
|
24
25
|
message: str,
|
25
26
|
*args: object,
|
26
27
|
since: tuple[int, int],
|
27
|
-
expected_removal: tuple[int, int]
|
28
|
+
expected_removal: Union[tuple[int, int], None] = None,
|
28
29
|
) -> None:
|
29
30
|
super().__init__(message, *args)
|
30
31
|
self.message = message.rstrip(".")
|
@@ -65,7 +65,19 @@ class OHLCVDataApiWrapper(OHLCVDataApi):
|
|
65
65
|
"""
|
66
66
|
pd = optional_import("pandas", "extra")
|
67
67
|
response = await self.get_ohlcv(*args, **kwargs)
|
68
|
-
|
68
|
+
rows = []
|
69
|
+
for item in response:
|
70
|
+
row = {
|
71
|
+
'timestamp': item.timestamp,
|
72
|
+
'open': item.open,
|
73
|
+
'high': item.high,
|
74
|
+
'low': item.low,
|
75
|
+
'close': item.close,
|
76
|
+
'volume': item.volume
|
77
|
+
}
|
78
|
+
rows.append(row)
|
79
|
+
df = pd.DataFrame(rows)
|
80
|
+
return df
|
69
81
|
|
70
82
|
|
71
83
|
class SymbolsApiWrapper(SymbolsApi):
|
@@ -43,11 +43,15 @@ from crypticorn.metrics.client.models.api_error_identifier import ApiErrorIdenti
|
|
43
43
|
from crypticorn.metrics.client.models.api_error_level import ApiErrorLevel
|
44
44
|
from crypticorn.metrics.client.models.api_error_type import ApiErrorType
|
45
45
|
from crypticorn.metrics.client.models.exception_detail import ExceptionDetail
|
46
|
+
from crypticorn.metrics.client.models.exchange_availability import ExchangeAvailability
|
46
47
|
from crypticorn.metrics.client.models.exchange_mapping import ExchangeMapping
|
47
48
|
from crypticorn.metrics.client.models.internal_exchange import InternalExchange
|
48
49
|
from crypticorn.metrics.client.models.log_level import LogLevel
|
49
50
|
from crypticorn.metrics.client.models.market_type import MarketType
|
50
51
|
from crypticorn.metrics.client.models.marketcap_ranking import MarketcapRanking
|
52
|
+
from crypticorn.metrics.client.models.marketcap_symbol_ranking import (
|
53
|
+
MarketcapSymbolRanking,
|
54
|
+
)
|
51
55
|
from crypticorn.metrics.client.models.ohlcv import OHLCV
|
52
56
|
from crypticorn.metrics.client.models.severity import Severity
|
53
57
|
from crypticorn.metrics.client.models.time_interval import TimeInterval
|
@@ -17,8 +17,9 @@ from typing import Any, Dict, List, Optional, Tuple, Union
|
|
17
17
|
from typing_extensions import Annotated
|
18
18
|
|
19
19
|
from pydantic import Field, StrictInt, StrictStr
|
20
|
-
from typing import
|
20
|
+
from typing import List, Optional
|
21
21
|
from typing_extensions import Annotated
|
22
|
+
from crypticorn.metrics.client.models.exchange_availability import ExchangeAvailability
|
22
23
|
from crypticorn.metrics.client.models.exchange_mapping import ExchangeMapping
|
23
24
|
from crypticorn.metrics.client.models.internal_exchange import InternalExchange
|
24
25
|
from crypticorn.metrics.client.models.market_type import MarketType
|
@@ -88,7 +89,7 @@ class ExchangesApi:
|
|
88
89
|
_content_type: Optional[StrictStr] = None,
|
89
90
|
_headers: Optional[Dict[StrictStr, Any]] = None,
|
90
91
|
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
91
|
-
) -> List[
|
92
|
+
) -> List[ExchangeAvailability]:
|
92
93
|
"""Get Available Exchanges
|
93
94
|
|
94
95
|
Get available exchanges for a symbol with various filtering options.
|
@@ -144,7 +145,7 @@ class ExchangesApi:
|
|
144
145
|
)
|
145
146
|
|
146
147
|
_response_types_map: Dict[str, Optional[str]] = {
|
147
|
-
"200": "List[
|
148
|
+
"200": "List[ExchangeAvailability]",
|
148
149
|
}
|
149
150
|
response_data = await self.api_client.call_api(
|
150
151
|
*_param, _request_timeout=_request_timeout
|
@@ -201,7 +202,7 @@ class ExchangesApi:
|
|
201
202
|
_content_type: Optional[StrictStr] = None,
|
202
203
|
_headers: Optional[Dict[StrictStr, Any]] = None,
|
203
204
|
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
204
|
-
) -> ApiResponse[List[
|
205
|
+
) -> ApiResponse[List[ExchangeAvailability]]:
|
205
206
|
"""Get Available Exchanges
|
206
207
|
|
207
208
|
Get available exchanges for a symbol with various filtering options.
|
@@ -257,7 +258,7 @@ class ExchangesApi:
|
|
257
258
|
)
|
258
259
|
|
259
260
|
_response_types_map: Dict[str, Optional[str]] = {
|
260
|
-
"200": "List[
|
261
|
+
"200": "List[ExchangeAvailability]",
|
261
262
|
}
|
262
263
|
response_data = await self.api_client.call_api(
|
263
264
|
*_param, _request_timeout=_request_timeout
|
@@ -370,7 +371,7 @@ class ExchangesApi:
|
|
370
371
|
)
|
371
372
|
|
372
373
|
_response_types_map: Dict[str, Optional[str]] = {
|
373
|
-
"200": "List[
|
374
|
+
"200": "List[ExchangeAvailability]",
|
374
375
|
}
|
375
376
|
response_data = await self.api_client.call_api(
|
376
377
|
*_param, _request_timeout=_request_timeout
|