Files
hydrogen/reporting/transport_registry.py
2026-07-11 23:54:36 +07:00

27 lines
986 B
Python

from collections.abc import Iterable
from core.base import BaseTransport
class TransportRegistry:
def __init__(self, transports: Iterable[BaseTransport] | None = None) -> None:
self._transports: dict[str, BaseTransport] = {}
for transport in transports or ():
self.register(transport)
def register(self, transport: BaseTransport) -> None:
if transport.transport_type in self._transports:
registered = self._transports[transport.transport_type]
raise ValueError(
"Transport "
f"'{transport.transport_type}' is already registered by {type(registered).__name__}"
)
self._transports[transport.transport_type] = transport
def get(self, transport_type: str) -> BaseTransport:
try:
return self._transports[transport_type]
except KeyError as exc:
raise ValueError(f"Transport '{transport_type}' is not registered") from exc