python-dependency-injector
python-dependency-injector copied to clipboard
recursive_wire
Приветствую, хотел поинтересоваться почему в библиотеке нет рекурсивного связывания на подобие такого, это позволяет делать инъекции не от корня, а от ближайшего родителя:
Например: Так: @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)