From 1293bf2135c4fbb3baf1e5c642e7d13c4f7924b5 Mon Sep 17 00:00:00 2001 From: Shefeek Jinnah Date: Mon, 20 Jul 2026 12:43:13 +0530 Subject: [PATCH 1/2] chore: allow hotdata 0.8.0 (widen pin to <0.9), release 0.3.2 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit hotdata 0.8.0 (the per-load-key release) is additive — every symbol this backend imports resolves unchanged — so widen the SDK pin from >=0.7,<0.8 to >=0.7,<0.9 with no code change. Unblocks the dlt destination's [ibis] extra, which needs to coexist with hotdata 0.8.0. --- CHANGELOG.md | 9 +++++++++ pyproject.toml | 4 ++-- uv.lock | 10 +++++----- 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0b616d7..cabdc12 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [0.3.2] - 2026-07-20 + +### Changed + +- Widen the `hotdata` SDK pin to `>=0.7,<0.9` (was `<0.8`) so the backend can + run alongside `hotdata 0.8.0` (the per-load-key release). 0.8.0 is additive — + every symbol this backend imports resolves unchanged — so no code changes. + + ## [0.3.1] - 2026-07-15 ### Changed diff --git a/pyproject.toml b/pyproject.toml index 183ac61..8ca6907 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "hotdata-ibis" -version = "0.3.1" +version = "0.3.2" description = "Ibis backend for Hotdata federated SQL API (depends on the hotdata SDK only; not hotdata-framework)" readme = "README.md" requires-python = ">=3.10" @@ -24,7 +24,7 @@ classifiers = [ ] dependencies = [ "ibis-framework>=12,<13", - "hotdata>=0.7,<0.8", + "hotdata>=0.7,<0.9", "pyarrow>=16", "pyarrow-hotfix>=0.6", "pandas>=2", diff --git a/uv.lock b/uv.lock index 25e3791..f6a2d46 100644 --- a/uv.lock +++ b/uv.lock @@ -127,7 +127,7 @@ wheels = [ [[package]] name = "hotdata" -version = "0.7.0" +version = "0.8.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "pydantic" }, @@ -135,14 +135,14 @@ dependencies = [ { name = "typing-extensions" }, { name = "urllib3" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/61/30/08681132e019f6c9ddb566dc38be6a302763c4b4848b2d97e3d7ace8d257/hotdata-0.7.0.tar.gz", hash = "sha256:ef4484a74c0f33ee543b0a0dbfb5a6c04e7b5812b277f42a6448000d41c2405d", size = 215130, upload-time = "2026-07-14T12:21:33.936Z" } +sdist = { url = "https://files.pythonhosted.org/packages/8a/38/30ed3d1d99413e7684672fa424baef85a347db465b90c774443320cf1cea/hotdata-0.8.0.tar.gz", hash = "sha256:cdac515ffa193ed028491e4b7abcd1b6404d4e3f96986c9c0a2b2f407db42eb6", size = 216848, upload-time = "2026-07-20T06:30:37.659Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/dc/ef/6c4236640629688074892759b1a7593c08f30e9d916b6951c2bbfec19d7f/hotdata-0.7.0-py3-none-any.whl", hash = "sha256:d9e3008e3084d22bcc27b7bf1d08d8c2c255fe3726c252c777bb614a3cae0576", size = 314103, upload-time = "2026-07-14T12:21:32.154Z" }, + { url = "https://files.pythonhosted.org/packages/bc/0f/f2ccaeb0f910c3f8cd84a911d934704277f0d6e5a20f8b49cf0eedb2a8aa/hotdata-0.8.0-py3-none-any.whl", hash = "sha256:5d64bfc185a0e7e2bf34ebdcea50787d3418fb250dacc53e00dc74d64e99f753", size = 316923, upload-time = "2026-07-20T06:30:35.778Z" }, ] [[package]] name = "hotdata-ibis" -version = "0.3.1" +version = "0.3.2" source = { editable = "." } dependencies = [ { name = "hotdata" }, @@ -165,7 +165,7 @@ dev = [ [package.metadata] requires-dist = [ - { name = "hotdata", specifier = ">=0.7,<0.8" }, + { name = "hotdata", specifier = ">=0.7,<0.9" }, { name = "ibis-framework", specifier = ">=12,<13" }, { name = "pandas", specifier = ">=2" }, { name = "pyarrow", specifier = ">=16" }, From 4ce3729bdc7d0231bcc3fcbecb0292e4ce361dd2 Mon Sep 17 00:00:00 2001 From: Shefeek Jinnah Date: Mon, 20 Jul 2026 19:23:24 +0530 Subject: [PATCH 2/2] test: add default_schema to db response mocks for hotdata 0.8.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit hotdata 0.8.0 makes default_schema a required field on CreateDatabaseResponse, DatabaseDetailResponse, and DatabaseSummary. The test fixtures predate it, so pydantic rejected them on parse. Add default_schema to the mocked response bodies (value is illustrative — the backend reads its default schema from connect params, not the response). --- CHANGELOG.md | 6 ++++-- tests/test_hotdata_backend.py | 4 ++++ tests/test_hotdata_http.py | 1 + 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cabdc12..59dd82e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,8 +13,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed - Widen the `hotdata` SDK pin to `>=0.7,<0.9` (was `<0.8`) so the backend can - run alongside `hotdata 0.8.0` (the per-load-key release). 0.8.0 is additive — - every symbol this backend imports resolves unchanged — so no code changes. + run alongside `hotdata 0.8.0` (the per-load-key release). No runtime/behavior + change; test fixtures were updated because 0.8.0 makes `default_schema` a + required field on the database response models (`CreateDatabaseResponse`, + `DatabaseDetailResponse`, `DatabaseSummary`). ## [0.3.1] - 2026-07-15 diff --git a/tests/test_hotdata_backend.py b/tests/test_hotdata_backend.py index ae2d849..4f2fd88 100644 --- a/tests/test_hotdata_backend.py +++ b/tests/test_hotdata_backend.py @@ -50,6 +50,7 @@ def managed_databases_response() -> dict: "id": MANAGED_DB_ID, "name": MANAGED_NAME, "default_catalog": MANAGED_CATALOG, + "default_schema": "main", } ] } @@ -60,6 +61,7 @@ def managed_database_detail_response() -> dict: "id": MANAGED_DB_ID, "name": MANAGED_NAME, "default_catalog": MANAGED_CATALOG, + "default_schema": "main", "default_connection_id": MANAGED_CONN, "expires_at": None, "attachments": [], @@ -563,6 +565,7 @@ def on_create(req: Request) -> Response: "id": MANAGED_DB_ID, "name": "sales", "default_catalog": MANAGED_CATALOG, + "default_schema": "main", "default_connection_id": MANAGED_CONN, "expires_at": None, } @@ -588,6 +591,7 @@ def on_create(req: Request) -> Response: "id": MANAGED_DB_ID, "name": "empty_db", "default_catalog": MANAGED_CATALOG, + "default_schema": "main", "default_connection_id": MANAGED_CONN, "expires_at": None, } diff --git a/tests/test_hotdata_http.py b/tests/test_hotdata_http.py index b268d52..dc056ab 100644 --- a/tests/test_hotdata_http.py +++ b/tests/test_hotdata_http.py @@ -291,6 +291,7 @@ def on_create(req: Request) -> Response: "id": "db_sales", "name": "sales", "default_catalog": "default", + "default_schema": "main", "default_connection_id": "conn_sales", "expires_at": None, }