From 8d8bd38e730396109bed4accb74f0c068057944a Mon Sep 17 00:00:00 2001 From: Tyson Cung Date: Mon, 1 Jun 2026 23:43:30 +0000 Subject: [PATCH] fix: widen type hint for DagRun.get_task_instances state parameter The state parameter on DagRun.get_task_instances and DagRun.fetch_task_instances was annotated as Iterable[TaskInstanceState | None] | None, but the runtime handles a single TaskInstanceState value via an isinstance(state, str) short-circuit. Since TaskInstanceState(str, Enum) inherits from str, calling with state=TaskInstanceState.FAILED works at runtime but mypy/pyright flags it. Widen the annotation to TaskInstanceState | Iterable[TaskInstanceState | None] | None to match the actual runtime behaviour. Fixes #67653 --- airflow-core/src/airflow/models/dagrun.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/airflow-core/src/airflow/models/dagrun.py b/airflow-core/src/airflow/models/dagrun.py index 25f6397c074ec..36ef372e39aa2 100644 --- a/airflow-core/src/airflow/models/dagrun.py +++ b/airflow-core/src/airflow/models/dagrun.py @@ -836,7 +836,7 @@ def fetch_task_instances( dag_id: str | None = None, run_id: str | None = None, task_ids: list[str] | None = None, - state: Iterable[TaskInstanceState | None] | None = None, + state: TaskInstanceState | Iterable[TaskInstanceState | None] | None = None, *, session: Session = NEW_SESSION, ) -> list[TI]: @@ -917,7 +917,7 @@ def _check_last_n_dagruns_failed(self, dag_id, max_consecutive_failed_dag_runs, @provide_session def get_task_instances( self, - state: Iterable[TaskInstanceState | None] | None = None, + state: TaskInstanceState | Iterable[TaskInstanceState | None] | None = None, *, session: Session = NEW_SESSION, ) -> list[TI]: