Skip to content

Releases: Query-farm/vgi-rpc-python

v0.21.0

26 Jun 00:04

Choose a tag to compare

Highlights

Raw-TCP socket transport

New TcpTransport / serve_tcp / tcp_connect — the network analog of the existing Unix-socket transport, speaking the same raw Arrow-IPC framing without the HTTP envelope. Loopback-only by default (127.0.0.1); no auth/TLS, so use HTTP for untrusted networks.

  • run_server --tcp [HOST:]PORT worker flag, emitting a TCP:<host>:<port> discovery line.
  • TransportKind.TCP; workers see ctx.kind == TCP.
  • Cross-language conformance: vgi-rpc-test --tcp and vgi-rpc-conformance --tcp.

Wire/HTTP intermediary helpers

  • Public framing helpers (read_request / write_request / build_error_stream).
  • find_state_token to extract the stream-state continuation token.
  • Intermediary helpers for protocol-version, unary-result, and content-encoding; public __upload_url__ wire contract.
  • HEAD /health so capability discovery doesn't degrade.

Full changelog: v0.20.6...v0.21.0

v0.20.6

22 Jun 18:23

Choose a tag to compare

Ships the aiohttp security bump unblocked by the test-mock migration. No library code changes — the package surface is unchanged from 0.20.5.

Security

  • The external extra now requires aiohttp>=3.14.1, picking up a batch of client-side fixes: CVE-2026-34993, -47265, and the -502xx / -542xx series (11 advisories).

Internal

  • Test suite migrated from aioresponses (unmaintained; broke on aiohttp 3.14's required ClientResponse.stream_writer kwarg) to aiointercept, which is what made lifting the <3.14 cap possible (#22).

v0.20.5

22 Jun 17:46

Choose a tag to compare

Maintenance release rolling up the post-0.20.4 merges. No library code changes — the package surface is unchanged from 0.20.4.

Dependencies

  • cryptography 48.0.0 → 49.0.0 (#17)
  • pywin32 311 → 312 (#18)
  • github-actions group: actions/checkout v7, astral-sh/setup-uv v8.2, codecov/codecov-action v7 (#15)
  • Hold aiohttp <3.14 (aioresponses 0.7.8 is incompatible with 3.14's new ClientResponse.stream_writer kwarg) and add a Dependabot ignore so it isn't re-proposed (#20)

Build / CI

  • Run pydoclint isolated via uvx so its docstring-parser-fork dependency no longer collides with the canonical docstring-parser in the project venv. The collision made the lint gate non-deterministic across unrelated dependency bumps; it is now stable (#21)

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