DI Provider ctx #186

This commit is contained in:
2025-09-24 20:46:43 +02:00
parent cf8edafd39
commit cdb4a0fb34
12 changed files with 87 additions and 58 deletions

View File

@@ -7,6 +7,7 @@ from cpl.application.abc.startup_abc import StartupABC
from cpl.application.abc.startup_extension_abc import StartupExtensionABC
from cpl.application.host import Host
from cpl.core.errors import dependency_error
from cpl.dependency.context import get_current_provider, use_root_provider
from cpl.dependency.service_collection import ServiceCollection
TApp = TypeVar("TApp", bound=ApplicationABC)
@@ -21,6 +22,7 @@ class ApplicationBuilder(Generic[TApp]):
self._app = app if app is not None else ApplicationABC
self._services = ServiceCollection()
use_root_provider(self._services.build())
self._startup: Optional[StartupABC] = None
self._app_extensions: list[Type[ApplicationExtensionABC]] = []
@@ -34,7 +36,12 @@ class ApplicationBuilder(Generic[TApp]):
@property
def service_provider(self):
return self._services.build()
provider = get_current_provider()
if provider is None:
provider = self._services.build()
use_root_provider(provider)
return provider
def validate_app_required_modules(self, app: ApplicationABC):
for module in app.required_modules: