mirror of
https://github.com/VectifyAI/PageIndex.git
synced 2026-07-18 21:21:05 +02:00
fix: six P2 correctness/robustness cleanups from the SDK review
- legacy call_llm: open AsyncOpenAI via `async with` so the client (and its HTTP connection pool) is closed instead of leaked. - LocalBackend.add_document: fail fast with CollectionNotFoundError when the collection doesn't exist, before the expensive parse + LLM index (previously the missing FK only tripped at save time, after paying for the LLM work). Also raise builtin FileNotFoundError for a missing path instead of FileTypeError (which now means only "unsupported extension"). - Collection.query(doc_ids=None): the empty-collection guard now always runs — previously it was skipped once PAGEINDEX_EXPERIMENTAL_MULTIDOC was set. A single list_documents call serves both the guard and the multi-doc warning (no separate call just to decide whether to warn). - CloudBackend.query_stream: on early consumer break / GeneratorExit, signal the background SSE thread to stop and force-close the response, so it no longer drains the whole stream in the background. Adds regression tests for each (client closed, fail-fast on unknown collection, FileNotFoundError, empty-check under the multidoc env flag, single list call, early-break thread stop). Claude-Session: https://claude.ai/code/session_01Kx5DgKbhK1N8autqXH8SmS
This commit is contained in:
parent
6c948a332b
commit
fe36e25773
8 changed files with 128 additions and 19 deletions
|
|
@ -165,3 +165,18 @@ def test_delete_collection_rejects_path_traversal(backend, tmp_path):
|
|||
with pytest.raises(PageIndexError, match="Invalid collection name"):
|
||||
backend.delete_collection("../..")
|
||||
assert canary.exists()
|
||||
|
||||
|
||||
def test_add_document_missing_file_raises_file_not_found(backend, tmp_path):
|
||||
backend.get_or_create_collection("papers")
|
||||
with pytest.raises(FileNotFoundError):
|
||||
backend.add_document("papers", str(tmp_path / "nope.pdf"))
|
||||
|
||||
|
||||
def test_add_document_unknown_collection_fails_fast(backend, tmp_path):
|
||||
from pageindex.errors import CollectionNotFoundError
|
||||
pdf = tmp_path / "doc.pdf"
|
||||
pdf.write_bytes(b"%PDF-1.4")
|
||||
# Collection never created -> must raise before any parse/LLM work.
|
||||
with pytest.raises(CollectionNotFoundError, match="does not exist"):
|
||||
backend.add_document("ghost-collection", str(pdf))
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue