diff --git a/src/integrations/prefect-kubernetes/prefect_kubernetes/events.py b/src/integrations/prefect-kubernetes/prefect_kubernetes/events.py index bacfb0f61c5a..3f22ed709c39 100644 --- a/src/integrations/prefect-kubernetes/prefect_kubernetes/events.py +++ b/src/integrations/prefect-kubernetes/prefect_kubernetes/events.py @@ -3,6 +3,7 @@ from typing import TYPE_CHECKING, Dict, List, Optional from prefect.events import Event, RelatedResource, emit_event +from prefect.utilities.importtools import lazy_import if TYPE_CHECKING: import kubernetes @@ -10,7 +11,7 @@ import kubernetes.watch from kubernetes.client import ApiClient, V1Pod else: - import kubernetes + kubernetes = lazy_import("kubernetes") EVICTED_REASONS = { "OOMKilled", diff --git a/src/integrations/prefect-kubernetes/prefect_kubernetes/worker.py b/src/integrations/prefect-kubernetes/prefect_kubernetes/worker.py index 309c20c6d4d3..3f5ff97ebb69 100644 --- a/src/integrations/prefect-kubernetes/prefect_kubernetes/worker.py +++ b/src/integrations/prefect-kubernetes/prefect_kubernetes/worker.py @@ -128,6 +128,7 @@ from prefect.server.schemas.responses import DeploymentResponse from prefect.utilities.asyncutils import run_sync_in_worker_thread from prefect.utilities.dockerutils import get_prefect_image_name +from prefect.utilities.importtools import lazy_import from prefect.utilities.pydantic import JsonPatch from prefect.utilities.templating import find_placeholders from prefect.workers.base import ( @@ -163,7 +164,7 @@ from prefect.client.schemas import FlowRun else: - import kubernetes + kubernetes = lazy_import("kubernetes") MAX_ATTEMPTS = 3 RETRY_MIN_DELAY_SECONDS = 1 diff --git a/src/integrations/prefect-kubernetes/tests/test_events_replicator.py b/src/integrations/prefect-kubernetes/tests/test_events_replicator.py index 933464b44bf9..078324a936e3 100644 --- a/src/integrations/prefect-kubernetes/tests/test_events_replicator.py +++ b/src/integrations/prefect-kubernetes/tests/test_events_replicator.py @@ -3,12 +3,14 @@ import time from unittest.mock import MagicMock, call, patch -import kubernetes import pytest from kubernetes.client import V1Pod from prefect_kubernetes.events import EVICTED_REASONS, KubernetesEventsReplicator from prefect.events import RelatedResource +from prefect.utilities.importtools import lazy_import + +kubernetes = lazy_import("kubernetes") @pytest.fixture diff --git a/src/prefect/blocks/kubernetes.py b/src/prefect/blocks/kubernetes.py index 0bf6b51694ee..df3d597d86cb 100644 --- a/src/prefect/blocks/kubernetes.py +++ b/src/prefect/blocks/kubernetes.py @@ -16,12 +16,13 @@ from prefect.blocks.core import Block from prefect.utilities.collections import listrepr +from prefect.utilities.importtools import lazy_import if TYPE_CHECKING: import kubernetes from kubernetes.client.api_client import ApiClient else: - import kubernetes + kubernetes = lazy_import("kubernetes") @deprecated_class( diff --git a/src/prefect/infrastructure/kubernetes.py b/src/prefect/infrastructure/kubernetes.py index d525c6f31b5f..2962dc214f97 100644 --- a/src/prefect/infrastructure/kubernetes.py +++ b/src/prefect/infrastructure/kubernetes.py @@ -42,6 +42,7 @@ from prefect.infrastructure.base import Infrastructure, InfrastructureResult from prefect.utilities.asyncutils import run_sync_in_worker_thread, sync_compatible from prefect.utilities.hashing import stable_hash +from prefect.utilities.importtools import lazy_import from prefect.utilities.pydantic import JsonPatch from prefect.utilities.slugify import slugify @@ -52,7 +53,7 @@ import kubernetes.config from kubernetes.client import BatchV1Api, CoreV1Api, V1Job, V1Pod else: - import kubernetes + kubernetes = lazy_import("kubernetes") class KubernetesImagePullPolicy(enum.Enum):