Skip to content

Commit 1199dc5

Browse files
authored
Consolidate SkipMixin imports through common-compat layer (#62776)
Replace version-conditional SkipMixin imports in branch.py and test_skipmixin.py with the common.compat.sdk layer. Add the standard provider's skipmixin as a middle fallback path in the compat import chain for consistency with common/compat/standard/utils.py. Also route SkipMixin and XComArg in common/sql through the compat layer instead of importing directly from airflow.models / airflow.
1 parent 483d84c commit 1199dc5

5 files changed

Lines changed: 11 additions & 13 deletions

File tree

  • providers

providers/common/compat/src/airflow/providers/common/compat/sdk.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,11 @@
155155
# ============================================================================
156156
"BaseBranchOperator": ("airflow.sdk.bases.branch", "airflow.providers.standard.operators.branch"),
157157
"BranchMixIn": ("airflow.sdk.bases.branch", "airflow.providers.standard.operators.branch"),
158-
"SkipMixin": ("airflow.sdk.bases.skipmixin", "airflow.models.skipmixin"),
158+
"SkipMixin": (
159+
"airflow.sdk.bases.skipmixin",
160+
"airflow.models.skipmixin",
161+
"airflow.providers.standard.utils.skipmixin",
162+
),
159163
# ============================================================================
160164
# Sensors
161165
# ============================================================================

providers/common/compat/src/airflow/providers/common/compat/standard/utils.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@
2222
_IMPORT_MAP: dict[str, str | tuple[str, ...]] = {
2323
"SkipMixin": (
2424
"airflow.sdk.bases.skipmixin",
25-
"airflow.providers.standard.utils.skipmixin",
2625
"airflow.models.skipmixin",
26+
"airflow.providers.standard.utils.skipmixin",
2727
),
2828
"XCOM_SKIPMIXIN_KEY": (
2929
"airflow.sdk.bases.skipmixin",

providers/common/sql/src/airflow/providers/common/sql/operators/sql.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,14 @@
2323
from functools import cached_property
2424
from typing import TYPE_CHECKING, Any, ClassVar, NoReturn, SupportsAbs
2525

26-
from airflow import XComArg
27-
from airflow.models import SkipMixin
2826
from airflow.providers.common.compat.sdk import (
2927
AirflowException,
3028
AirflowFailException,
3129
AirflowSkipException,
3230
BaseHook,
3331
BaseOperator,
32+
SkipMixin,
33+
XComArg,
3434
)
3535
from airflow.providers.common.sql.hooks.handlers import fetch_all_handler, return_single_query_results
3636
from airflow.providers.common.sql.hooks.sql import DbApiHook

providers/standard/src/airflow/providers/standard/operators/branch.py

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,8 @@
2222
from collections.abc import Iterable
2323
from typing import TYPE_CHECKING
2424

25-
from airflow.providers.standard.version_compat import AIRFLOW_V_3_0_PLUS, BaseOperator
26-
27-
if AIRFLOW_V_3_0_PLUS:
28-
from airflow.providers.standard.utils.skipmixin import SkipMixin
29-
else:
30-
from airflow.models.skipmixin import SkipMixin # type: ignore[no-redef]
25+
from airflow.providers.common.compat.sdk import SkipMixin
26+
from airflow.providers.standard.version_compat import BaseOperator
3127

3228
if TYPE_CHECKING:
3329
from airflow.providers.common.compat.sdk import Context

providers/standard/tests/unit/standard/utils/test_skipmixin.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
from sqlalchemy import select
2525

2626
from airflow.models.taskinstance import TaskInstance as TI
27-
from airflow.providers.common.compat.sdk import AirflowException
27+
from airflow.providers.common.compat.sdk import AirflowException, SkipMixin
2828
from airflow.providers.standard.operators.empty import EmptyOperator
2929
from airflow.utils import timezone
3030
from airflow.utils.state import State
@@ -39,12 +39,10 @@
3939
if AIRFLOW_V_3_0_PLUS:
4040
from airflow.models.dag_version import DagVersion
4141
from airflow.providers.common.compat.sdk import DownstreamTasksSkipped
42-
from airflow.providers.standard.utils.skipmixin import SkipMixin
4342
from airflow.sdk import task, task_group
4443
from airflow.sdk.execution_time.task_runner import RuntimeTaskInstance
4544
else:
4645
from airflow.decorators import task, task_group # type: ignore[attr-defined,no-redef]
47-
from airflow.models.skipmixin import SkipMixin # type: ignore[no-redef]
4846

4947
DEFAULT_DATE = timezone.datetime(2016, 1, 1)
5048
DEFAULT_DAG_RUN_ID = "test1"

0 commit comments

Comments
 (0)