Taragolis commented on PR #27823:
URL: https://github.com/apache/airflow/pull/27823#issuecomment-1323376936
@ferruzzi find also new circular imports, same as previously fixed in #26784
It is only happen if the end user stored secrets configuration in secrets
backend.
And unfortunetly it can't be unit tested (in general way) because during
unit tests most of the imports already imported
```python
❯ export
AIRFLOW__SECRETS__BACKEND=airflow.providers.amazon.aws.secrets.secrets_manager.SecretsManagerBackend
❯ export AIRFLOW__SECRETS__BACKEND_KWARGS='{"config_prefix":
"/airflow/config", "region_name": "eu-west-1"}'
❯ export AIRFLOW__DATABASE__SQL_ALCHEMY_CONN_SECRET=boom
❯ airflow version
Traceback (most recent call last):
File
"/Users/taragolis/Projects/common/airflow/airflow/providers/amazon/aws/secrets/secrets_manager.py",
line 449, in _get_secret
response = self.client.get_secret_value(
File "/Users/taragolis/.pyenv/versions/3.9.10/lib/python3.9/functools.py",
line 993, in __get__
val = self.func(instance)
File
"/Users/taragolis/Projects/common/airflow/airflow/providers/amazon/aws/secrets/secrets_manager.py",
line 170, in client
from airflow.providers.amazon.aws.hooks.base_aws import SessionFactory
File
"/Users/taragolis/Projects/common/airflow/airflow/providers/amazon/aws/hooks/base_aws.py",
line 49, in <module>
from airflow import __version__ as airflow_version
ImportError: cannot import name '__version__' from partially initialized
module 'airflow' (most likely due to a circular import)
(/Users/taragolis/Projects/common/airflow/airflow/__init__.py)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/Users/taragolis/Projects/common/airflow/airflow/configuration.py",
line 123, in _get_config_value_from_secret_backend
return secrets_client.get_config(config_key)
File
"/Users/taragolis/Projects/common/airflow/airflow/providers/amazon/aws/secrets/secrets_manager.py",
line 434, in get_config
return self._get_secret(self.config_prefix, key)
File
"/Users/taragolis/Projects/common/airflow/airflow/providers/amazon/aws/secrets/secrets_manager.py",
line 453, in _get_secret
except self.client.exceptions.ResourceNotFoundException:
File "/Users/taragolis/.pyenv/versions/3.9.10/lib/python3.9/functools.py",
line 993, in __get__
val = self.func(instance)
File
"/Users/taragolis/Projects/common/airflow/airflow/providers/amazon/aws/secrets/secrets_manager.py",
line 170, in client
from airflow.providers.amazon.aws.hooks.base_aws import SessionFactory
File
"/Users/taragolis/Projects/common/airflow/airflow/providers/amazon/aws/hooks/base_aws.py",
line 49, in <module>
from airflow import __version__ as airflow_version
ImportError: cannot import name '__version__' from partially initialized
module 'airflow' (most likely due to a circular import)
(/Users/taragolis/Projects/common/airflow/airflow/__init__.py)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File
"/Users/taragolis/.pyenv/versions/3.9.10/envs/airflow-dev-env-39/bin/airflow",
line 33, in <module>
sys.exit(load_entry_point('apache-airflow', 'console_scripts',
'airflow')())
File
"/Users/taragolis/.pyenv/versions/3.9.10/envs/airflow-dev-env-39/bin/airflow",
line 25, in importlib_load_entry_point
return next(matches).load()
File
"/Users/taragolis/.pyenv/versions/3.9.10/lib/python3.9/importlib/metadata.py",
line 77, in load
module = import_module(match.group('module'))
File
"/Users/taragolis/.pyenv/versions/3.9.10/lib/python3.9/importlib/__init__.py",
line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
File "<frozen importlib._bootstrap>", line 972, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 228, in
_call_with_frames_removed
File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 680, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 850, in exec_module
File "<frozen importlib._bootstrap>", line 228, in
_call_with_frames_removed
File "/Users/taragolis/Projects/common/airflow/airflow/__init__.py", line
34, in <module>
from airflow import settings
File "/Users/taragolis/Projects/common/airflow/airflow/settings.py", line
37, in <module>
from airflow.configuration import AIRFLOW_HOME, WEBSERVER_CONFIG, conf
# NOQA F401
File "/Users/taragolis/Projects/common/airflow/airflow/configuration.py",
line 1685, in <module>
conf.validate()
File "/Users/taragolis/Projects/common/airflow/airflow/configuration.py",
line 349, in validate
self._validate_config_dependencies()
File "/Users/taragolis/Projects/common/airflow/airflow/configuration.py",
line 449, in _validate_config_dependencies
is_sqlite = "sqlite" in self.get("database", "sql_alchemy_conn")
File "/Users/taragolis/Projects/common/airflow/airflow/configuration.py",
line 578, in get
option = self._get_environment_variables(deprecated_key,
deprecated_section, key, section)
File "/Users/taragolis/Projects/common/airflow/airflow/configuration.py",
line 657, in _get_environment_variables
option = self._get_env_var_option(section, key)
File "/Users/taragolis/Projects/common/airflow/airflow/configuration.py",
line 502, in _get_env_var_option
return
_get_config_value_from_secret_backend(os.environ[env_var_secret_path])
File "/Users/taragolis/Projects/common/airflow/airflow/configuration.py",
line 125, in _get_config_value_from_secret_backend
raise AirflowConfigException(
airflow.exceptions.AirflowConfigException: Cannot retrieve config from
alternative secrets backend. Make sure it is configured properly and that the
Backend is accessible.
cannot import name '__version__' from partially initialized module 'airflow'
(most likely due to a circular import)
(/Users/taragolis/Projects/common/airflow/airflow/__init__.py)
```
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]