vgtc-api / src /hermes /core /dependencies.py
vora-sonnet's picture
Upload folder using huggingface_hub
0d3f7cc verified
Raw
History Blame Contribute Delete
1.7 kB
"""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