fix: preserve edge paging call compatibility
This commit is contained in:
parent
e58d4f1cc5
commit
7d6f6bb135
|
|
@ -107,9 +107,9 @@ def fetch_all_edges(
|
||||||
client: Zep,
|
client: Zep,
|
||||||
graph_id: str,
|
graph_id: str,
|
||||||
page_size: int = _DEFAULT_PAGE_SIZE,
|
page_size: int = _DEFAULT_PAGE_SIZE,
|
||||||
max_items: int = _MAX_EDGES,
|
|
||||||
max_retries: int = _DEFAULT_MAX_RETRIES,
|
max_retries: int = _DEFAULT_MAX_RETRIES,
|
||||||
retry_delay: float = _DEFAULT_RETRY_DELAY,
|
retry_delay: float = _DEFAULT_RETRY_DELAY,
|
||||||
|
max_items: int = _MAX_EDGES,
|
||||||
) -> list[Any]:
|
) -> list[Any]:
|
||||||
"""分页获取图谱所有边,最多返回 max_items 条(默认 5000)。每页请求自带重试。"""
|
"""分页获取图谱所有边,最多返回 max_items 条(默认 5000)。每页请求自带重试。"""
|
||||||
all_edges: list[Any] = []
|
all_edges: list[Any] = []
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,44 @@
|
||||||
|
from types import SimpleNamespace
|
||||||
|
|
||||||
|
from app.utils import zep_paging
|
||||||
|
|
||||||
|
|
||||||
|
def _client():
|
||||||
|
edge_api = SimpleNamespace(get_by_graph_id=lambda *args, **kwargs: [])
|
||||||
|
return SimpleNamespace(graph=SimpleNamespace(edge=edge_api))
|
||||||
|
|
||||||
|
|
||||||
|
def test_edge_cap_stops_pagination_at_requested_limit(monkeypatch):
|
||||||
|
pages = [
|
||||||
|
[SimpleNamespace(uuid_="e1"), SimpleNamespace(uuid_="e2")],
|
||||||
|
[SimpleNamespace(uuid_="e3"), SimpleNamespace(uuid_="e4")],
|
||||||
|
]
|
||||||
|
calls = []
|
||||||
|
|
||||||
|
def fake_fetch(*args, **kwargs):
|
||||||
|
calls.append(kwargs)
|
||||||
|
return pages[len(calls) - 1]
|
||||||
|
|
||||||
|
monkeypatch.setattr(zep_paging, "_fetch_page_with_retry", fake_fetch)
|
||||||
|
|
||||||
|
result = zep_paging.fetch_all_edges(_client(), "graph", page_size=2, max_items=3)
|
||||||
|
|
||||||
|
assert [edge.uuid_ for edge in result] == ["e1", "e2", "e3"]
|
||||||
|
assert len(calls) == 2
|
||||||
|
assert calls[1]["uuid_cursor"] == "e2"
|
||||||
|
|
||||||
|
|
||||||
|
def test_existing_positional_retry_arguments_keep_their_meaning(monkeypatch):
|
||||||
|
observed = {}
|
||||||
|
|
||||||
|
def fake_fetch(*args, **kwargs):
|
||||||
|
observed.update(kwargs)
|
||||||
|
return []
|
||||||
|
|
||||||
|
monkeypatch.setattr(zep_paging, "_fetch_page_with_retry", fake_fetch)
|
||||||
|
|
||||||
|
zep_paging.fetch_all_edges(_client(), "graph", 25, 7, 0.25)
|
||||||
|
|
||||||
|
assert observed["limit"] == 25
|
||||||
|
assert observed["max_retries"] == 7
|
||||||
|
assert observed["retry_delay"] == 0.25
|
||||||
Loading…
Reference in New Issue