from __future__ import annotations from yuxi.channel.domain.middleware.middleware import Middleware from yuxi.channel.domain.port.metrics_port import MetricsPort from yuxi.channel.domain.service.pipeline import Pipeline class PipelineBuilder: def __init__(self) -> None: self._middlewares: list[Middleware] = [] self._metrics: MetricsPort | None = None def add(self, middleware: Middleware) -> PipelineBuilder: self._middlewares.append(middleware) return self def metrics(self, metrics: MetricsPort) -> PipelineBuilder: self._metrics = metrics return self def build(self) -> Pipeline: return Pipeline(self._middlewares, metrics=self._metrics)