Open
Description
Приветствую, хотел поинтересоваться почему в библиотеке нет рекурсивного связывания на подобие такого, это позволяет делать инъекции не от корня, а от ближайшего родителя:
Например:
Так:
@router.get("/test")
@Inject
async def get_list(s3_manager = Depends(Provide[S3Container.manager])):
pass
Вместо:
@router.get("/test")
@Inject
async def get_list(s3_client = Depends(Provide[AppContainer.infra.s3.manager])):
pass
Рекурсивное связывание:
def recursive_wire(container, *args, **kwargs):
container.wire(*args, **kwargs)
for attr_name in dir(container):
if attr_name.startswith('_') or attr_name == 'parent':
continue
attr = getattr(container, attr_name, None)
if isinstance(attr, providers.Container):
sub_container = attr()
recursive_wire(sub_container, *args, **kwargs)
Metadata
Metadata
Assignees
Labels
No labels