{%- set providers = [] -%} {%- if database != 'none' %}{% set _ = providers.append('DbProvider()') %}{% endif -%} {%- if dynamic_config %}{% set _ = providers.append('ConfigProvider()') %}{% endif -%} {%- if database == 'postgres' %}{% set _ = providers.append('RepositoryProvider()') %}{% endif -%} {%- if use_redis %}{% set _ = providers.append('RedisProvider()') %}{% endif -%} {%- if use_llm %}{% set _ = providers.append('LlmProvider()') %}{% endif -%} {%- if 'aiogram_bot' in backend_services %}{% set _ = providers.append('AiogramProvider()') %}{% endif -%} {%- if 'api' in backend_services %}{% set _ = providers.append('FastapiProvider()') %}{% endif -%} {%- set third = ['from dishka import make_async_container'] -%} {%- if 'aiogram_bot' in backend_services %}{% set _ = third.append('from dishka.integrations.aiogram import AiogramProvider') %}{% endif -%} {%- if 'api' in backend_services %}{% set _ = third.append('from dishka.integrations.fastapi import FastapiProvider') %}{% endif -%} {%- set first = [] -%} {%- if dynamic_config %}{% set _ = first.append('from dependencies.providers.config import ConfigProvider') %}{% endif -%} {%- if database != 'none' %}{% set _ = first.append('from dependencies.providers.db import DbProvider') %}{% endif -%} {%- if use_llm %}{% set _ = first.append('from dependencies.providers.llm import LlmProvider') %}{% endif -%} {%- if use_redis %}{% set _ = first.append('from dependencies.providers.redis import RedisProvider') %}{% endif -%} {%- if database == 'postgres' %}{% set _ = first.append('from dependencies.providers.repositories import RepositoryProvider') %}{% endif -%} {%- set imports = (third | join('\n')) ~ (('\n\n' ~ (first | join('\n'))) if first else '') -%} {%- set args = providers | join(', ') -%} {%- set oneline = 'container = make_async_container(' ~ args ~ ')' -%} {%- set hugged = 'container = make_async_container(\n ' ~ args ~ '\n)' -%} {%- set indented = [] -%} {%- for p in providers %}{% set _ = indented.append(' ' ~ p ~ ',') %}{% endfor -%} {%- set exploded = 'container = make_async_container(\n' ~ (indented | join('\n')) ~ '\n)' -%} {#- ruff-format order: one line, else all args on one continuation line, else one per line -#} {%- set body = oneline if (oneline | length) <= 88 else (hugged if (args | length) + 4 <= 88 else exploded) -%} {{ imports }} {{ body }}