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.