Skip to content

feat: adopt hotdata SDK 0.12 - #65

Merged
eddietejeda merged 2 commits into
mainfrom
chore/hotdata-0.12
Oct 19, 2026
Merged

eddietejeda merged 2 commits into
mainfrom
chore/hotdata-0.12

Conversation

@eddietejeda

@eddietejeda eddietejeda commented Oct 19, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Updates to hotdata SDK 0.12 and uses its new features.

  • SDK bump: require hotdata>=0.12,<0.13. Test fixtures now include the new required TableInfo.constant_per_key field.

  • Load retry: import ConnectionsApi / DatabasesApi from top-level hotdata, so table loads retry while another load holds the table lock.

  • Faster queries: queries ask for an inline Arrow response. A query that finishes within async_after_ms (default 1000) returns its rows in one request instead of at least three. Slower or larger queries fall back to polling. async_after_ms=None restores always-async.

  • Env credentials: connect() falls back to HOTDATA_API_URL, HOTDATA_API_KEY and HOTDATA_WORKSPACE. A missing token or workspace raises a clear error at connect time.

  • Index management: new create_index, list_indexes and drop_index (vector HNSW/IVF, embedding-provider, BM25, sorted).

  • Text search: new vector_distance UDF. semantic_search accepts a text query for embedding-backed indexes.

  • Security: bump dev-only werkzeug 3.1.8 → 3.1.9 (GHSA-g6x2-hccm-hh4m, Dependabot alert fix: rename PyPI package from ibis-hotdata to hotdata-ibis #7). It only comes in through pytest-httpserver, so the published package is not affected.

README, CHANGELOG and examples/06_semantic_search.py are updated.

Testing

  • uv run ruff check src tests examples: passes
  • uv run pytest: 127 passed (against a mock server)
  • Not yet run against the live API. Before merging, run:
    HOTDATA_API_KEY=... HOTDATA_WORKSPACE=... uv run python examples/06_semantic_search.py
    This tests the inline Arrow path, create_index and semantic_search for real. It creates a temporary database and deletes it at the end.

- Require hotdata>=0.12,<0.13; add constant_per_key to TableInfo test fixtures.
- Use top-level ConnectionsApi/DatabasesApi so table loads retry on lock.
- Queries request inline Arrow: results return in one request when the query
  finishes within async_after_ms (default 1000), else fall back to polling.
- connect() falls back to HOTDATA_API_URL / HOTDATA_API_KEY / HOTDATA_WORKSPACE.
- Add create_index / list_indexes / drop_index (HNSW, IVF, BM25, sorted).
- Add vector_distance UDF; semantic_search accepts a text query.
@eddietejeda
eddietejeda requested a review from a team as a code owner October 19, 2026 15:36
@eddietejeda
eddietejeda requested review from anoop-narang and removed request for a team October 19, 2026 15:36
Dev-only dependency via pytest-httpserver; resolves Dependabot alert #7.
@eddietejeda
eddietejeda enabled auto-merge (squash) October 19, 2026 16:10
@eddietejeda
eddietejeda merged commit 273c155 into main Oct 19, 2026
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant