durable-workflow 2.4.1__tar.gz → 2.4.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.
- {durable_workflow-2.4.1/src/durable_workflow.egg-info → durable_workflow-2.4.2}/PKG-INFO +1 -1
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/pyproject.toml +3 -3
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/src/durable_workflow/client.py +13 -1
- {durable_workflow-2.4.1 → durable_workflow-2.4.2/src/durable_workflow.egg-info}/PKG-INFO +1 -1
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/tests/test_client.py +19 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/tests/test_pending_operation_replay.py +40 -1
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/LICENSE +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/README.md +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/setup.cfg +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/src/durable_workflow/__init__.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/src/durable_workflow/_activity_process.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/src/durable_workflow/_avro.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/src/durable_workflow/_cancellation_scope.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/src/durable_workflow/_cancellation_scope_history.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/src/durable_workflow/_cooperative_cancellation.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/src/durable_workflow/_prepared_local_activity.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/src/durable_workflow/activity.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/src/durable_workflow/auth_composition.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/src/durable_workflow/cancellation.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/src/durable_workflow/errors.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/src/durable_workflow/external_storage.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/src/durable_workflow/external_task_input.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/src/durable_workflow/external_task_result.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/src/durable_workflow/history_bundle_verify.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/src/durable_workflow/interceptors.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/src/durable_workflow/invocable.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/src/durable_workflow/metrics.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/src/durable_workflow/nexus.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/src/durable_workflow/py.typed +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/src/durable_workflow/python_conformance.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/src/durable_workflow/replay_conformance.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/src/durable_workflow/replay_verify.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/src/durable_workflow/retry_policy.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/src/durable_workflow/serializer.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/src/durable_workflow/sync.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/src/durable_workflow/testing.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/src/durable_workflow/worker.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/src/durable_workflow/worker_session.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/src/durable_workflow/workflow.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/src/durable_workflow/workflow_updates_conformance.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/src/durable_workflow.egg-info/SOURCES.txt +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/src/durable_workflow.egg-info/dependency_links.txt +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/src/durable_workflow.egg-info/entry_points.txt +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/src/durable_workflow.egg-info/requires.txt +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/src/durable_workflow.egg-info/top_level.txt +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/tests/test_activity_cancellation_policies.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/tests/test_activity_context.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/tests/test_activity_process.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/tests/test_auth_composition.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/tests/test_avro_value_benchmark.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/tests/test_avro_value_protocol.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/tests/test_cancellation_context.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/tests/test_cancellation_remaining_time.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/tests/test_cancellation_scope_admission.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/tests/test_cancellation_scope_authoring.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/tests/test_cancellation_scope_boundary.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/tests/test_cancellation_scope_opening.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/tests/test_child_workflow_policies.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/tests/test_ci_checkout.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/tests/test_ci_integration_endpoint.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/tests/test_client_timeouts.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/tests/test_codec_regression_corpus.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/tests/test_committed_cancellation_scope_descendants.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/tests/test_committed_cancellation_scope_groups.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/tests/test_committed_cancellation_scope_history.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/tests/test_committed_cancellation_scope_replay.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/tests/test_control_plane_parity_fixtures.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/tests/test_cooperative_cancellation.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/tests/test_cooperative_cancellation_client.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/tests/test_cooperative_cancellation_worker.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/tests/test_cooperative_remote_worker.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/tests/test_docstring_cross_references.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/tests/test_durable_selection.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/tests/test_errors.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/tests/test_external_storage.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/tests/test_external_task_input.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/tests/test_external_task_result.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/tests/test_golden_history_replay.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/tests/test_history_bundle_verify.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/tests/test_history_event_contract.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/tests/test_invocable.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/tests/test_message_streams.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/tests/test_metrics.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/tests/test_order_processing_example.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/tests/test_parallel_completion_order_replay.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/tests/test_parallel_saga_authoring.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/tests/test_prepared_local_activity_client.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/tests/test_prepared_local_activity_groups.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/tests/test_prepared_local_activity_policies.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/tests/test_prepared_local_activity_worker.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/tests/test_public_boundary_scanner.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/tests/test_pypi_project_surface.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/tests/test_python_conformance.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/tests/test_queries.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/tests/test_readme_quickstart.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/tests/test_redrive_replay.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/tests/test_release_metadata.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/tests/test_replay.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/tests/test_replay_conformance.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/tests/test_replay_regression_corpus.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/tests/test_replay_verify.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/tests/test_retry_policy.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/tests/test_run_cancellation_scope_replay.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/tests/test_runtime_external_payload_transport.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/tests/test_schedules.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/tests/test_scoped_run_cancellation_context.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/tests/test_serializer.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/tests/test_signals.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/tests/test_sleep.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/tests/test_standalone_activity_client.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/tests/test_storage_admission.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/tests/test_sync.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/tests/test_testing_harness.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/tests/test_update_signal_condition_replay.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/tests/test_updates.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/tests/test_wait_condition.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/tests/test_worker.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/tests/test_worker_session.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/tests/test_workflow_result_timeout.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/tests/test_workflow_streams.py +0 -0
- {durable_workflow-2.4.1 → durable_workflow-2.4.2}/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 = "2.4.
|
|
7
|
+
version = "2.4.2"
|
|
8
8
|
description = "Python client and worker SDK for Durable Workflow Cloud and self-hosted Server"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.10"
|
|
@@ -71,8 +71,8 @@ durable-workflow-replay-conformance = "durable_workflow.replay_conformance:main"
|
|
|
71
71
|
durable-workflow-workflow-updates-conformance = "durable_workflow.workflow_updates_conformance:main"
|
|
72
72
|
|
|
73
73
|
[tool.durable-workflow]
|
|
74
|
-
product-train = "2.4.
|
|
75
|
-
registry-version = "2.4.
|
|
74
|
+
product-train = "2.4.2"
|
|
75
|
+
registry-version = "2.4.2"
|
|
76
76
|
supported-server-versions = "2.5.0"
|
|
77
77
|
worker-protocol-version = "1.19"
|
|
78
78
|
control-plane-version = "2"
|
|
@@ -5115,11 +5115,23 @@ class Client:
|
|
|
5115
5115
|
|
|
5116
5116
|
Worker-plane endpoint, called by :class:`~durable_workflow.Worker`.
|
|
5117
5117
|
``commands`` is the list of serialized commands the workflow yielded
|
|
5118
|
-
for this task.
|
|
5118
|
+
for this task. An empty list acknowledges waiting for already scheduled
|
|
5119
|
+
history without reporting a workflow failure or scheduling another operation.
|
|
5119
5120
|
"""
|
|
5120
5121
|
if (message_stream_cursors or message_stream_waits) and not _worker_protocol_supports_message_streams():
|
|
5121
5122
|
raise ValueError("message stream completion metadata requires worker protocol 1.15 or newer")
|
|
5122
5123
|
|
|
5124
|
+
if not commands:
|
|
5125
|
+
if message_stream_cursors or message_stream_waits:
|
|
5126
|
+
raise ValueError("Message stream completion metadata requires nonempty commands.")
|
|
5127
|
+
return await self.fail_workflow_task(
|
|
5128
|
+
task_id=task_id,
|
|
5129
|
+
lease_owner=lease_owner,
|
|
5130
|
+
workflow_task_attempt=workflow_task_attempt,
|
|
5131
|
+
message="Workflow task waiting for scheduled history.",
|
|
5132
|
+
failure_type="WorkflowTaskWaitingForHistory",
|
|
5133
|
+
)
|
|
5134
|
+
|
|
5123
5135
|
body: dict[str, Any] = {
|
|
5124
5136
|
"lease_owner": lease_owner,
|
|
5125
5137
|
"workflow_task_attempt": workflow_task_attempt,
|
|
@@ -2903,6 +2903,25 @@ class TestFailWorkflowTask:
|
|
|
2903
2903
|
assert mock.call_args.args[:2] == (fixture["request"]["method"], f"/api{fixture['request']['path']}")
|
|
2904
2904
|
assert mock.call_args.kwargs["json"] == fixture["request"]["body"]
|
|
2905
2905
|
|
|
2906
|
+
@pytest.mark.asyncio
|
|
2907
|
+
@pytest.mark.parametrize("metadata", [
|
|
2908
|
+
{"message_stream_cursors": [{"stream_name": "input", "sequence": 7}]},
|
|
2909
|
+
{"message_stream_waits": [{"stream_name": "input"}]},
|
|
2910
|
+
])
|
|
2911
|
+
async def test_empty_completion_does_not_discard_message_stream_metadata(
|
|
2912
|
+
self, client: Client, metadata: dict
|
|
2913
|
+
) -> None:
|
|
2914
|
+
with (
|
|
2915
|
+
patch.object(client._http, "request", new_callable=AsyncMock,
|
|
2916
|
+
return_value=_mock_response(200, {"completed": True})) as mock,
|
|
2917
|
+
pytest.raises(ValueError, match="nonempty commands"),
|
|
2918
|
+
):
|
|
2919
|
+
await client.complete_workflow_task(
|
|
2920
|
+
task_id="task", lease_owner="owner", workflow_task_attempt=3,
|
|
2921
|
+
commands=[], **metadata,
|
|
2922
|
+
)
|
|
2923
|
+
mock.assert_not_awaited()
|
|
2924
|
+
|
|
2906
2925
|
@pytest.mark.asyncio
|
|
2907
2926
|
async def test_fail_workflow_task_matches_polyglot_fixture(self, client: Client) -> None:
|
|
2908
2927
|
fixture_path = Path(__file__).parent / "fixtures" / "control-plane" / "workflow-task-fail-parity.json"
|
|
@@ -2,10 +2,12 @@
|
|
|
2
2
|
from __future__ import annotations
|
|
3
3
|
|
|
4
4
|
from typing import Any
|
|
5
|
+
from unittest.mock import AsyncMock, patch
|
|
5
6
|
|
|
7
|
+
import httpx
|
|
6
8
|
import pytest
|
|
7
9
|
|
|
8
|
-
from durable_workflow import serializer, workflow
|
|
10
|
+
from durable_workflow import Client, Worker, serializer, workflow
|
|
9
11
|
from durable_workflow.errors import NonDeterministicReplayError
|
|
10
12
|
from durable_workflow.workflow import CompleteWorkflow, WorkflowContext, query_state, replay
|
|
11
13
|
|
|
@@ -78,6 +80,43 @@ def test_signal_replay_does_not_reschedule_pending_operation(kind: str) -> None:
|
|
|
78
80
|
)
|
|
79
81
|
|
|
80
82
|
|
|
83
|
+
@pytest.mark.asyncio
|
|
84
|
+
@pytest.mark.parametrize("kind", OPENINGS)
|
|
85
|
+
async def test_worker_acknowledges_pending_signal_replay_with_original_lease(kind: str) -> None:
|
|
86
|
+
history = initial_history() + [OPENINGS[kind], {
|
|
87
|
+
"event_type": "SignalReceived", "payload": {
|
|
88
|
+
"signal_name": "increment", "arguments": serializer.envelope([7]),
|
|
89
|
+
},
|
|
90
|
+
}]
|
|
91
|
+
requests = []
|
|
92
|
+
|
|
93
|
+
async def server(method, path, **kwargs): # type: ignore[no-untyped-def]
|
|
94
|
+
body = kwargs["json"]
|
|
95
|
+
requests.append((method, path, body, kwargs["headers"]["Authorization"]))
|
|
96
|
+
if path.endswith("/complete") and not body["commands"]:
|
|
97
|
+
return httpx.Response(422, json={"message": "The commands field is required."},
|
|
98
|
+
request=httpx.Request(method, "http://test" + path))
|
|
99
|
+
assert path.endswith("/fail")
|
|
100
|
+
return httpx.Response(200, json={"outcome": "waiting_for_history", "recorded": True},
|
|
101
|
+
request=httpx.Request(method, "http://test" + path))
|
|
102
|
+
|
|
103
|
+
async with Client("http://test", worker_token="worker-token") as client:
|
|
104
|
+
worker = Worker(client, task_queue="queue", worker_id="original-owner", workflows=[PendingOperation])
|
|
105
|
+
with patch.object(client._http, "request", new=AsyncMock(side_effect=server)):
|
|
106
|
+
commands = await worker._run_workflow_task({
|
|
107
|
+
"task_id": "original-task", "workflow_task_attempt": 4, "run_id": "original-run",
|
|
108
|
+
"workflow_type": "tests.replay.pending-operation", "history_events": history,
|
|
109
|
+
"payload_codec": "avro", "arguments": serializer.envelope([kind]),
|
|
110
|
+
})
|
|
111
|
+
|
|
112
|
+
assert commands == []
|
|
113
|
+
assert requests == [("POST", "/api/worker/workflow-tasks/original-task/fail", {
|
|
114
|
+
"lease_owner": "original-owner", "workflow_task_attempt": 4,
|
|
115
|
+
"failure": {"message": "Workflow task waiting for scheduled history.",
|
|
116
|
+
"type": "WorkflowTaskWaitingForHistory"},
|
|
117
|
+
}, "Bearer worker-token")]
|
|
118
|
+
|
|
119
|
+
|
|
81
120
|
@pytest.mark.parametrize("kind", OPENINGS)
|
|
82
121
|
def test_new_operation_is_still_scheduled(kind: str) -> None:
|
|
83
122
|
outcome = replay(PendingOperation, initial_history(), [kind])
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{durable_workflow-2.4.1 → durable_workflow-2.4.2}/src/durable_workflow/_cancellation_scope.py
RENAMED
|
File without changes
|
|
File without changes
|
{durable_workflow-2.4.1 → durable_workflow-2.4.2}/src/durable_workflow/_cooperative_cancellation.py
RENAMED
|
File without changes
|
{durable_workflow-2.4.1 → durable_workflow-2.4.2}/src/durable_workflow/_prepared_local_activity.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{durable_workflow-2.4.1 → durable_workflow-2.4.2}/src/durable_workflow/external_task_input.py
RENAMED
|
File without changes
|
{durable_workflow-2.4.1 → durable_workflow-2.4.2}/src/durable_workflow/external_task_result.py
RENAMED
|
File without changes
|
{durable_workflow-2.4.1 → durable_workflow-2.4.2}/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-2.4.1 → durable_workflow-2.4.2}/src/durable_workflow/python_conformance.py
RENAMED
|
File without changes
|
{durable_workflow-2.4.1 → durable_workflow-2.4.2}/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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{durable_workflow-2.4.1 → durable_workflow-2.4.2}/src/durable_workflow.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
{durable_workflow-2.4.1 → durable_workflow-2.4.2}/src/durable_workflow.egg-info/entry_points.txt
RENAMED
|
File without changes
|
{durable_workflow-2.4.1 → durable_workflow-2.4.2}/src/durable_workflow.egg-info/requires.txt
RENAMED
|
File without changes
|
{durable_workflow-2.4.1 → durable_workflow-2.4.2}/src/durable_workflow.egg-info/top_level.txt
RENAMED
|
File without changes
|
{durable_workflow-2.4.1 → durable_workflow-2.4.2}/tests/test_activity_cancellation_policies.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-2.4.1 → durable_workflow-2.4.2}/tests/test_cancellation_scope_admission.py
RENAMED
|
File without changes
|
{durable_workflow-2.4.1 → durable_workflow-2.4.2}/tests/test_cancellation_scope_authoring.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
|
{durable_workflow-2.4.1 → durable_workflow-2.4.2}/tests/test_committed_cancellation_scope_groups.py
RENAMED
|
File without changes
|
{durable_workflow-2.4.1 → durable_workflow-2.4.2}/tests/test_committed_cancellation_scope_history.py
RENAMED
|
File without changes
|
{durable_workflow-2.4.1 → durable_workflow-2.4.2}/tests/test_committed_cancellation_scope_replay.py
RENAMED
|
File without changes
|
{durable_workflow-2.4.1 → durable_workflow-2.4.2}/tests/test_control_plane_parity_fixtures.py
RENAMED
|
File without changes
|
|
File without changes
|
{durable_workflow-2.4.1 → durable_workflow-2.4.2}/tests/test_cooperative_cancellation_client.py
RENAMED
|
File without changes
|
{durable_workflow-2.4.1 → durable_workflow-2.4.2}/tests/test_cooperative_cancellation_worker.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-2.4.1 → durable_workflow-2.4.2}/tests/test_parallel_completion_order_replay.py
RENAMED
|
File without changes
|
|
File without changes
|
{durable_workflow-2.4.1 → durable_workflow-2.4.2}/tests/test_prepared_local_activity_client.py
RENAMED
|
File without changes
|
{durable_workflow-2.4.1 → durable_workflow-2.4.2}/tests/test_prepared_local_activity_groups.py
RENAMED
|
File without changes
|
{durable_workflow-2.4.1 → durable_workflow-2.4.2}/tests/test_prepared_local_activity_policies.py
RENAMED
|
File without changes
|
{durable_workflow-2.4.1 → durable_workflow-2.4.2}/tests/test_prepared_local_activity_worker.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
|
{durable_workflow-2.4.1 → durable_workflow-2.4.2}/tests/test_run_cancellation_scope_replay.py
RENAMED
|
File without changes
|
{durable_workflow-2.4.1 → durable_workflow-2.4.2}/tests/test_runtime_external_payload_transport.py
RENAMED
|
File without changes
|
|
File without changes
|
{durable_workflow-2.4.1 → durable_workflow-2.4.2}/tests/test_scoped_run_cancellation_context.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-2.4.1 → durable_workflow-2.4.2}/tests/test_update_signal_condition_replay.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{durable_workflow-2.4.1 → durable_workflow-2.4.2}/tests/test_workflow_updates_conformance.py
RENAMED
|
File without changes
|