From ef265053dff08aa6070831279fc2408f61052281 Mon Sep 17 00:00:00 2001 From: Eddie A Tejeda <669988+eddietejeda@users.noreply.github.com> Date: Fri, 26 Jun 2026 21:20:43 -0700 Subject: [PATCH 1/4] chore: depend on hotdata-framework (renamed from hotdata-runtime) --- .github/dependabot.yml | 2 +- pyproject.toml | 2 +- scripts/publish-workflow.sh | 2 +- tests/test_architecture_guardrails.py | 14 +++++++------- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index c0e1b45..47c7a76 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -6,4 +6,4 @@ updates: interval: daily allow: - dependency-name: hotdata - - dependency-name: hotdata-runtime + - dependency-name: hotdata-framework diff --git a/pyproject.toml b/pyproject.toml index a63034a..7a8151e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -5,7 +5,7 @@ build-backend = "setuptools.build_meta" [project] name = "hotdata-ibis" version = "0.1.5" -description = "Ibis backend for Hotdata federated SQL API (depends on the hotdata SDK only; not hotdata-runtime)" +description = "Ibis backend for Hotdata federated SQL API (depends on the hotdata SDK only; not hotdata-framework)" readme = "README.md" requires-python = ">=3.10" license = { text = "Apache-2.0" } diff --git a/scripts/publish-workflow.sh b/scripts/publish-workflow.sh index 88c9db9..713f872 100755 --- a/scripts/publish-workflow.sh +++ b/scripts/publish-workflow.sh @@ -1,5 +1,5 @@ #!/usr/bin/env bash -# Generate publish.yml for a package. Usage: publish-workflow.sh hotdata-runtime +# Generate publish.yml for a package. Usage: publish-workflow.sh hotdata-framework set -euo pipefail pkg="${1:?package name}" cat < None: +def test_pyproject_dependencies_do_not_include_hotdata_framework() -> None: pyproject_text = (REPO_ROOT / "pyproject.toml").read_text(encoding="utf-8") match = re.search(r"(?ms)^dependencies\s*=\s*\[(.*?)\]", pyproject_text) assert match is not None dependencies_block = match.group(1) - assert "hotdata-runtime" not in dependencies_block - assert "hotdata_runtime" not in dependencies_block + assert "hotdata-framework" not in dependencies_block + assert "hotdata_framework" not in dependencies_block -def test_source_tree_does_not_import_hotdata_runtime() -> None: +def test_source_tree_does_not_import_hotdata_framework() -> None: violations: list[str] = [] import_patterns = ( - re.compile(r"(?m)^\s*from\s+hotdata_runtime(?:\.|\s+import)"), - re.compile(r"(?m)^\s*import\s+hotdata_runtime(?:\s|$|,)"), + re.compile(r"(?m)^\s*from\s+hotdata_framework(?:\.|\s+import)"), + re.compile(r"(?m)^\s*import\s+hotdata_framework(?:\s|$|,)"), ) for folder in ("src", "tests", "examples"): @@ -29,6 +29,6 @@ def test_source_tree_does_not_import_hotdata_runtime() -> None: violations.append(str(path.relative_to(REPO_ROOT))) assert not violations, ( - "hotdata-ibis must remain independent from hotdata-runtime; " + "hotdata-ibis must remain independent from hotdata-framework; " f"found forbidden imports in: {', '.join(violations)}" ) From c10b8375dad4c5ade57f9550b5c42f675e0ec3f4 Mon Sep 17 00:00:00 2001 From: Eddie A Tejeda <669988+eddietejeda@users.noreply.github.com> Date: Fri, 26 Jun 2026 21:59:37 -0700 Subject: [PATCH 2/4] chore: regenerate lockfile for hotdata-framework --- uv.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/uv.lock b/uv.lock index d13ab8b..ece991d 100644 --- a/uv.lock +++ b/uv.lock @@ -142,7 +142,7 @@ wheels = [ [[package]] name = "hotdata-ibis" -version = "0.1.4" +version = "0.1.5" source = { editable = "." } dependencies = [ { name = "hotdata" }, From 6e1836375d1133724aa4d08d48ce21cb7c314ecf Mon Sep 17 00:00:00 2001 From: Eddie A Tejeda <669988+eddietejeda@users.noreply.github.com> Date: Sun, 28 Jun 2026 23:29:07 -0700 Subject: [PATCH 3/4] chore: bump hotdata SDK floor to >=0.5.0 Upgrade the hotdata SDK dependency from >=0.4.1 to >=0.5.0 (latest) and relock. Verified end-to-end against live Hotdata on 0.5.0: offline suite (98 pytest, ruff clean) plus full live integration run (create/upload/ sync, filter, order_by, aggregate, mutate, join, to_pyarrow/to_pandas, raw SQL, batches, drop). No API drift in the SDK surface the backend uses. --- pyproject.toml | 2 +- uv.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 7a8151e..12dd0a0 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -24,7 +24,7 @@ classifiers = [ ] dependencies = [ "ibis-framework>=10.0,<11", - "hotdata>=0.4.1", + "hotdata>=0.5.0", "pyarrow>=15", "pyarrow-hotfix>=0.6", "pandas>=2", diff --git a/uv.lock b/uv.lock index ece991d..87dfd3d 100644 --- a/uv.lock +++ b/uv.lock @@ -127,7 +127,7 @@ wheels = [ [[package]] name = "hotdata" -version = "0.4.1" +version = "0.5.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "pydantic" }, @@ -135,9 +135,9 @@ dependencies = [ { name = "typing-extensions" }, { name = "urllib3" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/10/f8/397b2fa161e74abb115283fc169b2abe7455022cc53e1119f0fee80969d2/hotdata-0.4.1.tar.gz", hash = "sha256:e123d267872178f4dd6c8337ac47cf6616984685aca3aaa5ae2c590cecb1f29d", size = 147822, upload-time = "2026-06-19T15:12:36.131Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f2/d8/79f4906f4a39aacd7a94c7991af63064cecb95015d4fbe4d50757b21c940/hotdata-0.5.0.tar.gz", hash = "sha256:3d0240e6a3e7333e4290d8b3e75afebba43e518b868e1c3e3818fd719a6ab994", size = 170462, upload-time = "2026-06-28T16:28:49.591Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/47/59/5ff00a1adce5a8b312692a7145660027340d3b4b352b4c3427045a59191f/hotdata-0.4.1-py3-none-any.whl", hash = "sha256:0a71c3d74bae06a79a05eb3f42893baf33f8229ef6f0dc735b59899048a2b7b1", size = 289951, upload-time = "2026-06-19T15:12:34.752Z" }, + { url = "https://files.pythonhosted.org/packages/aa/0e/026a2e03647e3d3c26027b690ea24ef036fbeb314b85517db3d606aab4da/hotdata-0.5.0-py3-none-any.whl", hash = "sha256:e7c4f5f8af6a7b370810fb599e5a166fc4bb569f6f41c506698c4bebfb500fcc", size = 286907, upload-time = "2026-06-28T16:28:48.298Z" }, ] [[package]] @@ -165,7 +165,7 @@ dev = [ [package.metadata] requires-dist = [ - { name = "hotdata", specifier = ">=0.4.1" }, + { name = "hotdata", specifier = ">=0.5.0" }, { name = "ibis-framework", specifier = ">=10.0,<11" }, { name = "pandas", specifier = ">=2" }, { name = "pyarrow", specifier = ">=15" }, From 578d0b9dd42833e17d1d4e475c3e31cd2cb63c36 Mon Sep 17 00:00:00 2001 From: Eddie A Tejeda <669988+eddietejeda@users.noreply.github.com> Date: Sun, 28 Jun 2026 23:35:04 -0700 Subject: [PATCH 4/4] chore: drop hotdata-framework from dependabot allow-list ibis must not depend on hotdata-framework (enforced by the architecture guardrail tests), so allow-listing it for dependabot was contradictory. Keep only the hotdata SDK, which is the sole real dependency. --- .github/dependabot.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 47c7a76..9c4fd44 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -6,4 +6,3 @@ updates: interval: daily allow: - dependency-name: hotdata - - dependency-name: hotdata-framework