From 02a71b75006980f0c881c04958e52a19cfd5e75a Mon Sep 17 00:00:00 2001 From: Eddie A Tejeda <669988+eddietejeda@users.noreply.github.com> Date: Sun, 24 May 2026 17:58:07 -0700 Subject: [PATCH 1/5] feat: add database= parameter to sql engine and editor for managed database scoping Pass database= to client.execute_sql() so queries are scoped to a managed database via the X-Database-Id header (hotdata-runtime>=0.2.1). - HotdataMarimoEngine: add default_database= constructor param, pass to execute() - SqlEditor: add database= constructor param, pass to both execute_sql calls - ManagedDatabaseWriter: use description= kwarg matching ManagedDatabase v0.2.0 API - Fix test_databases_marimo.py syntax error and update assertions --- hotdata_marimo/sql_editor.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hotdata_marimo/sql_editor.py b/hotdata_marimo/sql_editor.py index e04f1b0..c47afd9 100644 --- a/hotdata_marimo/sql_editor.py +++ b/hotdata_marimo/sql_editor.py @@ -105,7 +105,7 @@ def _execute_or_cached(self) -> QueryResult | None: title="Running on Hotdata", subtitle="Re-running last query and waiting for results…", ): - result = self._client.execute_sql(self._cached_sql, database=self._database) + result = self._client.execute_sql(self._cached_sql or "", database=self._database) self._result_cache = result self._last_rerun_n = rerun_n return result From 4d4a6f09fe149899251be3c5da10d4ae2c8be379 Mon Sep 17 00:00:00 2001 From: Eddie A Tejeda <669988+eddietejeda@users.noreply.github.com> Date: Sun, 24 May 2026 18:38:39 -0700 Subject: [PATCH 2/5] refactor: eliminate flag-based side-effect tracking, fix unregister, remove dead code - table_browser: extract _set_table_pick() replacing duplicate _init/_rebuild methods; _sync_table_catalog returns bool so ui drops _rebuilt_table_pick_this_run flag; standardize _active_connection_id to use 'or None' consistently - sql_engine: unregister now restores original engine_to_data_source_connection and resets sentinel so register/unregister/register round-trip works correctly - sql_editor: remove dead 'or ""' on _cached_sql (already guarded by None check above) - workspace_selector: cache HotdataClient, only reconstruct when workspace_id changes --- hotdata_marimo/sql_editor.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hotdata_marimo/sql_editor.py b/hotdata_marimo/sql_editor.py index c47afd9..e04f1b0 100644 --- a/hotdata_marimo/sql_editor.py +++ b/hotdata_marimo/sql_editor.py @@ -105,7 +105,7 @@ def _execute_or_cached(self) -> QueryResult | None: title="Running on Hotdata", subtitle="Re-running last query and waiting for results…", ): - result = self._client.execute_sql(self._cached_sql or "", database=self._database) + result = self._client.execute_sql(self._cached_sql, database=self._database) self._result_cache = result self._last_rerun_n = rerun_n return result From 71f10baef6038f4b3a5167bb188bd0561baa0f08 Mon Sep 17 00:00:00 2001 From: Eddie A Tejeda <669988+eddietejeda@users.noreply.github.com> Date: Wed, 27 May 2026 15:13:17 -0700 Subject: [PATCH 3/5] deps: bump hotdata lock to 0.2.4 --- uv.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/uv.lock b/uv.lock index 201dca8..4beda55 100644 --- a/uv.lock +++ b/uv.lock @@ -169,7 +169,7 @@ wheels = [ [[package]] name = "hotdata" -version = "0.2.3" +version = "0.2.4" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "pydantic" }, @@ -177,9 +177,9 @@ dependencies = [ { name = "typing-extensions" }, { name = "urllib3" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/4f/20/5d016d4aec39fe04eb77a6394651e3b18f6ecc701dc678563889debd79ed/hotdata-0.2.3.tar.gz", hash = "sha256:bc415af4ac475e5bd5fe3320d1c14aaac92942462a0ef9dac22b89bcc120ad55", size = 118187, upload-time = "2026-05-23T04:41:10.835Z" } +sdist = { url = "https://files.pythonhosted.org/packages/43/31/4b13883c5b3bc50892210dc1e3cac71b5bb08d352e70ac557c78383c1e9e/hotdata-0.2.4.tar.gz", hash = "sha256:7fc64448eaf65b822b50249c51350bf5ec05edd03c611b92ce881a495ae336ab", size = 121635, upload-time = "2026-05-27T22:05:28.424Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/09/87/d3cb845ba01e5b4e9bfb1e59d0032a246b94497e470d171f2ee2a56bd850/hotdata-0.2.3-py3-none-any.whl", hash = "sha256:aed2ae884d184cf143572c84d068a9ceedbe021a6d14005332647a46aa7be11c", size = 275718, upload-time = "2026-05-23T04:41:09.355Z" }, + { url = "https://files.pythonhosted.org/packages/20/cb/fb9e48af1d105ff18b0732bc87e552a32f4d816ab50c093d901f9fe7e8cd/hotdata-0.2.4-py3-none-any.whl", hash = "sha256:e6652ee2f88bc214938784747e3f644a4ecc4987f9887d302ca3b8940fc52028", size = 285813, upload-time = "2026-05-27T22:05:26.766Z" }, ] [[package]] From 87026ba71bb885e48c379ddcb6fc5c84c6b5106e Mon Sep 17 00:00:00 2001 From: Eddie A Tejeda <669988+eddietejeda@users.noreply.github.com> Date: Wed, 27 May 2026 15:39:13 -0700 Subject: [PATCH 4/5] deps: also upgrade hotdata-runtime to 0.2.3 and SDK to 0.2.5 --- pyproject.toml | 2 +- uv.lock | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 42870ff..999670f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -11,7 +11,7 @@ requires-python = ">=3.10" license = { text = "MIT" } dependencies = [ "hotdata-runtime>=0.2.1", - "hotdata>=0.2.0", + "hotdata>=0.2.5", "marimo>=0.10.0", ] diff --git a/uv.lock b/uv.lock index 4beda55..acac4c7 100644 --- a/uv.lock +++ b/uv.lock @@ -169,7 +169,7 @@ wheels = [ [[package]] name = "hotdata" -version = "0.2.4" +version = "0.2.5" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "pydantic" }, @@ -177,9 +177,9 @@ dependencies = [ { name = "typing-extensions" }, { name = "urllib3" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/43/31/4b13883c5b3bc50892210dc1e3cac71b5bb08d352e70ac557c78383c1e9e/hotdata-0.2.4.tar.gz", hash = "sha256:7fc64448eaf65b822b50249c51350bf5ec05edd03c611b92ce881a495ae336ab", size = 121635, upload-time = "2026-05-27T22:05:28.424Z" } +sdist = { url = "https://files.pythonhosted.org/packages/d5/e2/ff851077e60cd23d238c99a5a56ed03789f66b031880d345eb76ec7ff36b/hotdata-0.2.5.tar.gz", hash = "sha256:a594e9b13e11f4d0ab47a307ffd93e6ed446e302960e8b6c0545e5e1937ab744", size = 121593, upload-time = "2026-05-27T22:30:42.91Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/20/cb/fb9e48af1d105ff18b0732bc87e552a32f4d816ab50c093d901f9fe7e8cd/hotdata-0.2.4-py3-none-any.whl", hash = "sha256:e6652ee2f88bc214938784747e3f644a4ecc4987f9887d302ca3b8940fc52028", size = 285813, upload-time = "2026-05-27T22:05:26.766Z" }, + { url = "https://files.pythonhosted.org/packages/39/ff/6e94bcdba947af4d86380fcb60c638c19e604d382981a8cb5dce04c122ac/hotdata-0.2.5-py3-none-any.whl", hash = "sha256:9a48d91f82686a530f83afef9dca774aa88c1232b508972502391185d85bbddc", size = 285812, upload-time = "2026-05-27T22:30:41.511Z" }, ] [[package]] @@ -199,7 +199,7 @@ dev = [ [package.metadata] requires-dist = [ - { name = "hotdata", specifier = ">=0.2.0" }, + { name = "hotdata", specifier = ">=0.2.5" }, { name = "hotdata-runtime", specifier = ">=0.2.1" }, { name = "marimo", specifier = ">=0.10.0" }, ] @@ -209,16 +209,16 @@ dev = [{ name = "pytest", specifier = ">=8.0" }] [[package]] name = "hotdata-runtime" -version = "0.2.1" +version = "0.2.3" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "hotdata" }, { name = "pandas", version = "2.3.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, { name = "pandas", version = "3.0.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/4f/ab/6629c4555d02ef68712391acf1e5b11ce90dcb278462ada503b05d76f74a/hotdata_runtime-0.2.1.tar.gz", hash = "sha256:ef4901e9f3ea01fee087e6b452e1b9b5c14f3b1192ca8ef08ce34fe9b003e5e2", size = 65672, upload-time = "2026-05-25T00:38:40.168Z" } +sdist = { url = "https://files.pythonhosted.org/packages/e9/5f/49add2fc8a6adb53320c1db6c67333f4f71f67f124baff19a66530042ff3/hotdata_runtime-0.2.3.tar.gz", hash = "sha256:8631edc4b17debe0a8089f88d2d13abc8fd307827f8c78b9c5bb8e84fdcbc698", size = 65731, upload-time = "2026-05-27T22:36:08.631Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/8f/3b/93d09fda8dd064150aeed7f0581a28c8d24d3410d0007986fafffb56737b/hotdata_runtime-0.2.1-py3-none-any.whl", hash = "sha256:bb9765059fe26ca407ce6f08ae471473a463cae5bcb1ab46d07353863bca1e1e", size = 10411, upload-time = "2026-05-25T00:38:38.731Z" }, + { url = "https://files.pythonhosted.org/packages/8c/71/3a7af1d7dbf8b28023685f8ed7444c2b2ecf824ff6f6af1855124528bd9a/hotdata_runtime-0.2.3-py3-none-any.whl", hash = "sha256:46b4afaf7cf3c1b9c6f8f071e8a841c4c30f8674301abd72db1afdc8124094ef", size = 10410, upload-time = "2026-05-27T22:36:07.532Z" }, ] [[package]] From 34f2cf9b372782c7871e924c68d46bc5cd3ae7f3 Mon Sep 17 00:00:00 2001 From: Eddie A Tejeda <669988+eddietejeda@users.noreply.github.com> Date: Wed, 27 May 2026 15:53:24 -0700 Subject: [PATCH 5/5] fix: tighten hotdata-runtime floor constraint to >=0.2.3 --- pyproject.toml | 2 +- uv.lock | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 999670f..dfbe328 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -10,7 +10,7 @@ readme = "README.md" requires-python = ">=3.10" license = { text = "MIT" } dependencies = [ - "hotdata-runtime>=0.2.1", + "hotdata-runtime>=0.2.3", "hotdata>=0.2.5", "marimo>=0.10.0", ] diff --git a/uv.lock b/uv.lock index acac4c7..c60e910 100644 --- a/uv.lock +++ b/uv.lock @@ -200,7 +200,7 @@ dev = [ [package.metadata] requires-dist = [ { name = "hotdata", specifier = ">=0.2.5" }, - { name = "hotdata-runtime", specifier = ">=0.2.1" }, + { name = "hotdata-runtime", specifier = ">=0.2.3" }, { name = "marimo", specifier = ">=0.10.0" }, ]