跳到主要内容

Change log

查看 Markdown

This page lists user-visible changes to the Python SDK, newest first; each section covers the changes since the previous release of this component.

1.45​

Released 2026-11-11 as sdk-python/v1.45.0.

Added​

  • WorkerOptions.flow_definition_paths and WorkerOptions.flow_definitions make a Worker upload Flow Definition Graph documents when it starts, so Dex Web can draw its Flows without a definition directory. The Worker uploads only registered Flow types, shares source.path only as a relative path, and keeps starting when the upload fails. FlowDefinitionDocument describes an in-memory document. Requires server-zd 0.1.26 or later. Reference.
  • Client.upload_flow_definitions uploads Flow definitions from a deploy script and returns a FlowDefinitionUploadResult with a FlowDefinitionUploadOutcome for each document. AsyncClient has the same coroutine. Reference.

Breaking​

  • A Step whose Step type contains "-" can no longer start SubFlows. A dash made the generated child Flow ID ambiguous, so two parents could share one child. When such a Step returns a Wait that contains SubFlow.run, the server rejects the result as an invalid Worker response and fails the attempt without retry. The Worker logs a warning first. Default Step types are class names and are not affected. To migrate, change get_step_type to return a Step type without a dash. Reference.

Fixed​

  • The Join documentation no longer recommends reporting a result for a cancelled branch from the cancelling RPC, which could count that branch twice. A cancelled branch never reports, and no other code can safely report for it. Reference.

1.44​

Released 2026-11-10 as sdk-python/v1.44.0.

Added​

  • Join and JoinRound synchronize parallel branches of a Flow. Join.fork starts a round from the split Step and builds the branch and join movements, so the application keeps no branch count or round key. Branches report with end_branch or report_branch_result. The join Step waits with for_all_branches, for_first_branch, or for_branches, and the next round resets the previous one with for_remaining_branches. RPC handlers use fork_with_round_key. Join.channel_map returns the registered ChannelMap, so an RPC can load and read a round's pending results. Reference.

1.43​

Released 2026-11-10 as sdk-python/v1.43.0.

Breaking​

  • Removed Client.trigger_continue_as_new, AsyncClient.trigger_continue_as_new, FlowStatus.CONTINUED_AS_NEW, FlowConfig.continue_as_new_threshold, FlowConfig.continue_as_new_page_size_bytes, and include_continued_as_new from both clients' search_flows methods. Reference.
  • FlowConfig is a dataclass, and the two removed fields were its second and third fields. Every later field moves two positions forward, so a positional FlowConfig call can set the wrong field. Construct FlowConfig with keyword arguments. Reference.
  • Removed WaitForStepCompletionOptions.internal_handler_timeout and WaitForAttributeOptions.internal_handler_timeout. request_id remains accepted but the server does not read it for these waits. Reference.
  • Generated bindings rename FlowExecutionID to FlowRunID and flow_execution_id to flow_run_id. ProtoJSON uses flowRunId. Reference.

1.40​

Released 2026-11-09 as sdk-python/v1.40.0.

Added​

  • FlowConfig.offload_history chooses whether a run offloads its history to object storage. None means True. Set it to False for many short runs that close soon. Set it at start through StartFlowOptions.config_override or SubFlowOptions.config_override. A SubFlow otherwise inherits its parent's value, and update_flow_config rejects it with INVALID_ARGUMENT. It requires server-zd 0.1.23 or later. Reference.

Changed​

  • FlowConfig.delete_expired_history_objects is deprecated. It has no effect, and the SDK no longer sends it. Existing code that sets it still compiles.

1.39​

Released 2026-11-09 as sdk-python/v1.39.0. Patch release sdk-python/v1.39.1 followed the same day.

Added​

  • Action and when_attribute_matches declare an RPC that a person can invoke from Dex Web: pass an Action with a label, a required permission, and a condition as the action argument of @rpc. The condition is optional. Workers send the Flow's Action permission mappings, and start_flow and SubFlow starts record the permissions the initial Attributes make available. This arrived in 1.39.1. Reference.
  • FlowConfig.delete_expired_history_objects controls expired history object deletion at start, on update, and for SubFlows. It requires history offload and server-zd 0.1.22 or later.

Changed​

  • A LoadBlobs request names at most 1,000 entries. The SDK batches larger requests and keeps the input order.

1.38​

Released 2026-11-07 as sdk-python/v1.38.0.

Added​

  • FlowConfig.history_window_events sets about how many of the newest history events a run keeps for history reads and Time Travel. Set it at start, change it with update_flow_config, or override it for a SubFlow. None uses the server's history.windowEvents setting. Dex rejects a value that is not positive or exceeds history.maxWindowEvents with INVALID_ARGUMENT. It requires server-zd 0.1.21 or later. Reference.

Changed​

  • The gRPC receive limit rises from 4 MiB to DEFAULT_GRPC_MAX_MESSAGE_BYTES (32 MiB) on every FlowService and pull stream channel. Set grpc_max_message_bytes on ClientOptions or WorkerOptions to change it.

Fixed​

  • A LoadBlobs request splits in half when its response exceeds a gRPC size limit, so a Worker with an empty blob cache no longer fails on a long Flow. A single blob that does not fit raises the new BlobMessageTooLargeError.

1.37​

Released 2026-11-06 as sdk-python/v1.37.0. Reference: 1.37.x.

Added​

  • FlowServiceTlsOptions and flow_service_tls on Client and Worker options enable verified TLS, with optional extra root CAs and a server-name override. Omitting the option keeps plaintext connections. API reference.

1.35​

Released 2026-11-06 as sdk-python/v1.35.0. Reference: 1.35.x.

Breaking​

  • Workers and the Client’s first call now require server-zd 0.1.17 or later (protocol version 4). Upgrade all server processes before upgrading the SDK. Reference.
  • Worker startup fails when max_concurrent_tasks exceeds matching.maxConcurrentTasksCap (256 by default). Lower the Worker setting or raise the server cap and matching.maxStreams first. Reference.
  • RetryPolicy.total_duration now starts at the first hand-out and only gates scheduling another retry. Set method timeouts to bound running attempts. API reference.
  • A Step with no available or supporting Worker waits durably without consuming a retry. Set a Flow timeout to bound that wait. Reference.
  • A Step attempt interrupted after its hand-out was committed fails with NOT_COMPLETED and consumes a retry. Review retry policies and side effects before upgrading. Reference.

Added​

  • RecoveryErrorInfo.attempt_progress distinguishes a failed Step method that never started from one that may have run. API reference.

Changed​

  • Workers open one execution stream per slot; reserved_rpc_tasks selects RPC-only slots. By default, a Worker with at least two slots reserves one for RPCs. Reference.
  • stop drains running handlers and returns tasks that did not start without consuming a retry. Reference.

Deprecated​

  • idle_streams_per_queue is accepted but ignored, and pull_reserved_rpc_declines always reports zero. Use execution-slot capacity and queue metrics instead. Reference.

1.32​

Released 2026-11-01 as sdk-python/v1.32.0. Reference: 1.32.x.

Added​

  • Generated protocol bindings include AdminService, with DescribeActiveNode and StepDownActiveNode for inspecting and stepping down the active server process. Release notes.

1.30​

Released 2026-10-31 as sdk-python/v1.30.0. Reference: 1.30.x.

Added​

  • Generated protocol bindings add ERROR_SUB_STATUS_ATTRIBUTE_INDEX_CAPACITY_EXCEEDED and ERROR_SUB_STATUS_INDEXED_KEYWORD_TOO_LONG for Attribute index admission errors. Release notes.

1.29​

Released 2026-10-31 as sdk-python/v1.29.0. Reference: 1.29.x.

Added​

  • Generated history responses expose the pruned event range and first retained event ID. Step event contexts also carry related event IDs and the WaitFor completion time. Release notes.
  • Client.get_attributes and AsyncClient.get_attributes read committed Attributes and AttributeMap instances in one request without a Worker. AttributeMap.instance selects an instance, and AttributeValues provides typed result lookup. API reference.

Older releases: GitHub releases.