Your Name
feat: UI improvements and error suppression - Enhanced dashboard and market pages with improved header buttons, logo, and currency symbol display - Stopped animated ticker - Removed pie chart legends - Added error suppressor for external service errors (SSE, Permissions-Policy warnings) - Improved header button prominence and icon appearance - Enhanced logo with glow effects and better design - Fixed currency symbol visibility in market tables
8b7b267
raw
history blame
5.33 kB
#!/usr/bin/env python3
"""Configuration module for Hugging Face models."""
import os
from typing import Optional, Dict, Any
HUGGINGFACE_MODELS: Dict[str, str] = {
"sentiment_twitter": "cardiffnlp/twitter-roberta-base-sentiment-latest",
"sentiment_financial": "ProsusAI/finbert",
"summarization": "facebook/bart-large-cnn",
"crypto_sentiment": "ElKulako/cryptobert",
}
# Self-Healing Configuration
SELF_HEALING_CONFIG = {
"error_threshold": int(os.getenv("HEALTH_ERROR_THRESHOLD", "3")), # Failures before degraded
"cooldown_seconds": int(os.getenv("HEALTH_COOLDOWN_SECONDS", "300")), # 5 minutes default
"success_recovery_count": int(os.getenv("HEALTH_RECOVERY_COUNT", "2")), # Successes to recover
"enable_auto_reinit": os.getenv("HEALTH_AUTO_REINIT", "true").lower() == "true",
"reinit_cooldown_seconds": int(os.getenv("HEALTH_REINIT_COOLDOWN", "600")), # 10 minutes
}
# ==================== REAL API CREDENTIALS (PRIMARY + FALLBACK) ====================
# These are REAL API keys - use them in provider configurations
# Primary HuggingFace Space Configuration (Priority 1)
# IMPORTANT: Set HF_API_TOKEN environment variable with your token
HF_SPACE_PRIMARY = {
"api_token": os.getenv("HF_API_TOKEN", "").strip() or None, # Strip whitespace and newlines
"base_url": os.getenv("HF_SPACE_BASE_URL", "https://really-amin-datasourceforcryptocurrency.hf.space").strip(),
"ws_url": os.getenv("HF_SPACE_WS_URL", "wss://really-amin-datasourceforcryptocurrency.hf.space/ws").strip(),
"priority": 1,
"timeout": 8.0,
"retry_attempts": 2,
"enabled": True
}
# External Providers Configuration (Fallback System - Priority 2-3)
EXTERNAL_PROVIDERS = {
"tronscan": {
"enabled": True,
"api_key": os.getenv("TRONSCAN_API_KEY"), # Set in environment
"base_url": "https://apilist.tronscan.org/api",
"timeout": 10.0,
"priority": 3,
"category": "blockchain_explorer",
"rate_limit": {
"requests_per_second": 5,
"requests_per_day": 5000
}
},
"bscscan": {
"enabled": True,
"api_key": os.getenv("BSCSCAN_API_KEY"), # Set in environment
"base_url": "https://api.bscscan.com/api",
"timeout": 10.0,
"priority": 3,
"category": "blockchain_explorer",
"rate_limit": {
"requests_per_second": 5,
"requests_per_day": 10000
}
},
"etherscan": {
"enabled": True,
"api_key": os.getenv("ETHERSCAN_API_KEY"), # Set in environment
"base_url": "https://api.etherscan.io/api",
"timeout": 10.0,
"priority": 3,
"category": "blockchain_explorer",
"rate_limit": {
"requests_per_second": 5,
"requests_per_day": 100000
}
},
"coinmarketcap": {
"enabled": True,
"api_key": os.getenv("COINMARKETCAP_API_KEY"), # Set in environment
"base_url": "https://pro-api.coinmarketcap.com/v1",
"timeout": 15.0,
"priority": 2,
"category": "market_data",
"rate_limit": {
"requests_per_minute": 30,
"requests_per_day": 10000
}
},
"newsapi": {
"enabled": True,
"api_key": os.getenv("NEWSAPI_KEY"), # Set in environment
"base_url": "https://newsapi.org/v2",
"timeout": 10.0,
"priority": 2,
"category": "news",
"rate_limit": {
"requests_per_hour": 100,
"requests_per_day": 1000
}
}
}
# Model Configuration
MODEL_CONFIG = {
"confidence_threshold": float(os.getenv("MODEL_CONFIDENCE_THRESHOLD", "0.70")),
"gap_fill_enabled": os.getenv("GAP_FILL_ENABLED", "true").lower() == "true",
"cache_ttl_seconds": int(os.getenv("CACHE_TTL_SECONDS", "30")),
"batch_prediction_max": int(os.getenv("BATCH_PREDICTION_MAX", "100")),
}
# Gap Filling Configuration
GAP_FILLING_CONFIG = {
"enabled": os.getenv("GAP_FILL_ENABLED", "true").lower() == "true",
"max_gap_size": int(os.getenv("MAX_GAP_SIZE", "100")), # Maximum number of missing data points to fill
"interpolation_method": os.getenv("INTERPOLATION_METHOD", "linear"), # linear, cubic, polynomial
"confidence_decay_factor": float(os.getenv("CONFIDENCE_DECAY_FACTOR", "0.95")), # Confidence decreases with gap size
"use_ai_synthesis": os.getenv("USE_AI_SYNTHESIS", "true").lower() == "true",
"fallback_to_external": os.getenv("FALLBACK_TO_EXTERNAL", "true").lower() == "true",
}
class Settings:
"""Application settings."""
def __init__(self):
self.hf_token: Optional[str] = os.getenv("HF_TOKEN") or os.getenv("HUGGINGFACE_TOKEN")
# Self-healing settings
self.health_error_threshold: int = SELF_HEALING_CONFIG["error_threshold"]
self.health_cooldown_seconds: int = SELF_HEALING_CONFIG["cooldown_seconds"]
self.health_success_recovery_count: int = SELF_HEALING_CONFIG["success_recovery_count"]
self.health_enable_auto_reinit: bool = SELF_HEALING_CONFIG["enable_auto_reinit"]
self.health_reinit_cooldown_seconds: int = SELF_HEALING_CONFIG["reinit_cooldown_seconds"]
_settings = Settings()
def get_settings() -> Settings:
"""Get application settings instance."""
return _settings