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