Проблемы с внедрением реализаций в абстрактные классы с помощью python-inject 5.1.0
Я пытаюсь использовать Python-inject 5.1.0, но не могу внедрить класс, реализованный в абстрактный класс.
class JobGateway(ABC):
@abstractmethod
def get_by_id(self, id: str):
pass
class JobGatewayImpl(JobGateway):
@inject.autoparams()
def __init__(self, db: Database):
self.collection = db["jobs"]
def get_by_id(self, id: str):
data = self.collection.find_one({"_id": ObjectId(id)})
if data is None:
return None
return data
class MessageProcessor:
@inject.autoparams()
def __init__(
self,
job_gateway: JobGateway
) -> None:
self.job_gateway = job_gateway
def run(self, id):
job = self.job_gateway.get_by_id(id)
Моя дополнительная конфигурация:
binder.bind_to_constructor(JobGateway, lambda: inject.instance(JobGatewayImpl))
Когда я получаю экземпляр MessageProcessor, job_gateway не получает реализацию JobGatewayImpl.
Но когда я пытаюсь получить экземпляр напрямую, JobGatewayImpl получается успешно.
j2: JobGateway = inject.instance(JobGateway)
Почему реализация JobGatewayImpl не внедряется в процессор?
Мне бы хотелось, чтобы при запуске линии
processor: MessageProcessor = inject.instance(MessageProcessor)
зависимость JobGateway получает экземпляр JobGatewayImpl