Coverage for merco/context/pipeline.py: 100%

16 statements  

« prev     ^ index     » next       coverage.py v7.15.0, created at 2026-07-07 14:04 +0800

1"""ContextProcessor ABC + ContextPipeline""" 

2from __future__ import annotations 

3 

4from abc import ABC, abstractmethod 

5 

6 

7class ContextProcessor(ABC): 

8 """上下文处理器基类""" 

9 name: str = "" 

10 

11 @abstractmethod 

12 async def process(self, messages: list[dict], **kwargs) -> list[dict]: 

13 """处理消息列表,返回处理后的消息列表""" 

14 ... 

15 

16 

17class ContextPipeline: 

18 """上下文处理管线 — 按注册顺序执行处理器""" 

19 

20 def __init__(self): 

21 self._processors: list[ContextProcessor] = [] 

22 

23 def use(self, processor: ContextProcessor) -> ContextPipeline: 

24 """注册处理器""" 

25 self._processors.append(processor) 

26 return self 

27 

28 async def run(self, messages: list[dict], **kwargs) -> list[dict]: 

29 """按顺序执行所有处理器""" 

30 for p in self._processors: 

31 messages = await p.process(messages, **kwargs) 

32 return messages