Skip to content

CI: add a bare-install smoke job (pip install ondine, no extras) #189

Closed

Description

@ptimizeroracle

Two bugs shipped in 1.11.0 (both fixed in #188) were invisible to CI purely because every CI job installs the dev environment, never the published package as a user gets it.

Bug Why CI couldn't see it
enrich(polars_df, ...) → ModuleNotFoundError: No module named 'pyarrow' uv sync --all-extras installs pyarrow, so the missing declaration was masked. polars is a core dep; pyarrow is only in parquet/all.
enrich(schema=...) → ValueError: Either dataframe or source_path must be provided test_enrich.py mocks Pipeline.execute, so the broken code path never ran.

Both were caught in under five minutes by doing what a user does:

python -m venv /tmp/v && /tmp/v/bin/pip install --only-binary ondine ondine
/tmp/v/bin/python -c "import ondine, polars as pl; ondine.enrich(pl.DataFrame(...), ...)"

Proposal

Add a CI job that:

  1. Creates a clean venv and installs the built wheel with no extras (--only-binary ondine, no uv sync).
  2. Exercises the public API for real against a cheap provider (or a stub server) — at minimum:
    • ondine.enrich(pandas_df, ...)
    • ondine.enrich(polars_df, ...) ← catches the pyarrow class of bug
    • ondine.enrich(..., schema=Model) ← catches the rebuild class of bug
    • ondine.enrich(csv_path, ...)
  3. Repeats for the [mcp] and [all] extras so extras-only imports are also checked.

The existing Install Profile jobs install extras and only run import ondine — they verify the package imports, not that it works. This job should call the API.

Related: the enrich() unit tests should also grow at least one test that runs a real pipeline end-to-end with a stub LLM client instead of mocking Pipeline.execute, so the loader stage is actually exercised.

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

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions