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

husseinawala pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git


The following commit(s) were added to refs/heads/main by this push:
     new 8ebb70091b Improve importing the module in Airflow operators package 
(#33800)
8ebb70091b is described below

commit 8ebb70091b05d2750417b544843312d3e0d6ec8c
Author: Hussein Awala <[email protected]>
AuthorDate: Sun Aug 27 21:39:41 2023 +0200

    Improve importing the module in Airflow operators package (#33800)
---
 airflow/operators/bash.py             |  6 ++++--
 airflow/operators/branch.py           |  6 ++++--
 airflow/operators/datetime.py         |  6 ++++--
 airflow/operators/email.py            |  6 ++++--
 airflow/operators/empty.py            |  6 +++++-
 airflow/operators/generic_transfer.py |  6 ++++--
 airflow/operators/latest_only.py      |  2 +-
 airflow/operators/python.py           |  4 +++-
 airflow/operators/smooth.py           |  6 +++++-
 airflow/operators/subdag.py           | 14 ++++++++++----
 airflow/operators/trigger_dagrun.py   |  2 +-
 airflow/operators/weekday.py          |  6 ++++--
 12 files changed, 49 insertions(+), 21 deletions(-)

diff --git a/airflow/operators/bash.py b/airflow/operators/bash.py
index 9a188c2cc5..08fdaff1cb 100644
--- a/airflow/operators/bash.py
+++ b/airflow/operators/bash.py
@@ -21,14 +21,16 @@ import os
 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 757dc8efdf..066ee52187 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 e6f47912ad..4e2638341a 100644
--- a/airflow/operators/datetime.py
+++ b/airflow/operators/datetime.py
@@ -18,12 +18,14 @@ from __future__ import annotations
 
 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 1b8e529593..98af60afe4 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 18266c366b..fb116ee0f9 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 ba51a8b1c8..a808e23997 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 b1d7f912ee..bca66dc2d4 100644
--- a/airflow/operators/latest_only.py
+++ b/airflow/operators/latest_only.py
@@ -23,10 +23,10 @@ from typing import TYPE_CHECKING, Iterable
 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 ad2deb8ad7..1d6fd2eb3b 100644
--- a/airflow/operators/python.py
+++ b/airflow/operators/python.py
@@ -46,7 +46,7 @@ from airflow.exceptions import (
 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 @@ from airflow.utils.python_virtualenv import 
prepare_virtualenv, write_python_scr
 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 7467649557..927f33b1a2 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 345c36e72b..44e92c3086 100644
--- a/airflow/operators/subdag.py
+++ b/airflow/operators/subdag.py
@@ -23,24 +23,30 @@ The module which provides a way to nest your DAGs and so 
your levels of complexi
 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 5a7be1dcab..b8a61290dc 100644
--- a/airflow/operators/trigger_dagrun.py
+++ b/airflow/operators/trigger_dagrun.py
@@ -34,7 +34,6 @@ from airflow.models.dagrun import DagRun
 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 @@ if TYPE_CHECKING:
     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 ea57ac65bd..c82afddad2 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.

Reply via email to