File size: 1,126 Bytes
f0e2e50
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
"""
Configuration management for the Manim Video Generator
"""

from typing import List, Any


class ConfigManager:
    """Manage application configuration and settings"""
    
    DEFAULT_CONFIG = {
        "max_render_time": 300,  # 5 minutes
        "temp_dir_cleanup": True,
        "log_level": "INFO",
        "default_quality": "medium_quality",
        "default_model": "llama-3.3-70b-versatile",
        "max_prompt_length": 1000,
        "enable_caching": True,
        "ffmpeg_timeout": 180  # 3 minutes
    }
    
    @classmethod
    def get_config(cls, key: str, default=None) -> Any:
        """Get configuration value"""
        return cls.DEFAULT_CONFIG.get(key, default)
    
    @classmethod
    def validate_config(cls) -> List[str]:
        """Validate current configuration"""
        issues = []
        
        if cls.get_config("max_render_time") < 60:
            issues.append("Max render time should be at least 60 seconds")
        
        if cls.get_config("max_prompt_length") < 10:
            issues.append("Max prompt length should be at least 10 characters")
        
        return issues