aws-durable-execution-sdk-python 1.6.0__tar.gz → 1.7.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.
- {aws_durable_execution_sdk_python-1.6.0 → aws_durable_execution_sdk_python-1.7.0}/.gitignore +3 -1
- {aws_durable_execution_sdk_python-1.6.0 → aws_durable_execution_sdk_python-1.7.0}/PKG-INFO +1 -1
- {aws_durable_execution_sdk_python-1.6.0 → aws_durable_execution_sdk_python-1.7.0}/pyproject.toml +1 -1
- {aws_durable_execution_sdk_python-1.6.0 → aws_durable_execution_sdk_python-1.7.0}/src/aws_durable_execution_sdk_python/__about__.py +1 -1
- {aws_durable_execution_sdk_python-1.6.0 → aws_durable_execution_sdk_python-1.7.0}/src/aws_durable_execution_sdk_python/concurrency/executor.py +22 -2
- aws_durable_execution_sdk_python-1.7.0/src/aws_durable_execution_sdk_python/constants.py +6 -0
- {aws_durable_execution_sdk_python-1.6.0 → aws_durable_execution_sdk_python-1.7.0}/src/aws_durable_execution_sdk_python/context.py +299 -184
- {aws_durable_execution_sdk_python-1.6.0 → aws_durable_execution_sdk_python-1.7.0}/src/aws_durable_execution_sdk_python/execution.py +19 -7
- aws_durable_execution_sdk_python-1.7.0/src/aws_durable_execution_sdk_python/filesystem_serdes.py +264 -0
- {aws_durable_execution_sdk_python-1.6.0 → aws_durable_execution_sdk_python-1.7.0}/src/aws_durable_execution_sdk_python/logger.py +31 -9
- {aws_durable_execution_sdk_python-1.6.0 → aws_durable_execution_sdk_python-1.7.0}/src/aws_durable_execution_sdk_python/operation/child.py +3 -5
- {aws_durable_execution_sdk_python-1.6.0 → aws_durable_execution_sdk_python-1.7.0}/src/aws_durable_execution_sdk_python/operation/step.py +0 -3
- {aws_durable_execution_sdk_python-1.6.0 → aws_durable_execution_sdk_python-1.7.0}/src/aws_durable_execution_sdk_python/operation/wait_for_condition.py +0 -2
- {aws_durable_execution_sdk_python-1.6.0 → aws_durable_execution_sdk_python-1.7.0}/src/aws_durable_execution_sdk_python/plugin.py +197 -41
- aws_durable_execution_sdk_python-1.7.0/src/aws_durable_execution_sdk_python/preview.py +196 -0
- {aws_durable_execution_sdk_python-1.6.0 → aws_durable_execution_sdk_python-1.7.0}/src/aws_durable_execution_sdk_python/state.py +95 -69
- {aws_durable_execution_sdk_python-1.6.0 → aws_durable_execution_sdk_python-1.7.0}/src/aws_durable_execution_sdk_python/types.py +46 -0
- {aws_durable_execution_sdk_python-1.6.0 → aws_durable_execution_sdk_python-1.7.0}/tests/concurrency_test.py +139 -2
- {aws_durable_execution_sdk_python-1.6.0 → aws_durable_execution_sdk_python-1.7.0}/tests/context_test.py +470 -2
- {aws_durable_execution_sdk_python-1.6.0 → aws_durable_execution_sdk_python-1.7.0}/tests/e2e/checkpoint_response_int_test.py +1 -1
- aws_durable_execution_sdk_python-1.7.0/tests/e2e/filesystem_serdes_int_test.py +488 -0
- {aws_durable_execution_sdk_python-1.6.0 → aws_durable_execution_sdk_python-1.7.0}/tests/execution_test.py +15 -2
- aws_durable_execution_sdk_python-1.7.0/tests/filesystem_serdes_test.py +790 -0
- {aws_durable_execution_sdk_python-1.6.0 → aws_durable_execution_sdk_python-1.7.0}/tests/logger_test.py +18 -19
- {aws_durable_execution_sdk_python-1.6.0 → aws_durable_execution_sdk_python-1.7.0}/tests/operation/map_test.py +15 -10
- {aws_durable_execution_sdk_python-1.6.0 → aws_durable_execution_sdk_python-1.7.0}/tests/plugin_test.py +150 -0
- aws_durable_execution_sdk_python-1.7.0/tests/preview_test.py +212 -0
- {aws_durable_execution_sdk_python-1.6.0 → aws_durable_execution_sdk_python-1.7.0}/tests/state_test.py +300 -54
- {aws_durable_execution_sdk_python-1.6.0 → aws_durable_execution_sdk_python-1.7.0}/LICENSE +0 -0
- {aws_durable_execution_sdk_python-1.6.0 → aws_durable_execution_sdk_python-1.7.0}/NOTICE +0 -0
- {aws_durable_execution_sdk_python-1.6.0 → aws_durable_execution_sdk_python-1.7.0}/README.md +0 -0
- {aws_durable_execution_sdk_python-1.6.0 → aws_durable_execution_sdk_python-1.7.0}/src/aws_durable_execution_sdk_python/.gitignore +0 -0
- {aws_durable_execution_sdk_python-1.6.0 → aws_durable_execution_sdk_python-1.7.0}/src/aws_durable_execution_sdk_python/__init__.py +0 -0
- {aws_durable_execution_sdk_python-1.6.0 → aws_durable_execution_sdk_python-1.7.0}/src/aws_durable_execution_sdk_python/concurrency/__init__.py +0 -0
- {aws_durable_execution_sdk_python-1.6.0 → aws_durable_execution_sdk_python-1.7.0}/src/aws_durable_execution_sdk_python/concurrency/models.py +0 -0
- {aws_durable_execution_sdk_python-1.6.0 → aws_durable_execution_sdk_python-1.7.0}/src/aws_durable_execution_sdk_python/config.py +0 -0
- {aws_durable_execution_sdk_python-1.6.0 → aws_durable_execution_sdk_python-1.7.0}/src/aws_durable_execution_sdk_python/exceptions.py +0 -0
- {aws_durable_execution_sdk_python-1.6.0 → aws_durable_execution_sdk_python-1.7.0}/src/aws_durable_execution_sdk_python/identifier.py +0 -0
- {aws_durable_execution_sdk_python-1.6.0 → aws_durable_execution_sdk_python-1.7.0}/src/aws_durable_execution_sdk_python/lambda_service.py +0 -0
- {aws_durable_execution_sdk_python-1.6.0 → aws_durable_execution_sdk_python-1.7.0}/src/aws_durable_execution_sdk_python/operation/__init__.py +0 -0
- {aws_durable_execution_sdk_python-1.6.0 → aws_durable_execution_sdk_python-1.7.0}/src/aws_durable_execution_sdk_python/operation/base.py +0 -0
- {aws_durable_execution_sdk_python-1.6.0 → aws_durable_execution_sdk_python-1.7.0}/src/aws_durable_execution_sdk_python/operation/callback.py +0 -0
- {aws_durable_execution_sdk_python-1.6.0 → aws_durable_execution_sdk_python-1.7.0}/src/aws_durable_execution_sdk_python/operation/invoke.py +0 -0
- {aws_durable_execution_sdk_python-1.6.0 → aws_durable_execution_sdk_python-1.7.0}/src/aws_durable_execution_sdk_python/operation/map.py +0 -0
- {aws_durable_execution_sdk_python-1.6.0 → aws_durable_execution_sdk_python-1.7.0}/src/aws_durable_execution_sdk_python/operation/parallel.py +0 -0
- {aws_durable_execution_sdk_python-1.6.0 → aws_durable_execution_sdk_python-1.7.0}/src/aws_durable_execution_sdk_python/operation/wait.py +0 -0
- {aws_durable_execution_sdk_python-1.6.0 → aws_durable_execution_sdk_python-1.7.0}/src/aws_durable_execution_sdk_python/py.typed +0 -0
- {aws_durable_execution_sdk_python-1.6.0 → aws_durable_execution_sdk_python-1.7.0}/src/aws_durable_execution_sdk_python/retries.py +0 -0
- {aws_durable_execution_sdk_python-1.6.0 → aws_durable_execution_sdk_python-1.7.0}/src/aws_durable_execution_sdk_python/serdes.py +0 -0
- {aws_durable_execution_sdk_python-1.6.0 → aws_durable_execution_sdk_python-1.7.0}/src/aws_durable_execution_sdk_python/suspend.py +0 -0
- {aws_durable_execution_sdk_python-1.6.0 → aws_durable_execution_sdk_python-1.7.0}/src/aws_durable_execution_sdk_python/threading.py +0 -0
- {aws_durable_execution_sdk_python-1.6.0 → aws_durable_execution_sdk_python-1.7.0}/src/aws_durable_execution_sdk_python/waits.py +0 -0
- {aws_durable_execution_sdk_python-1.6.0 → aws_durable_execution_sdk_python-1.7.0}/tests/__init__.py +0 -0
- {aws_durable_execution_sdk_python-1.6.0 → aws_durable_execution_sdk_python-1.7.0}/tests/config_test.py +0 -0
- {aws_durable_execution_sdk_python-1.6.0 → aws_durable_execution_sdk_python-1.7.0}/tests/durable_executions_python_language_sdk_test.py +0 -0
- {aws_durable_execution_sdk_python-1.6.0 → aws_durable_execution_sdk_python-1.7.0}/tests/e2e/__init__.py +0 -0
- {aws_durable_execution_sdk_python-1.6.0 → aws_durable_execution_sdk_python-1.7.0}/tests/e2e/execution_int_test.py +0 -0
- {aws_durable_execution_sdk_python-1.6.0 → aws_durable_execution_sdk_python-1.7.0}/tests/e2e/map_with_concurrent_waits_int_test.py +0 -0
- {aws_durable_execution_sdk_python-1.6.0 → aws_durable_execution_sdk_python-1.7.0}/tests/exceptions_test.py +0 -0
- {aws_durable_execution_sdk_python-1.6.0 → aws_durable_execution_sdk_python-1.7.0}/tests/lambda_service_test.py +0 -0
- {aws_durable_execution_sdk_python-1.6.0 → aws_durable_execution_sdk_python-1.7.0}/tests/operation/__init__.py +0 -0
- {aws_durable_execution_sdk_python-1.6.0 → aws_durable_execution_sdk_python-1.7.0}/tests/operation/base_test.py +0 -0
- {aws_durable_execution_sdk_python-1.6.0 → aws_durable_execution_sdk_python-1.7.0}/tests/operation/callback_test.py +0 -0
- {aws_durable_execution_sdk_python-1.6.0 → aws_durable_execution_sdk_python-1.7.0}/tests/operation/child_test.py +0 -0
- {aws_durable_execution_sdk_python-1.6.0 → aws_durable_execution_sdk_python-1.7.0}/tests/operation/invoke_test.py +0 -0
- {aws_durable_execution_sdk_python-1.6.0 → aws_durable_execution_sdk_python-1.7.0}/tests/operation/parallel_test.py +0 -0
- {aws_durable_execution_sdk_python-1.6.0 → aws_durable_execution_sdk_python-1.7.0}/tests/operation/step_test.py +0 -0
- {aws_durable_execution_sdk_python-1.6.0 → aws_durable_execution_sdk_python-1.7.0}/tests/operation/wait_for_condition_test.py +0 -0
- {aws_durable_execution_sdk_python-1.6.0 → aws_durable_execution_sdk_python-1.7.0}/tests/operation/wait_test.py +0 -0
- {aws_durable_execution_sdk_python-1.6.0 → aws_durable_execution_sdk_python-1.7.0}/tests/retries_test.py +0 -0
- {aws_durable_execution_sdk_python-1.6.0 → aws_durable_execution_sdk_python-1.7.0}/tests/serdes_test.py +0 -0
- {aws_durable_execution_sdk_python-1.6.0 → aws_durable_execution_sdk_python-1.7.0}/tests/suspend_test.py +0 -0
- {aws_durable_execution_sdk_python-1.6.0 → aws_durable_execution_sdk_python-1.7.0}/tests/test_helpers.py +0 -0
- {aws_durable_execution_sdk_python-1.6.0 → aws_durable_execution_sdk_python-1.7.0}/tests/threading_test.py +0 -0
- {aws_durable_execution_sdk_python-1.6.0 → aws_durable_execution_sdk_python-1.7.0}/tests/types_test.py +0 -0
- {aws_durable_execution_sdk_python-1.6.0 → aws_durable_execution_sdk_python-1.7.0}/tests/waits_test.py +0 -0
- {aws_durable_execution_sdk_python-1.6.0 → aws_durable_execution_sdk_python-1.7.0}/tests/with_retry_test.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: aws-durable-execution-sdk-python
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.7.0
|
|
4
4
|
Summary: AWS Durable Execution SDK for Python
|
|
5
5
|
Project-URL: Documentation, https://github.com/aws/aws-durable-execution-sdk-python#readme
|
|
6
6
|
Project-URL: Issues, https://github.com/aws/aws-durable-execution-sdk-python/issues
|
{aws_durable_execution_sdk_python-1.6.0 → aws_durable_execution_sdk_python-1.7.0}/pyproject.toml
RENAMED
|
@@ -63,7 +63,7 @@ target-version = "py311"
|
|
|
63
63
|
|
|
64
64
|
[tool.ruff.lint]
|
|
65
65
|
preview = true
|
|
66
|
-
select = ["TID252"] #
|
|
66
|
+
select = ["E4", "E7", "E9", "F", "TID252"] # pycodestyle (E4/E7/E9) + Pyflakes + absolute imports
|
|
67
67
|
|
|
68
68
|
[tool.ruff.lint.isort]
|
|
69
69
|
known-first-party = ["aws_durable_execution_sdk_python"]
|
|
@@ -30,7 +30,7 @@ from aws_durable_execution_sdk_python.exceptions import (
|
|
|
30
30
|
TimedSuspendExecution,
|
|
31
31
|
)
|
|
32
32
|
from aws_durable_execution_sdk_python.identifier import OperationIdentifier
|
|
33
|
-
from aws_durable_execution_sdk_python.lambda_service import ErrorObject
|
|
33
|
+
from aws_durable_execution_sdk_python.lambda_service import ErrorObject
|
|
34
34
|
from aws_durable_execution_sdk_python.operation.child import child_handler
|
|
35
35
|
|
|
36
36
|
|
|
@@ -475,6 +475,27 @@ class ConcurrentExecutor(ABC, Generic[CallableType, ResultType]):
|
|
|
475
475
|
name=name,
|
|
476
476
|
)
|
|
477
477
|
|
|
478
|
+
# The branch/iteration container op is resolved here via child_handler,
|
|
479
|
+
# bypassing context.run_in_child_context and therefore the parent's
|
|
480
|
+
# `_replay_aware`. Replicate the two things `_replay_aware` would have
|
|
481
|
+
# done for this container op while replaying:
|
|
482
|
+
# 1. Existence flip: a brand-new branch (no checkpoint) is new work,
|
|
483
|
+
# so the child must start in NEW rather than inheriting REPLAY —
|
|
484
|
+
# otherwise logs before the branch's first inner op are wrongly
|
|
485
|
+
# de-duplicated during a map/parallel replay.
|
|
486
|
+
# 2. Replay hook: a branch that already has a checkpoint was observed
|
|
487
|
+
# in a prior invocation, so emit the plugin replay hook (once).
|
|
488
|
+
# Virtual (FLAT) branches do not checkpoint themselves, so neither
|
|
489
|
+
# applies; their inner operations still self-correct via `_replay_aware`.
|
|
490
|
+
if not is_virtual and child_context.is_replaying():
|
|
491
|
+
branch_checkpoint = child_context.state.get_checkpoint_result(operation_id)
|
|
492
|
+
if not branch_checkpoint.is_existent():
|
|
493
|
+
child_context._set_replay_status_new() # noqa: SLF001
|
|
494
|
+
elif branch_checkpoint.operation is not None:
|
|
495
|
+
child_context.state.emit_operation_replay_hook(
|
|
496
|
+
branch_checkpoint.operation
|
|
497
|
+
)
|
|
498
|
+
|
|
478
499
|
def run_in_child_handler() -> ResultType:
|
|
479
500
|
return self.execute_item(child_context, executable)
|
|
480
501
|
|
|
@@ -489,7 +510,6 @@ class ConcurrentExecutor(ABC, Generic[CallableType, ResultType]):
|
|
|
489
510
|
is_virtual=is_virtual,
|
|
490
511
|
),
|
|
491
512
|
)
|
|
492
|
-
child_context.state.track_replay(operation_id=operation_id)
|
|
493
513
|
return result
|
|
494
514
|
|
|
495
515
|
def replay(self, execution_state: ExecutionState, executor_context: DurableContext):
|