diff --git a/airflow/operators/bash.py b/airflow/operators/bash.py index 9a188c2cc5656..08fdaff1cb95c 100644 --- a/airflow/operators/bash.py +++ b/airflow/operators/bash.py @@ -21,14 +21,16 @@ import shutil import warnings from functools import cached_property -from typing import Container, Sequence +from typing import TYPE_CHECKING, Container, Sequence from airflow.exceptions import AirflowException, AirflowSkipException from airflow.hooks.subprocess import SubprocessHook from airflow.models.baseoperator import BaseOperator -from airflow.utils.context import Context from airflow.utils.operator_helpers import context_to_airflow_vars +if TYPE_CHECKING: + from airflow.utils.context import Context + class BashOperator(BaseOperator): r""" diff --git a/airflow/operators/branch.py b/airflow/operators/branch.py index 757dc8efdf575..066ee52187dd5 100644 --- a/airflow/operators/branch.py +++ b/airflow/operators/branch.py @@ -18,11 +18,13 @@ """Branching operators.""" from __future__ import annotations -from typing import Iterable +from typing import TYPE_CHECKING, Iterable from airflow.models.baseoperator import BaseOperator from airflow.models.skipmixin import SkipMixin -from airflow.utils.context import Context + +if TYPE_CHECKING: + from airflow.utils.context import Context class BaseBranchOperator(BaseOperator, SkipMixin): diff --git a/airflow/operators/datetime.py b/airflow/operators/datetime.py index e6f47912ad9af..4e2638341abb1 100644 --- a/airflow/operators/datetime.py +++ b/airflow/operators/datetime.py @@ -18,12 +18,14 @@ import datetime import warnings -from typing import Iterable +from typing import TYPE_CHECKING, Iterable from airflow.exceptions import AirflowException, RemovedInAirflow3Warning from airflow.operators.branch import BaseBranchOperator from airflow.utils import timezone -from airflow.utils.context import Context + +if TYPE_CHECKING: + from airflow.utils.context import Context class BranchDateTimeOperator(BaseBranchOperator): diff --git a/airflow/operators/email.py b/airflow/operators/email.py index 1b8e529593451..98af60afe4afc 100644 --- a/airflow/operators/email.py +++ b/airflow/operators/email.py @@ -17,12 +17,14 @@ # under the License. from __future__ import annotations -from typing import Any, Sequence +from typing import TYPE_CHECKING, Any, Sequence from airflow.models.baseoperator import BaseOperator -from airflow.utils.context import Context from airflow.utils.email import send_email +if TYPE_CHECKING: + from airflow.utils.context import Context + class EmailOperator(BaseOperator): """ diff --git a/airflow/operators/empty.py b/airflow/operators/empty.py index 18266c366b36a..fb116ee0f9772 100644 --- a/airflow/operators/empty.py +++ b/airflow/operators/empty.py @@ -16,8 +16,12 @@ # under the License. from __future__ import annotations +from typing import TYPE_CHECKING + from airflow.models.baseoperator import BaseOperator -from airflow.utils.context import Context + +if TYPE_CHECKING: + from airflow.utils.context import Context class EmptyOperator(BaseOperator): diff --git a/airflow/operators/generic_transfer.py b/airflow/operators/generic_transfer.py index ba51a8b1c8ba2..a808e23997617 100644 --- a/airflow/operators/generic_transfer.py +++ b/airflow/operators/generic_transfer.py @@ -17,11 +17,13 @@ # under the License. from __future__ import annotations -from typing import Sequence +from typing import TYPE_CHECKING, Sequence from airflow.hooks.base import BaseHook from airflow.models import BaseOperator -from airflow.utils.context import Context + +if TYPE_CHECKING: + from airflow.utils.context import Context class GenericTransfer(BaseOperator): diff --git a/airflow/operators/latest_only.py b/airflow/operators/latest_only.py index b1d7f912ee696..bca66dc2d4a81 100644 --- a/airflow/operators/latest_only.py +++ b/airflow/operators/latest_only.py @@ -23,10 +23,10 @@ import pendulum from airflow.operators.branch import BaseBranchOperator -from airflow.utils.context import Context if TYPE_CHECKING: from airflow.models import DAG, DagRun + from airflow.utils.context import Context class LatestOnlyOperator(BaseBranchOperator): diff --git a/airflow/operators/python.py b/airflow/operators/python.py index ad2deb8ad7069..1d6fd2eb3b5be 100644 --- a/airflow/operators/python.py +++ b/airflow/operators/python.py @@ -46,7 +46,7 @@ from airflow.models.baseoperator import BaseOperator from airflow.models.skipmixin import SkipMixin from airflow.models.taskinstance import _CURRENT_CONTEXT -from airflow.utils.context import Context, context_copy_partial, context_merge +from airflow.utils.context import context_copy_partial, context_merge from airflow.utils.operator_helpers import KeywordParameters from airflow.utils.process_utils import execute_in_subprocess from airflow.utils.python_virtualenv import prepare_virtualenv, write_python_script @@ -54,6 +54,8 @@ if TYPE_CHECKING: from pendulum.datetime import DateTime + from airflow.utils.context import Context + def is_venv_installed() -> bool: """ diff --git a/airflow/operators/smooth.py b/airflow/operators/smooth.py index 7467649557ef5..927f33b1a2fe5 100644 --- a/airflow/operators/smooth.py +++ b/airflow/operators/smooth.py @@ -17,8 +17,12 @@ # under the License. from __future__ import annotations +from typing import TYPE_CHECKING + from airflow.models.baseoperator import BaseOperator -from airflow.utils.context import Context + +if TYPE_CHECKING: + from airflow.utils.context import Context class SmoothOperator(BaseOperator): diff --git a/airflow/operators/subdag.py b/airflow/operators/subdag.py index 345c36e72b10c..44e92c3086931 100644 --- a/airflow/operators/subdag.py +++ b/airflow/operators/subdag.py @@ -23,24 +23,30 @@ from __future__ import annotations import warnings -from datetime import datetime from enum import Enum +from typing import TYPE_CHECKING from sqlalchemy import select -from sqlalchemy.orm.session import Session from airflow.api.common.experimental.get_task_instance import get_task_instance from airflow.exceptions import AirflowException, RemovedInAirflow3Warning, TaskInstanceNotFound from airflow.models import DagRun -from airflow.models.dag import DAG, DagContext +from airflow.models.dag import DagContext from airflow.models.pool import Pool from airflow.models.taskinstance import TaskInstance from airflow.sensors.base import BaseSensorOperator -from airflow.utils.context import Context from airflow.utils.session import NEW_SESSION, create_session, provide_session from airflow.utils.state import DagRunState, TaskInstanceState from airflow.utils.types import DagRunType +if TYPE_CHECKING: + from datetime import datetime + + from sqlalchemy.orm.session import Session + + from airflow.models.dag import DAG + from airflow.utils.context import Context + class SkippedStatePropagationOptions(Enum): """Available options for skipped state propagation of subdag's tasks to parent dag tasks.""" diff --git a/airflow/operators/trigger_dagrun.py b/airflow/operators/trigger_dagrun.py index 5a7be1dcab7ab..b8a61290dc09b 100644 --- a/airflow/operators/trigger_dagrun.py +++ b/airflow/operators/trigger_dagrun.py @@ -34,7 +34,6 @@ from airflow.models.xcom import XCom from airflow.triggers.external_task import DagStateTrigger from airflow.utils import timezone -from airflow.utils.context import Context from airflow.utils.helpers import build_airflow_url_with_query from airflow.utils.session import provide_session from airflow.utils.state import DagRunState @@ -48,6 +47,7 @@ from sqlalchemy.orm.session import Session from airflow.models.taskinstancekey import TaskInstanceKey + from airflow.utils.context import Context class TriggerDagRunLink(BaseOperatorLink): diff --git a/airflow/operators/weekday.py b/airflow/operators/weekday.py index ea57ac65bdb93..c82afddad210d 100644 --- a/airflow/operators/weekday.py +++ b/airflow/operators/weekday.py @@ -18,14 +18,16 @@ from __future__ import annotations import warnings -from typing import Iterable +from typing import TYPE_CHECKING, Iterable from airflow.exceptions import RemovedInAirflow3Warning from airflow.operators.branch import BaseBranchOperator from airflow.utils import timezone -from airflow.utils.context import Context from airflow.utils.weekday import WeekDay +if TYPE_CHECKING: + from airflow.utils.context import Context + class BranchDayOfWeekOperator(BaseBranchOperator): """Branches into one of two lists of tasks depending on the current day.