Notable Changes
Added
- Added experimental
temporalio.workflow.signal_with_start_workflow, backed by
generated system Nexus bindings for
WorkflowService.SignalWithStartWorkflowExecution. - Added OpenAI Agents plugin support for
CustomTooldispatch, including lazy
tool discovery throughdefer_loading.
Changed
- Client connections now use gzip transport-level gRPC compression by default.
Passgrpc_compression=GrpcCompression.NONEtoClient.connector
CloudOperationsClient.connectto disable it.
Breaking Changes
StartWorkflowUpdateWithStartInputnow owns the authoritative
rpc_metadataandrpc_timeoutfields for
OutboundInterceptor.start_update_with_start_workflow. These fields were
removed from the nested update-with-start input objects, so custom
interceptors that accessed them there should read or update the top-level
fields instead.
Fixed
-
Fixed
breakpoint()andpdb.set_trace()inside workflow code when a worker
runs withdebug_mode=TrueorTEMPORAL_DEBUG=1; sandboxed workflows without
debug mode now get a clearer error pointing todebug_mode=True. -
Fixed
start_update_with_start_workflowinterceptor handling so RPC metadata
and timeouts are forwarded to the underlyingexecute_multi_operationcall. -
Fixed OpenAI Agents plugin streamed event serialization when pydantic had not
yet built deferred schemas, and fixed terminal sandbox errors retrying
forever. -
Removed the lazy-connect lock from the per-RPC hot path. It was previously
acquired on every RPC, putting an event-loop-bound primitive on the hot path;
it is now skipped once the client is connected. This reduces the client's
coupling to the event loop it connected on, which can help when reusing a
single long-livedClientacross event loops or threads (e.g. the
dedicated-loop pattern used with gevent/gunicorn and synchronous services).
Note this does not make aClientfully thread- or loop-agnostic; reusing one
long-lived loop is still the recommended pattern.SDK Core
993de3fbdeps: sync api_upstream subtree to temporal-api@6c8bd13 (#1293)d0065e38Rename master to main for API deps (#1309)f57f6f06fix(sdk): no longer expose raw proto for application error category (#1307)40d24ec8bump version (#1317)f1899d23Add gzip compression by default with option to opt-out (#1310)f43520e6Add CHANGELOG and document the update process (#1315)c5a6646eUpdate API Upstream to pull in WIT generation (#1320)
What's Changed
- Add CHANGELOG and document the update process by @cconstable in #1580
- Use ActivitySerializationContext when describing a Standalone Activity by @VegetarianOrc in #1583
- Build streamed OpenAI events before serializing them by @brianstrauch in #1586
- Update core submodule by @tconley1428 in #1590
- AI-249: Support CustomTool in OpenAI Agents plugin tool dispatch by @xumaple in #1570
- 💥 Fix interceptor contract inconsistency for start_update_with_start_workflow by @brucearctor in #1588
- Fix error message for tracer provider initialization by @tconley1428 in #1584
- System Nexus payload handling from WIT by @tconley1428 in #1572
- Gzip compression options by @Sushisource in #1587
- Fix pdb / breakpoint() hang in workflow code by @elidlocke in #1568
- Upgrade PyO3 to 0.29 by @tconley1428 in #1599
- Translate terminal sandbox errors to non-retryable ApplicationError by @xumaple in #1595
- Fix asyncio lock contention in client calls by @Sushisource in #1606
- Bump version to 1.29.0 by @tconley1428 in #1607
New Contributors
- @elidlocke made their first contribution in #1568
Full Changelog: 1.28.0...1.29.0