Temporalio

Latest version: v1.8.0

Safety actively analyzes 688600 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 2 of 4

1.4.0

Get from [PyPI](https://pypi.org/project/temporalio/)

Highlights

Typed Search Attributes

Previously, search attributes were untyped dictionaries with string keys and list values. This causes ambiguity on what types a search attribute key represents and leads to errors. Also, the way search attributes were created or upserted allowed mistakes to occur and was not clear to the server exactly what was expected.

Among other classes, `temporalio.common.TypedSearchAttributes` and `temporalio.common.SearchAttributeKey` have been added. Search attributes are now best used by creating a global `SearchAttributeKey` (e.g. `SearchAttributeKey.for_int("my-key")`) and then referencing that key when getting or mutating search attributes. The `TypedSearchAttributes` collection (and `workflow.typed_search_attributes()`) should now be used when creating/accessing search attributes or a warning will emitted. Users should use the keys when accessing the collection or call `value_set` or `value_unset` on them to build update objects to pass to `temporalio.workflow.upsert_search_attributes` when upserting.

Advanced Metrics Support

Previously, metrics were generated and exposed from our Core layer in a way that made them neither reusable nor exportable in a flexible way. We have now both exposed the ability to record metrics via Core and to received buffered metrics from Core.

To record metrics via Core, we have exposed a `temporalio.common.MetricMeter` via `temporalio.activity.metric_meter()`, `temporalio.workflow.metric_meter()`, and `temporalio.runtime.Runtime.metric_meter`. This meter provides a limited interface to generate metrics. It is not meant to abstract everything one can do with a metric system and users are still encouraged to use their own metrics libraries as needed. The workflow metric meter is built to skip recording meters during replay.

To configure metrics in the SDK, a new runtime must be created with telemetry config. To capture metrics emitted by Core, `temporalio.runtime.TelemetryConfig.metrics` now accepts a `temporalio.runtime.MetricBuffer` instance. That same instance must then be used to call `retrieve_updates` on repeatedly and frequently to get metrics coming out of Core. These come as raw events that can then filtered and/or sent to any other metrics system of choice.

Log Forwarding from Core (experimental)

To configure Core logging in the SDK, a new runtime must be created with telemetry config. Previously, Core logs would be sent to the console which wasn't always desirable. Now, the `temporalio.runtime.LoggingConfig.forwarding` field can be set with a `temporalio.runtime.LogForwardingConfig` class which accepts a `logging.Logger` to send core logs to. This is currently experimental while we gather feedback.

Several Minor Additions

* `temporalio.workflow.Info.get_current_history_size()` added to get history size (`get_current_history_length()` was already present)
* `temporalio.workflow.Info.is_continue_as_new_suggested()` added to know whether server has suggested to continue as new
* Client keep alive enabled by default (30s interval, 15s timeout), configurable via `keep_alive_config` when connecting
* Added `start_delay` to `temporalio.client.Client.start_workflow` and `execute_workflow` to support delaying a workflow start
* Added experimental support for [workflow update](https://docs.temporal.io/workflows#update) which is only available in bleeding edge open source server environments

💥 BREAKING CHANGES

`ScheduleActionStartWorkflow.search_attributes` replaced with `ScheduleActionStartWorkflow.typed_search_attributes`

The rarely used `ScheduleActionStartWorkflow.search_attributes` has been replaced by `ScheduleActionStartWorkflow.typed_search_attributes` since that object is used in both directions and we can't determine user intent. Users using the old field name in either direction will see an exception immediately on client side (i.e. no behavior changes or accidental misuse). We also added an `untyped_search_attributes` field to this class to let untyped ones stay present on update.

Removed `temporalio.runtime.TelemetryConfig.tracing`

`temporalio.runtime.TelemetryConfig.tracing` and its associated class have been removed. This was not general purpose tracing, this was advanced tracing for debugging internal Core logc only and should not have been used by any users. All user-facing tracing remains untouched.

Specific Changes

2023-08-01 - 393e5c8 - Provide Span.Kind for TracingInterceptor (356)
2023-08-02 - 24fea4c - Expose history size and continue-as-new-suggested (361)
2023-08-02 - 63f63ae - Upgrade grcpio to 1.53.0 (359)
2023-08-07 - 59fbccf - Fix interceptors in testing environment (364)
2023-08-16 - 31358d1 - Add ignore_unknown_fields as an argument to JSONProtoPayloadConverter (365)
2023-08-24 - 40daaaa - Wait for activity completions on worker shutdown (370)
2023-08-31 - aa829d3 - Update core/tonic, update metric options, remove core tracing (380)
2023-09-25 - 3fade95 - Custom metric support (384)
2023-09-28 - d5edb71 - Fix logging of error on activation failure (389)
2023-10-05 - d03f356 - Buffered metrics (391)
2023-10-06 - ded3747 - Encourage threaded activities, warn when max_workers too low, and other small changes (387)
2023-10-09 - 00878ad - Client keep alive support (396)
2023-10-24 - 4242dfb - README updates and CI fixes (403)
2023-10-24 - 97814c2 - Workflow start delay (406)
2023-10-25 - 2c15ed3 - Workflow Update (400)
2023-10-30 - fd938c4 - Update last cleanup items (410)
2023-11-02 - 063b9bf - Update core to get bugfix (411)
2023-11-02 - 7c0a464 - Typed search attributes (366)
2023-11-06 - 4802d2f - Log forwarding support (413)
2023-11-06 - 6dbe2f4 - Fix docstring (414)
2023-11-07 - d6646a2 - Fix pyd file name for Windows (417)

1.3.0

Get from [PyPI](https://pypi.org/project/temporalio/)

Highlights

Dynamic Workflows, Activities, Signals, and Queries

`dynamic=True` can be added to `workflow.defn`, `activity.defn`, `workflow.signal`, and `workflow.query` to make them "dynamic". This means they are unnamed and are called if no other workflow/activity/signal/query match a name from the server when called. The workflow run or activity signature must be a single parameter typed with `Sequence[temporalio.common.RawValue]` whereas the signal or query signature must be two parameters typed with `str` and `Sequence[temporalio.common.RawValue]`. Signals and queries that used the old form of `dynamic=True` which didn't require specific signatures are deprecated and will emit a warning.

To support this we added `workflow.payload_converter()` and `activity.payload_converter()` functions to obtain a payload converter to convert raw values. We also added a `temporalio.common.RawValue` class which, when accepted or returned, will just use the raw payload (but it will still use codecs).

See the README for more information.

💥 NOTE: A slight behavior change was made to interceptors to support this. Previously, we would call signal/query interceptor and _then_ check if there was a valid signal/query with that name. Now we check that a valid signal/query handler exists before calling the interceptor. This should not effect most users.

Use Latest Temporal CLI Dev Server Instead of Temporalite

`temporalio.testing.WorkflowEnvironment.start_local` now uses the latest [Temporal CLI](https://github.com/temporalio/cli) release (which is up to date with latest server) instead of Temporalite. Any use of advanced, documented-experimental `temporalite_`-prefixed parameters should now use the `dev_server_`-prefixed ones.

Experimental Worker Versioning Support

Support has been added for the brand new [Worker Versioning](https://docs.temporal.io/workers#worker-versioning) feature. This feature is currently experimental and can only be enabled when running the open source server and setting some special options. Samples for the versioning feature will be present soon.

Schedules GA

The experimental tag for the scheduling API is removed.

General Improvements

* Can now set `result_type` when not using type-safe activity, child workflow, and query calls to get properly typed results (but users should always prefer the type-safe forms)
* We now eagerly error if an invalid workflow call is attempted inside a query. In some cases this may have technically worked before but is invalid and will now properly error.

Specific Changes

2023-05-31 - b0daaa3 - Create CODEOWNERS (323)
2023-06-06 - e1d983e - Add Semgrep scanning (324)
2023-06-16 - 6a3662c - Remove experimental tag for schedules and add limited action check (330)
2023-07-05 - 07b2043 - Update core and update Rust dependencies (337)
2023-07-05 - b75a567 - Allow converter failures to fail workflow and other minor things (329)
2023-07-06 - aff198b - Set result types for string-based activity, child workflow, and query calls (334)
2023-07-07 - 677f8be - Move from Temporalite to Temporal CLI dev server (339)
2023-07-10 - d7238cd - Worker Versioning (340)
2023-07-11 - 317dd9b - Add Versioning Intents to Commands (342)
2023-07-11 - b902ec8 - Swallow Python exceptions better on workflow GC from eviction (341)
2023-07-12 - 34681ca - Reachability type wasn't passed through all the way (343)
2023-07-14 - 83bbc36 - Dynamic workflows, activities, signals, and queries (346)
2023-07-17 - 60b72c6 - Link to Python SDK launch blog post (350)
2023-07-18 - a17c0ef - Disallow most workflow operations in read-only context (351)
2023-07-18 - b9df212 - Log and drop signals whose params can't be deserialized (and other error handling improvements) (349)

1.2.0

Get from [PyPI](https://pypi.org/project/temporalio/)

Highlights

No significant changes from previous version, mostly bug fixes.

Specific Changes

2023-03-30 - 4ad2e64 - Use CDN for README image, fixes 302 (308)
2023-03-30 - 61166af - Minor doc update (305)
2023-03-30 - 72bdca7 - Update core (307)
2023-03-30 - d790468 - Call JSON type converters recursively (304)
2023-04-03 - dbf96fd - Pass through global telemetry tags (303)
2023-05-01 - a4224a2 - Update core and release version (314)

1.1.0

Get from [PyPI](https://pypi.org/project/temporalio/)

Highlights

Scheduling API

Python client now has support for creating and working with schedules.

💥 Breaking Changes

When a workflow is already running, we will now raise a `WorkflowAlreadyStartedError` error when trying to start instead of the default `RPCError` we do for all other errors.

Specific Changes

2023-01-13 - 1a260c3 - Mark local activities as experimental (252)
2023-01-13 - fdf8b65 - Fail activity worker on broken executor (253)
2023-01-17 - 677262a - Add missing `TERMINATE_IF_RUNNING` to `WorkflowIDReusePolicy` (257)
2023-01-23 - 82f723b - Properly encode failure encoded attributes (251)
2023-01-23 - f22efea - Support PEP 604 union annotations (256)
2023-02-07 - 832c375 - Add warning and direct to Pydantic converter sample if Pydantic models are detected (249)
2023-02-08 - 3c8ee0a - Minor fixes (268)
2023-02-08 - b52e04e - Add JSONTypeConverter (269)
2023-02-09 - ae9038c - Fix gRPC health package clash (270)
2023-02-13 - 1fa36c2 - Force Poetry setup file (271)
2023-02-15 - 7a2d703 - Change types-protobuf dependency spec to match protobuf (278)
2023-02-16 - 2ce6d9f - Update Rust dependencies (281)
2023-02-16 - 852ff2f - Keep extra log attributes (280)
2023-02-17 - fbcba65 - Schedules (279)
2023-02-21 - c6e204a - Minor updates (283)

1.0.0

First Stable Release! 🎉

**This is the first stable release of the Python SDK!** Since Python is now GA, we provide the same stability guarantees as all other SDKs - primarily that we vow not to break workflow history in newer versions.

Get from [PyPI](https://pypi.org/project/temporalio/).

💥 Breaking Changes

Minor change since last beta - for those configuring a custom runtime for telemetry purposes via the experimental `temporal.bridge.runtime.Runtime`, they must now use the also-experimental `temporal.runtime.Runtime` class instead.

Specific Changes

2022-12-08 - 1f72c98 - Added more context to the README sections (225)
2023-01-03 - 22e8d92 - Update min proto version and fix gRPC optional dependency (231)
2023-01-04 - 57bf9e6 - Minor type improvements (239)
2023-01-04 - f252e36 - Expose core "runtime" as temporalio.runtime.Runtime (240)

0.3.0

Changelog
* b63108d Bump github.com/temporalio/ui-server/v2 from 2.6.2 to 2.7.0 (151)
* 61fc4f3 Bump github.com/temporalio/ui-server/v2 from 2.7.0 to 2.7.1 (152)
* 63d8a73 Bump github.com/temporalio/ui-server/v2 from 2.7.1 to 2.8.0
* ab84ca1 Bump github.com/temporalio/ui-server/v2 from 2.8.0 to 2.8.1
* fdc0165 Bump github.com/temporalio/ui-server/v2 from 2.8.1 to 2.8.3 (170)
* 4540ae4 Bump github.com/urfave/cli/v2 from 2.16.3 to 2.17.1 (146)
* 4143c94 Bump github.com/urfave/cli/v2 from 2.17.1 to 2.19.2 (149)
* 81d76ce Bump github.com/urfave/cli/v2 from 2.19.2 to 2.20.2 (153)
* d041238 Bump github.com/urfave/cli/v2 from 2.20.2 to 2.23.0 (164)
* 03d0be1 Bump github.com/urfave/cli/v2 from 2.23.0 to 2.23.4 (167)
* 162f3f5 Bump github.com/urfave/cli/v2 from 2.23.4 to 2.23.5 (171)
* faebcf9 Bump go.temporal.io/server from 1.18.0 to 1.18.1 (150)
* 13e73ae Expose Panel port 8233 (166)
* 902abe4 Expose a new --codec-endpoint flag to start command (174)
* 4d2846e Merge pull request 159 from temporalio/dependabot/go_modules/github.com/temporalio/ui-server/v2-2.8.0
* 93862e5 Merge pull request 162 from temporalio/dependabot/go_modules/github.com/temporalio/ui-server/v2-2.8.1
* 4514df3 Remove "go install" README instructions (145)

Page 2 of 4

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.