from __future__ import annotations import abc import typing from ..core import app, entities as core_entities from . import entities preregistered_stages: dict[str, PipelineStage] = {} def stage_class(name: str): def decorator(cls): preregistered_stages[name] = cls return cls return decorator class PipelineStage(metaclass=abc.ABCMeta): """流水线阶段""" ap: app.Application def __init__(self, ap: app.Application): self.ap = ap async def initialize(self, pipeline_config: dict): """初始化""" pass @abc.abstractmethod async def process( self, query: core_entities.Query, stage_inst_name: str, ) -> typing.Union[ entities.StageProcessResult, typing.AsyncGenerator[entities.StageProcessResult, None], ]: """处理""" raise NotImplementedError