Как выбрать хэндлер в DI исходя из конфига YML в Python?

Для выбора хэндлера внедрения зависимостей (DI) на основе конфигурационного файла YAML в Python, вам нужно выполнить несколько шагов.

1. Создайте конфигурационный файл YAML, в котором определены соответствия между именами хэндлеров и их реализациями. Например, файл config.yml может выглядеть следующим образом:

handlers:
  handler1: package.module.Handler1
  handler2: package.module.Handler2

2. Загрузите данные из YAML файла в Python, используя библиотеку PyYAML:

import yaml

with open('config.yml', 'r') as stream:
    config = yaml.safe_load(stream)

3. Создайте функцию или класс для управления DI, которая будет загружать нужный класс хэндлера на основе конфигурации:

class DIManager:
    def __init__(self, config):
        self.config = config

    def get_handler(self, handler_name):
        handler_classname = self.config['handlers'][handler_name]
        handler_class = self.load_handler(handler_classname)
        return handler_class()

    def load_handler(self, handler_classname):
        module_name, class_name = handler_classname.rsplit('.', 1)
        module = __import__(module_name, fromlist=[class_name])
        handler_class = getattr(module, class_name)
        return handler_class

4. Теперь вы можете использовать класс DIManager для получения экземпляра нужного хэндлера по его имени из конфигурации:

di_manager = DIManager(config)
handler = di_manager.get_handler('handler1')

Таким образом, вы прочитаете конфигурацию из файла YAML, определите класс DIManager для управления DI на основе конфигурации и сможете получить экземпляры хэндлеров по их именам.