durable-workflow 0.4.97__tar.gz → 0.4.98__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.
- {durable_workflow-0.4.97/src/durable_workflow.egg-info → durable_workflow-0.4.98}/PKG-INFO +1 -1
- {durable_workflow-0.4.97 → durable_workflow-0.4.98}/pyproject.toml +1 -1
- {durable_workflow-0.4.97 → durable_workflow-0.4.98}/src/durable_workflow/workflow.py +1 -1
- {durable_workflow-0.4.97 → durable_workflow-0.4.98/src/durable_workflow.egg-info}/PKG-INFO +1 -1
- {durable_workflow-0.4.97 → durable_workflow-0.4.98}/tests/test_replay.py +28 -0
- {durable_workflow-0.4.97 → durable_workflow-0.4.98}/LICENSE +0 -0
- {durable_workflow-0.4.97 → durable_workflow-0.4.98}/README.md +0 -0
- {durable_workflow-0.4.97 → durable_workflow-0.4.98}/setup.cfg +0 -0
- {durable_workflow-0.4.97 → durable_workflow-0.4.98}/src/durable_workflow/__init__.py +0 -0
- {durable_workflow-0.4.97 → durable_workflow-0.4.98}/src/durable_workflow/_avro.py +0 -0
- {durable_workflow-0.4.97 → durable_workflow-0.4.98}/src/durable_workflow/activity.py +0 -0
- {durable_workflow-0.4.97 → durable_workflow-0.4.98}/src/durable_workflow/auth_composition.py +0 -0
- {durable_workflow-0.4.97 → durable_workflow-0.4.98}/src/durable_workflow/client.py +0 -0
- {durable_workflow-0.4.97 → durable_workflow-0.4.98}/src/durable_workflow/errors.py +0 -0
- {durable_workflow-0.4.97 → durable_workflow-0.4.98}/src/durable_workflow/external_storage.py +0 -0
- {durable_workflow-0.4.97 → durable_workflow-0.4.98}/src/durable_workflow/external_task_input.py +0 -0
- {durable_workflow-0.4.97 → durable_workflow-0.4.98}/src/durable_workflow/external_task_result.py +0 -0
- {durable_workflow-0.4.97 → durable_workflow-0.4.98}/src/durable_workflow/history_bundle_verify.py +0 -0
- {durable_workflow-0.4.97 → durable_workflow-0.4.98}/src/durable_workflow/interceptors.py +0 -0
- {durable_workflow-0.4.97 → durable_workflow-0.4.98}/src/durable_workflow/invocable.py +0 -0
- {durable_workflow-0.4.97 → durable_workflow-0.4.98}/src/durable_workflow/metrics.py +0 -0
- {durable_workflow-0.4.97 → durable_workflow-0.4.98}/src/durable_workflow/nexus.py +0 -0
- {durable_workflow-0.4.97 → durable_workflow-0.4.98}/src/durable_workflow/py.typed +0 -0
- {durable_workflow-0.4.97 → durable_workflow-0.4.98}/src/durable_workflow/python_conformance.py +0 -0
- {durable_workflow-0.4.97 → durable_workflow-0.4.98}/src/durable_workflow/replay_conformance.py +0 -0
- {durable_workflow-0.4.97 → durable_workflow-0.4.98}/src/durable_workflow/replay_verify.py +0 -0
- {durable_workflow-0.4.97 → durable_workflow-0.4.98}/src/durable_workflow/retry_policy.py +0 -0
- {durable_workflow-0.4.97 → durable_workflow-0.4.98}/src/durable_workflow/serializer.py +0 -0
- {durable_workflow-0.4.97 → durable_workflow-0.4.98}/src/durable_workflow/sync.py +0 -0
- {durable_workflow-0.4.97 → durable_workflow-0.4.98}/src/durable_workflow/testing.py +0 -0
- {durable_workflow-0.4.97 → durable_workflow-0.4.98}/src/durable_workflow/worker.py +0 -0
- {durable_workflow-0.4.97 → durable_workflow-0.4.98}/src/durable_workflow/workflow_updates_conformance.py +0 -0
- {durable_workflow-0.4.97 → durable_workflow-0.4.98}/src/durable_workflow.egg-info/SOURCES.txt +0 -0
- {durable_workflow-0.4.97 → durable_workflow-0.4.98}/src/durable_workflow.egg-info/dependency_links.txt +0 -0
- {durable_workflow-0.4.97 → durable_workflow-0.4.98}/src/durable_workflow.egg-info/entry_points.txt +0 -0
- {durable_workflow-0.4.97 → durable_workflow-0.4.98}/src/durable_workflow.egg-info/requires.txt +0 -0
- {durable_workflow-0.4.97 → durable_workflow-0.4.98}/src/durable_workflow.egg-info/top_level.txt +0 -0
- {durable_workflow-0.4.97 → durable_workflow-0.4.98}/tests/test_activity_context.py +0 -0
- {durable_workflow-0.4.97 → durable_workflow-0.4.98}/tests/test_auth_composition.py +0 -0
- {durable_workflow-0.4.97 → durable_workflow-0.4.98}/tests/test_client.py +0 -0
- {durable_workflow-0.4.97 → durable_workflow-0.4.98}/tests/test_control_plane_parity_fixtures.py +0 -0
- {durable_workflow-0.4.97 → durable_workflow-0.4.98}/tests/test_errors.py +0 -0
- {durable_workflow-0.4.97 → durable_workflow-0.4.98}/tests/test_external_storage.py +0 -0
- {durable_workflow-0.4.97 → durable_workflow-0.4.98}/tests/test_external_task_input.py +0 -0
- {durable_workflow-0.4.97 → durable_workflow-0.4.98}/tests/test_external_task_result.py +0 -0
- {durable_workflow-0.4.97 → durable_workflow-0.4.98}/tests/test_golden_history_replay.py +0 -0
- {durable_workflow-0.4.97 → durable_workflow-0.4.98}/tests/test_history_bundle_verify.py +0 -0
- {durable_workflow-0.4.97 → durable_workflow-0.4.98}/tests/test_history_event_contract.py +0 -0
- {durable_workflow-0.4.97 → durable_workflow-0.4.98}/tests/test_invocable.py +0 -0
- {durable_workflow-0.4.97 → durable_workflow-0.4.98}/tests/test_metrics.py +0 -0
- {durable_workflow-0.4.97 → durable_workflow-0.4.98}/tests/test_order_processing_example.py +0 -0
- {durable_workflow-0.4.97 → durable_workflow-0.4.98}/tests/test_public_boundary_scanner.py +0 -0
- {durable_workflow-0.4.97 → durable_workflow-0.4.98}/tests/test_python_conformance.py +0 -0
- {durable_workflow-0.4.97 → durable_workflow-0.4.98}/tests/test_queries.py +0 -0
- {durable_workflow-0.4.97 → durable_workflow-0.4.98}/tests/test_readme_quickstart.py +0 -0
- {durable_workflow-0.4.97 → durable_workflow-0.4.98}/tests/test_release_docs_audit_workflow.py +0 -0
- {durable_workflow-0.4.97 → durable_workflow-0.4.98}/tests/test_replay_conformance.py +0 -0
- {durable_workflow-0.4.97 → durable_workflow-0.4.98}/tests/test_replay_verify.py +0 -0
- {durable_workflow-0.4.97 → durable_workflow-0.4.98}/tests/test_retry_policy.py +0 -0
- {durable_workflow-0.4.97 → durable_workflow-0.4.98}/tests/test_schedules.py +0 -0
- {durable_workflow-0.4.97 → durable_workflow-0.4.98}/tests/test_serializer.py +0 -0
- {durable_workflow-0.4.97 → durable_workflow-0.4.98}/tests/test_signals.py +0 -0
- {durable_workflow-0.4.97 → durable_workflow-0.4.98}/tests/test_sleep.py +0 -0
- {durable_workflow-0.4.97 → durable_workflow-0.4.98}/tests/test_standalone_activity_client.py +0 -0
- {durable_workflow-0.4.97 → durable_workflow-0.4.98}/tests/test_sync.py +0 -0
- {durable_workflow-0.4.97 → durable_workflow-0.4.98}/tests/test_testing_harness.py +0 -0
- {durable_workflow-0.4.97 → durable_workflow-0.4.98}/tests/test_updates.py +0 -0
- {durable_workflow-0.4.97 → durable_workflow-0.4.98}/tests/test_wait_condition.py +0 -0
- {durable_workflow-0.4.97 → durable_workflow-0.4.98}/tests/test_worker.py +0 -0
- {durable_workflow-0.4.97 → durable_workflow-0.4.98}/tests/test_workflow_updates_conformance.py +0 -0
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "durable-workflow"
|
|
7
|
-
version = "0.4.
|
|
7
|
+
version = "0.4.98"
|
|
8
8
|
description = "Python SDK for the Durable Workflow server (language-neutral HTTP protocol)"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.10"
|
|
@@ -2299,7 +2299,7 @@ def _child_workflow_failed_from_payload(
|
|
|
2299
2299
|
return ChildWorkflowFailed(
|
|
2300
2300
|
message or "child workflow failed",
|
|
2301
2301
|
exception_class,
|
|
2302
|
-
failure_kind=
|
|
2302
|
+
failure_kind="child_workflow",
|
|
2303
2303
|
child_workflow_run_id=child_workflow_run_id,
|
|
2304
2304
|
child_workflow_type=child_workflow_type,
|
|
2305
2305
|
)
|
|
@@ -1393,6 +1393,34 @@ class TestChildWorkflow:
|
|
|
1393
1393
|
"child_workflow_type": "sub-workflow",
|
|
1394
1394
|
}
|
|
1395
1395
|
|
|
1396
|
+
def test_child_failed_reports_parent_failure_kind_for_application_child(self) -> None:
|
|
1397
|
+
history = [
|
|
1398
|
+
{
|
|
1399
|
+
"event_type": "ChildRunFailed",
|
|
1400
|
+
"payload": {
|
|
1401
|
+
"message": "planned typed child failure: typed-marker",
|
|
1402
|
+
"exception_type": "PlannedChildFailure",
|
|
1403
|
+
"exception_class": "smoke.PlannedChildFailure",
|
|
1404
|
+
"failure_category": "application",
|
|
1405
|
+
"child_workflow_run_id": "child-run-1",
|
|
1406
|
+
"child_workflow_type": "sub-workflow",
|
|
1407
|
+
},
|
|
1408
|
+
},
|
|
1409
|
+
]
|
|
1410
|
+
|
|
1411
|
+
outcome = replay(ChildWorkflowFailureDetailsWf, history, [])
|
|
1412
|
+
|
|
1413
|
+
assert len(outcome.commands) == 1
|
|
1414
|
+
cmd = outcome.commands[0]
|
|
1415
|
+
assert isinstance(cmd, CompleteWorkflow)
|
|
1416
|
+
assert cmd.result == {
|
|
1417
|
+
"message": "planned typed child failure: typed-marker",
|
|
1418
|
+
"exception_class": "smoke.PlannedChildFailure",
|
|
1419
|
+
"failure_kind": "child_workflow",
|
|
1420
|
+
"child_workflow_run_id": "child-run-1",
|
|
1421
|
+
"child_workflow_type": "sub-workflow",
|
|
1422
|
+
}
|
|
1423
|
+
|
|
1396
1424
|
def test_child_failed_prefers_nested_exception_class_over_type(self) -> None:
|
|
1397
1425
|
history = [
|
|
1398
1426
|
{
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{durable_workflow-0.4.97 → durable_workflow-0.4.98}/src/durable_workflow/auth_composition.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{durable_workflow-0.4.97 → durable_workflow-0.4.98}/src/durable_workflow/external_storage.py
RENAMED
|
File without changes
|
{durable_workflow-0.4.97 → durable_workflow-0.4.98}/src/durable_workflow/external_task_input.py
RENAMED
|
File without changes
|
{durable_workflow-0.4.97 → durable_workflow-0.4.98}/src/durable_workflow/external_task_result.py
RENAMED
|
File without changes
|
{durable_workflow-0.4.97 → durable_workflow-0.4.98}/src/durable_workflow/history_bundle_verify.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{durable_workflow-0.4.97 → durable_workflow-0.4.98}/src/durable_workflow/python_conformance.py
RENAMED
|
File without changes
|
{durable_workflow-0.4.97 → durable_workflow-0.4.98}/src/durable_workflow/replay_conformance.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{durable_workflow-0.4.97 → durable_workflow-0.4.98}/src/durable_workflow.egg-info/SOURCES.txt
RENAMED
|
File without changes
|
|
File without changes
|
{durable_workflow-0.4.97 → durable_workflow-0.4.98}/src/durable_workflow.egg-info/entry_points.txt
RENAMED
|
File without changes
|
{durable_workflow-0.4.97 → durable_workflow-0.4.98}/src/durable_workflow.egg-info/requires.txt
RENAMED
|
File without changes
|
{durable_workflow-0.4.97 → durable_workflow-0.4.98}/src/durable_workflow.egg-info/top_level.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{durable_workflow-0.4.97 → durable_workflow-0.4.98}/tests/test_control_plane_parity_fixtures.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{durable_workflow-0.4.97 → durable_workflow-0.4.98}/tests/test_release_docs_audit_workflow.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{durable_workflow-0.4.97 → durable_workflow-0.4.98}/tests/test_standalone_activity_client.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{durable_workflow-0.4.97 → durable_workflow-0.4.98}/tests/test_workflow_updates_conformance.py
RENAMED
|
File without changes
|