Skip to content

Releases: Query-farm/vgi-rpc-python

v0.20.4

18 Jun 16:06

Choose a tag to compare

Fix: shared-memory request-batch resolution

Fixes a cross-language shm transport bug where a client (the C++ vgi extension) routes a large single-row request batch through the shm side channel: the worker previously only resolved external-location pointers, so such requests tripped Expected 1 row in request batch, got 0 (seen on accumulate/* and table_buffering/* over shm).

  • _read_request now resolves shm-pointer request batches (static segment, connection-cached segment, or one attached from the request's own metadata).
  • New per-connection _ConnectionShm cache: the client names its segment once and reuses it for later offset-only batches; the worker attaches on first sight and holds it for the connection lifetime.
  • Responses route through shm only for exchanges the client signalled as shm (the C++ client resolves shm responses only for table_buffering_/aggregate methods), so inline control responses (bind, catalog_, transaction_*) are no longer wrongly shm-routed.

Includes a cross-language regression test.

🤖 Generated with Claude Code

v0.20.3

16 Jun 15:21

Choose a tag to compare

Hypothesis property-based tests (test-only)

Adds property-based testing infrastructure (dev-only hypothesis dependency). No library code changes — the published wheel is functionally identical to v0.20.2.

  • Round-trip coverage (tests/test_property_roundtrip.py): auto-discovers every ArrowSerializableDataclass subclass (51 today) and asserts deserialize(serialize(x)) == x, building a strategy per class from its annotations + resolved ARROW_SCHEMA so integer widths, decimal scale, and temporal units are respected. New dataclasses are covered automatically; unmodelled field shapes skip with a reason.
  • shm allocator stateful machine (tests/test_property_shm.py): a RuleBasedStateMachine drives random allocate/free sequences against the first-fit ShmAllocator plus a Python model, asserting the safety invariants every step — no overlap, in-bounds, sorted, header count consistent, and "allocate returns None only when no gap fits."

Both run in ~2.5s at committed settings and pass mypy strict + ruff.

Full diff: v0.20.2...v0.20.3

v0.20.2

16 Jun 14:41

Choose a tag to compare

Zero-suppression pydoclint gate

Every previously-frozen docstring violation is now fixed, so the pydoclint gate runs fully clean — no baseline, no per-code suppressions. New violations fail CI immediately.

Docstrings completed

  • DOC101/103Args: added to 17 private helpers, dunders, and exception __init__s.
  • DOC201Returns: added to 16 value-returning functions/methods, including the Stream client-side stubs and conformance Protocol producers.
  • DOC602/603/606Message ClassVar constants documented in the class docstring, data fields moved to __init__ Args:; HttpTransientError.__init__ documented.
  • DOC304WorkerPool constructor docs moved from the class docstring to __init__.

Config

  • Enabled allow_init_docstring (validate __init__ Args: on the method), matching vgi-python's current config.
  • Removed the baseline and the non-functional ignore key (pydoclint 0.8.x has no per-code ignore).

No public API changes — docstrings, annotations, and lint config only.

Full diff: v0.20.1...v0.20.2

v0.20.1

16 Jun 05:41

Choose a tag to compare

Tooling: pydoclint docstring gate

Adopts pydoclint with the same Google-style configuration as vgi-python, enforcing that documented arguments/attributes stay in sync with the code. Now runs in the CI lint job and is step 3 of the pre-commit checklist.

Docstring fixes (reviewed, not blindly frozen)

  • Corrected genuine drift in HttpServerCapabilities, RpcMethodInfo, and ServiceDescription (missing / mis-ordered attributes).
  • Documented Args on the public surface: RpcServer.serve_one, StreamSession.exchange, ShmAllocator.free, OutputCollector.merge_data_metadata, and the fmt_* debug helpers.
  • Added class-level annotations to HttpTransientError (status_code / retry_after), resolving the attribute mismatch and improving type visibility.

No public API changes — docstrings, annotations, and dev tooling only.

Full diff: v0.20.0...v0.20.1

v0.20.0

11 Jun 18:31

Choose a tag to compare

Full Changelog: v0.19.1...v0.20.0

v0.19.1

03 Jun 01:40

Choose a tag to compare

Full Changelog: v0.19.0...v0.19.1

v0.19.0

02 Jun 23:14

Choose a tag to compare

Full Changelog: v0.18.3...v0.19.0

v0.18.3

21 May 19:52

Choose a tag to compare

Add serve_named_pipe — Windows named-pipe RPC transport for the launch:/unix:// rendezvous (CPython has no AF_UNIX on Windows). run_server routes --unix to it on win32 with the PIPE: discovery prefix. Adds pywin32 as a Windows-only dependency.

v0.18.2

21 May 18:43

Choose a tag to compare

What's changed

Maintenance release: dependency security patches and CI runtime upgrades. No library API or behavior changes.

Security (Dependabot)

  • Bump idna 3.11 → 3.15 — fixes a bypass of the CVE-2024-3651 fix where specially crafted inputs to idna.encode() could slip through.
  • Bump pymdown-extensions 10.21.2 → 10.21.3 — fixes a regression in pymdownx.snippets that reintroduced a sibling-prefix path-traversal bypass despite restrict_base_path.

CI / workflows

  • Upgrade GitHub Actions to Node 24-compatible runtimes: actions/checkout@v5, astral-sh/setup-uv@v6, actions/attest-build-provenance@v4.

🤖 Generated with Claude Code

v0.18.1

21 May 18:34

Choose a tag to compare

What's changed since v0.17.1

Application protocol_version enforcement (0.18.0)

  • Protocols declaring protocol_version (a ClassVar[str], canonical semver) now have it enforced per-request at the dispatch boundary. The client sends vgi_rpc.protocol_version in custom metadata on every call; the server raises ProtocolVersionError on an exact major+minor mismatch (patch ignored).
  • __describe__ is exempt so a mismatched client can still introspect to discover the server's version.
  • Enforcement applies on both pipe and HTTP dispatch paths, with conformance coverage.

CLI forwards protocol_version (0.18.1)

  • The vgi-rpc CLI now forwards protocol_version on every call.

Conformance / platform

  • Skip http_externalize_always producer-error test on Windows (fixture-level skip).

🤖 Generated with Claude Code