Coverage for merco/memory/backend.py: 100%

23 statements  

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

1"""MemoryBackend ABC + MemoryBackendRegistry""" 

2from __future__ import annotations 

3 

4from abc import ABC, abstractmethod 

5 

6 

7class MemoryBackend(ABC): 

8 """记忆存储后端基类""" 

9 name: str = "" 

10 

11 @abstractmethod 

12 def save(self, key: str, value, tags: list = None) -> None: 

13 """保存记忆""" 

14 ... 

15 

16 @abstractmethod 

17 def load(self, key: str) -> dict | None: 

18 """加载记忆""" 

19 ... 

20 

21 @abstractmethod 

22 def delete(self, key: str) -> None: 

23 """删除记忆""" 

24 ... 

25 

26 @abstractmethod 

27 def list_keys(self, tag: str = None) -> list[str]: 

28 """列出所有记忆键""" 

29 ... 

30 

31 @abstractmethod 

32 def search(self, query: str) -> list[dict]: 

33 """搜索记忆""" 

34 ... 

35 

36 

37class MemoryBackendRegistry: 

38 """MemoryBackend 注册表""" 

39 

40 def __init__(self): 

41 self._backends: dict[str, MemoryBackend] = {} 

42 

43 def register(self, backend: MemoryBackend) -> None: 

44 self._backends[backend.name] = backend 

45 

46 def get(self, name: str) -> MemoryBackend | None: 

47 return self._backends.get(name) 

48 

49 def list(self) -> list[MemoryBackend]: 

50 return list(self._backends.values())