Skip to content

[hugin] Port the 7.2.3 to 7.2.5 client surface (second series) - #308

Draft
redknightlois wants to merge 8 commits into
ravendb:v7.2from
redknightlois:draft-hugin.v7.2.5-r2
Draft

[hugin] Port the 7.2.3 to 7.2.5 client surface (second series)#308
redknightlois wants to merge 8 commits into
ravendb:v7.2from
redknightlois:draft-hugin.v7.2.5-r2

Conversation

@redknightlois

@redknightlois redknightlois commented Sep 1, 2026

Copy link
Copy Markdown
Member

This ports what the .NET client (src/Raven.Client) gained between 7.2.3 and 7.2.5 into the Python client, following this client's own conventions. Only the 7.2.3 to 7.2.5 changes are in scope: things the .NET client already had before 7.2.3 that were never ported are left alone, and anything the .NET client marks internal stays out of the public API.

This is a new series that replaces #305 after its review; that PR stays open for the discussion history. One commit per feature, each building and passing its tests on its own:

  • Azure Service Bus queue connection settings
  • Server-wide connection string operations: GET, PUT and DELETE server operations
  • GetConversationMessagesOperation for AI agents, with paging, detail levels and None on 404
  • SSO fields on client certificate metadata and editing
  • disable_checksum_validation on the S3 settings
  • Hub and sink cursors on the pull replication sink task info
  • The CDC Sink client API: add/update operations, configuration types, and the task wired into ongoing tasks and the database record
  • Client version header pinned to 7.2.5; setup.py is left alone as a release chore

Left out on purpose, following the #305 review: the session cluster-transaction change-vector change (no Python mechanism for it) and the conversation cancellation surface (the public .NET API predates 7.2.3).

Produced by hugin's reforge workflow; each commit carries a Reforge-Run trailer.

reforge added 8 commits September 1, 2026 09:51
Adds the AzureServiceBus broker type to the queue connection string, with
its shared-access, Entra ID, and passwordless authentication settings.

The serializer omits the credential members that are not set, which is
what the server expects when it picks the authentication method. The
reference connection-validation helpers stay out: the sibling Azure Queue
Storage and Amazon SQS settings do not carry them either, because
validation runs on the server.

Reforge-Run: 20260901T212227Z-1941916-reforge
Adds put, get and remove operations for connection strings that the server
stores once and copies into every database it creates. A stored entry can
name the databases it must not reach, and the get accepts an optional name
and type filter, named after the database-scoped getter.

Reforge-Run: 20260901T212227Z-1941916-reforge
Reads the messages of an AI agent conversation, with optional timestamp
paging and a detail level, and exposes it as store.ai.get_conversation_messages.
The operation accepts either a conversation id or an options object, which
mirrors the two reference overloads, and tests pin both forms to the same
wire shape.

A missing conversation returns None instead of raising, because the server
answers an unknown conversation id with 404 (RavenDB-24609). The default page
size is the int32 maximum the server expects when a caller asks for every
message.

Reforge-Run: 20260901T212227Z-1941916-reforge
EditClientCertificateOperation.Parameters accepts the SSO server pinning
hashes, the allow-any-SSO-server flag and the SSO identifiers. Each of the
three is written to the request body only when the caller supplies it, so a
partial edit leaves the stored SSO configuration alone; an empty list is a
value and clears the stored one. An SSO identifier omits its domain when it
has none.

The certificate read models bind the new Usage and SSO members the server
writes. Usage is a numeric enum whose member name is the wire value.

Reforge-Run: 20260901T212227Z-1941916-reforge
The S3 settings of remote attachments and of backups accept
disable_checksum_validation, which turns off the checksum the S3 client
sends. An unset value serializes as null, like the sibling flags, and the
server reads null as false.

The backup S3 settings deserializer tolerates missing optional keys,
matching the sibling remote attachment settings.

Reforge-Run: 20260901T212227Z-1941916-reforge
The pull replication sink task info carries the hub and sink cursors the
server now reports.

Reforge-Run: 20260901T212227Z-1941916-reforge
Adds the CDC Sink task configuration (tables, column mappings, embedded and
linked tables, Postgres publication settings), the add and update
operations, and the CdcSink ongoing task type with its task info.

The update operation carries the task id in the query string. The server
applies an update as a delete followed by an add, so it answers with a new
task id and a caller that wants the task afterwards has to read it by name.
Both operations reuse the ETL add and update result types, which already
carry the raft command index and the task id the server returns; the AI
task operations reuse them the same way.

validate() mirrors the checks and the messages of the server side
configuration, so a caller can find a broken mapping before sending it.
Reference surface the target has no home for stays out: the schema and
test-mapping families, the task and process state documents, and the
CdcSinks list of the database record, whose sibling QueueSinks list is not
ported either.

Reforge-Run: 20260901T212227Z-1941916-reforge
The client-version header the server reads comes from this constant. The
package release number in setup.py is a release chore and stays as it is.

Reforge-Run: 20260901T212227Z-1941916-reforge
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