Skip to content

Releases: temporalio/sdk-python

1.22.0

03 Feb 21:01
f36ceb4

Choose a tag to compare

Highlights

  • Deployment-based Worker Versioning APIs are in General Availability.
  • Environment Configuration is in General Availability.

What's Changed

Bug Fixes

Dependency Updates

sdk-core changes

2025-12-18 - 12bc359b - Fix wf_task_replay_latency metric recording for non-replay tasks (temporalio/sdk-core#1083)
2026-01-06 - 66ddab4b - Downgrade worker heartbeat log (temporalio/sdk-core#1088)
2026-01-08 - cc1ed609 - Clarifying comment for worker heartbeating's use of latency metric (temporalio/sdk-core#1089)
2026-01-09 - d8a2bf19 - Always send shutdown_worker RPC, fix WorkerStatus state when shutting down worker (temporalio/sdk-core#1082)
2026-01-12 - 372b2708 - Fix bug where we count first WFT as sticky cache hit (temporalio/sdk-core#1091)
2026-01-13 - d104a77d - Update api_upstream to v1.60.0 (temporalio/sdk-core#1090)
2026-01-15 - 5c9bcd10 - Add Request Deadline as timestamp to NexusTask (temporalio/sdk-core#1094)
2026-01-23 - 22cd04bc - Update upstream_api to v1.61.0 (temporalio/sdk-core#1100)
2026-01-23 - 9dedad11 - Update Worker validate to allow SDKs to get namespace limit information (temporalio/sdk-core#1102)

New Contributors

Full Changelog: 1.21.1...1.22.0

1.21.1

19 Dec 22:11
f0bd341

Choose a tag to compare

PyPI

Bug Fixes

  • Dynamic handlers now support typing.Sequence and collections.abc.Sequence for their third argument.
  • Add compatibility with OpenAI Agents SDK 0.6.4.

Specific Changes

2025-12-19 - 772050e - Add backward compatibility for dynamic handler signatures (#1258) 2025-12-19 - f0bd341 - OpenAI - Fix generics is instance (#1261)

1.21.0

18 Dec 21:27
44770ff

Choose a tag to compare

PyPI

TLS Automatically Enabled When API Key Provided

When creating a Client, specifying the api_key option will now automatically enable TLS. Users that wish to use an API Key without TLS enabled must explicitly pass tls=False when creating their client. See Client.connect for a detailed description of configuration options and behavior.

Highlights

  • Core was upgraded from 45b1d7e to b5a473d.
  • Advanced users may specify the environment variable TEMPORAL_POLL_SHUTDOWN_INTERRUPT_WAIT_MS to specify a wait time before interrupting polls during shutdown.
  • Loosened dependency ceiling for OpenAI Agents SDK to <= 0.7

Bug Fixes

  • Client.config() and Worker.config() now properly return a copy of the config passed during creation instead of the "active" config that may have been modified. Users that wish to get a copy of the config currently in use may pass active_config=True to both methods.

Breaking changes

  • TLS will automatically be enabled when api_key is specified.
  • The type for nexus_task_exectuor option for Worker was narrowed from concurrent.futures.Executor to concurrent.futures.ThreadPoolExecutor.
  • The unused arguments static_summary and static_details options in Client.create_schedule have been removed.
  • Dynamic Handlers now use collections.abc.Sequence instead of typing.Sequence for their third argument.
  • Types that were deprecated as of Python 3.9 have been updated to use the recommended alternative for Python 3.10+.

Specific Changes

2025-12-02 - 27096aa - Store initial configuration and provide it in config() by default (#1226)
2025-12-02 - cc19379 - 💥 Enable TLS if api key provided (#1229)
2025-12-03 - 90dda94 - Add retrying of workflow validation errors only on python 3.10 (#1223)
2025-12-03 - a48cece - Support RequestIdReference in Nexus Links (#1228)
2025-12-04 - 3400d8c - Remove file exclusions for pyright (#1235)
2025-12-04 - 96e2dab - Doc fixes (#1241)
2025-12-08 - 4439675 - Update for 3.10 best practices (#1236)
2025-12-08 - 6a3385b - upload nightly tps metrics to s3 (#1242)
2025-12-08 - 89fb17f - 💥 Nexus MetricMeter Support (#1233)
2025-12-09 - fd17cdf - 💥 Remove unused metadata from client.create_schedule. Ensure WorkflowHistoryEventAsyncIterator.fetch_next_page uses the provided page_size override when called (#1247)
2025-12-10 - 8ac0a9e - Install built wheel directly in build-binaries (#1245)
2025-12-10 - b0adaae - Nexus interceptors (#1218)
2025-12-16 - 7cfc65b - Update core (#1253)
2025-12-17 - c5eb6e2 - Replace WorkflowIdReusePolicy.TerminateExisting by WorkflowIdConflictPolicy (#1243)
2025-12-18 - 1f9e315 - Update dependency ceiling for OpenAI agents (#1256)

1.20.0

25 Nov 21:42
dbcbc08

Choose a tag to compare

PyPI

Worker Heartbeating (Public Preview)

This release adds a new feature called Worker Heartbeating. This feature spins up a single nexus-only worker per Client/Namespace/Task Queue in the background and periodically sends some basic metrics over to server for all of the workers registered on the same Client/Namespace/Task Queue.

Server version 1.29.1 and newer supports this feature. This feature will be enabled by default, although this currently requires a server dynamic config flag, --dynamic-config-value frontend.WorkerHeartbeatsEnabled=true to enable. Currently, the only way to interact with this new data is to also enable the flag --dynamic-config-value frontend.ListWorkersEnabled=true, then use CLI commands temporal worker list and temporal worker describe to query the data. If heartbeating is enabled with a server version older or with the config flag off, a single warning log Worker heartbeating configured for runtime, but server version does not support it. on worker startup will emit.

Highlights

  • Core was upgraded from 682d441 to 45b1d7e.
  • Runtime use across forks now eagerly fails, making it fail in a more obvious way. Specifically, using a Runtime from a different process ID will now eagerly fail.

Breaking changes

  • Core crate names have changed, see temporalio/sdk-core#1034 for more details. If users are directly referencing these crate names, like for setting log levels, they will need to be updated to the new names.

Specific Changes

2025-11-17 - 5d1630d - Nexus task cancellation (#1204)
2025-11-17 - ceb7058 - Prevent Runtime use over forks (#1208)
2025-11-21 - 3fd1c7e - Fix up plugin readme (#1211)
2025-11-24 - 6d2924b - Add Summary to Nexus operations (#1219)
2025-11-24 - 77f2346 - use sys.stdlib_module_names in restrictions. Move dynamic import warning to only apply to non-passed through modules (#1222)
2025-11-25 - b5001f9 - Update Core, configure worker types, send plugin names to Core (#1157)

1.19.0

13 Nov 22:38
11e8650

Choose a tag to compare

Sandbox Importing Changes

Modules imported after workflows have been loaded into the sandbox now produce a warning message by default. See the Import Notification Policy docs for more info and customization options.

OpenAI Agents Changes

  • Add new upper bound of version 0.5.0 for openai-agents

Breaking Changes

  • Python 3.9 support has been removed now that it has reached end of life status.
  • Plugin interfaces have been updated to use invocation provided callables instead of initializers.
  • MCPServerProviders now require a name argument.
  • TestModel and TestModelProvider have been moved from temporalio.contrib.openai_agents to temporalio.contrib.openai_agents.test

Specific Changes

2025-09-30 - 4a70f3d - Update version to 1.18.1 (#1135)
2025-10-01 - a31886d - Serialization context (#1102)
2025-10-02 - 4f08626 - Use type in start/execute activity/workflow to address Pyright Strict mode error (#1137)
2025-10-06 - 26e2e61 - Generate RPC calls in Bridge Client (#1123)
2025-10-06 - 5ca4861 - Provide option to disable activity registration (#1140)
2025-10-07 - 42fe382 - Flaky session test (#1141)
2025-10-07 - 5e93e63 - 💥 Plugin Overhaul (#1139)
2025-10-07 - d27bb11 - Move visitor, bridge client generation, and formatting to poe tasks (#1142)
2025-10-07 - e4df5e7 - Add googleapis-common-protos to fix tests in build-binaries workflow (#1143)
2025-10-09 - cde3427 - Use macOS 15 intel runners (#1148)
2025-10-14 - 162cff7 - 💥 Allow arguments to be provided to MCP Server creation (#1147)
2025-10-14 - 70deb94 - Replace Proto modules with the python path (#1156)
2025-10-14 - 788d391 - Remove experimental notices for worker tuners (#1152)
2025-10-16 - 2ad41ab - Replace tctl references with Temporal CLI (#1165)
2025-10-16 - 2efd9a7 - Add start_update_with_start_workflow to Otel Interceptor (#1150)
2025-10-20 - 4fe685a - Allow h2 error message (#1170)
2025-10-20 - 778fc9a - Support python 3.14 and deprecate python 3.9 (#885)
2025-10-20 - f03ddc2 - Add programming language classifiers to fix badge on next publish (#1151)
2025-10-22 - 5994a45 - Avoid token detaching from different context (#1153)
2025-10-22 - c8cbfe0 - Modify code comment for Worker build_id field #1160 (#1163)
2025-10-24 - 7f794d0 - Update license in pyproject.toml (#1175)
2025-10-24 - 988b12c - Allow openai 0.4, update lock to use it (#1182)
2025-10-25 - 27903f7 - Add nightly throughput stress (#1173)
2025-10-27 - 231cc67 - Adds proper failure decoding in workflow activation (#1192)
2025-10-27 - 630a031 - Match openai logic to retry on >= 500 not == 500 (#1181)
2025-10-27 - 8f754b4 - Opentelemetry baggage propagation fix (#1174)
2025-10-27 - ba3d50f - Add a test for split worker scenario (#1193)
2025-10-27 - e39e8f2 - Add option to run models as local activities (#1183)
2025-10-28 - 0eb96eb - Sandbox importing (#1187)
2025-10-28 - c3448cc - Skip flaky test on versions with importer bug (#1195)
2025-10-29 - 1b70f07 - Tps nightly small improvements (#1200)
2025-10-30 - 35347b9 - Fix: Resolve TypeError in value_to_type on Python 3.13 (issue #1188) (#1189)
2025-10-30 - 5f24792 - 💥 Expose agent testing utils (#1164)
2025-10-30 - 660ac2b - VLN-492: Set explicit permissions for GitHub Actions workflows (#1199)
2025-10-30 - a08250a - refactor: use classmethod in factory methods (#1179)
2025-11-06 - 4156856 - fix: typo in time sandboxed utilities (#1205)
2025-11-06 - e543e8a - fix: typed search contains should work for falsy values (#1206)

1.18.2

27 Oct 19:25

Choose a tag to compare

PyPI

Bug fixes

  • Ensure cause fields of Failure protos are encoded with user codecs.

Specific Changes

2025-10-27 - e4969c0 - Adds proper failure decoding in workflow activation (#1192)

Full Changelog: 1.18.1...1.18.2

1.14.2

23 Oct 16:25

Choose a tag to compare

PyPI

Bug fixes

  • Pin nexus-rpc version to prevent accidental upgrade to a breaking version.

Specific Changes

2025-10-23 - 988ad10 - Lock nexus-rpc to 1.1.0

Full Changelog: 1.14.1...1.14.2

1.18.1

30 Sep 15:01
4a70f3d

Choose a tag to compare

PyPI

Bug fixes

  • Search attributes on child workflows would fail when using a payload codec
  • Looping agent handoffs would try to use the original model outside an activity

Specific Changes

2025-09-24 - 2f04a16 - Fix flaky test: test_workflow_return_is_honored_when_it_precedes_signal_completion_command (#1115)
2025-09-24 - 6dd59dd - Fix flaky test: test_workflow_patch_memoized (#1114)
2025-09-25 - fd51efa - Fix model replacement on looping handoffs (#1122)
2025-09-29 - 02322ad - pytest and pydoctor QOL improvements (#1124)
2025-09-29 - 1afaa44 - Fix flaky test: test_workflow_cancel_activity (#1119)
2025-09-29 - 47781f7 - Fix Flaky Test: test_custom_slot_supplier (#1126)
2025-09-29 - 4e9cbab - Fix search attribute skipping on protos which don't use the SearchAttributes message type (#1131)
2025-09-29 - e92514a - Extend timeout on test_session execution (#1128)
2025-09-29 - ed1f6ca - Expose strict_json_schema in activity_as_tool (#1094)

Full Changelog: 1.18.0...1.18.1

1.18.0

19 Sep 23:41
3fe7e42

Choose a tag to compare

PyPI

OpenAI Agents Changes

  • Support and new lower bound of version 0.3.0 for openai-agents
  • Workflow failure exceptions will now correctly fail the workflow from inside the Runner
  • Expanded MCP support

Breaking Changes

  • The encode_failure method on PayloadConverter is no longer called in all cases it once was, using encode_payload instead. This only affects custom PayloadConverter implementations which overload encode_failure to work differently from encode_payload
  • The advanced WorkerTuner.create_composite has a new required field: nexus_supplier
  • Only enable native roots if CA override not specified - see temporalio/sdk-core#1007 in sdk-core

Specific Changes

2025-09-02 - 3f7bd33 - Fix build binaries (#1074)
2025-09-03 - 42135f0 - Delete unused helper (#710)
2025-09-03 - 70e5bea - Fix nexus cancellation wait completed test (#1073)
2025-09-03 - a004faa - Python support for activity reset (#1065)
2025-09-03 - a3c5370 - Bump tracing-subscriber from 0.3.19 to 0.3.20 in /temporalio/bridge (#1068)
2025-09-03 - a46a742 - Fix code sample alignment & trim trailing whitespace (#1038)
2025-09-03 - bef76a6 - Even more convenient proto generation (#1039)
2025-09-03 - c643e8a - Tweak .result() doc (#706)
2025-09-03 - c8b0b78 - Reraise workflow failure errors from OpenAI's UserError (#1060)
2025-09-04 - 44412ae - Expose Last Completion Result and Previous Run Failure (#1067)
2025-09-04 - 5e9b2ba - Minor edits and code cleanup (#609)
2025-09-04 - 7be26da - Add a test for output type coercion (#1076)
2025-09-04 - c3426ce - Fix return type of workflow.wait (#650)
2025-09-04 - e92f391 - Add Summary to LocalActivityConfig and apis (#1061)
2025-09-08 - 9372d47 - Fix openai plugin bug (#1083)
2025-09-09 - 30a6b8d - Only set payload converter, fail if already set (#1086)
2025-09-09 - 44f0c42 - Added retry policy to activity info (#1055)
2025-09-10 - 101d89d - Don't set error status on otel spans for benign exceptions (#1085)
2025-09-10 - 634c5ec - 💥 Add generic payload visitor for WorkflowActivation[Completion] (#1075)
2025-09-10 - 706c89b - Changes to adapt to openai version 0.2.11 (#1092)
2025-09-11 - e782160 - uv.lock (#1096)
2025-09-12 - 9d70d44 - Add support for gRPC binary metadata values (#1070)
2025-09-12 - ce8dc4a - Remove validatoriterator workarounds (#1046)
2025-09-13 - 84b184f - Nexus worker concurrency control (#1066)
2025-09-16 - 2a2b83b - Update protobuf (#1082)
2025-09-18 - 0e1fa4f - Make env config TLS disabled field optional (#1105)
2025-09-19 - 7605619 - Rename mcp_servers to mcp_server_providers (#1110)
2025-09-19 - 8c4e2c8 - MCP server support (#1021)

1.17.0

03 Sep 01:29
85c47f7

Choose a tag to compare

PyPI

Nexus features

  • Nexus operation handlers can now use id_conflict_policy=WorkflowIDConflictPolicy.USE_EXISTING so that multiple callers "attach" to the same workflow.
  • Correct handling of WorkflowAlreadyStartedError

Specific Changes

2025-08-25 - a9c71aa - Support multiple nexus callers attaching to same workflow (#1051)
2025-08-26 - 2affa25 - Python Nexus convert workflow start errors to Nexus errors (#1052)
2025-08-27 - 229fe37 - Fix a few typos in plugin readme (#1062)
2025-08-28 - 7f228d8 - Test workflow outbound nexus interception (#1064)
2025-08-29 - bb90aab - Don't fail on newtype string dict keys (#1059)
2025-09-02 - 251084d - Fix nexus cancellation type test flake (#1057)
2025-09-02 - 85c47f7 - Bump version for release (#1069)
2025-09-02 - 8bb0b80 - Changed openai-agents dependency to <=0.2.9, upgraded uv.lock (#1072)