Skip to content

Commit 23fbb71

Browse files
amoncusirZipFile
authored andcommitted
feat: Add resource_type argument on init_resources and shutdown_resources methods to provide a more granular way to initialize the desired resources and add the possibility to scope that ones.
1 parent b411807 commit 23fbb71

File tree

2 files changed

+7
-7
lines changed

2 files changed

+7
-7
lines changed

src/dependency_injector/containers.pyi

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ try:
2222
except ImportError:
2323
from typing_extensions import Self as _Self
2424

25-
from .providers import Provider, ProviderParent, Self
25+
from .providers import Provider, Resource, Self, ProviderParent
2626

2727
C_Base = TypeVar("C_Base", bound="Container")
2828
C = TypeVar("C", bound="DeclarativeContainer")
@@ -74,8 +74,8 @@ class Container:
7474
from_package: Optional[str] = None,
7575
) -> None: ...
7676
def unwire(self) -> None: ...
77-
def init_resources(self) -> Optional[Awaitable[None]]: ...
78-
def shutdown_resources(self) -> Optional[Awaitable[None]]: ...
77+
def init_resources(self, resource_type: Type[Resource]=None) -> Optional[Awaitable]: ...
78+
def shutdown_resources(self, resource_type: Type[Resource]=None) -> Optional[Awaitable]: ...
7979
def load_config(self) -> None: ...
8080
def apply_container_providers_overridings(self) -> None: ...
8181
def reset_singletons(self) -> SingletonResetContext[C_Base]: ...

src/dependency_injector/containers.pyx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -315,11 +315,11 @@ class DynamicContainer(Container):
315315
self.wired_to_modules.clear()
316316
self.wired_to_packages.clear()
317317

318-
def init_resources(self):
318+
def init_resources(self, resource_type=providers.Resource):
319319
"""Initialize all container resources."""
320320
futures = []
321321

322-
for provider in self.traverse(types=[providers.Resource]):
322+
for provider in self.traverse(types=[resource_type]):
323323
resource = provider.init()
324324

325325
if __is_future_or_coroutine(resource):
@@ -328,7 +328,7 @@ class DynamicContainer(Container):
328328
if futures:
329329
return asyncio.gather(*futures)
330330

331-
def shutdown_resources(self):
331+
def shutdown_resources(self, resource_type=providers.Resource):
332332
"""Shutdown all container resources."""
333333
def _independent_resources(resources):
334334
for resource in resources:
@@ -360,7 +360,7 @@ class DynamicContainer(Container):
360360
for resource in resources_to_shutdown:
361361
resource.shutdown()
362362

363-
resources = list(self.traverse(types=[providers.Resource]))
363+
resources = list(self.traverse(types=[resource_type]))
364364
if any(resource.is_async_mode_enabled() for resource in resources):
365365
return _async_ordered_shutdown(resources)
366366
else:

0 commit comments

Comments
 (0)