"""Configurações específicas para Hugging Face Spaces. Este arquivo contém configurações otimizadas para execução no Hugging Face Spaces, resolvendo problemas comuns de compatibilidade com Gradio 5.x. """ import os from typing import Dict, Any class HuggingFaceSpacesConfig: """Configurações específicas para Hugging Face Spaces.""" @staticmethod def get_launch_config() -> Dict[str, Any]: """Retorna configurações otimizadas para launch() no HF Spaces. Returns: Dict com configurações para o método launch() do Gradio. """ config = { # Resolver erro 500 causado pelo SSR no Gradio 5.x 'ssr_mode': False, # Configurações de servidor otimizadas para HF Spaces 'server_name': '0.0.0.0', # Permitir acesso externo 'server_port': int(os.getenv('PORT', 7860)), # Usar porta do ambiente # Configurações de performance 'max_threads': 10, 'show_error': True, 'show_api': False, # Configurações de segurança 'auth': None, # Evitar problemas de autenticação no HF Spaces 'share': False, # Não necessário no HF Spaces # Configurações de interface 'favicon_path': None, 'app_kwargs': { 'docs_url': None, # Desabilitar docs automáticos 'redoc_url': None # Desabilitar redoc } } return config @staticmethod def get_blocks_config() -> Dict[str, Any]: """Retorna configurações otimizadas para gr.Blocks no HF Spaces. Returns: Dict com configurações para gr.Blocks. """ return { 'title': 'Sistema de Análise Financeira com IA', 'theme': 'default', # Usar tema padrão para melhor compatibilidade 'analytics_enabled': False, # Desabilitar analytics no HF Spaces 'css': None # CSS customizado pode ser adicionado aqui se necessário } @staticmethod def is_huggingface_space() -> bool: """Detecta se está executando no Hugging Face Spaces. Returns: True se estiver executando no HF Spaces. """ return os.getenv('SPACE_ID') is not None @staticmethod def get_environment_info() -> Dict[str, str]: """Retorna informações do ambiente HF Spaces. Returns: Dict com informações do ambiente. """ return { 'space_id': os.getenv('SPACE_ID', 'local'), 'space_author': os.getenv('SPACE_AUTHOR_NAME', 'unknown'), 'space_repo': os.getenv('SPACE_REPO_NAME', 'unknown'), 'gradio_version': '5.44.0', 'python_version': os.getenv('PYTHON_VERSION', 'unknown') } @staticmethod def apply_hf_spaces_fixes(): """Aplica correções específicas para HF Spaces.""" # Configurar variáveis de ambiente para melhor compatibilidade os.environ.setdefault('GRADIO_SSR_MODE', 'false') os.environ.setdefault('GRADIO_ANALYTICS_ENABLED', 'false') os.environ.setdefault('GRADIO_SHARE', 'false') # Configurações de logging para HF Spaces os.environ.setdefault('GRADIO_DEBUG', '0') print("✅ Configurações do HF Spaces aplicadas com sucesso") if HuggingFaceSpacesConfig.is_huggingface_space(): env_info = HuggingFaceSpacesConfig.get_environment_info() print(f"🚀 Executando no HF Space: {env_info['space_author']}/{env_info['space_repo']}") else: print("🏠 Executando localmente com configurações compatíveis com HF Spaces") # Aplicar configurações automaticamente quando o módulo for importado if __name__ != '__main__': HuggingFaceSpacesConfig.apply_hf_spaces_fixes()