crypticorn 2.7.2__tar.gz → 2.7.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.7.4/MANIFEST.in +1 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/PKG-INFO +22 -17
- {crypticorn-2.7.2 → crypticorn-2.7.4}/README.md +18 -16
- crypticorn-2.7.4/crypticorn/cli/templates/Dockerfile +33 -0
- crypticorn-2.7.4/crypticorn/cli/templates/dependabot.yml +26 -0
- crypticorn-2.7.4/crypticorn/cli/templates/ruff.yml +12 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/common/exceptions.py +3 -3
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/klines/main.py +3 -2
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/pay/client/__init__.py +1 -1
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/pay/client/models/__init__.py +1 -1
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/pay/client/models/payment.py +4 -4
- crypticorn-2.7.2/crypticorn/pay/client/models/services.py → crypticorn-2.7.4/crypticorn/pay/client/models/provider.py +3 -3
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/pay/client/models/scope.py +1 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn.egg-info/PKG-INFO +22 -17
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn.egg-info/SOURCES.txt +5 -1
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn.egg-info/requires.txt +2 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/pyproject.toml +2 -1
- {crypticorn-2.7.2 → crypticorn-2.7.4}/requirements/dev.txt +2 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/tests/test_config.py +1 -1
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/__init__.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/auth/__init__.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/auth/client/__init__.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/auth/client/api/__init__.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/auth/client/api/admin_api.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/auth/client/api/auth_api.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/auth/client/api/service_api.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/auth/client/api/user_api.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/auth/client/api/wallet_api.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/auth/client/api_client.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/auth/client/api_response.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/auth/client/configuration.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/auth/client/exceptions.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/auth/client/models/__init__.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/auth/client/models/add_wallet200_response.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/auth/client/models/add_wallet_request.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/auth/client/models/authorize_user200_response.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/auth/client/models/authorize_user200_response_auth.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/auth/client/models/authorize_user_request.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/auth/client/models/create_api_key200_response.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/auth/client/models/create_api_key_request.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/auth/client/models/create_user_request.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/auth/client/models/get_api_keys200_response_inner.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/auth/client/models/list_wallets200_response.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/auth/client/models/list_wallets200_response_balances_inner.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/auth/client/models/list_wallets200_response_balances_inner_sale_round.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/auth/client/models/list_wallets200_response_balances_inner_wallet.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/auth/client/models/list_wallets200_response_balances_inner_wallet_vesting_wallets_inner.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/auth/client/models/list_wallets200_response_data_inner.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/auth/client/models/list_wallets200_response_user_value.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/auth/client/models/logout_default_response.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/auth/client/models/logout_default_response_issues_inner.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/auth/client/models/oauth_callback200_response.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/auth/client/models/oauth_callback200_response_user.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/auth/client/models/refresh_token_info200_response.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/auth/client/models/refresh_token_info200_response_user_session.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/auth/client/models/resend_verification_email_request.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/auth/client/models/revoke_user_tokens_request.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/auth/client/models/rotate_tokens200_response.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/auth/client/models/token_info200_response.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/auth/client/models/unlink_wallet_request.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/auth/client/models/update_user_request.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/auth/client/models/user_by_username200_response.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/auth/client/models/user_reset_password_request.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/auth/client/models/user_set_password_request.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/auth/client/models/verify200_response.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/auth/client/models/verify_email200_response.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/auth/client/models/verify_email200_response_auth.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/auth/client/models/verify_email200_response_auth_auth.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/auth/client/models/verify_email_request.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/auth/client/models/verify_wallet_request.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/auth/client/models/wallet_verified200_response.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/auth/client/models/whoami200_response.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/auth/client/py.typed +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/auth/client/rest.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/auth/main.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/cli/__init__.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/cli/__main__.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/cli/init.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/cli/templates/__init__.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/cli/templates/auth.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/client.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/common/__init__.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/common/auth.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/common/decorators.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/common/enums.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/common/errors.py +5 -5
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/common/mixins.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/common/pagination.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/common/scopes.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/common/status_router.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/common/urls.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/common/utils.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/hive/__init__.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/hive/client/__init__.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/hive/client/api/__init__.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/hive/client/api/data_api.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/hive/client/api/models_api.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/hive/client/api/status_api.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/hive/client/api_client.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/hive/client/api_response.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/hive/client/configuration.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/hive/client/exceptions.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/hive/client/models/__init__.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/hive/client/models/coins.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/hive/client/models/data_download_response.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/hive/client/models/data_info.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/hive/client/models/data_value_value_value_inner.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/hive/client/models/data_version.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/hive/client/models/data_version_info.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/hive/client/models/download_links.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/hive/client/models/evaluation.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/hive/client/models/evaluation_response.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/hive/client/models/exception_detail.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/hive/client/models/feature_size.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/hive/client/models/model.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/hive/client/models/model_create.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/hive/client/models/model_status.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/hive/client/models/model_update.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/hive/client/models/target.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/hive/client/models/target_info.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/hive/client/models/target_type.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/hive/client/py.typed +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/hive/client/rest.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/hive/main.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/hive/utils.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/klines/__init__.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/klines/client/__init__.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/klines/client/api/__init__.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/klines/client/api/change_in_timeframe_api.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/klines/client/api/funding_rates_api.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/klines/client/api/ohlcv_data_api.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/klines/client/api/status_api.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/klines/client/api/symbols_api.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/klines/client/api/udf_api.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/klines/client/api_client.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/klines/client/api_response.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/klines/client/configuration.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/klines/client/exceptions.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/klines/client/models/__init__.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/klines/client/models/change_in_timeframe.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/klines/client/models/exception_detail.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/klines/client/models/funding_rate.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/klines/client/models/ohlcv_history.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/klines/client/models/resolution.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/klines/client/models/search_symbol.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/klines/client/models/sort_direction.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/klines/client/models/symbol_group.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/klines/client/models/symbol_info.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/klines/client/models/symbol_type.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/klines/client/models/timeframe.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/klines/client/models/udf_config.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/klines/client/py.typed +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/klines/client/rest.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/metrics/__init__.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/metrics/client/__init__.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/metrics/client/api/__init__.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/metrics/client/api/exchanges_api.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/metrics/client/api/indicators_api.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/metrics/client/api/logs_api.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/metrics/client/api/marketcap_api.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/metrics/client/api/markets_api.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/metrics/client/api/status_api.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/metrics/client/api/tokens_api.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/metrics/client/api_client.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/metrics/client/api_response.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/metrics/client/configuration.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/metrics/client/exceptions.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/metrics/client/models/__init__.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/metrics/client/models/exception_detail.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/metrics/client/models/severity.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/metrics/client/models/time_interval.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/metrics/client/models/trading_status.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/metrics/client/py.typed +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/metrics/client/rest.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/metrics/main.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/pay/__init__.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/pay/client/api/__init__.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/pay/client/api/now_payments_api.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/pay/client/api/payments_api.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/pay/client/api/products_api.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/pay/client/api/status_api.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/pay/client/api_client.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/pay/client/api_response.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/pay/client/configuration.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/pay/client/exceptions.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/pay/client/models/exception_detail.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/pay/client/models/now_create_invoice_req.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/pay/client/models/now_create_invoice_res.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/pay/client/models/payment_status.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/pay/client/models/product_create.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/pay/client/models/product_read.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/pay/client/models/product_sub_read.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/pay/client/models/product_update.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/pay/client/py.typed +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/pay/client/rest.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/pay/main.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/trade/__init__.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/trade/client/__init__.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/trade/client/api/__init__.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/trade/client/api/api_keys_api.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/trade/client/api/bots_api.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/trade/client/api/exchanges_api.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/trade/client/api/futures_trading_panel_api.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/trade/client/api/notifications_api.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/trade/client/api/orders_api.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/trade/client/api/status_api.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/trade/client/api/strategies_api.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/trade/client/api/trading_actions_api.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/trade/client/api_client.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/trade/client/api_response.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/trade/client/configuration.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/trade/client/exceptions.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/trade/client/models/__init__.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/trade/client/models/action_model.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/trade/client/models/bot_model.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/trade/client/models/bot_status.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/trade/client/models/exception_detail.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/trade/client/models/exchange_key_model.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/trade/client/models/execution_ids.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/trade/client/models/futures_balance.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/trade/client/models/futures_trading_action.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/trade/client/models/margin_mode.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/trade/client/models/notification_model.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/trade/client/models/order_model.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/trade/client/models/order_status.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/trade/client/models/post_futures_action.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/trade/client/models/spot_trading_action.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/trade/client/models/strategy_exchange_info.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/trade/client/models/strategy_model_input.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/trade/client/models/strategy_model_output.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/trade/client/models/tpsl.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/trade/client/models/trading_action_type.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/trade/client/py.typed +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/trade/client/rest.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/trade/main.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn.egg-info/dependency_links.txt +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn.egg-info/entry_points.txt +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn.egg-info/top_level.txt +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/requirements/extra.txt +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/requirements/main.txt +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/requirements/test.txt +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/setup.cfg +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/tests/test_auth_client.py +1 -1
- {crypticorn-2.7.2 → crypticorn-2.7.4}/tests/test_enums.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/tests/test_errors.py +0 -0
- {crypticorn-2.7.2 → crypticorn-2.7.4}/tests/test_pagination.py +0 -0
@@ -0,0 +1 @@
|
|
1
|
+
graft crypticorn/cli/templates
|
@@ -1,8 +1,9 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: crypticorn
|
3
|
-
Version: 2.7.
|
3
|
+
Version: 2.7.4
|
4
4
|
Summary: Maximise Your Crypto Trading Profits with Machine Learning
|
5
5
|
Author-email: Crypticorn <timon@crypticorn.com>
|
6
|
+
License: MIT
|
6
7
|
Project-URL: Homepage, https://crypticorn.com
|
7
8
|
Keywords: machine learning,data science,crypto,modelling
|
8
9
|
Classifier: Topic :: Scientific/Engineering
|
@@ -24,6 +25,8 @@ Requires-Dist: typing-extensions<5.0.0,>=4.7.1
|
|
24
25
|
Requires-Dist: requests<3.0.0,>=2.32.0
|
25
26
|
Requires-Dist: tqdm<5.0.0,>=4.67.0
|
26
27
|
Provides-Extra: dev
|
28
|
+
Requires-Dist: build; extra == "dev"
|
29
|
+
Requires-Dist: twine; extra == "dev"
|
27
30
|
Requires-Dist: streamlit; extra == "dev"
|
28
31
|
Requires-Dist: httpx; extra == "dev"
|
29
32
|
Requires-Dist: black; extra == "dev"
|
@@ -40,17 +43,12 @@ Requires-Dist: PyJWT==2.10.0; extra == "test"
|
|
40
43
|
Provides-Extra: extra
|
41
44
|
Requires-Dist: pandas<3.0.0,>=2.2.0; extra == "extra"
|
42
45
|
|
43
|
-
|
46
|
+
## What is Crypticorn?
|
44
47
|
|
45
|
-
Crypticorn is at the forefront of cutting-edge
|
46
|
-
Crypticorn offers AI-based solutions for both active and passive investors, including:
|
47
|
-
- Prediction Dashboard with trading terminal,
|
48
|
-
- AI Agents with different strategies,
|
49
|
-
- DEX AI Signals for newly launched tokens,
|
50
|
-
- DEX AI Bots
|
48
|
+
Crypticorn is at the forefront of cutting-edge crypto trading with Machine Learning.
|
51
49
|
|
52
|
-
Use this API Client to contribute to the
|
53
|
-
|
50
|
+
Use this API Client to access valuable data sources, contribute to the Hive AI - a community driven AI Meta Model for predicting the
|
51
|
+
crypto market - and programmatically interact with the entire Crypticorn ecosystem.
|
54
52
|
|
55
53
|
## Installation
|
56
54
|
|
@@ -66,17 +64,19 @@ If you want the latest version, which could be a pre release, run:
|
|
66
64
|
pip install --pre crypticorn
|
67
65
|
```
|
68
66
|
|
67
|
+
You can install extra dependencies grouped in the extras `extra` (heavy dependencies that do not come with the default version) `dev` (development) and `test` (testing). The `extra` dependencies include heavy libraries like `pandas`, which is only used in a few custom API operations (suffixed with `_fmt`), which preprocess the response data as a pandas Dataframe for convenience.
|
68
|
+
|
69
69
|
## Structure
|
70
70
|
|
71
71
|
Our API is available as an asynchronous Python SDK. The main entry point you need is the `ApiClient` class, which you would import like this:
|
72
72
|
```python
|
73
73
|
from crypticorn import ApiClient
|
74
74
|
```
|
75
|
-
The ApiClient serves as the central interface for API operations. It instantiates multiple API wrappers corresponding to our
|
75
|
+
The ApiClient serves as the central interface for API operations. It instantiates multiple API wrappers corresponding to our micro services.
|
76
76
|
|
77
|
-
|
77
|
+
Request and response models for API operations should be accessed through the appropriate sub package.
|
78
78
|
|
79
|
-
Note: All symbols are re-exported at the
|
79
|
+
Note: All symbols are re-exported at the sub package level for convenience.
|
80
80
|
|
81
81
|
```python
|
82
82
|
from crypticorn.trade import BotStatus
|
@@ -87,6 +87,10 @@ The `common` submodule contains shared classes not bound to a specific API.
|
|
87
87
|
from crypticorn.common import Scope, Exchange
|
88
88
|
```
|
89
89
|
|
90
|
+
## Authentication
|
91
|
+
|
92
|
+
To get started, [create an API key in your dashboard](https://app.crypticorn.com/account/developer). Then instantiate the `ApiClient` class with your copied key.
|
93
|
+
|
90
94
|
## Basic Usage
|
91
95
|
|
92
96
|
### With Async Context Protocol
|
@@ -131,16 +135,16 @@ print(res)
|
|
131
135
|
```
|
132
136
|
The output would look like this:
|
133
137
|
```python
|
134
|
-
status_code=200 headers={'Date': 'Wed, 09 Apr 2025 19:15:19 GMT', 'Content-Type': 'application/json'
|
138
|
+
status_code=200 headers={'Date': 'Wed, 09 Apr 2025 19:15:19 GMT', 'Content-Type': 'application/json'} data=[ProductModel(id='67e8146e7bae32f3838fe36a', name='Awesome Product', price=5.0, scopes=None, duration=30, description='You need to buy this', is_active=True)] raw_data=b'[{"id":"67e8146e7bae32f3838fe36a","name":"Awesome Product","price":5.0,"duration":30,"description":"You need to buy this","is_active":true}]'
|
135
139
|
```
|
136
|
-
You can then access the data of the response (as serialized output) with:
|
140
|
+
You can then access the data of the response (as serialized output (1) or as JSON string in bytes (2)) with:
|
137
141
|
```python
|
138
142
|
print(res.data)
|
143
|
+
print(res.raw_data)
|
139
144
|
```
|
140
145
|
On top of that you get some information about the request:
|
141
146
|
```python
|
142
147
|
print(res.status_code)
|
143
|
-
print(res.raw_data)
|
144
148
|
print(res.headers)
|
145
149
|
```
|
146
150
|
|
@@ -163,6 +167,7 @@ This might be of use if you are testing a specific API locally.
|
|
163
167
|
To override e.g. the host for the Hive client to connect to http://localhost:8000 instead of the default proxy, you would do:
|
164
168
|
```python
|
165
169
|
from crypticorn.hive import Configuration as Hiveconfig
|
170
|
+
from crypticorn.common import Service
|
166
171
|
async with ApiClient(base_url=BaseUrl.DEV) as client:
|
167
|
-
client.configure(config=HiveConfig(host="http://localhost:8000"), client=
|
172
|
+
client.configure(config=HiveConfig(host="http://localhost:8000"), client=Service.HIVE)
|
168
173
|
```
|
@@ -1,14 +1,9 @@
|
|
1
|
-
|
1
|
+
## What is Crypticorn?
|
2
2
|
|
3
|
-
Crypticorn is at the forefront of cutting-edge
|
4
|
-
Crypticorn offers AI-based solutions for both active and passive investors, including:
|
5
|
-
- Prediction Dashboard with trading terminal,
|
6
|
-
- AI Agents with different strategies,
|
7
|
-
- DEX AI Signals for newly launched tokens,
|
8
|
-
- DEX AI Bots
|
3
|
+
Crypticorn is at the forefront of cutting-edge crypto trading with Machine Learning.
|
9
4
|
|
10
|
-
Use this API Client to contribute to the
|
11
|
-
|
5
|
+
Use this API Client to access valuable data sources, contribute to the Hive AI - a community driven AI Meta Model for predicting the
|
6
|
+
crypto market - and programmatically interact with the entire Crypticorn ecosystem.
|
12
7
|
|
13
8
|
## Installation
|
14
9
|
|
@@ -24,17 +19,19 @@ If you want the latest version, which could be a pre release, run:
|
|
24
19
|
pip install --pre crypticorn
|
25
20
|
```
|
26
21
|
|
22
|
+
You can install extra dependencies grouped in the extras `extra` (heavy dependencies that do not come with the default version) `dev` (development) and `test` (testing). The `extra` dependencies include heavy libraries like `pandas`, which is only used in a few custom API operations (suffixed with `_fmt`), which preprocess the response data as a pandas Dataframe for convenience.
|
23
|
+
|
27
24
|
## Structure
|
28
25
|
|
29
26
|
Our API is available as an asynchronous Python SDK. The main entry point you need is the `ApiClient` class, which you would import like this:
|
30
27
|
```python
|
31
28
|
from crypticorn import ApiClient
|
32
29
|
```
|
33
|
-
The ApiClient serves as the central interface for API operations. It instantiates multiple API wrappers corresponding to our
|
30
|
+
The ApiClient serves as the central interface for API operations. It instantiates multiple API wrappers corresponding to our micro services.
|
34
31
|
|
35
|
-
|
32
|
+
Request and response models for API operations should be accessed through the appropriate sub package.
|
36
33
|
|
37
|
-
Note: All symbols are re-exported at the
|
34
|
+
Note: All symbols are re-exported at the sub package level for convenience.
|
38
35
|
|
39
36
|
```python
|
40
37
|
from crypticorn.trade import BotStatus
|
@@ -45,6 +42,10 @@ The `common` submodule contains shared classes not bound to a specific API.
|
|
45
42
|
from crypticorn.common import Scope, Exchange
|
46
43
|
```
|
47
44
|
|
45
|
+
## Authentication
|
46
|
+
|
47
|
+
To get started, [create an API key in your dashboard](https://app.crypticorn.com/account/developer). Then instantiate the `ApiClient` class with your copied key.
|
48
|
+
|
48
49
|
## Basic Usage
|
49
50
|
|
50
51
|
### With Async Context Protocol
|
@@ -89,16 +90,16 @@ print(res)
|
|
89
90
|
```
|
90
91
|
The output would look like this:
|
91
92
|
```python
|
92
|
-
status_code=200 headers={'Date': 'Wed, 09 Apr 2025 19:15:19 GMT', 'Content-Type': 'application/json'
|
93
|
+
status_code=200 headers={'Date': 'Wed, 09 Apr 2025 19:15:19 GMT', 'Content-Type': 'application/json'} data=[ProductModel(id='67e8146e7bae32f3838fe36a', name='Awesome Product', price=5.0, scopes=None, duration=30, description='You need to buy this', is_active=True)] raw_data=b'[{"id":"67e8146e7bae32f3838fe36a","name":"Awesome Product","price":5.0,"duration":30,"description":"You need to buy this","is_active":true}]'
|
93
94
|
```
|
94
|
-
You can then access the data of the response (as serialized output) with:
|
95
|
+
You can then access the data of the response (as serialized output (1) or as JSON string in bytes (2)) with:
|
95
96
|
```python
|
96
97
|
print(res.data)
|
98
|
+
print(res.raw_data)
|
97
99
|
```
|
98
100
|
On top of that you get some information about the request:
|
99
101
|
```python
|
100
102
|
print(res.status_code)
|
101
|
-
print(res.raw_data)
|
102
103
|
print(res.headers)
|
103
104
|
```
|
104
105
|
|
@@ -121,6 +122,7 @@ This might be of use if you are testing a specific API locally.
|
|
121
122
|
To override e.g. the host for the Hive client to connect to http://localhost:8000 instead of the default proxy, you would do:
|
122
123
|
```python
|
123
124
|
from crypticorn.hive import Configuration as Hiveconfig
|
125
|
+
from crypticorn.common import Service
|
124
126
|
async with ApiClient(base_url=BaseUrl.DEV) as client:
|
125
|
-
client.configure(config=HiveConfig(host="http://localhost:8000"), client=
|
127
|
+
client.configure(config=HiveConfig(host="http://localhost:8000"), client=Service.HIVE)
|
126
128
|
```
|
@@ -0,0 +1,33 @@
|
|
1
|
+
FROM python:3.11.5
|
2
|
+
|
3
|
+
# This line is used to allow the cache to be busted (only busts in CI)
|
4
|
+
ARG CACHEBUST=1
|
5
|
+
COPY ./requirements.txt /code/requirements.txt
|
6
|
+
|
7
|
+
WORKDIR /code
|
8
|
+
# set API_ENV in .env
|
9
|
+
# API_ENV=local
|
10
|
+
# add to compose file
|
11
|
+
# build:
|
12
|
+
# context: .
|
13
|
+
# dockerfile: src/api/Dockerfile
|
14
|
+
# args:
|
15
|
+
# - API_ENV=${API_ENV}
|
16
|
+
# environment:
|
17
|
+
# - API_ENV=${API_ENV}
|
18
|
+
#
|
19
|
+
# and to the workflow:
|
20
|
+
# env:
|
21
|
+
# API_ENV: ${{ github.ref == 'refs/heads/main' && 'prod' || 'dev' }}
|
22
|
+
ARG API_ENV
|
23
|
+
|
24
|
+
RUN pip install --no-cache-dir -r requirements.txt
|
25
|
+
|
26
|
+
RUN if [ "$API_ENV" != "prod" ]; then \
|
27
|
+
pip install --pre crypticorn; \
|
28
|
+
fi
|
29
|
+
|
30
|
+
|
31
|
+
COPY ./src /code/src
|
32
|
+
|
33
|
+
CMD ["uvicorn", "src.api.main:app", "--host", "0.0.0.0", "--port", "3000"]
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# Please see the documentation for all configuration options:
|
2
|
+
# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
|
3
|
+
|
4
|
+
version: 2
|
5
|
+
updates:
|
6
|
+
- package-ecosystem: "pip"
|
7
|
+
directory: "/" # root folder, or change if your requirements.txt is elsewhere
|
8
|
+
schedule:
|
9
|
+
interval: "weekly" # options: "daily", "weekly", "monthly"
|
10
|
+
open-pull-requests-limit: 3
|
11
|
+
labels:
|
12
|
+
- "dependencies"
|
13
|
+
rebase-strategy: "auto" # will rebase PRs if needed
|
14
|
+
ignore:
|
15
|
+
- dependency-name: "*"
|
16
|
+
update-types: ["version-update:semver-major"] # avoids risky major bumps
|
17
|
+
commit-message:
|
18
|
+
prefix: "deps"
|
19
|
+
target-branch: "dev" # ! merge to main after pr is merged
|
20
|
+
groups:
|
21
|
+
pip-dependencies:
|
22
|
+
patterns:
|
23
|
+
- "*"
|
24
|
+
update-types:
|
25
|
+
- "minor"
|
26
|
+
- "patch"
|
@@ -0,0 +1,12 @@
|
|
1
|
+
# https://docs.astral.sh/ruff/integrations/#github-actions
|
2
|
+
name: Ruff
|
3
|
+
on: [ push, pull_request ]
|
4
|
+
jobs:
|
5
|
+
ruff:
|
6
|
+
runs-on: ubuntu-latest
|
7
|
+
steps:
|
8
|
+
- uses: actions/checkout@v4
|
9
|
+
- uses: astral-sh/ruff-action@v3
|
10
|
+
with:
|
11
|
+
args: check --ignore E402 --output-format=github .
|
12
|
+
src: "./src"
|
@@ -93,7 +93,7 @@ async def general_handler(request: Request, exc: Exception):
|
|
93
93
|
"""This is the default exception handler for all exceptions."""
|
94
94
|
body = ExceptionContent(message=str(exc), error=ApiError.UNKNOWN_ERROR)
|
95
95
|
return JSONResponse(
|
96
|
-
status_code=body.
|
96
|
+
status_code=body.enrich().status_code, content=HTTPException(content=body).detail
|
97
97
|
)
|
98
98
|
|
99
99
|
|
@@ -101,7 +101,7 @@ async def request_validation_handler(request: Request, exc: RequestValidationErr
|
|
101
101
|
"""This is the exception handler for all request validation errors."""
|
102
102
|
body = ExceptionContent(message=str(exc), error=ApiError.INVALID_DATA_REQUEST)
|
103
103
|
return JSONResponse(
|
104
|
-
status_code=body.
|
104
|
+
status_code=body.enrich().status_code, content=HTTPException(content=body).detail
|
105
105
|
)
|
106
106
|
|
107
107
|
|
@@ -109,7 +109,7 @@ async def response_validation_handler(request: Request, exc: ResponseValidationE
|
|
109
109
|
"""This is the exception handler for all response validation errors."""
|
110
110
|
body = ExceptionContent(message=str(exc), error=ApiError.INVALID_DATA_RESPONSE)
|
111
111
|
return JSONResponse(
|
112
|
-
status_code=body.
|
112
|
+
status_code=body.enrich().status_code, content=HTTPException(content=body).detail
|
113
113
|
)
|
114
114
|
|
115
115
|
|
@@ -10,6 +10,7 @@ from crypticorn.klines import (
|
|
10
10
|
)
|
11
11
|
from crypticorn.common import optional_import
|
12
12
|
|
13
|
+
|
13
14
|
class KlinesClient:
|
14
15
|
"""
|
15
16
|
A client for interacting with the Crypticorn Klines API.
|
@@ -30,6 +31,7 @@ class KlinesClient:
|
|
30
31
|
self.udf = UDFApi(self.base_client)
|
31
32
|
self.status = StatusApi(self.base_client)
|
32
33
|
|
34
|
+
|
33
35
|
class FundingRatesApiWrapper(FundingRatesApi):
|
34
36
|
"""
|
35
37
|
A wrapper for the FundingRatesApi class.
|
@@ -51,6 +53,7 @@ class FundingRatesApiWrapper(FundingRatesApi):
|
|
51
53
|
]
|
52
54
|
return pd.DataFrame(response)
|
53
55
|
|
56
|
+
|
54
57
|
class OHLCVDataApiWrapper(OHLCVDataApi):
|
55
58
|
"""
|
56
59
|
A wrapper for the OHLCVDataApi class.
|
@@ -89,5 +92,3 @@ class SymbolsApiWrapper(SymbolsApi):
|
|
89
92
|
pd = optional_import("pandas", "extra")
|
90
93
|
response = await self.get_klines_symbols(*args, **kwargs)
|
91
94
|
return pd.DataFrame(response, columns=["symbol"])
|
92
|
-
|
93
|
-
|
@@ -43,5 +43,5 @@ from crypticorn.pay.client.models.product_create import ProductCreate
|
|
43
43
|
from crypticorn.pay.client.models.product_read import ProductRead
|
44
44
|
from crypticorn.pay.client.models.product_sub_read import ProductSubRead
|
45
45
|
from crypticorn.pay.client.models.product_update import ProductUpdate
|
46
|
+
from crypticorn.pay.client.models.provider import Provider
|
46
47
|
from crypticorn.pay.client.models.scope import Scope
|
47
|
-
from crypticorn.pay.client.models.services import Services
|
@@ -23,5 +23,5 @@ from crypticorn.pay.client.models.product_create import ProductCreate
|
|
23
23
|
from crypticorn.pay.client.models.product_read import ProductRead
|
24
24
|
from crypticorn.pay.client.models.product_sub_read import ProductSubRead
|
25
25
|
from crypticorn.pay.client.models.product_update import ProductUpdate
|
26
|
+
from crypticorn.pay.client.models.provider import Provider
|
26
27
|
from crypticorn.pay.client.models.scope import Scope
|
27
|
-
from crypticorn.pay.client.models.services import Services
|
@@ -20,7 +20,7 @@ import json
|
|
20
20
|
from pydantic import BaseModel, ConfigDict, Field, StrictFloat, StrictInt, StrictStr
|
21
21
|
from typing import Any, ClassVar, Dict, List, Union
|
22
22
|
from crypticorn.pay.client.models.payment_status import PaymentStatus
|
23
|
-
from crypticorn.pay.client.models.
|
23
|
+
from crypticorn.pay.client.models.provider import Provider
|
24
24
|
from typing import Optional, Set
|
25
25
|
from typing_extensions import Self
|
26
26
|
|
@@ -36,7 +36,7 @@ class Payment(BaseModel):
|
|
36
36
|
amount: Union[StrictFloat, StrictInt] = Field(description="Payment amount")
|
37
37
|
currency: StrictStr = Field(description="Payment currency")
|
38
38
|
status: PaymentStatus
|
39
|
-
|
39
|
+
provider: Provider = Field(description="Payment provider")
|
40
40
|
market: StrictStr = Field(description="Payment market")
|
41
41
|
__properties: ClassVar[List[str]] = [
|
42
42
|
"id",
|
@@ -45,7 +45,7 @@ class Payment(BaseModel):
|
|
45
45
|
"amount",
|
46
46
|
"currency",
|
47
47
|
"status",
|
48
|
-
"
|
48
|
+
"provider",
|
49
49
|
"market",
|
50
50
|
]
|
51
51
|
|
@@ -105,7 +105,7 @@ class Payment(BaseModel):
|
|
105
105
|
"amount": obj.get("amount"),
|
106
106
|
"currency": obj.get("currency"),
|
107
107
|
"status": obj.get("status"),
|
108
|
-
"
|
108
|
+
"provider": obj.get("provider"),
|
109
109
|
"market": obj.get("market"),
|
110
110
|
}
|
111
111
|
)
|
@@ -18,9 +18,9 @@ from enum import Enum
|
|
18
18
|
from typing_extensions import Self
|
19
19
|
|
20
20
|
|
21
|
-
class
|
21
|
+
class Provider(str, Enum):
|
22
22
|
"""
|
23
|
-
Available payment
|
23
|
+
Available payment providers
|
24
24
|
"""
|
25
25
|
|
26
26
|
"""
|
@@ -30,5 +30,5 @@ class Services(str, Enum):
|
|
30
30
|
|
31
31
|
@classmethod
|
32
32
|
def from_json(cls, json_str: str) -> Self:
|
33
|
-
"""Create an instance of
|
33
|
+
"""Create an instance of Provider from a JSON string"""
|
34
34
|
return cls(json.loads(json_str))
|
@@ -54,6 +54,7 @@ class Scope(str, Enum):
|
|
54
54
|
READ_COLON_METRICS_COLON_EXCHANGES = "read:metrics:exchanges"
|
55
55
|
READ_COLON_METRICS_COLON_TOKENS = "read:metrics:tokens"
|
56
56
|
READ_COLON_METRICS_COLON_MARKETS = "read:metrics:markets"
|
57
|
+
READ_COLON_SENTIMENT = "read:sentiment"
|
57
58
|
|
58
59
|
@classmethod
|
59
60
|
def from_json(cls, json_str: str) -> Self:
|
@@ -1,8 +1,9 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: crypticorn
|
3
|
-
Version: 2.7.
|
3
|
+
Version: 2.7.4
|
4
4
|
Summary: Maximise Your Crypto Trading Profits with Machine Learning
|
5
5
|
Author-email: Crypticorn <timon@crypticorn.com>
|
6
|
+
License: MIT
|
6
7
|
Project-URL: Homepage, https://crypticorn.com
|
7
8
|
Keywords: machine learning,data science,crypto,modelling
|
8
9
|
Classifier: Topic :: Scientific/Engineering
|
@@ -24,6 +25,8 @@ Requires-Dist: typing-extensions<5.0.0,>=4.7.1
|
|
24
25
|
Requires-Dist: requests<3.0.0,>=2.32.0
|
25
26
|
Requires-Dist: tqdm<5.0.0,>=4.67.0
|
26
27
|
Provides-Extra: dev
|
28
|
+
Requires-Dist: build; extra == "dev"
|
29
|
+
Requires-Dist: twine; extra == "dev"
|
27
30
|
Requires-Dist: streamlit; extra == "dev"
|
28
31
|
Requires-Dist: httpx; extra == "dev"
|
29
32
|
Requires-Dist: black; extra == "dev"
|
@@ -40,17 +43,12 @@ Requires-Dist: PyJWT==2.10.0; extra == "test"
|
|
40
43
|
Provides-Extra: extra
|
41
44
|
Requires-Dist: pandas<3.0.0,>=2.2.0; extra == "extra"
|
42
45
|
|
43
|
-
|
46
|
+
## What is Crypticorn?
|
44
47
|
|
45
|
-
Crypticorn is at the forefront of cutting-edge
|
46
|
-
Crypticorn offers AI-based solutions for both active and passive investors, including:
|
47
|
-
- Prediction Dashboard with trading terminal,
|
48
|
-
- AI Agents with different strategies,
|
49
|
-
- DEX AI Signals for newly launched tokens,
|
50
|
-
- DEX AI Bots
|
48
|
+
Crypticorn is at the forefront of cutting-edge crypto trading with Machine Learning.
|
51
49
|
|
52
|
-
Use this API Client to contribute to the
|
53
|
-
|
50
|
+
Use this API Client to access valuable data sources, contribute to the Hive AI - a community driven AI Meta Model for predicting the
|
51
|
+
crypto market - and programmatically interact with the entire Crypticorn ecosystem.
|
54
52
|
|
55
53
|
## Installation
|
56
54
|
|
@@ -66,17 +64,19 @@ If you want the latest version, which could be a pre release, run:
|
|
66
64
|
pip install --pre crypticorn
|
67
65
|
```
|
68
66
|
|
67
|
+
You can install extra dependencies grouped in the extras `extra` (heavy dependencies that do not come with the default version) `dev` (development) and `test` (testing). The `extra` dependencies include heavy libraries like `pandas`, which is only used in a few custom API operations (suffixed with `_fmt`), which preprocess the response data as a pandas Dataframe for convenience.
|
68
|
+
|
69
69
|
## Structure
|
70
70
|
|
71
71
|
Our API is available as an asynchronous Python SDK. The main entry point you need is the `ApiClient` class, which you would import like this:
|
72
72
|
```python
|
73
73
|
from crypticorn import ApiClient
|
74
74
|
```
|
75
|
-
The ApiClient serves as the central interface for API operations. It instantiates multiple API wrappers corresponding to our
|
75
|
+
The ApiClient serves as the central interface for API operations. It instantiates multiple API wrappers corresponding to our micro services.
|
76
76
|
|
77
|
-
|
77
|
+
Request and response models for API operations should be accessed through the appropriate sub package.
|
78
78
|
|
79
|
-
Note: All symbols are re-exported at the
|
79
|
+
Note: All symbols are re-exported at the sub package level for convenience.
|
80
80
|
|
81
81
|
```python
|
82
82
|
from crypticorn.trade import BotStatus
|
@@ -87,6 +87,10 @@ The `common` submodule contains shared classes not bound to a specific API.
|
|
87
87
|
from crypticorn.common import Scope, Exchange
|
88
88
|
```
|
89
89
|
|
90
|
+
## Authentication
|
91
|
+
|
92
|
+
To get started, [create an API key in your dashboard](https://app.crypticorn.com/account/developer). Then instantiate the `ApiClient` class with your copied key.
|
93
|
+
|
90
94
|
## Basic Usage
|
91
95
|
|
92
96
|
### With Async Context Protocol
|
@@ -131,16 +135,16 @@ print(res)
|
|
131
135
|
```
|
132
136
|
The output would look like this:
|
133
137
|
```python
|
134
|
-
status_code=200 headers={'Date': 'Wed, 09 Apr 2025 19:15:19 GMT', 'Content-Type': 'application/json'
|
138
|
+
status_code=200 headers={'Date': 'Wed, 09 Apr 2025 19:15:19 GMT', 'Content-Type': 'application/json'} data=[ProductModel(id='67e8146e7bae32f3838fe36a', name='Awesome Product', price=5.0, scopes=None, duration=30, description='You need to buy this', is_active=True)] raw_data=b'[{"id":"67e8146e7bae32f3838fe36a","name":"Awesome Product","price":5.0,"duration":30,"description":"You need to buy this","is_active":true}]'
|
135
139
|
```
|
136
|
-
You can then access the data of the response (as serialized output) with:
|
140
|
+
You can then access the data of the response (as serialized output (1) or as JSON string in bytes (2)) with:
|
137
141
|
```python
|
138
142
|
print(res.data)
|
143
|
+
print(res.raw_data)
|
139
144
|
```
|
140
145
|
On top of that you get some information about the request:
|
141
146
|
```python
|
142
147
|
print(res.status_code)
|
143
|
-
print(res.raw_data)
|
144
148
|
print(res.headers)
|
145
149
|
```
|
146
150
|
|
@@ -163,6 +167,7 @@ This might be of use if you are testing a specific API locally.
|
|
163
167
|
To override e.g. the host for the Hive client to connect to http://localhost:8000 instead of the default proxy, you would do:
|
164
168
|
```python
|
165
169
|
from crypticorn.hive import Configuration as Hiveconfig
|
170
|
+
from crypticorn.common import Service
|
166
171
|
async with ApiClient(base_url=BaseUrl.DEV) as client:
|
167
|
-
client.configure(config=HiveConfig(host="http://localhost:8000"), client=
|
172
|
+
client.configure(config=HiveConfig(host="http://localhost:8000"), client=Service.HIVE)
|
168
173
|
```
|
@@ -1,3 +1,4 @@
|
|
1
|
+
MANIFEST.in
|
1
2
|
README.md
|
2
3
|
pyproject.toml
|
3
4
|
crypticorn/__init__.py
|
@@ -66,8 +67,11 @@ crypticorn/auth/client/models/whoami200_response.py
|
|
66
67
|
crypticorn/cli/__init__.py
|
67
68
|
crypticorn/cli/__main__.py
|
68
69
|
crypticorn/cli/init.py
|
70
|
+
crypticorn/cli/templates/Dockerfile
|
69
71
|
crypticorn/cli/templates/__init__.py
|
70
72
|
crypticorn/cli/templates/auth.py
|
73
|
+
crypticorn/cli/templates/dependabot.yml
|
74
|
+
crypticorn/cli/templates/ruff.yml
|
71
75
|
crypticorn/common/__init__.py
|
72
76
|
crypticorn/common/auth.py
|
73
77
|
crypticorn/common/decorators.py
|
@@ -188,8 +192,8 @@ crypticorn/pay/client/models/product_create.py
|
|
188
192
|
crypticorn/pay/client/models/product_read.py
|
189
193
|
crypticorn/pay/client/models/product_sub_read.py
|
190
194
|
crypticorn/pay/client/models/product_update.py
|
195
|
+
crypticorn/pay/client/models/provider.py
|
191
196
|
crypticorn/pay/client/models/scope.py
|
192
|
-
crypticorn/pay/client/models/services.py
|
193
197
|
crypticorn/trade/__init__.py
|
194
198
|
crypticorn/trade/main.py
|
195
199
|
crypticorn/trade/client/__init__.py
|
@@ -2,9 +2,10 @@
|
|
2
2
|
name = "crypticorn"
|
3
3
|
description = "Maximise Your Crypto Trading Profits with Machine Learning"
|
4
4
|
readme = "README.md"
|
5
|
+
license = {text = "MIT"}
|
5
6
|
requires-python = ">=3.10"
|
6
7
|
authors = [{name = "Crypticorn", email = "timon@crypticorn.com"}]
|
7
|
-
version = "2.7.
|
8
|
+
version = "2.7.4"
|
8
9
|
keywords = ["machine learning", "data science", "crypto", "modelling"]
|
9
10
|
dynamic = ["dependencies", "optional-dependencies"]
|
10
11
|
|
@@ -2,7 +2,7 @@ import pytest
|
|
2
2
|
import pytest_asyncio
|
3
3
|
from crypticorn import ApiClient
|
4
4
|
from crypticorn.common import BaseUrl, apikey_header, Service
|
5
|
-
from tests.envs import
|
5
|
+
from tests.envs import FULL_SCOPE_API_KEY
|
6
6
|
from crypticorn.hive import Configuration as HiveConfig
|
7
7
|
|
8
8
|
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/auth/client/models/add_wallet200_response.py
RENAMED
File without changes
|
File without changes
|
{crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/auth/client/models/authorize_user200_response.py
RENAMED
File without changes
|
File without changes
|
{crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/auth/client/models/authorize_user_request.py
RENAMED
File without changes
|
{crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/auth/client/models/create_api_key200_response.py
RENAMED
File without changes
|
{crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/auth/client/models/create_api_key_request.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{crypticorn-2.7.2 → crypticorn-2.7.4}/crypticorn/auth/client/models/list_wallets200_response.py
RENAMED
File without changes
|
File without changes
|