This is an automated email from the ASF dual-hosted git repository.
kaxil 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 5f82cefd266 Add compat layer for import errors caused by
AirflowSecretsBackendAccessDenied (#67560)
5f82cefd266 is described below
commit 5f82cefd266bea037e9d483a15b9d8a5bd67d7ae
Author: Amogh Desai <[email protected]>
AuthorDate: Wed May 27 02:17:13 2026 +0530
Add compat layer for import errors caused by
AirflowSecretsBackendAccessDenied (#67560)
---
airflow-core/src/airflow/models/connection.py | 15 ++++++++++++++-
airflow-core/src/airflow/models/variable.py | 15 ++++++++++++++-
2 files changed, 28 insertions(+), 2 deletions(-)
diff --git a/airflow-core/src/airflow/models/connection.py
b/airflow-core/src/airflow/models/connection.py
index 55a61de022e..819ec8d8281 100644
--- a/airflow-core/src/airflow/models/connection.py
+++ b/airflow-core/src/airflow/models/connection.py
@@ -35,7 +35,20 @@ from airflow._shared.secrets_masker import mask_secret
from airflow.exceptions import AirflowException, AirflowNotFoundException
from airflow.models.base import ID_LEN, Base
from airflow.models.crypto import get_fernet
-from airflow.sdk.exceptions import AirflowSecretsBackendAccessDenied
+
+# AirflowSecretsBackendAccessDenied was added to task-sdk in 1.2.2. When
+# airflow-core is installed alongside an older published task-sdk (e.g. 1.2.1
or earlier),
+# the import fails at module load time. The fallback class is never raised by
+# old task-sdk, so the except clause below simply never fires — behaviour is
+# identical to pre-1.2.2 task-sdk.
+try:
+ from airflow.sdk.exceptions import AirflowSecretsBackendAccessDenied
+except ImportError:
+
+ class AirflowSecretsBackendAccessDenied(PermissionError): # type:
ignore[no-redef]
+ """Compat stub — never raised by task-sdk <1.2.2."""
+
+
from airflow.utils.helpers import prune_dict
from airflow.utils.log.logging_mixin import LoggingMixin
from airflow.utils.session import NEW_SESSION, provide_session
diff --git a/airflow-core/src/airflow/models/variable.py
b/airflow-core/src/airflow/models/variable.py
index 0d543f334be..667c3303567 100644
--- a/airflow-core/src/airflow/models/variable.py
+++ b/airflow-core/src/airflow/models/variable.py
@@ -32,7 +32,20 @@ from airflow._shared.secrets_masker import mask_secret
from airflow.configuration import conf, ensure_secrets_loaded
from airflow.models.base import ID_LEN, Base
from airflow.models.crypto import get_fernet
-from airflow.sdk.exceptions import AirflowSecretsBackendAccessDenied
+
+# AirflowSecretsBackendAccessDenied was added to task-sdk in 1.2.2. When
+# airflow-core is installed alongside an older published task-sdk (e.g. 1.2.1
or earlier),
+# the import fails at module load time. The fallback class is never raised by
+# old task-sdk, so the except clause below simply never fires — behaviour is
+# identical to pre-1.2.2 task-sdk.
+try:
+ from airflow.sdk.exceptions import AirflowSecretsBackendAccessDenied
+except ImportError:
+
+ class AirflowSecretsBackendAccessDenied(PermissionError): # type:
ignore[no-redef]
+ """Compat stub — never raised by task-sdk <1.2.2."""
+
+
from airflow.secrets.metastore import MetastoreBackend
from airflow.utils.log.logging_mixin import LoggingMixin
from airflow.utils.session import NEW_SESSION, create_session, provide_session