Skip to content

bug: install leaves the backend unimportable; list_databases/list_tables reject the "default" catalog #53

Description

@zfarrell

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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions