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 aa54a22185 Improve importing the modules in Airflow macros, metrics, 
notifications and secrets packages (#33811)
aa54a22185 is described below

commit aa54a22185fc6bf0690d432550bf7720d00b8db3
Author: Hussein Awala <[email protected]>
AuthorDate: Mon Aug 28 07:22:51 2023 +0200

    Improve importing the modules in Airflow macros, metrics, notifications and 
secrets packages (#33811)
---
 airflow/macros/__init__.py            |  6 ++++--
 airflow/metrics/base_stats_logger.py  |  7 +++++--
 airflow/metrics/datadog_logger.py     |  8 ++++++--
 airflow/metrics/otel_logger.py        | 13 +++++++++----
 airflow/metrics/statsd_logger.py      |  8 ++++++--
 airflow/notifications/basenotifier.py |  7 ++++---
 airflow/secrets/metastore.py          |  3 ++-
 7 files changed, 36 insertions(+), 16 deletions(-)

diff --git a/airflow/macros/__init__.py b/airflow/macros/__init__.py
index 240b847c34..95e84d559a 100644
--- a/airflow/macros/__init__.py
+++ b/airflow/macros/__init__.py
@@ -22,14 +22,16 @@ import time  # noqa
 import uuid  # noqa
 from datetime import datetime, timedelta
 from random import random  # noqa
-from typing import Any
+from typing import TYPE_CHECKING, Any
 
 import dateutil  # noqa
-from pendulum import DateTime
 
 import airflow.utils.yaml as yaml  # noqa
 from airflow.utils.deprecation_tools import add_deprecated_classes
 
+if TYPE_CHECKING:
+    from pendulum import DateTime
+
 __deprecated_classes = {
     "hive": {
         "closest_ds_partition": 
"airflow.providers.apache.hive.macros.hive.closest_ds_partition",
diff --git a/airflow/metrics/base_stats_logger.py 
b/airflow/metrics/base_stats_logger.py
index aee34b95b1..b32a9b902e 100644
--- a/airflow/metrics/base_stats_logger.py
+++ b/airflow/metrics/base_stats_logger.py
@@ -17,11 +17,14 @@
 
 from __future__ import annotations
 
-from typing import Any
+from typing import TYPE_CHECKING, Any
 
-from airflow.metrics.protocols import DeltaType, Timer, TimerProtocol
+from airflow.metrics.protocols import Timer
 from airflow.typing_compat import Protocol
 
+if TYPE_CHECKING:
+    from airflow.metrics.protocols import DeltaType, TimerProtocol
+
 
 class StatsLogger(Protocol):
     """This class is only used for TypeChecking (for IDEs, mypy, etc)."""
diff --git a/airflow/metrics/datadog_logger.py 
b/airflow/metrics/datadog_logger.py
index 3a07b149ae..c2afe2bb80 100644
--- a/airflow/metrics/datadog_logger.py
+++ b/airflow/metrics/datadog_logger.py
@@ -22,17 +22,21 @@ import logging
 from typing import TYPE_CHECKING
 
 from airflow.configuration import conf
-from airflow.metrics.protocols import DeltaType, Timer, TimerProtocol
+from airflow.metrics.protocols import Timer
 from airflow.metrics.validators import (
     AllowListValidator,
     BlockListValidator,
-    ListValidator,
     validate_stat,
 )
 
 if TYPE_CHECKING:
     from datadog import DogStatsd
 
+    from airflow.metrics.protocols import DeltaType, TimerProtocol
+    from airflow.metrics.validators import (
+        ListValidator,
+    )
+
 log = logging.getLogger(__name__)
 
 
diff --git a/airflow/metrics/otel_logger.py b/airflow/metrics/otel_logger.py
index 8092fbe76e..2668f1ec97 100644
--- a/airflow/metrics/otel_logger.py
+++ b/airflow/metrics/otel_logger.py
@@ -21,24 +21,29 @@ import logging
 import random
 import warnings
 from functools import partial
-from typing import Callable, Iterable, Union
+from typing import TYPE_CHECKING, Callable, Iterable, Union
 
 from opentelemetry import metrics
 from opentelemetry.exporter.otlp.proto.http.metric_exporter import 
OTLPMetricExporter
-from opentelemetry.metrics import Instrument, Observation
+from opentelemetry.metrics import Observation
 from opentelemetry.sdk.metrics import MeterProvider
 from opentelemetry.sdk.metrics._internal.export import ConsoleMetricExporter, 
PeriodicExportingMetricReader
 from opentelemetry.sdk.resources import SERVICE_NAME, Resource
-from opentelemetry.util.types import Attributes
 
 from airflow.configuration import conf
-from airflow.metrics.protocols import DeltaType, Timer, TimerProtocol
+from airflow.metrics.protocols import Timer
 from airflow.metrics.validators import (
     OTEL_NAME_MAX_LENGTH,
     AllowListValidator,
     stat_name_otel_handler,
 )
 
+if TYPE_CHECKING:
+    from opentelemetry.metrics import Instrument
+    from opentelemetry.util.types import Attributes
+
+    from airflow.metrics.protocols import DeltaType, TimerProtocol
+
 log = logging.getLogger(__name__)
 
 GaugeValues = Union[int, float]
diff --git a/airflow/metrics/statsd_logger.py b/airflow/metrics/statsd_logger.py
index 2e69d6e605..5e399818ab 100644
--- a/airflow/metrics/statsd_logger.py
+++ b/airflow/metrics/statsd_logger.py
@@ -23,17 +23,21 @@ from typing import TYPE_CHECKING, Callable, TypeVar, cast
 
 from airflow.configuration import conf
 from airflow.exceptions import AirflowConfigException
-from airflow.metrics.protocols import DeltaType, Timer, TimerProtocol
+from airflow.metrics.protocols import Timer
 from airflow.metrics.validators import (
     AllowListValidator,
     BlockListValidator,
-    ListValidator,
     validate_stat,
 )
 
 if TYPE_CHECKING:
     from statsd import StatsClient
 
+    from airflow.metrics.protocols import DeltaType, TimerProtocol
+    from airflow.metrics.validators import (
+        ListValidator,
+    )
+
 T = TypeVar("T", bound=Callable)
 
 log = logging.getLogger(__name__)
diff --git a/airflow/notifications/basenotifier.py 
b/airflow/notifications/basenotifier.py
index 81552404e1..6bbd5ecd03 100644
--- a/airflow/notifications/basenotifier.py
+++ b/airflow/notifications/basenotifier.py
@@ -20,13 +20,14 @@ from __future__ import annotations
 from abc import abstractmethod
 from typing import TYPE_CHECKING, Sequence
 
-import jinja2
-
 from airflow.template.templater import Templater
-from airflow.utils.context import Context, context_merge
+from airflow.utils.context import context_merge
 
 if TYPE_CHECKING:
+    import jinja2
+
     from airflow import DAG
+    from airflow.utils.context import Context
 
 
 class BaseNotifier(Templater):
diff --git a/airflow/secrets/metastore.py b/airflow/secrets/metastore.py
index 160c063dff..ec54d432d0 100644
--- a/airflow/secrets/metastore.py
+++ b/airflow/secrets/metastore.py
@@ -22,13 +22,14 @@ import warnings
 from typing import TYPE_CHECKING
 
 from sqlalchemy import select
-from sqlalchemy.orm import Session
 
 from airflow.exceptions import RemovedInAirflow3Warning
 from airflow.secrets import BaseSecretsBackend
 from airflow.utils.session import NEW_SESSION, provide_session
 
 if TYPE_CHECKING:
+    from sqlalchemy.orm import Session
+
     from airflow.models.connection import Connection
 
 

Reply via email to