Taragolis commented on code in PR #27823:
URL: https://github.com/apache/airflow/pull/27823#discussion_r1029094848


##########
airflow/providers/amazon/aws/hooks/base_aws.py:
##########
@@ -42,11 +46,13 @@
 from dateutil.tz import tzlocal
 from slugify import slugify
 
+from airflow import __version__ as airflow_version

Review Comment:
   @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]

Reply via email to