async-durable-execution 2.2.0__tar.gz → 2.4.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {async_durable_execution-2.2.0 → async_durable_execution-2.4.0}/PKG-INFO +20 -7
- {async_durable_execution-2.2.0 → async_durable_execution-2.4.0}/README.md +14 -4
- {async_durable_execution-2.2.0 → async_durable_execution-2.4.0}/async_durable_execution/__about__.py +1 -1
- {async_durable_execution-2.2.0 → async_durable_execution-2.4.0}/async_durable_execution/__init__.py +65 -15
- {async_durable_execution-2.2.0 → async_durable_execution-2.4.0}/async_durable_execution/_core/__init__.py +19 -3
- async_durable_execution-2.4.0/async_durable_execution/_core/aws_http.py +915 -0
- {async_durable_execution-2.2.0 → async_durable_execution-2.4.0}/async_durable_execution/_core/client.py +44 -57
- {async_durable_execution-2.2.0 → async_durable_execution-2.4.0}/async_durable_execution/_core/config.py +1 -1
- {async_durable_execution-2.2.0 → async_durable_execution-2.4.0}/async_durable_execution/_core/context.py +178 -22
- {async_durable_execution-2.2.0 → async_durable_execution-2.4.0}/async_durable_execution/_core/exceptions.py +23 -13
- {async_durable_execution-2.2.0 → async_durable_execution-2.4.0}/async_durable_execution/_core/execution.py +4 -4
- {async_durable_execution-2.2.0 → async_durable_execution-2.4.0}/async_durable_execution/_core/logger.py +4 -1
- {async_durable_execution-2.2.0 → async_durable_execution-2.4.0}/async_durable_execution/_core/models.py +256 -283
- {async_durable_execution-2.2.0 → async_durable_execution-2.4.0}/async_durable_execution/_core/serdes.py +227 -18
- {async_durable_execution-2.2.0 → async_durable_execution-2.4.0}/async_durable_execution/_core/state.py +7 -7
- async_durable_execution-2.4.0/async_durable_execution/_extension/__init__.py +23 -0
- async_durable_execution-2.4.0/async_durable_execution/_operation/__init__.py +1 -0
- async_durable_execution-2.4.0/async_durable_execution/_operation/callback.py +41 -0
- async_durable_execution-2.4.0/async_durable_execution/_operation/child.py +47 -0
- {async_durable_execution-2.2.0/async_durable_execution/_extension → async_durable_execution-2.4.0/async_durable_execution/_operation}/flow.py +34 -8
- async_durable_execution-2.4.0/async_durable_execution/_operation/invoke.py +50 -0
- {async_durable_execution-2.2.0/async_durable_execution/_extension → async_durable_execution-2.4.0/async_durable_execution/_operation}/map.py +28 -7
- {async_durable_execution-2.2.0/async_durable_execution/_extension → async_durable_execution-2.4.0/async_durable_execution/_operation}/parallel.py +258 -47
- {async_durable_execution-2.2.0/async_durable_execution/_extension → async_durable_execution-2.4.0/async_durable_execution/_operation}/recurse.py +13 -8
- {async_durable_execution-2.2.0/async_durable_execution/_extension → async_durable_execution-2.4.0/async_durable_execution/_operation}/replay_safe.py +1 -1
- async_durable_execution-2.4.0/async_durable_execution/_operation/step.py +56 -0
- async_durable_execution-2.4.0/async_durable_execution/_operation/wait.py +40 -0
- {async_durable_execution-2.2.0/async_durable_execution/_extension → async_durable_execution-2.4.0/async_durable_execution/_operation}/wait_for_callback.py +60 -4
- {async_durable_execution-2.2.0/async_durable_execution/_extension → async_durable_execution-2.4.0/async_durable_execution/_operation}/wait_for_condition.py +112 -65
- {async_durable_execution-2.2.0/async_durable_execution/_extension → async_durable_execution-2.4.0/async_durable_execution/_operation}/with_retry.py +41 -3
- async_durable_execution-2.4.0/async_durable_execution/_primitive/base.py +178 -0
- {async_durable_execution-2.2.0 → async_durable_execution-2.4.0}/async_durable_execution/_primitive/callback.py +20 -36
- {async_durable_execution-2.2.0 → async_durable_execution-2.4.0}/async_durable_execution/_primitive/child.py +37 -19
- {async_durable_execution-2.2.0 → async_durable_execution-2.4.0}/async_durable_execution/_primitive/invoke.py +15 -35
- {async_durable_execution-2.2.0 → async_durable_execution-2.4.0}/async_durable_execution/_primitive/step.py +348 -37
- {async_durable_execution-2.2.0 → async_durable_execution-2.4.0}/async_durable_execution/_primitive/wait.py +7 -33
- {async_durable_execution-2.2.0 → async_durable_execution-2.4.0}/async_durable_execution/_runner/cloud/__init__.py +127 -99
- async_durable_execution-2.4.0/async_durable_execution/_runner/exceptions.py +55 -0
- {async_durable_execution-2.2.0 → async_durable_execution-2.4.0}/async_durable_execution/_runner/local/__init__.py +7 -8
- {async_durable_execution-2.2.0 → async_durable_execution-2.4.0}/async_durable_execution/_runner/local/execution.py +1 -100
- {async_durable_execution-2.2.0 → async_durable_execution-2.4.0}/async_durable_execution/_runner/local/executor.py +6 -76
- async_durable_execution-2.4.0/async_durable_execution/_runner/local/model.py +205 -0
- {async_durable_execution-2.2.0 → async_durable_execution-2.4.0}/async_durable_execution/_runner/local/processor.py +1 -1
- {async_durable_execution-2.2.0 → async_durable_execution-2.4.0}/async_durable_execution/_runner/local/processors/base.py +11 -2
- {async_durable_execution-2.2.0 → async_durable_execution-2.4.0}/async_durable_execution/_runner/local/processors/step.py +25 -10
- {async_durable_execution-2.2.0 → async_durable_execution-2.4.0}/async_durable_execution/_runner/local/scheduler.py +9 -35
- {async_durable_execution-2.2.0 → async_durable_execution-2.4.0}/async_durable_execution/_runner/model.py +199 -885
- async_durable_execution-2.4.0/async_durable_execution/extension.py +701 -0
- async_durable_execution-2.4.0/async_durable_execution/filesystem_serdes.py +741 -0
- async_durable_execution-2.4.0/async_durable_execution/preview.py +181 -0
- {async_durable_execution-2.2.0 → async_durable_execution-2.4.0}/pyproject.toml +16 -8
- async_durable_execution-2.2.0/async_durable_execution/_extension/__init__.py +0 -1
- async_durable_execution-2.2.0/async_durable_execution/_primitive/base.py +0 -101
- async_durable_execution-2.2.0/async_durable_execution/_runner/exceptions.py +0 -276
- async_durable_execution-2.2.0/async_durable_execution/_runner/local/model.py +0 -275
- {async_durable_execution-2.2.0 → async_durable_execution-2.4.0}/.gitignore +0 -0
- {async_durable_execution-2.2.0 → async_durable_execution-2.4.0}/LICENSE +0 -0
- {async_durable_execution-2.2.0 → async_durable_execution-2.4.0}/NOTICE +0 -0
- {async_durable_execution-2.2.0 → async_durable_execution-2.4.0}/async_durable_execution/.gitignore +0 -0
- {async_durable_execution-2.2.0 → async_durable_execution-2.4.0}/async_durable_execution/_core/task.py +0 -0
- {async_durable_execution-2.2.0 → async_durable_execution-2.4.0}/async_durable_execution/_primitive/__init__.py +0 -0
- {async_durable_execution-2.2.0 → async_durable_execution-2.4.0}/async_durable_execution/_runner/__init__.py +0 -0
- {async_durable_execution-2.2.0 → async_durable_execution-2.4.0}/async_durable_execution/_runner/local/processors/__init__.py +0 -0
- {async_durable_execution-2.2.0 → async_durable_execution-2.4.0}/async_durable_execution/_runner/local/processors/callback.py +0 -0
- {async_durable_execution-2.2.0 → async_durable_execution-2.4.0}/async_durable_execution/_runner/local/processors/context.py +0 -0
- {async_durable_execution-2.2.0 → async_durable_execution-2.4.0}/async_durable_execution/_runner/local/processors/execution.py +0 -0
- {async_durable_execution-2.2.0 → async_durable_execution-2.4.0}/async_durable_execution/_runner/local/processors/invoke.py +0 -0
- {async_durable_execution-2.2.0 → async_durable_execution-2.4.0}/async_durable_execution/_runner/local/processors/wait.py +0 -0
- {async_durable_execution-2.2.0 → async_durable_execution-2.4.0}/async_durable_execution/_runner/local/time_scale.py +0 -0
- {async_durable_execution-2.2.0 → async_durable_execution-2.4.0}/async_durable_execution/_runner/py.typed +0 -0
- {async_durable_execution-2.2.0 → async_durable_execution-2.4.0}/async_durable_execution/py.typed +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
2
|
Name: async-durable-execution
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.4.0
|
|
4
4
|
Summary: Community-maintained durable execution SDK for AWS Lambda in Python
|
|
5
5
|
Project-URL: Documentation, https://github.com/zhongkechen/async-durable-execution#readme
|
|
6
6
|
Project-URL: Issues, https://github.com/zhongkechen/async-durable-execution/issues
|
|
@@ -17,12 +17,15 @@ Classifier: Programming Language :: Python :: 3.11
|
|
|
17
17
|
Classifier: Programming Language :: Python :: 3.12
|
|
18
18
|
Classifier: Programming Language :: Python :: 3.13
|
|
19
19
|
Classifier: Programming Language :: Python :: 3.14
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.15
|
|
20
21
|
Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
21
22
|
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
|
22
23
|
Requires-Python: >=3.10
|
|
23
24
|
Requires-Dist: botocore<1.43.1,>=1.42.90
|
|
24
25
|
Provides-Extra: aioboto
|
|
25
|
-
Requires-Dist:
|
|
26
|
+
Requires-Dist: httpx<1,>=0.28.1; extra == 'aioboto'
|
|
27
|
+
Provides-Extra: httpx
|
|
28
|
+
Requires-Dist: httpx<1,>=0.28.1; extra == 'httpx'
|
|
26
29
|
Provides-Extra: typing
|
|
27
30
|
Requires-Dist: botocore-stubs<1.43.0,>=1.42.40; extra == 'typing'
|
|
28
31
|
Description-Content-Type: text/markdown
|
|
@@ -72,11 +75,13 @@ composition, and APIs designed for modern Python applications.
|
|
|
72
75
|
|
|
73
76
|
- **[Async-first durable code](https://zhongkechen.github.io/async-durable-execution/official-python-sdk-comparison.html#programming-model)** - Compared with the official AWS SDK, user-provided durable handlers, steps, child contexts, `flow` nodes, callback submitters, map item functions, parallel branches, and wait-for-condition checks are written with `async def`.
|
|
74
77
|
- **[Operations not available in the official SDK](https://zhongkechen.github.io/async-durable-execution/api/extension/replay_safe.html)** - This SDK adds [replay-safe helpers](https://zhongkechen.github.io/async-durable-execution/api/extension/replay_safe.html) (`random()`, `now()`, `timestamp()`, and `uuid()`) and [durable self-invocation](https://zhongkechen.github.io/async-durable-execution/api/extension/recurse.html) (`recurse()`).
|
|
78
|
+
- **[Stable custom operation SPI](https://zhongkechen.github.io/async-durable-execution/custom-operations.html)** - Third-party packages can reserve opaque deterministic primitive identities, use custom subtypes, and build stateful replay-safe operations without importing SDK internals.
|
|
75
79
|
- **[Declarative DAG workflows](https://zhongkechen.github.io/async-durable-execution/api/extension/flow.html#quick-start)** - Define acyclic workflows with typed node inputs, inferred or conditional dependencies, failure routes, and durable operations inside each node. The SDK validates the graph before execution and skips nodes that are not required by the selected outputs.
|
|
76
80
|
- **[Background operation tasks](https://zhongkechen.github.io/async-durable-execution/advanced-usage.html#background-operation-tasks)** - Durable operations such as `step(...)`, `wait(...)`, `invoke(...)`, `recurse(...)`, `run_in_child_context(...)`, and `flow(...)` return `asyncio.Task` objects, so independent operations can run in the background and be awaited together with `asyncio.gather` without using `parallel()` or `map()`.
|
|
77
81
|
- **[Pythonic operation parameters](https://zhongkechen.github.io/async-durable-execution/migrating-from-official-python-sdk.html#api-mapping)** - Operations use direct keyword arguments, standard Python types such as `datetime.timedelta`, and keyword-only names instead of configuration wrapper objects.
|
|
82
|
+
- **[Composable SerDes pipelines](https://zhongkechen.github.io/async-durable-execution/serdes-pipelines.html)** - Chain async string transformations and offload large checkpoint payloads to EFS or S3 Files with bounded previews and validated immutable storage.
|
|
78
83
|
- **[Integrated local and cloud runner](https://zhongkechen.github.io/async-durable-execution/api/runner.html)** - Runner functionality now ships through `async_durable_execution`, with separate local and cloud runner factories and typed test result helpers.
|
|
79
|
-
- **[
|
|
84
|
+
- **[Model-free Lambda clients](https://zhongkechen.github.io/async-durable-execution/advanced-usage.html#lambda-client-selection)** - The SDK owns its Lambda REST wire format instead of depending on botocore service models. Install the optional `httpx` extra to send requests with HTTPX; otherwise the same requests use botocore's synchronous HTTP transport through an async adapter.
|
|
80
85
|
- **[Replay-aware logging with stdlib logging](https://zhongkechen.github.io/async-durable-execution/migrating-from-official-python-sdk.html#logging)** - Standard `logging` loggers are enriched by durable context filtering so workflow logs remain replay safe.
|
|
81
86
|
- **[Lambda layer packaging](https://zhongkechen.github.io/async-durable-execution/advanced-usage.html#lambda-layer-packaging)** - The repo includes tooling and workflows to build and publish an SDK Lambda layer for functions that do not vendor dependencies directly.
|
|
82
87
|
|
|
@@ -88,13 +93,20 @@ Install the execution SDK:
|
|
|
88
93
|
pip install async-durable-execution
|
|
89
94
|
```
|
|
90
95
|
|
|
91
|
-
For an async Lambda service client, install the optional `
|
|
96
|
+
For an async Lambda service client, install the optional `httpx` extra:
|
|
92
97
|
|
|
93
98
|
```console
|
|
94
|
-
pip install "async-durable-execution[
|
|
99
|
+
pip install "async-durable-execution[httpx]"
|
|
95
100
|
```
|
|
96
101
|
|
|
97
|
-
The `
|
|
102
|
+
The `httpx` extra installs HTTPX, which the SDK uses for asynchronous
|
|
103
|
+
model-free Lambda REST calls. Without it, the SDK sends the same signed
|
|
104
|
+
requests with botocore's synchronous HTTP transport through a threaded async
|
|
105
|
+
adapter. Botocore continues to provide AWS credentials, endpoint metadata, and
|
|
106
|
+
SigV4 signing, but its generated Lambda service model is not used.
|
|
107
|
+
|
|
108
|
+
The previous `aioboto` extra remains available as a backward-compatible alias
|
|
109
|
+
for `httpx`.
|
|
98
110
|
|
|
99
111
|
Create a durable Lambda handler:
|
|
100
112
|
|
|
@@ -247,6 +259,7 @@ For the developer workflow to run or deploy example integration tests, see the [
|
|
|
247
259
|
- **[Deploy and Invoke](https://zhongkechen.github.io/async-durable-execution/deployment.html)** - Configure IAM, qualified function identifiers, invocations, CloudFormation, and SAM
|
|
248
260
|
- **[Using Synchronous Code](https://zhongkechen.github.io/async-durable-execution/using-synchronous-code.html)** - Wrap existing synchronous business logic and blocking clients safely
|
|
249
261
|
- **[Advanced Usage](https://zhongkechen.github.io/async-durable-execution/advanced-usage.html)** - Explore background operation tasks, batch completion conditions, Lambda clients, and Lambda layers
|
|
262
|
+
- **[Custom Durable Operations](https://zhongkechen.github.io/async-durable-execution/custom-operations.html)** - Build third-party durable operation libraries on the stable extension-author interface
|
|
250
263
|
- **[Runner Architecture](https://zhongkechen.github.io/async-durable-execution/runner-architecture.html)** - Local and cloud runner execution flow, components, and diagrams
|
|
251
264
|
- **[Contributing Guide](https://github.com/zhongkechen/async-durable-execution/blob/main/CONTRIBUTING.md)** - Development workflow, Hatch commands, testing, and pull request guidance
|
|
252
265
|
|
|
@@ -43,11 +43,13 @@ composition, and APIs designed for modern Python applications.
|
|
|
43
43
|
|
|
44
44
|
- **[Async-first durable code](https://zhongkechen.github.io/async-durable-execution/official-python-sdk-comparison.html#programming-model)** - Compared with the official AWS SDK, user-provided durable handlers, steps, child contexts, `flow` nodes, callback submitters, map item functions, parallel branches, and wait-for-condition checks are written with `async def`.
|
|
45
45
|
- **[Operations not available in the official SDK](https://zhongkechen.github.io/async-durable-execution/api/extension/replay_safe.html)** - This SDK adds [replay-safe helpers](https://zhongkechen.github.io/async-durable-execution/api/extension/replay_safe.html) (`random()`, `now()`, `timestamp()`, and `uuid()`) and [durable self-invocation](https://zhongkechen.github.io/async-durable-execution/api/extension/recurse.html) (`recurse()`).
|
|
46
|
+
- **[Stable custom operation SPI](https://zhongkechen.github.io/async-durable-execution/custom-operations.html)** - Third-party packages can reserve opaque deterministic primitive identities, use custom subtypes, and build stateful replay-safe operations without importing SDK internals.
|
|
46
47
|
- **[Declarative DAG workflows](https://zhongkechen.github.io/async-durable-execution/api/extension/flow.html#quick-start)** - Define acyclic workflows with typed node inputs, inferred or conditional dependencies, failure routes, and durable operations inside each node. The SDK validates the graph before execution and skips nodes that are not required by the selected outputs.
|
|
47
48
|
- **[Background operation tasks](https://zhongkechen.github.io/async-durable-execution/advanced-usage.html#background-operation-tasks)** - Durable operations such as `step(...)`, `wait(...)`, `invoke(...)`, `recurse(...)`, `run_in_child_context(...)`, and `flow(...)` return `asyncio.Task` objects, so independent operations can run in the background and be awaited together with `asyncio.gather` without using `parallel()` or `map()`.
|
|
48
49
|
- **[Pythonic operation parameters](https://zhongkechen.github.io/async-durable-execution/migrating-from-official-python-sdk.html#api-mapping)** - Operations use direct keyword arguments, standard Python types such as `datetime.timedelta`, and keyword-only names instead of configuration wrapper objects.
|
|
50
|
+
- **[Composable SerDes pipelines](https://zhongkechen.github.io/async-durable-execution/serdes-pipelines.html)** - Chain async string transformations and offload large checkpoint payloads to EFS or S3 Files with bounded previews and validated immutable storage.
|
|
49
51
|
- **[Integrated local and cloud runner](https://zhongkechen.github.io/async-durable-execution/api/runner.html)** - Runner functionality now ships through `async_durable_execution`, with separate local and cloud runner factories and typed test result helpers.
|
|
50
|
-
- **[
|
|
52
|
+
- **[Model-free Lambda clients](https://zhongkechen.github.io/async-durable-execution/advanced-usage.html#lambda-client-selection)** - The SDK owns its Lambda REST wire format instead of depending on botocore service models. Install the optional `httpx` extra to send requests with HTTPX; otherwise the same requests use botocore's synchronous HTTP transport through an async adapter.
|
|
51
53
|
- **[Replay-aware logging with stdlib logging](https://zhongkechen.github.io/async-durable-execution/migrating-from-official-python-sdk.html#logging)** - Standard `logging` loggers are enriched by durable context filtering so workflow logs remain replay safe.
|
|
52
54
|
- **[Lambda layer packaging](https://zhongkechen.github.io/async-durable-execution/advanced-usage.html#lambda-layer-packaging)** - The repo includes tooling and workflows to build and publish an SDK Lambda layer for functions that do not vendor dependencies directly.
|
|
53
55
|
|
|
@@ -59,13 +61,20 @@ Install the execution SDK:
|
|
|
59
61
|
pip install async-durable-execution
|
|
60
62
|
```
|
|
61
63
|
|
|
62
|
-
For an async Lambda service client, install the optional `
|
|
64
|
+
For an async Lambda service client, install the optional `httpx` extra:
|
|
63
65
|
|
|
64
66
|
```console
|
|
65
|
-
pip install "async-durable-execution[
|
|
67
|
+
pip install "async-durable-execution[httpx]"
|
|
66
68
|
```
|
|
67
69
|
|
|
68
|
-
The `
|
|
70
|
+
The `httpx` extra installs HTTPX, which the SDK uses for asynchronous
|
|
71
|
+
model-free Lambda REST calls. Without it, the SDK sends the same signed
|
|
72
|
+
requests with botocore's synchronous HTTP transport through a threaded async
|
|
73
|
+
adapter. Botocore continues to provide AWS credentials, endpoint metadata, and
|
|
74
|
+
SigV4 signing, but its generated Lambda service model is not used.
|
|
75
|
+
|
|
76
|
+
The previous `aioboto` extra remains available as a backward-compatible alias
|
|
77
|
+
for `httpx`.
|
|
69
78
|
|
|
70
79
|
Create a durable Lambda handler:
|
|
71
80
|
|
|
@@ -218,6 +227,7 @@ For the developer workflow to run or deploy example integration tests, see the [
|
|
|
218
227
|
- **[Deploy and Invoke](https://zhongkechen.github.io/async-durable-execution/deployment.html)** - Configure IAM, qualified function identifiers, invocations, CloudFormation, and SAM
|
|
219
228
|
- **[Using Synchronous Code](https://zhongkechen.github.io/async-durable-execution/using-synchronous-code.html)** - Wrap existing synchronous business logic and blocking clients safely
|
|
220
229
|
- **[Advanced Usage](https://zhongkechen.github.io/async-durable-execution/advanced-usage.html)** - Explore background operation tasks, batch completion conditions, Lambda clients, and Lambda layers
|
|
230
|
+
- **[Custom Durable Operations](https://zhongkechen.github.io/async-durable-execution/custom-operations.html)** - Build third-party durable operation libraries on the stable extension-author interface
|
|
221
231
|
- **[Runner Architecture](https://zhongkechen.github.io/async-durable-execution/runner-architecture.html)** - Local and cloud runner execution flow, components, and diagrams
|
|
222
232
|
- **[Contributing Guide](https://github.com/zhongkechen/async-durable-execution/blob/main/CONTRIBUTING.md)** - Development workflow, Hatch commands, testing, and pull request guidance
|
|
223
233
|
|
{async_durable_execution-2.2.0 → async_durable_execution-2.4.0}/async_durable_execution/__init__.py
RENAMED
|
@@ -6,6 +6,7 @@ from .__about__ import __version__
|
|
|
6
6
|
# Core runtime and supporting public APIs
|
|
7
7
|
from ._core import (
|
|
8
8
|
CallableRuntimeError,
|
|
9
|
+
ComposableSerDes,
|
|
9
10
|
DurableContext,
|
|
10
11
|
DurableExecutionsError,
|
|
11
12
|
DurableServiceClient,
|
|
@@ -22,27 +23,46 @@ from ._core import (
|
|
|
22
23
|
OperationSubType,
|
|
23
24
|
OperationType,
|
|
24
25
|
RetryStrategy,
|
|
26
|
+
RetryableSerDesError,
|
|
25
27
|
SerDes,
|
|
26
28
|
SerDesContext,
|
|
27
29
|
SerDesError,
|
|
30
|
+
SerDesPipelineError,
|
|
31
|
+
SerDesStage,
|
|
28
32
|
UserlandError,
|
|
29
33
|
ValidationError,
|
|
30
34
|
create_default_sync_client,
|
|
35
|
+
create_serdes_pipeline,
|
|
31
36
|
durable_callable,
|
|
32
37
|
durable_execution,
|
|
33
38
|
get_current_context,
|
|
34
39
|
get_durable_context,
|
|
35
40
|
get_serdes_context,
|
|
41
|
+
is_composable_serdes,
|
|
42
|
+
)
|
|
43
|
+
from .filesystem_serdes import (
|
|
44
|
+
FileSystemPathEncoding,
|
|
45
|
+
FileSystemSerDesMode,
|
|
46
|
+
FileSystemSerDesStage,
|
|
47
|
+
FileSystemSerDesStageConfig,
|
|
48
|
+
create_file_system_serdes_stage,
|
|
49
|
+
)
|
|
50
|
+
from .preview import (
|
|
51
|
+
FieldMatchMode,
|
|
52
|
+
PreviewConfig,
|
|
53
|
+
PreviewField,
|
|
54
|
+
PreviewMode,
|
|
55
|
+
build_preview,
|
|
36
56
|
)
|
|
37
57
|
|
|
38
58
|
# Durable operations
|
|
39
|
-
from .
|
|
59
|
+
from ._operation.with_retry import (
|
|
40
60
|
WithRetryContext,
|
|
41
61
|
get_with_retry_context,
|
|
42
62
|
with_retry,
|
|
43
63
|
)
|
|
44
|
-
from .
|
|
45
|
-
from .
|
|
64
|
+
from ._operation.map import MapItemContext, get_map_item_context, map
|
|
65
|
+
from ._operation.flow import (
|
|
46
66
|
FlowDefinitionError,
|
|
47
67
|
FlowExecutionError,
|
|
48
68
|
FlowNode,
|
|
@@ -56,7 +76,7 @@ from ._extension.flow import (
|
|
|
56
76
|
get_node_context,
|
|
57
77
|
node,
|
|
58
78
|
)
|
|
59
|
-
from .
|
|
79
|
+
from ._operation.parallel import (
|
|
60
80
|
BatchItem,
|
|
61
81
|
BatchItemStatus,
|
|
62
82
|
BatchResult,
|
|
@@ -66,38 +86,46 @@ from ._extension.parallel import (
|
|
|
66
86
|
CompletionStatus,
|
|
67
87
|
NestingType,
|
|
68
88
|
)
|
|
69
|
-
from .
|
|
89
|
+
from ._operation.wait_for_condition import (
|
|
70
90
|
PollingStrategy,
|
|
71
91
|
WaitForConditionCheckContext,
|
|
72
92
|
WaitForConditionError,
|
|
73
93
|
get_wait_for_condition_check_context,
|
|
74
94
|
wait_for_condition,
|
|
75
95
|
)
|
|
76
|
-
from .
|
|
77
|
-
from .
|
|
78
|
-
from .
|
|
96
|
+
from ._operation.invoke import invoke
|
|
97
|
+
from ._operation.recurse import recurse
|
|
98
|
+
from ._operation.parallel import (
|
|
79
99
|
parallel,
|
|
80
100
|
)
|
|
81
|
-
from .
|
|
101
|
+
from ._operation.callback import (
|
|
82
102
|
Callback,
|
|
83
103
|
CallbackError,
|
|
84
104
|
create_callback,
|
|
85
105
|
)
|
|
86
|
-
from .
|
|
106
|
+
from ._operation.wait_for_callback import (
|
|
87
107
|
WaitForCallbackContext,
|
|
88
108
|
get_wait_for_callback_context,
|
|
89
109
|
wait_for_callback,
|
|
90
110
|
)
|
|
91
|
-
from .
|
|
92
|
-
from .
|
|
111
|
+
from ._operation.child import SummaryGenerator, run_in_child_context
|
|
112
|
+
from ._operation.step import (
|
|
93
113
|
StepContext,
|
|
94
114
|
StepInterruptedError,
|
|
95
115
|
StepSemantics,
|
|
96
116
|
get_step_context,
|
|
97
117
|
step,
|
|
98
118
|
)
|
|
99
|
-
from .
|
|
100
|
-
from .
|
|
119
|
+
from ._operation.replay_safe import now, random, timestamp, uuid
|
|
120
|
+
from ._operation.wait import wait
|
|
121
|
+
from .extension import (
|
|
122
|
+
ExtensionContext,
|
|
123
|
+
ExtensionOperation,
|
|
124
|
+
ExtensionStepFunction,
|
|
125
|
+
ExtensionStepResult,
|
|
126
|
+
ExtensionStepRetryStrategy,
|
|
127
|
+
get_extension_context,
|
|
128
|
+
)
|
|
101
129
|
from ._runner import (
|
|
102
130
|
DurableFunctionCloudTestRunner,
|
|
103
131
|
DurableFunctionLocalTestRunner,
|
|
@@ -108,10 +136,13 @@ from ._runner import (
|
|
|
108
136
|
|
|
109
137
|
__all__ = [
|
|
110
138
|
"__version__",
|
|
139
|
+
"build_preview",
|
|
111
140
|
"create_callback",
|
|
112
141
|
"create_cloud_runner",
|
|
113
142
|
"create_default_sync_client",
|
|
143
|
+
"create_file_system_serdes_stage",
|
|
114
144
|
"create_local_runner",
|
|
145
|
+
"create_serdes_pipeline",
|
|
115
146
|
"durable_callable",
|
|
116
147
|
"durable_dag",
|
|
117
148
|
"durable_execution",
|
|
@@ -119,6 +150,7 @@ __all__ = [
|
|
|
119
150
|
"flow",
|
|
120
151
|
"get_current_context",
|
|
121
152
|
"get_durable_context",
|
|
153
|
+
"get_extension_context",
|
|
122
154
|
"get_map_item_context",
|
|
123
155
|
"get_node_context",
|
|
124
156
|
"get_serdes_context",
|
|
@@ -127,6 +159,7 @@ __all__ = [
|
|
|
127
159
|
"get_wait_for_condition_check_context",
|
|
128
160
|
"get_with_retry_context",
|
|
129
161
|
"invoke",
|
|
162
|
+
"is_composable_serdes",
|
|
130
163
|
"map",
|
|
131
164
|
"now",
|
|
132
165
|
"node",
|
|
@@ -147,6 +180,7 @@ __all__ = [
|
|
|
147
180
|
"Callback",
|
|
148
181
|
"CallbackError",
|
|
149
182
|
"CallableRuntimeError",
|
|
183
|
+
"ComposableSerDes",
|
|
150
184
|
"CompletionConfig",
|
|
151
185
|
"CompletionDecision",
|
|
152
186
|
"CompletionReason",
|
|
@@ -159,7 +193,17 @@ __all__ = [
|
|
|
159
193
|
"DurableExecutionsError",
|
|
160
194
|
"ErrorObject",
|
|
161
195
|
"ExecutionError",
|
|
196
|
+
"ExtensionContext",
|
|
197
|
+
"ExtensionOperation",
|
|
198
|
+
"ExtensionStepFunction",
|
|
199
|
+
"ExtensionStepResult",
|
|
200
|
+
"ExtensionStepRetryStrategy",
|
|
162
201
|
"ExtendedTypeSerDes",
|
|
202
|
+
"FieldMatchMode",
|
|
203
|
+
"FileSystemPathEncoding",
|
|
204
|
+
"FileSystemSerDesMode",
|
|
205
|
+
"FileSystemSerDesStage",
|
|
206
|
+
"FileSystemSerDesStageConfig",
|
|
163
207
|
"FlowDefinitionError",
|
|
164
208
|
"FlowExecutionError",
|
|
165
209
|
"FlowNode",
|
|
@@ -178,10 +222,17 @@ __all__ = [
|
|
|
178
222
|
"OperationStatus",
|
|
179
223
|
"OperationSubType",
|
|
180
224
|
"OperationType",
|
|
225
|
+
"PollingStrategy",
|
|
226
|
+
"PreviewConfig",
|
|
227
|
+
"PreviewField",
|
|
228
|
+
"PreviewMode",
|
|
181
229
|
"RetryStrategy",
|
|
230
|
+
"RetryableSerDesError",
|
|
182
231
|
"SerDes",
|
|
183
232
|
"SerDesContext",
|
|
184
233
|
"SerDesError",
|
|
234
|
+
"SerDesPipelineError",
|
|
235
|
+
"SerDesStage",
|
|
185
236
|
"StepContext",
|
|
186
237
|
"StepInterruptedError",
|
|
187
238
|
"StepSemantics",
|
|
@@ -192,5 +243,4 @@ __all__ = [
|
|
|
192
243
|
"WaitForConditionCheckContext",
|
|
193
244
|
"WaitForConditionError",
|
|
194
245
|
"WithRetryContext",
|
|
195
|
-
"PollingStrategy",
|
|
196
246
|
]
|
|
@@ -3,7 +3,9 @@
|
|
|
3
3
|
from .client import (
|
|
4
4
|
DurableServiceClient,
|
|
5
5
|
aioboto_is_installed,
|
|
6
|
+
create_default_async_client,
|
|
6
7
|
create_default_sync_client,
|
|
8
|
+
httpx_is_installed,
|
|
7
9
|
)
|
|
8
10
|
from .config import (
|
|
9
11
|
Duration,
|
|
@@ -15,6 +17,7 @@ from .config import (
|
|
|
15
17
|
from .context import (
|
|
16
18
|
DurableContext,
|
|
17
19
|
OperationContext,
|
|
20
|
+
SerDesContext,
|
|
18
21
|
bind_current_context,
|
|
19
22
|
bind_durable_definition,
|
|
20
23
|
ensure_durable_operations_allowed,
|
|
@@ -30,6 +33,7 @@ from .exceptions import (
|
|
|
30
33
|
InvalidStateError,
|
|
31
34
|
InvocationError,
|
|
32
35
|
OrphanedChildException,
|
|
36
|
+
RetryableSerDesError,
|
|
33
37
|
SerDesError,
|
|
34
38
|
SuspendExecution,
|
|
35
39
|
TerminationReason,
|
|
@@ -50,6 +54,8 @@ from .execution import (
|
|
|
50
54
|
durable_execution,
|
|
51
55
|
)
|
|
52
56
|
from .models import (
|
|
57
|
+
AwsApiModel,
|
|
58
|
+
BotoSerializableModel,
|
|
53
59
|
CallbackDetails,
|
|
54
60
|
CallbackOptions,
|
|
55
61
|
CallbackTimeoutType,
|
|
@@ -64,34 +70,38 @@ from .models import (
|
|
|
64
70
|
ExecutionDetails,
|
|
65
71
|
InvocationStatus,
|
|
66
72
|
LambdaContext,
|
|
73
|
+
MappingModel,
|
|
67
74
|
Operation,
|
|
68
75
|
OperationAction,
|
|
69
76
|
OperationIdentifier,
|
|
70
77
|
OperationPayload,
|
|
71
78
|
OperationStatus,
|
|
72
79
|
OperationSubType,
|
|
80
|
+
OperationSubTypeValue,
|
|
73
81
|
OperationType,
|
|
74
82
|
OperationUpdate,
|
|
75
|
-
SerializableModel,
|
|
76
83
|
StateOutput,
|
|
77
84
|
StepDetails,
|
|
78
85
|
TimestampConverter,
|
|
79
86
|
WaitDetails,
|
|
80
87
|
WaitOptions,
|
|
81
|
-
_metadata,
|
|
82
88
|
)
|
|
83
89
|
from .serdes import (
|
|
90
|
+
ComposableSerDes,
|
|
84
91
|
DEFAULT_JSON_SERDES,
|
|
85
92
|
EncodedValue,
|
|
86
93
|
ExtendedTypeSerDes,
|
|
87
94
|
JsonSerDes,
|
|
88
95
|
PassThroughSerDes,
|
|
89
96
|
SerDes,
|
|
90
|
-
|
|
97
|
+
SerDesPipelineError,
|
|
98
|
+
SerDesStage,
|
|
91
99
|
TypeCodecExtension,
|
|
92
100
|
TypeTag,
|
|
101
|
+
create_serdes_pipeline,
|
|
93
102
|
deserialize,
|
|
94
103
|
get_serdes_context,
|
|
104
|
+
is_composable_serdes,
|
|
95
105
|
serialize,
|
|
96
106
|
)
|
|
97
107
|
from .state import RECURSIVE_LEVEL_INPUT_FIELD, ExecutionState
|
|
@@ -99,6 +109,7 @@ from .task import create_eager_task
|
|
|
99
109
|
|
|
100
110
|
__all__ = [
|
|
101
111
|
"CallableRuntimeError",
|
|
112
|
+
"ComposableSerDes",
|
|
102
113
|
"DurableContext",
|
|
103
114
|
"DurableExecutionsError",
|
|
104
115
|
"DurableServiceClient",
|
|
@@ -115,15 +126,20 @@ __all__ = [
|
|
|
115
126
|
"OperationSubType",
|
|
116
127
|
"OperationType",
|
|
117
128
|
"RetryStrategy",
|
|
129
|
+
"RetryableSerDesError",
|
|
118
130
|
"SerDes",
|
|
119
131
|
"SerDesContext",
|
|
120
132
|
"SerDesError",
|
|
133
|
+
"SerDesPipelineError",
|
|
134
|
+
"SerDesStage",
|
|
121
135
|
"UserlandError",
|
|
122
136
|
"ValidationError",
|
|
123
137
|
"create_default_sync_client",
|
|
138
|
+
"create_serdes_pipeline",
|
|
124
139
|
"durable_callable",
|
|
125
140
|
"durable_execution",
|
|
126
141
|
"get_current_context",
|
|
127
142
|
"get_durable_context",
|
|
128
143
|
"get_serdes_context",
|
|
144
|
+
"is_composable_serdes",
|
|
129
145
|
]
|