Codette3.0 / src /components /config_manager.py
Raiff1982's picture
Upload 117 files
6d6b8af verified
"""
Enhanced AI Configuration Manager
"""
import json
import os
from pathlib import Path
from typing import Any, Dict, Optional, Union
import logging
logger = logging.getLogger(__name__)
class EnhancedAIConfig:
"""Configuration manager for AI systems with enhanced functionality"""
def __init__(self, config_path: Union[str, Path]):
self.config_path = Path(config_path)
self.defaults = {
"host": "127.0.0.1",
"port": 8000,
"model_name": "gpt2-large",
"quantum_fluctuation": 0.07,
"spiderweb_dim": 5,
"recursion_depth": 4,
"perspectives": ["Newton", "DaVinci", "Ethical", "Quantum", "Memory"]
}
self.config = self._load_config()
def _load_config(self) -> Dict[str, Any]:
"""Load configuration from file with fallback to defaults"""
try:
if self.config_path.exists():
with open(self.config_path, 'r') as f:
config = json.load(f)
logger.info(f"Configuration loaded from {self.config_path}")
return config
else:
logger.warning(f"Config file {self.config_path} not found, using defaults")
try:
self._save_config(self.defaults) # Create default config
except Exception as e:
logger.debug(f"Could not write default config: {e}")
return self.defaults.copy()
except Exception as e:
logger.error(f"Error loading config: {e}")
return self.defaults.copy()
def _save_config(self, config: Dict[str, Any]):
"""Save configuration to file"""
try:
with open(self.config_path, 'w') as f:
json.dump(config, f, indent=2)
logger.info(f"Configuration saved to {self.config_path}")
except Exception as e:
logger.error(f"Error saving config: {e}")
def get(self, key: str, default: Any = None) -> Any:
"""
Get configuration value with fallback to default
Args:
key: Configuration key to retrieve
default: Default value if key not found
Returns:
Configuration value
"""
return self.config.get(key, self.defaults.get(key, default))
def set(self, key: str, value: Any):
"""
Set configuration value
Args:
key: Configuration key to set
value: Value to set
"""
self.config[key] = value
self._save_config(self.config)
def update(self, updates: Dict[str, Any]):
"""
Update multiple configuration values
Args:
updates: Dictionary of updates to apply
"""
self.config.update(updates)
self._save_config(self.config)
def reset(self):
"""Reset configuration to defaults"""
self.config = self.defaults.copy()
self._save_config(self.config)
def get_all(self) -> Dict[str, Any]:
"""Get complete configuration"""
return self.config.copy()