Repository navigation
Conversation
moetemp
changed the base branch from
moe/up/main
to
moe/up/ts-long-resource-params
October 23, 2026 06:24
This was referenced Oct 23, 2026
moetemp
added a commit
to temporalio/nexgen
that referenced
this pull request
Oct 23, 2026
) ## What changed? This PR adds a `stream-service` sample for Python and TypeScript, with today's output. #272 adds .NET with its fix. It has a `stream` resource built from a ref, `create-stream`, append, read, describe and close, with 64-bit offsets, payloads and durations. Its records are proto-backed, as a stream service's are. Upstream has no stream protos, so the sample has its own small proto in `descriptors/streamsample/v1/`, with checked-in bindings. The samples README has the commands that regenerate them. `build_examples` now loads every `*.bin` under `descriptors/`. ## Why? Later fixes show their effect as a golden diff on this sample. ## How did you test it? The goldens. A TypeScript test sends a full `ReadRecordsRequest` through the converter, so the TypeScript type file can't drift from the proto. ## What comes next These fixes are ready, in this order. Each one adds its shape to this sample, then the fix. - #272: adds .NET, where the `stream` field of the `Stream` class fails with CS0542, then the fix. - [moetemp#52](moetemp#52): Check required resource fields of a response. Adds `create-stream` returning the `stream` resource. - [moetemp#56](moetemp#56): Allow a result record to hold a resource. Adds a `create-stream-result` holder record. - [moetemp#53](moetemp#53): Emit `@nexus.doc` on resources and methods as Python docstrings. - [moetemp#70](moetemp#70): Convert 64-bit resource method values to `Long` for a proto request in TypeScript. Adds 64-bit method parameters. Needs #265. - [moetemp#54](moetemp#54): Generate a Python caller per service over a transport. Turns on the client for the sample. - [moetemp#55](moetemp#55): Add `@nexus.long-poll` to the Python caller. Marks `read-records` as a long poll. - [moetemp#57](moetemp#57): Add Python client classes for resources with methods. - [moetemp#71](moetemp#71): Drop the bare keyword marker from a Python signature with no parameters. Adds a `stream-writer` interface with no endpoint. - [moetemp#60](moetemp#60): Indent the docstrings of Python caller methods. Adds a doc on a writer operation. - [moetemp#69](moetemp#69): Import record types that an endpoint-less Python client uses in unpacked parameters. Adds `open-writer`. - [moetemp#72](moetemp#72): Plan proto unsigned integers as unsigned. Adds a `uint64` writer id. - [moetemp#73](moetemp#73): Build a returned proto-wire resource in an endpoint-less TypeScript client. Makes `open-writer` return the `writer` resource. #262 adds a `status` enum to the holder record once it merges.
moetemp
force-pushed
the
moe/up/python-client
branch
from
October 25, 2026 22:19
3b1fc80 to
d38df9d
Compare
moetemp
force-pushed
the
moe/up/ts-long-resource-params
branch
from
October 25, 2026 22:19
9567a26 to
8321346
Compare
moetemp
marked this pull request as ready for review
October 25, 2026 22:20
moetemp
force-pushed
the
moe/up/ts-long-resource-params
branch
from
October 26, 2026 20:56
8321346 to
b7daf25
Compare
moetemp
force-pushed
the
moe/up/python-client
branch
2 times, most recently
from
October 26, 2026 22:34
2e720ad to
fb988c7
Compare
moetemp
force-pushed
the
moe/up/ts-long-resource-params
branch
from
October 26, 2026 22:34
b7daf25 to
f518ff8
Compare
This was referenced Oct 26, 2026
moetemp
force-pushed
the
moe/up/ts-long-resource-params
branch
from
October 26, 2026 22:37
f518ff8 to
7046833
Compare
moetemp
force-pushed
the
moe/up/python-client
branch
3 times, most recently
from
October 27, 2026 01:06
a13f250 to
c19f0c9
Compare
moetemp
force-pushed
the
moe/up/ts-long-resource-params
branch
2 times, most recently
from
October 27, 2026 09:08
2056cfc to
7227a0c
Compare
moetemp
force-pushed
the
moe/up/python-client
branch
from
October 27, 2026 09:08
c19f0c9 to
d4962e0
Compare
moetemp
force-pushed
the
moe/up/python-client
branch
from
October 27, 2026 18:07
d4962e0 to
551d4a5
Compare
moetemp
force-pushed
the
moe/up/ts-long-resource-params
branch
2 times, most recently
from
October 27, 2026 19:00
1600a86 to
e87464a
Compare
moetemp
force-pushed
the
moe/up/python-client
branch
from
October 27, 2026 19:00
551d4a5 to
814da54
Compare
The client target renders the workflow target's operations as methods of a generated client extension. A client class inherits it and starts each operation through _create_nexus_client, so the generated API needs no transport. For now it's Python and System Nexus only.
moetemp
force-pushed
the
moe/up/ts-long-resource-params
branch
from
October 28, 2026 00:24
e87464a to
94dd887
Compare
moetemp
force-pushed
the
moe/up/python-client
branch
from
October 28, 2026 00:24
814da54 to
485316a
Compare
This was referenced Oct 28, 2026
Owner
Author
|
Closing this. Replaced by temporalio#324. |
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.
What changed?
This PR adds
--targets, withworkflow(the default) andclient. The client target writesclient.py, the workflow API for code outside a Workflow.client.pyhas a<Service>ClientExtensionper service, with the operation code of the workflow target as methods. So only the invocation differs._create_nexus_client, for example with a standalone Nexus operation. There's no transport.create_streamreturns aStreamwith methods. A service with no endpoint passesendpoint=None.@nexus.sourcefield.temporalio/nexgen#301tracks taking such a field as a parameter instead.Depends on
temporalio/nexgen#308,#310,#311,#297,#296and#312, which its base holds.Part of the Brook review series.
Why?
Code outside a Workflow needs the same API as Workflow code, on the Temporal client and with no transport to write. Brook uses it from Activities and clients.
How did you test it?
The
stream-servicesample, Brook's WIT, generates both targets for Python. Thestream-writersample asks for the client target only, as Brook does. Its Python output comes with #71. A sample test drivesclient.pythrough a fake client, and rejection fixtures cover the refused cases. It's one commit, since today's generator ignores the newtargetskey and has no output to compare.cargo validatepasses andcargo clippyadds no warnings.