crypticorn 2.5.3__tar.gz → 2.7.0__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.5.3 → crypticorn-2.7.0}/PKG-INFO +2 -2
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/auth/client/__init__.py +9 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/auth/client/api/auth_api.py +8 -5
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/auth/client/api/user_api.py +247 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/auth/client/models/__init__.py +9 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/auth/client/models/create_api_key_request.py +2 -1
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/auth/client/models/get_api_keys200_response_inner.py +2 -1
- crypticorn-2.7.0/crypticorn/auth/client/models/user_by_username200_response.py +91 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/auth/client/models/verify200_response.py +14 -1
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/auth/client/models/verify_email200_response_auth_auth.py +14 -1
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/auth/client/models/whoami200_response.py +6 -1
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/common/__init__.py +1 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/common/auth.py +13 -9
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/common/errors.py +320 -88
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/common/exceptions.py +38 -4
- crypticorn-2.7.0/crypticorn/common/pagination.py +49 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/common/scopes.py +24 -5
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/hive/client/__init__.py +2 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/hive/client/api/data_api.py +15 -12
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/hive/client/api/models_api.py +343 -56
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/hive/client/models/__init__.py +2 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/hive/client/models/data_info.py +44 -12
- crypticorn-2.7.0/crypticorn/hive/client/models/data_version_info.py +89 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/hive/client/models/model.py +2 -3
- crypticorn-2.7.0/crypticorn/hive/client/models/target_info.py +94 -0
- crypticorn-2.7.0/crypticorn/hive/main.py +69 -0
- crypticorn-2.7.0/crypticorn/hive/utils.py +65 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn.egg-info/PKG-INFO +2 -2
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn.egg-info/SOURCES.txt +7 -1
- {crypticorn-2.5.3 → crypticorn-2.7.0}/pyproject.toml +2 -2
- crypticorn-2.7.0/tests/test_auth_client.py +168 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/tests/test_errors.py +5 -5
- crypticorn-2.7.0/tests/test_pagination.py +19 -0
- crypticorn-2.5.3/crypticorn/hive/main.py +0 -28
- crypticorn-2.5.3/tests/test_auth_client.py +0 -308
- {crypticorn-2.5.3 → crypticorn-2.7.0}/README.md +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/__init__.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/auth/__init__.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/auth/client/api/__init__.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/auth/client/api/admin_api.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/auth/client/api/service_api.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/auth/client/api/wallet_api.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/auth/client/api_client.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/auth/client/api_response.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/auth/client/configuration.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/auth/client/exceptions.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/auth/client/models/add_wallet200_response.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/auth/client/models/add_wallet_request.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/auth/client/models/authorize_user200_response.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/auth/client/models/authorize_user200_response_auth.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/auth/client/models/authorize_user_request.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/auth/client/models/create_api_key200_response.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/auth/client/models/create_user_request.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/auth/client/models/list_wallets200_response.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/auth/client/models/list_wallets200_response_balances_inner.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/auth/client/models/list_wallets200_response_balances_inner_sale_round.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/auth/client/models/list_wallets200_response_balances_inner_wallet.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/auth/client/models/list_wallets200_response_balances_inner_wallet_vesting_wallets_inner.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/auth/client/models/list_wallets200_response_data_inner.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/auth/client/models/list_wallets200_response_user_value.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/auth/client/models/logout_default_response.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/auth/client/models/logout_default_response_issues_inner.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/auth/client/models/oauth_callback200_response.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/auth/client/models/oauth_callback200_response_user.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/auth/client/models/refresh_token_info200_response.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/auth/client/models/refresh_token_info200_response_user_session.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/auth/client/models/resend_verification_email_request.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/auth/client/models/revoke_user_tokens_request.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/auth/client/models/rotate_tokens200_response.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/auth/client/models/token_info200_response.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/auth/client/models/unlink_wallet_request.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/auth/client/models/update_user_request.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/auth/client/models/user_reset_password_request.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/auth/client/models/user_set_password_request.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/auth/client/models/verify_email200_response.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/auth/client/models/verify_email200_response_auth.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/auth/client/models/verify_email_request.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/auth/client/models/verify_wallet_request.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/auth/client/models/wallet_verified200_response.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/auth/client/py.typed +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/auth/client/rest.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/auth/main.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/cli/__init__.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/cli/__main__.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/cli/init.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/cli/templates/__init__.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/cli/templates/auth.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/client.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/common/decorators.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/common/enums.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/common/mixins.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/common/status_router.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/common/urls.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/common/utils.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/hive/__init__.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/hive/client/api/__init__.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/hive/client/api/status_api.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/hive/client/api_client.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/hive/client/api_response.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/hive/client/configuration.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/hive/client/exceptions.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/hive/client/models/coins.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/hive/client/models/data_download_response.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/hive/client/models/data_value_value_value_inner.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/hive/client/models/data_version.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/hive/client/models/download_links.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/hive/client/models/evaluation.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/hive/client/models/evaluation_response.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/hive/client/models/exception_detail.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/hive/client/models/feature_size.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/hive/client/models/model_create.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/hive/client/models/model_status.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/hive/client/models/model_update.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/hive/client/models/target.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/hive/client/models/target_type.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/hive/client/py.typed +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/hive/client/rest.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/klines/__init__.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/klines/client/__init__.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/klines/client/api/__init__.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/klines/client/api/change_in_timeframe_api.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/klines/client/api/funding_rates_api.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/klines/client/api/ohlcv_data_api.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/klines/client/api/status_api.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/klines/client/api/symbols_api.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/klines/client/api/udf_api.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/klines/client/api_client.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/klines/client/api_response.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/klines/client/configuration.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/klines/client/exceptions.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/klines/client/models/__init__.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/klines/client/models/change_in_timeframe.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/klines/client/models/exception_detail.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/klines/client/models/funding_rate.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/klines/client/models/ohlcv_history.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/klines/client/models/resolution.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/klines/client/models/search_symbol.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/klines/client/models/sort_direction.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/klines/client/models/symbol_group.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/klines/client/models/symbol_info.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/klines/client/models/symbol_type.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/klines/client/models/timeframe.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/klines/client/models/udf_config.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/klines/client/py.typed +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/klines/client/rest.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/klines/main.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/metrics/__init__.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/metrics/client/__init__.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/metrics/client/api/__init__.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/metrics/client/api/exchanges_api.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/metrics/client/api/indicators_api.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/metrics/client/api/logs_api.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/metrics/client/api/marketcap_api.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/metrics/client/api/markets_api.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/metrics/client/api/status_api.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/metrics/client/api/tokens_api.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/metrics/client/api_client.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/metrics/client/api_response.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/metrics/client/configuration.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/metrics/client/exceptions.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/metrics/client/models/__init__.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/metrics/client/models/exception_detail.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/metrics/client/models/severity.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/metrics/client/models/time_interval.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/metrics/client/models/trading_status.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/metrics/client/py.typed +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/metrics/client/rest.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/metrics/main.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/pay/__init__.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/pay/client/__init__.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/pay/client/api/__init__.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/pay/client/api/now_payments_api.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/pay/client/api/payments_api.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/pay/client/api/products_api.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/pay/client/api/status_api.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/pay/client/api_client.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/pay/client/api_response.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/pay/client/configuration.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/pay/client/exceptions.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/pay/client/models/__init__.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/pay/client/models/exception_detail.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/pay/client/models/now_create_invoice_req.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/pay/client/models/now_create_invoice_res.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/pay/client/models/payment.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/pay/client/models/payment_status.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/pay/client/models/product_create.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/pay/client/models/product_read.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/pay/client/models/product_sub_read.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/pay/client/models/product_update.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/pay/client/models/scope.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/pay/client/models/services.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/pay/client/py.typed +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/pay/client/rest.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/pay/main.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/trade/__init__.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/trade/client/__init__.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/trade/client/api/__init__.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/trade/client/api/api_keys_api.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/trade/client/api/bots_api.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/trade/client/api/exchanges_api.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/trade/client/api/futures_trading_panel_api.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/trade/client/api/notifications_api.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/trade/client/api/orders_api.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/trade/client/api/status_api.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/trade/client/api/strategies_api.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/trade/client/api/trading_actions_api.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/trade/client/api_client.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/trade/client/api_response.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/trade/client/configuration.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/trade/client/exceptions.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/trade/client/models/__init__.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/trade/client/models/action_model.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/trade/client/models/bot_model.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/trade/client/models/bot_status.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/trade/client/models/exception_detail.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/trade/client/models/exchange_key_model.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/trade/client/models/execution_ids.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/trade/client/models/futures_balance.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/trade/client/models/futures_trading_action.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/trade/client/models/margin_mode.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/trade/client/models/notification_model.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/trade/client/models/order_model.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/trade/client/models/order_status.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/trade/client/models/post_futures_action.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/trade/client/models/spot_trading_action.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/trade/client/models/strategy_exchange_info.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/trade/client/models/strategy_model_input.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/trade/client/models/strategy_model_output.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/trade/client/models/tpsl.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/trade/client/models/trading_action_type.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/trade/client/py.typed +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/trade/client/rest.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/trade/main.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn.egg-info/dependency_links.txt +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn.egg-info/entry_points.txt +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn.egg-info/requires.txt +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn.egg-info/top_level.txt +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/requirements/dev.txt +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/requirements/extra.txt +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/requirements/main.txt +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/requirements/test.txt +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/setup.cfg +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/tests/test_config.py +0 -0
- {crypticorn-2.5.3 → crypticorn-2.7.0}/tests/test_enums.py +0 -0
@@ -1,7 +1,7 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: crypticorn
|
3
|
-
Version: 2.
|
4
|
-
Summary: Maximise Your Crypto Trading Profits with
|
3
|
+
Version: 2.7.0
|
4
|
+
Summary: Maximise Your Crypto Trading Profits with Machine Learning
|
5
5
|
Author-email: Crypticorn <timon@crypticorn.com>
|
6
6
|
Project-URL: Homepage, https://crypticorn.com
|
7
7
|
Keywords: machine learning,data science,crypto,modelling
|
@@ -77,6 +77,12 @@ from crypticorn.auth.client.models.logout_default_response import LogoutDefaultR
|
|
77
77
|
from crypticorn.auth.client.models.logout_default_response_issues_inner import (
|
78
78
|
LogoutDefaultResponseIssuesInner,
|
79
79
|
)
|
80
|
+
from crypticorn.auth.client.models.oauth_callback200_response import (
|
81
|
+
OauthCallback200Response,
|
82
|
+
)
|
83
|
+
from crypticorn.auth.client.models.oauth_callback200_response_user import (
|
84
|
+
OauthCallback200ResponseUser,
|
85
|
+
)
|
80
86
|
from crypticorn.auth.client.models.refresh_token_info200_response import (
|
81
87
|
RefreshTokenInfo200Response,
|
82
88
|
)
|
@@ -95,6 +101,9 @@ from crypticorn.auth.client.models.rotate_tokens200_response import (
|
|
95
101
|
from crypticorn.auth.client.models.token_info200_response import TokenInfo200Response
|
96
102
|
from crypticorn.auth.client.models.unlink_wallet_request import UnlinkWalletRequest
|
97
103
|
from crypticorn.auth.client.models.update_user_request import UpdateUserRequest
|
104
|
+
from crypticorn.auth.client.models.user_by_username200_response import (
|
105
|
+
UserByUsername200Response,
|
106
|
+
)
|
98
107
|
from crypticorn.auth.client.models.user_reset_password_request import (
|
99
108
|
UserResetPasswordRequest,
|
100
109
|
)
|
@@ -30,6 +30,9 @@ from crypticorn.auth.client.models.create_api_key_request import CreateApiKeyReq
|
|
30
30
|
from crypticorn.auth.client.models.get_api_keys200_response_inner import (
|
31
31
|
GetApiKeys200ResponseInner,
|
32
32
|
)
|
33
|
+
from crypticorn.auth.client.models.oauth_callback200_response import (
|
34
|
+
OauthCallback200Response,
|
35
|
+
)
|
33
36
|
from crypticorn.auth.client.models.refresh_token_info200_response import (
|
34
37
|
RefreshTokenInfo200Response,
|
35
38
|
)
|
@@ -1294,7 +1297,7 @@ class AuthApi:
|
|
1294
1297
|
_content_type: Optional[StrictStr] = None,
|
1295
1298
|
_headers: Optional[Dict[StrictStr, Any]] = None,
|
1296
1299
|
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
1297
|
-
) ->
|
1300
|
+
) -> OauthCallback200Response:
|
1298
1301
|
"""OAuth Callback
|
1299
1302
|
|
1300
1303
|
Handles the OAuth callback from Google.
|
@@ -1344,7 +1347,7 @@ class AuthApi:
|
|
1344
1347
|
)
|
1345
1348
|
|
1346
1349
|
_response_types_map: Dict[str, Optional[str]] = {
|
1347
|
-
"200": "
|
1350
|
+
"200": "OauthCallback200Response",
|
1348
1351
|
}
|
1349
1352
|
response_data = await self.api_client.call_api(
|
1350
1353
|
*_param, _request_timeout=_request_timeout
|
@@ -1374,7 +1377,7 @@ class AuthApi:
|
|
1374
1377
|
_content_type: Optional[StrictStr] = None,
|
1375
1378
|
_headers: Optional[Dict[StrictStr, Any]] = None,
|
1376
1379
|
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
1377
|
-
) -> ApiResponse[
|
1380
|
+
) -> ApiResponse[OauthCallback200Response]:
|
1378
1381
|
"""OAuth Callback
|
1379
1382
|
|
1380
1383
|
Handles the OAuth callback from Google.
|
@@ -1424,7 +1427,7 @@ class AuthApi:
|
|
1424
1427
|
)
|
1425
1428
|
|
1426
1429
|
_response_types_map: Dict[str, Optional[str]] = {
|
1427
|
-
"200": "
|
1430
|
+
"200": "OauthCallback200Response",
|
1428
1431
|
}
|
1429
1432
|
response_data = await self.api_client.call_api(
|
1430
1433
|
*_param, _request_timeout=_request_timeout
|
@@ -1504,7 +1507,7 @@ class AuthApi:
|
|
1504
1507
|
)
|
1505
1508
|
|
1506
1509
|
_response_types_map: Dict[str, Optional[str]] = {
|
1507
|
-
"200": "
|
1510
|
+
"200": "OauthCallback200Response",
|
1508
1511
|
}
|
1509
1512
|
response_data = await self.api_client.call_api(
|
1510
1513
|
*_param, _request_timeout=_request_timeout
|
@@ -24,6 +24,9 @@ from crypticorn.auth.client.models.resend_verification_email_request import (
|
|
24
24
|
ResendVerificationEmailRequest,
|
25
25
|
)
|
26
26
|
from crypticorn.auth.client.models.update_user_request import UpdateUserRequest
|
27
|
+
from crypticorn.auth.client.models.user_by_username200_response import (
|
28
|
+
UserByUsername200Response,
|
29
|
+
)
|
27
30
|
from crypticorn.auth.client.models.user_reset_password_request import (
|
28
31
|
UserResetPasswordRequest,
|
29
32
|
)
|
@@ -1532,6 +1535,250 @@ class UserApi:
|
|
1532
1535
|
_request_auth=_request_auth,
|
1533
1536
|
)
|
1534
1537
|
|
1538
|
+
@validate_call
|
1539
|
+
async def user_by_username(
|
1540
|
+
self,
|
1541
|
+
username: StrictStr,
|
1542
|
+
_request_timeout: Union[
|
1543
|
+
None,
|
1544
|
+
Annotated[StrictFloat, Field(gt=0)],
|
1545
|
+
Tuple[
|
1546
|
+
Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]
|
1547
|
+
],
|
1548
|
+
] = None,
|
1549
|
+
_request_auth: Optional[Dict[StrictStr, Any]] = None,
|
1550
|
+
_content_type: Optional[StrictStr] = None,
|
1551
|
+
_headers: Optional[Dict[StrictStr, Any]] = None,
|
1552
|
+
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
1553
|
+
) -> UserByUsername200Response:
|
1554
|
+
"""User By Username
|
1555
|
+
|
1556
|
+
Returns the user by username.
|
1557
|
+
|
1558
|
+
:param username: (required)
|
1559
|
+
:type username: str
|
1560
|
+
:param _request_timeout: timeout setting for this request. If one
|
1561
|
+
number provided, it will be total request
|
1562
|
+
timeout. It can also be a pair (tuple) of
|
1563
|
+
(connection, read) timeouts.
|
1564
|
+
:type _request_timeout: int, tuple(int, int), optional
|
1565
|
+
:param _request_auth: set to override the auth_settings for an a single
|
1566
|
+
request; this effectively ignores the
|
1567
|
+
authentication in the spec for a single request.
|
1568
|
+
:type _request_auth: dict, optional
|
1569
|
+
:param _content_type: force content-type for the request.
|
1570
|
+
:type _content_type: str, Optional
|
1571
|
+
:param _headers: set to override the headers for a single
|
1572
|
+
request; this effectively ignores the headers
|
1573
|
+
in the spec for a single request.
|
1574
|
+
:type _headers: dict, optional
|
1575
|
+
:param _host_index: set to override the host_index for a single
|
1576
|
+
request; this effectively ignores the host_index
|
1577
|
+
in the spec for a single request.
|
1578
|
+
:type _host_index: int, optional
|
1579
|
+
:return: Returns the result object.
|
1580
|
+
""" # noqa: E501
|
1581
|
+
|
1582
|
+
_param = self._user_by_username_serialize(
|
1583
|
+
username=username,
|
1584
|
+
_request_auth=_request_auth,
|
1585
|
+
_content_type=_content_type,
|
1586
|
+
_headers=_headers,
|
1587
|
+
_host_index=_host_index,
|
1588
|
+
)
|
1589
|
+
|
1590
|
+
_response_types_map: Dict[str, Optional[str]] = {
|
1591
|
+
"200": "UserByUsername200Response",
|
1592
|
+
}
|
1593
|
+
response_data = await self.api_client.call_api(
|
1594
|
+
*_param, _request_timeout=_request_timeout
|
1595
|
+
)
|
1596
|
+
await response_data.read()
|
1597
|
+
return self.api_client.response_deserialize(
|
1598
|
+
response_data=response_data,
|
1599
|
+
response_types_map=_response_types_map,
|
1600
|
+
).data
|
1601
|
+
|
1602
|
+
@validate_call
|
1603
|
+
async def user_by_username_with_http_info(
|
1604
|
+
self,
|
1605
|
+
username: StrictStr,
|
1606
|
+
_request_timeout: Union[
|
1607
|
+
None,
|
1608
|
+
Annotated[StrictFloat, Field(gt=0)],
|
1609
|
+
Tuple[
|
1610
|
+
Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]
|
1611
|
+
],
|
1612
|
+
] = None,
|
1613
|
+
_request_auth: Optional[Dict[StrictStr, Any]] = None,
|
1614
|
+
_content_type: Optional[StrictStr] = None,
|
1615
|
+
_headers: Optional[Dict[StrictStr, Any]] = None,
|
1616
|
+
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
1617
|
+
) -> ApiResponse[UserByUsername200Response]:
|
1618
|
+
"""User By Username
|
1619
|
+
|
1620
|
+
Returns the user by username.
|
1621
|
+
|
1622
|
+
:param username: (required)
|
1623
|
+
:type username: str
|
1624
|
+
:param _request_timeout: timeout setting for this request. If one
|
1625
|
+
number provided, it will be total request
|
1626
|
+
timeout. It can also be a pair (tuple) of
|
1627
|
+
(connection, read) timeouts.
|
1628
|
+
:type _request_timeout: int, tuple(int, int), optional
|
1629
|
+
:param _request_auth: set to override the auth_settings for an a single
|
1630
|
+
request; this effectively ignores the
|
1631
|
+
authentication in the spec for a single request.
|
1632
|
+
:type _request_auth: dict, optional
|
1633
|
+
:param _content_type: force content-type for the request.
|
1634
|
+
:type _content_type: str, Optional
|
1635
|
+
:param _headers: set to override the headers for a single
|
1636
|
+
request; this effectively ignores the headers
|
1637
|
+
in the spec for a single request.
|
1638
|
+
:type _headers: dict, optional
|
1639
|
+
:param _host_index: set to override the host_index for a single
|
1640
|
+
request; this effectively ignores the host_index
|
1641
|
+
in the spec for a single request.
|
1642
|
+
:type _host_index: int, optional
|
1643
|
+
:return: Returns the result object.
|
1644
|
+
""" # noqa: E501
|
1645
|
+
|
1646
|
+
_param = self._user_by_username_serialize(
|
1647
|
+
username=username,
|
1648
|
+
_request_auth=_request_auth,
|
1649
|
+
_content_type=_content_type,
|
1650
|
+
_headers=_headers,
|
1651
|
+
_host_index=_host_index,
|
1652
|
+
)
|
1653
|
+
|
1654
|
+
_response_types_map: Dict[str, Optional[str]] = {
|
1655
|
+
"200": "UserByUsername200Response",
|
1656
|
+
}
|
1657
|
+
response_data = await self.api_client.call_api(
|
1658
|
+
*_param, _request_timeout=_request_timeout
|
1659
|
+
)
|
1660
|
+
await response_data.read()
|
1661
|
+
return self.api_client.response_deserialize(
|
1662
|
+
response_data=response_data,
|
1663
|
+
response_types_map=_response_types_map,
|
1664
|
+
)
|
1665
|
+
|
1666
|
+
@validate_call
|
1667
|
+
async def user_by_username_without_preload_content(
|
1668
|
+
self,
|
1669
|
+
username: StrictStr,
|
1670
|
+
_request_timeout: Union[
|
1671
|
+
None,
|
1672
|
+
Annotated[StrictFloat, Field(gt=0)],
|
1673
|
+
Tuple[
|
1674
|
+
Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]
|
1675
|
+
],
|
1676
|
+
] = None,
|
1677
|
+
_request_auth: Optional[Dict[StrictStr, Any]] = None,
|
1678
|
+
_content_type: Optional[StrictStr] = None,
|
1679
|
+
_headers: Optional[Dict[StrictStr, Any]] = None,
|
1680
|
+
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
1681
|
+
) -> RESTResponseType:
|
1682
|
+
"""User By Username
|
1683
|
+
|
1684
|
+
Returns the user by username.
|
1685
|
+
|
1686
|
+
:param username: (required)
|
1687
|
+
:type username: str
|
1688
|
+
:param _request_timeout: timeout setting for this request. If one
|
1689
|
+
number provided, it will be total request
|
1690
|
+
timeout. It can also be a pair (tuple) of
|
1691
|
+
(connection, read) timeouts.
|
1692
|
+
:type _request_timeout: int, tuple(int, int), optional
|
1693
|
+
:param _request_auth: set to override the auth_settings for an a single
|
1694
|
+
request; this effectively ignores the
|
1695
|
+
authentication in the spec for a single request.
|
1696
|
+
:type _request_auth: dict, optional
|
1697
|
+
:param _content_type: force content-type for the request.
|
1698
|
+
:type _content_type: str, Optional
|
1699
|
+
:param _headers: set to override the headers for a single
|
1700
|
+
request; this effectively ignores the headers
|
1701
|
+
in the spec for a single request.
|
1702
|
+
:type _headers: dict, optional
|
1703
|
+
:param _host_index: set to override the host_index for a single
|
1704
|
+
request; this effectively ignores the host_index
|
1705
|
+
in the spec for a single request.
|
1706
|
+
:type _host_index: int, optional
|
1707
|
+
:return: Returns the result object.
|
1708
|
+
""" # noqa: E501
|
1709
|
+
|
1710
|
+
_param = self._user_by_username_serialize(
|
1711
|
+
username=username,
|
1712
|
+
_request_auth=_request_auth,
|
1713
|
+
_content_type=_content_type,
|
1714
|
+
_headers=_headers,
|
1715
|
+
_host_index=_host_index,
|
1716
|
+
)
|
1717
|
+
|
1718
|
+
_response_types_map: Dict[str, Optional[str]] = {
|
1719
|
+
"200": "UserByUsername200Response",
|
1720
|
+
}
|
1721
|
+
response_data = await self.api_client.call_api(
|
1722
|
+
*_param, _request_timeout=_request_timeout
|
1723
|
+
)
|
1724
|
+
return response_data.response
|
1725
|
+
|
1726
|
+
def _user_by_username_serialize(
|
1727
|
+
self,
|
1728
|
+
username,
|
1729
|
+
_request_auth,
|
1730
|
+
_content_type,
|
1731
|
+
_headers,
|
1732
|
+
_host_index,
|
1733
|
+
) -> RequestSerialized:
|
1734
|
+
|
1735
|
+
_host = None
|
1736
|
+
|
1737
|
+
_collection_formats: Dict[str, str] = {}
|
1738
|
+
|
1739
|
+
_path_params: Dict[str, str] = {}
|
1740
|
+
_query_params: List[Tuple[str, str]] = []
|
1741
|
+
_header_params: Dict[str, Optional[str]] = _headers or {}
|
1742
|
+
_form_params: List[Tuple[str, str]] = []
|
1743
|
+
_files: Dict[
|
1744
|
+
str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
|
1745
|
+
] = {}
|
1746
|
+
_body_params: Optional[bytes] = None
|
1747
|
+
|
1748
|
+
# process the path parameters
|
1749
|
+
# process the query parameters
|
1750
|
+
if username is not None:
|
1751
|
+
|
1752
|
+
_query_params.append(("username", username))
|
1753
|
+
|
1754
|
+
# process the header parameters
|
1755
|
+
# process the form parameters
|
1756
|
+
# process the body parameter
|
1757
|
+
|
1758
|
+
# set the HTTP header `Accept`
|
1759
|
+
if "Accept" not in _header_params:
|
1760
|
+
_header_params["Accept"] = self.api_client.select_header_accept(
|
1761
|
+
["application/json"]
|
1762
|
+
)
|
1763
|
+
|
1764
|
+
# authentication setting
|
1765
|
+
_auth_settings: List[str] = []
|
1766
|
+
|
1767
|
+
return self.api_client.param_serialize(
|
1768
|
+
method="GET",
|
1769
|
+
resource_path="/user-by-username",
|
1770
|
+
path_params=_path_params,
|
1771
|
+
query_params=_query_params,
|
1772
|
+
header_params=_header_params,
|
1773
|
+
body=_body_params,
|
1774
|
+
post_params=_form_params,
|
1775
|
+
files=_files,
|
1776
|
+
auth_settings=_auth_settings,
|
1777
|
+
collection_formats=_collection_formats,
|
1778
|
+
_host=_host,
|
1779
|
+
_request_auth=_request_auth,
|
1780
|
+
)
|
1781
|
+
|
1535
1782
|
@validate_call
|
1536
1783
|
async def user_reset_password(
|
1537
1784
|
self,
|
@@ -56,6 +56,12 @@ from crypticorn.auth.client.models.logout_default_response import LogoutDefaultR
|
|
56
56
|
from crypticorn.auth.client.models.logout_default_response_issues_inner import (
|
57
57
|
LogoutDefaultResponseIssuesInner,
|
58
58
|
)
|
59
|
+
from crypticorn.auth.client.models.oauth_callback200_response import (
|
60
|
+
OauthCallback200Response,
|
61
|
+
)
|
62
|
+
from crypticorn.auth.client.models.oauth_callback200_response_user import (
|
63
|
+
OauthCallback200ResponseUser,
|
64
|
+
)
|
59
65
|
from crypticorn.auth.client.models.refresh_token_info200_response import (
|
60
66
|
RefreshTokenInfo200Response,
|
61
67
|
)
|
@@ -74,6 +80,9 @@ from crypticorn.auth.client.models.rotate_tokens200_response import (
|
|
74
80
|
from crypticorn.auth.client.models.token_info200_response import TokenInfo200Response
|
75
81
|
from crypticorn.auth.client.models.unlink_wallet_request import UnlinkWalletRequest
|
76
82
|
from crypticorn.auth.client.models.update_user_request import UpdateUserRequest
|
83
|
+
from crypticorn.auth.client.models.user_by_username200_response import (
|
84
|
+
UserByUsername200Response,
|
85
|
+
)
|
77
86
|
from crypticorn.auth.client.models.user_reset_password_request import (
|
78
87
|
UserResetPasswordRequest,
|
79
88
|
)
|
{crypticorn-2.5.3 → crypticorn-2.7.0}/crypticorn/auth/client/models/create_api_key_request.py
RENAMED
@@ -77,10 +77,11 @@ class CreateApiKeyRequest(BaseModel):
|
|
77
77
|
"read:metrics:exchanges",
|
78
78
|
"read:metrics:tokens",
|
79
79
|
"read:metrics:markets",
|
80
|
+
"read:sentiment",
|
80
81
|
]
|
81
82
|
):
|
82
83
|
raise ValueError(
|
83
|
-
"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')"
|
84
|
+
"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')"
|
84
85
|
)
|
85
86
|
return value
|
86
87
|
|
@@ -85,10 +85,11 @@ class GetApiKeys200ResponseInner(BaseModel):
|
|
85
85
|
"read:metrics:exchanges",
|
86
86
|
"read:metrics:tokens",
|
87
87
|
"read:metrics:markets",
|
88
|
+
"read:sentiment",
|
88
89
|
]
|
89
90
|
):
|
90
91
|
raise ValueError(
|
91
|
-
"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')"
|
92
|
+
"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')"
|
92
93
|
)
|
93
94
|
return value
|
94
95
|
|
@@ -0,0 +1,91 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
|
3
|
+
"""
|
4
|
+
Crypticorn Auth API
|
5
|
+
|
6
|
+
OpenAPI compliant REST API built using tRPC with Express
|
7
|
+
|
8
|
+
The version of the OpenAPI document: 1.0.0
|
9
|
+
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
10
|
+
|
11
|
+
Do not edit the class manually.
|
12
|
+
""" # noqa: E501
|
13
|
+
|
14
|
+
|
15
|
+
from __future__ import annotations
|
16
|
+
import pprint
|
17
|
+
import re # noqa: F401
|
18
|
+
import json
|
19
|
+
|
20
|
+
from pydantic import BaseModel, ConfigDict, Field, StrictStr
|
21
|
+
from typing import Any, ClassVar, Dict, List, Optional
|
22
|
+
from typing import Optional, Set
|
23
|
+
from typing_extensions import Self
|
24
|
+
|
25
|
+
|
26
|
+
class UserByUsername200Response(BaseModel):
|
27
|
+
"""
|
28
|
+
UserByUsername200Response
|
29
|
+
""" # noqa: E501
|
30
|
+
|
31
|
+
user_id: StrictStr = Field(alias="userId")
|
32
|
+
username: Optional[StrictStr] = None
|
33
|
+
name: Optional[StrictStr] = None
|
34
|
+
__properties: ClassVar[List[str]] = ["userId", "username", "name"]
|
35
|
+
|
36
|
+
model_config = ConfigDict(
|
37
|
+
populate_by_name=True,
|
38
|
+
validate_assignment=True,
|
39
|
+
protected_namespaces=(),
|
40
|
+
)
|
41
|
+
|
42
|
+
def to_str(self) -> str:
|
43
|
+
"""Returns the string representation of the model using alias"""
|
44
|
+
return pprint.pformat(self.model_dump(by_alias=True))
|
45
|
+
|
46
|
+
def to_json(self) -> str:
|
47
|
+
"""Returns the JSON representation of the model using alias"""
|
48
|
+
# TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
|
49
|
+
return json.dumps(self.to_dict())
|
50
|
+
|
51
|
+
@classmethod
|
52
|
+
def from_json(cls, json_str: str) -> Optional[Self]:
|
53
|
+
"""Create an instance of UserByUsername200Response from a JSON string"""
|
54
|
+
return cls.from_dict(json.loads(json_str))
|
55
|
+
|
56
|
+
def to_dict(self) -> Dict[str, Any]:
|
57
|
+
"""Return the dictionary representation of the model using alias.
|
58
|
+
|
59
|
+
This has the following differences from calling pydantic's
|
60
|
+
`self.model_dump(by_alias=True)`:
|
61
|
+
|
62
|
+
* `None` is only added to the output dict for nullable fields that
|
63
|
+
were set at model initialization. Other fields with value `None`
|
64
|
+
are ignored.
|
65
|
+
"""
|
66
|
+
excluded_fields: Set[str] = set([])
|
67
|
+
|
68
|
+
_dict = self.model_dump(
|
69
|
+
by_alias=True,
|
70
|
+
exclude=excluded_fields,
|
71
|
+
exclude_none=True,
|
72
|
+
)
|
73
|
+
return _dict
|
74
|
+
|
75
|
+
@classmethod
|
76
|
+
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
|
77
|
+
"""Create an instance of UserByUsername200Response from a dict"""
|
78
|
+
if obj is None:
|
79
|
+
return None
|
80
|
+
|
81
|
+
if not isinstance(obj, dict):
|
82
|
+
return cls.model_validate(obj)
|
83
|
+
|
84
|
+
_obj = cls.model_validate(
|
85
|
+
{
|
86
|
+
"userId": obj.get("userId"),
|
87
|
+
"username": obj.get("username"),
|
88
|
+
"name": obj.get("name"),
|
89
|
+
}
|
90
|
+
)
|
91
|
+
return _obj
|
@@ -17,7 +17,15 @@ import pprint
|
|
17
17
|
import re # noqa: F401
|
18
18
|
import json
|
19
19
|
|
20
|
-
from pydantic import
|
20
|
+
from pydantic import (
|
21
|
+
BaseModel,
|
22
|
+
ConfigDict,
|
23
|
+
Field,
|
24
|
+
StrictBool,
|
25
|
+
StrictFloat,
|
26
|
+
StrictInt,
|
27
|
+
StrictStr,
|
28
|
+
)
|
21
29
|
from typing import Any, ClassVar, Dict, List, Optional, Union
|
22
30
|
from typing import Optional, Set
|
23
31
|
from typing_extensions import Self
|
@@ -41,6 +49,9 @@ class Verify200Response(BaseModel):
|
|
41
49
|
default=None, description="Issued at time"
|
42
50
|
)
|
43
51
|
jti: Optional[StrictStr] = Field(default=None, description="JWT ID")
|
52
|
+
admin: Optional[StrictBool] = Field(
|
53
|
+
default=None, description="Whether the user is an admin"
|
54
|
+
)
|
44
55
|
scopes: Optional[List[StrictStr]] = Field(default=None, description="Scopes")
|
45
56
|
__properties: ClassVar[List[str]] = [
|
46
57
|
"iss",
|
@@ -50,6 +61,7 @@ class Verify200Response(BaseModel):
|
|
50
61
|
"nbf",
|
51
62
|
"iat",
|
52
63
|
"jti",
|
64
|
+
"admin",
|
53
65
|
"scopes",
|
54
66
|
]
|
55
67
|
|
@@ -110,6 +122,7 @@ class Verify200Response(BaseModel):
|
|
110
122
|
"nbf": obj.get("nbf"),
|
111
123
|
"iat": obj.get("iat"),
|
112
124
|
"jti": obj.get("jti"),
|
125
|
+
"admin": obj.get("admin"),
|
113
126
|
"scopes": obj.get("scopes"),
|
114
127
|
}
|
115
128
|
)
|
@@ -17,7 +17,15 @@ import pprint
|
|
17
17
|
import re # noqa: F401
|
18
18
|
import json
|
19
19
|
|
20
|
-
from pydantic import
|
20
|
+
from pydantic import (
|
21
|
+
BaseModel,
|
22
|
+
ConfigDict,
|
23
|
+
Field,
|
24
|
+
StrictBool,
|
25
|
+
StrictFloat,
|
26
|
+
StrictInt,
|
27
|
+
StrictStr,
|
28
|
+
)
|
21
29
|
from typing import Any, ClassVar, Dict, List, Optional, Union
|
22
30
|
from typing import Optional, Set
|
23
31
|
from typing_extensions import Self
|
@@ -41,6 +49,9 @@ class VerifyEmail200ResponseAuthAuth(BaseModel):
|
|
41
49
|
default=None, description="Issued at time"
|
42
50
|
)
|
43
51
|
jti: Optional[StrictStr] = Field(default=None, description="JWT ID")
|
52
|
+
admin: Optional[StrictBool] = Field(
|
53
|
+
default=None, description="Whether the user is an admin"
|
54
|
+
)
|
44
55
|
scopes: Optional[List[StrictStr]] = Field(default=None, description="Scopes")
|
45
56
|
__properties: ClassVar[List[str]] = [
|
46
57
|
"iss",
|
@@ -50,6 +61,7 @@ class VerifyEmail200ResponseAuthAuth(BaseModel):
|
|
50
61
|
"nbf",
|
51
62
|
"iat",
|
52
63
|
"jti",
|
64
|
+
"admin",
|
53
65
|
"scopes",
|
54
66
|
]
|
55
67
|
|
@@ -110,6 +122,7 @@ class VerifyEmail200ResponseAuthAuth(BaseModel):
|
|
110
122
|
"nbf": obj.get("nbf"),
|
111
123
|
"iat": obj.get("iat"),
|
112
124
|
"jti": obj.get("jti"),
|
125
|
+
"admin": obj.get("admin"),
|
113
126
|
"scopes": obj.get("scopes"),
|
114
127
|
}
|
115
128
|
)
|
@@ -17,7 +17,7 @@ import pprint
|
|
17
17
|
import re # noqa: F401
|
18
18
|
import json
|
19
19
|
|
20
|
-
from pydantic import BaseModel, ConfigDict, StrictStr
|
20
|
+
from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr
|
21
21
|
from typing import Any, ClassVar, Dict, List, Optional
|
22
22
|
from typing import Optional, Set
|
23
23
|
from typing_extensions import Self
|
@@ -34,6 +34,7 @@ class Whoami200Response(BaseModel):
|
|
34
34
|
picture: Optional[StrictStr] = None
|
35
35
|
username: Optional[StrictStr] = None
|
36
36
|
phone: Optional[StrictStr] = None
|
37
|
+
is_admin: Optional[StrictBool] = Field(default=False, alias="isAdmin")
|
37
38
|
__properties: ClassVar[List[str]] = [
|
38
39
|
"email",
|
39
40
|
"id",
|
@@ -41,6 +42,7 @@ class Whoami200Response(BaseModel):
|
|
41
42
|
"picture",
|
42
43
|
"username",
|
43
44
|
"phone",
|
45
|
+
"isAdmin",
|
44
46
|
]
|
45
47
|
|
46
48
|
model_config = ConfigDict(
|
@@ -99,6 +101,9 @@ class Whoami200Response(BaseModel):
|
|
99
101
|
"picture": obj.get("picture"),
|
100
102
|
"username": obj.get("username"),
|
101
103
|
"phone": obj.get("phone"),
|
104
|
+
"isAdmin": (
|
105
|
+
obj.get("isAdmin") if obj.get("isAdmin") is not None else False
|
106
|
+
),
|
102
107
|
}
|
103
108
|
)
|
104
109
|
return _obj
|
@@ -7,4 +7,5 @@ from crypticorn.common.auth import *
|
|
7
7
|
from crypticorn.common.enums import *
|
8
8
|
from crypticorn.common.utils import *
|
9
9
|
from crypticorn.common.exceptions import *
|
10
|
+
from crypticorn.common.pagination import *
|
10
11
|
from crypticorn.common.status_router import router as status_router
|
@@ -3,9 +3,14 @@ import json
|
|
3
3
|
from crypticorn.auth import Verify200Response, AuthClient, Configuration
|
4
4
|
from crypticorn.auth.client.exceptions import ApiException
|
5
5
|
from crypticorn.common.scopes import Scope
|
6
|
-
from crypticorn.common.exceptions import
|
6
|
+
from crypticorn.common.exceptions import (
|
7
|
+
ApiError,
|
8
|
+
HTTPException,
|
9
|
+
ExceptionContent,
|
10
|
+
WebSocketException,
|
11
|
+
)
|
7
12
|
from crypticorn.common.urls import BaseUrl, Service, ApiVersion
|
8
|
-
from fastapi import Depends, Query
|
13
|
+
from fastapi import Depends, Query
|
9
14
|
from fastapi.security import (
|
10
15
|
HTTPAuthorizationCredentials,
|
11
16
|
SecurityScopes,
|
@@ -48,6 +53,7 @@ class AuthHandler:
|
|
48
53
|
"""
|
49
54
|
Verifies the API key.
|
50
55
|
"""
|
56
|
+
# self.client.config.api_key = {apikey_header.scheme_name: api_key}
|
51
57
|
return await self.client.login.verify_api_key(api_key)
|
52
58
|
|
53
59
|
async def _verify_bearer(
|
@@ -229,11 +235,9 @@ class AuthHandler:
|
|
229
235
|
if bearer
|
230
236
|
else None
|
231
237
|
)
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
if isinstance(response, HTTPException):
|
236
|
-
raise WebSocketException(
|
237
|
-
code=status.WS_1008_POLICY_VIOLATION, reason=response.detail
|
238
|
+
try:
|
239
|
+
return await self.combined_auth(
|
240
|
+
bearer=credentials, api_key=api_key, sec=sec
|
238
241
|
)
|
239
|
-
|
242
|
+
except HTTPException as e:
|
243
|
+
raise WebSocketException.from_http_exception(e)
|