From 2388bd72ba4b0012b0540a43aa9f0001840ff285 Mon Sep 17 00:00:00 2001 From: Daniel Standish <15932138+dstandish@users.noreply.github.com> Date: Fri, 23 Sep 2022 13:30:38 -0700 Subject: [PATCH] Resolve deprecation warning re Table.exists() (#26616) The deprecation warning tells us we need to change Table.exists() to Inspector.has_table(). It turns out we're already using the right method, but we weren't passing it the right object. It wants a table name but we were giving it a table. --- airflow/compat/sqlalchemy.py | 36 ------------------- .../versions/0001_1_5_0_current_schema.py | 3 +- .../0002_1_5_0_create_is_encrypted.py | 3 +- ...2_add_max_tries_column_to_task_instance.py | 3 +- ...0_add_kubernetes_resource_checkpointing.py | 3 +- .../versions/0057_1_10_13_add_fab_tables.py | 3 +- ...13_increase_length_of_fab_ab_view_menu_.py | 2 +- .../0059_2_0_0_drop_user_and_chart.py | 3 +- .../0060_2_0_0_remove_id_column_from_xcom.py | 4 +-- .../0062_2_0_0_add_dagrun_run_type.py | 3 +- ...65_2_0_0_update_schema_for_smart_sensor.py | 3 +- ...068_2_0_0_drop_kuberesourceversion_and_.py | 3 +- airflow/utils/db.py | 3 +- airflow/www/fab_security/sqla/manager.py | 5 ++- docs/apache-airflow/img/airflow_erd.sha256 | 2 +- 15 files changed, 15 insertions(+), 64 deletions(-) delete mode 100644 airflow/compat/sqlalchemy.py diff --git a/airflow/compat/sqlalchemy.py b/airflow/compat/sqlalchemy.py deleted file mode 100644 index b222af463fba9..0000000000000 --- a/airflow/compat/sqlalchemy.py +++ /dev/null @@ -1,36 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -from __future__ import annotations - -from sqlalchemy import Table -from sqlalchemy.engine import Connection - -try: - from sqlalchemy import inspect -except AttributeError: - from sqlalchemy.engine.reflection import Inspector - - inspect = Inspector.from_engine - -__all__ = ["has_table", "inspect"] - - -def has_table(conn: Connection, table: Table): - try: - return inspect(conn).has_table(table) - except AttributeError: - return table.exists(conn) diff --git a/airflow/migrations/versions/0001_1_5_0_current_schema.py b/airflow/migrations/versions/0001_1_5_0_current_schema.py index 73d6b8ed1d317..d294552968fa5 100644 --- a/airflow/migrations/versions/0001_1_5_0_current_schema.py +++ b/airflow/migrations/versions/0001_1_5_0_current_schema.py @@ -26,9 +26,8 @@ import sqlalchemy as sa from alembic import op -from sqlalchemy import func +from sqlalchemy import func, inspect -from airflow.compat.sqlalchemy import inspect from airflow.migrations.db_types import StringID # revision identifiers, used by Alembic. diff --git a/airflow/migrations/versions/0002_1_5_0_create_is_encrypted.py b/airflow/migrations/versions/0002_1_5_0_create_is_encrypted.py index 53d39039ab8d9..4d74f870b58b8 100644 --- a/airflow/migrations/versions/0002_1_5_0_create_is_encrypted.py +++ b/airflow/migrations/versions/0002_1_5_0_create_is_encrypted.py @@ -26,8 +26,7 @@ import sqlalchemy as sa from alembic import op - -from airflow.compat.sqlalchemy import inspect +from sqlalchemy import inspect # revision identifiers, used by Alembic. revision = '1507a7289a2f' diff --git a/airflow/migrations/versions/0023_1_8_2_add_max_tries_column_to_task_instance.py b/airflow/migrations/versions/0023_1_8_2_add_max_tries_column_to_task_instance.py index 3e9cee0a3bbd8..8e97fd78e97e7 100644 --- a/airflow/migrations/versions/0023_1_8_2_add_max_tries_column_to_task_instance.py +++ b/airflow/migrations/versions/0023_1_8_2_add_max_tries_column_to_task_instance.py @@ -25,11 +25,10 @@ import sqlalchemy as sa from alembic import op -from sqlalchemy import Column, Integer, String +from sqlalchemy import Column, Integer, String, inspect from sqlalchemy.ext.declarative import declarative_base from airflow import settings -from airflow.compat.sqlalchemy import inspect from airflow.models import DagBag # revision identifiers, used by Alembic. diff --git a/airflow/migrations/versions/0028_1_10_0_add_kubernetes_resource_checkpointing.py b/airflow/migrations/versions/0028_1_10_0_add_kubernetes_resource_checkpointing.py index 0a345aa91bb82..91f40975de57b 100644 --- a/airflow/migrations/versions/0028_1_10_0_add_kubernetes_resource_checkpointing.py +++ b/airflow/migrations/versions/0028_1_10_0_add_kubernetes_resource_checkpointing.py @@ -25,8 +25,7 @@ import sqlalchemy as sa from alembic import op - -from airflow.compat.sqlalchemy import inspect +from sqlalchemy import inspect # revision identifiers, used by Alembic. revision = '33ae817a1ff4' diff --git a/airflow/migrations/versions/0057_1_10_13_add_fab_tables.py b/airflow/migrations/versions/0057_1_10_13_add_fab_tables.py index 6cb76ea70a599..b97d51ee54f92 100644 --- a/airflow/migrations/versions/0057_1_10_13_add_fab_tables.py +++ b/airflow/migrations/versions/0057_1_10_13_add_fab_tables.py @@ -26,8 +26,7 @@ import sqlalchemy as sa from alembic import op - -from airflow.compat.sqlalchemy import inspect +from sqlalchemy import inspect # revision identifiers, used by Alembic. revision = '92c57b58940d' diff --git a/airflow/migrations/versions/0058_1_10_13_increase_length_of_fab_ab_view_menu_.py b/airflow/migrations/versions/0058_1_10_13_increase_length_of_fab_ab_view_menu_.py index 75f7c8835a9ec..7f960d7ce861b 100644 --- a/airflow/migrations/versions/0058_1_10_13_increase_length_of_fab_ab_view_menu_.py +++ b/airflow/migrations/versions/0058_1_10_13_increase_length_of_fab_ab_view_menu_.py @@ -26,8 +26,8 @@ import sqlalchemy as sa from alembic import op +from sqlalchemy import inspect -from airflow.compat.sqlalchemy import inspect from airflow.migrations.db_types import StringID # revision identifiers, used by Alembic. diff --git a/airflow/migrations/versions/0059_2_0_0_drop_user_and_chart.py b/airflow/migrations/versions/0059_2_0_0_drop_user_and_chart.py index 892078c845d1f..78b3ca28f0b8e 100644 --- a/airflow/migrations/versions/0059_2_0_0_drop_user_and_chart.py +++ b/airflow/migrations/versions/0059_2_0_0_drop_user_and_chart.py @@ -25,10 +25,9 @@ import sqlalchemy as sa from alembic import op +from sqlalchemy import inspect from sqlalchemy.dialects import mysql -from airflow.compat.sqlalchemy import inspect - # revision identifiers, used by Alembic. revision = 'cf5dc11e79ad' down_revision = '03afc6b6f902' diff --git a/airflow/migrations/versions/0060_2_0_0_remove_id_column_from_xcom.py b/airflow/migrations/versions/0060_2_0_0_remove_id_column_from_xcom.py index 133f48ba109a6..956039df1218e 100644 --- a/airflow/migrations/versions/0060_2_0_0_remove_id_column_from_xcom.py +++ b/airflow/migrations/versions/0060_2_0_0_remove_id_column_from_xcom.py @@ -27,9 +27,7 @@ from collections import defaultdict from alembic import op -from sqlalchemy import Column, Integer - -from airflow.compat.sqlalchemy import inspect +from sqlalchemy import Column, Integer, inspect # revision identifiers, used by Alembic. revision = 'bbf4a7ad0465' diff --git a/airflow/migrations/versions/0062_2_0_0_add_dagrun_run_type.py b/airflow/migrations/versions/0062_2_0_0_add_dagrun_run_type.py index b3c1f8af19dd8..5125a1fddeb23 100644 --- a/airflow/migrations/versions/0062_2_0_0_add_dagrun_run_type.py +++ b/airflow/migrations/versions/0062_2_0_0_add_dagrun_run_type.py @@ -27,10 +27,9 @@ import sqlalchemy as sa from alembic import op -from sqlalchemy import Column, Integer, String +from sqlalchemy import Column, Integer, String, inspect from sqlalchemy.ext.declarative import declarative_base -from airflow.compat.sqlalchemy import inspect from airflow.utils.types import DagRunType # revision identifiers, used by Alembic. diff --git a/airflow/migrations/versions/0065_2_0_0_update_schema_for_smart_sensor.py b/airflow/migrations/versions/0065_2_0_0_update_schema_for_smart_sensor.py index 1b88f4cdae44c..4425c2d5e79fe 100644 --- a/airflow/migrations/versions/0065_2_0_0_update_schema_for_smart_sensor.py +++ b/airflow/migrations/versions/0065_2_0_0_update_schema_for_smart_sensor.py @@ -26,9 +26,8 @@ import sqlalchemy as sa from alembic import op -from sqlalchemy import func +from sqlalchemy import func, inspect -from airflow.compat.sqlalchemy import inspect from airflow.migrations.db_types import TIMESTAMP, StringID # revision identifiers, used by Alembic. diff --git a/airflow/migrations/versions/0068_2_0_0_drop_kuberesourceversion_and_.py b/airflow/migrations/versions/0068_2_0_0_drop_kuberesourceversion_and_.py index 0239b467c5895..3eff077758950 100644 --- a/airflow/migrations/versions/0068_2_0_0_drop_kuberesourceversion_and_.py +++ b/airflow/migrations/versions/0068_2_0_0_drop_kuberesourceversion_and_.py @@ -26,8 +26,7 @@ import sqlalchemy as sa from alembic import op - -from airflow.compat.sqlalchemy import inspect +from sqlalchemy import inspect # revision identifiers, used by Alembic. revision = 'bef4f3d11e8b' diff --git a/airflow/utils/db.py b/airflow/utils/db.py index 38887626ded94..6aa284026402f 100644 --- a/airflow/utils/db.py +++ b/airflow/utils/db.py @@ -33,7 +33,6 @@ import airflow from airflow import settings -from airflow.compat.sqlalchemy import has_table from airflow.configuration import conf from airflow.exceptions import AirflowException from airflow.models import import_all_models @@ -1642,7 +1641,7 @@ def drop_airflow_models(connection): migration_ctx = MigrationContext.configure(connection) version = migration_ctx._version - if has_table(connection, version): + if inspect(connection).has_table(version.name): version.drop(connection) diff --git a/airflow/www/fab_security/sqla/manager.py b/airflow/www/fab_security/sqla/manager.py index 02301028de4ae..bbc44296fa12f 100644 --- a/airflow/www/fab_security/sqla/manager.py +++ b/airflow/www/fab_security/sqla/manager.py @@ -22,11 +22,10 @@ from flask_appbuilder import const as c from flask_appbuilder.models.sqla import Base from flask_appbuilder.models.sqla.interface import SQLAInterface -from sqlalchemy import and_, func, literal +from sqlalchemy import and_, func, inspect, literal from sqlalchemy.orm.exc import MultipleResultsFound from werkzeug.security import generate_password_hash -from airflow.compat import sqlalchemy as sqla_compat from airflow.www.fab_security.manager import BaseSecurityManager from airflow.www.fab_security.sqla.models import ( Action, @@ -99,7 +98,7 @@ def register_views(self): def create_db(self): try: engine = self.get_session.get_bind(mapper=None, clause=None) - inspector = sqla_compat.inspect(engine) + inspector = inspect(engine) if "ab_user" not in inspector.get_table_names(): log.info(c.LOGMSG_INF_SEC_NO_DB) Base.metadata.create_all(engine) diff --git a/docs/apache-airflow/img/airflow_erd.sha256 b/docs/apache-airflow/img/airflow_erd.sha256 index 2cde8179cbf12..efbf555b9e440 100644 --- a/docs/apache-airflow/img/airflow_erd.sha256 +++ b/docs/apache-airflow/img/airflow_erd.sha256 @@ -1 +1 @@ -5b101dceaef5d9343cddbfab0db6087b646d031eb8a1c3157f79e6cd811e14f4 \ No newline at end of file +f15522e5fdd4bc7ddd43b5f9e5ac73a7fd408bf976a23715603463718a1aecf3 \ No newline at end of file