feat: make GizmoSQL clientless and expose backend services - #141
Open
cofin wants to merge 3 commits into
Open
Conversation
cofin
force-pushed
the
feat/clientless-gizmosql
branch
from
May 25, 2026 16:23
0ac1ea1 to
98d2ac5
Compare
cofin
force-pushed
the
feat/clientless-gizmosql
branch
from
July 21, 2026 17:13
98d2ac5 to
c79733f
Compare
cofin
force-pushed
the
feat/clientless-gizmosql
branch
2 times, most recently
from
July 22, 2026 05:08
94fdda8 to
a790cdc
Compare
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## feat/provider-aware-ci #141 +/- ##
========================================================
Coverage ? 6.14%
========================================================
Files ? 22
Lines ? 1805
Branches ? 135
========================================================
Hits ? 111
Misses ? 1671
Partials ? 23 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
Replace `adbc_driver_flightsql` startup/readiness path with the container-native `gizmosql_client` CLI invoked through `container.exec_run`. The `gizmosql_client` `--password` flag forces an interactive prompt, so the password is plumbed via the `GIZMOSQL_PASSWORD` env var on the exec call instead. Public surface changes: - Remove `gizmosql_connection` fixture and the leaked `_make_connection_kwargs` helper — users now build their own `flightsql.connect(...)` from `gizmosql_service.uri`, `.username`, and `.password`. - Keep `GizmoSQLService` (with its `uri` property) and all configuration fixtures (`gizmosql_image`, `gizmosql_username`, `gizmosql_password`, `xdist_gizmosql_isolation_level`). - Empty the `gizmosql` extra so `pytest-databases[gizmosql]` no longer pulls in `adbc-driver-flightsql` or `pyarrow`. Tests rewritten to drive the service through `service.container.exec_run` and include a regression guard that blocks `adbc_driver_flightsql` at import time. `server`-only xdist isolation preserved (DuckDB backend constraint). Docs updated to show user-owned Flight SQL client wiring.
cofin
force-pushed
the
feat/clientless-gizmosql
branch
from
July 22, 2026 15:56
a790cdc to
2453783
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
adbc_driver_flightsqlstartup and readiness path with the container-nativegizmosql_clientCLI.gizmosql_duckdb_serviceandgizmosql_sqlite_service, each with an explicitDATABASE_BACKENDand a distinct container name.gizmosql_servicebackward compatible by returning the DuckDB-backed service.gizmosql_connectionfixture and leaked_make_connection_kwargshelper; consumers own their Flight SQL client.Clientless contract
The CLI password is passed through
GIZMOSQL_PASSWORDonexec_run, so it is not exposed in the command or persisted in container inspection metadata. Thegizmosqlinstall extra remains empty: neither backend adds a Python client dependency, and readiness for both backends runs through the CLI already shipped in the GizmoSQL image.Behavior
Both backend fixtures can run independently or together in one session. Their image, credentials, TLS behavior, readiness check, xdist server isolation, and teardown share one lifecycle provider. Under
pytest -n 2, each worker receives distinct DuckDB and SQLite containers.Validation
uv run pytest tests/test_gizmosql.py -q— 6 passeduv run ruff check src/pytest_databases/docker/gizmosql.py tests/test_gizmosql.pyuv run ruff format --check src/pytest_databases/docker/gizmosql.py tests/test_gizmosql.pyuv run mypy src/pytest_databases/docker/gizmosql.py tests/test_gizmosql.pyuv run pyright src/pytest_databases/docker/gizmosql.py tests/test_gizmosql.pyCloses #151