Skip to content

Release Python SDK 0.48.0 for VGI protocol v3 - #98

Merged
rustyconover merged 70 commits into
mainfrom
release/vgi-v3-0.48.0
Oct 29, 2026
Merged

rustyconover merged 70 commits into
mainfrom
release/vgi-v3-0.48.0

Conversation

@rustyconover

Copy link
Copy Markdown
Contributor

Publishes the Python SDK for the successor VGI wire contract, vgi.v3 / 3.0.0.

  • Canonical catalog metadata now covers nested schema paths, nullable default schemas, column expressions/comments/tags, macro overload families, typed constraints and indexes, dependencies, and view/security metadata.
  • Adds typed prepared-query contracts, explicit statements through existing query calls, structured scalar projection negotiation, and bind-scoped scan repeatability.
  • Requires published vgi-rpc>=0.52.3 for complete outer IPC framing. Includes the one-shot writable-scan continuation fix.
  • Keeps the existing Arrow C++ generator as the default and adds an explicit Nanoarrow backend for the DuckDB 2.0 adapter. Nested Go schema output now reproduces gofmt without changing wire shapes or hashes.
  • Completes strict typing for the new protocol tests and reference providers, preserving malformed-input and absent-object tests.

Compatibility: requires a native VGI build that speaks vgi.v3 / 3.0.0; older vgi.v2 extensions are incompatible. The protocol is qualified with the DuckDB 1.5 adapter and the DuckDB 2.0/Nanoarrow candidate. Automatic whole-query pushdown remains separate adapter work.

Validation: Ruff, strict mypy for runtime and tests, package builds and metadata checks passed. The full Python suite qualified 4,609 passing tests with 192 expected/environment skips; four initial failures were resolved by one stub-only cast correction and an exact Rust checkout path, then targeted tests passed. Existing full native SDK language matrices and canonical HTTP qualification cover the runtime changes.

The core wheel continues to bundle import-only fixture modules. The separate vgi-fixtures wheel is built and checked, while its PyPI publication remains disabled because that project has not been provisioned.

Remove the proposed user/session pushdown controls. Reuse ATTACH offer/selection and per-query eligibility/preparation. Documentation only; EC2 inventory and all 11 manifest tests passed.
EC2 Linux ARM64 diagnostic configure passes at audited e1784fa42310. All107 native C++ sources attempted:53compile/54fail; generated describe.c also compiles. Runtime and final linking remain unqualified. Runner lint/isolation guards and11manifest tests pass. Existing1.5 engine and build remain unchanged.
rustyconover and others added 9 commits October 28, 2026 12:10
The transactor's client and server speak over AF_UNIX, which the client
already treats as POSIX-only. These tests opened an AF_UNIX listener
directly and failed on the Windows CI legs (Python 3.13 and 3.14).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- check_duckdb2_manifest: hash LF-normalized audit bytes, so a CRLF
  checkout (or a fixture written with write_text on Windows) matches the
  manifest digest. LF files hash exactly as before.
- test_demo_startup_rejects_an_occupied_port: skip on Windows. waitress
  sets SO_REUSEADDR, which on Windows lets a second listener bind an
  occupied port, so the child really does bind and become ready.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
pytest copies the test id into PYTEST_CURRENT_TEST. With the 32 KiB+
token value as its id, setup and teardown raised 'the environment
variable is longer than 32767 characters' on Windows, which also cut the
CI log off at the ERRORS header.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@rustyconover
rustyconover merged commit bdbb51f into main Oct 29, 2026
13 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant