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

potiuk 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 452a978337 Improve modules import in cncf.kubernetes probvider by move 
some of them into a type-checking block (#33781)
452a978337 is described below

commit 452a97833753175806bcb5077a566897a906a1c9
Author: Hussein Awala <[email protected]>
AuthorDate: Sun Aug 27 19:04:45 2023 +0200

    Improve modules import in cncf.kubernetes probvider by move some of them 
into a type-checking block (#33781)
---
 airflow/providers/cncf/kubernetes/executors/kubernetes_executor.py | 5 +++--
 .../cncf/kubernetes/executors/kubernetes_executor_utils.py         | 3 ++-
 .../cncf/kubernetes/executors/local_kubernetes_executor.py         | 6 +++---
 airflow/providers/cncf/kubernetes/hooks/kubernetes.py              | 4 +++-
 airflow/providers/cncf/kubernetes/k8s_model.py                     | 4 +++-
 airflow/providers/cncf/kubernetes/operators/pod.py                 | 4 ++--
 airflow/providers/cncf/kubernetes/operators/resource.py            | 5 ++++-
 airflow/providers/cncf/kubernetes/pod_generator.py                 | 5 ++++-
 airflow/providers/cncf/kubernetes/pod_launcher_deprecated.py       | 5 ++++-
 airflow/providers/cncf/kubernetes/template_rendering.py            | 6 +++++-
 airflow/providers/cncf/kubernetes/triggers/pod.py                  | 7 ++++---
 airflow/providers/cncf/kubernetes/utils/delete_from.py             | 5 ++++-
 airflow/providers/cncf/kubernetes/utils/pod_manager.py             | 6 +++---
 13 files changed, 44 insertions(+), 21 deletions(-)

diff --git a/airflow/providers/cncf/kubernetes/executors/kubernetes_executor.py 
b/airflow/providers/cncf/kubernetes/executors/kubernetes_executor.py
index 33161097c7..90e4927c34 100644
--- a/airflow/providers/cncf/kubernetes/executors/kubernetes_executor.py
+++ b/airflow/providers/cncf/kubernetes/executors/kubernetes_executor.py
@@ -23,7 +23,6 @@ KubernetesExecutor.
 """
 from __future__ import annotations
 
-import argparse
 import json
 import logging
 import multiprocessing
@@ -35,7 +34,6 @@ from queue import Empty, Queue
 from typing import TYPE_CHECKING, Any, Sequence
 
 from sqlalchemy import select, update
-from sqlalchemy.orm import Session
 
 from airflow.exceptions import AirflowException
 
@@ -83,8 +81,11 @@ from airflow.utils.session import NEW_SESSION, 
provide_session
 from airflow.utils.state import TaskInstanceState
 
 if TYPE_CHECKING:
+    import argparse
+
     from kubernetes import client
     from kubernetes.client import models as k8s
+    from sqlalchemy.orm import Session
 
     from airflow.executors.base_executor import CommandType
     from airflow.models.taskinstance import TaskInstance
diff --git 
a/airflow/providers/cncf/kubernetes/executors/kubernetes_executor_utils.py 
b/airflow/providers/cncf/kubernetes/executors/kubernetes_executor_utils.py
index b19d88eb49..099eceda0b 100644
--- a/airflow/providers/cncf/kubernetes/executors/kubernetes_executor_utils.py
+++ b/airflow/providers/cncf/kubernetes/executors/kubernetes_executor_utils.py
@@ -23,7 +23,6 @@ from queue import Empty, Queue
 from typing import TYPE_CHECKING, Any, Generic, TypeVar
 
 from kubernetes import client, watch
-from kubernetes.client import Configuration, models as k8s
 from kubernetes.client.rest import ApiException
 from urllib3.exceptions import ReadTimeoutError
 
@@ -51,6 +50,8 @@ except ImportError:
     )
 
 if TYPE_CHECKING:
+    from kubernetes.client import Configuration, models as k8s
+
     from airflow.providers.cncf.kubernetes.executors.kubernetes_executor_types 
import (
         KubernetesJobType,
         KubernetesResultsType,
diff --git 
a/airflow/providers/cncf/kubernetes/executors/local_kubernetes_executor.py 
b/airflow/providers/cncf/kubernetes/executors/local_kubernetes_executor.py
index 49977a35ef..fb268a9447 100644
--- a/airflow/providers/cncf/kubernetes/executors/local_kubernetes_executor.py
+++ b/airflow/providers/cncf/kubernetes/executors/local_kubernetes_executor.py
@@ -19,15 +19,15 @@ from __future__ import annotations
 
 from typing import TYPE_CHECKING, Sequence
 
-from airflow.callbacks.base_callback_sink import BaseCallbackSink
-from airflow.callbacks.callback_requests import CallbackRequest
 from airflow.configuration import conf
-from airflow.executors.local_executor import LocalExecutor
 from airflow.providers.cncf.kubernetes.executors.kubernetes_executor import 
KubernetesExecutor
 from airflow.utils.log.logging_mixin import LoggingMixin
 
 if TYPE_CHECKING:
+    from airflow.callbacks.base_callback_sink import BaseCallbackSink
+    from airflow.callbacks.callback_requests import CallbackRequest
     from airflow.executors.base_executor import CommandType, 
EventBufferValueType, QueuedTaskInstanceType
+    from airflow.executors.local_executor import LocalExecutor
     from airflow.models.taskinstance import SimpleTaskInstance, TaskInstance, 
TaskInstanceKey
 
 
diff --git a/airflow/providers/cncf/kubernetes/hooks/kubernetes.py 
b/airflow/providers/cncf/kubernetes/hooks/kubernetes.py
index d4b09f7d11..8e2989da06 100644
--- a/airflow/providers/cncf/kubernetes/hooks/kubernetes.py
+++ b/airflow/providers/cncf/kubernetes/hooks/kubernetes.py
@@ -24,7 +24,6 @@ from typing import TYPE_CHECKING, Any, Generator
 
 from asgiref.sync import sync_to_async
 from kubernetes import client, config, watch
-from kubernetes.client.models import V1Pod
 from kubernetes.config import ConfigException
 from kubernetes_asyncio import client as async_client, config as async_config
 from urllib3.exceptions import HTTPError
@@ -36,6 +35,9 @@ from airflow.providers.cncf.kubernetes.kube_client import 
_disable_verify_ssl, _
 from airflow.providers.cncf.kubernetes.utils.pod_manager import 
PodOperatorHookProtocol
 from airflow.utils import yaml
 
+if TYPE_CHECKING:
+    from kubernetes.client.models import V1Pod
+
 LOADING_KUBE_CONFIG_FILE_RESOURCE = "Loading Kubernetes configuration file 
kube_config from {}..."
 
 
diff --git a/airflow/providers/cncf/kubernetes/k8s_model.py 
b/airflow/providers/cncf/kubernetes/k8s_model.py
index 8280a3265f..cff12d057b 100644
--- a/airflow/providers/cncf/kubernetes/k8s_model.py
+++ b/airflow/providers/cncf/kubernetes/k8s_model.py
@@ -19,8 +19,10 @@ from __future__ import annotations
 
 from abc import ABC, abstractmethod
 from functools import reduce
+from typing import TYPE_CHECKING
 
-from kubernetes.client import models as k8s
+if TYPE_CHECKING:
+    from kubernetes.client import models as k8s
 
 
 class K8SModel(ABC):
diff --git a/airflow/providers/cncf/kubernetes/operators/pod.py 
b/airflow/providers/cncf/kubernetes/operators/pod.py
index c30c5c4e09..f4fe0b3b2a 100644
--- a/airflow/providers/cncf/kubernetes/operators/pod.py
+++ b/airflow/providers/cncf/kubernetes/operators/pod.py
@@ -52,7 +52,6 @@ from 
airflow.providers.cncf.kubernetes.backcompat.backwards_compat_converters im
 )
 from airflow.providers.cncf.kubernetes.hooks.kubernetes import KubernetesHook
 from airflow.providers.cncf.kubernetes.pod_generator import PodGenerator
-from airflow.providers.cncf.kubernetes.secret import Secret
 from airflow.providers.cncf.kubernetes.triggers.pod import KubernetesPodTrigger
 from airflow.providers.cncf.kubernetes.utils import xcom_sidecar  # type: 
ignore[attr-defined]
 from airflow.providers.cncf.kubernetes.utils.pod_manager import (
@@ -65,7 +64,6 @@ from airflow.providers.cncf.kubernetes.utils.pod_manager 
import (
     get_container_termination_message,
 )
 from airflow.settings import pod_mutation_hook
-from airflow.typing_compat import Literal
 from airflow.utils import yaml
 from airflow.utils.helpers import prune_dict, validate_key
 from airflow.utils.timezone import utcnow
@@ -74,6 +72,8 @@ from airflow.version import version as airflow_version
 if TYPE_CHECKING:
     import jinja2
 
+    from airflow.providers.cncf.kubernetes.secret import Secret
+    from airflow.typing_compat import Literal
     from airflow.utils.context import Context
 
 alphanum_lower = string.ascii_lowercase + string.digits
diff --git a/airflow/providers/cncf/kubernetes/operators/resource.py 
b/airflow/providers/cncf/kubernetes/operators/resource.py
index d70a138a41..b8bd65eb26 100644
--- a/airflow/providers/cncf/kubernetes/operators/resource.py
+++ b/airflow/providers/cncf/kubernetes/operators/resource.py
@@ -19,15 +19,18 @@
 from __future__ import annotations
 
 from functools import cached_property
+from typing import TYPE_CHECKING
 
 import yaml
-from kubernetes.client import ApiClient
 from kubernetes.utils import create_from_yaml
 
 from airflow.models import BaseOperator
 from airflow.providers.cncf.kubernetes.hooks.kubernetes import KubernetesHook
 from airflow.providers.cncf.kubernetes.utils.delete_from import 
delete_from_yaml
 
+if TYPE_CHECKING:
+    from kubernetes.client import ApiClient
+
 __all__ = ["KubernetesCreateResourceOperator", 
"KubernetesDeleteResourceOperator"]
 
 
diff --git a/airflow/providers/cncf/kubernetes/pod_generator.py 
b/airflow/providers/cncf/kubernetes/pod_generator.py
index 39f58b9aa7..a96236359b 100644
--- a/airflow/providers/cncf/kubernetes/pod_generator.py
+++ b/airflow/providers/cncf/kubernetes/pod_generator.py
@@ -25,11 +25,11 @@ is supported and no serialization need be written.
 from __future__ import annotations
 
 import copy
-import datetime
 import logging
 import os
 import warnings
 from functools import reduce
+from typing import TYPE_CHECKING
 
 import re2
 from dateutil import parser
@@ -55,6 +55,9 @@ from 
airflow.providers.cncf.kubernetes.utils.k8s_hashlib_wrapper import md5
 from airflow.utils import yaml
 from airflow.version import version as airflow_version
 
+if TYPE_CHECKING:
+    import datetime
+
 log = logging.getLogger(__name__)
 
 MAX_LABEL_LEN = 63
diff --git a/airflow/providers/cncf/kubernetes/pod_launcher_deprecated.py 
b/airflow/providers/cncf/kubernetes/pod_launcher_deprecated.py
index 045c42e9ff..95a629af52 100644
--- a/airflow/providers/cncf/kubernetes/pod_launcher_deprecated.py
+++ b/airflow/providers/cncf/kubernetes/pod_launcher_deprecated.py
@@ -22,11 +22,11 @@ import math
 import time
 import warnings
 from datetime import datetime as dt
+from typing import TYPE_CHECKING
 
 import pendulum
 import tenacity
 from kubernetes import client, watch
-from kubernetes.client.models.v1_pod import V1Pod
 from kubernetes.client.rest import ApiException
 from kubernetes.stream import stream as kubernetes_stream
 from requests.exceptions import HTTPError
@@ -38,6 +38,9 @@ from airflow.settings import pod_mutation_hook
 from airflow.utils.log.logging_mixin import LoggingMixin
 from airflow.utils.state import State
 
+if TYPE_CHECKING:
+    from kubernetes.client.models.v1_pod import V1Pod
+
 warnings.warn(
     """
     Please use :mod: Please use 
`airflow.providers.cncf.kubernetes.utils.pod_manager`
diff --git a/airflow/providers/cncf/kubernetes/template_rendering.py 
b/airflow/providers/cncf/kubernetes/template_rendering.py
index 5461284e46..558229de84 100644
--- a/airflow/providers/cncf/kubernetes/template_rendering.py
+++ b/airflow/providers/cncf/kubernetes/template_rendering.py
@@ -17,11 +17,12 @@
 
 from __future__ import annotations
 
+from typing import TYPE_CHECKING
+
 from jinja2 import TemplateAssertionError, UndefinedError
 from kubernetes.client.api_client import ApiClient
 
 from airflow import AirflowException
-from airflow.models.taskinstance import TaskInstance
 from airflow.providers.cncf.kubernetes.kube_config import KubeConfig
 from airflow.providers.cncf.kubernetes.kubernetes_helper_functions import (
     create_pod_id,
@@ -29,6 +30,9 @@ from 
airflow.providers.cncf.kubernetes.kubernetes_helper_functions import (
 from airflow.providers.cncf.kubernetes.pod_generator import PodGenerator
 from airflow.utils.session import NEW_SESSION, provide_session
 
+if TYPE_CHECKING:
+    from airflow.models.taskinstance import TaskInstance
+
 
 def render_k8s_pod_yaml(task_instance: TaskInstance) -> dict | None:
     """Render k8s pod yaml."""
diff --git a/airflow/providers/cncf/kubernetes/triggers/pod.py 
b/airflow/providers/cncf/kubernetes/triggers/pod.py
index f3f18a660a..f330de1341 100644
--- a/airflow/providers/cncf/kubernetes/triggers/pod.py
+++ b/airflow/providers/cncf/kubernetes/triggers/pod.py
@@ -21,15 +21,16 @@ import datetime
 import warnings
 from asyncio import CancelledError
 from enum import Enum
-from typing import Any, AsyncIterator
-
-from kubernetes_asyncio.client.models import V1Pod
+from typing import TYPE_CHECKING, Any, AsyncIterator
 
 from airflow.exceptions import AirflowProviderDeprecationWarning
 from airflow.providers.cncf.kubernetes.hooks.kubernetes import 
AsyncKubernetesHook
 from airflow.providers.cncf.kubernetes.utils.pod_manager import 
OnFinishAction, PodPhase
 from airflow.triggers.base import BaseTrigger, TriggerEvent
 
+if TYPE_CHECKING:
+    from kubernetes_asyncio.client.models import V1Pod
+
 
 class ContainerState(str, Enum):
     """
diff --git a/airflow/providers/cncf/kubernetes/utils/delete_from.py 
b/airflow/providers/cncf/kubernetes/utils/delete_from.py
index 98d1c4d6d9..2b28169ca6 100644
--- a/airflow/providers/cncf/kubernetes/utils/delete_from.py
+++ b/airflow/providers/cncf/kubernetes/utils/delete_from.py
@@ -20,9 +20,12 @@
 from __future__ import annotations
 
 import re
+from typing import TYPE_CHECKING
 
 from kubernetes import client
-from kubernetes.client import ApiClient
+
+if TYPE_CHECKING:
+    from kubernetes.client import ApiClient
 
 DEFAULT_DELETION_BODY = client.V1DeleteOptions(
     propagation_policy="Background",
diff --git a/airflow/providers/cncf/kubernetes/utils/pod_manager.py 
b/airflow/providers/cncf/kubernetes/utils/pod_manager.py
index 49c6518696..06371f1f1a 100644
--- a/airflow/providers/cncf/kubernetes/utils/pod_manager.py
+++ b/airflow/providers/cncf/kubernetes/utils/pod_manager.py
@@ -33,15 +33,12 @@ from typing import TYPE_CHECKING, Generator, cast
 import pendulum
 import tenacity
 from kubernetes import client, watch
-from kubernetes.client.models.v1_container_status import V1ContainerStatus
-from kubernetes.client.models.v1_pod import V1Pod
 from kubernetes.client.rest import ApiException
 from kubernetes.stream import stream as kubernetes_stream
 from pendulum import DateTime
 from pendulum.parsing.exceptions import ParserError
 from tenacity import before_log
 from urllib3.exceptions import HTTPError as BaseHTTPError
-from urllib3.response import HTTPResponse
 
 from airflow.exceptions import AirflowException, 
AirflowProviderDeprecationWarning
 from airflow.providers.cncf.kubernetes.pod_generator import PodDefaults
@@ -51,6 +48,9 @@ from airflow.utils.timezone import utcnow
 
 if TYPE_CHECKING:
     from kubernetes.client.models.core_v1_event_list import CoreV1EventList
+    from kubernetes.client.models.v1_container_status import V1ContainerStatus
+    from kubernetes.client.models.v1_pod import V1Pod
+    from urllib3.response import HTTPResponse
 
 
 class PodLaunchFailedException(AirflowException):

Reply via email to