From d95bfaa575176fd0b53e8179aadbdc06b8b3d904 Mon Sep 17 00:00:00 2001 From: SimonTaurus Date: Tue, 16 Jun 2026 04:51:15 +0200 Subject: [PATCH 1/3] fix: pin prefect version --- setup.cfg | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/setup.cfg b/setup.cfg index f900004..09ea998 100644 --- a/setup.cfg +++ b/setup.cfg @@ -118,7 +118,9 @@ dev = # Add here test requirements (semicolon/line-separated) testing = pytest-asyncio - prefect + # inherit the capped prefect pin (<3.0); a bare "prefect" here resolved to + # 3.x in CI, whose server API breaks the prefect-2.20-targeted tests + %(workflow)s setuptools pytest pytest-cov From 74c9f5f6773f694696588987c48285f05d3156ea Mon Sep 17 00:00:00 2001 From: SimonTaurus Date: Tue, 16 Jun 2026 05:12:19 +0200 Subject: [PATCH 2/3] fix(test): remove redundant @flow decorator breaking collection on prefect 2.20/py3.13 --- tests/utils/workflow_test.py | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/utils/workflow_test.py b/tests/utils/workflow_test.py index c99d8e5..c3ace14 100644 --- a/tests/utils/workflow_test.py +++ b/tests/utils/workflow_test.py @@ -34,7 +34,6 @@ ], log_prints=True, ) -@flow def osw_python_teams_notify_test_flow(): """Notify Microsoft Teams channel using a webhook""" return 42 From 018823ebf7843ff2e355ed68286c8ab9460f37d3 Mon Sep 17 00:00:00 2001 From: SimonTaurus Date: Tue, 16 Jun 2026 06:22:31 +0200 Subject: [PATCH 3/3] fix(ci): cap anyio <4.7 for prefect 2.20 compatibility prefect 2.20.25 (final 2.x, no backport) GatherTaskGroup doesn't implement anyio's create_task, which anyio made abstract in newer 4.x. Hold anyio to the last verified-good 4.6 line so the flow engine can instantiate task groups. Verified: tox -e test now 30 passed / 21 skipped. --- setup.cfg | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/setup.cfg b/setup.cfg index 09ea998..b300b0d 100644 --- a/setup.cfg +++ b/setup.cfg @@ -100,6 +100,12 @@ UI = pysimplegui workflow = prefect>=2.20.25,<3.0 + # prefect 2.20.25 is the final 2.x release (no backports). Its + # GatherTaskGroup subclasses anyio's TaskGroup but doesn't implement + # create_task, which newer anyio 4.x made abstract (broken on 4.14, + # verified good on 4.6.2); hold anyio to the last verified-good 4.6 line + # so the prefect-2.x flow engine can still instantiate task groups. + anyio>=4.4.0,<4.7 tutorial = %(dataimport)s all =