Bump lancedb to 0.34.0

This commit is contained in:
Yiorgis Gozadinos 2026-07-14 13:25:02 +03:00
parent 472eb089fe
commit aa620aeb60
No known key found for this signature in database
5 changed files with 24 additions and 17 deletions

View file

@ -11,6 +11,7 @@
- Unknown `reranking.model.provider` raises `ValueError` instead of silently disabling reranking. - Unknown `reranking.model.provider` raises `ValueError` instead of silently disabling reranking.
- `search.max_context_chars` default lowered from 10000 to 5000. - `search.max_context_chars` default lowered from 10000 to 5000.
- `lancedb` bumped to 0.34.0.
### Removed ### Removed

View file

@ -157,10 +157,12 @@ async def _apply_extract_picture_bytes(store: Store) -> None:
schema=_V0_45_0_ITEMS_SCHEMA, schema=_V0_45_0_ITEMS_SCHEMA,
) )
# Update-only merge: v0.40.0 guarantees a matching row per
# self_ref, and an insert branch would require the source to
# carry every non-nullable column of the live schema.
await ( await (
store.document_items_table.merge_insert(["document_id", "self_ref"]) store.document_items_table.merge_insert(["document_id", "self_ref"])
.when_matched_update_all() .when_matched_update_all()
.when_not_matched_insert_all()
.execute(new_records) .execute(new_records)
) )
wrote_items = True wrote_items = True

View file

@ -28,7 +28,7 @@ dependencies = [
"jinja2>=3.1.0", "jinja2>=3.1.0",
"jsonpatch>=1.33", "jsonpatch>=1.33",
"fastmcp>=3.3.0", "fastmcp>=3.3.0",
"lancedb==0.30.2", "lancedb==0.34.0",
"pathspec>=1.0.4", "pathspec>=1.0.4",
"pydantic>=2.12.5", "pydantic>=2.12.5",
"pydantic-ai-slim[openai,logfire,ag-ui]>=1.100.0", "pydantic-ai-slim[openai,logfire,ag-ui]>=1.100.0",

View file

@ -38,7 +38,9 @@ async def test_fs_second_sweep_emits_unchanged_after_ingest(temp_db_path, tmp_pa
"""The full round-trip: ingest a file, build a sync_state-shaped snapshot """The full round-trip: ingest a file, build a sync_state-shaped snapshot
from document.metadata, hand it to FSSource.discover() must see from document.metadata, hand it to FSSource.discover() must see
UNCHANGED, not UPSERT. This is exactly what the periodic poller does.""" UNCHANGED, not UPSERT. This is exactly what the periodic poller does."""
file_path = tmp_path / "doc.md" docs_dir = tmp_path / "docs"
docs_dir.mkdir()
file_path = docs_dir / "doc.md"
file_path.write_text("hello") file_path.write_text("hello")
async with HaikuRAG(temp_db_path, create=True) as client: async with HaikuRAG(temp_db_path, create=True) as client:
@ -47,7 +49,7 @@ async def test_fs_second_sweep_emits_unchanged_after_ingest(temp_db_path, tmp_pa
assert doc.uri is not None assert doc.uri is not None
snapshot = {doc.uri: doc.metadata["source_revision"]} snapshot = {doc.uri: doc.metadata["source_revision"]}
src = FSSource(root=tmp_path) src = FSSource(root=docs_dir)
kinds: list[SourceEventKind] = [] kinds: list[SourceEventKind] = []
async for event in src.discover(since=snapshot): async for event in src.discover(since=snapshot):
kinds.append(event.kind) kinds.append(event.kind)
@ -60,7 +62,9 @@ async def test_fs_second_sweep_emits_unchanged_after_ingest(temp_db_path, tmp_pa
async def test_fs_second_sweep_emits_upsert_when_file_changes(temp_db_path, tmp_path): async def test_fs_second_sweep_emits_upsert_when_file_changes(temp_db_path, tmp_path):
"""Counterpart to the unchanged test: a file modified after ingest still """Counterpart to the unchanged test: a file modified after ingest still
triggers UPSERT. Ensures the round-trip doesn't accidentally over-skip.""" triggers UPSERT. Ensures the round-trip doesn't accidentally over-skip."""
file_path = tmp_path / "doc.md" docs_dir = tmp_path / "docs"
docs_dir.mkdir()
file_path = docs_dir / "doc.md"
file_path.write_text("hello") file_path.write_text("hello")
async with HaikuRAG(temp_db_path, create=True) as client: async with HaikuRAG(temp_db_path, create=True) as client:
@ -74,7 +78,7 @@ async def test_fs_second_sweep_emits_upsert_when_file_changes(temp_db_path, tmp_
# on any sane filesystem, but assert anyway to make the intent explicit. # on any sane filesystem, but assert anyway to make the intent explicit.
assert str(file_path.stat().st_mtime_ns) != doc.metadata["source_revision"] assert str(file_path.stat().st_mtime_ns) != doc.metadata["source_revision"]
src = FSSource(root=tmp_path) src = FSSource(root=docs_dir)
kinds: list[SourceEventKind] = [] kinds: list[SourceEventKind] = []
async for event in src.discover(since=snapshot): async for event in src.discover(since=snapshot):
kinds.append(event.kind) kinds.append(event.kind)
@ -242,7 +246,9 @@ async def test_directory_ingest_threads_configured_source_to_provider(
"""Directory ingestion with a configured source passes that source's id and """Directory ingestion with a configured source passes that source's id and
fetch context to each child, so the provider sees the configured source id fetch context to each child, so the provider sees the configured source id
rather than an ad-hoc fs: identity.""" rather than an ad-hoc fs: identity."""
(tmp_path / "doc.md").write_text("hello") docs_dir = tmp_path / "docs"
docs_dir.mkdir()
(docs_dir / "doc.md").write_text("hello")
seen_source_ids: list[str] = [] seen_source_ids: list[str] = []
@ -251,11 +257,11 @@ async def test_directory_ingest_threads_configured_source_to_provider(
seen_source_ids.append(source_id) seen_source_ids.append(source_id)
return {"collection": source_id} return {"collection": source_id}
source = FSSource(root=tmp_path, source_id="docs") source = FSSource(root=docs_dir, source_id="docs")
async with HaikuRAG(temp_db_path, create=True) as client: async with HaikuRAG(temp_db_path, create=True) as client:
docs = await client.create_document_from_source( docs = await client.create_document_from_source(
tmp_path, docs_dir,
sources=[source], sources=[source],
source_id="docs", source_id="docs",
metadata_provider=Provider(), metadata_provider=Provider(),

14
uv.lock
View file

@ -1755,7 +1755,7 @@ requires-dist = [
{ name = "httpx", specifier = ">=0.28.1" }, { name = "httpx", specifier = ">=0.28.1" },
{ name = "jinja2", specifier = ">=3.1.0" }, { name = "jinja2", specifier = ">=3.1.0" },
{ name = "jsonpatch", specifier = ">=1.33" }, { name = "jsonpatch", specifier = ">=1.33" },
{ name = "lancedb", specifier = "==0.30.2" }, { name = "lancedb", specifier = "==0.34.0" },
{ name = "obstore", marker = "extra == 's3'", specifier = ">=0.9,<0.10" }, { name = "obstore", marker = "extra == 's3'", specifier = ">=0.9,<0.10" },
{ name = "opencv-python-headless", marker = "extra == 'docling'", specifier = ">=4.6.0.66,<5.0.0.0" }, { name = "opencv-python-headless", marker = "extra == 'docling'", specifier = ">=4.6.0.66,<5.0.0.0" },
{ name = "pathspec", specifier = ">=1.0.4" }, { name = "pathspec", specifier = ">=1.0.4" },
@ -2252,7 +2252,7 @@ wheels = [
[[package]] [[package]]
name = "lancedb" name = "lancedb"
version = "0.30.2" version = "0.34.0"
source = { registry = "https://pypi.org/simple" } source = { registry = "https://pypi.org/simple" }
dependencies = [ dependencies = [
{ name = "deprecation" }, { name = "deprecation" },
@ -2264,12 +2264,10 @@ dependencies = [
{ name = "tqdm" }, { name = "tqdm" },
] ]
wheels = [ wheels = [
{ url = "https://files.pythonhosted.org/packages/7f/87/67b23006663be175c396ae8f7c6ac98bfa4728de5b5583016b8b8c54eb14/lancedb-0.30.2-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:3dd8cb9e2e25efb32c088b24b3fbc57f3f24a636f4b8ad4b287b1eb52f6b5075", size = 41720461, upload-time = "2026-03-31T22:42:32.853Z" }, { url = "https://files.pythonhosted.org/packages/df/f7/5262b9aa593f790757163c0165ab0da1dda054758901bea7e4f02c9cb633/lancedb-0.34.0-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:c462f2e6f933cad659fd0179394eaab578acbc9151fe2ef41bc29b36ecca5058", size = 52654213, upload-time = "2026-07-02T17:13:31.102Z" },
{ url = "https://files.pythonhosted.org/packages/78/68/b3b5f638f8de91de75751414114690cae9c294dc79d9ab2602f4562ed9df/lancedb-0.30.2-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f083d50b257f645bd5c4b295d693648ffb37640ce1e9d72f55041b1382f0dbd6", size = 43626135, upload-time = "2026-03-31T22:50:28.577Z" }, { url = "https://files.pythonhosted.org/packages/69/99/05ea0d32229ebea695193ff20c15d6ecae25785ad82a9d4723d98832a284/lancedb-0.34.0-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:48829e88e708947d0520454ab9e4f8efa35f3e3626469eadd3a6e061b89cb223", size = 55434501, upload-time = "2026-07-02T17:13:34.81Z" },
{ url = "https://files.pythonhosted.org/packages/ef/d1/ea8b74a8b56dd4925cc9cb9cc23c7d9675708a7f6b33d22136dc7bb34dbc/lancedb-0.30.2-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3aef5538db9cd82af79c90831035b4d67e9aa182ef73095a1b919caddf9bb7a5", size = 46619289, upload-time = "2026-03-31T22:55:02.242Z" }, { url = "https://files.pythonhosted.org/packages/cd/4e/4325c13d5afa93c466428a5a0f168ad4d96f5eb4a77bbe7c5100d39c9897/lancedb-0.34.0-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:05ba8a5b58e064edfbe5be71b1abf2e411b4eaf295d1a173dcb1a55c5bfb5285", size = 58659359, upload-time = "2026-07-02T17:13:38.424Z" },
{ url = "https://files.pythonhosted.org/packages/74/4b/5bfeacf948cfc3452b286a792dcbbfaf04649ef0820e1d3790d47bf5527e/lancedb-0.30.2-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:8b161cb1da04ae6ad45afe10093cfe4107821d93e7712b50200c435d6f4c8a20", size = 43641193, upload-time = "2026-03-31T22:51:13.63Z" }, { url = "https://files.pythonhosted.org/packages/d9/5d/8ca165f1386caf6c4d1c515afd52f345b66432264eecfdfb7fd33eefd9af/lancedb-0.34.0-cp39-abi3-win_amd64.whl", hash = "sha256:51cbc11808f9e3332819b9367c975b3a888541447a8e7bea09c57c852a279153", size = 63530726, upload-time = "2026-07-02T17:13:41.612Z" },
{ url = "https://files.pythonhosted.org/packages/28/4c/a51af0ce1d18fd86afa3e8538a81abf5523d24632abe7665ce6795b8009d/lancedb-0.30.2-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:7fabc0f57944fd79ddef62ed8cf4df770654b172b1ad1019a999304fed3169f3", size = 46665361, upload-time = "2026-03-31T22:54:20.282Z" },
{ url = "https://files.pythonhosted.org/packages/88/d0/7e44e8143ac2dae8979ba882cc33d4af7b8da4741fb0361497e69b4a4379/lancedb-0.30.2-cp39-abi3-win_amd64.whl", hash = "sha256:531da53002c1c6fda829afccc8ced3056ef58eb036f09ddb2b94a06877ecc66c", size = 50940681, upload-time = "2026-03-31T23:25:52.35Z" },
] ]
[[package]] [[package]]