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.
Files changed (70) hide show
  1. {durable_workflow-0.4.97/src/durable_workflow.egg-info → durable_workflow-0.4.98}/PKG-INFO +1 -1
  2. {durable_workflow-0.4.97 → durable_workflow-0.4.98}/pyproject.toml +1 -1
  3. {durable_workflow-0.4.97 → durable_workflow-0.4.98}/src/durable_workflow/workflow.py +1 -1
  4. {durable_workflow-0.4.97 → durable_workflow-0.4.98/src/durable_workflow.egg-info}/PKG-INFO +1 -1
  5. {durable_workflow-0.4.97 → durable_workflow-0.4.98}/tests/test_replay.py +28 -0
  6. {durable_workflow-0.4.97 → durable_workflow-0.4.98}/LICENSE +0 -0
  7. {durable_workflow-0.4.97 → durable_workflow-0.4.98}/README.md +0 -0
  8. {durable_workflow-0.4.97 → durable_workflow-0.4.98}/setup.cfg +0 -0
  9. {durable_workflow-0.4.97 → durable_workflow-0.4.98}/src/durable_workflow/__init__.py +0 -0
  10. {durable_workflow-0.4.97 → durable_workflow-0.4.98}/src/durable_workflow/_avro.py +0 -0
  11. {durable_workflow-0.4.97 → durable_workflow-0.4.98}/src/durable_workflow/activity.py +0 -0
  12. {durable_workflow-0.4.97 → durable_workflow-0.4.98}/src/durable_workflow/auth_composition.py +0 -0
  13. {durable_workflow-0.4.97 → durable_workflow-0.4.98}/src/durable_workflow/client.py +0 -0
  14. {durable_workflow-0.4.97 → durable_workflow-0.4.98}/src/durable_workflow/errors.py +0 -0
  15. {durable_workflow-0.4.97 → durable_workflow-0.4.98}/src/durable_workflow/external_storage.py +0 -0
  16. {durable_workflow-0.4.97 → durable_workflow-0.4.98}/src/durable_workflow/external_task_input.py +0 -0
  17. {durable_workflow-0.4.97 → durable_workflow-0.4.98}/src/durable_workflow/external_task_result.py +0 -0
  18. {durable_workflow-0.4.97 → durable_workflow-0.4.98}/src/durable_workflow/history_bundle_verify.py +0 -0
  19. {durable_workflow-0.4.97 → durable_workflow-0.4.98}/src/durable_workflow/interceptors.py +0 -0
  20. {durable_workflow-0.4.97 → durable_workflow-0.4.98}/src/durable_workflow/invocable.py +0 -0
  21. {durable_workflow-0.4.97 → durable_workflow-0.4.98}/src/durable_workflow/metrics.py +0 -0
  22. {durable_workflow-0.4.97 → durable_workflow-0.4.98}/src/durable_workflow/nexus.py +0 -0
  23. {durable_workflow-0.4.97 → durable_workflow-0.4.98}/src/durable_workflow/py.typed +0 -0
  24. {durable_workflow-0.4.97 → durable_workflow-0.4.98}/src/durable_workflow/python_conformance.py +0 -0
  25. {durable_workflow-0.4.97 → durable_workflow-0.4.98}/src/durable_workflow/replay_conformance.py +0 -0
  26. {durable_workflow-0.4.97 → durable_workflow-0.4.98}/src/durable_workflow/replay_verify.py +0 -0
  27. {durable_workflow-0.4.97 → durable_workflow-0.4.98}/src/durable_workflow/retry_policy.py +0 -0
  28. {durable_workflow-0.4.97 → durable_workflow-0.4.98}/src/durable_workflow/serializer.py +0 -0
  29. {durable_workflow-0.4.97 → durable_workflow-0.4.98}/src/durable_workflow/sync.py +0 -0
  30. {durable_workflow-0.4.97 → durable_workflow-0.4.98}/src/durable_workflow/testing.py +0 -0
  31. {durable_workflow-0.4.97 → durable_workflow-0.4.98}/src/durable_workflow/worker.py +0 -0
  32. {durable_workflow-0.4.97 → durable_workflow-0.4.98}/src/durable_workflow/workflow_updates_conformance.py +0 -0
  33. {durable_workflow-0.4.97 → durable_workflow-0.4.98}/src/durable_workflow.egg-info/SOURCES.txt +0 -0
  34. {durable_workflow-0.4.97 → durable_workflow-0.4.98}/src/durable_workflow.egg-info/dependency_links.txt +0 -0
  35. {durable_workflow-0.4.97 → durable_workflow-0.4.98}/src/durable_workflow.egg-info/entry_points.txt +0 -0
  36. {durable_workflow-0.4.97 → durable_workflow-0.4.98}/src/durable_workflow.egg-info/requires.txt +0 -0
  37. {durable_workflow-0.4.97 → durable_workflow-0.4.98}/src/durable_workflow.egg-info/top_level.txt +0 -0
  38. {durable_workflow-0.4.97 → durable_workflow-0.4.98}/tests/test_activity_context.py +0 -0
  39. {durable_workflow-0.4.97 → durable_workflow-0.4.98}/tests/test_auth_composition.py +0 -0
  40. {durable_workflow-0.4.97 → durable_workflow-0.4.98}/tests/test_client.py +0 -0
  41. {durable_workflow-0.4.97 → durable_workflow-0.4.98}/tests/test_control_plane_parity_fixtures.py +0 -0
  42. {durable_workflow-0.4.97 → durable_workflow-0.4.98}/tests/test_errors.py +0 -0
  43. {durable_workflow-0.4.97 → durable_workflow-0.4.98}/tests/test_external_storage.py +0 -0
  44. {durable_workflow-0.4.97 → durable_workflow-0.4.98}/tests/test_external_task_input.py +0 -0
  45. {durable_workflow-0.4.97 → durable_workflow-0.4.98}/tests/test_external_task_result.py +0 -0
  46. {durable_workflow-0.4.97 → durable_workflow-0.4.98}/tests/test_golden_history_replay.py +0 -0
  47. {durable_workflow-0.4.97 → durable_workflow-0.4.98}/tests/test_history_bundle_verify.py +0 -0
  48. {durable_workflow-0.4.97 → durable_workflow-0.4.98}/tests/test_history_event_contract.py +0 -0
  49. {durable_workflow-0.4.97 → durable_workflow-0.4.98}/tests/test_invocable.py +0 -0
  50. {durable_workflow-0.4.97 → durable_workflow-0.4.98}/tests/test_metrics.py +0 -0
  51. {durable_workflow-0.4.97 → durable_workflow-0.4.98}/tests/test_order_processing_example.py +0 -0
  52. {durable_workflow-0.4.97 → durable_workflow-0.4.98}/tests/test_public_boundary_scanner.py +0 -0
  53. {durable_workflow-0.4.97 → durable_workflow-0.4.98}/tests/test_python_conformance.py +0 -0
  54. {durable_workflow-0.4.97 → durable_workflow-0.4.98}/tests/test_queries.py +0 -0
  55. {durable_workflow-0.4.97 → durable_workflow-0.4.98}/tests/test_readme_quickstart.py +0 -0
  56. {durable_workflow-0.4.97 → durable_workflow-0.4.98}/tests/test_release_docs_audit_workflow.py +0 -0
  57. {durable_workflow-0.4.97 → durable_workflow-0.4.98}/tests/test_replay_conformance.py +0 -0
  58. {durable_workflow-0.4.97 → durable_workflow-0.4.98}/tests/test_replay_verify.py +0 -0
  59. {durable_workflow-0.4.97 → durable_workflow-0.4.98}/tests/test_retry_policy.py +0 -0
  60. {durable_workflow-0.4.97 → durable_workflow-0.4.98}/tests/test_schedules.py +0 -0
  61. {durable_workflow-0.4.97 → durable_workflow-0.4.98}/tests/test_serializer.py +0 -0
  62. {durable_workflow-0.4.97 → durable_workflow-0.4.98}/tests/test_signals.py +0 -0
  63. {durable_workflow-0.4.97 → durable_workflow-0.4.98}/tests/test_sleep.py +0 -0
  64. {durable_workflow-0.4.97 → durable_workflow-0.4.98}/tests/test_standalone_activity_client.py +0 -0
  65. {durable_workflow-0.4.97 → durable_workflow-0.4.98}/tests/test_sync.py +0 -0
  66. {durable_workflow-0.4.97 → durable_workflow-0.4.98}/tests/test_testing_harness.py +0 -0
  67. {durable_workflow-0.4.97 → durable_workflow-0.4.98}/tests/test_updates.py +0 -0
  68. {durable_workflow-0.4.97 → durable_workflow-0.4.98}/tests/test_wait_condition.py +0 -0
  69. {durable_workflow-0.4.97 → durable_workflow-0.4.98}/tests/test_worker.py +0 -0
  70. {durable_workflow-0.4.97 → durable_workflow-0.4.98}/tests/test_workflow_updates_conformance.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: durable-workflow
3
- Version: 0.4.97
3
+ Version: 0.4.98
4
4
  Summary: Python SDK for the Durable Workflow server (language-neutral HTTP protocol)
5
5
  Author: Durable Workflow Contributors
6
6
  License-Expression: MIT
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "durable-workflow"
7
- version = "0.4.97"
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=_optional_str(payload.get("failure_category")) or "child_workflow",
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
  )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: durable-workflow
3
- Version: 0.4.97
3
+ Version: 0.4.98
4
4
  Summary: Python SDK for the Durable Workflow server (language-neutral HTTP protocol)
5
5
  Author: Durable Workflow Contributors
6
6
  License-Expression: MIT
@@ -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
  {