"""Core dependencies for dependency injection.""" from __future__ import annotations from typing import Any from hermes.config.settings import get_settings class Container: """Simple dependency injection container.""" def __init__(self) -> None: self._services: dict[str, Any] = {} self._singletons: dict[str, Any] = {} def register(self, name: str, service: Any, singleton: bool = False) -> None: """Register a service.""" if singleton: self._singletons[name] = service else: self._services[name] = service def resolve(self, name: str) -> Any: """Resolve a service by name.""" if name in self._singletons: return self._singletons[name] if name in self._services: return self._services[name] raise KeyError(f"Service '{name}' not registered") def has(self, name: str) -> bool: """Check if a service is registered.""" return name in self._services or name in self._singletons def clear(self) -> None: """Clear all registered services.""" self._services.clear() self._singletons.clear() _container: Container | None = None def get_container() -> Container: """Get the global container.""" global _container if _container is None: _container = Container() _container.register("settings", get_settings(), singleton=True) return _container def reset_container() -> None: """Reset the global container.""" global _container if _container is not None: _container.clear() _container = None