aws-durable-execution-sdk-python 1.1.1__tar.gz → 1.1.2__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.
- {aws_durable_execution_sdk_python-1.1.1 → aws_durable_execution_sdk_python-1.1.2}/.github/workflows/ci.yml +4 -4
- {aws_durable_execution_sdk_python-1.1.1 → aws_durable_execution_sdk_python-1.1.2}/.github/workflows/integration-tests.yml +6 -6
- {aws_durable_execution_sdk_python-1.1.1 → aws_durable_execution_sdk_python-1.1.2}/.github/workflows/pypi-publish.yml +4 -4
- {aws_durable_execution_sdk_python-1.1.1 → aws_durable_execution_sdk_python-1.1.2}/.github/workflows/scorecard.yml +3 -3
- {aws_durable_execution_sdk_python-1.1.1 → aws_durable_execution_sdk_python-1.1.2}/.github/workflows/sync-package.yml +8 -20
- {aws_durable_execution_sdk_python-1.1.1 → aws_durable_execution_sdk_python-1.1.2}/.github/workflows/test-parser.yml +1 -1
- aws_durable_execution_sdk_python-1.1.2/PKG-INFO +131 -0
- aws_durable_execution_sdk_python-1.1.2/README.md +108 -0
- {aws_durable_execution_sdk_python-1.1.1 → aws_durable_execution_sdk_python-1.1.2}/docs/advanced/testing-modes.md +1 -2
- aws_durable_execution_sdk_python-1.1.2/docs/agents.md +933 -0
- aws_durable_execution_sdk_python-1.1.1/README.md → aws_durable_execution_sdk_python-1.1.2/docs/architecture.md +20 -173
- {aws_durable_execution_sdk_python-1.1.1 → aws_durable_execution_sdk_python-1.1.2}/docs/best-practices.md +3 -3
- {aws_durable_execution_sdk_python-1.1.1 → aws_durable_execution_sdk_python-1.1.2}/docs/core/child-contexts.md +7 -5
- {aws_durable_execution_sdk_python-1.1.1 → aws_durable_execution_sdk_python-1.1.2}/docs/core/parallel.md +57 -46
- {aws_durable_execution_sdk_python-1.1.1 → aws_durable_execution_sdk_python-1.1.2}/docs/core/wait.md +1 -6
- {aws_durable_execution_sdk_python-1.1.1 → aws_durable_execution_sdk_python-1.1.2}/docs/getting-started.md +6 -5
- {aws_durable_execution_sdk_python-1.1.1 → aws_durable_execution_sdk_python-1.1.2}/docs/index.md +4 -33
- {aws_durable_execution_sdk_python-1.1.1 → aws_durable_execution_sdk_python-1.1.2}/docs/testing-patterns/basic-tests.md +4 -4
- {aws_durable_execution_sdk_python-1.1.1 → aws_durable_execution_sdk_python-1.1.2}/docs/testing-patterns/complex-workflows.md +5 -5
- {aws_durable_execution_sdk_python-1.1.1 → aws_durable_execution_sdk_python-1.1.2}/docs/testing-patterns/stores.md +2 -3
- {aws_durable_execution_sdk_python-1.1.1 → aws_durable_execution_sdk_python-1.1.2}/pyproject.toml +1 -1
- {aws_durable_execution_sdk_python-1.1.1 → aws_durable_execution_sdk_python-1.1.2}/src/aws_durable_execution_sdk_python/__about__.py +1 -1
- {aws_durable_execution_sdk_python-1.1.1 → aws_durable_execution_sdk_python-1.1.2}/src/aws_durable_execution_sdk_python/concurrency/executor.py +14 -4
- {aws_durable_execution_sdk_python-1.1.1 → aws_durable_execution_sdk_python-1.1.2}/src/aws_durable_execution_sdk_python/execution.py +3 -3
- {aws_durable_execution_sdk_python-1.1.1 → aws_durable_execution_sdk_python-1.1.2}/src/aws_durable_execution_sdk_python/lambda_service.py +52 -31
- {aws_durable_execution_sdk_python-1.1.1 → aws_durable_execution_sdk_python-1.1.2}/src/aws_durable_execution_sdk_python/state.py +1 -0
- {aws_durable_execution_sdk_python-1.1.1 → aws_durable_execution_sdk_python-1.1.2}/tests/concurrency_test.py +125 -3
- {aws_durable_execution_sdk_python-1.1.1 → aws_durable_execution_sdk_python-1.1.2}/tests/execution_test.py +143 -0
- {aws_durable_execution_sdk_python-1.1.1 → aws_durable_execution_sdk_python-1.1.2}/tests/lambda_service_test.py +76 -3
- {aws_durable_execution_sdk_python-1.1.1 → aws_durable_execution_sdk_python-1.1.2}/tests/state_test.py +33 -0
- aws_durable_execution_sdk_python-1.1.1/.github/CODEOWNERS +0 -1
- aws_durable_execution_sdk_python-1.1.1/PKG-INFO +0 -681
- {aws_durable_execution_sdk_python-1.1.1 → aws_durable_execution_sdk_python-1.1.2}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {aws_durable_execution_sdk_python-1.1.1 → aws_durable_execution_sdk_python-1.1.2}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {aws_durable_execution_sdk_python-1.1.1 → aws_durable_execution_sdk_python-1.1.2}/.github/ISSUE_TEMPLATE/documentation.yml +0 -0
- {aws_durable_execution_sdk_python-1.1.1 → aws_durable_execution_sdk_python-1.1.2}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {aws_durable_execution_sdk_python-1.1.1 → aws_durable_execution_sdk_python-1.1.2}/.github/dependabot.yml +0 -0
- {aws_durable_execution_sdk_python-1.1.1 → aws_durable_execution_sdk_python-1.1.2}/.github/workflows/lintcommit.js +0 -0
- {aws_durable_execution_sdk_python-1.1.1 → aws_durable_execution_sdk_python-1.1.2}/.gitignore +0 -0
- {aws_durable_execution_sdk_python-1.1.1 → aws_durable_execution_sdk_python-1.1.2}/CODE_OF_CONDUCT.md +0 -0
- {aws_durable_execution_sdk_python-1.1.1 → aws_durable_execution_sdk_python-1.1.2}/CONTRIBUTING.md +0 -0
- {aws_durable_execution_sdk_python-1.1.1 → aws_durable_execution_sdk_python-1.1.2}/LICENSE +0 -0
- {aws_durable_execution_sdk_python-1.1.1 → aws_durable_execution_sdk_python-1.1.2}/NOTICE +0 -0
- {aws_durable_execution_sdk_python-1.1.1 → aws_durable_execution_sdk_python-1.1.2}/docs/advanced/error-handling.md +0 -0
- {aws_durable_execution_sdk_python-1.1.1 → aws_durable_execution_sdk_python-1.1.2}/docs/advanced/serialization.md +0 -0
- {aws_durable_execution_sdk_python-1.1.1 → aws_durable_execution_sdk_python-1.1.2}/docs/api-reference/.gitkeep +0 -0
- {aws_durable_execution_sdk_python-1.1.1 → aws_durable_execution_sdk_python-1.1.2}/docs/core/callbacks.md +0 -0
- {aws_durable_execution_sdk_python-1.1.1 → aws_durable_execution_sdk_python-1.1.2}/docs/core/invoke.md +0 -0
- {aws_durable_execution_sdk_python-1.1.1 → aws_durable_execution_sdk_python-1.1.2}/docs/core/logger.md +0 -0
- {aws_durable_execution_sdk_python-1.1.1 → aws_durable_execution_sdk_python-1.1.2}/docs/core/map.md +0 -0
- {aws_durable_execution_sdk_python-1.1.1 → aws_durable_execution_sdk_python-1.1.2}/docs/core/steps.md +0 -0
- {aws_durable_execution_sdk_python-1.1.1 → aws_durable_execution_sdk_python-1.1.2}/docs/testing-patterns/.gitkeep +0 -0
- {aws_durable_execution_sdk_python-1.1.1 → aws_durable_execution_sdk_python-1.1.2}/ops/__tests__/test_parse_sdk_branch.py +0 -0
- {aws_durable_execution_sdk_python-1.1.1 → aws_durable_execution_sdk_python-1.1.2}/ops/ci-checks.sh +0 -0
- {aws_durable_execution_sdk_python-1.1.1 → aws_durable_execution_sdk_python-1.1.2}/ops/parse_sdk_branch.py +0 -0
- {aws_durable_execution_sdk_python-1.1.1 → aws_durable_execution_sdk_python-1.1.2}/src/aws_durable_execution_sdk_python/.gitignore +0 -0
- {aws_durable_execution_sdk_python-1.1.1 → aws_durable_execution_sdk_python-1.1.2}/src/aws_durable_execution_sdk_python/__init__.py +0 -0
- {aws_durable_execution_sdk_python-1.1.1 → aws_durable_execution_sdk_python-1.1.2}/src/aws_durable_execution_sdk_python/concurrency/__init__.py +0 -0
- {aws_durable_execution_sdk_python-1.1.1 → aws_durable_execution_sdk_python-1.1.2}/src/aws_durable_execution_sdk_python/concurrency/models.py +0 -0
- {aws_durable_execution_sdk_python-1.1.1 → aws_durable_execution_sdk_python-1.1.2}/src/aws_durable_execution_sdk_python/config.py +0 -0
- {aws_durable_execution_sdk_python-1.1.1 → aws_durable_execution_sdk_python-1.1.2}/src/aws_durable_execution_sdk_python/context.py +0 -0
- {aws_durable_execution_sdk_python-1.1.1 → aws_durable_execution_sdk_python-1.1.2}/src/aws_durable_execution_sdk_python/exceptions.py +0 -0
- {aws_durable_execution_sdk_python-1.1.1 → aws_durable_execution_sdk_python-1.1.2}/src/aws_durable_execution_sdk_python/identifier.py +0 -0
- {aws_durable_execution_sdk_python-1.1.1 → aws_durable_execution_sdk_python-1.1.2}/src/aws_durable_execution_sdk_python/logger.py +0 -0
- {aws_durable_execution_sdk_python-1.1.1 → aws_durable_execution_sdk_python-1.1.2}/src/aws_durable_execution_sdk_python/operation/__init__.py +0 -0
- {aws_durable_execution_sdk_python-1.1.1 → aws_durable_execution_sdk_python-1.1.2}/src/aws_durable_execution_sdk_python/operation/base.py +0 -0
- {aws_durable_execution_sdk_python-1.1.1 → aws_durable_execution_sdk_python-1.1.2}/src/aws_durable_execution_sdk_python/operation/callback.py +0 -0
- {aws_durable_execution_sdk_python-1.1.1 → aws_durable_execution_sdk_python-1.1.2}/src/aws_durable_execution_sdk_python/operation/child.py +0 -0
- {aws_durable_execution_sdk_python-1.1.1 → aws_durable_execution_sdk_python-1.1.2}/src/aws_durable_execution_sdk_python/operation/invoke.py +0 -0
- {aws_durable_execution_sdk_python-1.1.1 → aws_durable_execution_sdk_python-1.1.2}/src/aws_durable_execution_sdk_python/operation/map.py +0 -0
- {aws_durable_execution_sdk_python-1.1.1 → aws_durable_execution_sdk_python-1.1.2}/src/aws_durable_execution_sdk_python/operation/parallel.py +0 -0
- {aws_durable_execution_sdk_python-1.1.1 → aws_durable_execution_sdk_python-1.1.2}/src/aws_durable_execution_sdk_python/operation/step.py +0 -0
- {aws_durable_execution_sdk_python-1.1.1 → aws_durable_execution_sdk_python-1.1.2}/src/aws_durable_execution_sdk_python/operation/wait.py +0 -0
- {aws_durable_execution_sdk_python-1.1.1 → aws_durable_execution_sdk_python-1.1.2}/src/aws_durable_execution_sdk_python/operation/wait_for_condition.py +0 -0
- {aws_durable_execution_sdk_python-1.1.1 → aws_durable_execution_sdk_python-1.1.2}/src/aws_durable_execution_sdk_python/py.typed +0 -0
- {aws_durable_execution_sdk_python-1.1.1 → aws_durable_execution_sdk_python-1.1.2}/src/aws_durable_execution_sdk_python/retries.py +0 -0
- {aws_durable_execution_sdk_python-1.1.1 → aws_durable_execution_sdk_python-1.1.2}/src/aws_durable_execution_sdk_python/serdes.py +0 -0
- {aws_durable_execution_sdk_python-1.1.1 → aws_durable_execution_sdk_python-1.1.2}/src/aws_durable_execution_sdk_python/suspend.py +0 -0
- {aws_durable_execution_sdk_python-1.1.1 → aws_durable_execution_sdk_python-1.1.2}/src/aws_durable_execution_sdk_python/threading.py +0 -0
- {aws_durable_execution_sdk_python-1.1.1 → aws_durable_execution_sdk_python-1.1.2}/src/aws_durable_execution_sdk_python/types.py +0 -0
- {aws_durable_execution_sdk_python-1.1.1 → aws_durable_execution_sdk_python-1.1.2}/src/aws_durable_execution_sdk_python/waits.py +0 -0
- {aws_durable_execution_sdk_python-1.1.1 → aws_durable_execution_sdk_python-1.1.2}/tests/__init__.py +0 -0
- {aws_durable_execution_sdk_python-1.1.1 → aws_durable_execution_sdk_python-1.1.2}/tests/config_test.py +0 -0
- {aws_durable_execution_sdk_python-1.1.1 → aws_durable_execution_sdk_python-1.1.2}/tests/context_test.py +0 -0
- {aws_durable_execution_sdk_python-1.1.1 → aws_durable_execution_sdk_python-1.1.2}/tests/durable_executions_python_language_sdk_test.py +0 -0
- {aws_durable_execution_sdk_python-1.1.1 → aws_durable_execution_sdk_python-1.1.2}/tests/e2e/__init__.py +0 -0
- {aws_durable_execution_sdk_python-1.1.1 → aws_durable_execution_sdk_python-1.1.2}/tests/e2e/checkpoint_response_int_test.py +0 -0
- {aws_durable_execution_sdk_python-1.1.1 → aws_durable_execution_sdk_python-1.1.2}/tests/e2e/execution_int_test.py +0 -0
- {aws_durable_execution_sdk_python-1.1.1 → aws_durable_execution_sdk_python-1.1.2}/tests/exceptions_test.py +0 -0
- {aws_durable_execution_sdk_python-1.1.1 → aws_durable_execution_sdk_python-1.1.2}/tests/logger_test.py +0 -0
- {aws_durable_execution_sdk_python-1.1.1 → aws_durable_execution_sdk_python-1.1.2}/tests/operation/__init__.py +0 -0
- {aws_durable_execution_sdk_python-1.1.1 → aws_durable_execution_sdk_python-1.1.2}/tests/operation/base_test.py +0 -0
- {aws_durable_execution_sdk_python-1.1.1 → aws_durable_execution_sdk_python-1.1.2}/tests/operation/callback_test.py +0 -0
- {aws_durable_execution_sdk_python-1.1.1 → aws_durable_execution_sdk_python-1.1.2}/tests/operation/child_test.py +0 -0
- {aws_durable_execution_sdk_python-1.1.1 → aws_durable_execution_sdk_python-1.1.2}/tests/operation/invoke_test.py +0 -0
- {aws_durable_execution_sdk_python-1.1.1 → aws_durable_execution_sdk_python-1.1.2}/tests/operation/map_test.py +0 -0
- {aws_durable_execution_sdk_python-1.1.1 → aws_durable_execution_sdk_python-1.1.2}/tests/operation/parallel_test.py +0 -0
- {aws_durable_execution_sdk_python-1.1.1 → aws_durable_execution_sdk_python-1.1.2}/tests/operation/step_test.py +0 -0
- {aws_durable_execution_sdk_python-1.1.1 → aws_durable_execution_sdk_python-1.1.2}/tests/operation/wait_for_condition_test.py +0 -0
- {aws_durable_execution_sdk_python-1.1.1 → aws_durable_execution_sdk_python-1.1.2}/tests/operation/wait_test.py +0 -0
- {aws_durable_execution_sdk_python-1.1.1 → aws_durable_execution_sdk_python-1.1.2}/tests/retries_test.py +0 -0
- {aws_durable_execution_sdk_python-1.1.1 → aws_durable_execution_sdk_python-1.1.2}/tests/serdes_test.py +0 -0
- {aws_durable_execution_sdk_python-1.1.1 → aws_durable_execution_sdk_python-1.1.2}/tests/suspend_test.py +0 -0
- {aws_durable_execution_sdk_python-1.1.1 → aws_durable_execution_sdk_python-1.1.2}/tests/test_helpers.py +0 -0
- {aws_durable_execution_sdk_python-1.1.1 → aws_durable_execution_sdk_python-1.1.2}/tests/threading_test.py +0 -0
- {aws_durable_execution_sdk_python-1.1.1 → aws_durable_execution_sdk_python-1.1.2}/tests/types_test.py +0 -0
- {aws_durable_execution_sdk_python-1.1.1 → aws_durable_execution_sdk_python-1.1.2}/tests/waits_test.py +0 -0
|
@@ -16,9 +16,9 @@ jobs:
|
|
|
16
16
|
# Note: To re-run `lint-commits` after fixing the PR title, close-and-reopen the PR.
|
|
17
17
|
runs-on: ubuntu-latest
|
|
18
18
|
steps:
|
|
19
|
-
- uses: actions/checkout@
|
|
19
|
+
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
20
20
|
- name: Use Node.js
|
|
21
|
-
uses: actions/setup-node@
|
|
21
|
+
uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
|
|
22
22
|
with:
|
|
23
23
|
node-version: 22.x
|
|
24
24
|
- name: Check PR title
|
|
@@ -35,9 +35,9 @@ jobs:
|
|
|
35
35
|
python-version: ["3.11","3.12","3.13","3.14"]
|
|
36
36
|
|
|
37
37
|
steps:
|
|
38
|
-
- uses: actions/checkout@
|
|
38
|
+
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
39
39
|
- name: Set up Python ${{ matrix.python-version }}
|
|
40
|
-
uses: actions/setup-python@
|
|
40
|
+
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
|
|
41
41
|
with:
|
|
42
42
|
python-version: ${{ matrix.python-version }}
|
|
43
43
|
- name: Install Hatch
|
|
@@ -18,7 +18,7 @@ jobs:
|
|
|
18
18
|
|
|
19
19
|
steps:
|
|
20
20
|
- name: Checkout Language SDK (this PR)
|
|
21
|
-
uses: actions/checkout@
|
|
21
|
+
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
22
22
|
with:
|
|
23
23
|
path: language-sdk
|
|
24
24
|
|
|
@@ -29,7 +29,7 @@ jobs:
|
|
|
29
29
|
PR_BODY: ${{ github.event.pull_request.body }}
|
|
30
30
|
|
|
31
31
|
- name: Checkout Testing SDK
|
|
32
|
-
uses: actions/checkout@
|
|
32
|
+
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
33
33
|
with:
|
|
34
34
|
repository: aws/aws-durable-execution-sdk-python-testing
|
|
35
35
|
ref: ${{ steps.parse.outputs.testing_ref }}
|
|
@@ -37,7 +37,7 @@ jobs:
|
|
|
37
37
|
path: testing-sdk
|
|
38
38
|
|
|
39
39
|
- name: Set up Python ${{ matrix.python-version }}
|
|
40
|
-
uses: actions/setup-python@
|
|
40
|
+
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
|
|
41
41
|
with:
|
|
42
42
|
python-version: ${{ matrix.python-version }}
|
|
43
43
|
|
|
@@ -67,7 +67,7 @@ jobs:
|
|
|
67
67
|
|
|
68
68
|
steps:
|
|
69
69
|
- name: Checkout Language SDK (this PR)
|
|
70
|
-
uses: actions/checkout@
|
|
70
|
+
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
71
71
|
with:
|
|
72
72
|
path: language-sdk
|
|
73
73
|
|
|
@@ -78,7 +78,7 @@ jobs:
|
|
|
78
78
|
PR_BODY: ${{ github.event.pull_request.body }}
|
|
79
79
|
|
|
80
80
|
- name: Checkout Testing SDK
|
|
81
|
-
uses: actions/checkout@
|
|
81
|
+
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
82
82
|
with:
|
|
83
83
|
repository: aws/aws-durable-execution-sdk-python-testing
|
|
84
84
|
ref: ${{ steps.parse.outputs.testing_ref }}
|
|
@@ -86,7 +86,7 @@ jobs:
|
|
|
86
86
|
path: testing-sdk
|
|
87
87
|
|
|
88
88
|
- name: Set up Python 3.13
|
|
89
|
-
uses: actions/setup-python@
|
|
89
|
+
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
|
|
90
90
|
with:
|
|
91
91
|
python-version: '3.13'
|
|
92
92
|
|
|
@@ -20,9 +20,9 @@ jobs:
|
|
|
20
20
|
runs-on: ubuntu-latest
|
|
21
21
|
|
|
22
22
|
steps:
|
|
23
|
-
- uses: actions/checkout@
|
|
23
|
+
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
24
24
|
|
|
25
|
-
- uses: actions/setup-python@
|
|
25
|
+
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
|
|
26
26
|
with:
|
|
27
27
|
python-version: "3.11"
|
|
28
28
|
- name: Install Hatch
|
|
@@ -34,7 +34,7 @@ jobs:
|
|
|
34
34
|
hatch build
|
|
35
35
|
|
|
36
36
|
- name: Upload distributions
|
|
37
|
-
uses: actions/upload-artifact@
|
|
37
|
+
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
|
|
38
38
|
with:
|
|
39
39
|
name: release-dists
|
|
40
40
|
path: dist/
|
|
@@ -60,7 +60,7 @@ jobs:
|
|
|
60
60
|
|
|
61
61
|
steps:
|
|
62
62
|
- name: Retrieve release distributions
|
|
63
|
-
uses: actions/download-artifact@
|
|
63
|
+
uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7.0.0
|
|
64
64
|
with:
|
|
65
65
|
name: release-dists
|
|
66
66
|
path: dist/
|
|
@@ -36,7 +36,7 @@ jobs:
|
|
|
36
36
|
|
|
37
37
|
steps:
|
|
38
38
|
- name: "Checkout code"
|
|
39
|
-
uses: actions/checkout@
|
|
39
|
+
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
40
40
|
with:
|
|
41
41
|
persist-credentials: false
|
|
42
42
|
|
|
@@ -66,7 +66,7 @@ jobs:
|
|
|
66
66
|
# Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF
|
|
67
67
|
# format to the repository Actions tab.
|
|
68
68
|
- name: "Upload artifact"
|
|
69
|
-
uses: actions/upload-artifact@
|
|
69
|
+
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
|
|
70
70
|
with:
|
|
71
71
|
name: SARIF file
|
|
72
72
|
path: results.sarif
|
|
@@ -75,6 +75,6 @@ jobs:
|
|
|
75
75
|
# Upload the results to GitHub's code scanning dashboard (optional).
|
|
76
76
|
# Commenting out will disable upload of results to your repo's Code Scanning dashboard
|
|
77
77
|
- name: "Upload to code-scanning"
|
|
78
|
-
uses: github/codeql-action/upload-sarif@
|
|
78
|
+
uses: github/codeql-action/upload-sarif@19b2f06db2b6f5108140aeb04014ef02b648f789 # v4.31.11
|
|
79
79
|
with:
|
|
80
80
|
sarif_file: results.sarif
|
|
@@ -20,9 +20,9 @@ jobs:
|
|
|
20
20
|
python-version: ["3.13"]
|
|
21
21
|
|
|
22
22
|
steps:
|
|
23
|
-
- uses: actions/checkout@
|
|
23
|
+
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
24
24
|
- name: Set up Python ${{ matrix.python-version }}
|
|
25
|
-
uses: actions/setup-python@
|
|
25
|
+
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
|
|
26
26
|
with:
|
|
27
27
|
python-version: ${{ matrix.python-version }}
|
|
28
28
|
- name: Install Hatch
|
|
@@ -36,21 +36,15 @@ jobs:
|
|
|
36
36
|
role-to-assume: "${{ secrets.ACTIONS_SYNC_ROLE_NAME }}"
|
|
37
37
|
role-session-name: gh-python
|
|
38
38
|
aws-region: ${{ env.AWS_REGION }}
|
|
39
|
-
- name: Get tar gz name
|
|
40
|
-
id: tar_gz_name
|
|
41
|
-
run: |
|
|
42
|
-
TAR_GZ_NAME=$(ls *.tar.gz)
|
|
43
|
-
echo "tar_gz_name=$TAR_GZ_NAME" >> $GITHUB_OUTPUT
|
|
44
|
-
working-directory: dist
|
|
45
39
|
- name: Copy tar gz build file to s3
|
|
46
40
|
run: |
|
|
47
|
-
aws s3 cp ./dist
|
|
48
|
-
s3://${{ secrets.S3_BUCKET_NAME }}/
|
|
41
|
+
aws s3 cp ./dist/*.tar.gz \
|
|
42
|
+
s3://${{ secrets.S3_BUCKET_NAME }}/aws-durable-execution-sdk-python.tar.gz
|
|
49
43
|
- name: commit tar gz to Gitfarm
|
|
50
44
|
run: |
|
|
51
45
|
aws lambda invoke \
|
|
52
46
|
--function-name ${{ secrets.SYNC_LAMBDA_ARN }} \
|
|
53
|
-
--payload '{"gitFarmRepo":"${{ secrets.GITFARM_LAN_SDK_REPO }}","gitFarmBranch":"${{ secrets.GITFARM_LAN_SDK_BRANCH }}","gitFarmFilepath":"
|
|
47
|
+
--payload '{"gitFarmRepo":"${{ secrets.GITFARM_LAN_SDK_REPO }}","gitFarmBranch":"${{ secrets.GITFARM_LAN_SDK_BRANCH }}","gitFarmFilepath":"aws-durable-execution-sdk-python.tar.gz","s3Bucket":"${{ secrets.S3_BUCKET_NAME }}","s3FilePath":"aws-durable-execution-sdk-python.tar.gz", "gitHubRepo": "aws-durable-execution-sdk-python", "gitHubCommit":"${{ github.sha }}"}' \
|
|
54
48
|
--cli-binary-format raw-in-base64-out \
|
|
55
49
|
output.txt
|
|
56
50
|
- name: Check for error in lambda invoke
|
|
@@ -59,21 +53,15 @@ jobs:
|
|
|
59
53
|
cat output.txt
|
|
60
54
|
exit 1
|
|
61
55
|
fi
|
|
62
|
-
- name: Get whl name
|
|
63
|
-
id: whl_name
|
|
64
|
-
run: |
|
|
65
|
-
WHL_NAME=$(ls *.whl)
|
|
66
|
-
echo "whl_name=$WHL_NAME" >> $GITHUB_OUTPUT
|
|
67
|
-
working-directory: dist
|
|
68
56
|
- name: Copy whl build file to s3
|
|
69
57
|
run: |
|
|
70
|
-
aws s3 cp ./dist
|
|
71
|
-
s3://${{ secrets.S3_BUCKET_NAME }}/
|
|
58
|
+
aws s3 cp ./dist/*.whl \
|
|
59
|
+
s3://${{ secrets.S3_BUCKET_NAME }}/aws-durable-execution-sdk-python.whl
|
|
72
60
|
- name: commit whl to Gitfarm
|
|
73
61
|
run: |
|
|
74
62
|
aws lambda invoke \
|
|
75
63
|
--function-name ${{ secrets.SYNC_LAMBDA_ARN }} \
|
|
76
|
-
--payload '{"gitFarmRepo":"${{ secrets.GITFARM_LAN_SDK_REPO }}","gitFarmBranch":"${{ secrets.GITFARM_LAN_SDK_BRANCH }}","gitFarmFilepath":"
|
|
64
|
+
--payload '{"gitFarmRepo":"${{ secrets.GITFARM_LAN_SDK_REPO }}","gitFarmBranch":"${{ secrets.GITFARM_LAN_SDK_BRANCH }}","gitFarmFilepath":"aws-durable-execution-sdk-python.whl","s3Bucket":"${{ secrets.S3_BUCKET_NAME }}","s3FilePath":"aws-durable-execution-sdk-python.whl", "gitHubRepo": "aws-durable-execution-sdk-python", "gitHubCommit":"${{ github.sha }}"}' \
|
|
77
65
|
--cli-binary-format raw-in-base64-out \
|
|
78
66
|
output.txt
|
|
79
67
|
- name: Check for error in lambda invoke
|
|
@@ -18,7 +18,7 @@ jobs:
|
|
|
18
18
|
test-parser:
|
|
19
19
|
runs-on: ubuntu-latest
|
|
20
20
|
steps:
|
|
21
|
-
- uses: actions/checkout@
|
|
21
|
+
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
22
22
|
|
|
23
23
|
- name: Run parser tests
|
|
24
24
|
run: python ops/__tests__/test_parse_sdk_branch.py
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: aws-durable-execution-sdk-python
|
|
3
|
+
Version: 1.1.2
|
|
4
|
+
Summary: AWS Durable Execution SDK for Python
|
|
5
|
+
Project-URL: Documentation, https://github.com/aws/aws-durable-execution-sdk-python#readme
|
|
6
|
+
Project-URL: Issues, https://github.com/aws/aws-durable-execution-sdk-python/issues
|
|
7
|
+
Project-URL: Source, https://github.com/aws/aws-durable-execution-sdk-python
|
|
8
|
+
Author-email: yaythomas <tgaigher@amazon.com>
|
|
9
|
+
License-Expression: Apache-2.0
|
|
10
|
+
License-File: LICENSE
|
|
11
|
+
License-File: NOTICE
|
|
12
|
+
Classifier: Development Status :: 4 - Beta
|
|
13
|
+
Classifier: Programming Language :: Python
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
18
|
+
Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
19
|
+
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
|
20
|
+
Requires-Python: >=3.11
|
|
21
|
+
Requires-Dist: boto3>=1.42.1
|
|
22
|
+
Description-Content-Type: text/markdown
|
|
23
|
+
|
|
24
|
+
# AWS Durable Execution SDK for Python
|
|
25
|
+
|
|
26
|
+
[](https://github.com/aws/aws-durable-execution-sdk-python/actions/workflows/ci.yml)
|
|
27
|
+
[](https://pypi.org/project/aws-durable-execution-sdk-python)
|
|
28
|
+
[](https://pypi.org/project/aws-durable-execution-sdk-python)
|
|
29
|
+
[](https://scorecard.dev/viewer/?uri=github.com/aws/aws-durable-execution-sdk-python)
|
|
30
|
+
[](LICENSE)
|
|
31
|
+
|
|
32
|
+
-----
|
|
33
|
+
|
|
34
|
+
Build reliable, long-running AWS Lambda workflows with checkpointed steps, waits, callbacks, and parallel execution.
|
|
35
|
+
|
|
36
|
+
## ✨ Key Features
|
|
37
|
+
|
|
38
|
+
- **Automatic checkpointing** - Resume execution after Lambda pauses or restarts
|
|
39
|
+
- **Durable steps** - Run work with retry strategies and deterministic replay
|
|
40
|
+
- **Waits and callbacks** - Pause for time or external signals without blocking Lambda
|
|
41
|
+
- **Parallel and map operations** - Fan out work with configurable completion criteria
|
|
42
|
+
- **Child contexts** - Structure complex workflows into isolated subflows
|
|
43
|
+
- **Replay-safe logging** - Use `context.logger` for structured, de-duplicated logs
|
|
44
|
+
- **Local and cloud testing** - Validate workflows with the testing SDK
|
|
45
|
+
|
|
46
|
+
## 📦 Packages
|
|
47
|
+
|
|
48
|
+
| Package | Description | Version |
|
|
49
|
+
| --- | --- | --- |
|
|
50
|
+
| `aws-durable-execution-sdk-python` | Execution SDK for Lambda durable functions | [](https://pypi.org/project/aws-durable-execution-sdk-python) |
|
|
51
|
+
| `aws-durable-execution-sdk-python-testing` | Local/cloud test runner and pytest helpers | [](https://pypi.org/project/aws-durable-execution-sdk-python-testing) |
|
|
52
|
+
|
|
53
|
+
## 🚀 Quick Start
|
|
54
|
+
|
|
55
|
+
Install the execution SDK:
|
|
56
|
+
|
|
57
|
+
```console
|
|
58
|
+
pip install aws-durable-execution-sdk-python
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
Create a durable Lambda handler:
|
|
62
|
+
|
|
63
|
+
```python
|
|
64
|
+
from aws_durable_execution_sdk_python import (
|
|
65
|
+
DurableContext,
|
|
66
|
+
StepContext,
|
|
67
|
+
durable_execution,
|
|
68
|
+
durable_step,
|
|
69
|
+
)
|
|
70
|
+
from aws_durable_execution_sdk_python.config import Duration
|
|
71
|
+
|
|
72
|
+
@durable_step
|
|
73
|
+
def validate_order(step_ctx: StepContext, order_id: str) -> dict:
|
|
74
|
+
step_ctx.logger.info("Validating order", extra={"order_id": order_id})
|
|
75
|
+
return {"order_id": order_id, "valid": True}
|
|
76
|
+
|
|
77
|
+
@durable_execution
|
|
78
|
+
def handler(event: dict, context: DurableContext) -> dict:
|
|
79
|
+
order_id = event["order_id"]
|
|
80
|
+
context.logger.info("Starting workflow", extra={"order_id": order_id})
|
|
81
|
+
|
|
82
|
+
validation = context.step(validate_order(order_id), name="validate_order")
|
|
83
|
+
if not validation["valid"]:
|
|
84
|
+
return {"status": "rejected", "order_id": order_id}
|
|
85
|
+
|
|
86
|
+
# simulate approval (real world: use wait_for_callback)
|
|
87
|
+
context.wait(duration=Duration.from_seconds(5), name="await_confirmation")
|
|
88
|
+
|
|
89
|
+
return {"status": "approved", "order_id": order_id}
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
## 📚 Documentation
|
|
93
|
+
|
|
94
|
+
- **[AWS Documentation](https://docs.aws.amazon.com/lambda/latest/dg/durable-functions.html)** - Official AWS Lambda durable functions guide
|
|
95
|
+
- **[Documentation index](docs/index.md)** - SDK Overview and navigation
|
|
96
|
+
|
|
97
|
+
**New to durable functions?**
|
|
98
|
+
- [Getting started guide](docs/getting-started.md) - Build your first durable function
|
|
99
|
+
|
|
100
|
+
**Core operations:**
|
|
101
|
+
- [Steps](docs/core/steps.md) - Execute code with automatic checkpointing and retry support
|
|
102
|
+
- [Wait operations](docs/core/wait.md) - Pause execution without blocking Lambda resources
|
|
103
|
+
- [Callbacks](docs/core/callbacks.md) - Wait for external systems to respond
|
|
104
|
+
- [Invoke operations](docs/core/invoke.md) - Call other durable functions and compose workflows
|
|
105
|
+
- [Child contexts](docs/core/child-contexts.md) - Organize complex workflows into isolated units
|
|
106
|
+
- [Parallel operations](docs/core/parallel.md) - Run multiple operations concurrently
|
|
107
|
+
- [Map operations](docs/core/map.md) - Process collections in parallel with batching
|
|
108
|
+
- [Logger integration](docs/core/logger.md) - Add structured logging to track execution
|
|
109
|
+
|
|
110
|
+
**Advanced topics:**
|
|
111
|
+
- [Error handling](docs/advanced/error-handling.md) - Handle failures and implement retry strategies
|
|
112
|
+
- [Testing modes](docs/advanced/testing-modes.md) - Run tests locally or against deployed Lambda functions
|
|
113
|
+
- [Testing patterns](docs/testing-patterns/basic-tests.md) - Practical testing examples
|
|
114
|
+
- [Serialization](docs/advanced/serialization.md) - Customize how data is serialized in checkpoints
|
|
115
|
+
|
|
116
|
+
**Architecture:**
|
|
117
|
+
- [Architecture diagrams](docs/architecture.md) - Class diagrams and concurrency flows
|
|
118
|
+
|
|
119
|
+
**API reference:**
|
|
120
|
+
- API reference docs are in progress. Use the core operation docs above for now.
|
|
121
|
+
|
|
122
|
+
## 💬 Feedback & Support
|
|
123
|
+
|
|
124
|
+
- [Bug report](https://github.com/aws/aws-durable-execution-sdk-python/issues/new?template=bug_report.yml)
|
|
125
|
+
- [Feature request](https://github.com/aws/aws-durable-execution-sdk-python/issues/new?template=feature_request.yml)
|
|
126
|
+
- [Documentation feedback](https://github.com/aws/aws-durable-execution-sdk-python/issues/new?template=documentation.yml)
|
|
127
|
+
- [Contributing guide](CONTRIBUTING.md)
|
|
128
|
+
|
|
129
|
+
## 📄 License
|
|
130
|
+
|
|
131
|
+
See the [LICENSE](LICENSE) file for our project's licensing.
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
# AWS Durable Execution SDK for Python
|
|
2
|
+
|
|
3
|
+
[](https://github.com/aws/aws-durable-execution-sdk-python/actions/workflows/ci.yml)
|
|
4
|
+
[](https://pypi.org/project/aws-durable-execution-sdk-python)
|
|
5
|
+
[](https://pypi.org/project/aws-durable-execution-sdk-python)
|
|
6
|
+
[](https://scorecard.dev/viewer/?uri=github.com/aws/aws-durable-execution-sdk-python)
|
|
7
|
+
[](LICENSE)
|
|
8
|
+
|
|
9
|
+
-----
|
|
10
|
+
|
|
11
|
+
Build reliable, long-running AWS Lambda workflows with checkpointed steps, waits, callbacks, and parallel execution.
|
|
12
|
+
|
|
13
|
+
## ✨ Key Features
|
|
14
|
+
|
|
15
|
+
- **Automatic checkpointing** - Resume execution after Lambda pauses or restarts
|
|
16
|
+
- **Durable steps** - Run work with retry strategies and deterministic replay
|
|
17
|
+
- **Waits and callbacks** - Pause for time or external signals without blocking Lambda
|
|
18
|
+
- **Parallel and map operations** - Fan out work with configurable completion criteria
|
|
19
|
+
- **Child contexts** - Structure complex workflows into isolated subflows
|
|
20
|
+
- **Replay-safe logging** - Use `context.logger` for structured, de-duplicated logs
|
|
21
|
+
- **Local and cloud testing** - Validate workflows with the testing SDK
|
|
22
|
+
|
|
23
|
+
## 📦 Packages
|
|
24
|
+
|
|
25
|
+
| Package | Description | Version |
|
|
26
|
+
| --- | --- | --- |
|
|
27
|
+
| `aws-durable-execution-sdk-python` | Execution SDK for Lambda durable functions | [](https://pypi.org/project/aws-durable-execution-sdk-python) |
|
|
28
|
+
| `aws-durable-execution-sdk-python-testing` | Local/cloud test runner and pytest helpers | [](https://pypi.org/project/aws-durable-execution-sdk-python-testing) |
|
|
29
|
+
|
|
30
|
+
## 🚀 Quick Start
|
|
31
|
+
|
|
32
|
+
Install the execution SDK:
|
|
33
|
+
|
|
34
|
+
```console
|
|
35
|
+
pip install aws-durable-execution-sdk-python
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
Create a durable Lambda handler:
|
|
39
|
+
|
|
40
|
+
```python
|
|
41
|
+
from aws_durable_execution_sdk_python import (
|
|
42
|
+
DurableContext,
|
|
43
|
+
StepContext,
|
|
44
|
+
durable_execution,
|
|
45
|
+
durable_step,
|
|
46
|
+
)
|
|
47
|
+
from aws_durable_execution_sdk_python.config import Duration
|
|
48
|
+
|
|
49
|
+
@durable_step
|
|
50
|
+
def validate_order(step_ctx: StepContext, order_id: str) -> dict:
|
|
51
|
+
step_ctx.logger.info("Validating order", extra={"order_id": order_id})
|
|
52
|
+
return {"order_id": order_id, "valid": True}
|
|
53
|
+
|
|
54
|
+
@durable_execution
|
|
55
|
+
def handler(event: dict, context: DurableContext) -> dict:
|
|
56
|
+
order_id = event["order_id"]
|
|
57
|
+
context.logger.info("Starting workflow", extra={"order_id": order_id})
|
|
58
|
+
|
|
59
|
+
validation = context.step(validate_order(order_id), name="validate_order")
|
|
60
|
+
if not validation["valid"]:
|
|
61
|
+
return {"status": "rejected", "order_id": order_id}
|
|
62
|
+
|
|
63
|
+
# simulate approval (real world: use wait_for_callback)
|
|
64
|
+
context.wait(duration=Duration.from_seconds(5), name="await_confirmation")
|
|
65
|
+
|
|
66
|
+
return {"status": "approved", "order_id": order_id}
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
## 📚 Documentation
|
|
70
|
+
|
|
71
|
+
- **[AWS Documentation](https://docs.aws.amazon.com/lambda/latest/dg/durable-functions.html)** - Official AWS Lambda durable functions guide
|
|
72
|
+
- **[Documentation index](docs/index.md)** - SDK Overview and navigation
|
|
73
|
+
|
|
74
|
+
**New to durable functions?**
|
|
75
|
+
- [Getting started guide](docs/getting-started.md) - Build your first durable function
|
|
76
|
+
|
|
77
|
+
**Core operations:**
|
|
78
|
+
- [Steps](docs/core/steps.md) - Execute code with automatic checkpointing and retry support
|
|
79
|
+
- [Wait operations](docs/core/wait.md) - Pause execution without blocking Lambda resources
|
|
80
|
+
- [Callbacks](docs/core/callbacks.md) - Wait for external systems to respond
|
|
81
|
+
- [Invoke operations](docs/core/invoke.md) - Call other durable functions and compose workflows
|
|
82
|
+
- [Child contexts](docs/core/child-contexts.md) - Organize complex workflows into isolated units
|
|
83
|
+
- [Parallel operations](docs/core/parallel.md) - Run multiple operations concurrently
|
|
84
|
+
- [Map operations](docs/core/map.md) - Process collections in parallel with batching
|
|
85
|
+
- [Logger integration](docs/core/logger.md) - Add structured logging to track execution
|
|
86
|
+
|
|
87
|
+
**Advanced topics:**
|
|
88
|
+
- [Error handling](docs/advanced/error-handling.md) - Handle failures and implement retry strategies
|
|
89
|
+
- [Testing modes](docs/advanced/testing-modes.md) - Run tests locally or against deployed Lambda functions
|
|
90
|
+
- [Testing patterns](docs/testing-patterns/basic-tests.md) - Practical testing examples
|
|
91
|
+
- [Serialization](docs/advanced/serialization.md) - Customize how data is serialized in checkpoints
|
|
92
|
+
|
|
93
|
+
**Architecture:**
|
|
94
|
+
- [Architecture diagrams](docs/architecture.md) - Class diagrams and concurrency flows
|
|
95
|
+
|
|
96
|
+
**API reference:**
|
|
97
|
+
- API reference docs are in progress. Use the core operation docs above for now.
|
|
98
|
+
|
|
99
|
+
## 💬 Feedback & Support
|
|
100
|
+
|
|
101
|
+
- [Bug report](https://github.com/aws/aws-durable-execution-sdk-python/issues/new?template=bug_report.yml)
|
|
102
|
+
- [Feature request](https://github.com/aws/aws-durable-execution-sdk-python/issues/new?template=feature_request.yml)
|
|
103
|
+
- [Documentation feedback](https://github.com/aws/aws-durable-execution-sdk-python/issues/new?template=documentation.yml)
|
|
104
|
+
- [Contributing guide](CONTRIBUTING.md)
|
|
105
|
+
|
|
106
|
+
## 📄 License
|
|
107
|
+
|
|
108
|
+
See the [LICENSE](LICENSE) file for our project's licensing.
|
|
@@ -488,9 +488,8 @@ Fix the error in your function code and redeploy.
|
|
|
488
488
|
|
|
489
489
|
## See also
|
|
490
490
|
|
|
491
|
-
- [Test Runner](../core/test-runner.md) - Learn about the test runner interface
|
|
492
491
|
- [Getting Started](../getting-started.md) - Set up your development environment
|
|
493
|
-
- [
|
|
492
|
+
- [Testing patterns](../testing-patterns/basic-tests.md) - Practical pytest examples
|
|
494
493
|
- [Examples README](../../examples/test/README.md) - More examples and configuration details
|
|
495
494
|
|
|
496
495
|
[↑ Back to top](#table-of-contents)
|