Source code for injectable.errors.injection_error

from __future__ import annotations
from typing import Set

import injectable


[docs] class InjectionError(RuntimeError): """ Error indicating dependency injection failed. """ def __init__( self, registry_type: str, dependency_name: str, matches: Set[injectable.Injectable] = None, ): message = f"No injectable matches {registry_type} '{dependency_name}'." if matches: primary_matches = [inj for inj in matches if inj.primary] if len(primary_matches) == 0: message = ( f"No primary injectable registered for {registry_type}:" f" '{dependency_name}'. Unable to resolve unambiguously:" f" {len(primary_matches)} possible matches." ) if len(primary_matches) > 1: message = ( f"Found {len(primary_matches)} injectables registered as primary" f" for {registry_type}: '{dependency_name}'. Unable to resolve" f" unambiguously." ) self.registry_type = registry_type self.dependency_name = dependency_name self.matches = matches super().__init__(message)