Temporalio

Latest version: v1.6.0

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

Scan your dependencies

Page 3 of 3

0.1b4

**⚠️ THIS IS A BETA RELEASE AND COMPATIBILITY MAY NOT BE MAINTAINED**

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

Highlights

Support for both Protobuf 3.x and 4.x libraries

We now generate Protobuf via 3.x and ensure it works with 3.x and 4.x Python libraries.

Sync activities now raise exception in thread on cancellation

Now, unless opted out, sync multithread activities will raise an exception in thread when cancellation is received.

Simplify designating passthrough modules in the sandbox

Since we are encouraging passing through third party modules, we have made it simpler to do so. Now the imports can simply be wrapped with `with workflow.unsafe.imports_passed_through():` or the `SandboxRunner`'s `restrictions` can just have `passthrough_modules` as a set of strings (or just `SandboxRunner(restrictions=SandboxRestrictions.default.with_passthrough_modules("other.module")`).

💥 Breaking Changes

* Sync threaded activities now have exceptions raised inside of them on cancellation whereas before you had to explicitly check for cancellation
* `SandboxRestriction`'s `passthrough_modules` changed from `SandboxMatcher` type to a `Set[str]`

Specific Changes

2022-11-15 - 99e36cb - Sandbox and type fixes (202)
2022-11-18 - a7d6fc3 - Add banner to README (205)
2022-11-18 - b04813c - Add sdk-features CI trigger (206)
2022-11-22 - e37b500 - Add table of contents to README (209)
2022-11-29 - 89b6e66 - Support both protobuf 3 and 4 (215)
2022-12-01 - 6a43919 - Support raising cancellation in sync multithreaded activities (217)
2022-12-02 - cc679b9 - Sandbox Improvements (219)
2022-12-05 - 06828ea - Update SDK core and minor updates (221)

0.1b3

**⚠️ THIS IS A BETA RELEASE AND COMPATIBILITY MAY NOT BE MAINTAINED**

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

Highlights

Workflow Sandbox

There is now an enabled-by-default workflow sandbox that attempts to ensure determinism via workflow isolation and
restricted access to known non-deterministic standard library calls. If you are importing third-party libraries inside
the same file as your workflow, this can incur a noticeable perf/mem penalty.

Also, if your workflow previously worked out of the sandbox, it may no longer work.

These issues can be mitigated. See https://github.com/temporalio/sdk-python#workflow-sandbox.

Listing Workflows and Multi-History Replayer

API improvements:

* `Client.list_workflows()` - returns an async iterator of workflows based on
[visibility filter](https://docs.temporal.io/visibility)
* `WorkflowHandle.fetch_history_events()` - returns an async iterator of history events
* `WorkflowHandle.fetch_history()` - helper for the above that returns a full `WorkflowHistory`
* `WorkflowExecutionAsyncIterator.map_histories()` - returns an async iterator of `WorkflowHistory` based on async
iterator of workflows
* `ReplayWorkflow.replay_workflow()` - replays single `WorkflowHistory`
* `ReplayWorkflow.replay_workflows()` - replays async iterator of `WorkflowHistory` collecting results
* `ReplayWorkflow.workflow_replay_iterator()` - async context manager providing an async iterator over replay results
from an async iterator of `WorkflowHistory`

Using these APIs, users can now easily load many workflows and run their histories through a replayer. Among other
benefits, this can help users know how code changes might react on previous workflow executions.

Python 3.11 and Linux ARM Support

Python 3.11 is properly supported and early results show some speed improvement. Also, PyPI releases will now include
Linux ARM wheels.

Failure Converter

A custom `temporalio.converter.FailureConverter` can now be set as the `DataConverter.failure_converter_class`. In
addition to custom error conversion, this is also useful to set to
`temporalio.converter.DefaultFailureConverterWithEncodedAttributes` to force all error messages and stack traces to be
put in the encoded section of the failure, allowing them to run through a `PayloadCodec` for encryption.

Worker Fatal Errors

Worker fatal errors are rare, but previously they were not surfaced when using `async with`. Now, similar to
[asyncio.timeout](https://docs.python.org/3/library/asyncio-task.html#asyncio.timeout), the current task will be
cancelled on fatal error and that cancel will be caught at the end of the async context manager and the reason for fatal
will be raised. The alternative to `async with`, `Worker.run()`, now also raises fatal errors.

Note, fatal errors only occur after a while of internal retries.

💥 Breaking Changes

Not many and they are on less-often used parts.

⚠️ Multiple `patched` History Incompatibility

If you called `patched` for the same patch ID multiple times in the same workflow, this new release will be incompatible
with that workflow and you'll get non-determinism errors. `patched` is now memoized.

API Breaking Changes

* Workflow sandbox may break registering/running workflows that it didn't used to
* `temporalio.worker.Replayer.replay_workflow` now takes a `temporalio.client.WorkflowHistory` object instead of a proto
object or JSON str/dict
* `temporalio.client.WorkflowExecutionDescription.raw` renamed to `raw_description`
* Failed queries now raise `temporalio.client.WorkflowQueryFailedError` instead of `temporalio.client.RPCError`
* Configuring telemetry has changed from using the global `temporalio.bridge.telemetry.init_telemetry` package to making
a new `telemetryio.bridge.runtime.Runtime` and passing that around.

Specific Changes

2022-10-03 - 0dd2312 - Move API reference site to Vercel (148)
2022-10-19 - e436ecc - Multiple History Replay support (158)
2022-10-28 - 0126e6e - Workflow sandbox (164)
2022-10-28 - 5259f4c - Preload type hints and remove global lookup cache (168)
2022-10-28 - 657a13d - Don't require timer presence when fired (169)
2022-10-28 - bc62186 - Remove Go server from Python tests (170)
2022-10-31 - e16bbc3 - ARM runner and Python 3.11 support (172)
2022-11-01 - 656b77b - Add simple benchmark script (180)
2022-11-01 - b4b3f82 - Support for list workflow, fetch workflow history, and iterable replay results (175)
2022-11-03 - cfdc548 - Add StrEnum conversion support (177)
2022-11-04 - 65c4025 - Prefix private modules with underscore (183)
2022-11-07 - 2546871 - Minor updates (186)
2022-11-07 - 6b9f554 - Propagate fatal worker errors (188)
2022-11-07 - 87fd193 - Clarity on client thread safety and sync activity cancel (189)
2022-11-07 - 929dc81 - Failure converter (185)
2022-11-07 - a75256e - Feature/datetime conversion fix (179)
2022-11-08 - 3901df8 - Memoize patched calls and support UUID conversion (192)
2022-11-09 - 87b28a7 - Add missing UUID test case (193)
2022-11-10 - eacdca8 - Sdk core related updates (191)

0.1b2

**⚠️ THIS IS A BETA RELEASE AND COMPATIBILITY MAY NOT BE MAINTAINED**

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

Highlights

Test Framework

`temporalio.testing` package now includes an `ActivityEnvironment` for mocking heartbeating and cancellation for activity code. See https://github.com/temporalio/sdk-python#testing-1 for more details.

`temporalio.testing` package also now includes a `WorkflowEnvironment` for testing workflows. The `WorkFlowEnvironment` can be started in time-skipping mode which, by default, will automatically forward time to the next event when a workflow's result is waited on. For a full, local Temporal server or a time-skipping server, APIs are included that automatically download the binaries needed to run. See https://github.com/temporalio/sdk-python#testing for more details.

Replayer

The `temporalio.worker` package now has a `Replayer` which, given workflows and a history, can replay an entire workflow run locally. This is very useful for debugging and confirming code-change safety. See https://github.com/temporalio/sdk-python#workflow-replay for more details.

Advanced Type Hinting Support

Nested dataclasses, Pydantic classes, optionals, unions, collections, etc are now supported for deserialization if the workflow/activity param/return types are properly type hinted. See https://github.com/temporalio/sdk-python#data-conversion for more details.

Client Updates

* gRPC is now an optional dependency
* `Client.workflow_service` and `Client.operator_service` are now available for direct API calls to Temporal
* Added `Client.service_client` which, in addition to having access to the two services from the previous bullet, also has a `check_health` call to perform gRPC health check
* `rpc_metadata` can be now added at the client level and/or to every API call which will set API headers (useful for proxies and other things)
* `rpc_timeout` can now be added to every API call to set a timeout on the call itself
* Added `lazy` parameter to `Client.connect` which avoids eager connection (cannot use these for workers)

Breaking Changes

Most breaking changes were very minor:

* `Client.service` is now `Client.workflow_service`
* `static_headers` parameter in `Client.connect` is now `rpc_metadata`
* Most things that accepted an `Iterable` were changed to accept a `Sequence`
* `interceptors` parameter in `Client.connect` no longer accepts callables, just the `Interceptor` instances it always had
* `max_concurrent_wft_polls` and `max_concurrent_at_polls` parameters in `Client.connect` were changed to `max_concurrent_workflow_task_polls` and `max_concurrent_activity_task_polls` respectively

Specific Changes

2022-08-05 - 043cdf3 - Minor README update (99)
2022-08-10 - 8171049 - Fix activity class type hinting when not instantiated (104)
2022-08-12 - efc1c7b - Advanced type hinting support (102)
2022-08-16 - c965c47 - gRPC Service Improvements (106)
2022-08-19 - 5b202c0 - Replayer (108)
2022-08-25 - 4db14cc - README: Fix import name in quickstart (112)
2022-09-01 - 07da1b9 - Test Framework (121)
2022-09-07 - 1c9a59e - Several minor issues (127)
2022-09-16 - 5b0e1c8 - Update and dogfood test framework (132)
2022-09-19 - 580b6fc - Skip conditions during patch and query jobs (137)
2022-09-19 - bcc0132 - Update protobuf (136)

0.1b1

**⚠️ THIS IS A BETA RELEASE AND COMPATIBILITY MAY NOT BE MAINTAINED**

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

Highlights

Updates

* Instead of `http://host:port`, the target endpoint is now `host:port` to align with other SDKs (warns if scheme is present, will be an error next version).
* Support for activities as methods on instances instead of just top-level functions. Using an instance with, say a DB client as an instance property, is a good way to have it accessible from inside the activity. The `activity.defn` decorator can be set on the method, and helpers like `workflow.execute_activity_method` are present to help typing/invocation.
* Support for activities as instances of classes with `__call__` implemented. The `activity.defn` decorator can be set on the class in that case, and helpers like `workflow.execute_activity_class` are present to help typing/invocation.
* Added many more fields to `client.WorkflowExecutionDescription`
* Several bug fixes

OpenTelemetry

An OpenTelemetry interceptor can now be provided that traces workflows and activities. Due to Temporal's replay capabilities where a workflow may start in one place and finish in another at a completely different time, the workflow tracing spans do not have durations, but they properly and deterministically represent the things done by a workflow. They are hierarchical and pass across servers so if, for example, an activity made an HTTP call, the HTTP span would appear in the activity span that would appear in the workflow span. See the README for more information.

Specific Changes

2022-06-15 - 431ca19 - macOS M1 Python 3.10+ gRPC README note (51)
2022-06-15 - 6ac791f - Fix CI Rust cache working directory (50)
2022-06-27 - 25caaf0 - Remove macOS-ARM support from missing features list (53)
2022-07-01 - 0392468 - Use cibuildwheel and update grpcio (57)
2022-07-13 - 7456f44 - Remove activity info retry policy (65)
2022-07-13 - a47f573 - Add proper version to client (67)
2022-07-13 - a5c455b - Support IntEnum in converter (74)
2022-07-13 - d91593d - Add get_current_history_length() to workflow info (73)
2022-07-14 - 232446a - Additional high-level describe details (72)
2022-07-14 - 5926b76 - Minor exception-related updates (75)
2022-07-14 - a079a5e - Improves typing of SearchAttributes (76)
2022-07-14 - b8a80e0 - Type refactoring and activity class/method support (69)
2022-07-14 - e5bd9a9 - Properly handle uncaught child/activity cancel during workflow cancel (71)
2022-07-21 - a569582 - Many changes including OpenTelemetry support (77)
2022-08-01 - 2288f41 - Use host:port instead of URL and TLS test fixes (86)
2022-08-01 - dae22ac - Fix wait_condition timeout issue (90)
2022-08-04 - f560680 - Fix cancel before run (94)

0.1a2

**⚠️ THIS IS AN ALPHA RELEASE AND COMPATIBILITY WILL _NOT_ BE MAINTAINED**

Highlights

Workflows

This release includes full Temporal workflow support.

Activity Definitions

Activities are now marked with `activity.defn` and name can be overridden there instead of needing to provide a dict to the worker.

macOS M1 Support

macOS ARM-based packages are now uploaded to PyPI.

Specific Changes

2022-03-18 - c1efe42 - Readme updates (13)
2022-03-22 - fc528ee - Move to proper async heartbeat queuing (14)
2022-03-23 - 256bc4a - Worker package refactor (15)
2022-03-28 - 23aa7ae - activity.defn support and other minor things (16)
2022-05-27 - f1aa1c9 - Workflow implementation (21)
2022-06-01 - 4657453 - Async activity support and describe interceptor (32)
2022-06-01 - 47be211 - Update SDK Core and PyO3 (31)
2022-06-03 - 39eb19d - Add API doc publishing step (38)
2022-06-03 - 962a5e8 - Patch support and random/UUID helpers (35)
2022-06-03 - a8e842b - Move to pydoctor for API docs (34)
2022-06-09 - 0f134e2 - Add generated protos (42)
2022-06-09 - 81e17c0 - More tests, docs, and minor things (41)
2022-06-10 - 155afe2 - Dependency updates, Core proto updates, and other minor things (46)
2022-06-10 - 2d4405e - Clarify README (44)
2022-06-10 - 8ffa58e - Search attributes (43)

0.1a1

**⚠️ THIS IS AN ALPHA RELEASE AND COMPATIBILITY WILL _NOT_ BE MAINTAINED**

Highlights

Initial release!

This release includes:

* Temporal client capable of doing most Temporal things
* Activity-only workers for running Python activities from workflows in another SDK language
* Support for Windows x64, macOS x64, and Linux x64 (glibc >= 2.31)

This release does not include:

* Workflow worker support
* Async activity support (in client or worker)
* Support for Windows arm, macOS arm (i.e. M1), Linux arm, and Linux x64 glibc < 2.31.

See the README or https://github.com/temporalio/samples-python for more

Specific Changes

2022-01-31 - a3d5328 - Rework grpc locations and add some different structure (3)
2022-02-04 - 7b5a69c - Converters and scaffolding (4)
2022-02-16 - 2afda4e - Client impl and docs scaffolding (6)
2022-03-14 - 3e1e408 - Activity support (7)
2022-03-17 - 641efe8 - Packaging, heartbeat logic, dependency updates, and other errata (8)

Page 3 of 3

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.