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 f4c522f120 Improve importing the modules in Airflow auth, api_internal 
and callbacks packages (#33807)
f4c522f120 is described below

commit f4c522f120626662c797c37f51b51d048a8ac047
Author: Hussein Awala <[email protected]>
AuthorDate: Sun Aug 27 23:27:24 2023 +0200

    Improve importing the modules in Airflow auth, api_internal and callbacks 
packages (#33807)
---
 airflow/api_internal/endpoints/rpc_api_endpoint.py     | 6 ++++--
 airflow/auth/managers/fab/cli_commands/role_command.py | 5 ++++-
 airflow/auth/managers/fab/cli_commands/utils.py        | 7 +++++--
 airflow/auth/managers/fab/fab_auth_manager.py          | 4 +++-
 airflow/auth/managers/fab/security_manager/override.py | 6 +++++-
 airflow/callbacks/base_callback_sink.py                | 5 ++++-
 airflow/callbacks/database_callback_sink.py            | 8 ++++++--
 airflow/callbacks/pipe_callback_sink.py                | 9 ++++++---
 8 files changed, 37 insertions(+), 13 deletions(-)

diff --git a/airflow/api_internal/endpoints/rpc_api_endpoint.py 
b/airflow/api_internal/endpoints/rpc_api_endpoint.py
index 700408bf35..22a4f7cb64 100644
--- a/airflow/api_internal/endpoints/rpc_api_endpoint.py
+++ b/airflow/api_internal/endpoints/rpc_api_endpoint.py
@@ -20,13 +20,15 @@ from __future__ import annotations
 import functools
 import json
 import logging
-from typing import Any, Callable
+from typing import TYPE_CHECKING, Any, Callable
 
 from flask import Response
 
-from airflow.api_connexion.types import APIResponse
 from airflow.serialization.serialized_objects import BaseSerialization
 
+if TYPE_CHECKING:
+    from airflow.api_connexion.types import APIResponse
+
 log = logging.getLogger(__name__)
 
 
diff --git a/airflow/auth/managers/fab/cli_commands/role_command.py 
b/airflow/auth/managers/fab/cli_commands/role_command.py
index 34ea8fb9d3..ce69c7f201 100644
--- a/airflow/auth/managers/fab/cli_commands/role_command.py
+++ b/airflow/auth/managers/fab/cli_commands/role_command.py
@@ -22,15 +22,18 @@ import collections
 import itertools
 import json
 import os
+from typing import TYPE_CHECKING
 
 from airflow.auth.managers.fab.cli_commands.utils import 
get_application_builder
-from airflow.auth.managers.fab.models import Action, Permission, Resource, Role
 from airflow.cli.simple_table import AirflowConsole
 from airflow.utils import cli as cli_utils
 from airflow.utils.cli import suppress_logs_and_warning
 from airflow.utils.providers_configuration_loader import 
providers_configuration_loaded
 from airflow.www.security import EXISTING_ROLES
 
+if TYPE_CHECKING:
+    from airflow.auth.managers.fab.models import Action, Permission, Resource, 
Role
+
 
 @suppress_logs_and_warning
 @providers_configuration_loaded
diff --git a/airflow/auth/managers/fab/cli_commands/utils.py 
b/airflow/auth/managers/fab/cli_commands/utils.py
index dd3a40ffd8..8361aab51b 100644
--- a/airflow/auth/managers/fab/cli_commands/utils.py
+++ b/airflow/auth/managers/fab/cli_commands/utils.py
@@ -20,14 +20,17 @@ from __future__ import annotations
 import os
 from contextlib import contextmanager
 from functools import lru_cache
-from typing import Generator
+from typing import TYPE_CHECKING, Generator
 
 from flask import Flask
 
 import airflow
-from airflow.www.extensions.init_appbuilder import AirflowAppBuilder, 
init_appbuilder
+from airflow.www.extensions.init_appbuilder import init_appbuilder
 from airflow.www.extensions.init_views import init_plugins
 
+if TYPE_CHECKING:
+    from airflow.www.extensions.init_appbuilder import AirflowAppBuilder
+
 
 @lru_cache(maxsize=None)
 def _return_appbuilder(app: Flask) -> AirflowAppBuilder:
diff --git a/airflow/auth/managers/fab/fab_auth_manager.py 
b/airflow/auth/managers/fab/fab_auth_manager.py
index def0590b1f..354a073be2 100644
--- a/airflow/auth/managers/fab/fab_auth_manager.py
+++ b/airflow/auth/managers/fab/fab_auth_manager.py
@@ -27,12 +27,14 @@ from airflow.auth.managers.fab.cli_commands.definition 
import (
     USERS_COMMANDS,
 )
 from airflow.cli.cli_config import (
-    CLICommand,
     GroupCommand,
 )
 
 if TYPE_CHECKING:
     from airflow.auth.managers.fab.models import User
+    from airflow.cli.cli_config import (
+        CLICommand,
+    )
 
 
 class FabAuthManager(BaseAuthManager):
diff --git a/airflow/auth/managers/fab/security_manager/override.py 
b/airflow/auth/managers/fab/security_manager/override.py
index bdcc44d8c1..011f43e86b 100644
--- a/airflow/auth/managers/fab/security_manager/override.py
+++ b/airflow/auth/managers/fab/security_manager/override.py
@@ -20,6 +20,7 @@ from __future__ import annotations
 import logging
 import warnings
 from functools import cached_property
+from typing import TYPE_CHECKING
 
 from flask import flash, g
 from flask_appbuilder import const
@@ -32,12 +33,15 @@ from itsdangerous import want_bytes
 from markupsafe import Markup
 from werkzeug.security import generate_password_hash
 
-from airflow.auth.managers.fab.models import Action, Permission, RegisterUser, 
Resource, Role, User
+from airflow.auth.managers.fab.models import Action, Permission, RegisterUser, 
Resource, Role
 from airflow.auth.managers.fab.models.anonymous_user import AnonymousUser
 from airflow.auth.managers.fab.security_manager.modules.db import 
FabAirflowSecurityManagerOverrideDb
 from airflow.auth.managers.fab.security_manager.modules.oauth import 
FabAirflowSecurityManagerOverrideOauth
 from airflow.www.session import AirflowDatabaseSessionInterface
 
+if TYPE_CHECKING:
+    from airflow.auth.managers.fab.models import User
+
 log = logging.getLogger(__name__)
 
 # This is the limit of DB user sessions that we consider as "healthy". If you 
have more sessions that this
diff --git a/airflow/callbacks/base_callback_sink.py 
b/airflow/callbacks/base_callback_sink.py
index 2f02ce054c..f6a7aaf2e9 100644
--- a/airflow/callbacks/base_callback_sink.py
+++ b/airflow/callbacks/base_callback_sink.py
@@ -17,7 +17,10 @@
 # under the License.
 from __future__ import annotations
 
-from airflow.callbacks.callback_requests import CallbackRequest
+from typing import TYPE_CHECKING
+
+if TYPE_CHECKING:
+    from airflow.callbacks.callback_requests import CallbackRequest
 
 
 class BaseCallbackSink:
diff --git a/airflow/callbacks/database_callback_sink.py 
b/airflow/callbacks/database_callback_sink.py
index 0be8127f6f..390f762002 100644
--- a/airflow/callbacks/database_callback_sink.py
+++ b/airflow/callbacks/database_callback_sink.py
@@ -17,13 +17,17 @@
 # under the License.
 from __future__ import annotations
 
-from sqlalchemy.orm import Session
+from typing import TYPE_CHECKING
 
 from airflow.callbacks.base_callback_sink import BaseCallbackSink
-from airflow.callbacks.callback_requests import CallbackRequest
 from airflow.models.db_callback_request import DbCallbackRequest
 from airflow.utils.session import NEW_SESSION, provide_session
 
+if TYPE_CHECKING:
+    from sqlalchemy.orm import Session
+
+    from airflow.callbacks.callback_requests import CallbackRequest
+
 
 class DatabaseCallbackSink(BaseCallbackSink):
     """Sends callbacks to database."""
diff --git a/airflow/callbacks/pipe_callback_sink.py 
b/airflow/callbacks/pipe_callback_sink.py
index 0c9433b057..54acdd1552 100644
--- a/airflow/callbacks/pipe_callback_sink.py
+++ b/airflow/callbacks/pipe_callback_sink.py
@@ -17,11 +17,14 @@
 # under the License.
 from __future__ import annotations
 
-from multiprocessing.connection import Connection as MultiprocessingConnection
-from typing import Callable
+from typing import TYPE_CHECKING, Callable
 
 from airflow.callbacks.base_callback_sink import BaseCallbackSink
-from airflow.callbacks.callback_requests import CallbackRequest
+
+if TYPE_CHECKING:
+    from multiprocessing.connection import Connection as 
MultiprocessingConnection
+
+    from airflow.callbacks.callback_requests import CallbackRequest
 
 
 class PipeCallbackSink(BaseCallbackSink):

Reply via email to