| """Configuration management for HuggingFace Crypto Data Engine""" |
| from __future__ import annotations |
| import os |
| from typing import Optional |
| from pydantic_settings import BaseSettings |
|
|
|
|
| class Settings(BaseSettings): |
| """Application settings""" |
|
|
| |
| HOST: str = "0.0.0.0" |
| PORT: int = 8000 |
| ENV: str = "production" |
| VERSION: str = "1.0.0" |
|
|
| |
| CACHE_TYPE: str = "memory" |
| CACHE_TTL_PRICES: int = 30 |
| CACHE_TTL_OHLCV: int = 300 |
| CACHE_TTL_SENTIMENT: int = 600 |
| CACHE_TTL_MARKET: int = 300 |
| REDIS_URL: Optional[str] = None |
|
|
| |
| RATE_LIMIT_ENABLED: bool = True |
| RATE_LIMIT_PRICES: int = 120 |
| RATE_LIMIT_OHLCV: int = 60 |
| RATE_LIMIT_SENTIMENT: int = 30 |
| RATE_LIMIT_HEALTH: int = 0 |
|
|
| |
| BINANCE_API_KEY: Optional[str] = None |
| BINANCE_API_SECRET: Optional[str] = None |
| COINGECKO_API_KEY: Optional[str] = None |
| CRYPTOCOMPARE_API_KEY: Optional[str] = None |
| CRYPTOPANIC_API_KEY: Optional[str] = None |
| NEWSAPI_KEY: Optional[str] = None |
|
|
| |
| ENABLE_SENTIMENT: bool = True |
| ENABLE_NEWS: bool = False |
|
|
| |
| CIRCUIT_BREAKER_THRESHOLD: int = 5 |
| CIRCUIT_BREAKER_TIMEOUT: int = 60 |
|
|
| |
| REQUEST_TIMEOUT: int = 10 |
|
|
| |
| SUPPORTED_SYMBOLS: str = "BTC,ETH,SOL,XRP,BNB,ADA,DOT,LINK,LTC,BCH,MATIC,AVAX,XLM,TRX" |
|
|
| |
| SUPPORTED_INTERVALS: str = "1m,5m,15m,1h,4h,1d,1w" |
|
|
| class Config: |
| env_file = ".env" |
| case_sensitive = True |
|
|
|
|
| |
| settings = Settings() |
|
|
|
|
| def get_supported_symbols() -> list[str]: |
| """Get list of supported symbols""" |
| return [s.strip() for s in settings.SUPPORTED_SYMBOLS.split(",")] |
|
|
|
|
| def get_supported_intervals() -> list[str]: |
| """Get list of supported intervals""" |
| return [i.strip() for i in settings.SUPPORTED_INTERVALS.split(",")] |
|
|