Dev-iL commented on code in PR #37545:
URL: https://github.com/apache/airflow/pull/37545#discussion_r1496344380
##########
airflow/utils/orm_event_handlers.py:
##########
@@ -23,18 +23,25 @@
import traceback
import sqlalchemy.orm.mapper
-from sqlalchemy import event, exc
+from sqlalchemy import __version__ as sqlalchemy_version, event, exc
from airflow.configuration import conf
log = logging.getLogger(__name__)
+SQL_ALCHEMY_V1 = sqlalchemy_version.startswith("1")
+
def setup_event_handlers(engine):
"""Setups event handlers."""
from airflow.models import import_all_models
- event.listen(sqlalchemy.orm.mapper, "before_configured",
import_all_models, once=True)
+ event.listen(
+ sqlalchemy.orm.mapper if SQL_ALCHEMY_V1 else sqlalchemy.orm.Mapper,
Review Comment:
I suggest having a utility that's not specific to pydantic, pendulum
sqlalchemy etc., something like:
```python
# import packaging, metadata, version, ...
def _get_lib_major_version(lib_name: str) -> int:
ver: Version = parse_version(version(lib_name))
return ver.major
def is_installed_lib_major_version(libname: str, version: int) -> bool:
return _get_lib_major_version(lib_name) == version
# Then, in a TBD location:
def is_sqlalchemy_v1() -> bool:
return is_installed_lib_major_version("sqlalchemy", 1)
```
--
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]