This is an automated email from the ASF dual-hosted git repository.

vatsrahul1001 pushed a commit to branch 
fix-xcom-entity-in-not-previously-skipped-dep
in repository https://gitbox.apache.org/repos/asf/airflow.git

commit 8187b65bb3b6e21de668bb8c4c8b5aa0301e77f1
Author: Rahul Vats <[email protected]>
AuthorDate: Wed Oct 7 09:51:51 2026 +0530

    Read XComModel columns through xcom_entity in NotPreviouslySkippedDep
    
    The mapped-task-group skip-decision query added in #74283 reads
    XComModel.task_id/map_index/value directly in with_only_columns, which the
    check-xcom-model-columns prek hook forbids, turning the repo-wide 
static-check
    job red for every PR. Read them through xcom_entity(query) as the hook 
requires.
---
 airflow-core/src/airflow/ti_deps/deps/not_previously_skipped_dep.py | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git 
a/airflow-core/src/airflow/ti_deps/deps/not_previously_skipped_dep.py 
b/airflow-core/src/airflow/ti_deps/deps/not_previously_skipped_dep.py
index 1af358b07ed..16c21d8308a 100644
--- a/airflow-core/src/airflow/ti_deps/deps/not_previously_skipped_dep.py
+++ b/airflow-core/src/airflow/ti_deps/deps/not_previously_skipped_dep.py
@@ -20,7 +20,7 @@ from __future__ import annotations
 from typing import TYPE_CHECKING
 
 from airflow.models.taskinstance import PAST_DEPENDS_MET
-from airflow.models.xcom import XComModel
+from airflow.models.xcom import XComModel, xcom_entity
 from airflow.ti_deps.deps.base_ti_dep import BaseTIDep
 from airflow.utils.state import TaskInstanceState
 
@@ -177,8 +177,9 @@ def _mapped_group_skip_decisions(
         query = XComModel.get_many(
             run_id=ti.run_id, key=XCOM_SKIPMIXIN_KEY, dag_ids=ti.dag_id, 
task_ids=skipmixin_task_ids
         )
+        entity = xcom_entity(query)
         rows = session.execute(
-            query.with_only_columns(XComModel.task_id, XComModel.map_index, 
XComModel.value).order_by(None)
+            query.with_only_columns(entity.task_id, entity.map_index, 
entity.value).order_by(None)
         )
         for row in rows:
             if (state := finished_states.get((row.task_id, row.map_index))) is 
None:

Reply via email to