From fe6b24593550c371d9d62d3376c774522d46a112 Mon Sep 17 00:00:00 2001 From: Andy Staples Date: Mon, 10 Nov 2025 15:53:17 -0700 Subject: [PATCH 1/4] Drop 3.9 and add 3.14 Python version --- .github/workflows/durabletask-azuremanaged.yml | 8 ++++---- .github/workflows/durabletask.yml | 8 ++++---- durabletask-azuremanaged/pyproject.toml | 2 +- pyproject.toml | 2 +- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/.github/workflows/durabletask-azuremanaged.yml b/.github/workflows/durabletask-azuremanaged.yml index 9de61e38..620dc5c3 100644 --- a/.github/workflows/durabletask-azuremanaged.yml +++ b/.github/workflows/durabletask-azuremanaged.yml @@ -15,10 +15,10 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - name: Set up Python 3.13 + - name: Set up Python 3.14 uses: actions/setup-python@v5 with: - python-version: 3.13 + python-version: 3.14 - name: Install dependencies working-directory: durabletask-azuremanaged run: | @@ -36,7 +36,7 @@ jobs: strategy: fail-fast: false matrix: - python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"] + python-version: [""3.10", "3.11", "3.12", "3.13", "3.14"] env: EMULATOR_VERSION: "latest" needs: lint @@ -100,7 +100,7 @@ jobs: - name: Set up Python uses: actions/setup-python@v5 with: - python-version: "3.13" # Adjust Python version as needed + python-version: "3.14" # Adjust Python version as needed - name: Install dependencies run: | diff --git a/.github/workflows/durabletask.yml b/.github/workflows/durabletask.yml index 4fb3fb0e..2f417d9b 100644 --- a/.github/workflows/durabletask.yml +++ b/.github/workflows/durabletask.yml @@ -15,10 +15,10 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - name: Set up Python 3.13 + - name: Set up Python 3.14 uses: actions/setup-python@v5 with: - python-version: 3.13 + python-version: 3.14 - name: Install dependencies run: | python -m pip install --upgrade pip @@ -38,7 +38,7 @@ jobs: strategy: fail-fast: false matrix: - python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"] + python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"] needs: lint-and-unit-tests runs-on: ubuntu-latest steps: @@ -85,7 +85,7 @@ jobs: - name: Set up Python uses: actions/setup-python@v5 with: - python-version: "3.13" # Adjust Python version as needed + python-version: "3.14" # Adjust Python version as needed - name: Install dependencies run: | diff --git a/durabletask-azuremanaged/pyproject.toml b/durabletask-azuremanaged/pyproject.toml index 2c45be2d..38d431e1 100644 --- a/durabletask-azuremanaged/pyproject.toml +++ b/durabletask-azuremanaged/pyproject.toml @@ -22,7 +22,7 @@ classifiers = [ "Programming Language :: Python :: 3", "License :: OSI Approved :: MIT License", ] -requires-python = ">=3.9" +requires-python = ">=3.10" license = {file = "LICENSE"} readme = "README.md" dependencies = [ diff --git a/pyproject.toml b/pyproject.toml index 30a6dbe8..39104df5 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -21,7 +21,7 @@ classifiers = [ "Programming Language :: Python :: 3", "License :: OSI Approved :: MIT License", ] -requires-python = ">=3.9" +requires-python = ">=3.10" license = {file = "LICENSE"} readme = "README.md" dependencies = [ From a574731ad6faa04448e4e8750c3abecf0879084e Mon Sep 17 00:00:00 2001 From: Andy Staples Date: Mon, 10 Nov 2025 16:01:05 -0700 Subject: [PATCH 2/4] Fix typo --- .github/workflows/durabletask-azuremanaged.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/durabletask-azuremanaged.yml b/.github/workflows/durabletask-azuremanaged.yml index 620dc5c3..c2c40aee 100644 --- a/.github/workflows/durabletask-azuremanaged.yml +++ b/.github/workflows/durabletask-azuremanaged.yml @@ -36,7 +36,7 @@ jobs: strategy: fail-fast: false matrix: - python-version: [""3.10", "3.11", "3.12", "3.13", "3.14"] + python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"] env: EMULATOR_VERSION: "latest" needs: lint From 776f9162c65a02fcbf278ebd3ced1c2ceba06a2c Mon Sep 17 00:00:00 2001 From: Andy Staples Date: Mon, 10 Nov 2025 16:49:42 -0700 Subject: [PATCH 3/4] Fix flaky test --- tests/durabletask-azuremanaged/test_dts_orchestration_e2e.py | 2 +- tests/durabletask/test_orchestration_e2e.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/durabletask-azuremanaged/test_dts_orchestration_e2e.py b/tests/durabletask-azuremanaged/test_dts_orchestration_e2e.py index 61557335..b6d70c4d 100644 --- a/tests/durabletask-azuremanaged/test_dts_orchestration_e2e.py +++ b/tests/durabletask-azuremanaged/test_dts_orchestration_e2e.py @@ -265,7 +265,7 @@ def orchestrator(ctx: task.OrchestrationContext, _): # # Raise an event to the orchestration and confirm that it does NOT complete # task_hub_client.raise_orchestration_event(id, "my_event", data=42) # try: -# state = task_hub_client.wait_for_orchestration_completion(id, timeout=3) +# state = task_hub_client.wait_for_orchestration_completion(id, timeout=30) # assert False, "Orchestration should not have completed" # except TimeoutError: # pass diff --git a/tests/durabletask/test_orchestration_e2e.py b/tests/durabletask/test_orchestration_e2e.py index 63f14c58..470cc5bf 100644 --- a/tests/durabletask/test_orchestration_e2e.py +++ b/tests/durabletask/test_orchestration_e2e.py @@ -244,7 +244,7 @@ def orchestrator(ctx: task.OrchestrationContext, _): # Raise an event to the orchestration and confirm that it does NOT complete task_hub_client.raise_orchestration_event(id, "my_event", data=42) try: - state = task_hub_client.wait_for_orchestration_completion(id, timeout=3) + state = task_hub_client.wait_for_orchestration_completion(id, timeout=30) assert False, "Orchestration should not have completed" except TimeoutError: pass From 5f6824ed12ffd2c15a8c62b720e581e4add0324d Mon Sep 17 00:00:00 2001 From: Andy Staples Date: Mon, 10 Nov 2025 17:15:04 -0700 Subject: [PATCH 4/4] Actual flaky test fix --- .../durabletask-azuremanaged/test_dts_orchestration_e2e.py | 4 ++-- tests/durabletask/test_orchestration_e2e.py | 6 ++++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/tests/durabletask-azuremanaged/test_dts_orchestration_e2e.py b/tests/durabletask-azuremanaged/test_dts_orchestration_e2e.py index b6d70c4d..61a21f62 100644 --- a/tests/durabletask-azuremanaged/test_dts_orchestration_e2e.py +++ b/tests/durabletask-azuremanaged/test_dts_orchestration_e2e.py @@ -265,9 +265,9 @@ def orchestrator(ctx: task.OrchestrationContext, _): # # Raise an event to the orchestration and confirm that it does NOT complete # task_hub_client.raise_orchestration_event(id, "my_event", data=42) # try: -# state = task_hub_client.wait_for_orchestration_completion(id, timeout=30) +# state = task_hub_client.wait_for_orchestration_completion(id, timeout=3) # assert False, "Orchestration should not have completed" -# except TimeoutError: +# except (TimeoutError, _InactiveRpcError): # pass # # Resume the orchestration and wait for it to complete diff --git a/tests/durabletask/test_orchestration_e2e.py b/tests/durabletask/test_orchestration_e2e.py index 470cc5bf..edeec837 100644 --- a/tests/durabletask/test_orchestration_e2e.py +++ b/tests/durabletask/test_orchestration_e2e.py @@ -10,6 +10,8 @@ from durabletask import client, task, worker +from grpc._channel import _InactiveRpcError + # NOTE: These tests assume a sidecar process is running. Example command: # go install github.com/microsoft/durabletask-go@main # durabletask-go --port 4001 @@ -244,9 +246,9 @@ def orchestrator(ctx: task.OrchestrationContext, _): # Raise an event to the orchestration and confirm that it does NOT complete task_hub_client.raise_orchestration_event(id, "my_event", data=42) try: - state = task_hub_client.wait_for_orchestration_completion(id, timeout=30) + state = task_hub_client.wait_for_orchestration_completion(id, timeout=3) assert False, "Orchestration should not have completed" - except TimeoutError: + except (TimeoutError, _InactiveRpcError): pass # Resume the orchestration and wait for it to complete