An adversarial audit of hotdata.dev/docs ran every code block on the Ibis page against production, from a clean environment and the published package. Two defects are in this package, not in the docs.
1. pip install hotdata-ibis leaves the backend unimportable
Clean Python 3.12 venv, pip install hotdata-ibis (0.5.0), then the documented connect:
con = ibis.hotdata.connect(api_url=…, token=…, workspace_id=…)
ImportError: Failed to import the hotdata backend due to missing dependencies.
Root cause: ibis.backends.sql.compilers.datafusion imports packaging, which neither ibis-framework 12.0.0 nor hotdata-ibis 0.5.0 declares. pip install packaging fixes it.
The missing declaration is arguably upstream in ibis-framework, but as published our documented install → connect path does not work, so declaring packaging here is the fix that helps users now. (F39)
2. Two of the three discovery calls reject the catalog our docs tell you to use
The page documents all three as supported and says "use default as the catalog — that is always the SQL prefix for managed tables":
con.list_catalogs() # works
con.list_databases(catalog="default") # HotdataAPIError: Not Found
# "Connection 'default' not found"
con.list_tables(database=("default", "public")) # same error
list_catalogs() works but returns raw internal ids (conn005jxj6vwkmm3z69csy0topec2) — and feeding those to the other two fails as well, so there is no value that makes them work. Meanwhile get_schema(…, catalog="default", …) and con.table(…, database=("default","public")) both accept default fine, so the inconsistency is within this package.
Either default resolves in list_databases/list_tables like it does in get_schema/table, or list_catalogs() returns values the other two accept. (F40)
Also worth knowing (docs-side, filed in www)
The page asserts twice that "you cannot upload to a table name that was not listed in tables=". con.create_table("undeclared", df, database=(db_id,"public"), overwrite=True) succeeds and creates the table. That's a false claim in the docs, being fixed there — flagging in case the restriction was meant to exist in this package.
Source: Docs vs Production — adversarial docs audit, 2026-08-23, hotdata-ibis 0.5.0 against api.hotdata.dev. F39, F40.
An adversarial audit of hotdata.dev/docs ran every code block on the Ibis page against production, from a clean environment and the published package. Two defects are in this package, not in the docs.
1.
pip install hotdata-ibisleaves the backend unimportableClean Python 3.12 venv,
pip install hotdata-ibis(0.5.0), then the documented connect:Root cause:
ibis.backends.sql.compilers.datafusionimportspackaging, which neitheribis-framework12.0.0 norhotdata-ibis0.5.0 declares.pip install packagingfixes it.The missing declaration is arguably upstream in ibis-framework, but as published our documented install → connect path does not work, so declaring
packaginghere is the fix that helps users now. (F39)2. Two of the three discovery calls reject the catalog our docs tell you to use
The page documents all three as supported and says "use
defaultas the catalog — that is always the SQL prefix for managed tables":list_catalogs()works but returns raw internal ids (conn005jxj6vwkmm3z69csy0topec2) — and feeding those to the other two fails as well, so there is no value that makes them work. Meanwhileget_schema(…, catalog="default", …)andcon.table(…, database=("default","public"))both acceptdefaultfine, so the inconsistency is within this package.Either
defaultresolves inlist_databases/list_tableslike it does inget_schema/table, orlist_catalogs()returns values the other two accept. (F40)Also worth knowing (docs-side, filed in www)
The page asserts twice that "you cannot upload to a table name that was not listed in
tables=".con.create_table("undeclared", df, database=(db_id,"public"), overwrite=True)succeeds and creates the table. That's a false claim in the docs, being fixed there — flagging in case the restriction was meant to exist in this package.Source: Docs vs Production — adversarial docs audit, 2026-08-23, hotdata-ibis 0.5.0 against api.hotdata.dev. F39, F40.