You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by ma...@apache.org on 2024/04/29 17:42:00 UTC
(superset) branch isort updated (7e015ab4a1 -> ae3c7a0fa2)
This is an automated email from the ASF dual-hosted git repository.
maximebeauchemin pushed a change to branch isort
in repository https://gitbox.apache.org/repos/asf/superset.git
discard 7e015ab4a1 chore: enable ruff's isort equivalent
new ae3c7a0fa2 chore: enable ruff's isort equivalent
This update added new revisions after undoing existing revisions.
That is to say, some revisions that were in the old version of the
branch are not in the new version. This situation occurs
when a user --force pushes a change and generates a repository
containing something like this:
* -- * -- B -- O -- O -- O (7e015ab4a1)
\
N -- N -- N refs/heads/isort (ae3c7a0fa2)
You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.
Any revisions marked "omit" are not gone; other references still
refer to them. Any revisions marked "discard" are gone forever.
The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
Summary of changes:
(superset) 01/01: chore: enable ruff's isort equivalent
Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
maximebeauchemin pushed a commit to branch isort
in repository https://gitbox.apache.org/repos/asf/superset.git
commit ae3c7a0fa2c72d9b89ac7509e37ae5a901d4af76
Author: Maxime Beauchemin <ma...@gmail.com>
AuthorDate: Mon Apr 29 10:29:59 2024 -0700
chore: enable ruff's isort equivalent
---
RELEASING/changelog.py | 5 +--
RELEASING/generate_email.py | 1 +
RELEASING/verify_release.py | 1 +
docker/pythonpath_dev/superset_config.py | 1 +
pyproject.toml | 19 +++++++++++
scripts/benchmark_migration.py | 9 ++---
scripts/build_docker.py | 1 +
scripts/cancel_github_workflows.py | 5 +--
scripts/change_detector.py | 1 +
scripts/erd/erd.py | 5 +--
setup.py | 1 +
superset/__init__.py | 1 +
superset/advanced_data_type/api.py | 1 +
.../advanced_data_type/plugins/internet_port.py | 1 +
superset/advanced_data_type/schemas.py | 1 +
superset/annotation_layers/annotations/api.py | 1 +
superset/annotation_layers/annotations/schemas.py | 1 +
superset/annotation_layers/api.py | 1 +
superset/annotation_layers/schemas.py | 1 +
superset/app.py | 1 +
superset/async_events/api.py | 1 +
superset/async_events/async_query_manager.py | 5 +--
superset/available_domains/api.py | 1 +
superset/cachekeys/api.py | 1 +
superset/charts/api.py | 5 +--
superset/charts/data/api.py | 3 +-
superset/charts/post_processing.py | 3 +-
superset/charts/schemas.py | 1 +
superset/cli/examples.py | 1 +
superset/cli/importexport.py | 7 ++--
superset/cli/lib.py | 1 +
superset/cli/main.py | 1 +
superset/cli/test.py | 3 +-
superset/cli/test_db.py | 5 +--
superset/cli/thumbnails.py | 3 +-
superset/cli/update.py | 3 +-
superset/columns/models.py | 3 +-
.../commands/annotation_layer/annotation/create.py | 3 +-
.../commands/annotation_layer/annotation/delete.py | 1 +
.../commands/annotation_layer/annotation/update.py | 3 +-
superset/commands/annotation_layer/create.py | 1 +
superset/commands/annotation_layer/delete.py | 1 +
superset/commands/annotation_layer/update.py | 1 +
superset/commands/chart/create.py | 3 +-
.../chart/data/create_async_job_command.py | 1 +
superset/commands/chart/data/get_data_command.py | 1 +
superset/commands/chart/delete.py | 1 +
superset/commands/chart/importers/dispatcher.py | 1 +
superset/commands/chart/importers/v1/utils.py | 2 +-
superset/commands/chart/update.py | 3 +-
superset/commands/chart/warm_up_cache.py | 2 +-
superset/commands/css/delete.py | 1 +
superset/commands/dashboard/create.py | 1 +
superset/commands/dashboard/delete.py | 1 +
.../commands/dashboard/importers/dispatcher.py | 1 +
superset/commands/dashboard/importers/v0.py | 5 +--
superset/commands/dashboard/importers/v1/utils.py | 1 +
superset/commands/dashboard/permalink/create.py | 1 +
superset/commands/dashboard/permalink/get.py | 1 +
superset/commands/dashboard/update.py | 1 +
superset/commands/database/create.py | 1 +
superset/commands/database/delete.py | 1 +
superset/commands/database/importers/dispatcher.py | 1 +
superset/commands/database/ssh_tunnel/create.py | 1 +
superset/commands/database/ssh_tunnel/delete.py | 1 +
superset/commands/database/ssh_tunnel/update.py | 1 +
superset/commands/database/tables.py | 1 +
superset/commands/database/test_connection.py | 3 +-
superset/commands/database/update.py | 1 +
superset/commands/database/uploaders/base.py | 5 +--
superset/commands/database/uploaders/csv_reader.py | 3 +-
.../commands/database/uploaders/excel_reader.py | 3 +-
superset/commands/database/validate.py | 3 +-
superset/commands/database/validate_sql.py | 1 +
superset/commands/dataset/columns/delete.py | 1 +
superset/commands/dataset/create.py | 1 +
superset/commands/dataset/delete.py | 1 +
superset/commands/dataset/duplicate.py | 1 +
superset/commands/dataset/importers/dispatcher.py | 1 +
superset/commands/dataset/importers/v0.py | 3 +-
superset/commands/dataset/importers/v1/utils.py | 3 +-
superset/commands/dataset/metrics/delete.py | 1 +
superset/commands/dataset/refresh.py | 1 +
superset/commands/dataset/update.py | 3 +-
superset/commands/explore/form_data/create.py | 1 +
superset/commands/explore/form_data/delete.py | 3 +-
superset/commands/explore/form_data/get.py | 3 +-
superset/commands/explore/form_data/update.py | 3 +-
superset/commands/explore/get.py | 5 +--
superset/commands/explore/permalink/create.py | 1 +
superset/commands/explore/permalink/get.py | 1 +
superset/commands/export/assets.py | 1 +
superset/commands/export/models.py | 3 +-
superset/commands/importers/v1/utils.py | 3 +-
superset/commands/key_value/create.py | 3 +-
superset/commands/key_value/delete.py | 1 +
superset/commands/key_value/delete_expired.py | 3 +-
superset/commands/key_value/get.py | 3 +-
superset/commands/key_value/update.py | 3 +-
superset/commands/key_value/upsert.py | 3 +-
superset/commands/query/delete.py | 1 +
superset/commands/query/importers/dispatcher.py | 1 +
superset/commands/report/alert.py | 5 +--
superset/commands/report/base.py | 1 +
superset/commands/report/create.py | 1 +
superset/commands/report/delete.py | 1 +
superset/commands/report/execute.py | 5 +--
superset/commands/report/log_prune.py | 3 +-
superset/commands/report/update.py | 1 +
superset/commands/security/create.py | 1 +
superset/commands/security/delete.py | 1 +
superset/commands/security/update.py | 1 +
superset/commands/sql_lab/estimate.py | 1 +
superset/commands/sql_lab/execute.py | 1 +
superset/commands/sql_lab/export.py | 3 +-
superset/commands/sql_lab/results.py | 1 +
superset/commands/tag/create.py | 1 +
superset/commands/tag/delete.py | 1 +
superset/commands/tag/update.py | 1 +
superset/commands/temporary_cache/create.py | 3 +-
superset/commands/temporary_cache/delete.py | 3 +-
superset/commands/temporary_cache/get.py | 3 +-
superset/commands/temporary_cache/update.py | 3 +-
superset/commands/utils.py | 1 +
superset/common/query_actions.py | 1 +
superset/common/query_context.py | 1 +
superset/common/query_context_factory.py | 1 +
superset/common/query_context_processor.py | 3 +-
superset/common/query_object.py | 3 +-
superset/common/query_object_factory.py | 1 +
superset/common/utils/dataframe_utils.py | 1 +
superset/common/utils/query_cache_manager.py | 1 +
superset/config.py | 13 ++++----
superset/connectors/sqla/models.py | 15 +++++----
superset/connectors/sqla/utils.py | 3 +-
superset/connectors/sqla/views.py | 1 +
superset/constants.py | 1 +
superset/css_templates/api.py | 1 +
superset/daos/annotation_layer.py | 1 +
superset/daos/base.py | 1 +
superset/daos/chart.py | 3 +-
superset/daos/dashboard.py | 3 +-
superset/daos/database.py | 1 +
superset/daos/dataset.py | 3 +-
superset/daos/datasource.py | 1 +
superset/daos/query.py | 3 +-
superset/daos/report.py | 3 +-
superset/daos/tag.py | 1 +
superset/daos/user.py | 1 +
superset/dashboards/api.py | 5 +--
superset/dashboards/filter_state/api.py | 1 +
superset/dashboards/permalink/api.py | 1 +
superset/dashboards/schemas.py | 1 +
superset/databases/api.py | 5 +--
superset/databases/decorators.py | 1 +
superset/databases/schemas.py | 1 +
superset/databases/ssh_tunnel/models.py | 3 +-
superset/databases/utils.py | 1 +
superset/dataframe.py | 1 +
superset/datasets/api.py | 5 +--
superset/datasets/columns/api.py | 1 +
superset/datasets/metrics/api.py | 1 +
superset/datasets/models.py | 3 +-
superset/datasets/schemas.py | 3 +-
superset/datasource/api.py | 1 +
superset/db_engine_specs/__init__.py | 9 ++---
superset/db_engine_specs/athena.py | 3 +-
superset/db_engine_specs/base.py | 11 +++---
superset/db_engine_specs/bigquery.py | 7 ++--
superset/db_engine_specs/clickhouse.py | 3 +-
superset/db_engine_specs/crate.py | 1 +
superset/db_engine_specs/databend.py | 3 +-
superset/db_engine_specs/databricks.py | 3 +-
superset/db_engine_specs/db2.py | 1 +
superset/db_engine_specs/doris.py | 1 +
superset/db_engine_specs/dremio.py | 1 +
superset/db_engine_specs/druid.py | 3 +-
superset/db_engine_specs/duckdb.py | 3 +-
superset/db_engine_specs/elasticsearch.py | 3 +-
superset/db_engine_specs/gsheets.py | 3 +-
superset/db_engine_specs/hive.py | 5 +--
superset/db_engine_specs/impala.py | 3 +-
superset/db_engine_specs/kusto.py | 2 +-
superset/db_engine_specs/lib.py | 1 +
superset/db_engine_specs/mssql.py | 3 +-
superset/db_engine_specs/mysql.py | 3 +-
superset/db_engine_specs/ocient.py | 4 ++-
superset/db_engine_specs/postgres.py | 3 +-
superset/db_engine_specs/presto.py | 13 ++++----
superset/db_engine_specs/redshift.py | 3 +-
superset/db_engine_specs/rockset.py | 1 +
superset/db_engine_specs/shillelagh.py | 1 +
superset/db_engine_specs/snowflake.py | 3 +-
superset/db_engine_specs/spark.py | 1 +
superset/db_engine_specs/sqlite.py | 3 +-
superset/db_engine_specs/starrocks.py | 1 +
superset/db_engine_specs/trino.py | 3 +-
superset/embedded/api.py | 1 +
superset/examples/big_data.py | 1 +
superset/examples/countries.py | 1 +
superset/examples/country_map.py | 2 +-
superset/examples/data_loading.py | 1 +
superset/examples/deck.py | 1 +
superset/examples/energy.py | 2 +-
superset/examples/flights.py | 2 +-
superset/examples/helpers.py | 1 +
superset/examples/long_lat.py | 2 +-
superset/examples/misc_dashboard.py | 1 +
superset/examples/paris.py | 2 +-
superset/examples/random_time_series.py | 2 +-
superset/examples/sf_population_polygons.py | 2 +-
superset/examples/supported_charts_dashboard.py | 1 +
superset/examples/utils.py | 5 +--
superset/examples/world_bank.py | 2 +-
superset/explore/api.py | 1 +
superset/explore/form_data/api.py | 1 +
superset/explore/permalink/api.py | 1 +
superset/extensions/metadb.py | 6 ++--
superset/extensions/metastore_cache.py | 3 +-
superset/extensions/ssh.py | 5 +--
superset/importexport/api.py | 2 +-
superset/initialization/__init__.py | 3 +-
superset/jinja_context.py | 5 +--
superset/key_value/models.py | 1 +
superset/key_value/shared_entries.py | 1 +
superset/key_value/types.py | 4 +--
superset/key_value/utils.py | 3 +-
superset/migrations/__init__.py | 1 +
superset/migrations/env.py | 3 +-
superset/migrations/migration_utils.py | 1 +
superset/migrations/shared/migrate_viz/base.py | 1 +
superset/migrations/shared/native_filters.py | 2 +-
superset/migrations/shared/security_converge.py | 3 +-
superset/migrations/shared/utils.py | 3 +-
.../versions/2015-09-21_17-30_4e6a06bad7a8_init.py | 2 +-
.../versions/2015-10-05_10-32_5a7bad26f2a7_.py | 2 +-
.../versions/2015-10-05_22-11_1e2841a4128_.py | 2 +-
...0-54_2929af7925ed_tz_offsets_in_data_sources.py | 2 +-
...-18_289ce07647b_add_encrypted_password_field.py | 3 +-
...12-04_09-42_1a48a5411020_adding_slug_to_dash.py | 2 +-
...15-12-04_11-16_315b3f4da9b0_adding_log_model.py | 2 +-
.../2015-12-13_08-38_55179c7f25c7_sqla_descr.py | 2 +-
.../2015-12-14_13-37_12d55656cbca_is_featured.py | 2 +-
.../2015-12-15_17-02_2591d77e9831_user_id.py | 2 +-
.../versions/2016-01-13_20-24_8e80a26a31db_.py | 2 +-
...6-01-17_22-00_7dbf98566af7_slice_description.py | 2 +-
.../2016-01-18_23-43_43df8de3a5f4_dash_json.py | 2 +-
.../2016-02-03_17-41_d827694c7555_css_templates.py | 2 +-
.../2016-02-10_08-47_430039611635_log_more.py | 3 +-
...3-13_09-56_a2d606a761d9_adding_favstar_model.py | 2 +-
...-13_21-30_18e88e1cc004_making_audit_nullable.py | 3 +-
...2016-03-17_08-40_836c0bf75904_cache_timeouts.py | 2 +-
...016-03-24_14-13_763d4b211ec9_fixing_audit_fk.py | 2 +-
.../2016-03-25_14-35_1d2ddd543133_log_dt.py | 2 +-
...4f117f9_adding_extra_field_to_database_model.py | 2 +-
...22-41_bb51420eaf83_add_schema_to_table_model.py | 2 +-
..._b4456560d4f3_change_table_unique_constraint.py | 1 +
...04-15_17-58_4fa88fe24e94_owners_many_to_many.py | 2 +-
..._08-54_c3a8f8611885_materializing_permission.py | 3 +-
...bf6129e13_adding_verbose_name_to_tablecolumn.py | 2 +-
...5-11_17-28_956a063c52b3_adjusting_key_length.py | 3 +-
...9ee0e3_fix_wrong_constraint_on_table_columns.py | 1 +
...d8bc074f7aad_add_new_field_is_restricted_to_.py | 3 +-
.../versions/2016-06-16_14-15_960c69cb1f5b_.py | 2 +-
...06-27_08-43_27ae655e4247_make_creator_owners.py | 1 +
...-07-06_22-04_f162a1dea4c4_d3format_by_metric.py | 2 +-
...016-07-25_17-48_ad82a75afd82_add_query_model.py | 2 +-
...8_14-06_3c3ffe173e4f_add_sql_string_to_table.py | 2 +-
...26_41f6a59a61f2_database_options_for_sql_lab.py | 3 +-
...-09-07_23-50_33d996bcc382_update_slice_model.py | 3 +-
..._17-39_5e4a03ef0bf0_add_request_access_model.py | 3 +-
...9-12_23-33_4500485bde7d_allow_run_sync_async.py | 2 +-
.../2016-09-15_08-48_65903709c321_allow_dml.py | 3 +-
...09-22_10-21_3b626e2a6783_sync_db_with_models.py | 3 +-
...2_11-31_eca4694defa7_sqllab_setting_defaults.py | 1 +
...d66c4246e_add_cache_timeout_to_druid_cluster.py | 2 +-
...0-05_11-30_b46fa1b0b39e_add_params_to_tables.py | 2 +-
...0-14_11-17_7e3ddad2a00b_results_key_to_query.py | 2 +-
...2016-10-25_10-16_ad4d656d92bc_add_avg_metric.py | 2 +-
.../2016-11-02_17-36_c611f2b591b8_dim_spec.py | 2 +-
...6-11-14_15-23_e46f2d27a08e_materialize_perms.py | 2 +-
.../versions/2016-11-23_10-27_f1f2d4af5b90_.py | 2 +-
.../2016-12-06_17-40_1296d28ec131_druid_exports.py | 2 +-
.../2016-12-13_16-19_525c854f0005_log_this_plus.py | 2 +-
.../2017-01-10_11-47_bcf3126872fc_add_keyvalue.py | 2 +-
...4_12-31_db0c65b146bd_update_slice_model_json.py | 1 +
...2-40_f18570e03440_add_query_result_key_index.py | 1 +
...7c195a_rewriting_url_from_shortner_with_new_.py | 3 +-
...9-15_732f1c06bcbf_add_fetch_values_predicate.py | 2 +-
...dfe5fb6c_adding_verbose_name_to_druid_column.py | 2 +-
...03-16_18-10_db527d8c4c78_add_db_verbose_name.py | 2 +-
..._11-28_a6c18f869a4e_query_start_running_time.py | 3 +-
.../2017-03-29_15-04_2fcdcb35e487_saved_queries.py | 3 +-
...a65458420354_add_result_backend_time_logging.py | 3 +-
.../2017-07-26_20-09_ca69c70ec99b_tracking_url.py | 2 +-
...-35_a9c47e2c1547_add_impersonate_user_to_dbs.py | 2 +-
.../2017-09-13_16-36_ddd6ebdd853b_annotations.py | 3 +-
...5-09_19a814813610_adding_metric_warning_text.py | 2 +-
.../versions/2017-10-03_14-37_4736ec66ce19_.py | 3 +-
...-08_08-19_67a6ac9b727b_update_spatial_params.py | 1 +
...2-17_11-06_21e88bc06c02_annotation_migration.py | 1 +
.../2018-02-13_08-07_e866bd2d4976_smaller_grid.py | 3 +-
...8c4473c581_allow_multi_schema_metadata_fetch.py | 3 +-
.../versions/2018-03-20_19-47_f231d82b9b26_.py | 3 +-
...fdf31bdd4_add_published_column_to_dashboards.py | 2 +-
...-04-03_08-19_130915240929_is_sqllab_viz_flow.py | 3 +-
.../versions/2018-04-08_07-34_30bb17c0dc76_.py | 2 +-
...9_bf706ae5eb46_cal_heatmap_metric_to_metrics.py | 1 +
...5_e502db2af7be_add_template_params_to_tables.py | 2 +-
..._20-28_6c7537a6004a_models_for_email_reports.py | 2 +-
...018-06-04_11-12_c5756bec8b47_time_grain_sqla.py | 1 +
...6-07_09-52_afb7730f6a9c_remove_empty_filters.py | 1 +
...13_10-20_4451805bbaa1_remove_double_percents.py | 10 +++++-
.../2018-06-13_14-54_bddc498dd179_adhoc_filters.py | 1 +
...4_14-31_80a67c5192fa_single_pie_chart_metric.py | 1 +
...1c4c6_migrate_num_period_compare_and_period_.py | 3 +-
.../versions/2018-07-16_18-04_1d9e835a84f9_.py | 3 +-
.../2018-07-19_23-41_c617da68de7d_form_nullable.py | 1 +
...07-20_15-31_7f2635b51f5d_update_base_columns.py | 1 +
...07-20_15-57_e9df189e5c7e_update_base_metrics.py | 1 +
...-07-20_16-08_937d04c16b64_update_datasources.py | 2 +-
.../2018-07-22_08-50_7467e77870e4_remove_aggs.py | 3 +-
..._bebcf3fed1fe_convert_dashboard_v1_positions.py | 3 +-
...8-07-26_11-10_c82ee8a39623_add_implicit_tags.py | 1 +
.../versions/2018-08-01_11-47_7fcdcde0761c_.py | 3 +-
...14-38_0c5070e96b57_add_user_attributes_table.py | 2 +-
.../2018-08-13_11-30_1a1d627ebd8e_position_json.py | 3 +-
...826_add_metadata_column_to_annotation_model_.py | 2 +-
...08-42_0b1f1ab473c0_add_extra_column_to_query.py | 3 +-
...08545_migrate_time_range_for_default_filters.py | 1 +
...8b9b7_remove_coordinator_from_druid_cluster_.py | 3 +-
...-27_11-53_a61b40f9f57f_remove_allow_run_sync.py | 3 +-
...2018-12-11_22-03_fb13d49b72f9_better_filters.py | 1 +
...d38_increase_size_of_name_column_in_ab_view_.py | 2 +-
...e1b21cd94a4_change_owner_to_m2m_relation_on_.py | 3 +-
..._a33a03f16c4a_add_extra_column_to_savedquery.py | 2 +-
...2-01_16-07_e553e78e90c5_add_druid_auth_py_py.py | 2 +-
.../2019-03-21_10-22_d94d33dbe938_form_strip.py | 1 +
...a3f04bc82_add_parent_ids_in_dashboard_layout.py | 1 +
...er_sql_column_data_type_in_query_mysql_table.py | 3 +-
...1a0d6f2da_remove_limit_used_from_query_model.py | 2 +-
...5_b4a38aa87893_deprecate_database_expression.py | 2 +-
.../2019-06-28_13-17_ab8c66efdd01_resample.py | 1 +
...ng_unique_constraint_on_dashboard_slices_tbl.py | 1 +
...50_11c737c17cc6_deprecate_restricted_metrics.py | 3 +-
...5afa9079866a_serialize_schema_permissions_py.py | 1 +
...e_form_strip_leading_and_trailing_whitespace.py | 1 +
...2_00-29_b6fa807eac07_make_names_non_nullable.py | 3 +-
...5-05_cca2f5d568c8_add_encrypted_extra_to_dbs.py | 2 +-
.../2019-10-10_13-52_1495eb914ad3_time_range.py | 1 +
...acd2cf3df2_alter_type_of_dbs_encrypted_extra.py | 3 +-
...127d0d1d_reconvert_legacy_filters_into_adhoc.py | 1 +
...05_db4b49eb0782_add_tables_for_sql_lab_state.py | 2 +-
...e1c9b09d0_add_not_null_to_dbs_sqlalchemy_url.py | 3 +-
...8ea_change_table_schema_description_to_long_.py | 2 +-
...4_17-07_0a6f12f60c73_add_role_level_security.py | 2 +-
...-08_01-17_e96dbf2cfef0_datasource_cluster_fk.py | 3 +-
..._14-13_3325d4caccc8_dashboard_scoped_filters.py | 1 +
...a401_add_tmp_schema_name_to_the_query_object.py | 2 +-
...10-42_f9a30386bd74_cleanup_time_grainularity.py | 1 +
...25_10-49_b5998378c225_add_certificate_to_dbs.py | 2 +-
...57699a813e_add_tables_relation_to_row_level_.py | 2 +-
...29_09-24_620241d1153f_update_time_grain_sqla.py | 1 +
...5-12_12-59_ea396d202291_ctas_method_in_query.py | 2 +-
...21-01_743a117f0d98_add_slack_to_the_schedule.py | 2 +-
.../2020-05-26_23-21_2f1d15e8a6af_add_alerts.py | 2 +-
...19-50_a72cb0ebeb22_deprecate_dbs_perm_column.py | 3 +-
...09_17-12_73fd22e742ab_add_dynamic_plugins_py.py | 2 +-
...08-08_18-10_f2672aa8350a_add_slack_to_alerts.py | 2 +-
...978245563a02_migrate_iframe_to_dash_markdown.py | 3 +-
...acb39_add_extra_column_to_tables_and_metrics.py | 2 +-
.../2020-08-28_17-16_175ea3592453_cache_lookup.py | 2 +-
...-08-31_20-30_2e5a0ee25ed4_refractor_alerting.py | 2 +-
...828ac4e_add_rls_filter_type_and_grouping_key.py | 2 +-
...654_fix_data_access_permissions_for_virtual_.py | 1 +
...b56500de1855_add_uuid_column_to_import_mixin.py | 5 +--
...208f_collapse_alerting_models_into_a_single_.py | 3 +-
..._585b0b1a7b18_add_exec_info_to_saved_queries.py | 2 +-
...6e99fb176a0_add_import_mixing_to_saved_query.py | 3 +-
...1-04_11-06_49b5a32daba5_add_report_schedules.py | 2 +-
...e38177dbf641_security_converge_saved_queries.py | 1 +
...15-25_40f16acf1ba7_security_converge_reports.py | 1 +
...8ee129739cf9_security_converge_css_templates.py | 1 +
...ced1f0e76_reports_add_working_timeout_column.py | 2 +-
..._14-13_ccb74baaa89b_security_converge_charts.py | 1 +
...5-05_45731db65d9c_security_converge_datasets.py | 1 +
...45_1f6dca87d1a2_security_converge_dashboards.py | 1 +
...2_c25cb2c78727_security_converge_annotations.py | 1 +
...-49_42b4c9e01447_security_converge_databases.py | 1 +
...14_13-40_4b84f97828aa_security_converge_logs.py | 1 +
...9-07_ab104a954a8f_reports_alter_crontab_size.py | 2 +-
...12-15_e37912a26567_security_converge_queries.py | 1 +
...c878781977c6_alert_reports_shared_uniqueness.py | 2 +-
...cdd12658_add_roles_relationship_to_dashboard.py | 2 +-
...60bf0649a77_migrate_x_dateunit_in_time_range.py | 3 +-
...2fdb_add_granularity_to_charts_where_missing.py | 1 +
...-10_12-32_41ce8799acc3_rename_pie_label_type.py | 1 +
...1412ec1e5a7b_legacy_force_directed_to_echart.py | 1 +
...8_09-13_c501b7c653a3_add_missing_uuid_column.py | 5 +--
...2_67da9ef1ef9c_add_hide_left_bar_to_tabstate.py | 2 +-
...411006_add_execution_id_to_report_execution_.py | 2 +-
...989bbe479899_rename_filter_configuration_in_.py | 1 +
...021-03-29_11-15_3ebe0993c770_filterset_table.py | 2 +-
...e1b9c3_add_report_format_to_report_schedule_.py | 2 +-
...ea61c5e7_remove_dataset_health_check_message.py | 1 +
...88938_country_map_use_lowercase_country_name.py | 1 +
...3a3a8ff221_migrate_filter_sets_to_new_format.py | 3 +-
...0d715cc_add_limiting_factor_column_to_query_.py | 2 +-
...ed7ec95_migrate_native_filters_to_new_schema.py | 3 +-
...530256cea_add_save_option_column_to_db_model.py | 2 +-
...bea_add_advanced_data_types_to_column_models.py | 3 +-
...ae1ed299413b_add_timezone_to_report_schedule.py | 2 +-
...9248280_add_creation_method_to_reports_model.py | 2 +-
...-09_030c840e3a1c_add_query_context_to_slices.py | 2 +-
...27_08-25_31b2a1039d4a_drop_tables_constraint.py | 1 +
...3605f370a_fix_schemas_allowed_for_csv_upload.py | 1 +
...d20ba9ecb33_add_last_saved_at_to_slice_model.py | 2 +-
...15da_migrate_pivot_table_v2_heatmaps_to_new_.py | 1 +
..._17-16_f6196627326f_update_chart_permissions.py | 1 +
...13dd52_change_fetch_values_predicate_to_text.py | 2 +-
...1091c0ef16_add_extra_column_to_columns_model.py | 2 +-
...4fbb_add_type_to_native_filter_configuration.py | 3 +-
...-09-19_14-42_b92d69a6643c_rename_csv_to_file.py | 2 +-
...453f4e2e_migrate_timeseries_limit_metric_to_.py | 1 +
...12_11-15_32646df09c64_update_time_grain_sqla.py | 1 +
...cbaac5_change_datatype_of_type_in_basecolumn.py | 2 +-
...7149153d_add_certifications_columns_to_slice.py | 3 +-
...d53b_add_certifications_columns_to_dashboard.py | 3 +-
...e5f1dacd_rename_to_schemas_allowed_for_file_.py | 1 +
...e27eaf93db_add_extra_config_column_to_alerts.py | 3 +-
...aa3ff_add_force_screenshot_to_alerts_reports.py | 3 +-
...5b9441_rename_big_viz_total_form_data_fields.py | 1 +
...8dd_add_saved_query_foreign_key_to_tab_state.py | 2 +-
...d1d2_move_pivot_table_v2_legacy_order_by_to_.py | 1 +
...9410a97a_add_columns_for_external_management.py | 2 +-
...03_5afbb1a5849b_add_embedded_dahshoard_table.py | 2 +-
...d8e252_fix_query_and_saved_query_null_schema.py | 1 +
...b0ca7944_change_adhoc_filter_b_from_none_to_.py | 1 +
...03-04_09-59_6766938c6065_add_key_value_store.py | 2 +-
...3_sql_lab_models_database_constraint_updates.py | 2 +-
...d617f14_add_on_saved_query_delete_tab_state_.py | 2 +-
...14-38_a9422eeaae74_new_dataset_models_take_2.py | 10 ++++--
...d0249074e4_deprecate_time_range_endpoints_v2.py | 1 +
...07e4fdbaba_rm_time_range_endpoints_from_qc_3.py | 3 +-
...-39_cbe71abde154_fix_report_schedule_and_log.py | 1 +
...8_16-07_e786798587de_delete_none_permissions.py | 1 +
...-14_15-28_e09b4ae78457_resize_key_value_blob.py | 2 +-
..._16-17_f3afaf1f11f0_add_unique_name_desc_rls.py | 3 +-
...59_7fb8bca906d2_permalink_rename_filterstate.py | 1 +
...5-48_409c7b420ab0_add_created_by_fk_as_owner.py | 1 +
..._13-00_c747c78868b6_migrating_legacy_treemap.py | 1 +
...-07_14-00_06e1e70058c7_migrating_legacy_area.py | 1 +
...-16_a39867932713_query_context_to_mediumtext.py | 1 +
...665d_fix_table_chart_conditional_formatting_.py | 1 +
...rop_column_allow_multi_schema_metadata_fetch.py | 2 +-
...-34_deb4c9d4a4ef_parameters_in_saved_queries.py | 2 +-
...c2d8ec8595_create_ssh_tunnel_credentials_tbl.py | 3 +-
...1_4ce1d9b25135_remove_filter_bar_orientation.py | 3 +-
...4-46_c0a3ea245b61_remove_show_native_filters.py | 3 +-
...ac08bb5b83_invert_horizontal_bar_chart_order.py | 1 +
...7_13-24_b5ea9d343307_bar_chart_stack_options.py | 1 +
...03-27_12-30_7e67aecbf3f1_chart_ds_constraint.py | 3 +-
...2a5681ddfd_convert_key_value_entries_to_json.py | 1 +
...-41_4ea966691069_cross_filter_global_scoping.py | 3 +-
...06-01_13-13_83e1abbe777f_drop_access_request.py | 2 +-
...02_9ba2ce3086e5_migrate_pivot_table_v1_to_v2.py | 1 +
...-08_10-22_4c5da39be729_migrate_treemap_chart.py | 1 +
...e58e1e58e5c_migrate_dual_line_to_mixed_chart.py | 6 ++--
..._90139bf715e4_add_currency_column_to_metrics.py | 2 +-
..._add_on_delete_cascade_for_tables_references.py | 1 +
...5b0fb85b9a_add_custom_size_columns_to_report.py | 3 +-
.../2023-06-28_19-49_bf646a0c1501_json_metadata.py | 3 +-
..._240d23c7f86f_update_tag_model_w_description.py | 2 +-
..._add_on_delete_cascade_for_owners_references.py | 1 +
...0-34_e0f6f91c2055_create_user_favorite_table.py | 2 +-
...delete_obsolete_druid_nosql_slice_parameters.py | 1 +
...6f8b1280_cleanup_erroneous_parent_filter_ids.py | 1 +
...9_17-54_ee179a490af9_deckgl_path_width_units.py | 1 +
...23_0769ef90fddd_fix_schema_perm_for_datasets.py | 3 +-
.../2023-08-08_14-14_2e826adca42c_log_json.py | 3 +-
...3_add_on_delete_cascade_for_dashboard_slices.py | 1 +
...on_delete_cascade_for_embedded_dashboards.py.py | 1 +
...086c2676_add_normalize_columns_to_sqla_model.py | 3 +-
...54aca4c8a2_increase_ab_user_email_field_size.py | 2 +-
...317970b4400c_added_time_secondary_column_to_.py | 8 +++--
...91_add_on_delete_cascade_for_dashboard_roles.py | 1 +
...ff00fe8_add_percent_calculation_type_funnel_.py | 1 +
...96164e3017c6_tagged_object_unique_constraint.py | 3 +-
...d09c9_migrate_filter_boxes_to_native_filters.py | 1 +
...2024-01-19_10-03_e863403c0c50_drop_url_table.py | 3 +-
...d83218_migrate_can_view_and_drill_permission.py | 1 +
...14-43_17fcea065655_change_text_to_mediumtext.py | 3 +-
...47_be1b217cd8cd_big_number_kpi_single_metric.py | 1 +
...20_16-02_678eefb4ab44_add_access_token_table.py | 2 +-
...4-01_22-44_c22cb5c2e546_user_attr_avatar_url.py | 3 +-
...8_15-43_5ad7321c2169_mig_new_csv_upload_perm.py | 1 +
...-04-11_15-41_5f57af97bc3f_add_catalog_column.py | 3 +-
...14-04_d60591c5515f_mig_new_excel_upload_perm.py | 1 +
superset/models/core.py | 15 +++++----
superset/models/dashboard.py | 7 ++--
superset/models/helpers.py | 25 +++++++-------
superset/models/slice.py | 3 +-
superset/models/sql_lab.py | 9 ++---
superset/models/sql_types/presto_sql_types.py | 1 +
superset/queries/api.py | 1 +
superset/queries/saved_queries/api.py | 5 +--
superset/queries/saved_queries/schemas.py | 1 +
superset/queries/schemas.py | 1 +
superset/reports/api.py | 1 +
superset/reports/logs/api.py | 1 +
superset/reports/models.py | 1 +
superset/reports/notifications/email.py | 7 ++--
superset/reports/notifications/slack.py | 7 ++--
superset/reports/schemas.py | 1 +
superset/result_set.py | 3 +-
superset/row_level_security/api.py | 1 +
superset/row_level_security/schemas.py | 1 +
superset/schemas.py | 1 +
superset/security/analytics_db_safety.py | 1 +
superset/security/api.py | 1 +
superset/security/manager.py | 3 +-
superset/sql_lab.py | 11 +++---
superset/sql_parse.py | 11 +++---
superset/sql_validators/presto_db.py | 3 +-
superset/sqllab/api.py | 3 +-
superset/sqllab/exceptions.py | 1 +
superset/sqllab/execution_context_convertor.py | 3 +-
superset/sqllab/query_render.py | 1 +
superset/sqllab/schemas.py | 1 +
superset/sqllab/sql_json_executer.py | 3 +-
superset/sqllab/sqllab_execution_context.py | 3 +-
superset/sqllab/utils.py | 1 +
superset/sqllab/validators.py | 1 +
superset/stats_logger.py | 1 +
superset/superset_typing.py | 1 +
superset/tables/models.py | 3 +-
superset/tags/api.py | 1 +
superset/tags/models.py | 1 +
superset/tags/schemas.py | 1 +
superset/tasks/async_queries.py | 1 +
superset/tasks/cache.py | 1 +
superset/tasks/celery_app.py | 1 +
superset/tasks/cron_util.py | 3 +-
superset/tasks/scheduler.py | 3 +-
superset/tasks/slack_util.py | 3 +-
superset/tasks/thumbnails.py | 1 +
superset/tasks/utils.py | 1 +
superset/temporary_cache/api.py | 3 +-
superset/temporary_cache/utils.py | 1 +
superset/thumbnails/digest.py | 1 +
superset/translations/utils.py | 1 +
superset/utils/backports.py | 3 +-
superset/utils/cache.py | 5 +--
superset/utils/cache_manager.py | 1 +
superset/utils/core.py | 39 +++++++++++-----------
superset/utils/csv.py | 3 +-
.../utils/dashboard_filter_scopes_converter.py | 3 +-
superset/utils/dashboard_import_export.py | 1 +
superset/utils/database.py | 1 +
superset/utils/date_parser.py | 9 ++---
superset/utils/dates.py | 1 +
superset/utils/decorators.py | 5 +--
superset/utils/dict_import_export.py | 1 +
superset/utils/encrypt.py | 3 +-
superset/utils/lock.py | 7 ++--
superset/utils/log.py | 9 ++---
superset/utils/logging_configurator.py | 1 +
superset/utils/machine_auth.py | 1 +
superset/utils/mock_data.py | 9 ++---
superset/utils/network.py | 1 +
superset/utils/oauth2.py | 3 +-
superset/utils/pandas_postprocessing/__init__.py | 1 +
superset/utils/pandas_postprocessing/boxplot.py | 2 +-
superset/utils/pandas_postprocessing/compare.py | 2 +-
superset/utils/pandas_postprocessing/geography.py | 2 +-
superset/utils/pandas_postprocessing/prophet.py | 2 +-
superset/utils/pandas_postprocessing/rename.py | 2 +-
superset/utils/pandas_postprocessing/resample.py | 2 +-
superset/utils/pandas_postprocessing/utils.py | 3 +-
superset/utils/pdf.py | 3 +-
superset/utils/profiler.py | 1 +
superset/utils/retries.py | 2 +-
superset/utils/screenshots.py | 3 +-
superset/utils/urls.py | 2 +-
superset/utils/webdriver.py | 3 +-
superset/views/__init__.py | 1 +
superset/views/alerts.py | 1 +
superset/views/all_entities.py | 1 +
superset/views/api.py | 3 +-
superset/views/base.py | 9 ++---
superset/views/base_api.py | 1 +
superset/views/core.py | 5 +--
superset/views/database/forms.py | 1 +
superset/views/database/views.py | 7 ++--
superset/views/datasource/views.py | 2 +-
superset/views/filters.py | 1 +
superset/views/key_value.py | 2 +-
superset/views/log/api.py | 2 +-
superset/views/log/schemas.py | 1 +
superset/views/log/views.py | 2 +-
superset/views/sql_lab/views.py | 3 +-
superset/views/sqllab.py | 2 +-
superset/views/tags.py | 3 +-
superset/views/users/api.py | 1 +
superset/views/utils.py | 11 +++---
superset/viz.py | 17 +++++-----
tests/common/logger_utils.py | 5 +--
tests/common/query_context_generator.py | 1 +
tests/conftest.py | 1 +
.../birth_names/birth_names_generator.py | 1 +
.../example_data/data_loading/base_data_loader.py | 1 +
.../data_loading/data_definitions/birth_names.py | 1 +
.../data_loading/pandas/pandas_data_loader.py | 1 +
.../data_loading/pandas/pands_data_loading_conf.py | 1 +
.../data_loading/pandas/table_df_convertor.py | 1 +
tests/fixtures/birth_names.py | 1 +
.../annotation_layers/fixtures.py | 3 +-
tests/integration_tests/charts/api_tests.py | 9 ++---
tests/integration_tests/charts/commands_tests.py | 2 +-
tests/integration_tests/cli_tests.py | 5 +--
tests/integration_tests/commands_test.py | 3 +-
tests/integration_tests/conftest.py | 3 +-
tests/integration_tests/core_tests.py | 7 ++--
tests/integration_tests/dashboards/base_case.py | 2 +-
.../integration_tests/dashboards/commands_tests.py | 2 +-
.../dashboards/dashboard_test_utils.py | 1 +
.../dashboards/filter_state/api_tests.py | 7 ++--
.../dashboards/permalink/api_tests.py | 7 ++--
.../dashboards/security/security_dataset_tests.py | 2 +-
.../dashboards/security/security_rbac_tests.py | 5 ++-
.../dashboards/superset_factory_util.py | 1 +
.../databases/commands/upload_test.py | 3 +-
.../integration_tests/databases/commands_tests.py | 4 +--
tests/integration_tests/datasets/api_tests.py | 11 +++---
tests/integration_tests/datasets/commands_tests.py | 2 +-
tests/integration_tests/datasource_tests.py | 13 ++++++--
.../db_engine_specs/bigquery_tests.py | 2 +-
.../db_engine_specs/presto_tests.py | 2 +-
.../db_engine_specs/redshift_tests.py | 2 +-
tests/integration_tests/email_tests.py | 7 ++--
tests/integration_tests/embedded/test_view.py | 1 +
tests/integration_tests/event_logger_tests.py | 4 +--
tests/integration_tests/explore/api_tests.py | 3 +-
.../explore/form_data/api_tests.py | 3 +-
.../explore/permalink/api_tests.py | 2 +-
.../extensions/metastore_cache_test.py | 3 +-
tests/integration_tests/fixtures/__init__.py | 10 ++++--
.../fixtures/birth_names_dashboard.py | 1 +
.../integration_tests/fixtures/energy_dashboard.py | 1 +
tests/integration_tests/fixtures/importexport.py | 1 +
tests/integration_tests/fixtures/public_role.py | 2 +-
.../fixtures/unicode_dashboard.py | 1 +
tests/integration_tests/fixtures/users.py | 2 +-
.../fixtures/world_bank_dashboard.py | 5 +--
.../importexport/commands_tests.py | 2 +-
.../key_value/commands/create_test.py | 2 +-
.../key_value/commands/delete_test.py | 3 +-
.../key_value/commands/fixtures.py | 5 +--
.../key_value/commands/get_test.py | 5 +--
.../key_value/commands/update_test.py | 1 +
.../key_value/commands/upsert_test.py | 1 +
...ef90fddd_fix_schema_perm_for_datasets__tests.py | 1 +
.../7e67aecbf3f1_chart_ds_constraint__tests.py | 3 +-
...migrate_can_view_and_drill_permission__tests.py | 1 +
...baba_rm_time_range_endpoints_from_qc_3__test.py | 3 +-
...c747c78868b6_migrating_legacy_treemap__tests.py | 1 +
..._migrate_native_filters_to_new_schema__tests.py | 1 +
.../fb13d49b72f9_better_filters__tests.py | 3 +-
...221_migrate_filter_sets_to_new_format__tests.py | 1 +
tests/integration_tests/query_context_tests.py | 2 +-
tests/integration_tests/reports/alert_tests.py | 2 +-
.../commands/create_dashboard_report_tests.py | 5 ++-
.../commands/execute_dashboard_report_tests.py | 4 ++-
tests/integration_tests/reports/commands_tests.py | 5 +--
tests/integration_tests/reports/scheduler_tests.py | 2 +-
tests/integration_tests/reports/utils.py | 3 +-
.../security/guest_token_security_tests.py | 2 +-
.../security/migrate_roles_tests.py | 5 +--
tests/integration_tests/sql_lab/commands_tests.py | 2 +-
tests/integration_tests/sql_lab/conftest.py | 2 +-
tests/integration_tests/superset_test_config.py | 5 +--
.../superset_test_config_thumbnails.py | 1 +
.../superset_test_custom_template_processors.py | 2 +-
tests/integration_tests/tagging_tests.py | 4 ++-
tests/integration_tests/tags/commands_tests.py | 6 ++--
.../integration_tests/tasks/async_queries_tests.py | 6 ++--
tests/integration_tests/test_app.py | 1 +
tests/integration_tests/test_jinja_context.py | 4 +--
tests/integration_tests/thumbnails_tests.py | 7 ++--
tests/integration_tests/users/api_tests.py | 1 +
tests/integration_tests/utils/__init__.py | 1 +
.../utils/public_interfaces_test.py | 1 +
tests/unit_tests/annotation_layers/schema_tests.py | 2 +-
.../async_events/async_query_manager_tests.py | 1 +
.../charts/commands/importers/v1/import_test.py | 4 +--
tests/unit_tests/charts/test_post_processing.py | 2 +-
.../commands/databases/csv_reader_test.py | 3 +-
.../commands/databases/excel_reader_test.py | 3 +-
tests/unit_tests/commands/test_utils.py | 1 -
.../common/test_get_aggregated_join_column.py | 1 +
tests/unit_tests/config_test.py | 1 +
tests/unit_tests/conftest.py | 6 ++--
tests/unit_tests/core_tests.py | 1 +
tests/unit_tests/dao/user_test.py | 2 +-
.../commands/importers/v1/import_test.py | 4 +--
tests/unit_tests/databases/api_test.py | 4 +--
tests/unit_tests/databases/schema_tests.py | 3 +-
tests/unit_tests/dataframe_test.py | 2 +-
.../datasets/commands/importers/v1/import_test.py | 4 +--
tests/unit_tests/datasets/conftest.py | 1 +
tests/unit_tests/datasets/schema_tests.py | 2 +-
tests/unit_tests/db_engine_specs/test_athena.py | 3 +-
tests/unit_tests/db_engine_specs/test_bigquery.py | 2 +-
.../unit_tests/db_engine_specs/test_databricks.py | 2 +-
tests/unit_tests/db_engine_specs/test_duckdb.py | 2 +-
tests/unit_tests/db_engine_specs/test_gsheets.py | 1 +
tests/unit_tests/db_engine_specs/test_mssql.py | 2 +-
tests/unit_tests/db_engine_specs/test_presto.py | 2 +-
tests/unit_tests/db_engine_specs/test_snowflake.py | 2 +-
tests/unit_tests/db_engine_specs/test_trino.py | 2 +-
tests/unit_tests/db_engine_specs/utils.py | 1 +
tests/unit_tests/explore/utils_test.py | 1 +
tests/unit_tests/extension_tests.py | 1 +
tests/unit_tests/extensions/test_sqlalchemy.py | 3 +-
tests/unit_tests/fixtures/assets_configs.py | 1 +
tests/unit_tests/fixtures/dataframes.py | 1 +
tests/unit_tests/importexport/api_test.py | 2 +-
tests/unit_tests/key_value/codec_test.py | 2 +-
tests/unit_tests/key_value/utils_test.py | 1 +
tests/unit_tests/legacy_tests.py | 1 +
.../viz/dual_line_to_mixed_chart_test.py | 1 +
.../migrations/viz/heatmap_v1_v2_test.py | 1 +
.../viz/nvd3_area_chart_to_echarts_test.py | 1 +
.../viz/nvd3_bubble_chart_to_echarts_test.py | 1 +
.../viz/nvd3_line_chart_to_echarts_test.py | 1 +
.../migrations/viz/pivot_table_v1_v2_test.py | 1 +
.../migrations/viz/time_related_fields_test.py | 1 +
tests/unit_tests/migrations/viz/utils.py | 1 +
tests/unit_tests/models/core_test.py | 2 +-
tests/unit_tests/models/sql_lab_test.py | 2 +-
tests/unit_tests/notifications/slack_tests.py | 2 +-
.../pandas_postprocessing/test_contribution.py | 2 +-
.../unit_tests/pandas_postprocessing/test_pivot.py | 2 +-
.../pandas_postprocessing/test_resample.py | 2 +-
.../unit_tests/pandas_postprocessing/test_sort.py | 2 +-
tests/unit_tests/pandas_postprocessing/utils.py | 1 +
tests/unit_tests/reports/schemas_test.py | 2 +-
tests/unit_tests/result_set_test.py | 2 +-
tests/unit_tests/scripts/docker_build.py | 1 +
.../unit_tests/scripts/tag_latest_release_test.py | 1 +
tests/unit_tests/security/manager_test.py | 2 +-
tests/unit_tests/sql_lab_test.py | 2 +-
tests/unit_tests/sql_parse_tests.py | 2 +-
tests/unit_tests/tasks/test_async_queries.py | 2 +-
tests/unit_tests/tasks/test_cron_util.py | 2 +-
tests/unit_tests/tasks/test_utils.py | 3 +-
tests/unit_tests/thumbnails/test_digest.py | 3 +-
tests/unit_tests/utils/date_parser_tests.py | 4 +--
tests/unit_tests/utils/docker.py | 1 +
tests/unit_tests/utils/lock_tests.py | 2 +-
tests/unit_tests/utils/test_core.py | 3 +-
tests/unit_tests/utils/test_decorators.py | 4 +--
tests/unit_tests/utils/urls_tests.py | 1 +
763 files changed, 1253 insertions(+), 626 deletions(-)
diff --git a/RELEASING/changelog.py b/RELEASING/changelog.py
index 80ff98cba6..84875a5051 100644
--- a/RELEASING/changelog.py
+++ b/RELEASING/changelog.py
@@ -13,17 +13,18 @@
# 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 collections.abc import Iterator
import csv as lib_csv
+from dataclasses import dataclass
import os
import re
import sys
-from collections.abc import Iterator
-from dataclasses import dataclass
from typing import Any, Optional, Union
import click
from click.core import Context
+
try:
from github import BadCredentialsException, Github, PullRequest, Repository
except ModuleNotFoundError:
diff --git a/RELEASING/generate_email.py b/RELEASING/generate_email.py
index ac9ca4a27c..61cd0eebcb 100755
--- a/RELEASING/generate_email.py
+++ b/RELEASING/generate_email.py
@@ -19,6 +19,7 @@ from typing import Any
from click.core import Context
+
try:
import jinja2
except ModuleNotFoundError:
diff --git a/RELEASING/verify_release.py b/RELEASING/verify_release.py
index 546bb308d4..da2e6c8f57 100755
--- a/RELEASING/verify_release.py
+++ b/RELEASING/verify_release.py
@@ -23,6 +23,7 @@ from typing import Optional
import requests
+
# Part 1: Verify SHA512 hash - this is the same as running `shasum -a 512 {release}` and comparing it against `{release}.sha512`
diff --git a/docker/pythonpath_dev/superset_config.py b/docker/pythonpath_dev/superset_config.py
index 005cc600ae..9005c62fc3 100644
--- a/docker/pythonpath_dev/superset_config.py
+++ b/docker/pythonpath_dev/superset_config.py
@@ -26,6 +26,7 @@ import os
from celery.schedules import crontab
from flask_caching.backends.filesystemcache import FileSystemCache
+
logger = logging.getLogger()
DATABASE_DIALECT = os.getenv("DATABASE_DIALECT")
diff --git a/pyproject.toml b/pyproject.toml
index 19d2319064..205a5e7276 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -424,6 +424,7 @@ exclude = [
"venv",
]
+
# Same as Black.
line-length = 88
indent-width = 4
@@ -438,6 +439,8 @@ target-version = "py310"
select = ["E4", "E7", "E9", "F"]
ignore = []
+extend-select = ["I"]
+
# Allow fix for all enabled rules (when `--fix`) is provided.
fixable = ["ALL"]
unfixable = []
@@ -445,6 +448,22 @@ unfixable = []
# Allow unused variables when underscore-prefixed.
dummy-variable-rgx = "^(_+|(_+[a-zA-Z0-9_]*[a-zA-Z0-9]+?))$"
+[tool.ruff.lint.isort]
+case-sensitive = false
+combine-as-imports = true
+force-sort-within-sections = true
+known-first-party = []
+known-third-party = []
+lines-after-imports = 2
+order-by-type = false
+section-order = [
+ "future",
+ "standard-library",
+ "third-party",
+ "first-party",
+ "local-folder"
+]
+
[tool.ruff.format]
# Like Black, use double quotes for strings.
quote-style = "double"
diff --git a/scripts/benchmark_migration.py b/scripts/benchmark_migration.py
index 90d94853dc..576b43e2f9 100644
--- a/scripts/benchmark_migration.py
+++ b/scripts/benchmark_migration.py
@@ -14,14 +14,14 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
-import importlib.util
-import logging
-import re
-import time
from collections import defaultdict
from graphlib import TopologicalSorter
+import importlib.util
from inspect import getsource
+import logging
from pathlib import Path
+import re
+import time
from types import ModuleType
from typing import Any
@@ -36,6 +36,7 @@ from sqlalchemy.ext.automap import automap_base
from superset import db
from superset.utils.mock_data import add_sample_rows
+
logger = logging.getLogger(__name__)
diff --git a/scripts/build_docker.py b/scripts/build_docker.py
index 023b00491a..03695cec87 100755
--- a/scripts/build_docker.py
+++ b/scripts/build_docker.py
@@ -23,6 +23,7 @@ from textwrap import dedent
import click
+
REPO = "apache/superset"
CACHE_REPO = f"{REPO}-cache"
BASE_PY_IMAGE = "3.10-slim-bookworm"
diff --git a/scripts/cancel_github_workflows.py b/scripts/cancel_github_workflows.py
index fcf3bc4942..5fbd2c4921 100755
--- a/scripts/cancel_github_workflows.py
+++ b/scripts/cancel_github_workflows.py
@@ -33,14 +33,15 @@ Example:
./cancel_github_workflows.py 1024 --include-last
"""
-import os
from collections.abc import Iterable, Iterator
+import os
from typing import Any, Literal, Optional, Union
import click
-import requests
from click.exceptions import ClickException
from dateutil import parser
+import requests
+
github_token = os.environ.get("GITHUB_TOKEN")
github_repo = os.environ.get("GITHUB_REPOSITORY", "apache/superset")
diff --git a/scripts/change_detector.py b/scripts/change_detector.py
index 4c953555fd..01b709e41a 100755
--- a/scripts/change_detector.py
+++ b/scripts/change_detector.py
@@ -23,6 +23,7 @@ import subprocess
from typing import List
from urllib.request import Request, urlopen
+
# Define patterns for each group of files you're interested in
PATTERNS = {
"python": [
diff --git a/scripts/erd/erd.py b/scripts/erd/erd.py
index d49940feb5..6d260f97a2 100644
--- a/scripts/erd/erd.py
+++ b/scripts/erd/erd.py
@@ -20,10 +20,10 @@ Entity-Relationship Diagram (ERD) from SQLAlchemy
and onto a plantuml file.
"""
-import json
-import os
from collections import defaultdict
from collections.abc import Iterable
+import json
+import os
from typing import Any, Optional
import click
@@ -31,6 +31,7 @@ import jinja2
from superset import db
+
GROUPINGS: dict[str, Iterable[str]] = {
"Core": [
"css_templates",
diff --git a/setup.py b/setup.py
index 00b8d22e2a..207d425335 100644
--- a/setup.py
+++ b/setup.py
@@ -20,6 +20,7 @@ import subprocess
from setuptools import find_packages, setup
+
BASE_DIR = os.path.abspath(os.path.dirname(__file__))
PACKAGE_JSON = os.path.join(BASE_DIR, "superset-frontend", "package.json")
diff --git a/superset/__init__.py b/superset/__init__.py
index e68f60ac6a..abf665d0cb 100644
--- a/superset/__init__.py
+++ b/superset/__init__.py
@@ -33,6 +33,7 @@ from superset.extensions import (
)
from superset.security import SupersetSecurityManager # noqa: F401
+
# All of the fields located here should be considered legacy. The correct way
# to declare "global" dependencies is to define it in extensions.py,
# then initialize it in app.create_app(). These fields will be removed
diff --git a/superset/advanced_data_type/api.py b/superset/advanced_data_type/api.py
index c96c54157c..b0862ba814 100644
--- a/superset/advanced_data_type/api.py
+++ b/superset/advanced_data_type/api.py
@@ -29,6 +29,7 @@ from superset.advanced_data_type.types import AdvancedDataTypeResponse
from superset.extensions import event_logger
from superset.views.base_api import BaseSupersetApi
+
config = app.config
ADVANCED_DATA_TYPES = config["ADVANCED_DATA_TYPES"]
diff --git a/superset/advanced_data_type/plugins/internet_port.py b/superset/advanced_data_type/plugins/internet_port.py
index 1af8e847ac..10f58c25d6 100644
--- a/superset/advanced_data_type/plugins/internet_port.py
+++ b/superset/advanced_data_type/plugins/internet_port.py
@@ -26,6 +26,7 @@ from superset.advanced_data_type.types import (
)
from superset.utils.core import FilterOperator, FilterStringOperators
+
port_conversion_dict: dict[str, list[int]] = {
"http": [80],
"ssh": [22],
diff --git a/superset/advanced_data_type/schemas.py b/superset/advanced_data_type/schemas.py
index d94fd19873..767afaa726 100644
--- a/superset/advanced_data_type/schemas.py
+++ b/superset/advanced_data_type/schemas.py
@@ -20,6 +20,7 @@ Schemas for advanced data types
from marshmallow import fields, Schema
+
advanced_data_type_convert_schema = {
"type": "object",
"properties": {
diff --git a/superset/annotation_layers/annotations/api.py b/superset/annotation_layers/annotations/api.py
index 0be6efbfa9..ae509125df 100644
--- a/superset/annotation_layers/annotations/api.py
+++ b/superset/annotation_layers/annotations/api.py
@@ -50,6 +50,7 @@ from superset.views.base_api import (
statsd_metrics,
)
+
logger = logging.getLogger(__name__)
diff --git a/superset/annotation_layers/annotations/schemas.py b/superset/annotation_layers/annotations/schemas.py
index 7aa553d2a1..c07e372169 100644
--- a/superset/annotation_layers/annotations/schemas.py
+++ b/superset/annotation_layers/annotations/schemas.py
@@ -22,6 +22,7 @@ from marshmallow.validate import Length
from superset.exceptions import SupersetException
from superset.utils import core as utils
+
openapi_spec_methods_override = {
"get": {"get": {"summary": "Get an annotation layer"}},
"get_list": {
diff --git a/superset/annotation_layers/api.py b/superset/annotation_layers/api.py
index 5606e944ef..e92a0d5c73 100644
--- a/superset/annotation_layers/api.py
+++ b/superset/annotation_layers/api.py
@@ -50,6 +50,7 @@ from superset.views.base_api import (
statsd_metrics,
)
+
logger = logging.getLogger(__name__)
diff --git a/superset/annotation_layers/schemas.py b/superset/annotation_layers/schemas.py
index 1992d423fc..2236c1135b 100644
--- a/superset/annotation_layers/schemas.py
+++ b/superset/annotation_layers/schemas.py
@@ -17,6 +17,7 @@
from marshmallow import fields, Schema
from marshmallow.validate import Length
+
openapi_spec_methods_override = {
"get": {"get": {"summary": "Get an annotation layer"}},
"get_list": {
diff --git a/superset/app.py b/superset/app.py
index a2192b8966..909ee2ea4e 100644
--- a/superset/app.py
+++ b/superset/app.py
@@ -23,6 +23,7 @@ from flask import Flask
from superset.initialization import SupersetAppInitializer
+
logger = logging.getLogger(__name__)
diff --git a/superset/async_events/api.py b/superset/async_events/api.py
index 55539d86aa..531d1364e6 100644
--- a/superset/async_events/api.py
+++ b/superset/async_events/api.py
@@ -25,6 +25,7 @@ from superset.async_events.async_query_manager import AsyncQueryTokenException
from superset.extensions import async_query_manager, event_logger
from superset.views.base_api import BaseSupersetApi, statsd_metrics
+
logger = logging.getLogger(__name__)
diff --git a/superset/async_events/async_query_manager.py b/superset/async_events/async_query_manager.py
index 32cf247cf3..a15e5dbded 100644
--- a/superset/async_events/async_query_manager.py
+++ b/superset/async_events/async_query_manager.py
@@ -16,15 +16,16 @@
# under the License.
import json
import logging
-import uuid
from typing import Any, Literal, Optional
+import uuid
+from flask import Flask, Request, request, Response, session
import jwt
import redis
-from flask import Flask, request, Request, Response, session
from superset.utils.core import get_user_id
+
logger = logging.getLogger(__name__)
diff --git a/superset/available_domains/api.py b/superset/available_domains/api.py
index 0b8253d942..fa62842eac 100644
--- a/superset/available_domains/api.py
+++ b/superset/available_domains/api.py
@@ -25,6 +25,7 @@ from superset.constants import MODEL_API_RW_METHOD_PERMISSION_MAP
from superset.extensions import event_logger
from superset.views.base_api import BaseSupersetApi, statsd_metrics
+
logger = logging.getLogger(__name__)
diff --git a/superset/cachekeys/api.py b/superset/cachekeys/api.py
index 3c90dafb72..5c072e21e0 100644
--- a/superset/cachekeys/api.py
+++ b/superset/cachekeys/api.py
@@ -30,6 +30,7 @@ from superset.extensions import cache_manager, db, event_logger, stats_logger_ma
from superset.models.cache import CacheKey
from superset.views.base_api import BaseSupersetModelRestApi, statsd_metrics
+
logger = logging.getLogger(__name__)
diff --git a/superset/charts/api.py b/superset/charts/api.py
index 05eb0ab0c2..ae47b17c90 100644
--- a/superset/charts/api.py
+++ b/superset/charts/api.py
@@ -15,10 +15,10 @@
# specific language governing permissions and limitations
# under the License.
# pylint: disable=too-many-lines
-import json
-import logging
from datetime import datetime
from io import BytesIO
+import json
+import logging
from typing import Any, cast, Optional
from zipfile import is_zipfile, ZipFile
@@ -92,6 +92,7 @@ from superset.views.base_api import (
)
from superset.views.filters import BaseFilterRelatedUsers, FilterRelatedOwners
+
logger = logging.getLogger(__name__)
config = app.config
diff --git a/superset/charts/data/api.py b/superset/charts/data/api.py
index 2e46eb2737..b962755765 100644
--- a/superset/charts/data/api.py
+++ b/superset/charts/data/api.py
@@ -21,11 +21,11 @@ import json
import logging
from typing import Any, TYPE_CHECKING
-import simplejson
from flask import current_app, g, make_response, request, Response
from flask_appbuilder.api import expose, protect
from flask_babel import gettext as _
from marshmallow import ValidationError
+import simplejson
from superset import is_feature_enabled, security_manager
from superset.async_events.async_query_manager import AsyncQueryTokenException
@@ -57,6 +57,7 @@ from superset.utils.decorators import logs_context
from superset.views.base import CsvResponse, generate_download_headers, XlsxResponse
from superset.views.base_api import statsd_metrics
+
if TYPE_CHECKING:
from superset.common.query_context import QueryContext
diff --git a/superset/charts/post_processing.py b/superset/charts/post_processing.py
index ebcae32f8f..7ffd3ca013 100644
--- a/superset/charts/post_processing.py
+++ b/superset/charts/post_processing.py
@@ -29,8 +29,8 @@ for these chart types.
from io import StringIO
from typing import Any, Optional, TYPE_CHECKING, Union
-import pandas as pd
from flask_babel import gettext as __
+import pandas as pd
from superset.common.chart_data import ChartDataResultFormat
from superset.utils.core import (
@@ -39,6 +39,7 @@ from superset.utils.core import (
get_metric_names,
)
+
if TYPE_CHECKING:
from superset.connectors.sqla.models import BaseDatasource
from superset.models.sql_lab import Query
diff --git a/superset/charts/schemas.py b/superset/charts/schemas.py
index 611f7af597..4735b722a2 100644
--- a/superset/charts/schemas.py
+++ b/superset/charts/schemas.py
@@ -37,6 +37,7 @@ from superset.utils.core import (
PostProcessingContributionOrientation,
)
+
if TYPE_CHECKING:
from superset.common.query_context import QueryContext
from superset.common.query_context_factory import QueryContextFactory
diff --git a/superset/cli/examples.py b/superset/cli/examples.py
index 3ce136ada7..e38d99223e 100755
--- a/superset/cli/examples.py
+++ b/superset/cli/examples.py
@@ -21,6 +21,7 @@ from flask.cli import with_appcontext
import superset.utils.database as database_utils
+
logger = logging.getLogger(__name__)
diff --git a/superset/cli/importexport.py b/superset/cli/importexport.py
index 50c8aa78a7..2e71d7443c 100755
--- a/superset/cli/importexport.py
+++ b/superset/cli/importexport.py
@@ -14,22 +14,23 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
-import logging
-import sys
from datetime import datetime
+import logging
from pathlib import Path
+import sys
from typing import Optional
from zipfile import is_zipfile, ZipFile
import click
-import yaml
from flask import g
from flask.cli import with_appcontext
+import yaml
from superset import security_manager
from superset.extensions import db
from superset.utils.core import override_user
+
logger = logging.getLogger(__name__)
diff --git a/superset/cli/lib.py b/superset/cli/lib.py
index 68f6f03831..7223519df0 100755
--- a/superset/cli/lib.py
+++ b/superset/cli/lib.py
@@ -19,6 +19,7 @@ import logging
from superset import config
+
logger = logging.getLogger(__name__)
diff --git a/superset/cli/main.py b/superset/cli/main.py
index aa7e3068f8..430eeecbc7 100755
--- a/superset/cli/main.py
+++ b/superset/cli/main.py
@@ -28,6 +28,7 @@ from superset import app, appbuilder, cli, security_manager
from superset.cli.lib import normalize_token
from superset.extensions import db
+
logger = logging.getLogger(__name__)
diff --git a/superset/cli/test.py b/superset/cli/test.py
index f175acec47..ed0d50df0b 100755
--- a/superset/cli/test.py
+++ b/superset/cli/test.py
@@ -20,8 +20,9 @@ import click
from colorama import Fore
from flask.cli import with_appcontext
-import superset.utils.database as database_utils
from superset import app, security_manager
+import superset.utils.database as database_utils
+
logger = logging.getLogger(__name__)
diff --git a/superset/cli/test_db.py b/superset/cli/test_db.py
index 4b8aebf935..b5ff211548 100644
--- a/superset/cli/test_db.py
+++ b/superset/cli/test_db.py
@@ -17,13 +17,12 @@
from __future__ import annotations
-import sys
from collections import defaultdict
from datetime import datetime
+import sys
from typing import Any, Callable
import click
-import yaml
from rich.console import Console
from sqlalchemy import (
Column,
@@ -39,6 +38,7 @@ from sqlalchemy import (
)
from sqlalchemy.engine import Engine
from sqlalchemy.exc import NoSuchModuleError
+import yaml
from superset.databases.utils import make_url_safe
from superset.db_engine_specs import load_engine_specs
@@ -52,6 +52,7 @@ from superset.db_engine_specs.lib import (
NICE_TO_HAVE_FEATURES,
)
+
metadata_obj = MetaData()
user = Table(
diff --git a/superset/cli/thumbnails.py b/superset/cli/thumbnails.py
index 0dd8edfb13..859fa379a0 100755
--- a/superset/cli/thumbnails.py
+++ b/superset/cli/thumbnails.py
@@ -17,12 +17,13 @@
import logging
from typing import Union
-import click
from celery.utils.abstract import CallableTask
+import click
from flask.cli import with_appcontext
from superset.extensions import db
+
logger = logging.getLogger(__name__)
diff --git a/superset/cli/update.py b/superset/cli/update.py
index 9ff1f3bf58..d6487bf38f 100755
--- a/superset/cli/update.py
+++ b/superset/cli/update.py
@@ -20,9 +20,9 @@ import os
import sys
from typing import Optional
-import click
from apispec import APISpec
from apispec.ext.marshmallow import MarshmallowPlugin
+import click
from flask import current_app
from flask.cli import with_appcontext
from flask_appbuilder import Model
@@ -32,6 +32,7 @@ from flask_appbuilder.api.manager import resolver
import superset.utils.database as database_utils
from superset.utils.encrypt import SecretsMigrator
+
logger = logging.getLogger(__name__)
diff --git a/superset/columns/models.py b/superset/columns/models.py
index 142e3d6723..ac7ce76d17 100644
--- a/superset/columns/models.py
+++ b/superset/columns/models.py
@@ -24,8 +24,8 @@ tables, metrics, and datasets were also introduced.
These models are not fully implemented, and shouldn't be used yet.
"""
-import sqlalchemy as sa
from flask_appbuilder import Model
+import sqlalchemy as sa
from superset.models.helpers import (
AuditMixinNullable,
@@ -33,6 +33,7 @@ from superset.models.helpers import (
ImportExportMixin,
)
+
UNKNOWN_TYPE = "UNKNOWN"
diff --git a/superset/commands/annotation_layer/annotation/create.py b/superset/commands/annotation_layer/annotation/create.py
index feed6162ca..a27d038ac3 100644
--- a/superset/commands/annotation_layer/annotation/create.py
+++ b/superset/commands/annotation_layer/annotation/create.py
@@ -14,8 +14,8 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
-import logging
from datetime import datetime
+import logging
from typing import Any, Optional
from flask_appbuilder.models.sqla import Model
@@ -32,6 +32,7 @@ from superset.commands.base import BaseCommand
from superset.daos.annotation_layer import AnnotationDAO, AnnotationLayerDAO
from superset.daos.exceptions import DAOCreateFailedError
+
logger = logging.getLogger(__name__)
diff --git a/superset/commands/annotation_layer/annotation/delete.py b/superset/commands/annotation_layer/annotation/delete.py
index 3f48ae2ceb..6e1ff74adc 100644
--- a/superset/commands/annotation_layer/annotation/delete.py
+++ b/superset/commands/annotation_layer/annotation/delete.py
@@ -26,6 +26,7 @@ from superset.daos.annotation_layer import AnnotationDAO
from superset.daos.exceptions import DAODeleteFailedError
from superset.models.annotations import Annotation
+
logger = logging.getLogger(__name__)
diff --git a/superset/commands/annotation_layer/annotation/update.py b/superset/commands/annotation_layer/annotation/update.py
index 9ba07fdcd6..42a9531959 100644
--- a/superset/commands/annotation_layer/annotation/update.py
+++ b/superset/commands/annotation_layer/annotation/update.py
@@ -14,8 +14,8 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
-import logging
from datetime import datetime
+import logging
from typing import Any, Optional
from flask_appbuilder.models.sqla import Model
@@ -34,6 +34,7 @@ from superset.daos.annotation_layer import AnnotationDAO, AnnotationLayerDAO
from superset.daos.exceptions import DAOUpdateFailedError
from superset.models.annotations import Annotation
+
logger = logging.getLogger(__name__)
diff --git a/superset/commands/annotation_layer/create.py b/superset/commands/annotation_layer/create.py
index 6b87ad5703..b68d369cb5 100644
--- a/superset/commands/annotation_layer/create.py
+++ b/superset/commands/annotation_layer/create.py
@@ -29,6 +29,7 @@ from superset.commands.base import BaseCommand
from superset.daos.annotation_layer import AnnotationLayerDAO
from superset.daos.exceptions import DAOCreateFailedError
+
logger = logging.getLogger(__name__)
diff --git a/superset/commands/annotation_layer/delete.py b/superset/commands/annotation_layer/delete.py
index a75ee42b77..435ce5e08b 100644
--- a/superset/commands/annotation_layer/delete.py
+++ b/superset/commands/annotation_layer/delete.py
@@ -27,6 +27,7 @@ from superset.daos.annotation_layer import AnnotationLayerDAO
from superset.daos.exceptions import DAODeleteFailedError
from superset.models.annotations import AnnotationLayer
+
logger = logging.getLogger(__name__)
diff --git a/superset/commands/annotation_layer/update.py b/superset/commands/annotation_layer/update.py
index d15440882b..f5b47e0f68 100644
--- a/superset/commands/annotation_layer/update.py
+++ b/superset/commands/annotation_layer/update.py
@@ -31,6 +31,7 @@ from superset.daos.annotation_layer import AnnotationLayerDAO
from superset.daos.exceptions import DAOUpdateFailedError
from superset.models.annotations import AnnotationLayer
+
logger = logging.getLogger(__name__)
diff --git a/superset/commands/chart/create.py b/superset/commands/chart/create.py
index 2b251029c3..574070835b 100644
--- a/superset/commands/chart/create.py
+++ b/superset/commands/chart/create.py
@@ -14,8 +14,8 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
-import logging
from datetime import datetime
+import logging
from typing import Any, Optional
from flask import g
@@ -35,6 +35,7 @@ from superset.daos.chart import ChartDAO
from superset.daos.dashboard import DashboardDAO
from superset.daos.exceptions import DAOCreateFailedError
+
logger = logging.getLogger(__name__)
diff --git a/superset/commands/chart/data/create_async_job_command.py b/superset/commands/chart/data/create_async_job_command.py
index da126277ee..0edf34cb4c 100644
--- a/superset/commands/chart/data/create_async_job_command.py
+++ b/superset/commands/chart/data/create_async_job_command.py
@@ -21,6 +21,7 @@ from flask import Request
from superset.extensions import async_query_manager
+
logger = logging.getLogger(__name__)
diff --git a/superset/commands/chart/data/get_data_command.py b/superset/commands/chart/data/get_data_command.py
index ad53a03f28..2ab1686dae 100644
--- a/superset/commands/chart/data/get_data_command.py
+++ b/superset/commands/chart/data/get_data_command.py
@@ -27,6 +27,7 @@ from superset.commands.chart.exceptions import (
from superset.common.query_context import QueryContext
from superset.exceptions import CacheLoadError
+
logger = logging.getLogger(__name__)
diff --git a/superset/commands/chart/delete.py b/superset/commands/chart/delete.py
index 8694ae1feb..ccf83065c6 100644
--- a/superset/commands/chart/delete.py
+++ b/superset/commands/chart/delete.py
@@ -33,6 +33,7 @@ from superset.daos.report import ReportScheduleDAO
from superset.exceptions import SupersetSecurityException
from superset.models.slice import Slice
+
logger = logging.getLogger(__name__)
diff --git a/superset/commands/chart/importers/dispatcher.py b/superset/commands/chart/importers/dispatcher.py
index 6d2d31ccf4..de9dee1cf3 100644
--- a/superset/commands/chart/importers/dispatcher.py
+++ b/superset/commands/chart/importers/dispatcher.py
@@ -25,6 +25,7 @@ from superset.commands.chart.importers import v1
from superset.commands.exceptions import CommandInvalidError
from superset.commands.importers.exceptions import IncorrectVersionError
+
logger = logging.getLogger(__name__)
command_versions = [
diff --git a/superset/commands/chart/importers/v1/utils.py b/superset/commands/chart/importers/v1/utils.py
index f1b38e7ddc..bcf19b077f 100644
--- a/superset/commands/chart/importers/v1/utils.py
+++ b/superset/commands/chart/importers/v1/utils.py
@@ -16,8 +16,8 @@
# under the License.
import copy
-import json
from inspect import isclass
+import json
from typing import Any
from superset import db, security_manager
diff --git a/superset/commands/chart/update.py b/superset/commands/chart/update.py
index 178344634e..916d9d7e26 100644
--- a/superset/commands/chart/update.py
+++ b/superset/commands/chart/update.py
@@ -14,8 +14,8 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
-import logging
from datetime import datetime
+import logging
from typing import Any, Optional
from flask import g
@@ -39,6 +39,7 @@ from superset.daos.exceptions import DAOUpdateFailedError
from superset.exceptions import SupersetSecurityException
from superset.models.slice import Slice
+
logger = logging.getLogger(__name__)
diff --git a/superset/commands/chart/warm_up_cache.py b/superset/commands/chart/warm_up_cache.py
index 2e5c0ac3a3..86dcb05742 100644
--- a/superset/commands/chart/warm_up_cache.py
+++ b/superset/commands/chart/warm_up_cache.py
@@ -18,8 +18,8 @@
from typing import Any, Optional, Union
-import simplejson as json
from flask import g
+import simplejson as json
from superset.commands.base import BaseCommand
from superset.commands.chart.data.get_data_command import ChartDataCommand
diff --git a/superset/commands/css/delete.py b/superset/commands/css/delete.py
index b8362f6b46..872e7643ec 100644
--- a/superset/commands/css/delete.py
+++ b/superset/commands/css/delete.py
@@ -26,6 +26,7 @@ from superset.daos.css import CssTemplateDAO
from superset.daos.exceptions import DAODeleteFailedError
from superset.models.core import CssTemplate
+
logger = logging.getLogger(__name__)
diff --git a/superset/commands/dashboard/create.py b/superset/commands/dashboard/create.py
index 1745391238..5111750bf9 100644
--- a/superset/commands/dashboard/create.py
+++ b/superset/commands/dashboard/create.py
@@ -30,6 +30,7 @@ from superset.commands.utils import populate_roles
from superset.daos.dashboard import DashboardDAO
from superset.daos.exceptions import DAOCreateFailedError
+
logger = logging.getLogger(__name__)
diff --git a/superset/commands/dashboard/delete.py b/superset/commands/dashboard/delete.py
index 569d05dac7..e0a78c3d0a 100644
--- a/superset/commands/dashboard/delete.py
+++ b/superset/commands/dashboard/delete.py
@@ -33,6 +33,7 @@ from superset.daos.report import ReportScheduleDAO
from superset.exceptions import SupersetSecurityException
from superset.models.dashboard import Dashboard
+
logger = logging.getLogger(__name__)
diff --git a/superset/commands/dashboard/importers/dispatcher.py b/superset/commands/dashboard/importers/dispatcher.py
index 061558cce9..58cef3fa05 100644
--- a/superset/commands/dashboard/importers/dispatcher.py
+++ b/superset/commands/dashboard/importers/dispatcher.py
@@ -25,6 +25,7 @@ from superset.commands.dashboard.importers import v0, v1
from superset.commands.exceptions import CommandInvalidError
from superset.commands.importers.exceptions import IncorrectVersionError
+
logger = logging.getLogger(__name__)
# list of different import formats supported; v0 should be last because
diff --git a/superset/commands/dashboard/importers/v0.py b/superset/commands/dashboard/importers/v0.py
index 56a2345906..bd97db9703 100644
--- a/superset/commands/dashboard/importers/v0.py
+++ b/superset/commands/dashboard/importers/v0.py
@@ -14,11 +14,11 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
+from copy import copy
+from datetime import datetime
import json
import logging
import time
-from copy import copy
-from datetime import datetime
from typing import Any, Optional
from flask_babel import lazy_gettext as _
@@ -37,6 +37,7 @@ from superset.utils.dashboard_filter_scopes_converter import (
copy_filter_scopes,
)
+
logger = logging.getLogger(__name__)
diff --git a/superset/commands/dashboard/importers/v1/utils.py b/superset/commands/dashboard/importers/v1/utils.py
index 09be75a6ea..7012dd4e22 100644
--- a/superset/commands/dashboard/importers/v1/utils.py
+++ b/superset/commands/dashboard/importers/v1/utils.py
@@ -24,6 +24,7 @@ from superset.commands.exceptions import ImportFailedError
from superset.models.dashboard import Dashboard
from superset.utils.core import get_user
+
logger = logging.getLogger(__name__)
diff --git a/superset/commands/dashboard/permalink/create.py b/superset/commands/dashboard/permalink/create.py
index 3387d432d5..239d2658c3 100644
--- a/superset/commands/dashboard/permalink/create.py
+++ b/superset/commands/dashboard/permalink/create.py
@@ -27,6 +27,7 @@ from superset.key_value.exceptions import KeyValueCodecEncodeException
from superset.key_value.utils import encode_permalink_key, get_deterministic_uuid
from superset.utils.core import get_user_id
+
logger = logging.getLogger(__name__)
diff --git a/superset/commands/dashboard/permalink/get.py b/superset/commands/dashboard/permalink/get.py
index 32efa68881..06732c1f56 100644
--- a/superset/commands/dashboard/permalink/get.py
+++ b/superset/commands/dashboard/permalink/get.py
@@ -32,6 +32,7 @@ from superset.key_value.exceptions import (
)
from superset.key_value.utils import decode_permalink_id
+
logger = logging.getLogger(__name__)
diff --git a/superset/commands/dashboard/update.py b/superset/commands/dashboard/update.py
index b2b11e5f6e..9602442eea 100644
--- a/superset/commands/dashboard/update.py
+++ b/superset/commands/dashboard/update.py
@@ -37,6 +37,7 @@ from superset.exceptions import SupersetSecurityException
from superset.extensions import db
from superset.models.dashboard import Dashboard
+
logger = logging.getLogger(__name__)
diff --git a/superset/commands/database/create.py b/superset/commands/database/create.py
index 4903938eb9..6e0bc58b4d 100644
--- a/superset/commands/database/create.py
+++ b/superset/commands/database/create.py
@@ -44,6 +44,7 @@ from superset.exceptions import SupersetErrorsException
from superset.extensions import db, event_logger, security_manager
from superset.models.core import Database
+
logger = logging.getLogger(__name__)
stats_logger = current_app.config["STATS_LOGGER"]
diff --git a/superset/commands/database/delete.py b/superset/commands/database/delete.py
index ce0775506c..af0f4c3c56 100644
--- a/superset/commands/database/delete.py
+++ b/superset/commands/database/delete.py
@@ -31,6 +31,7 @@ from superset.daos.exceptions import DAODeleteFailedError
from superset.daos.report import ReportScheduleDAO
from superset.models.core import Database
+
logger = logging.getLogger(__name__)
diff --git a/superset/commands/database/importers/dispatcher.py b/superset/commands/database/importers/dispatcher.py
index bdf487a758..7fcdda30aa 100644
--- a/superset/commands/database/importers/dispatcher.py
+++ b/superset/commands/database/importers/dispatcher.py
@@ -25,6 +25,7 @@ from superset.commands.database.importers import v1
from superset.commands.exceptions import CommandInvalidError
from superset.commands.importers.exceptions import IncorrectVersionError
+
logger = logging.getLogger(__name__)
command_versions = [v1.ImportDatabasesCommand]
diff --git a/superset/commands/database/ssh_tunnel/create.py b/superset/commands/database/ssh_tunnel/create.py
index 287accc5aa..9b81edfa2a 100644
--- a/superset/commands/database/ssh_tunnel/create.py
+++ b/superset/commands/database/ssh_tunnel/create.py
@@ -33,6 +33,7 @@ from superset.databases.utils import make_url_safe
from superset.extensions import event_logger
from superset.models.core import Database
+
logger = logging.getLogger(__name__)
diff --git a/superset/commands/database/ssh_tunnel/delete.py b/superset/commands/database/ssh_tunnel/delete.py
index b8919e6d7b..31a1bfd442 100644
--- a/superset/commands/database/ssh_tunnel/delete.py
+++ b/superset/commands/database/ssh_tunnel/delete.py
@@ -28,6 +28,7 @@ from superset.daos.database import SSHTunnelDAO
from superset.daos.exceptions import DAODeleteFailedError
from superset.databases.ssh_tunnel.models import SSHTunnel
+
logger = logging.getLogger(__name__)
diff --git a/superset/commands/database/ssh_tunnel/update.py b/superset/commands/database/ssh_tunnel/update.py
index d0dd14a5b2..b77812b170 100644
--- a/superset/commands/database/ssh_tunnel/update.py
+++ b/superset/commands/database/ssh_tunnel/update.py
@@ -32,6 +32,7 @@ from superset.daos.exceptions import DAOUpdateFailedError
from superset.databases.ssh_tunnel.models import SSHTunnel
from superset.databases.utils import make_url_safe
+
logger = logging.getLogger(__name__)
diff --git a/superset/commands/database/tables.py b/superset/commands/database/tables.py
index 055c0be9ae..b0cb8c5567 100644
--- a/superset/commands/database/tables.py
+++ b/superset/commands/database/tables.py
@@ -31,6 +31,7 @@ from superset.extensions import db, security_manager
from superset.models.core import Database
from superset.utils.core import DatasourceName
+
logger = logging.getLogger(__name__)
diff --git a/superset/commands/database/test_connection.py b/superset/commands/database/test_connection.py
index 6bf69bbb87..a60f216cef 100644
--- a/superset/commands/database/test_connection.py
+++ b/superset/commands/database/test_connection.py
@@ -14,9 +14,9 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
+from contextlib import closing
import logging
import sqlite3
-from contextlib import closing
from typing import Any, Optional
from flask import current_app as app
@@ -49,6 +49,7 @@ from superset.extensions import event_logger
from superset.models.core import Database
from superset.utils.ssh_tunnel import unmask_password_info
+
logger = logging.getLogger(__name__)
diff --git a/superset/commands/database/update.py b/superset/commands/database/update.py
index b057cb300e..81abde0e3e 100644
--- a/superset/commands/database/update.py
+++ b/superset/commands/database/update.py
@@ -46,6 +46,7 @@ from superset.extensions import db, security_manager
from superset.models.core import Database
from superset.utils.core import DatasourceType
+
logger = logging.getLogger(__name__)
diff --git a/superset/commands/database/uploaders/base.py b/superset/commands/database/uploaders/base.py
index a546ad7d08..e48ebfb60b 100644
--- a/superset/commands/database/uploaders/base.py
+++ b/superset/commands/database/uploaders/base.py
@@ -15,12 +15,12 @@
# specific language governing permissions and limitations
# under the License.
-import logging
from abc import abstractmethod
+import logging
from typing import Any, Optional, TypedDict
-import pandas as pd
from flask_babel import lazy_gettext as _
+import pandas as pd
from sqlalchemy.exc import SQLAlchemyError
from superset import db
@@ -39,6 +39,7 @@ from superset.sql_parse import Table
from superset.utils.core import get_user
from superset.views.database.validators import schema_allows_file_upload
+
logger = logging.getLogger(__name__)
READ_CHUNK_SIZE = 1000
diff --git a/superset/commands/database/uploaders/csv_reader.py b/superset/commands/database/uploaders/csv_reader.py
index 06ff04f5cf..33b5ccb1a3 100644
--- a/superset/commands/database/uploaders/csv_reader.py
+++ b/superset/commands/database/uploaders/csv_reader.py
@@ -17,12 +17,13 @@
import logging
from typing import Any
-import pandas as pd
from flask_babel import lazy_gettext as _
+import pandas as pd
from superset.commands.database.exceptions import DatabaseUploadFailed
from superset.commands.database.uploaders.base import BaseDataReader, ReaderOptions
+
logger = logging.getLogger(__name__)
READ_CSV_CHUNK_SIZE = 1000
diff --git a/superset/commands/database/uploaders/excel_reader.py b/superset/commands/database/uploaders/excel_reader.py
index 54e312fea9..86f1661401 100644
--- a/superset/commands/database/uploaders/excel_reader.py
+++ b/superset/commands/database/uploaders/excel_reader.py
@@ -17,12 +17,13 @@
import logging
from typing import Any
-import pandas as pd
from flask_babel import lazy_gettext as _
+import pandas as pd
from superset.commands.database.exceptions import DatabaseUploadFailed
from superset.commands.database.uploaders.base import BaseDataReader, ReaderOptions
+
logger = logging.getLogger(__name__)
diff --git a/superset/commands/database/validate.py b/superset/commands/database/validate.py
index e550f51d70..54752cbbf7 100644
--- a/superset/commands/database/validate.py
+++ b/superset/commands/database/validate.py
@@ -14,8 +14,8 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
-import json
from contextlib import closing
+import json
from typing import Any, Optional
from flask_babel import gettext as __
@@ -34,6 +34,7 @@ from superset.errors import ErrorLevel, SupersetError, SupersetErrorType
from superset.extensions import event_logger
from superset.models.core import Database
+
BYPASS_VALIDATION_ENGINES = {"bigquery"}
diff --git a/superset/commands/database/validate_sql.py b/superset/commands/database/validate_sql.py
index 6a93a01473..4735332ec9 100644
--- a/superset/commands/database/validate_sql.py
+++ b/superset/commands/database/validate_sql.py
@@ -37,6 +37,7 @@ from superset.sql_validators import get_validator_by_name
from superset.sql_validators.base import BaseSQLValidator
from superset.utils import core as utils
+
logger = logging.getLogger(__name__)
diff --git a/superset/commands/dataset/columns/delete.py b/superset/commands/dataset/columns/delete.py
index 4739c2520f..774eef6b08 100644
--- a/superset/commands/dataset/columns/delete.py
+++ b/superset/commands/dataset/columns/delete.py
@@ -29,6 +29,7 @@ from superset.daos.dataset import DatasetColumnDAO, DatasetDAO
from superset.daos.exceptions import DAODeleteFailedError
from superset.exceptions import SupersetSecurityException
+
logger = logging.getLogger(__name__)
diff --git a/superset/commands/dataset/create.py b/superset/commands/dataset/create.py
index dace92f911..74912d2afe 100644
--- a/superset/commands/dataset/create.py
+++ b/superset/commands/dataset/create.py
@@ -36,6 +36,7 @@ from superset.exceptions import SupersetSecurityException
from superset.extensions import db, security_manager
from superset.sql_parse import Table
+
logger = logging.getLogger(__name__)
diff --git a/superset/commands/dataset/delete.py b/superset/commands/dataset/delete.py
index 4b7e61ab4c..2dc3be6f7e 100644
--- a/superset/commands/dataset/delete.py
+++ b/superset/commands/dataset/delete.py
@@ -29,6 +29,7 @@ from superset.daos.dataset import DatasetDAO
from superset.daos.exceptions import DAODeleteFailedError
from superset.exceptions import SupersetSecurityException
+
logger = logging.getLogger(__name__)
diff --git a/superset/commands/dataset/duplicate.py b/superset/commands/dataset/duplicate.py
index 850290422e..bd7ada49ca 100644
--- a/superset/commands/dataset/duplicate.py
+++ b/superset/commands/dataset/duplicate.py
@@ -39,6 +39,7 @@ from superset.extensions import db
from superset.models.core import Database
from superset.sql_parse import ParsedQuery
+
logger = logging.getLogger(__name__)
diff --git a/superset/commands/dataset/importers/dispatcher.py b/superset/commands/dataset/importers/dispatcher.py
index 9138d4f971..714f748108 100644
--- a/superset/commands/dataset/importers/dispatcher.py
+++ b/superset/commands/dataset/importers/dispatcher.py
@@ -25,6 +25,7 @@ from superset.commands.dataset.importers import v0, v1
from superset.commands.exceptions import CommandInvalidError
from superset.commands.importers.exceptions import IncorrectVersionError
+
logger = logging.getLogger(__name__)
# list of different import formats supported; v0 should be last because
diff --git a/superset/commands/dataset/importers/v0.py b/superset/commands/dataset/importers/v0.py
index 6c1d79779e..54a16b9362 100644
--- a/superset/commands/dataset/importers/v0.py
+++ b/superset/commands/dataset/importers/v0.py
@@ -18,9 +18,9 @@ import json
import logging
from typing import Any, Callable, Optional
-import yaml
from flask_appbuilder import Model
from sqlalchemy.orm.session import make_transient
+import yaml
from superset import db
from superset.commands.base import BaseCommand
@@ -36,6 +36,7 @@ from superset.connectors.sqla.models import (
from superset.models.core import Database
from superset.utils.dict_import_export import DATABASES_KEY
+
logger = logging.getLogger(__name__)
diff --git a/superset/commands/dataset/importers/v1/utils.py b/superset/commands/dataset/importers/v1/utils.py
index 0d2226f724..777e0a090f 100644
--- a/superset/commands/dataset/importers/v1/utils.py
+++ b/superset/commands/dataset/importers/v1/utils.py
@@ -21,8 +21,8 @@ import re
from typing import Any
from urllib import request
-import pandas as pd
from flask import current_app
+import pandas as pd
from sqlalchemy import BigInteger, Boolean, Date, DateTime, Float, String, Text
from sqlalchemy.exc import MultipleResultsFound
from sqlalchemy.sql.visitors import VisitableType
@@ -35,6 +35,7 @@ from superset.models.core import Database
from superset.sql_parse import Table
from superset.utils.core import get_user
+
logger = logging.getLogger(__name__)
CHUNKSIZE = 512
diff --git a/superset/commands/dataset/metrics/delete.py b/superset/commands/dataset/metrics/delete.py
index b48668852c..131f556ae5 100644
--- a/superset/commands/dataset/metrics/delete.py
+++ b/superset/commands/dataset/metrics/delete.py
@@ -29,6 +29,7 @@ from superset.daos.dataset import DatasetDAO, DatasetMetricDAO
from superset.daos.exceptions import DAODeleteFailedError
from superset.exceptions import SupersetSecurityException
+
logger = logging.getLogger(__name__)
diff --git a/superset/commands/dataset/refresh.py b/superset/commands/dataset/refresh.py
index 5976956d7c..7dbaff3f7a 100644
--- a/superset/commands/dataset/refresh.py
+++ b/superset/commands/dataset/refresh.py
@@ -30,6 +30,7 @@ from superset.connectors.sqla.models import SqlaTable
from superset.daos.dataset import DatasetDAO
from superset.exceptions import SupersetSecurityException
+
logger = logging.getLogger(__name__)
diff --git a/superset/commands/dataset/update.py b/superset/commands/dataset/update.py
index 282c778eb4..4c59b02f50 100644
--- a/superset/commands/dataset/update.py
+++ b/superset/commands/dataset/update.py
@@ -14,8 +14,8 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
-import logging
from collections import Counter
+import logging
from typing import Any, Optional
from flask_appbuilder.models.sqla import Model
@@ -43,6 +43,7 @@ from superset.daos.exceptions import DAOUpdateFailedError
from superset.exceptions import SupersetSecurityException
from superset.sql_parse import Table
+
logger = logging.getLogger(__name__)
diff --git a/superset/commands/explore/form_data/create.py b/superset/commands/explore/form_data/create.py
index e85f840133..6d9389db92 100644
--- a/superset/commands/explore/form_data/create.py
+++ b/superset/commands/explore/form_data/create.py
@@ -30,6 +30,7 @@ from superset.temporary_cache.utils import cache_key
from superset.utils.core import DatasourceType, get_user_id
from superset.utils.schema import validate_json
+
logger = logging.getLogger(__name__)
diff --git a/superset/commands/explore/form_data/delete.py b/superset/commands/explore/form_data/delete.py
index d998f132d6..74007f7e2d 100644
--- a/superset/commands/explore/form_data/delete.py
+++ b/superset/commands/explore/form_data/delete.py
@@ -14,8 +14,8 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
-import logging
from abc import ABC
+import logging
from typing import Optional
from flask import session
@@ -33,6 +33,7 @@ from superset.extensions import cache_manager
from superset.temporary_cache.utils import cache_key
from superset.utils.core import DatasourceType, get_user_id
+
logger = logging.getLogger(__name__)
diff --git a/superset/commands/explore/form_data/get.py b/superset/commands/explore/form_data/get.py
index 0153888d4e..16b0047412 100644
--- a/superset/commands/explore/form_data/get.py
+++ b/superset/commands/explore/form_data/get.py
@@ -14,8 +14,8 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
-import logging
from abc import ABC
+import logging
from typing import Optional
from flask import current_app as app
@@ -29,6 +29,7 @@ from superset.commands.temporary_cache.exceptions import TemporaryCacheGetFailed
from superset.extensions import cache_manager
from superset.utils.core import DatasourceType
+
logger = logging.getLogger(__name__)
diff --git a/superset/commands/explore/form_data/update.py b/superset/commands/explore/form_data/update.py
index fbb6ee0719..81960a46cd 100644
--- a/superset/commands/explore/form_data/update.py
+++ b/superset/commands/explore/form_data/update.py
@@ -14,8 +14,8 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
-import logging
from abc import ABC
+import logging
from typing import Optional
from flask import session
@@ -35,6 +35,7 @@ from superset.temporary_cache.utils import cache_key
from superset.utils.core import DatasourceType, get_user_id
from superset.utils.schema import validate_json
+
logger = logging.getLogger(__name__)
diff --git a/superset/commands/explore/get.py b/superset/commands/explore/get.py
index d0d71c1eec..9f85d7a8dc 100644
--- a/superset/commands/explore/get.py
+++ b/superset/commands/explore/get.py
@@ -14,14 +14,14 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
+from abc import ABC
import contextlib
import logging
-from abc import ABC
from typing import Any, cast, Optional
-import simplejson as json
from flask import request
from flask_babel import lazy_gettext as _
+import simplejson as json
from sqlalchemy.exc import SQLAlchemyError
from superset.commands.base import BaseCommand
@@ -45,6 +45,7 @@ from superset.views.utils import (
sanitize_datasource_data,
)
+
logger = logging.getLogger(__name__)
diff --git a/superset/commands/explore/permalink/create.py b/superset/commands/explore/permalink/create.py
index befb1d5a47..acdcdc8b2b 100644
--- a/superset/commands/explore/permalink/create.py
+++ b/superset/commands/explore/permalink/create.py
@@ -27,6 +27,7 @@ from superset.key_value.exceptions import KeyValueCodecEncodeException
from superset.key_value.utils import encode_permalink_key
from superset.utils.core import DatasourceType
+
logger = logging.getLogger(__name__)
diff --git a/superset/commands/explore/permalink/get.py b/superset/commands/explore/permalink/get.py
index 4c01db1cca..d7466fed9c 100644
--- a/superset/commands/explore/permalink/get.py
+++ b/superset/commands/explore/permalink/get.py
@@ -33,6 +33,7 @@ from superset.key_value.exceptions import (
from superset.key_value.utils import decode_permalink_id
from superset.utils.core import DatasourceType
+
logger = logging.getLogger(__name__)
diff --git a/superset/commands/export/assets.py b/superset/commands/export/assets.py
index ff76dab03d..5f08bcda8f 100644
--- a/superset/commands/export/assets.py
+++ b/superset/commands/export/assets.py
@@ -29,6 +29,7 @@ from superset.commands.dataset.export import ExportDatasetsCommand
from superset.commands.query.export import ExportSavedQueriesCommand
from superset.utils.dict_import_export import EXPORT_VERSION
+
METADATA_FILE_NAME = "metadata.yaml"
diff --git a/superset/commands/export/models.py b/superset/commands/export/models.py
index f46368d532..1a6c197ad3 100644
--- a/superset/commands/export/models.py
+++ b/superset/commands/export/models.py
@@ -19,14 +19,15 @@ from collections.abc import Iterator
from datetime import datetime, timezone
from typing import Callable
-import yaml
from flask_appbuilder import Model
+import yaml
from superset.commands.base import BaseCommand
from superset.commands.exceptions import CommandException
from superset.daos.base import BaseDAO
from superset.utils.dict_import_export import EXPORT_VERSION
+
METADATA_FILE_NAME = "metadata.yaml"
diff --git a/superset/commands/importers/v1/utils.py b/superset/commands/importers/v1/utils.py
index 912a4d1be5..dffa47fb22 100644
--- a/superset/commands/importers/v1/utils.py
+++ b/superset/commands/importers/v1/utils.py
@@ -18,9 +18,9 @@ from pathlib import Path, PurePosixPath
from typing import Any, Optional
from zipfile import ZipFile
-import yaml
from marshmallow import fields, Schema, validate
from marshmallow.exceptions import ValidationError
+import yaml
from superset import db
from superset.commands.importers.exceptions import IncorrectVersionError
@@ -28,6 +28,7 @@ from superset.databases.ssh_tunnel.models import SSHTunnel
from superset.models.core import Database
from superset.utils.core import check_is_safe_zip
+
METADATA_FILE_NAME = "metadata.yaml"
IMPORT_VERSION = "1.0.0"
diff --git a/superset/commands/key_value/create.py b/superset/commands/key_value/create.py
index a39607b588..ccc4fa774c 100644
--- a/superset/commands/key_value/create.py
+++ b/superset/commands/key_value/create.py
@@ -14,8 +14,8 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
-import logging
from datetime import datetime
+import logging
from typing import Any, Optional, Union
from uuid import UUID
@@ -28,6 +28,7 @@ from superset.key_value.models import KeyValueEntry
from superset.key_value.types import Key, KeyValueCodec, KeyValueResource
from superset.utils.core import get_user_id
+
logger = logging.getLogger(__name__)
diff --git a/superset/commands/key_value/delete.py b/superset/commands/key_value/delete.py
index 8b9095c09c..6e9f622a1f 100644
--- a/superset/commands/key_value/delete.py
+++ b/superset/commands/key_value/delete.py
@@ -27,6 +27,7 @@ from superset.key_value.models import KeyValueEntry
from superset.key_value.types import KeyValueResource
from superset.key_value.utils import get_filter
+
logger = logging.getLogger(__name__)
diff --git a/superset/commands/key_value/delete_expired.py b/superset/commands/key_value/delete_expired.py
index 166a9f6f87..5f12d1a3da 100644
--- a/superset/commands/key_value/delete_expired.py
+++ b/superset/commands/key_value/delete_expired.py
@@ -14,8 +14,8 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
-import logging
from datetime import datetime
+import logging
from sqlalchemy import and_
from sqlalchemy.exc import SQLAlchemyError
@@ -26,6 +26,7 @@ from superset.key_value.exceptions import KeyValueDeleteFailedError
from superset.key_value.models import KeyValueEntry
from superset.key_value.types import KeyValueResource
+
logger = logging.getLogger(__name__)
diff --git a/superset/commands/key_value/get.py b/superset/commands/key_value/get.py
index 8a7a250f1c..fb620134b8 100644
--- a/superset/commands/key_value/get.py
+++ b/superset/commands/key_value/get.py
@@ -15,8 +15,8 @@
# specific language governing permissions and limitations
# under the License.
-import logging
from datetime import datetime
+import logging
from typing import Any, Optional, Union
from uuid import UUID
@@ -29,6 +29,7 @@ from superset.key_value.models import KeyValueEntry
from superset.key_value.types import KeyValueCodec, KeyValueResource
from superset.key_value.utils import get_filter
+
logger = logging.getLogger(__name__)
diff --git a/superset/commands/key_value/update.py b/superset/commands/key_value/update.py
index ca940adf60..782a547cee 100644
--- a/superset/commands/key_value/update.py
+++ b/superset/commands/key_value/update.py
@@ -15,8 +15,8 @@
# specific language governing permissions and limitations
# under the License.
-import logging
from datetime import datetime
+import logging
from typing import Any, Optional, Union
from uuid import UUID
@@ -30,6 +30,7 @@ from superset.key_value.types import Key, KeyValueCodec, KeyValueResource
from superset.key_value.utils import get_filter
from superset.utils.core import get_user_id
+
logger = logging.getLogger(__name__)
diff --git a/superset/commands/key_value/upsert.py b/superset/commands/key_value/upsert.py
index 84f02cb9cd..735f89e437 100644
--- a/superset/commands/key_value/upsert.py
+++ b/superset/commands/key_value/upsert.py
@@ -15,8 +15,8 @@
# specific language governing permissions and limitations
# under the License.
-import logging
from datetime import datetime
+import logging
from typing import Any, Optional, Union
from uuid import UUID
@@ -34,6 +34,7 @@ from superset.key_value.types import Key, KeyValueCodec, KeyValueResource
from superset.key_value.utils import get_filter
from superset.utils.core import get_user_id
+
logger = logging.getLogger(__name__)
diff --git a/superset/commands/query/delete.py b/superset/commands/query/delete.py
index 978f30c5c4..3b65545df9 100644
--- a/superset/commands/query/delete.py
+++ b/superset/commands/query/delete.py
@@ -26,6 +26,7 @@ from superset.daos.exceptions import DAODeleteFailedError
from superset.daos.query import SavedQueryDAO
from superset.models.dashboard import Dashboard
+
logger = logging.getLogger(__name__)
diff --git a/superset/commands/query/importers/dispatcher.py b/superset/commands/query/importers/dispatcher.py
index 438ea8351f..68ff53a737 100644
--- a/superset/commands/query/importers/dispatcher.py
+++ b/superset/commands/query/importers/dispatcher.py
@@ -25,6 +25,7 @@ from superset.commands.exceptions import CommandInvalidError
from superset.commands.importers.exceptions import IncorrectVersionError
from superset.commands.query.importers import v1
+
logger = logging.getLogger(__name__)
command_versions = [
diff --git a/superset/commands/report/alert.py b/superset/commands/report/alert.py
index 0e5d5401f7..8ed04812be 100644
--- a/superset/commands/report/alert.py
+++ b/superset/commands/report/alert.py
@@ -22,10 +22,10 @@ from operator import eq, ge, gt, le, lt, ne
from timeit import default_timer
from typing import Any
-import numpy as np
-import pandas as pd
from celery.exceptions import SoftTimeLimitExceeded
from flask_babel import lazy_gettext as _
+import numpy as np
+import pandas as pd
from superset import app, jinja_context, security_manager
from superset.commands.base import BaseCommand
@@ -42,6 +42,7 @@ from superset.tasks.utils import get_executor
from superset.utils.core import override_user
from superset.utils.retries import retry_call
+
logger = logging.getLogger(__name__)
diff --git a/superset/commands/report/base.py b/superset/commands/report/base.py
index 3b2f280816..796776b8b2 100644
--- a/superset/commands/report/base.py
+++ b/superset/commands/report/base.py
@@ -32,6 +32,7 @@ from superset.daos.chart import ChartDAO
from superset.daos.dashboard import DashboardDAO
from superset.reports.models import ReportCreationMethod
+
logger = logging.getLogger(__name__)
diff --git a/superset/commands/report/create.py b/superset/commands/report/create.py
index aa9bfefc6e..7e491e6f45 100644
--- a/superset/commands/report/create.py
+++ b/superset/commands/report/create.py
@@ -42,6 +42,7 @@ from superset.reports.models import (
)
from superset.reports.types import ReportScheduleExtra
+
logger = logging.getLogger(__name__)
diff --git a/superset/commands/report/delete.py b/superset/commands/report/delete.py
index 87ea4b99dd..d6683d5931 100644
--- a/superset/commands/report/delete.py
+++ b/superset/commands/report/delete.py
@@ -29,6 +29,7 @@ from superset.daos.report import ReportScheduleDAO
from superset.exceptions import SupersetSecurityException
from superset.reports.models import ReportSchedule
+
logger = logging.getLogger(__name__)
diff --git a/superset/commands/report/execute.py b/superset/commands/report/execute.py
index 42563c72d7..34bb5c4411 100644
--- a/superset/commands/report/execute.py
+++ b/superset/commands/report/execute.py
@@ -14,14 +14,14 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
+from datetime import datetime, timedelta
import json
import logging
-from datetime import datetime, timedelta
from typing import Any, Optional, Union
from uuid import UUID
-import pandas as pd
from celery.exceptions import SoftTimeLimitExceeded
+import pandas as pd
from superset import app, db, security_manager
from superset.commands.base import BaseCommand
@@ -74,6 +74,7 @@ from superset.utils.pdf import build_pdf_from_screenshots
from superset.utils.screenshots import ChartScreenshot, DashboardScreenshot
from superset.utils.urls import get_url_path
+
logger = logging.getLogger(__name__)
diff --git a/superset/commands/report/log_prune.py b/superset/commands/report/log_prune.py
index f14f7856a1..6a68288a1e 100644
--- a/superset/commands/report/log_prune.py
+++ b/superset/commands/report/log_prune.py
@@ -14,8 +14,8 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
-import logging
from datetime import datetime, timedelta
+import logging
from superset import db
from superset.commands.base import BaseCommand
@@ -24,6 +24,7 @@ from superset.daos.exceptions import DAODeleteFailedError
from superset.daos.report import ReportScheduleDAO
from superset.reports.models import ReportSchedule
+
logger = logging.getLogger(__name__)
diff --git a/superset/commands/report/update.py b/superset/commands/report/update.py
index cb63ec5011..f4543d7416 100644
--- a/superset/commands/report/update.py
+++ b/superset/commands/report/update.py
@@ -38,6 +38,7 @@ from superset.daos.report import ReportScheduleDAO
from superset.exceptions import SupersetSecurityException
from superset.reports.models import ReportSchedule, ReportScheduleType, ReportState
+
logger = logging.getLogger(__name__)
diff --git a/superset/commands/security/create.py b/superset/commands/security/create.py
index 618c733158..da9fe96d03 100644
--- a/superset/commands/security/create.py
+++ b/superset/commands/security/create.py
@@ -27,6 +27,7 @@ from superset.daos.exceptions import DAOCreateFailedError
from superset.daos.security import RLSDAO
from superset.extensions import db
+
logger = logging.getLogger(__name__)
diff --git a/superset/commands/security/delete.py b/superset/commands/security/delete.py
index 2c19c5f89b..3b663c8595 100644
--- a/superset/commands/security/delete.py
+++ b/superset/commands/security/delete.py
@@ -26,6 +26,7 @@ from superset.daos.exceptions import DAODeleteFailedError
from superset.daos.security import RLSDAO
from superset.reports.models import ReportSchedule
+
logger = logging.getLogger(__name__)
diff --git a/superset/commands/security/update.py b/superset/commands/security/update.py
index f3a6cea607..9b057efe0c 100644
--- a/superset/commands/security/update.py
+++ b/superset/commands/security/update.py
@@ -28,6 +28,7 @@ from superset.daos.exceptions import DAOUpdateFailedError
from superset.daos.security import RLSDAO
from superset.extensions import db
+
logger = logging.getLogger(__name__)
diff --git a/superset/commands/sql_lab/estimate.py b/superset/commands/sql_lab/estimate.py
index d319881566..309e3d9146 100644
--- a/superset/commands/sql_lab/estimate.py
+++ b/superset/commands/sql_lab/estimate.py
@@ -29,6 +29,7 @@ from superset.jinja_context import get_template_processor
from superset.models.core import Database
from superset.utils import core as utils
+
config = app.config
SQLLAB_QUERY_COST_ESTIMATE_TIMEOUT = config["SQLLAB_QUERY_COST_ESTIMATE_TIMEOUT"]
stats_logger = config["STATS_LOGGER"]
diff --git a/superset/commands/sql_lab/execute.py b/superset/commands/sql_lab/execute.py
index 533264fb28..7ca7fc89a8 100644
--- a/superset/commands/sql_lab/execute.py
+++ b/superset/commands/sql_lab/execute.py
@@ -42,6 +42,7 @@ from superset.sqllab.exceptions import (
from superset.sqllab.execution_context_convertor import ExecutionContextConvertor
from superset.sqllab.limiting_factor import LimitingFactor
+
if TYPE_CHECKING:
from superset.daos.database import DatabaseDAO
from superset.daos.query import QueryDAO
diff --git a/superset/commands/sql_lab/export.py b/superset/commands/sql_lab/export.py
index aa6050f27f..18dba3225c 100644
--- a/superset/commands/sql_lab/export.py
+++ b/superset/commands/sql_lab/export.py
@@ -19,8 +19,8 @@ from __future__ import annotations
import logging
from typing import Any, cast, TypedDict
-import pandas as pd
from flask_babel import gettext as __
+import pandas as pd
from superset import app, db, results_backend, results_backend_use_msgpack
from superset.commands.base import BaseCommand
@@ -32,6 +32,7 @@ from superset.sqllab.limiting_factor import LimitingFactor
from superset.utils import core as utils, csv
from superset.views.utils import _deserialize_results_payload
+
config = app.config
logger = logging.getLogger(__name__)
diff --git a/superset/commands/sql_lab/results.py b/superset/commands/sql_lab/results.py
index 83c8aa8f6a..435e87e66e 100644
--- a/superset/commands/sql_lab/results.py
+++ b/superset/commands/sql_lab/results.py
@@ -31,6 +31,7 @@ from superset.utils import core as utils
from superset.utils.dates import now_as_float
from superset.views.utils import _deserialize_results_payload
+
config = app.config
SQLLAB_QUERY_COST_ESTIMATE_TIMEOUT = config["SQLLAB_QUERY_COST_ESTIMATE_TIMEOUT"]
stats_logger = config["STATS_LOGGER"]
diff --git a/superset/commands/tag/create.py b/superset/commands/tag/create.py
index ea23b8d59d..aaf967bf22 100644
--- a/superset/commands/tag/create.py
+++ b/superset/commands/tag/create.py
@@ -26,6 +26,7 @@ from superset.daos.tag import TagDAO
from superset.exceptions import SupersetSecurityException
from superset.tags.models import ObjectType, TagType
+
logger = logging.getLogger(__name__)
diff --git a/superset/commands/tag/delete.py b/superset/commands/tag/delete.py
index c4f2239009..f8ff3b5d71 100644
--- a/superset/commands/tag/delete.py
+++ b/superset/commands/tag/delete.py
@@ -30,6 +30,7 @@ from superset.daos.tag import TagDAO
from superset.tags.models import ObjectType
from superset.views.base import DeleteMixin
+
logger = logging.getLogger(__name__)
diff --git a/superset/commands/tag/update.py b/superset/commands/tag/update.py
index 431bf93c4d..f586133b3d 100644
--- a/superset/commands/tag/update.py
+++ b/superset/commands/tag/update.py
@@ -26,6 +26,7 @@ from superset.commands.tag.utils import to_object_type
from superset.daos.tag import TagDAO
from superset.tags.models import Tag
+
logger = logging.getLogger(__name__)
diff --git a/superset/commands/temporary_cache/create.py b/superset/commands/temporary_cache/create.py
index 7d61a78074..a23124b019 100644
--- a/superset/commands/temporary_cache/create.py
+++ b/superset/commands/temporary_cache/create.py
@@ -14,8 +14,8 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
-import logging
from abc import ABC, abstractmethod
+import logging
from sqlalchemy.exc import SQLAlchemyError
@@ -23,6 +23,7 @@ from superset.commands.base import BaseCommand
from superset.commands.temporary_cache.exceptions import TemporaryCacheCreateFailedError
from superset.commands.temporary_cache.parameters import CommandParameters
+
logger = logging.getLogger(__name__)
diff --git a/superset/commands/temporary_cache/delete.py b/superset/commands/temporary_cache/delete.py
index 1cc291dbf6..29f5bb6c07 100644
--- a/superset/commands/temporary_cache/delete.py
+++ b/superset/commands/temporary_cache/delete.py
@@ -14,8 +14,8 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
-import logging
from abc import ABC, abstractmethod
+import logging
from sqlalchemy.exc import SQLAlchemyError
@@ -23,6 +23,7 @@ from superset.commands.base import BaseCommand
from superset.commands.temporary_cache.exceptions import TemporaryCacheDeleteFailedError
from superset.commands.temporary_cache.parameters import CommandParameters
+
logger = logging.getLogger(__name__)
diff --git a/superset/commands/temporary_cache/get.py b/superset/commands/temporary_cache/get.py
index fd18147675..e7101f4d36 100644
--- a/superset/commands/temporary_cache/get.py
+++ b/superset/commands/temporary_cache/get.py
@@ -14,8 +14,8 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
-import logging
from abc import ABC, abstractmethod
+import logging
from typing import Optional
from sqlalchemy.exc import SQLAlchemyError
@@ -24,6 +24,7 @@ from superset.commands.base import BaseCommand
from superset.commands.temporary_cache.exceptions import TemporaryCacheGetFailedError
from superset.commands.temporary_cache.parameters import CommandParameters
+
logger = logging.getLogger(__name__)
diff --git a/superset/commands/temporary_cache/update.py b/superset/commands/temporary_cache/update.py
index 8daaae8618..1b045086e4 100644
--- a/superset/commands/temporary_cache/update.py
+++ b/superset/commands/temporary_cache/update.py
@@ -14,8 +14,8 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
-import logging
from abc import ABC, abstractmethod
+import logging
from typing import Optional
from sqlalchemy.exc import SQLAlchemyError
@@ -24,6 +24,7 @@ from superset.commands.base import BaseCommand
from superset.commands.temporary_cache.exceptions import TemporaryCacheUpdateFailedError
from superset.commands.temporary_cache.parameters import CommandParameters
+
logger = logging.getLogger(__name__)
diff --git a/superset/commands/utils.py b/superset/commands/utils.py
index f01c96ba28..0fe85c7b74 100644
--- a/superset/commands/utils.py
+++ b/superset/commands/utils.py
@@ -31,6 +31,7 @@ from superset.daos.datasource import DatasourceDAO
from superset.daos.exceptions import DatasourceNotFound
from superset.utils.core import DatasourceType, get_user_id
+
if TYPE_CHECKING:
from superset.connectors.sqla.models import BaseDatasource
diff --git a/superset/common/query_actions.py b/superset/common/query_actions.py
index bdbccc78db..50a6df7498 100644
--- a/superset/common/query_actions.py
+++ b/superset/common/query_actions.py
@@ -34,6 +34,7 @@ from superset.utils.core import (
get_time_filter_status,
)
+
if TYPE_CHECKING:
from superset.common.query_context import QueryContext
from superset.common.query_object import QueryObject
diff --git a/superset/common/query_context.py b/superset/common/query_context.py
index 48b5abfbec..97e5ca3655 100644
--- a/superset/common/query_context.py
+++ b/superset/common/query_context.py
@@ -29,6 +29,7 @@ from superset.common.query_context_processor import (
from superset.common.query_object import QueryObject
from superset.models.slice import Slice
+
if TYPE_CHECKING:
from superset.connectors.sqla.models import BaseDatasource
from superset.models.helpers import QueryResult
diff --git a/superset/common/query_context_factory.py b/superset/common/query_context_factory.py
index 5503f3cb05..2c468ee3ed 100644
--- a/superset/common/query_context_factory.py
+++ b/superset/common/query_context_factory.py
@@ -28,6 +28,7 @@ from superset.daos.datasource import DatasourceDAO
from superset.models.slice import Slice
from superset.utils.core import DatasourceDict, DatasourceType, is_adhoc_column
+
if TYPE_CHECKING:
from superset.connectors.sqla.models import BaseDatasource
diff --git a/superset/common/query_context_processor.py b/superset/common/query_context_processor.py
index 55c80386a3..c04ed21900 100644
--- a/superset/common/query_context_processor.py
+++ b/superset/common/query_context_processor.py
@@ -21,9 +21,9 @@ import logging
import re
from typing import Any, ClassVar, TYPE_CHECKING, TypedDict
+from flask_babel import gettext as _
import numpy as np
import pandas as pd
-from flask_babel import gettext as _
from pandas import DateOffset
from superset import app
@@ -68,6 +68,7 @@ from superset.utils.pandas_postprocessing.utils import unescape_separator
from superset.views.utils import get_viz
from superset.viz import viz_types
+
if TYPE_CHECKING:
from superset.common.query_context import QueryContext
from superset.common.query_object import QueryObject
diff --git a/superset/common/query_object.py b/superset/common/query_object.py
index b183532ebf..ce7ffe6655 100644
--- a/superset/common/query_object.py
+++ b/superset/common/query_object.py
@@ -17,9 +17,9 @@
# pylint: disable=invalid-name
from __future__ import annotations
+from datetime import datetime
import json
import logging
-from datetime import datetime
from pprint import pformat
from typing import Any, NamedTuple, TYPE_CHECKING
@@ -48,6 +48,7 @@ from superset.utils.core import (
)
from superset.utils.hashing import md5_sha_from_dict
+
if TYPE_CHECKING:
from superset.connectors.sqla.models import BaseDatasource
diff --git a/superset/common/query_object_factory.py b/superset/common/query_object_factory.py
index fe4cca3f48..71d1657476 100644
--- a/superset/common/query_object_factory.py
+++ b/superset/common/query_object_factory.py
@@ -32,6 +32,7 @@ from superset.utils.core import (
QueryObjectFilterClause,
)
+
if TYPE_CHECKING:
from superset.connectors.sqla.models import BaseDatasource
from superset.daos.datasource import DatasourceDAO
diff --git a/superset/common/utils/dataframe_utils.py b/superset/common/utils/dataframe_utils.py
index 7772ec5850..6e6b6e337c 100644
--- a/superset/common/utils/dataframe_utils.py
+++ b/superset/common/utils/dataframe_utils.py
@@ -22,6 +22,7 @@ from typing import Any, TYPE_CHECKING
import numpy as np
import pandas as pd
+
if TYPE_CHECKING:
from superset.common.query_object import QueryObject
diff --git a/superset/common/utils/query_cache_manager.py b/superset/common/utils/query_cache_manager.py
index d2e6e07437..2443a38e33 100644
--- a/superset/common/utils/query_cache_manager.py
+++ b/superset/common/utils/query_cache_manager.py
@@ -33,6 +33,7 @@ from superset.superset_typing import Column
from superset.utils.cache import set_and_log_cache
from superset.utils.core import error_msg_from_exception, get_stacktrace
+
config = app.config
stats_logger: BaseStatsLogger = config["STATS_LOGGER"]
logger = logging.getLogger(__name__)
diff --git a/superset/config.py b/superset/config.py
index 9388edbe84..db21f34fa6 100644
--- a/superset/config.py
+++ b/superset/config.py
@@ -25,27 +25,27 @@ at the end of this file.
# pylint: disable=too-many-lines
from __future__ import annotations
+from collections import OrderedDict
+from datetime import timedelta
+from email.mime.multipart import MIMEMultipart
import imp # pylint: disable=deprecated-module
+from importlib.resources import files
import importlib.util
import json
import logging
import os
import re
import sys
-from collections import OrderedDict
-from datetime import timedelta
-from email.mime.multipart import MIMEMultipart
-from importlib.resources import files
from typing import Any, Callable, Literal, TYPE_CHECKING, TypedDict
-import click
-import pkg_resources
from celery.schedules import crontab
+import click
from flask import Blueprint
from flask_appbuilder.security.manager import AUTH_DB
from flask_caching.backends.base import BaseCache
from pandas import Series
from pandas._libs.parsers import STR_NA_VALUES
+import pkg_resources
from sqlalchemy.engine.url import URL
from sqlalchemy.orm.query import Query
@@ -64,6 +64,7 @@ from superset.utils.encrypt import SQLAlchemyUtilsAdapter
from superset.utils.log import DBEventLogger
from superset.utils.logging_configurator import DefaultLoggingConfigurator
+
logger = logging.getLogger(__name__)
if TYPE_CHECKING:
diff --git a/superset/connectors/sqla/models.py b/superset/connectors/sqla/models.py
index 719d5af588..a529476fde 100644
--- a/superset/connectors/sqla/models.py
+++ b/superset/connectors/sqla/models.py
@@ -18,26 +18,26 @@
from __future__ import annotations
import builtins
-import dataclasses
-import json
-import logging
-import re
from collections import defaultdict
from collections.abc import Hashable
+import dataclasses
from dataclasses import dataclass, field
from datetime import datetime, timedelta
+import json
from json.decoder import JSONDecodeError
+import logging
+import re
from typing import Any, Callable, cast
import dateutil.parser
-import numpy as np
-import pandas as pd
-import sqlalchemy as sa
from flask_appbuilder import Model
from flask_appbuilder.security.sqla.models import User
from flask_babel import gettext as __, lazy_gettext as _
from jinja2.exceptions import TemplateError
from markupsafe import escape, Markup
+import numpy as np
+import pandas as pd
+import sqlalchemy as sa
from sqlalchemy import (
and_,
Boolean,
@@ -122,6 +122,7 @@ from superset.utils import core as utils
from superset.utils.backports import StrEnum
from superset.utils.core import GenericDataType, MediumText
+
config = app.config
metadata = Model.metadata # pylint: disable=no-member
logger = logging.getLogger(__name__)
diff --git a/superset/connectors/sqla/utils.py b/superset/connectors/sqla/utils.py
index 87b3d5dd3a..f1bd8e267b 100644
--- a/superset/connectors/sqla/utils.py
+++ b/superset/connectors/sqla/utils.py
@@ -16,9 +16,9 @@
# under the License.
from __future__ import annotations
-import logging
from collections.abc import Iterable, Iterator
from functools import lru_cache
+import logging
from typing import Callable, TYPE_CHECKING, TypeVar
from uuid import UUID
@@ -41,6 +41,7 @@ from superset.result_set import SupersetResultSet
from superset.sql_parse import ParsedQuery, Table
from superset.superset_typing import ResultSetColumnType
+
if TYPE_CHECKING:
from superset.connectors.sqla.models import SqlaTable
diff --git a/superset/connectors/sqla/views.py b/superset/connectors/sqla/views.py
index fe2934ec0b..3075fc55fb 100644
--- a/superset/connectors/sqla/views.py
+++ b/superset/connectors/sqla/views.py
@@ -43,6 +43,7 @@ from superset.views.base import (
YamlExportMixin,
)
+
logger = logging.getLogger(__name__)
diff --git a/superset/constants.py b/superset/constants.py
index 28902ded6c..bd664d612e 100644
--- a/superset/constants.py
+++ b/superset/constants.py
@@ -22,6 +22,7 @@ from enum import Enum
from superset.utils.backports import StrEnum
+
USER_AGENT = "Apache Superset"
NULL_STRING = "<NULL>"
diff --git a/superset/css_templates/api.py b/superset/css_templates/api.py
index ac222da66f..d20f7299bd 100644
--- a/superset/css_templates/api.py
+++ b/superset/css_templates/api.py
@@ -37,6 +37,7 @@ from superset.extensions import event_logger
from superset.models.core import CssTemplate
from superset.views.base_api import BaseSupersetModelRestApi, statsd_metrics
+
logger = logging.getLogger(__name__)
diff --git a/superset/daos/annotation_layer.py b/superset/daos/annotation_layer.py
index 1dd992241f..7ac0762ab1 100644
--- a/superset/daos/annotation_layer.py
+++ b/superset/daos/annotation_layer.py
@@ -21,6 +21,7 @@ from superset.daos.base import BaseDAO
from superset.extensions import db
from superset.models.annotations import Annotation, AnnotationLayer
+
logger = logging.getLogger(__name__)
diff --git a/superset/daos/base.py b/superset/daos/base.py
index 889a0780f6..187244a5ad 100644
--- a/superset/daos/base.py
+++ b/superset/daos/base.py
@@ -30,6 +30,7 @@ from superset.daos.exceptions import (
)
from superset.extensions import db
+
T = TypeVar("T", bound=Model)
diff --git a/superset/daos/chart.py b/superset/daos/chart.py
index 844b36b6b3..2035c3b2d1 100644
--- a/superset/daos/chart.py
+++ b/superset/daos/chart.py
@@ -16,8 +16,8 @@
# under the License.
from __future__ import annotations
-import logging
from datetime import datetime
+import logging
from typing import TYPE_CHECKING
from superset.charts.filters import ChartFilter
@@ -27,6 +27,7 @@ from superset.models.core import FavStar, FavStarClassName
from superset.models.slice import Slice
from superset.utils.core import get_user_id
+
if TYPE_CHECKING:
pass
diff --git a/superset/daos/dashboard.py b/superset/daos/dashboard.py
index eef46362e2..35ad62e88b 100644
--- a/superset/daos/dashboard.py
+++ b/superset/daos/dashboard.py
@@ -16,9 +16,9 @@
# under the License.
from __future__ import annotations
+from datetime import datetime
import json
import logging
-from datetime import datetime
from typing import Any
from flask import g
@@ -41,6 +41,7 @@ from superset.models.slice import Slice
from superset.utils.core import get_user_id
from superset.utils.dashboard_filter_scopes_converter import copy_filter_scopes
+
logger = logging.getLogger(__name__)
diff --git a/superset/daos/database.py b/superset/daos/database.py
index 4470ab8f2e..2f53e990d6 100644
--- a/superset/daos/database.py
+++ b/superset/daos/database.py
@@ -30,6 +30,7 @@ from superset.models.sql_lab import TabState
from superset.utils.core import DatasourceType
from superset.utils.ssh_tunnel import unmask_password_info
+
logger = logging.getLogger(__name__)
diff --git a/superset/daos/dataset.py b/superset/daos/dataset.py
index 21c5ae1d0f..e6a5da08d4 100644
--- a/superset/daos/dataset.py
+++ b/superset/daos/dataset.py
@@ -16,8 +16,8 @@
# under the License.
from __future__ import annotations
-import logging
from datetime import datetime
+import logging
from typing import Any
import dateutil.parser
@@ -34,6 +34,7 @@ from superset.sql_parse import Table
from superset.utils.core import DatasourceType
from superset.views.base import DatasourceFilter
+
logger = logging.getLogger(__name__)
diff --git a/superset/daos/datasource.py b/superset/daos/datasource.py
index 0e6058d6ab..aff9141d35 100644
--- a/superset/daos/datasource.py
+++ b/superset/daos/datasource.py
@@ -27,6 +27,7 @@ from superset.models.sql_lab import Query, SavedQuery
from superset.tables.models import Table
from superset.utils.core import DatasourceType
+
logger = logging.getLogger(__name__)
Datasource = Union[Dataset, SqlaTable, Table, Query, SavedQuery]
diff --git a/superset/daos/query.py b/superset/daos/query.py
index ea7c82cc34..6c62c4db18 100644
--- a/superset/daos/query.py
+++ b/superset/daos/query.py
@@ -14,8 +14,8 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
-import logging
from datetime import datetime
+import logging
from typing import Any, Union
from superset import sql_lab
@@ -29,6 +29,7 @@ from superset.queries.saved_queries.filters import SavedQueryFilter
from superset.utils.core import get_user_id
from superset.utils.dates import now_as_float
+
logger = logging.getLogger(__name__)
diff --git a/superset/daos/report.py b/superset/daos/report.py
index b5db391ec4..932ee3354d 100644
--- a/superset/daos/report.py
+++ b/superset/daos/report.py
@@ -16,9 +16,9 @@
# under the License.
from __future__ import annotations
+from datetime import datetime
import json
import logging
-from datetime import datetime
from typing import Any
from sqlalchemy.exc import SQLAlchemyError
@@ -36,6 +36,7 @@ from superset.reports.models import (
)
from superset.utils.core import get_user_id
+
logger = logging.getLogger(__name__)
diff --git a/superset/daos/tag.py b/superset/daos/tag.py
index 46a1d2538f..51c02f6609 100644
--- a/superset/daos/tag.py
+++ b/superset/daos/tag.py
@@ -40,6 +40,7 @@ from superset.tags.models import (
)
from superset.utils.core import get_user_id
+
logger = logging.getLogger(__name__)
diff --git a/superset/daos/user.py b/superset/daos/user.py
index cc6696cbdc..8315fee958 100644
--- a/superset/daos/user.py
+++ b/superset/daos/user.py
@@ -24,6 +24,7 @@ from superset.daos.base import BaseDAO
from superset.extensions import db
from superset.models.user_attributes import UserAttribute
+
logger = logging.getLogger(__name__)
diff --git a/superset/dashboards/api.py b/superset/dashboards/api.py
index 375c384660..0279d684be 100644
--- a/superset/dashboards/api.py
+++ b/superset/dashboards/api.py
@@ -15,11 +15,11 @@
# specific language governing permissions and limitations
# under the License.
# pylint: disable=too-many-lines
+from datetime import datetime
import functools
+from io import BytesIO
import json
import logging
-from datetime import datetime
-from io import BytesIO
from typing import Any, Callable, cast, Optional
from zipfile import is_zipfile, ZipFile
@@ -98,6 +98,7 @@ from superset.views.filters import (
FilterRelatedOwners,
)
+
logger = logging.getLogger(__name__)
diff --git a/superset/dashboards/filter_state/api.py b/superset/dashboards/filter_state/api.py
index d3b6ce8f7a..6492333054 100644
--- a/superset/dashboards/filter_state/api.py
+++ b/superset/dashboards/filter_state/api.py
@@ -26,6 +26,7 @@ from superset.commands.dashboard.filter_state.update import UpdateFilterStateCom
from superset.extensions import event_logger
from superset.temporary_cache.api import TemporaryCacheRestApi
+
logger = logging.getLogger(__name__)
diff --git a/superset/dashboards/permalink/api.py b/superset/dashboards/permalink/api.py
index a6ae2910f4..169ca41622 100644
--- a/superset/dashboards/permalink/api.py
+++ b/superset/dashboards/permalink/api.py
@@ -33,6 +33,7 @@ from superset.extensions import event_logger
from superset.key_value.exceptions import KeyValueAccessDeniedError
from superset.views.base_api import BaseSupersetApi, requires_json
+
logger = logging.getLogger(__name__)
diff --git a/superset/dashboards/schemas.py b/superset/dashboards/schemas.py
index 83c533b86e..06295504ca 100644
--- a/superset/dashboards/schemas.py
+++ b/superset/dashboards/schemas.py
@@ -26,6 +26,7 @@ from superset.exceptions import SupersetException
from superset.tags.models import TagType
from superset.utils import core as utils
+
get_delete_ids_schema = {"type": "array", "items": {"type": "integer"}}
get_export_ids_schema = {"type": "array", "items": {"type": "integer"}}
get_fav_star_ids_schema = {"type": "array", "items": {"type": "integer"}}
diff --git a/superset/databases/api.py b/superset/databases/api.py
index a77019123b..3d42fdd5ec 100644
--- a/superset/databases/api.py
+++ b/superset/databases/api.py
@@ -18,10 +18,10 @@
from __future__ import annotations
-import json
-import logging
from datetime import datetime, timedelta
from io import BytesIO
+import json
+import logging
from typing import Any, cast
from zipfile import is_zipfile, ZipFile
@@ -123,6 +123,7 @@ from superset.views.base_api import (
statsd_metrics,
)
+
logger = logging.getLogger(__name__)
diff --git a/superset/databases/decorators.py b/superset/databases/decorators.py
index b3b4f18342..79bd8444ff 100644
--- a/superset/databases/decorators.py
+++ b/superset/databases/decorators.py
@@ -27,6 +27,7 @@ from superset.sql_parse import Table
from superset.utils.core import parse_js_uri_path_item
from superset.views.base_api import BaseSupersetModelRestApi
+
logger = logging.getLogger(__name__)
diff --git a/superset/databases/schemas.py b/superset/databases/schemas.py
index 1bc0af7472..f3b66f8019 100644
--- a/superset/databases/schemas.py
+++ b/superset/databases/schemas.py
@@ -55,6 +55,7 @@ from superset.models.core import ConfigurationMethod, Database
from superset.security.analytics_db_safety import check_sqlalchemy_uri
from superset.utils.core import markdown, parse_ssl_cert
+
database_schemas_query_schema = {
"type": "object",
"properties": {"force": {"type": "boolean"}},
diff --git a/superset/databases/ssh_tunnel/models.py b/superset/databases/ssh_tunnel/models.py
index 3d1411cc80..4f97266c09 100644
--- a/superset/databases/ssh_tunnel/models.py
+++ b/superset/databases/ssh_tunnel/models.py
@@ -17,9 +17,9 @@
from typing import Any
-import sqlalchemy as sa
from flask import current_app
from flask_appbuilder import Model
+import sqlalchemy as sa
from sqlalchemy.orm import backref, relationship
from sqlalchemy_utils import EncryptedType
@@ -31,6 +31,7 @@ from superset.models.helpers import (
ImportExportMixin,
)
+
app_config = current_app.config
diff --git a/superset/databases/utils.py b/superset/databases/utils.py
index dfd75eb223..abb9e59c9e 100644
--- a/superset/databases/utils.py
+++ b/superset/databases/utils.py
@@ -24,6 +24,7 @@ from sqlalchemy.engine.url import make_url, URL
from superset.commands.database.exceptions import DatabaseInvalidError
from superset.sql_parse import Table
+
if TYPE_CHECKING:
from superset.databases.schemas import (
TableMetadataColumnsResponse,
diff --git a/superset/dataframe.py b/superset/dataframe.py
index 6ce919042f..de5b4a9cbf 100644
--- a/superset/dataframe.py
+++ b/superset/dataframe.py
@@ -23,6 +23,7 @@ import pandas as pd
from superset.utils.core import JS_MAX_INTEGER
+
logger = logging.getLogger(__name__)
diff --git a/superset/datasets/api.py b/superset/datasets/api.py
index f6dedc97eb..5b316a2060 100644
--- a/superset/datasets/api.py
+++ b/superset/datasets/api.py
@@ -15,10 +15,10 @@
# specific language governing permissions and limitations
# under the License.
# pylint: disable=too-many-lines
-import json
-import logging
from datetime import datetime
from io import BytesIO
+import json
+import logging
from typing import Any
from zipfile import is_zipfile, ZipFile
@@ -77,6 +77,7 @@ from superset.views.base_api import (
)
from superset.views.filters import BaseFilterRelatedUsers, FilterRelatedOwners
+
logger = logging.getLogger(__name__)
diff --git a/superset/datasets/columns/api.py b/superset/datasets/columns/api.py
index 90de0f7750..89ec0b244f 100644
--- a/superset/datasets/columns/api.py
+++ b/superset/datasets/columns/api.py
@@ -30,6 +30,7 @@ from superset.connectors.sqla.models import TableColumn
from superset.constants import MODEL_API_RW_METHOD_PERMISSION_MAP
from superset.views.base_api import BaseSupersetModelRestApi, statsd_metrics
+
logger = logging.getLogger(__name__)
diff --git a/superset/datasets/metrics/api.py b/superset/datasets/metrics/api.py
index aa29254fc0..bf4e6aae3e 100644
--- a/superset/datasets/metrics/api.py
+++ b/superset/datasets/metrics/api.py
@@ -30,6 +30,7 @@ from superset.connectors.sqla.models import TableColumn
from superset.constants import MODEL_API_RW_METHOD_PERMISSION_MAP
from superset.views.base_api import BaseSupersetModelRestApi, statsd_metrics
+
logger = logging.getLogger(__name__)
diff --git a/superset/datasets/models.py b/superset/datasets/models.py
index 76e2156e61..f1ebaa55df 100644
--- a/superset/datasets/models.py
+++ b/superset/datasets/models.py
@@ -24,8 +24,8 @@ dataset, new models for columns, metrics, and tables were also introduced.
These models are not fully implemented, and shouldn't be used yet.
"""
-import sqlalchemy as sa
from flask_appbuilder import Model
+import sqlalchemy as sa
from sqlalchemy.orm import backref, relationship
from superset import security_manager
@@ -38,6 +38,7 @@ from superset.models.helpers import (
)
from superset.tables.models import Table
+
dataset_column_association_table = sa.Table(
"sl_dataset_columns",
Model.metadata, # pylint: disable=no-member
diff --git a/superset/datasets/schemas.py b/superset/datasets/schemas.py
index 45a44043a5..a9a104e47e 100644
--- a/superset/datasets/schemas.py
+++ b/superset/datasets/schemas.py
@@ -14,8 +14,8 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
-import json
from datetime import datetime
+import json
from typing import Any
from dateutil.parser import isoparse
@@ -27,6 +27,7 @@ from marshmallow_sqlalchemy import SQLAlchemyAutoSchema
from superset.datasets.models import Dataset
from superset.exceptions import SupersetMarshmallowValidationError
+
get_delete_ids_schema = {"type": "array", "items": {"type": "integer"}}
get_export_ids_schema = {"type": "array", "items": {"type": "integer"}}
diff --git a/superset/datasource/api.py b/superset/datasource/api.py
index 31e8c503ee..d2ca07adb6 100644
--- a/superset/datasource/api.py
+++ b/superset/datasource/api.py
@@ -26,6 +26,7 @@ from superset.superset_typing import FlaskResponse
from superset.utils.core import apply_max_row_limit, DatasourceType
from superset.views.base_api import BaseSupersetApi, statsd_metrics
+
logger = logging.getLogger(__name__)
diff --git a/superset/db_engine_specs/__init__.py b/superset/db_engine_specs/__init__.py
index 2b840087c6..92ab11c21e 100644
--- a/superset/db_engine_specs/__init__.py
+++ b/superset/db_engine_specs/__init__.py
@@ -28,22 +28,23 @@ at all. The classes here will use a common interface to specify all this.
The general idea is to use static classes and an inheritance scheme.
"""
-import inspect
-import logging
-import pkgutil
from collections import defaultdict
from importlib import import_module
+import inspect
+import logging
from pathlib import Path
+import pkgutil
from typing import Any, Optional
-import sqlalchemy.dialects
from importlib_metadata import entry_points
+import sqlalchemy.dialects
from sqlalchemy.engine.default import DefaultDialect
from sqlalchemy.exc import NoSuchModuleError
from superset import app, feature_flag_manager
from superset.db_engine_specs.base import BaseEngineSpec
+
logger = logging.getLogger(__name__)
diff --git a/superset/db_engine_specs/athena.py b/superset/db_engine_specs/athena.py
index c62a2455f6..68b33ee00c 100644
--- a/superset/db_engine_specs/athena.py
+++ b/superset/db_engine_specs/athena.py
@@ -14,8 +14,8 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
-import re
from datetime import datetime
+import re
from re import Pattern
from typing import Any, Optional
@@ -26,6 +26,7 @@ from superset.constants import TimeGrain
from superset.db_engine_specs.base import BaseEngineSpec
from superset.errors import SupersetErrorType
+
SYNTAX_ERROR_REGEX = re.compile(
": mismatched input '(?P<syntax_error>.*?)'. Expecting: "
)
diff --git a/superset/db_engine_specs/base.py b/superset/db_engine_specs/base.py
index 3cc1315129..572c5abe2b 100644
--- a/superset/db_engine_specs/base.py
+++ b/superset/db_engine_specs/base.py
@@ -18,11 +18,10 @@
from __future__ import annotations
+from datetime import datetime
import json
import logging
import re
-import warnings
-from datetime import datetime
from re import Match, Pattern
from typing import (
Any,
@@ -36,10 +35,8 @@ from typing import (
)
from urllib.parse import urlencode, urljoin
from uuid import uuid4
+import warnings
-import pandas as pd
-import requests
-import sqlparse
from apispec import APISpec
from apispec.ext.marshmallow import MarshmallowPlugin
from deprecation import deprecated
@@ -48,6 +45,8 @@ from flask_appbuilder.security.sqla.models import User
from flask_babel import gettext as __, lazy_gettext as _
from marshmallow import fields, Schema
from marshmallow.validate import Range
+import pandas as pd
+import requests
from sqlalchemy import column, select, types
from sqlalchemy.engine.base import Engine
from sqlalchemy.engine.interfaces import Compiled, Dialect
@@ -57,6 +56,7 @@ from sqlalchemy.ext.compiler import compiles
from sqlalchemy.sql import literal_column, quoted_name, text
from sqlalchemy.sql.expression import ColumnClause, Select, TextAsFrom, TextClause
from sqlalchemy.types import TypeEngine
+import sqlparse
from sqlparse.tokens import CTE
from superset import sql_parse
@@ -78,6 +78,7 @@ from superset.utils.hashing import md5_sha_from_str
from superset.utils.network import is_hostname_valid, is_port_open
from superset.utils.oauth2 import encode_oauth2_state
+
if TYPE_CHECKING:
from superset.connectors.sqla.models import TableColumn
from superset.databases.schemas import TableMetadataResponse
diff --git a/superset/db_engine_specs/bigquery.py b/superset/db_engine_specs/bigquery.py
index 8a2612f5b0..468da1330c 100644
--- a/superset/db_engine_specs/bigquery.py
+++ b/superset/db_engine_specs/bigquery.py
@@ -18,20 +18,20 @@
from __future__ import annotations
import contextlib
+from datetime import datetime
import json
import re
-import urllib
-from datetime import datetime
from re import Pattern
from typing import Any, TYPE_CHECKING, TypedDict
+import urllib
-import pandas as pd
from apispec import APISpec
from apispec.ext.marshmallow import MarshmallowPlugin
from deprecation import deprecated
from flask_babel import gettext as __
from marshmallow import fields, Schema
from marshmallow.exceptions import ValidationError
+import pandas as pd
from sqlalchemy import column, types
from sqlalchemy.engine.base import Engine
from sqlalchemy.engine.reflection import Inspector
@@ -50,6 +50,7 @@ from superset.superset_typing import ResultSetColumnType
from superset.utils import core as utils
from superset.utils.hashing import md5_sha_from_str
+
try:
from google.cloud import bigquery
from google.oauth2 import service_account
diff --git a/superset/db_engine_specs/clickhouse.py b/superset/db_engine_specs/clickhouse.py
index 4346f77d64..b70e07a6d3 100644
--- a/superset/db_engine_specs/clickhouse.py
+++ b/superset/db_engine_specs/clickhouse.py
@@ -16,9 +16,9 @@
# under the License.
from __future__ import annotations
+from datetime import datetime
import logging
import re
-from datetime import datetime
from typing import Any, cast, TYPE_CHECKING
from flask import current_app
@@ -43,6 +43,7 @@ from superset.utils.core import GenericDataType
from superset.utils.hashing import md5_sha_from_str
from superset.utils.network import is_hostname_valid, is_port_open
+
if TYPE_CHECKING:
from superset.models.core import Database
diff --git a/superset/db_engine_specs/crate.py b/superset/db_engine_specs/crate.py
index 4952bd5a0d..16ecdf4b7c 100644
--- a/superset/db_engine_specs/crate.py
+++ b/superset/db_engine_specs/crate.py
@@ -24,6 +24,7 @@ from sqlalchemy import types
from superset.constants import TimeGrain
from superset.db_engine_specs.base import BaseEngineSpec
+
if TYPE_CHECKING:
from superset.connectors.sqla.models import TableColumn
diff --git a/superset/db_engine_specs/databend.py b/superset/db_engine_specs/databend.py
index 9789512450..cc345b1723 100644
--- a/superset/db_engine_specs/databend.py
+++ b/superset/db_engine_specs/databend.py
@@ -16,9 +16,9 @@
# under the License.
from __future__ import annotations
+from datetime import datetime
import logging
import re
-from datetime import datetime
from typing import Any, cast, TYPE_CHECKING
from flask_babel import gettext as __
@@ -42,6 +42,7 @@ from superset.utils.core import GenericDataType
from superset.utils.hashing import md5_sha_from_str
from superset.utils.network import is_hostname_valid, is_port_open
+
if TYPE_CHECKING:
from superset.models.core import Database
diff --git a/superset/db_engine_specs/databricks.py b/superset/db_engine_specs/databricks.py
index 4b2f93ca5d..8685cf2de3 100644
--- a/superset/db_engine_specs/databricks.py
+++ b/superset/db_engine_specs/databricks.py
@@ -16,8 +16,8 @@
# under the License.
from __future__ import annotations
-import json
from datetime import datetime
+import json
from typing import Any, TYPE_CHECKING, TypedDict
from apispec import APISpec
@@ -35,6 +35,7 @@ from superset.db_engine_specs.hive import HiveEngineSpec
from superset.errors import ErrorLevel, SupersetError, SupersetErrorType
from superset.utils.network import is_hostname_valid, is_port_open
+
if TYPE_CHECKING:
from superset.models.core import Database
diff --git a/superset/db_engine_specs/db2.py b/superset/db_engine_specs/db2.py
index b2151767d2..145d5e7c8d 100644
--- a/superset/db_engine_specs/db2.py
+++ b/superset/db_engine_specs/db2.py
@@ -23,6 +23,7 @@ from superset.constants import TimeGrain
from superset.db_engine_specs.base import BaseEngineSpec, LimitMethod
from superset.sql_parse import Table
+
logger = logging.getLogger(__name__)
diff --git a/superset/db_engine_specs/doris.py b/superset/db_engine_specs/doris.py
index e502f5bda2..e18896e1a2 100644
--- a/superset/db_engine_specs/doris.py
+++ b/superset/db_engine_specs/doris.py
@@ -29,6 +29,7 @@ from superset.db_engine_specs.mysql import MySQLEngineSpec
from superset.errors import SupersetErrorType
from superset.utils.core import GenericDataType
+
# Regular expressions to catch custom errors
CONNECTION_ACCESS_DENIED_REGEX = re.compile(
"Access denied for user '(?P<username>.*?)'"
diff --git a/superset/db_engine_specs/dremio.py b/superset/db_engine_specs/dremio.py
index 32ffee81a6..35dbec125a 100644
--- a/superset/db_engine_specs/dremio.py
+++ b/superset/db_engine_specs/dremio.py
@@ -26,6 +26,7 @@ from sqlalchemy import types
from superset.constants import TimeGrain
from superset.db_engine_specs.base import BaseEngineSpec
+
if TYPE_CHECKING:
from superset.models.core import Database
diff --git a/superset/db_engine_specs/druid.py b/superset/db_engine_specs/druid.py
index 7cd85ec924..e7ce3024f6 100644
--- a/superset/db_engine_specs/druid.py
+++ b/superset/db_engine_specs/druid.py
@@ -17,9 +17,9 @@
from __future__ import annotations
+from datetime import datetime
import json
import logging
-from datetime import datetime
from typing import Any, TYPE_CHECKING
from sqlalchemy import types
@@ -31,6 +31,7 @@ from superset.db_engine_specs.exceptions import SupersetDBAPIConnectionError
from superset.exceptions import SupersetException
from superset.utils import core as utils
+
if TYPE_CHECKING:
from superset.connectors.sqla.models import TableColumn
from superset.models.core import Database
diff --git a/superset/db_engine_specs/duckdb.py b/superset/db_engine_specs/duckdb.py
index 89c45fb572..5769a595dc 100644
--- a/superset/db_engine_specs/duckdb.py
+++ b/superset/db_engine_specs/duckdb.py
@@ -16,8 +16,8 @@
# under the License.
from __future__ import annotations
-import re
from datetime import datetime
+import re
from re import Pattern
from typing import Any, TYPE_CHECKING, TypedDict
@@ -35,6 +35,7 @@ from superset.databases.utils import make_url_safe
from superset.db_engine_specs.base import BaseEngineSpec
from superset.errors import ErrorLevel, SupersetError, SupersetErrorType
+
if TYPE_CHECKING:
# prevent circular imports
from superset.models.core import Database
diff --git a/superset/db_engine_specs/elasticsearch.py b/superset/db_engine_specs/elasticsearch.py
index 163bc640a6..baa9adc2e4 100644
--- a/superset/db_engine_specs/elasticsearch.py
+++ b/superset/db_engine_specs/elasticsearch.py
@@ -14,8 +14,8 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
-import logging
from datetime import datetime
+import logging
from typing import Any, Optional
from packaging.version import Version
@@ -29,6 +29,7 @@ from superset.db_engine_specs.exceptions import (
SupersetDBAPIProgrammingError,
)
+
logger = logging.getLogger()
diff --git a/superset/db_engine_specs/gsheets.py b/superset/db_engine_specs/gsheets.py
index 7606e93b50..b6d15c3ccb 100644
--- a/superset/db_engine_specs/gsheets.py
+++ b/superset/db_engine_specs/gsheets.py
@@ -24,13 +24,13 @@ import re
from re import Pattern
from typing import Any, TYPE_CHECKING, TypedDict
-import pandas as pd
from apispec import APISpec
from apispec.ext.marshmallow import MarshmallowPlugin
from flask import g
from flask_babel import gettext as __
from marshmallow import fields, Schema
from marshmallow.exceptions import ValidationError
+import pandas as pd
from requests import Session
from shillelagh.adapters.api.gsheets.lib import SCOPES
from shillelagh.exceptions import UnauthenticatedError
@@ -44,6 +44,7 @@ from superset.db_engine_specs.shillelagh import ShillelaghEngineSpec
from superset.errors import ErrorLevel, SupersetError, SupersetErrorType
from superset.exceptions import SupersetException
+
if TYPE_CHECKING:
from superset.models.core import Database
from superset.sql_parse import Table
diff --git a/superset/db_engine_specs/hive.py b/superset/db_engine_specs/hive.py
index 80892b5987..661278e2b2 100644
--- a/superset/db_engine_specs/hive.py
+++ b/superset/db_engine_specs/hive.py
@@ -16,20 +16,20 @@
# under the License.
from __future__ import annotations
+from datetime import datetime
import logging
import os
import re
import tempfile
import time
-from datetime import datetime
from typing import Any, TYPE_CHECKING
from urllib import parse
+from flask import current_app, g
import numpy as np
import pandas as pd
import pyarrow as pa
import pyarrow.parquet as pq
-from flask import current_app, g
from sqlalchemy import Column, text, types
from sqlalchemy.engine.base import Engine
from sqlalchemy.engine.reflection import Inspector
@@ -48,6 +48,7 @@ from superset.models.sql_lab import Query
from superset.sql_parse import ParsedQuery, Table
from superset.superset_typing import ResultSetColumnType
+
if TYPE_CHECKING:
# prevent circular imports
diff --git a/superset/db_engine_specs/impala.py b/superset/db_engine_specs/impala.py
index 1d3ec4e9e5..b69af824fb 100644
--- a/superset/db_engine_specs/impala.py
+++ b/superset/db_engine_specs/impala.py
@@ -17,10 +17,10 @@
from __future__ import annotations
+from datetime import datetime
import logging
import re
import time
-from datetime import datetime
from typing import Any, TYPE_CHECKING
from flask import current_app
@@ -32,6 +32,7 @@ from superset.constants import QUERY_EARLY_CANCEL_KEY, TimeGrain
from superset.db_engine_specs.base import BaseEngineSpec
from superset.models.sql_lab import Query
+
if TYPE_CHECKING:
from superset.models.core import Database
diff --git a/superset/db_engine_specs/kusto.py b/superset/db_engine_specs/kusto.py
index 332d1c1c6a..0a3490a4f4 100644
--- a/superset/db_engine_specs/kusto.py
+++ b/superset/db_engine_specs/kusto.py
@@ -14,8 +14,8 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
-import re
from datetime import datetime
+import re
from typing import Any, Optional
from sqlalchemy import types
diff --git a/superset/db_engine_specs/lib.py b/superset/db_engine_specs/lib.py
index 398d5af647..b955937957 100644
--- a/superset/db_engine_specs/lib.py
+++ b/superset/db_engine_specs/lib.py
@@ -23,6 +23,7 @@ from superset.constants import TimeGrain
from superset.db_engine_specs import load_engine_specs
from superset.db_engine_specs.base import BaseEngineSpec
+
LIMIT_METHODS = {
"FORCE_LIMIT": (
"modifies the query, replacing an existing LIMIT or adding a new one"
diff --git a/superset/db_engine_specs/mssql.py b/superset/db_engine_specs/mssql.py
index d5cc86c859..c7a2d1a06a 100644
--- a/superset/db_engine_specs/mssql.py
+++ b/superset/db_engine_specs/mssql.py
@@ -14,9 +14,9 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
+from datetime import datetime
import logging
import re
-from datetime import datetime
from re import Pattern
from typing import Any, Optional
@@ -29,6 +29,7 @@ from superset.db_engine_specs.base import BaseEngineSpec, LimitMethod
from superset.errors import SupersetErrorType
from superset.utils.core import GenericDataType
+
logger = logging.getLogger(__name__)
diff --git a/superset/db_engine_specs/mysql.py b/superset/db_engine_specs/mysql.py
index fc0606697b..0aea6e70d4 100644
--- a/superset/db_engine_specs/mysql.py
+++ b/superset/db_engine_specs/mysql.py
@@ -15,9 +15,9 @@
# specific language governing permissions and limitations
# under the License.
import contextlib
-import re
from datetime import datetime
from decimal import Decimal
+import re
from re import Pattern
from typing import Any, Callable, Optional
from urllib import parse
@@ -44,6 +44,7 @@ from superset.errors import SupersetErrorType
from superset.models.sql_lab import Query
from superset.utils.core import GenericDataType
+
# Regular expressions to catch custom errors
CONNECTION_ACCESS_DENIED_REGEX = re.compile(
"Access denied for user '(?P<username>.*?)'@'(?P<hostname>.*?)'"
diff --git a/superset/db_engine_specs/ocient.py b/superset/db_engine_specs/ocient.py
index 02d19add82..be28b2b666 100644
--- a/superset/db_engine_specs/ocient.py
+++ b/superset/db_engine_specs/ocient.py
@@ -17,13 +17,14 @@
import contextlib
import re
-import threading
from re import Pattern
+import threading
from typing import Any, Callable, NamedTuple, Optional
from flask_babel import gettext as __
from sqlalchemy.engine.reflection import Inspector
+
with contextlib.suppress(ImportError, RuntimeError): # pyocient may not be installed
# Ensure pyocient inherits Superset's logging level
import geojson
@@ -41,6 +42,7 @@ from superset.errors import SupersetErrorType
from superset.models.core import Database
from superset.models.sql_lab import Query
+
# Regular expressions to catch custom errors
CONNECTION_INVALID_USERNAME_REGEX = re.compile(
diff --git a/superset/db_engine_specs/postgres.py b/superset/db_engine_specs/postgres.py
index ce87aa1f9b..7262b0afd1 100644
--- a/superset/db_engine_specs/postgres.py
+++ b/superset/db_engine_specs/postgres.py
@@ -17,10 +17,10 @@
from __future__ import annotations
+from datetime import datetime
import json
import logging
import re
-from datetime import datetime
from re import Pattern
from typing import Any, TYPE_CHECKING
@@ -40,6 +40,7 @@ from superset.sql_parse import SQLScript
from superset.utils import core as utils
from superset.utils.core import GenericDataType
+
if TYPE_CHECKING:
from superset.models.core import Database # pragma: no cover
diff --git a/superset/db_engine_specs/presto.py b/superset/db_engine_specs/presto.py
index 34c47eb522..c79615bbcb 100644
--- a/superset/db_engine_specs/presto.py
+++ b/superset/db_engine_specs/presto.py
@@ -17,23 +17,23 @@
# pylint: disable=too-many-lines
from __future__ import annotations
-import contextlib
-import logging
-import re
-import time
from abc import ABCMeta
from collections import defaultdict, deque
+import contextlib
from datetime import datetime
+import logging
+import re
from re import Pattern
from textwrap import dedent
+import time
from typing import Any, cast, Optional, TYPE_CHECKING
from urllib import parse
-import pandas as pd
-import simplejson as json
from flask import current_app
from flask_babel import gettext as __, lazy_gettext as _
from packaging.version import Version
+import pandas as pd
+import simplejson as json
from sqlalchemy import Column, literal_column, types
from sqlalchemy.engine.base import Engine
from sqlalchemy.engine.reflection import Inspector
@@ -63,6 +63,7 @@ from superset.superset_typing import ResultSetColumnType
from superset.utils import core as utils
from superset.utils.core import GenericDataType
+
if TYPE_CHECKING:
# prevent circular imports
from superset.models.core import Database
diff --git a/superset/db_engine_specs/redshift.py b/superset/db_engine_specs/redshift.py
index 44281d2c36..59ebe08b70 100644
--- a/superset/db_engine_specs/redshift.py
+++ b/superset/db_engine_specs/redshift.py
@@ -21,8 +21,8 @@ import re
from re import Pattern
from typing import Any
-import pandas as pd
from flask_babel import gettext as __
+import pandas as pd
from sqlalchemy.types import NVARCHAR
from superset.db_engine_specs.base import BasicParametersMixin
@@ -32,6 +32,7 @@ from superset.models.core import Database
from superset.models.sql_lab import Query
from superset.sql_parse import Table
+
logger = logging.getLogger()
# Regular expressions to catch custom errors
diff --git a/superset/db_engine_specs/rockset.py b/superset/db_engine_specs/rockset.py
index 73ca57ac06..40baab489d 100644
--- a/superset/db_engine_specs/rockset.py
+++ b/superset/db_engine_specs/rockset.py
@@ -22,6 +22,7 @@ from sqlalchemy import types
from superset.constants import TimeGrain
from superset.db_engine_specs.base import BaseEngineSpec
+
if TYPE_CHECKING:
from superset.connectors.sqla.models import TableColumn
diff --git a/superset/db_engine_specs/shillelagh.py b/superset/db_engine_specs/shillelagh.py
index 61820824b0..0b13d783f3 100644
--- a/superset/db_engine_specs/shillelagh.py
+++ b/superset/db_engine_specs/shillelagh.py
@@ -20,6 +20,7 @@ from typing import TYPE_CHECKING
from superset.db_engine_specs.sqlite import SqliteEngineSpec
+
if TYPE_CHECKING:
from superset.models.core import Database
diff --git a/superset/db_engine_specs/snowflake.py b/superset/db_engine_specs/snowflake.py
index 83d382cda1..6ba463402e 100644
--- a/superset/db_engine_specs/snowflake.py
+++ b/superset/db_engine_specs/snowflake.py
@@ -14,10 +14,10 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
+from datetime import datetime
import json
import logging
import re
-from datetime import datetime
from re import Pattern
from typing import Any, Optional, TYPE_CHECKING, TypedDict
from urllib import parse
@@ -40,6 +40,7 @@ from superset.db_engine_specs.postgres import PostgresBaseEngineSpec
from superset.errors import ErrorLevel, SupersetError, SupersetErrorType
from superset.models.sql_lab import Query
+
if TYPE_CHECKING:
from superset.models.core import Database
diff --git a/superset/db_engine_specs/spark.py b/superset/db_engine_specs/spark.py
index 95a7bfdaea..6099ae9dfb 100644
--- a/superset/db_engine_specs/spark.py
+++ b/superset/db_engine_specs/spark.py
@@ -19,6 +19,7 @@ from __future__ import annotations
from superset.constants import TimeGrain
from superset.db_engine_specs.hive import HiveEngineSpec
+
time_grain_expressions: dict[str | None, str] = {
None: "{col}",
TimeGrain.SECOND: "date_trunc('second', {col})",
diff --git a/superset/db_engine_specs/sqlite.py b/superset/db_engine_specs/sqlite.py
index dce21dc515..b62f19222f 100644
--- a/superset/db_engine_specs/sqlite.py
+++ b/superset/db_engine_specs/sqlite.py
@@ -17,8 +17,8 @@
from __future__ import annotations
-import re
from datetime import datetime
+import re
from re import Pattern
from typing import Any, TYPE_CHECKING
@@ -30,6 +30,7 @@ from superset.constants import TimeGrain
from superset.db_engine_specs.base import BaseEngineSpec
from superset.errors import SupersetErrorType
+
if TYPE_CHECKING:
# prevent circular imports
from superset.models.core import Database
diff --git a/superset/db_engine_specs/starrocks.py b/superset/db_engine_specs/starrocks.py
index 9f3cfd7644..d02e2c1864 100644
--- a/superset/db_engine_specs/starrocks.py
+++ b/superset/db_engine_specs/starrocks.py
@@ -30,6 +30,7 @@ from superset.db_engine_specs.mysql import MySQLEngineSpec
from superset.errors import SupersetErrorType
from superset.utils.core import GenericDataType
+
# Regular expressions to catch custom errors
CONNECTION_ACCESS_DENIED_REGEX = re.compile(
"Access denied for user '(?P<username>.*?)'"
diff --git a/superset/db_engine_specs/trino.py b/superset/db_engine_specs/trino.py
index 08a38894e6..cd9eaf5291 100644
--- a/superset/db_engine_specs/trino.py
+++ b/superset/db_engine_specs/trino.py
@@ -22,8 +22,8 @@ import threading
import time
from typing import Any, TYPE_CHECKING
-import simplejson as json
from flask import current_app
+import simplejson as json
from sqlalchemy.engine.reflection import Inspector
from sqlalchemy.engine.url import URL
from sqlalchemy.exc import NoSuchTableError
@@ -44,6 +44,7 @@ from superset.sql_parse import Table
from superset.superset_typing import ResultSetColumnType
from superset.utils import core as utils
+
if TYPE_CHECKING:
from superset.models.core import Database
diff --git a/superset/embedded/api.py b/superset/embedded/api.py
index b907422bf5..3d2323cbcd 100644
--- a/superset/embedded/api.py
+++ b/superset/embedded/api.py
@@ -34,6 +34,7 @@ from superset.models.embedded_dashboard import EmbeddedDashboard
from superset.reports.logs.schemas import openapi_spec_methods_override
from superset.views.base_api import BaseSupersetModelRestApi, statsd_metrics
+
logger = logging.getLogger(__name__)
diff --git a/superset/examples/big_data.py b/superset/examples/big_data.py
index ed738d2c96..7b625ff5db 100644
--- a/superset/examples/big_data.py
+++ b/superset/examples/big_data.py
@@ -21,6 +21,7 @@ import sqlalchemy.sql.sqltypes
from superset.utils.mock_data import add_data, ColumnInfo
+
COLUMN_TYPES = [
sqlalchemy.sql.sqltypes.INTEGER(),
sqlalchemy.sql.sqltypes.VARCHAR(length=255),
diff --git a/superset/examples/countries.py b/superset/examples/countries.py
index dff466fb0e..d5f6093d1f 100644
--- a/superset/examples/countries.py
+++ b/superset/examples/countries.py
@@ -19,6 +19,7 @@
# pylint: disable=too-many-lines
from typing import Any, Optional
+
countries: list[dict[str, Any]] = [
{
"name": "Angola",
diff --git a/superset/examples/country_map.py b/superset/examples/country_map.py
index 1741219470..63271e77c9 100644
--- a/superset/examples/country_map.py
+++ b/superset/examples/country_map.py
@@ -20,12 +20,12 @@ import pandas as pd
from sqlalchemy import BigInteger, Date, inspect, String
from sqlalchemy.sql import column
-import superset.utils.database as database_utils
from superset import db
from superset.connectors.sqla.models import SqlMetric
from superset.models.slice import Slice
from superset.sql_parse import Table
from superset.utils.core import DatasourceType
+import superset.utils.database as database_utils
from .helpers import (
get_example_url,
diff --git a/superset/examples/data_loading.py b/superset/examples/data_loading.py
index 9cffa06e85..4e4c2b73be 100644
--- a/superset/examples/data_loading.py
+++ b/superset/examples/data_loading.py
@@ -33,6 +33,7 @@ from .tabbed_dashboard import load_tabbed_dashboard
from .utils import load_examples_from_configs
from .world_bank import load_world_bank_health_n_pop
+
__all__ = [
"load_bart_lines",
"load_big_data",
diff --git a/superset/examples/deck.py b/superset/examples/deck.py
index 326977054e..259e7941ab 100644
--- a/superset/examples/deck.py
+++ b/superset/examples/deck.py
@@ -28,6 +28,7 @@ from .helpers import (
update_slice_ids,
)
+
COLOR_RED = {"r": 205, "g": 0, "b": 3, "a": 0.82}
POSITION_JSON = """\
{
diff --git a/superset/examples/energy.py b/superset/examples/energy.py
index 98b444f9db..331e816783 100644
--- a/superset/examples/energy.py
+++ b/superset/examples/energy.py
@@ -22,12 +22,12 @@ import pandas as pd
from sqlalchemy import Float, inspect, String
from sqlalchemy.sql import column
-import superset.utils.database as database_utils
from superset import db
from superset.connectors.sqla.models import SqlMetric
from superset.models.slice import Slice
from superset.sql_parse import Table
from superset.utils.core import DatasourceType
+import superset.utils.database as database_utils
from .helpers import (
get_example_url,
diff --git a/superset/examples/flights.py b/superset/examples/flights.py
index 4db029519f..633f67718e 100644
--- a/superset/examples/flights.py
+++ b/superset/examples/flights.py
@@ -17,9 +17,9 @@
import pandas as pd
from sqlalchemy import DateTime, inspect
-import superset.utils.database as database_utils
from superset import db
from superset.sql_parse import Table
+import superset.utils.database as database_utils
from .helpers import get_example_url, get_table_connector_registry
diff --git a/superset/examples/helpers.py b/superset/examples/helpers.py
index 76310b4046..78f2598723 100644
--- a/superset/examples/helpers.py
+++ b/superset/examples/helpers.py
@@ -24,6 +24,7 @@ from superset import app, db
from superset.connectors.sqla.models import SqlaTable
from superset.models.slice import Slice
+
BASE_URL = "https://github.com/apache-superset/examples-data/blob/master/"
misc_dash_slices: set[str] = set() # slices assembled in a 'Misc Chart' dashboard
diff --git a/superset/examples/long_lat.py b/superset/examples/long_lat.py
index 4f8de31453..0bc3798f6a 100644
--- a/superset/examples/long_lat.py
+++ b/superset/examples/long_lat.py
@@ -21,11 +21,11 @@ import geohash
import pandas as pd
from sqlalchemy import DateTime, Float, inspect, String
-import superset.utils.database as database_utils
from superset import db
from superset.models.slice import Slice
from superset.sql_parse import Table
from superset.utils.core import DatasourceType
+import superset.utils.database as database_utils
from .helpers import (
get_example_url,
diff --git a/superset/examples/misc_dashboard.py b/superset/examples/misc_dashboard.py
index aa8d037495..633ab7118b 100644
--- a/superset/examples/misc_dashboard.py
+++ b/superset/examples/misc_dashboard.py
@@ -22,6 +22,7 @@ from superset.models.dashboard import Dashboard
from .helpers import update_slice_ids
+
DASH_SLUG = "misc_charts"
diff --git a/superset/examples/paris.py b/superset/examples/paris.py
index 1cd6c84d92..2a981e4122 100644
--- a/superset/examples/paris.py
+++ b/superset/examples/paris.py
@@ -19,9 +19,9 @@ import json
import pandas as pd
from sqlalchemy import inspect, String, Text
-import superset.utils.database as database_utils
from superset import db
from superset.sql_parse import Table
+import superset.utils.database as database_utils
from .helpers import get_example_url, get_table_connector_registry
diff --git a/superset/examples/random_time_series.py b/superset/examples/random_time_series.py
index ec232995fa..32e26b0288 100644
--- a/superset/examples/random_time_series.py
+++ b/superset/examples/random_time_series.py
@@ -18,11 +18,11 @@
import pandas as pd
from sqlalchemy import DateTime, inspect, String
-import superset.utils.database as database_utils
from superset import app, db
from superset.models.slice import Slice
from superset.sql_parse import Table
from superset.utils.core import DatasourceType
+import superset.utils.database as database_utils
from .helpers import (
get_example_url,
diff --git a/superset/examples/sf_population_polygons.py b/superset/examples/sf_population_polygons.py
index d4754887c7..5c50ef47a8 100644
--- a/superset/examples/sf_population_polygons.py
+++ b/superset/examples/sf_population_polygons.py
@@ -19,9 +19,9 @@ import json
import pandas as pd
from sqlalchemy import BigInteger, Float, inspect, Text
-import superset.utils.database as database_utils
from superset import db
from superset.sql_parse import Table
+import superset.utils.database as database_utils
from .helpers import get_example_url, get_table_connector_registry
diff --git a/superset/examples/supported_charts_dashboard.py b/superset/examples/supported_charts_dashboard.py
index ae0962fc17..16aa86ec38 100644
--- a/superset/examples/supported_charts_dashboard.py
+++ b/superset/examples/supported_charts_dashboard.py
@@ -37,6 +37,7 @@ from .helpers import (
update_slice_ids,
)
+
DASH_SLUG = "supported_charts_dash"
diff --git a/superset/examples/utils.py b/superset/examples/utils.py
index 72df7a579f..97e6824abd 100644
--- a/superset/examples/utils.py
+++ b/superset/examples/utils.py
@@ -14,10 +14,10 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
-import logging
-import re
from importlib.resources import files
+import logging
from pathlib import Path
+import re
from typing import Any
import yaml
@@ -26,6 +26,7 @@ from superset.commands.exceptions import CommandInvalidError
from superset.commands.importers.v1.examples import ImportExamplesCommand
from superset.commands.importers.v1.utils import METADATA_FILE_NAME
+
_logger = logging.getLogger(__name__)
YAML_EXTENSIONS = {".yaml", ".yml"}
diff --git a/superset/examples/world_bank.py b/superset/examples/world_bank.py
index 7b6b374921..d3b94aac87 100644
--- a/superset/examples/world_bank.py
+++ b/superset/examples/world_bank.py
@@ -23,7 +23,6 @@ import pandas as pd
from sqlalchemy import DateTime, inspect, String
from sqlalchemy.sql import column
-import superset.utils.database
from superset import app, db
from superset.connectors.sqla.models import BaseDatasource, SqlMetric
from superset.examples.helpers import (
@@ -40,6 +39,7 @@ from superset.models.slice import Slice
from superset.sql_parse import Table
from superset.utils import core as utils
from superset.utils.core import DatasourceType
+import superset.utils.database
def load_world_bank_health_n_pop( # pylint: disable=too-many-locals, too-many-statements
diff --git a/superset/explore/api.py b/superset/explore/api.py
index 7e7813beca..a4dff92f19 100644
--- a/superset/explore/api.py
+++ b/superset/explore/api.py
@@ -33,6 +33,7 @@ from superset.explore.schemas import ExploreContextSchema
from superset.extensions import event_logger
from superset.views.base_api import BaseSupersetApi, statsd_metrics
+
logger = logging.getLogger(__name__)
diff --git a/superset/explore/form_data/api.py b/superset/explore/form_data/api.py
index 6c882d92a6..d4d0b946c4 100644
--- a/superset/explore/form_data/api.py
+++ b/superset/explore/form_data/api.py
@@ -34,6 +34,7 @@ from superset.explore.form_data.schemas import FormDataPostSchema, FormDataPutSc
from superset.extensions import event_logger
from superset.views.base_api import BaseSupersetApi, requires_json, statsd_metrics
+
logger = logging.getLogger(__name__)
diff --git a/superset/explore/permalink/api.py b/superset/explore/permalink/api.py
index bc9bd1cf67..477d64f7f2 100644
--- a/superset/explore/permalink/api.py
+++ b/superset/explore/permalink/api.py
@@ -37,6 +37,7 @@ from superset.extensions import event_logger
from superset.key_value.exceptions import KeyValueAccessDeniedError
from superset.views.base_api import BaseSupersetApi, requires_json, statsd_metrics
+
logger = logging.getLogger(__name__)
diff --git a/superset/extensions/metadb.py b/superset/extensions/metadb.py
index 2d8444cc99..88c62bf409 100644
--- a/superset/extensions/metadb.py
+++ b/superset/extensions/metadb.py
@@ -37,13 +37,13 @@ joins and unions are done in memory, using the SQLite engine.
from __future__ import annotations
+from collections.abc import Iterator
import datetime
import decimal
-import operator
-import urllib.parse
-from collections.abc import Iterator
from functools import partial, wraps
+import operator
from typing import Any, Callable, cast, TypeVar
+import urllib.parse
from flask import current_app
from shillelagh.adapters.base import Adapter
diff --git a/superset/extensions/metastore_cache.py b/superset/extensions/metastore_cache.py
index 435c38ced8..12c216ca1f 100644
--- a/superset/extensions/metastore_cache.py
+++ b/superset/extensions/metastore_cache.py
@@ -14,8 +14,8 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
-import logging
from datetime import datetime, timedelta
+import logging
from typing import Any, Optional
from uuid import UUID, uuid3
@@ -30,6 +30,7 @@ from superset.key_value.types import (
)
from superset.key_value.utils import get_uuid_namespace
+
RESOURCE = KeyValueResource.METASTORE_CACHE
logger = logging.getLogger(__name__)
diff --git a/superset/extensions/ssh.py b/superset/extensions/ssh.py
index 09840cc38b..4198f05149 100644
--- a/superset/extensions/ssh.py
+++ b/superset/extensions/ssh.py
@@ -15,17 +15,18 @@
# specific language governing permissions and limitations
# under the License.
-import logging
from io import StringIO
+import logging
from typing import TYPE_CHECKING
-import sshtunnel
from flask import Flask
from paramiko import RSAKey
+import sshtunnel
from superset.databases.utils import make_url_safe
from superset.utils.class_utils import load_class_from_name
+
if TYPE_CHECKING:
from superset.databases.ssh_tunnel.models import SSHTunnel
diff --git a/superset/importexport/api.py b/superset/importexport/api.py
index fe170d2593..7d5812d1f2 100644
--- a/superset/importexport/api.py
+++ b/superset/importexport/api.py
@@ -14,9 +14,9 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
-import json
from datetime import datetime
from io import BytesIO
+import json
from zipfile import is_zipfile, ZipFile
from flask import request, Response, send_file
diff --git a/superset/initialization/__init__.py b/superset/initialization/__init__.py
index 069ed19483..978399abab 100644
--- a/superset/initialization/__init__.py
+++ b/superset/initialization/__init__.py
@@ -22,7 +22,6 @@ import os
import sys
from typing import Any, Callable, TYPE_CHECKING
-import wtforms_json
from deprecation import deprecated
from flask import Flask, redirect
from flask_appbuilder import expose, IndexView
@@ -30,6 +29,7 @@ from flask_babel import gettext as __
from flask_compress import Compress
from flask_session import Session
from werkzeug.middleware.proxy_fix import ProxyFix
+import wtforms_json
from superset.constants import CHANGE_ME_SECRET_KEY
from superset.extensions import (
@@ -58,6 +58,7 @@ from superset.tags.core import register_sqla_event_listeners
from superset.utils.core import is_test, pessimistic_connection_handling
from superset.utils.log import DBEventLogger, get_event_logger_from_cfg_value
+
if TYPE_CHECKING:
from superset.app import SupersetApp
diff --git a/superset/jinja_context.py b/superset/jinja_context.py
index 53325b7a47..0c6c685cb9 100644
--- a/superset/jinja_context.py
+++ b/superset/jinja_context.py
@@ -16,10 +16,10 @@
# under the License.
"""Defines the templating context for SQL Lab"""
-import json
-import re
from datetime import datetime
from functools import lru_cache, partial
+import json
+import re
from typing import Any, Callable, cast, Optional, TYPE_CHECKING, TypedDict, Union
import dateutil
@@ -43,6 +43,7 @@ from superset.utils.core import (
merge_extra_filters,
)
+
if TYPE_CHECKING:
from superset.connectors.sqla.models import SqlaTable
from superset.models.core import Database
diff --git a/superset/key_value/models.py b/superset/key_value/models.py
index 7a3f5e52a2..4470f9479b 100644
--- a/superset/key_value/models.py
+++ b/superset/key_value/models.py
@@ -21,6 +21,7 @@ from sqlalchemy.orm import relationship
from superset import security_manager
from superset.models.helpers import AuditMixinNullable, ImportExportMixin
+
VALUE_MAX_SIZE = 2**24 - 1
diff --git a/superset/key_value/shared_entries.py b/superset/key_value/shared_entries.py
index 130313157a..d800d5586f 100644
--- a/superset/key_value/shared_entries.py
+++ b/superset/key_value/shared_entries.py
@@ -21,6 +21,7 @@ from uuid import uuid3
from superset.key_value.types import JsonKeyValueCodec, KeyValueResource, SharedKey
from superset.key_value.utils import get_uuid_namespace, random_key
+
RESOURCE = KeyValueResource.APP
NAMESPACE = get_uuid_namespace("")
CODEC = JsonKeyValueCodec()
diff --git a/superset/key_value/types.py b/superset/key_value/types.py
index 7b0130c0e6..aeedc8739a 100644
--- a/superset/key_value/types.py
+++ b/superset/key_value/types.py
@@ -16,10 +16,10 @@
# under the License.
from __future__ import annotations
-import json
-import pickle
from abc import ABC, abstractmethod
from dataclasses import dataclass
+import json
+import pickle
from typing import Any, TypedDict
from uuid import UUID
diff --git a/superset/key_value/utils.py b/superset/key_value/utils.py
index 6b487c278c..728d348801 100644
--- a/superset/key_value/utils.py
+++ b/superset/key_value/utils.py
@@ -21,13 +21,14 @@ from secrets import token_urlsafe
from typing import Any
from uuid import UUID, uuid3
-import hashids
from flask_babel import gettext as _
+import hashids
from superset.key_value.exceptions import KeyValueParseKeyError
from superset.key_value.types import KeyValueFilter, KeyValueResource
from superset.utils.core import json_dumps_w_dates
+
HASHIDS_MIN_LENGTH = 11
diff --git a/superset/migrations/__init__.py b/superset/migrations/__init__.py
index b083f44bb4..612d46fc3a 100644
--- a/superset/migrations/__init__.py
+++ b/superset/migrations/__init__.py
@@ -18,6 +18,7 @@
import os
import sys
+
# hack to be able to import / reuse migration_utils.py in revisions
module_dir = os.path.dirname(os.path.realpath(__file__))
sys.path.append(module_dir)
diff --git a/superset/migrations/env.py b/superset/migrations/env.py
index ab9dea7855..b8a45085a8 100755
--- a/superset/migrations/env.py
+++ b/superset/migrations/env.py
@@ -16,8 +16,8 @@
# under the License.
import logging
-import urllib.parse
from logging.config import fileConfig
+import urllib.parse
from alembic import context
from alembic.operations.ops import MigrationScript
@@ -26,6 +26,7 @@ from flask import current_app
from flask_appbuilder import Base
from sqlalchemy import engine_from_config, pool
+
# this is the Alembic Config object, which provides
# access to the values within the .ini file in use.
config = context.config
diff --git a/superset/migrations/migration_utils.py b/superset/migrations/migration_utils.py
index 99229a1029..300ffb82d9 100644
--- a/superset/migrations/migration_utils.py
+++ b/superset/migrations/migration_utils.py
@@ -17,6 +17,7 @@
from alembic.operations import Operations
+
naming_convention = {
"fk": "fk_%(table_name)s_%(column_0_name)s_%(referred_table_name)s",
"uq": "uq_%(table_name)s_%(column_0_name)s",
diff --git a/superset/migrations/shared/migrate_viz/base.py b/superset/migrations/shared/migrate_viz/base.py
index 83d27cdd4b..125c3c066c 100644
--- a/superset/migrations/shared/migrate_viz/base.py
+++ b/superset/migrations/shared/migrate_viz/base.py
@@ -28,6 +28,7 @@ from superset import conf
from superset.constants import TimeGrain
from superset.migrations.shared.utils import paginated_update, try_load_json
+
Base = declarative_base()
diff --git a/superset/migrations/shared/native_filters.py b/superset/migrations/shared/native_filters.py
index 05b9f4033f..d0427b71d4 100644
--- a/superset/migrations/shared/native_filters.py
+++ b/superset/migrations/shared/native_filters.py
@@ -14,8 +14,8 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
-import json
from collections import defaultdict
+import json
from textwrap import dedent
from typing import Any
diff --git a/superset/migrations/shared/security_converge.py b/superset/migrations/shared/security_converge.py
index 42a68acb24..c8884950a2 100644
--- a/superset/migrations/shared/security_converge.py
+++ b/superset/migrations/shared/security_converge.py
@@ -14,8 +14,8 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
-import logging
from dataclasses import dataclass
+import logging
from sqlalchemy import (
Column,
@@ -29,6 +29,7 @@ from sqlalchemy import (
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import Load, relationship, Session
+
logger = logging.getLogger(__name__)
Base = declarative_base()
diff --git a/superset/migrations/shared/utils.py b/superset/migrations/shared/utils.py
index 44d4c3924b..44b4bba711 100644
--- a/superset/migrations/shared/utils.py
+++ b/superset/migrations/shared/utils.py
@@ -14,11 +14,11 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
+from collections.abc import Iterator
import json
import logging
import os
import time
-from collections.abc import Iterator
from typing import Any, Callable, Optional, Union
from uuid import uuid4
@@ -29,6 +29,7 @@ from sqlalchemy.dialects.postgresql.base import PGDialect
from sqlalchemy.exc import NoSuchTableError
from sqlalchemy.orm import Query, Session
+
logger = logging.getLogger(__name__)
DEFAULT_BATCH_SIZE = int(os.environ.get("BATCH_SIZE", 1000))
diff --git a/superset/migrations/versions/2015-09-21_17-30_4e6a06bad7a8_init.py b/superset/migrations/versions/2015-09-21_17-30_4e6a06bad7a8_init.py
index cd0f74eaff..41db182282 100644
--- a/superset/migrations/versions/2015-09-21_17-30_4e6a06bad7a8_init.py
+++ b/superset/migrations/versions/2015-09-21_17-30_4e6a06bad7a8_init.py
@@ -26,8 +26,8 @@ Create Date: 2015-09-21 17:30:38.442998
revision = "4e6a06bad7a8"
down_revision = None
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
def upgrade():
diff --git a/superset/migrations/versions/2015-10-05_10-32_5a7bad26f2a7_.py b/superset/migrations/versions/2015-10-05_10-32_5a7bad26f2a7_.py
index 260eec998b..03d807a2f3 100644
--- a/superset/migrations/versions/2015-10-05_10-32_5a7bad26f2a7_.py
+++ b/superset/migrations/versions/2015-10-05_10-32_5a7bad26f2a7_.py
@@ -26,8 +26,8 @@ Create Date: 2015-10-05 10:32:15.850753
revision = "5a7bad26f2a7"
down_revision = "4e6a06bad7a8"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
def upgrade():
diff --git a/superset/migrations/versions/2015-10-05_22-11_1e2841a4128_.py b/superset/migrations/versions/2015-10-05_22-11_1e2841a4128_.py
index 356c5ee351..317a0330de 100644
--- a/superset/migrations/versions/2015-10-05_22-11_1e2841a4128_.py
+++ b/superset/migrations/versions/2015-10-05_22-11_1e2841a4128_.py
@@ -26,8 +26,8 @@ Create Date: 2015-10-05 22:11:00.537054
revision = "1e2841a4128"
down_revision = "5a7bad26f2a7"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
def upgrade():
diff --git a/superset/migrations/versions/2015-10-19_20-54_2929af7925ed_tz_offsets_in_data_sources.py b/superset/migrations/versions/2015-10-19_20-54_2929af7925ed_tz_offsets_in_data_sources.py
index 839d6dbd8b..b0ce80116f 100644
--- a/superset/migrations/versions/2015-10-19_20-54_2929af7925ed_tz_offsets_in_data_sources.py
+++ b/superset/migrations/versions/2015-10-19_20-54_2929af7925ed_tz_offsets_in_data_sources.py
@@ -26,8 +26,8 @@ Create Date: 2015-10-19 20:54:00.565633
revision = "2929af7925ed"
down_revision = "1e2841a4128"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
def upgrade():
diff --git a/superset/migrations/versions/2015-11-21_11-18_289ce07647b_add_encrypted_password_field.py b/superset/migrations/versions/2015-11-21_11-18_289ce07647b_add_encrypted_password_field.py
index 73273a4da6..acb550da54 100644
--- a/superset/migrations/versions/2015-11-21_11-18_289ce07647b_add_encrypted_password_field.py
+++ b/superset/migrations/versions/2015-11-21_11-18_289ce07647b_add_encrypted_password_field.py
@@ -22,8 +22,9 @@ Create Date: 2015-11-21 11:18:00.650587
"""
-import sqlalchemy as sa
from alembic import op
+import sqlalchemy as sa
+
# revision identifiers, used by Alembic.
revision = "289ce07647b"
diff --git a/superset/migrations/versions/2015-12-04_09-42_1a48a5411020_adding_slug_to_dash.py b/superset/migrations/versions/2015-12-04_09-42_1a48a5411020_adding_slug_to_dash.py
index 1bee2ed14b..b49ba04c58 100644
--- a/superset/migrations/versions/2015-12-04_09-42_1a48a5411020_adding_slug_to_dash.py
+++ b/superset/migrations/versions/2015-12-04_09-42_1a48a5411020_adding_slug_to_dash.py
@@ -26,8 +26,8 @@ Create Date: 2015-12-04 09:42:16.973264
revision = "1a48a5411020"
down_revision = "289ce07647b"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
def upgrade():
diff --git a/superset/migrations/versions/2015-12-04_11-16_315b3f4da9b0_adding_log_model.py b/superset/migrations/versions/2015-12-04_11-16_315b3f4da9b0_adding_log_model.py
index 5f12821399..7745bf7ed0 100644
--- a/superset/migrations/versions/2015-12-04_11-16_315b3f4da9b0_adding_log_model.py
+++ b/superset/migrations/versions/2015-12-04_11-16_315b3f4da9b0_adding_log_model.py
@@ -26,8 +26,8 @@ Create Date: 2015-12-04 11:16:58.226984
revision = "315b3f4da9b0"
down_revision = "1a48a5411020"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
def upgrade():
diff --git a/superset/migrations/versions/2015-12-13_08-38_55179c7f25c7_sqla_descr.py b/superset/migrations/versions/2015-12-13_08-38_55179c7f25c7_sqla_descr.py
index d281f03507..e83317f9e8 100644
--- a/superset/migrations/versions/2015-12-13_08-38_55179c7f25c7_sqla_descr.py
+++ b/superset/migrations/versions/2015-12-13_08-38_55179c7f25c7_sqla_descr.py
@@ -26,8 +26,8 @@ Create Date: 2015-12-13 08:38:43.704145
revision = "55179c7f25c7"
down_revision = "315b3f4da9b0"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
def upgrade():
diff --git a/superset/migrations/versions/2015-12-14_13-37_12d55656cbca_is_featured.py b/superset/migrations/versions/2015-12-14_13-37_12d55656cbca_is_featured.py
index c59c90bd60..689b9d4598 100644
--- a/superset/migrations/versions/2015-12-14_13-37_12d55656cbca_is_featured.py
+++ b/superset/migrations/versions/2015-12-14_13-37_12d55656cbca_is_featured.py
@@ -26,8 +26,8 @@ Create Date: 2015-12-14 13:37:17.374852
revision = "12d55656cbca"
down_revision = "55179c7f25c7"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
def upgrade():
diff --git a/superset/migrations/versions/2015-12-15_17-02_2591d77e9831_user_id.py b/superset/migrations/versions/2015-12-15_17-02_2591d77e9831_user_id.py
index 3bd4c0ab48..b2e15354de 100644
--- a/superset/migrations/versions/2015-12-15_17-02_2591d77e9831_user_id.py
+++ b/superset/migrations/versions/2015-12-15_17-02_2591d77e9831_user_id.py
@@ -26,8 +26,8 @@ Create Date: 2015-12-15 17:02:45.128709
revision = "2591d77e9831"
down_revision = "12d55656cbca"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
def upgrade():
diff --git a/superset/migrations/versions/2016-01-13_20-24_8e80a26a31db_.py b/superset/migrations/versions/2016-01-13_20-24_8e80a26a31db_.py
index e0f85c3a5b..67ce105ec7 100644
--- a/superset/migrations/versions/2016-01-13_20-24_8e80a26a31db_.py
+++ b/superset/migrations/versions/2016-01-13_20-24_8e80a26a31db_.py
@@ -26,8 +26,8 @@ Create Date: 2016-01-13 20:24:45.256437
revision = "8e80a26a31db"
down_revision = "2591d77e9831"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
def upgrade():
diff --git a/superset/migrations/versions/2016-01-17_22-00_7dbf98566af7_slice_description.py b/superset/migrations/versions/2016-01-17_22-00_7dbf98566af7_slice_description.py
index 96907c3146..d35ad65683 100644
--- a/superset/migrations/versions/2016-01-17_22-00_7dbf98566af7_slice_description.py
+++ b/superset/migrations/versions/2016-01-17_22-00_7dbf98566af7_slice_description.py
@@ -26,8 +26,8 @@ Create Date: 2016-01-17 22:00:23.640788
revision = "7dbf98566af7"
down_revision = "8e80a26a31db"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
def upgrade():
diff --git a/superset/migrations/versions/2016-01-18_23-43_43df8de3a5f4_dash_json.py b/superset/migrations/versions/2016-01-18_23-43_43df8de3a5f4_dash_json.py
index 7781de9d38..53d15bb4c3 100644
--- a/superset/migrations/versions/2016-01-18_23-43_43df8de3a5f4_dash_json.py
+++ b/superset/migrations/versions/2016-01-18_23-43_43df8de3a5f4_dash_json.py
@@ -26,8 +26,8 @@ Create Date: 2016-01-18 23:43:16.073483
revision = "43df8de3a5f4"
down_revision = "7dbf98566af7"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
def upgrade():
diff --git a/superset/migrations/versions/2016-02-03_17-41_d827694c7555_css_templates.py b/superset/migrations/versions/2016-02-03_17-41_d827694c7555_css_templates.py
index f65582563c..8adb209698 100644
--- a/superset/migrations/versions/2016-02-03_17-41_d827694c7555_css_templates.py
+++ b/superset/migrations/versions/2016-02-03_17-41_d827694c7555_css_templates.py
@@ -26,8 +26,8 @@ Create Date: 2016-02-03 17:41:10.944019
revision = "d827694c7555"
down_revision = "43df8de3a5f4"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
def upgrade():
diff --git a/superset/migrations/versions/2016-02-10_08-47_430039611635_log_more.py b/superset/migrations/versions/2016-02-10_08-47_430039611635_log_more.py
index e7ca98a238..aef35de1c1 100644
--- a/superset/migrations/versions/2016-02-10_08-47_430039611635_log_more.py
+++ b/superset/migrations/versions/2016-02-10_08-47_430039611635_log_more.py
@@ -22,8 +22,9 @@ Create Date: 2016-02-10 08:47:28.950891
"""
-import sqlalchemy as sa
from alembic import op
+import sqlalchemy as sa
+
# revision identifiers, used by Alembic.
revision = "430039611635"
diff --git a/superset/migrations/versions/2016-03-13_09-56_a2d606a761d9_adding_favstar_model.py b/superset/migrations/versions/2016-03-13_09-56_a2d606a761d9_adding_favstar_model.py
index b2ba067495..3bc65fbe6e 100644
--- a/superset/migrations/versions/2016-03-13_09-56_a2d606a761d9_adding_favstar_model.py
+++ b/superset/migrations/versions/2016-03-13_09-56_a2d606a761d9_adding_favstar_model.py
@@ -26,8 +26,8 @@ Create Date: 2016-03-13 09:56:58.329512
revision = "a2d606a761d9"
down_revision = "18e88e1cc004"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
def upgrade():
diff --git a/superset/migrations/versions/2016-03-13_21-30_18e88e1cc004_making_audit_nullable.py b/superset/migrations/versions/2016-03-13_21-30_18e88e1cc004_making_audit_nullable.py
index 4cd834b88b..6d8f4c3e7f 100644
--- a/superset/migrations/versions/2016-03-13_21-30_18e88e1cc004_making_audit_nullable.py
+++ b/superset/migrations/versions/2016-03-13_21-30_18e88e1cc004_making_audit_nullable.py
@@ -22,8 +22,9 @@ Create Date: 2016-03-13 21:30:24.833107
"""
-import sqlalchemy as sa
from alembic import op
+import sqlalchemy as sa
+
# revision identifiers, used by Alembic.
revision = "18e88e1cc004"
diff --git a/superset/migrations/versions/2016-03-17_08-40_836c0bf75904_cache_timeouts.py b/superset/migrations/versions/2016-03-17_08-40_836c0bf75904_cache_timeouts.py
index 7211cba1c3..5c3648107b 100644
--- a/superset/migrations/versions/2016-03-17_08-40_836c0bf75904_cache_timeouts.py
+++ b/superset/migrations/versions/2016-03-17_08-40_836c0bf75904_cache_timeouts.py
@@ -26,8 +26,8 @@ Create Date: 2016-03-17 08:40:03.186534
revision = "836c0bf75904"
down_revision = "18e88e1cc004"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
def upgrade():
diff --git a/superset/migrations/versions/2016-03-24_14-13_763d4b211ec9_fixing_audit_fk.py b/superset/migrations/versions/2016-03-24_14-13_763d4b211ec9_fixing_audit_fk.py
index 94521d5563..36d29bc067 100644
--- a/superset/migrations/versions/2016-03-24_14-13_763d4b211ec9_fixing_audit_fk.py
+++ b/superset/migrations/versions/2016-03-24_14-13_763d4b211ec9_fixing_audit_fk.py
@@ -26,8 +26,8 @@ Create Date: 2016-03-24 14:13:44.817723
revision = "763d4b211ec9"
down_revision = "d2424a248d63"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
def upgrade():
diff --git a/superset/migrations/versions/2016-03-25_14-35_1d2ddd543133_log_dt.py b/superset/migrations/versions/2016-03-25_14-35_1d2ddd543133_log_dt.py
index 1a1cb4403c..4be49a35d6 100644
--- a/superset/migrations/versions/2016-03-25_14-35_1d2ddd543133_log_dt.py
+++ b/superset/migrations/versions/2016-03-25_14-35_1d2ddd543133_log_dt.py
@@ -26,8 +26,8 @@ Create Date: 2016-03-25 14:35:44.642576
revision = "1d2ddd543133"
down_revision = "d2424a248d63"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
def upgrade():
diff --git a/superset/migrations/versions/2016-04-03_15-23_867bf4f117f9_adding_extra_field_to_database_model.py b/superset/migrations/versions/2016-04-03_15-23_867bf4f117f9_adding_extra_field_to_database_model.py
index ab6de980de..6cbfd86afe 100644
--- a/superset/migrations/versions/2016-04-03_15-23_867bf4f117f9_adding_extra_field_to_database_model.py
+++ b/superset/migrations/versions/2016-04-03_15-23_867bf4f117f9_adding_extra_field_to_database_model.py
@@ -26,8 +26,8 @@ Create Date: 2016-04-03 15:23:20.280841
revision = "867bf4f117f9"
down_revision = "fee7b758c130"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
def upgrade():
diff --git a/superset/migrations/versions/2016-04-11_22-41_bb51420eaf83_add_schema_to_table_model.py b/superset/migrations/versions/2016-04-11_22-41_bb51420eaf83_add_schema_to_table_model.py
index 37dbdeae15..104eea3587 100644
--- a/superset/migrations/versions/2016-04-11_22-41_bb51420eaf83_add_schema_to_table_model.py
+++ b/superset/migrations/versions/2016-04-11_22-41_bb51420eaf83_add_schema_to_table_model.py
@@ -26,8 +26,8 @@ Create Date: 2016-04-11 22:41:06.185955
revision = "bb51420eaf83"
down_revision = "867bf4f117f9"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
def upgrade():
diff --git a/superset/migrations/versions/2016-04-15_08-31_b4456560d4f3_change_table_unique_constraint.py b/superset/migrations/versions/2016-04-15_08-31_b4456560d4f3_change_table_unique_constraint.py
index 429c44757d..2816d672c9 100644
--- a/superset/migrations/versions/2016-04-15_08-31_b4456560d4f3_change_table_unique_constraint.py
+++ b/superset/migrations/versions/2016-04-15_08-31_b4456560d4f3_change_table_unique_constraint.py
@@ -24,6 +24,7 @@ Create Date: 2016-04-15 08:31:26.249591
from alembic import op
+
# revision identifiers, used by Alembic.
revision = "b4456560d4f3"
down_revision = "bb51420eaf83"
diff --git a/superset/migrations/versions/2016-04-15_17-58_4fa88fe24e94_owners_many_to_many.py b/superset/migrations/versions/2016-04-15_17-58_4fa88fe24e94_owners_many_to_many.py
index bbb015775e..60c75521c6 100644
--- a/superset/migrations/versions/2016-04-15_17-58_4fa88fe24e94_owners_many_to_many.py
+++ b/superset/migrations/versions/2016-04-15_17-58_4fa88fe24e94_owners_many_to_many.py
@@ -26,8 +26,8 @@ Create Date: 2016-04-15 17:58:33.842012
revision = "4fa88fe24e94"
down_revision = "b4456560d4f3"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
def upgrade():
diff --git a/superset/migrations/versions/2016-04-25_08-54_c3a8f8611885_materializing_permission.py b/superset/migrations/versions/2016-04-25_08-54_c3a8f8611885_materializing_permission.py
index 0231fb1e2e..fbf0edecee 100644
--- a/superset/migrations/versions/2016-04-25_08-54_c3a8f8611885_materializing_permission.py
+++ b/superset/migrations/versions/2016-04-25_08-54_c3a8f8611885_materializing_permission.py
@@ -22,13 +22,14 @@ Create Date: 2016-04-25 08:54:04.303859
"""
-import sqlalchemy as sa
from alembic import op
+import sqlalchemy as sa
from sqlalchemy import Column, ForeignKey, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from superset import db
+
# revision identifiers, used by Alembic.
revision = "c3a8f8611885"
down_revision = "4fa88fe24e94"
diff --git a/superset/migrations/versions/2016-05-01_12-21_f0fbf6129e13_adding_verbose_name_to_tablecolumn.py b/superset/migrations/versions/2016-05-01_12-21_f0fbf6129e13_adding_verbose_name_to_tablecolumn.py
index 17cb0d1c14..be863a595e 100644
--- a/superset/migrations/versions/2016-05-01_12-21_f0fbf6129e13_adding_verbose_name_to_tablecolumn.py
+++ b/superset/migrations/versions/2016-05-01_12-21_f0fbf6129e13_adding_verbose_name_to_tablecolumn.py
@@ -26,8 +26,8 @@ Create Date: 2016-05-01 12:21:18.331191
revision = "f0fbf6129e13"
down_revision = "c3a8f8611885"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
def upgrade():
diff --git a/superset/migrations/versions/2016-05-11_17-28_956a063c52b3_adjusting_key_length.py b/superset/migrations/versions/2016-05-11_17-28_956a063c52b3_adjusting_key_length.py
index 41dfdb2121..b9906c5317 100644
--- a/superset/migrations/versions/2016-05-11_17-28_956a063c52b3_adjusting_key_length.py
+++ b/superset/migrations/versions/2016-05-11_17-28_956a063c52b3_adjusting_key_length.py
@@ -22,8 +22,9 @@ Create Date: 2016-05-11 17:28:32.407340
"""
-import sqlalchemy as sa
from alembic import op
+import sqlalchemy as sa
+
# revision identifiers, used by Alembic.
revision = "956a063c52b3"
diff --git a/superset/migrations/versions/2016-05-27_15-03_1226819ee0e3_fix_wrong_constraint_on_table_columns.py b/superset/migrations/versions/2016-05-27_15-03_1226819ee0e3_fix_wrong_constraint_on_table_columns.py
index 9eda0bf898..1e9c2048bf 100644
--- a/superset/migrations/versions/2016-05-27_15-03_1226819ee0e3_fix_wrong_constraint_on_table_columns.py
+++ b/superset/migrations/versions/2016-05-27_15-03_1226819ee0e3_fix_wrong_constraint_on_table_columns.py
@@ -29,6 +29,7 @@ from alembic import op
from superset import db
from superset.utils.core import generic_find_constraint_name
+
# revision identifiers, used by Alembic.
revision = "1226819ee0e3"
down_revision = "956a063c52b3"
diff --git a/superset/migrations/versions/2016-06-07_12-33_d8bc074f7aad_add_new_field_is_restricted_to_.py b/superset/migrations/versions/2016-06-07_12-33_d8bc074f7aad_add_new_field_is_restricted_to_.py
index def84c9a90..29e3e3a0a1 100644
--- a/superset/migrations/versions/2016-06-07_12-33_d8bc074f7aad_add_new_field_is_restricted_to_.py
+++ b/superset/migrations/versions/2016-06-07_12-33_d8bc074f7aad_add_new_field_is_restricted_to_.py
@@ -26,13 +26,14 @@ Create Date: 2016-06-07 12:33:25.756640
revision = "d8bc074f7aad"
down_revision = "1226819ee0e3"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
from sqlalchemy import Boolean, Column, Integer # noqa: E402
from sqlalchemy.ext.declarative import declarative_base # noqa: E402
from superset import db # noqa: E402
+
Base = declarative_base()
diff --git a/superset/migrations/versions/2016-06-16_14-15_960c69cb1f5b_.py b/superset/migrations/versions/2016-06-16_14-15_960c69cb1f5b_.py
index f1acb5e740..242cf5fc6e 100644
--- a/superset/migrations/versions/2016-06-16_14-15_960c69cb1f5b_.py
+++ b/superset/migrations/versions/2016-06-16_14-15_960c69cb1f5b_.py
@@ -26,8 +26,8 @@ Create Date: 2016-06-16 14:15:19.573183
revision = "960c69cb1f5b"
down_revision = "27ae655e4247"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
def upgrade():
diff --git a/superset/migrations/versions/2016-06-27_08-43_27ae655e4247_make_creator_owners.py b/superset/migrations/versions/2016-06-27_08-43_27ae655e4247_make_creator_owners.py
index 76a8230415..abf4950186 100644
--- a/superset/migrations/versions/2016-06-27_08-43_27ae655e4247_make_creator_owners.py
+++ b/superset/migrations/versions/2016-06-27_08-43_27ae655e4247_make_creator_owners.py
@@ -34,6 +34,7 @@ from sqlalchemy.orm import relationship # noqa: E402
from superset import db # noqa: E402
from superset.utils.core import get_user_id # noqa: E402
+
Base = declarative_base()
diff --git a/superset/migrations/versions/2016-07-06_22-04_f162a1dea4c4_d3format_by_metric.py b/superset/migrations/versions/2016-07-06_22-04_f162a1dea4c4_d3format_by_metric.py
index fdece59e01..15293013b3 100644
--- a/superset/migrations/versions/2016-07-06_22-04_f162a1dea4c4_d3format_by_metric.py
+++ b/superset/migrations/versions/2016-07-06_22-04_f162a1dea4c4_d3format_by_metric.py
@@ -26,8 +26,8 @@ Create Date: 2016-07-06 22:04:28.685100
revision = "f162a1dea4c4"
down_revision = "960c69cb1f5b"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
def upgrade():
diff --git a/superset/migrations/versions/2016-07-25_17-48_ad82a75afd82_add_query_model.py b/superset/migrations/versions/2016-07-25_17-48_ad82a75afd82_add_query_model.py
index c62ac0c41a..a916116dc2 100644
--- a/superset/migrations/versions/2016-07-25_17-48_ad82a75afd82_add_query_model.py
+++ b/superset/migrations/versions/2016-07-25_17-48_ad82a75afd82_add_query_model.py
@@ -26,8 +26,8 @@ Create Date: 2016-07-25 17:48:12.771103
revision = "ad82a75afd82"
down_revision = "f162a1dea4c4"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
def upgrade():
diff --git a/superset/migrations/versions/2016-08-18_14-06_3c3ffe173e4f_add_sql_string_to_table.py b/superset/migrations/versions/2016-08-18_14-06_3c3ffe173e4f_add_sql_string_to_table.py
index e8274c6d36..6998317cf1 100644
--- a/superset/migrations/versions/2016-08-18_14-06_3c3ffe173e4f_add_sql_string_to_table.py
+++ b/superset/migrations/versions/2016-08-18_14-06_3c3ffe173e4f_add_sql_string_to_table.py
@@ -26,8 +26,8 @@ Create Date: 2016-08-18 14:06:28.784699
revision = "3c3ffe173e4f"
down_revision = "ad82a75afd82"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
def upgrade():
diff --git a/superset/migrations/versions/2016-08-31_10-26_41f6a59a61f2_database_options_for_sql_lab.py b/superset/migrations/versions/2016-08-31_10-26_41f6a59a61f2_database_options_for_sql_lab.py
index c76bc84d72..3c3a8b54b7 100644
--- a/superset/migrations/versions/2016-08-31_10-26_41f6a59a61f2_database_options_for_sql_lab.py
+++ b/superset/migrations/versions/2016-08-31_10-26_41f6a59a61f2_database_options_for_sql_lab.py
@@ -22,8 +22,9 @@ Create Date: 2016-08-31 10:26:37.969107
"""
-import sqlalchemy as sa
from alembic import op
+import sqlalchemy as sa
+
# revision identifiers, used by Alembic.
revision = "41f6a59a61f2"
diff --git a/superset/migrations/versions/2016-09-07_23-50_33d996bcc382_update_slice_model.py b/superset/migrations/versions/2016-09-07_23-50_33d996bcc382_update_slice_model.py
index 01907e958a..77c779e3a7 100644
--- a/superset/migrations/versions/2016-09-07_23-50_33d996bcc382_update_slice_model.py
+++ b/superset/migrations/versions/2016-09-07_23-50_33d996bcc382_update_slice_model.py
@@ -22,13 +22,14 @@ Create Date: 2016-09-07 23:50:59.366779
"""
-import sqlalchemy as sa
from alembic import op
+import sqlalchemy as sa
from sqlalchemy import Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from superset import db
+
# revision identifiers, used by Alembic.
revision = "33d996bcc382"
down_revision = "41f6a59a61f2"
diff --git a/superset/migrations/versions/2016-09-09_17-39_5e4a03ef0bf0_add_request_access_model.py b/superset/migrations/versions/2016-09-09_17-39_5e4a03ef0bf0_add_request_access_model.py
index cfba54e8be..7efbe49e95 100644
--- a/superset/migrations/versions/2016-09-09_17-39_5e4a03ef0bf0_add_request_access_model.py
+++ b/superset/migrations/versions/2016-09-09_17-39_5e4a03ef0bf0_add_request_access_model.py
@@ -22,8 +22,9 @@ Create Date: 2016-09-09 17:39:57.846309
"""
-import sqlalchemy as sa
from alembic import op
+import sqlalchemy as sa
+
# revision identifiers, used by Alembic.
revision = "5e4a03ef0bf0"
diff --git a/superset/migrations/versions/2016-09-12_23-33_4500485bde7d_allow_run_sync_async.py b/superset/migrations/versions/2016-09-12_23-33_4500485bde7d_allow_run_sync_async.py
index a1e71a554c..b2b6bcd124 100644
--- a/superset/migrations/versions/2016-09-12_23-33_4500485bde7d_allow_run_sync_async.py
+++ b/superset/migrations/versions/2016-09-12_23-33_4500485bde7d_allow_run_sync_async.py
@@ -26,8 +26,8 @@ Create Date: 2016-09-12 23:33:14.789632
revision = "4500485bde7d"
down_revision = "41f6a59a61f2"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
def upgrade():
diff --git a/superset/migrations/versions/2016-09-15_08-48_65903709c321_allow_dml.py b/superset/migrations/versions/2016-09-15_08-48_65903709c321_allow_dml.py
index 6836e8ee20..f89e0df866 100644
--- a/superset/migrations/versions/2016-09-15_08-48_65903709c321_allow_dml.py
+++ b/superset/migrations/versions/2016-09-15_08-48_65903709c321_allow_dml.py
@@ -24,8 +24,9 @@ Create Date: 2016-09-15 08:48:27.284752
import logging
-import sqlalchemy as sa
from alembic import op
+import sqlalchemy as sa
+
# revision identifiers, used by Alembic.
revision = "65903709c321"
diff --git a/superset/migrations/versions/2016-09-22_10-21_3b626e2a6783_sync_db_with_models.py b/superset/migrations/versions/2016-09-22_10-21_3b626e2a6783_sync_db_with_models.py
index 8ba6110071..5887af9179 100644
--- a/superset/migrations/versions/2016-09-22_10-21_3b626e2a6783_sync_db_with_models.py
+++ b/superset/migrations/versions/2016-09-22_10-21_3b626e2a6783_sync_db_with_models.py
@@ -27,13 +27,14 @@ Create Date: 2016-09-22 10:21:33.618976
import logging
-import sqlalchemy as sa
from alembic import op
+import sqlalchemy as sa
from sqlalchemy.dialects import mysql
from superset import db
from superset.utils.core import generic_find_constraint_name
+
# revision identifiers, used by Alembic.
revision = "3b626e2a6783"
down_revision = "eca4694defa7"
diff --git a/superset/migrations/versions/2016-09-22_11-31_eca4694defa7_sqllab_setting_defaults.py b/superset/migrations/versions/2016-09-22_11-31_eca4694defa7_sqllab_setting_defaults.py
index b63ebef5d1..65e26ecafd 100644
--- a/superset/migrations/versions/2016-09-22_11-31_eca4694defa7_sqllab_setting_defaults.py
+++ b/superset/migrations/versions/2016-09-22_11-31_eca4694defa7_sqllab_setting_defaults.py
@@ -28,6 +28,7 @@ from sqlalchemy.ext.declarative import declarative_base
from superset import db
+
# revision identifiers, used by Alembic.
revision = "eca4694defa7"
down_revision = "5e4a03ef0bf0"
diff --git a/superset/migrations/versions/2016-09-30_18-01_ab3d66c4246e_add_cache_timeout_to_druid_cluster.py b/superset/migrations/versions/2016-09-30_18-01_ab3d66c4246e_add_cache_timeout_to_druid_cluster.py
index 00b9675bf9..4b80e9b301 100644
--- a/superset/migrations/versions/2016-09-30_18-01_ab3d66c4246e_add_cache_timeout_to_druid_cluster.py
+++ b/superset/migrations/versions/2016-09-30_18-01_ab3d66c4246e_add_cache_timeout_to_druid_cluster.py
@@ -26,8 +26,8 @@ Create Date: 2016-09-30 18:01:30.579760
revision = "ab3d66c4246e"
down_revision = "eca4694defa7"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
def upgrade():
diff --git a/superset/migrations/versions/2016-10-05_11-30_b46fa1b0b39e_add_params_to_tables.py b/superset/migrations/versions/2016-10-05_11-30_b46fa1b0b39e_add_params_to_tables.py
index 7bd9492188..85d447d475 100644
--- a/superset/migrations/versions/2016-10-05_11-30_b46fa1b0b39e_add_params_to_tables.py
+++ b/superset/migrations/versions/2016-10-05_11-30_b46fa1b0b39e_add_params_to_tables.py
@@ -28,8 +28,8 @@ down_revision = "ef8843b41dac"
import logging # noqa: E402
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
def upgrade():
diff --git a/superset/migrations/versions/2016-10-14_11-17_7e3ddad2a00b_results_key_to_query.py b/superset/migrations/versions/2016-10-14_11-17_7e3ddad2a00b_results_key_to_query.py
index 21dc31dc7e..9821890465 100644
--- a/superset/migrations/versions/2016-10-14_11-17_7e3ddad2a00b_results_key_to_query.py
+++ b/superset/migrations/versions/2016-10-14_11-17_7e3ddad2a00b_results_key_to_query.py
@@ -26,8 +26,8 @@ Create Date: 2016-10-14 11:17:54.995156
revision = "7e3ddad2a00b"
down_revision = "b46fa1b0b39e"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
def upgrade():
diff --git a/superset/migrations/versions/2016-10-25_10-16_ad4d656d92bc_add_avg_metric.py b/superset/migrations/versions/2016-10-25_10-16_ad4d656d92bc_add_avg_metric.py
index 47991c6fe7..32bdd472f9 100644
--- a/superset/migrations/versions/2016-10-25_10-16_ad4d656d92bc_add_avg_metric.py
+++ b/superset/migrations/versions/2016-10-25_10-16_ad4d656d92bc_add_avg_metric.py
@@ -26,8 +26,8 @@ Create Date: 2016-10-25 10:16:39.871078
revision = "ad4d656d92bc"
down_revision = "7e3ddad2a00b"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
def upgrade():
diff --git a/superset/migrations/versions/2016-11-02_17-36_c611f2b591b8_dim_spec.py b/superset/migrations/versions/2016-11-02_17-36_c611f2b591b8_dim_spec.py
index 8d026ad2c7..168ede9a95 100644
--- a/superset/migrations/versions/2016-11-02_17-36_c611f2b591b8_dim_spec.py
+++ b/superset/migrations/versions/2016-11-02_17-36_c611f2b591b8_dim_spec.py
@@ -26,8 +26,8 @@ Create Date: 2016-11-02 17:36:04.970448
revision = "c611f2b591b8"
down_revision = "ad4d656d92bc"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
def upgrade():
diff --git a/superset/migrations/versions/2016-11-14_15-23_e46f2d27a08e_materialize_perms.py b/superset/migrations/versions/2016-11-14_15-23_e46f2d27a08e_materialize_perms.py
index 628f2ffcd8..45af42b3e9 100644
--- a/superset/migrations/versions/2016-11-14_15-23_e46f2d27a08e_materialize_perms.py
+++ b/superset/migrations/versions/2016-11-14_15-23_e46f2d27a08e_materialize_perms.py
@@ -26,8 +26,8 @@ Create Date: 2016-11-14 15:23:32.594898
revision = "e46f2d27a08e"
down_revision = "c611f2b591b8"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
def upgrade():
diff --git a/superset/migrations/versions/2016-11-23_10-27_f1f2d4af5b90_.py b/superset/migrations/versions/2016-11-23_10-27_f1f2d4af5b90_.py
index 1393b3b03e..c233afe678 100644
--- a/superset/migrations/versions/2016-11-23_10-27_f1f2d4af5b90_.py
+++ b/superset/migrations/versions/2016-11-23_10-27_f1f2d4af5b90_.py
@@ -26,8 +26,8 @@ Create Date: 2016-11-23 10:27:18.517919
revision = "f1f2d4af5b90"
down_revision = "e46f2d27a08e"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
def upgrade():
diff --git a/superset/migrations/versions/2016-12-06_17-40_1296d28ec131_druid_exports.py b/superset/migrations/versions/2016-12-06_17-40_1296d28ec131_druid_exports.py
index 4366058964..962502be0f 100644
--- a/superset/migrations/versions/2016-12-06_17-40_1296d28ec131_druid_exports.py
+++ b/superset/migrations/versions/2016-12-06_17-40_1296d28ec131_druid_exports.py
@@ -26,8 +26,8 @@ Create Date: 2016-12-06 17:40:40.389652
revision = "1296d28ec131"
down_revision = "6414e83d82b7"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
def upgrade():
diff --git a/superset/migrations/versions/2016-12-13_16-19_525c854f0005_log_this_plus.py b/superset/migrations/versions/2016-12-13_16-19_525c854f0005_log_this_plus.py
index d0d5bd7d79..b91e203852 100644
--- a/superset/migrations/versions/2016-12-13_16-19_525c854f0005_log_this_plus.py
+++ b/superset/migrations/versions/2016-12-13_16-19_525c854f0005_log_this_plus.py
@@ -26,8 +26,8 @@ Create Date: 2016-12-13 16:19:02.239322
revision = "525c854f0005"
down_revision = "e46f2d27a08e"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
def upgrade():
diff --git a/superset/migrations/versions/2017-01-10_11-47_bcf3126872fc_add_keyvalue.py b/superset/migrations/versions/2017-01-10_11-47_bcf3126872fc_add_keyvalue.py
index e409738907..aaced833dc 100644
--- a/superset/migrations/versions/2017-01-10_11-47_bcf3126872fc_add_keyvalue.py
+++ b/superset/migrations/versions/2017-01-10_11-47_bcf3126872fc_add_keyvalue.py
@@ -26,8 +26,8 @@ Create Date: 2017-01-10 11:47:56.306938
revision = "bcf3126872fc"
down_revision = "f18570e03440"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
def upgrade():
diff --git a/superset/migrations/versions/2017-01-24_12-31_db0c65b146bd_update_slice_model_json.py b/superset/migrations/versions/2017-01-24_12-31_db0c65b146bd_update_slice_model_json.py
index 4eff93991c..f8609eeee1 100644
--- a/superset/migrations/versions/2017-01-24_12-31_db0c65b146bd_update_slice_model_json.py
+++ b/superset/migrations/versions/2017-01-24_12-31_db0c65b146bd_update_slice_model_json.py
@@ -34,6 +34,7 @@ from sqlalchemy.ext.declarative import declarative_base # noqa: E402
from superset import db # noqa: E402
+
Base = declarative_base()
diff --git a/superset/migrations/versions/2017-01-24_12-40_f18570e03440_add_query_result_key_index.py b/superset/migrations/versions/2017-01-24_12-40_f18570e03440_add_query_result_key_index.py
index 98bad0bf60..c844ef4261 100644
--- a/superset/migrations/versions/2017-01-24_12-40_f18570e03440_add_query_result_key_index.py
+++ b/superset/migrations/versions/2017-01-24_12-40_f18570e03440_add_query_result_key_index.py
@@ -24,6 +24,7 @@ Create Date: 2017-01-24 12:40:42.494787
from alembic import op
+
# revision identifiers, used by Alembic.
revision = "f18570e03440"
down_revision = "1296d28ec131"
diff --git a/superset/migrations/versions/2017-02-08_14-16_a99f2f7c195a_rewriting_url_from_shortner_with_new_.py b/superset/migrations/versions/2017-02-08_14-16_a99f2f7c195a_rewriting_url_from_shortner_with_new_.py
index 5df9a62739..62b651ae52 100644
--- a/superset/migrations/versions/2017-02-08_14-16_a99f2f7c195a_rewriting_url_from_shortner_with_new_.py
+++ b/superset/migrations/versions/2017-02-08_14-16_a99f2f7c195a_rewriting_url_from_shortner_with_new_.py
@@ -29,12 +29,13 @@ down_revision = "db0c65b146bd"
import json # noqa: E402
from urllib import parse # noqa: E402
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
from sqlalchemy.ext.declarative import declarative_base # noqa: E402
from superset import db # noqa: E402
+
Base = declarative_base()
diff --git a/superset/migrations/versions/2017-03-03_09-15_732f1c06bcbf_add_fetch_values_predicate.py b/superset/migrations/versions/2017-03-03_09-15_732f1c06bcbf_add_fetch_values_predicate.py
index 5049809d3b..79a6a0db44 100644
--- a/superset/migrations/versions/2017-03-03_09-15_732f1c06bcbf_add_fetch_values_predicate.py
+++ b/superset/migrations/versions/2017-03-03_09-15_732f1c06bcbf_add_fetch_values_predicate.py
@@ -26,8 +26,8 @@ Create Date: 2017-03-03 09:15:56.800930
revision = "732f1c06bcbf"
down_revision = "d6db5a5cdb5d"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
def upgrade():
diff --git a/superset/migrations/versions/2017-03-08_11-48_b318dfe5fb6c_adding_verbose_name_to_druid_column.py b/superset/migrations/versions/2017-03-08_11-48_b318dfe5fb6c_adding_verbose_name_to_druid_column.py
index b61ea22d8e..f1c07d0d15 100644
--- a/superset/migrations/versions/2017-03-08_11-48_b318dfe5fb6c_adding_verbose_name_to_druid_column.py
+++ b/superset/migrations/versions/2017-03-08_11-48_b318dfe5fb6c_adding_verbose_name_to_druid_column.py
@@ -26,8 +26,8 @@ Create Date: 2017-03-08 11:48:10.835741
revision = "b318dfe5fb6c"
down_revision = "d6db5a5cdb5d"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
def upgrade():
diff --git a/superset/migrations/versions/2017-03-16_18-10_db527d8c4c78_add_db_verbose_name.py b/superset/migrations/versions/2017-03-16_18-10_db527d8c4c78_add_db_verbose_name.py
index 5df45650af..bfe6c4c927 100644
--- a/superset/migrations/versions/2017-03-16_18-10_db527d8c4c78_add_db_verbose_name.py
+++ b/superset/migrations/versions/2017-03-16_18-10_db527d8c4c78_add_db_verbose_name.py
@@ -28,8 +28,8 @@ down_revision = "b318dfe5fb6c"
import logging # noqa: E402
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
def upgrade():
diff --git a/superset/migrations/versions/2017-03-28_11-28_a6c18f869a4e_query_start_running_time.py b/superset/migrations/versions/2017-03-28_11-28_a6c18f869a4e_query_start_running_time.py
index d0f163ab5f..13db518afd 100644
--- a/superset/migrations/versions/2017-03-28_11-28_a6c18f869a4e_query_start_running_time.py
+++ b/superset/migrations/versions/2017-03-28_11-28_a6c18f869a4e_query_start_running_time.py
@@ -22,8 +22,9 @@ Create Date: 2017-03-28 11:28:41.387182
"""
-import sqlalchemy as sa
from alembic import op
+import sqlalchemy as sa
+
# revision identifiers, used by Alembic.
revision = "a6c18f869a4e"
diff --git a/superset/migrations/versions/2017-03-29_15-04_2fcdcb35e487_saved_queries.py b/superset/migrations/versions/2017-03-29_15-04_2fcdcb35e487_saved_queries.py
index da6f48b7a2..2b975c9ddc 100644
--- a/superset/migrations/versions/2017-03-29_15-04_2fcdcb35e487_saved_queries.py
+++ b/superset/migrations/versions/2017-03-29_15-04_2fcdcb35e487_saved_queries.py
@@ -22,8 +22,9 @@ Create Date: 2017-03-29 15:04:35.734190
"""
-import sqlalchemy as sa
from alembic import op
+import sqlalchemy as sa
+
# revision identifiers, used by Alembic.
revision = "2fcdcb35e487"
diff --git a/superset/migrations/versions/2017-04-25_10-00_a65458420354_add_result_backend_time_logging.py b/superset/migrations/versions/2017-04-25_10-00_a65458420354_add_result_backend_time_logging.py
index f7b5152685..c985aae664 100644
--- a/superset/migrations/versions/2017-04-25_10-00_a65458420354_add_result_backend_time_logging.py
+++ b/superset/migrations/versions/2017-04-25_10-00_a65458420354_add_result_backend_time_logging.py
@@ -22,8 +22,9 @@ Create Date: 2017-04-25 10:00:58.053120
"""
-import sqlalchemy as sa
from alembic import op
+import sqlalchemy as sa
+
# revision identifiers, used by Alembic.
revision = "a65458420354"
diff --git a/superset/migrations/versions/2017-07-26_20-09_ca69c70ec99b_tracking_url.py b/superset/migrations/versions/2017-07-26_20-09_ca69c70ec99b_tracking_url.py
index de261b81e9..1aef5a094d 100644
--- a/superset/migrations/versions/2017-07-26_20-09_ca69c70ec99b_tracking_url.py
+++ b/superset/migrations/versions/2017-07-26_20-09_ca69c70ec99b_tracking_url.py
@@ -26,8 +26,8 @@ Create Date: 2017-07-26 20:09:52.606416
revision = "ca69c70ec99b"
down_revision = "a65458420354"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
def upgrade():
diff --git a/superset/migrations/versions/2017-08-31_17-35_a9c47e2c1547_add_impersonate_user_to_dbs.py b/superset/migrations/versions/2017-08-31_17-35_a9c47e2c1547_add_impersonate_user_to_dbs.py
index e0ce55770f..ee4edcd9ef 100644
--- a/superset/migrations/versions/2017-08-31_17-35_a9c47e2c1547_add_impersonate_user_to_dbs.py
+++ b/superset/migrations/versions/2017-08-31_17-35_a9c47e2c1547_add_impersonate_user_to_dbs.py
@@ -26,8 +26,8 @@ Create Date: 2017-08-31 17:35:58.230723
revision = "a9c47e2c1547"
down_revision = "ca69c70ec99b"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
def upgrade():
diff --git a/superset/migrations/versions/2017-09-13_16-36_ddd6ebdd853b_annotations.py b/superset/migrations/versions/2017-09-13_16-36_ddd6ebdd853b_annotations.py
index eb06712333..c53869ea31 100644
--- a/superset/migrations/versions/2017-09-13_16-36_ddd6ebdd853b_annotations.py
+++ b/superset/migrations/versions/2017-09-13_16-36_ddd6ebdd853b_annotations.py
@@ -22,8 +22,9 @@ Create Date: 2017-09-13 16:36:39.144489
"""
-import sqlalchemy as sa
from alembic import op
+import sqlalchemy as sa
+
# revision identifiers, used by Alembic.
revision = "ddd6ebdd853b"
diff --git a/superset/migrations/versions/2017-09-15_15-09_19a814813610_adding_metric_warning_text.py b/superset/migrations/versions/2017-09-15_15-09_19a814813610_adding_metric_warning_text.py
index 826f9f2d32..0d24f06398 100644
--- a/superset/migrations/versions/2017-09-15_15-09_19a814813610_adding_metric_warning_text.py
+++ b/superset/migrations/versions/2017-09-15_15-09_19a814813610_adding_metric_warning_text.py
@@ -26,8 +26,8 @@ Create Date: 2017-09-15 15:09:40.495345
revision = "19a814813610"
down_revision = "ca69c70ec99b"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
def upgrade():
diff --git a/superset/migrations/versions/2017-10-03_14-37_4736ec66ce19_.py b/superset/migrations/versions/2017-10-03_14-37_4736ec66ce19_.py
index f6d5610d97..e61837f816 100644
--- a/superset/migrations/versions/2017-10-03_14-37_4736ec66ce19_.py
+++ b/superset/migrations/versions/2017-10-03_14-37_4736ec66ce19_.py
@@ -24,8 +24,8 @@ Create Date: 2017-10-03 14:37:01.376578
import logging
-import sqlalchemy as sa
from alembic import op
+import sqlalchemy as sa
from superset.utils.core import (
generic_find_fk_constraint_name,
@@ -33,6 +33,7 @@ from superset.utils.core import (
generic_find_uq_constraint_name,
)
+
# revision identifiers, used by Alembic.
revision = "4736ec66ce19"
down_revision = "f959a6652acd"
diff --git a/superset/migrations/versions/2017-12-08_08-19_67a6ac9b727b_update_spatial_params.py b/superset/migrations/versions/2017-12-08_08-19_67a6ac9b727b_update_spatial_params.py
index df5c115372..a6558560ae 100644
--- a/superset/migrations/versions/2017-12-08_08-19_67a6ac9b727b_update_spatial_params.py
+++ b/superset/migrations/versions/2017-12-08_08-19_67a6ac9b727b_update_spatial_params.py
@@ -30,6 +30,7 @@ from sqlalchemy.ext.declarative import declarative_base
from superset import db
+
# revision identifiers, used by Alembic.
revision = "67a6ac9b727b"
down_revision = "4736ec66ce19"
diff --git a/superset/migrations/versions/2017-12-17_11-06_21e88bc06c02_annotation_migration.py b/superset/migrations/versions/2017-12-17_11-06_21e88bc06c02_annotation_migration.py
index 9c28d6cc23..94afda498a 100644
--- a/superset/migrations/versions/2017-12-17_11-06_21e88bc06c02_annotation_migration.py
+++ b/superset/migrations/versions/2017-12-17_11-06_21e88bc06c02_annotation_migration.py
@@ -30,6 +30,7 @@ from sqlalchemy.ext.declarative import declarative_base
from superset import db
+
# revision identifiers, used by Alembic.
revision = "21e88bc06c02"
down_revision = "67a6ac9b727b"
diff --git a/superset/migrations/versions/2018-02-13_08-07_e866bd2d4976_smaller_grid.py b/superset/migrations/versions/2018-02-13_08-07_e866bd2d4976_smaller_grid.py
index 3a4a7634eb..6f640f7b9a 100644
--- a/superset/migrations/versions/2018-02-13_08-07_e866bd2d4976_smaller_grid.py
+++ b/superset/migrations/versions/2018-02-13_08-07_e866bd2d4976_smaller_grid.py
@@ -23,12 +23,13 @@ Create Date: 2018-02-13 08:07:40.766277
import json
-import sqlalchemy as sa
from alembic import op
+import sqlalchemy as sa
from sqlalchemy.ext.declarative import declarative_base
from superset import db
+
revision = "e866bd2d4976"
down_revision = "21e88bc06c02"
diff --git a/superset/migrations/versions/2018-03-06_12-24_e68c4473c581_allow_multi_schema_metadata_fetch.py b/superset/migrations/versions/2018-03-06_12-24_e68c4473c581_allow_multi_schema_metadata_fetch.py
index cd0eed8b3c..38edbb5904 100644
--- a/superset/migrations/versions/2018-03-06_12-24_e68c4473c581_allow_multi_schema_metadata_fetch.py
+++ b/superset/migrations/versions/2018-03-06_12-24_e68c4473c581_allow_multi_schema_metadata_fetch.py
@@ -22,8 +22,9 @@ Create Date: 2018-03-06 12:24:30.896293
"""
-import sqlalchemy as sa
from alembic import op
+import sqlalchemy as sa
+
# revision identifiers, used by Alembic.
revision = "e68c4473c581"
diff --git a/superset/migrations/versions/2018-03-20_19-47_f231d82b9b26_.py b/superset/migrations/versions/2018-03-20_19-47_f231d82b9b26_.py
index a0d2838597..449a2f90ab 100644
--- a/superset/migrations/versions/2018-03-20_19-47_f231d82b9b26_.py
+++ b/superset/migrations/versions/2018-03-20_19-47_f231d82b9b26_.py
@@ -22,11 +22,12 @@ Create Date: 2018-03-20 19:47:54.991259
"""
-import sqlalchemy as sa
from alembic import op
+import sqlalchemy as sa
from superset.utils.core import generic_find_uq_constraint_name
+
# revision identifiers, used by Alembic.
revision = "f231d82b9b26"
down_revision = "e68c4473c581"
diff --git a/superset/migrations/versions/2018-03-30_14-00_d6ffdf31bdd4_add_published_column_to_dashboards.py b/superset/migrations/versions/2018-03-30_14-00_d6ffdf31bdd4_add_published_column_to_dashboards.py
index 2113c6c13a..eda267baad 100644
--- a/superset/migrations/versions/2018-03-30_14-00_d6ffdf31bdd4_add_published_column_to_dashboards.py
+++ b/superset/migrations/versions/2018-03-30_14-00_d6ffdf31bdd4_add_published_column_to_dashboards.py
@@ -26,8 +26,8 @@ Create Date: 2018-03-30 14:00:44.929483
revision = "d6ffdf31bdd4"
down_revision = "b4a38aa87893"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
def upgrade():
diff --git a/superset/migrations/versions/2018-04-03_08-19_130915240929_is_sqllab_viz_flow.py b/superset/migrations/versions/2018-04-03_08-19_130915240929_is_sqllab_viz_flow.py
index 63e0d1ff26..5248eec5f3 100644
--- a/superset/migrations/versions/2018-04-03_08-19_130915240929_is_sqllab_viz_flow.py
+++ b/superset/migrations/versions/2018-04-03_08-19_130915240929_is_sqllab_viz_flow.py
@@ -22,12 +22,13 @@ Create Date: 2018-04-03 08:19:34.098789
"""
-import sqlalchemy as sa
from alembic import op
+import sqlalchemy as sa
from sqlalchemy.ext.declarative import declarative_base
from superset import db
+
# revision identifiers, used by Alembic.
revision = "130915240929"
down_revision = "f231d82b9b26"
diff --git a/superset/migrations/versions/2018-04-08_07-34_30bb17c0dc76_.py b/superset/migrations/versions/2018-04-08_07-34_30bb17c0dc76_.py
index 811330bf48..70ccaa5ce3 100644
--- a/superset/migrations/versions/2018-04-08_07-34_30bb17c0dc76_.py
+++ b/superset/migrations/versions/2018-04-08_07-34_30bb17c0dc76_.py
@@ -28,8 +28,8 @@ down_revision = "f231d82b9b26"
from datetime import date # noqa: E402
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
def upgrade():
diff --git a/superset/migrations/versions/2018-04-10_11-19_bf706ae5eb46_cal_heatmap_metric_to_metrics.py b/superset/migrations/versions/2018-04-10_11-19_bf706ae5eb46_cal_heatmap_metric_to_metrics.py
index 9c660b651a..7759b2cc28 100644
--- a/superset/migrations/versions/2018-04-10_11-19_bf706ae5eb46_cal_heatmap_metric_to_metrics.py
+++ b/superset/migrations/versions/2018-04-10_11-19_bf706ae5eb46_cal_heatmap_metric_to_metrics.py
@@ -30,6 +30,7 @@ from sqlalchemy.ext.declarative import declarative_base
from superset import db
+
Base = declarative_base()
# revision identifiers, used by Alembic.
diff --git a/superset/migrations/versions/2018-05-09_23-45_e502db2af7be_add_template_params_to_tables.py b/superset/migrations/versions/2018-05-09_23-45_e502db2af7be_add_template_params_to_tables.py
index 27f0f137d3..12906c8540 100644
--- a/superset/migrations/versions/2018-05-09_23-45_e502db2af7be_add_template_params_to_tables.py
+++ b/superset/migrations/versions/2018-05-09_23-45_e502db2af7be_add_template_params_to_tables.py
@@ -26,8 +26,8 @@ Create Date: 2018-05-09 23:45:14.296283
revision = "e502db2af7be"
down_revision = "5ccf602336a0"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
def upgrade():
diff --git a/superset/migrations/versions/2018-05-15_20-28_6c7537a6004a_models_for_email_reports.py b/superset/migrations/versions/2018-05-15_20-28_6c7537a6004a_models_for_email_reports.py
index 3b53fc5991..9e65eedfdf 100644
--- a/superset/migrations/versions/2018-05-15_20-28_6c7537a6004a_models_for_email_reports.py
+++ b/superset/migrations/versions/2018-05-15_20-28_6c7537a6004a_models_for_email_reports.py
@@ -26,8 +26,8 @@ Create Date: 2018-05-15 20:28:51.977572
revision = "6c7537a6004a"
down_revision = "a61b40f9f57f"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
def upgrade():
diff --git a/superset/migrations/versions/2018-06-04_11-12_c5756bec8b47_time_grain_sqla.py b/superset/migrations/versions/2018-06-04_11-12_c5756bec8b47_time_grain_sqla.py
index b0f00e219a..0876150401 100644
--- a/superset/migrations/versions/2018-06-04_11-12_c5756bec8b47_time_grain_sqla.py
+++ b/superset/migrations/versions/2018-06-04_11-12_c5756bec8b47_time_grain_sqla.py
@@ -34,6 +34,7 @@ from sqlalchemy.ext.declarative import declarative_base # noqa: E402
from superset import db # noqa: E402
+
Base = declarative_base()
diff --git a/superset/migrations/versions/2018-06-07_09-52_afb7730f6a9c_remove_empty_filters.py b/superset/migrations/versions/2018-06-07_09-52_afb7730f6a9c_remove_empty_filters.py
index ab11a2cf6c..3b5a233c6d 100644
--- a/superset/migrations/versions/2018-06-07_09-52_afb7730f6a9c_remove_empty_filters.py
+++ b/superset/migrations/versions/2018-06-07_09-52_afb7730f6a9c_remove_empty_filters.py
@@ -34,6 +34,7 @@ from sqlalchemy.ext.declarative import declarative_base # noqa: E402
from superset import db # noqa: E402
+
Base = declarative_base()
diff --git a/superset/migrations/versions/2018-06-13_10-20_4451805bbaa1_remove_double_percents.py b/superset/migrations/versions/2018-06-13_10-20_4451805bbaa1_remove_double_percents.py
index 80612747a7..3feb3d8223 100644
--- a/superset/migrations/versions/2018-06-13_10-20_4451805bbaa1_remove_double_percents.py
+++ b/superset/migrations/versions/2018-06-13_10-20_4451805bbaa1_remove_double_percents.py
@@ -30,11 +30,19 @@ down_revision = "bddc498dd179"
import json # noqa: E402
from alembic import op # noqa: E402
-from sqlalchemy import Column, create_engine, ForeignKey, Integer, String, Text # noqa: E402
+from sqlalchemy import ( # noqa: E402
+ Column,
+ create_engine,
+ ForeignKey,
+ Integer,
+ String,
+ Text,
+)
from sqlalchemy.ext.declarative import declarative_base # noqa: E402
from superset import db # noqa: E402
+
Base = declarative_base()
diff --git a/superset/migrations/versions/2018-06-13_14-54_bddc498dd179_adhoc_filters.py b/superset/migrations/versions/2018-06-13_14-54_bddc498dd179_adhoc_filters.py
index e3b891d29c..a9ae56fe85 100644
--- a/superset/migrations/versions/2018-06-13_14-54_bddc498dd179_adhoc_filters.py
+++ b/superset/migrations/versions/2018-06-13_14-54_bddc498dd179_adhoc_filters.py
@@ -39,6 +39,7 @@ from superset.utils.core import ( # noqa: E402
split_adhoc_filters_into_base_filters,
)
+
Base = declarative_base()
diff --git a/superset/migrations/versions/2018-06-14_14-31_80a67c5192fa_single_pie_chart_metric.py b/superset/migrations/versions/2018-06-14_14-31_80a67c5192fa_single_pie_chart_metric.py
index d25a37cbac..97756c0880 100644
--- a/superset/migrations/versions/2018-06-14_14-31_80a67c5192fa_single_pie_chart_metric.py
+++ b/superset/migrations/versions/2018-06-14_14-31_80a67c5192fa_single_pie_chart_metric.py
@@ -35,6 +35,7 @@ from sqlalchemy.ext.declarative import declarative_base # noqa: E402
from superset import db # noqa: E402
+
Base = declarative_base()
diff --git a/superset/migrations/versions/2018-07-05_15-19_3dda56f1c4c6_migrate_num_period_compare_and_period_.py b/superset/migrations/versions/2018-07-05_15-19_3dda56f1c4c6_migrate_num_period_compare_and_period_.py
index 79fbce331f..52c0c892c7 100644
--- a/superset/migrations/versions/2018-07-05_15-19_3dda56f1c4c6_migrate_num_period_compare_and_period_.py
+++ b/superset/migrations/versions/2018-07-05_15-19_3dda56f1c4c6_migrate_num_period_compare_and_period_.py
@@ -27,14 +27,15 @@ Create Date: 2018-07-05 15:19:14.609299
import datetime
import json
-import isodate
from alembic import op
+import isodate
from sqlalchemy import Column, Integer, String, Text
from sqlalchemy.ext.declarative import declarative_base
from superset import db
from superset.utils.date_parser import parse_human_timedelta
+
revision = "3dda56f1c4c6"
down_revision = "bddc498dd179"
diff --git a/superset/migrations/versions/2018-07-16_18-04_1d9e835a84f9_.py b/superset/migrations/versions/2018-07-16_18-04_1d9e835a84f9_.py
index d0f0ed2aa8..3d72fb5394 100644
--- a/superset/migrations/versions/2018-07-16_18-04_1d9e835a84f9_.py
+++ b/superset/migrations/versions/2018-07-16_18-04_1d9e835a84f9_.py
@@ -22,10 +22,11 @@ Create Date: 2018-07-16 18:04:07.764659
"""
-import sqlalchemy as sa
from alembic import op
+import sqlalchemy as sa
from sqlalchemy.sql import expression
+
# revision identifiers, used by Alembic.
revision = "1d9e835a84f9"
down_revision = "3dda56f1c4c6"
diff --git a/superset/migrations/versions/2018-07-19_23-41_c617da68de7d_form_nullable.py b/superset/migrations/versions/2018-07-19_23-41_c617da68de7d_form_nullable.py
index 8521845db4..a29e2c6006 100644
--- a/superset/migrations/versions/2018-07-19_23-41_c617da68de7d_form_nullable.py
+++ b/superset/migrations/versions/2018-07-19_23-41_c617da68de7d_form_nullable.py
@@ -33,6 +33,7 @@ from sqlalchemy.ext.declarative import declarative_base # noqa: E402
from superset import db # noqa: E402
from superset.utils.core import MediumText # noqa: E402
+
Base = declarative_base()
diff --git a/superset/migrations/versions/2018-07-20_15-31_7f2635b51f5d_update_base_columns.py b/superset/migrations/versions/2018-07-20_15-31_7f2635b51f5d_update_base_columns.py
index 4f9fdec10a..7793eb56e9 100644
--- a/superset/migrations/versions/2018-07-20_15-31_7f2635b51f5d_update_base_columns.py
+++ b/superset/migrations/versions/2018-07-20_15-31_7f2635b51f5d_update_base_columns.py
@@ -36,6 +36,7 @@ from sqlalchemy.ext.declarative import declarative_base # noqa: E402
from superset import db # noqa: E402
from superset.utils.core import generic_find_uq_constraint_name # noqa: E402
+
Base = declarative_base()
conv = {"uq": "uq_%(table_name)s_%(column_0_name)s"}
diff --git a/superset/migrations/versions/2018-07-20_15-57_e9df189e5c7e_update_base_metrics.py b/superset/migrations/versions/2018-07-20_15-57_e9df189e5c7e_update_base_metrics.py
index 1291fb13d9..7f4974a496 100644
--- a/superset/migrations/versions/2018-07-20_15-57_e9df189e5c7e_update_base_metrics.py
+++ b/superset/migrations/versions/2018-07-20_15-57_e9df189e5c7e_update_base_metrics.py
@@ -36,6 +36,7 @@ from sqlalchemy.ext.declarative import declarative_base # noqa: E402
from superset import db # noqa: E402
from superset.utils.core import generic_find_uq_constraint_name # noqa: E402
+
Base = declarative_base()
conv = {"uq": "uq_%(table_name)s_%(column_0_name)s"}
diff --git a/superset/migrations/versions/2018-07-20_16-08_937d04c16b64_update_datasources.py b/superset/migrations/versions/2018-07-20_16-08_937d04c16b64_update_datasources.py
index ef2a989e93..7dc3cc74c3 100644
--- a/superset/migrations/versions/2018-07-20_16-08_937d04c16b64_update_datasources.py
+++ b/superset/migrations/versions/2018-07-20_16-08_937d04c16b64_update_datasources.py
@@ -26,8 +26,8 @@ Create Date: 2018-07-20 16:08:10.195843
revision = "937d04c16b64"
down_revision = "d94d33dbe938"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
def upgrade():
diff --git a/superset/migrations/versions/2018-07-22_08-50_7467e77870e4_remove_aggs.py b/superset/migrations/versions/2018-07-22_08-50_7467e77870e4_remove_aggs.py
index 4b4bdbaa3a..f7ed87ad57 100644
--- a/superset/migrations/versions/2018-07-22_08-50_7467e77870e4_remove_aggs.py
+++ b/superset/migrations/versions/2018-07-22_08-50_7467e77870e4_remove_aggs.py
@@ -22,8 +22,9 @@ Create Date: 2018-07-22 08:50:01.078218
"""
-import sqlalchemy as sa
from alembic import op
+import sqlalchemy as sa
+
# revision identifiers, used by Alembic.
revision = "7467e77870e4"
diff --git a/superset/migrations/versions/2018-07-22_11-59_bebcf3fed1fe_convert_dashboard_v1_positions.py b/superset/migrations/versions/2018-07-22_11-59_bebcf3fed1fe_convert_dashboard_v1_positions.py
index f5af630a89..56fb5a08c0 100644
--- a/superset/migrations/versions/2018-07-22_11-59_bebcf3fed1fe_convert_dashboard_v1_positions.py
+++ b/superset/migrations/versions/2018-07-22_11-59_bebcf3fed1fe_convert_dashboard_v1_positions.py
@@ -24,10 +24,10 @@ Create Date: 2018-07-22 11:59:07.025119
# revision identifiers, used by Alembic.
import collections
+from functools import reduce
import json
import sys
import uuid
-from functools import reduce
from alembic import op
from sqlalchemy import Column, ForeignKey, Integer, String, Table, Text
@@ -36,6 +36,7 @@ from sqlalchemy.orm import relationship
from superset import db
+
revision = "bebcf3fed1fe"
down_revision = "fc480c87706c"
diff --git a/superset/migrations/versions/2018-07-26_11-10_c82ee8a39623_add_implicit_tags.py b/superset/migrations/versions/2018-07-26_11-10_c82ee8a39623_add_implicit_tags.py
index 42b52cfe6c..a6ec16352a 100644
--- a/superset/migrations/versions/2018-07-26_11-10_c82ee8a39623_add_implicit_tags.py
+++ b/superset/migrations/versions/2018-07-26_11-10_c82ee8a39623_add_implicit_tags.py
@@ -36,6 +36,7 @@ from sqlalchemy.ext.declarative import declarative_base, declared_attr # noqa:
from superset.tags.models import ObjectType, TagType # noqa: E402
from superset.utils.core import get_user_id # noqa: E402
+
Base = declarative_base()
diff --git a/superset/migrations/versions/2018-08-01_11-47_7fcdcde0761c_.py b/superset/migrations/versions/2018-08-01_11-47_7fcdcde0761c_.py
index 111cea4506..ed3f26c4f7 100644
--- a/superset/migrations/versions/2018-08-01_11-47_7fcdcde0761c_.py
+++ b/superset/migrations/versions/2018-08-01_11-47_7fcdcde0761c_.py
@@ -26,12 +26,13 @@ Create Date: 2018-08-01 11:47:02.233971
import json
import re
-import sqlalchemy as sa
from alembic import op
+import sqlalchemy as sa
from sqlalchemy.ext.declarative import declarative_base
from superset import db
+
revision = "7fcdcde0761c"
down_revision = "c18bd4186f15"
diff --git a/superset/migrations/versions/2018-08-06_14-38_0c5070e96b57_add_user_attributes_table.py b/superset/migrations/versions/2018-08-06_14-38_0c5070e96b57_add_user_attributes_table.py
index 6763596238..3b69104e23 100644
--- a/superset/migrations/versions/2018-08-06_14-38_0c5070e96b57_add_user_attributes_table.py
+++ b/superset/migrations/versions/2018-08-06_14-38_0c5070e96b57_add_user_attributes_table.py
@@ -26,8 +26,8 @@ Create Date: 2018-08-06 14:38:18.965248
revision = "0c5070e96b57"
down_revision = "7fcdcde0761c"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
def upgrade():
diff --git a/superset/migrations/versions/2018-08-13_11-30_1a1d627ebd8e_position_json.py b/superset/migrations/versions/2018-08-13_11-30_1a1d627ebd8e_position_json.py
index 468dc08760..b7ce52ef2d 100644
--- a/superset/migrations/versions/2018-08-13_11-30_1a1d627ebd8e_position_json.py
+++ b/superset/migrations/versions/2018-08-13_11-30_1a1d627ebd8e_position_json.py
@@ -22,11 +22,12 @@ Create Date: 2018-08-13 11:30:07.101702
"""
-import sqlalchemy as sa
from alembic import op
+import sqlalchemy as sa
from superset.utils.core import MediumText
+
# revision identifiers, used by Alembic.
revision = "1a1d627ebd8e"
down_revision = "0c5070e96b57"
diff --git a/superset/migrations/versions/2018-08-29_14-35_55e910a74826_add_metadata_column_to_annotation_model_.py b/superset/migrations/versions/2018-08-29_14-35_55e910a74826_add_metadata_column_to_annotation_model_.py
index c13cf20d69..33a323b9f8 100644
--- a/superset/migrations/versions/2018-08-29_14-35_55e910a74826_add_metadata_column_to_annotation_model_.py
+++ b/superset/migrations/versions/2018-08-29_14-35_55e910a74826_add_metadata_column_to_annotation_model_.py
@@ -26,8 +26,8 @@ Create Date: 2018-08-29 14:35:20.407743
revision = "55e910a74826"
down_revision = "1a1d627ebd8e"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
def upgrade():
diff --git a/superset/migrations/versions/2018-11-05_08-42_0b1f1ab473c0_add_extra_column_to_query.py b/superset/migrations/versions/2018-11-05_08-42_0b1f1ab473c0_add_extra_column_to_query.py
index 27e569210c..63d51a49ed 100644
--- a/superset/migrations/versions/2018-11-05_08-42_0b1f1ab473c0_add_extra_column_to_query.py
+++ b/superset/migrations/versions/2018-11-05_08-42_0b1f1ab473c0_add_extra_column_to_query.py
@@ -22,8 +22,9 @@ Create Date: 2018-11-05 08:42:56.181012
"""
-import sqlalchemy as sa
from alembic import op
+import sqlalchemy as sa
+
# revision identifiers, used by Alembic.
revision = "0b1f1ab473c0"
diff --git a/superset/migrations/versions/2018-11-12_13-31_4ce8df208545_migrate_time_range_for_default_filters.py b/superset/migrations/versions/2018-11-12_13-31_4ce8df208545_migrate_time_range_for_default_filters.py
index 74b276e276..587f0457a4 100644
--- a/superset/migrations/versions/2018-11-12_13-31_4ce8df208545_migrate_time_range_for_default_filters.py
+++ b/superset/migrations/versions/2018-11-12_13-31_4ce8df208545_migrate_time_range_for_default_filters.py
@@ -31,6 +31,7 @@ from sqlalchemy.ext.declarative import declarative_base
from superset import db
+
revision = "4ce8df208545"
down_revision = "55e910a74826"
diff --git a/superset/migrations/versions/2018-11-26_00-01_46f444d8b9b7_remove_coordinator_from_druid_cluster_.py b/superset/migrations/versions/2018-11-26_00-01_46f444d8b9b7_remove_coordinator_from_druid_cluster_.py
index 2e0d806f4a..5c9de3e316 100644
--- a/superset/migrations/versions/2018-11-26_00-01_46f444d8b9b7_remove_coordinator_from_druid_cluster_.py
+++ b/superset/migrations/versions/2018-11-26_00-01_46f444d8b9b7_remove_coordinator_from_druid_cluster_.py
@@ -22,8 +22,9 @@ Create Date: 2018-11-26 00:01:04.781119
"""
-import sqlalchemy as sa
from alembic import op
+import sqlalchemy as sa
+
# revision identifiers, used by Alembic.
revision = "46f444d8b9b7"
diff --git a/superset/migrations/versions/2018-11-27_11-53_a61b40f9f57f_remove_allow_run_sync.py b/superset/migrations/versions/2018-11-27_11-53_a61b40f9f57f_remove_allow_run_sync.py
index fad12b6f1f..8990c1c5bd 100644
--- a/superset/migrations/versions/2018-11-27_11-53_a61b40f9f57f_remove_allow_run_sync.py
+++ b/superset/migrations/versions/2018-11-27_11-53_a61b40f9f57f_remove_allow_run_sync.py
@@ -22,8 +22,9 @@ Create Date: 2018-11-27 11:53:17.512627
"""
-import sqlalchemy as sa
from alembic import op
+import sqlalchemy as sa
+
# revision identifiers, used by Alembic.
revision = "a61b40f9f57f"
diff --git a/superset/migrations/versions/2018-12-11_22-03_fb13d49b72f9_better_filters.py b/superset/migrations/versions/2018-12-11_22-03_fb13d49b72f9_better_filters.py
index 7b6676d553..189d13e582 100644
--- a/superset/migrations/versions/2018-12-11_22-03_fb13d49b72f9_better_filters.py
+++ b/superset/migrations/versions/2018-12-11_22-03_fb13d49b72f9_better_filters.py
@@ -31,6 +31,7 @@ from sqlalchemy.ext.declarative import declarative_base
from superset import db
+
# revision identifiers, used by Alembic.
revision = "fb13d49b72f9"
down_revision = "de021a1ca60d"
diff --git a/superset/migrations/versions/2018-12-13_15-38_cefabc8f7d38_increase_size_of_name_column_in_ab_view_.py b/superset/migrations/versions/2018-12-13_15-38_cefabc8f7d38_increase_size_of_name_column_in_ab_view_.py
index 63ba7c44a7..24e00bdea7 100644
--- a/superset/migrations/versions/2018-12-13_15-38_cefabc8f7d38_increase_size_of_name_column_in_ab_view_.py
+++ b/superset/migrations/versions/2018-12-13_15-38_cefabc8f7d38_increase_size_of_name_column_in_ab_view_.py
@@ -26,8 +26,8 @@ Create Date: 2018-12-13 15:38:36.772750
revision = "cefabc8f7d38"
down_revision = "6c7537a6004a"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
def upgrade():
diff --git a/superset/migrations/versions/2018-12-15_12-34_3e1b21cd94a4_change_owner_to_m2m_relation_on_.py b/superset/migrations/versions/2018-12-15_12-34_3e1b21cd94a4_change_owner_to_m2m_relation_on_.py
index 332fe88e53..07f84da0d5 100644
--- a/superset/migrations/versions/2018-12-15_12-34_3e1b21cd94a4_change_owner_to_m2m_relation_on_.py
+++ b/superset/migrations/versions/2018-12-15_12-34_3e1b21cd94a4_change_owner_to_m2m_relation_on_.py
@@ -22,13 +22,14 @@ Create Date: 2018-12-15 12:34:47.228756
"""
-import sqlalchemy as sa
from alembic import op
+import sqlalchemy as sa
# revision identifiers, used by Alembic.
from superset import db
from superset.utils.core import generic_find_fk_constraint_name
+
revision = "3e1b21cd94a4"
down_revision = "6c7537a6004a"
diff --git a/superset/migrations/versions/2019-01-14_16-00_a33a03f16c4a_add_extra_column_to_savedquery.py b/superset/migrations/versions/2019-01-14_16-00_a33a03f16c4a_add_extra_column_to_savedquery.py
index 21a1a0bf8c..47c673c065 100644
--- a/superset/migrations/versions/2019-01-14_16-00_a33a03f16c4a_add_extra_column_to_savedquery.py
+++ b/superset/migrations/versions/2019-01-14_16-00_a33a03f16c4a_add_extra_column_to_savedquery.py
@@ -41,8 +41,8 @@ Create Date: 2019-01-14 16:00:26.344439
revision = "a33a03f16c4a"
down_revision = "fb13d49b72f9"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
def upgrade():
diff --git a/superset/migrations/versions/2019-02-01_16-07_e553e78e90c5_add_druid_auth_py_py.py b/superset/migrations/versions/2019-02-01_16-07_e553e78e90c5_add_druid_auth_py_py.py
index 326b586111..72c5e0e2bb 100644
--- a/superset/migrations/versions/2019-02-01_16-07_e553e78e90c5_add_druid_auth_py_py.py
+++ b/superset/migrations/versions/2019-02-01_16-07_e553e78e90c5_add_druid_auth_py_py.py
@@ -26,8 +26,8 @@ Create Date: 2019-02-01 16:07:04.268023
revision = "e553e78e90c5"
down_revision = "18dc26817ad2"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
def upgrade():
diff --git a/superset/migrations/versions/2019-03-21_10-22_d94d33dbe938_form_strip.py b/superset/migrations/versions/2019-03-21_10-22_d94d33dbe938_form_strip.py
index 7796ad107b..d2f53b7eb2 100644
--- a/superset/migrations/versions/2019-03-21_10-22_d94d33dbe938_form_strip.py
+++ b/superset/migrations/versions/2019-03-21_10-22_d94d33dbe938_form_strip.py
@@ -33,6 +33,7 @@ from sqlalchemy.ext.declarative import declarative_base # noqa: E402
from superset import db # noqa: E402
from superset.utils.core import MediumText # noqa: E402
+
Base = declarative_base()
diff --git a/superset/migrations/versions/2019-04-09_16-27_80aa3f04bc82_add_parent_ids_in_dashboard_layout.py b/superset/migrations/versions/2019-04-09_16-27_80aa3f04bc82_add_parent_ids_in_dashboard_layout.py
index 61cb3c62ff..fee1c02be8 100644
--- a/superset/migrations/versions/2019-04-09_16-27_80aa3f04bc82_add_parent_ids_in_dashboard_layout.py
+++ b/superset/migrations/versions/2019-04-09_16-27_80aa3f04bc82_add_parent_ids_in_dashboard_layout.py
@@ -31,6 +31,7 @@ from sqlalchemy.ext.declarative import declarative_base
from superset import db
+
# revision identifiers, used by Alembic.
revision = "80aa3f04bc82"
down_revision = "45e7da7cfeba"
diff --git a/superset/migrations/versions/2019-05-06_14-30_afc69274c25a_alter_sql_column_data_type_in_query_mysql_table.py b/superset/migrations/versions/2019-05-06_14-30_afc69274c25a_alter_sql_column_data_type_in_query_mysql_table.py
index d7a907dbd7..cc6d611742 100644
--- a/superset/migrations/versions/2019-05-06_14-30_afc69274c25a_alter_sql_column_data_type_in_query_mysql_table.py
+++ b/superset/migrations/versions/2019-05-06_14-30_afc69274c25a_alter_sql_column_data_type_in_query_mysql_table.py
@@ -23,11 +23,12 @@ Create Date: 2019-05-06 14:30:26.181449
"""
-import sqlalchemy as sa
from alembic import op
+import sqlalchemy as sa
from sqlalchemy.dialects import mysql
from sqlalchemy.dialects.mysql.base import MySQLDialect
+
# revision identifiers, used by Alembic.
revision = "afc69274c25a"
down_revision = "e9df189e5c7e"
diff --git a/superset/migrations/versions/2019-06-04_10-12_d7c1a0d6f2da_remove_limit_used_from_query_model.py b/superset/migrations/versions/2019-06-04_10-12_d7c1a0d6f2da_remove_limit_used_from_query_model.py
index f2c2a756c0..e5fc0aff21 100644
--- a/superset/migrations/versions/2019-06-04_10-12_d7c1a0d6f2da_remove_limit_used_from_query_model.py
+++ b/superset/migrations/versions/2019-06-04_10-12_d7c1a0d6f2da_remove_limit_used_from_query_model.py
@@ -26,8 +26,8 @@ Create Date: 2019-06-04 10:12:36.675369
revision = "d7c1a0d6f2da"
down_revision = "afc69274c25a"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
def upgrade():
diff --git a/superset/migrations/versions/2019-06-05_11-35_b4a38aa87893_deprecate_database_expression.py b/superset/migrations/versions/2019-06-05_11-35_b4a38aa87893_deprecate_database_expression.py
index 967c44e7b8..6aab598f3d 100644
--- a/superset/migrations/versions/2019-06-05_11-35_b4a38aa87893_deprecate_database_expression.py
+++ b/superset/migrations/versions/2019-06-05_11-35_b4a38aa87893_deprecate_database_expression.py
@@ -26,8 +26,8 @@ Create Date: 2019-06-05 11:35:16.222519
revision = "b4a38aa87893"
down_revision = "ab8c66efdd01"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
def upgrade():
diff --git a/superset/migrations/versions/2019-06-28_13-17_ab8c66efdd01_resample.py b/superset/migrations/versions/2019-06-28_13-17_ab8c66efdd01_resample.py
index ea45104ee7..014b351663 100644
--- a/superset/migrations/versions/2019-06-28_13-17_ab8c66efdd01_resample.py
+++ b/superset/migrations/versions/2019-06-28_13-17_ab8c66efdd01_resample.py
@@ -35,6 +35,7 @@ from sqlalchemy.ext.declarative import declarative_base # noqa: E402
from superset import db # noqa: E402
+
Base = declarative_base()
diff --git a/superset/migrations/versions/2019-07-15_12-00_190188938582_adding_unique_constraint_on_dashboard_slices_tbl.py b/superset/migrations/versions/2019-07-15_12-00_190188938582_adding_unique_constraint_on_dashboard_slices_tbl.py
index 011a72902b..77edbabcf4 100644
--- a/superset/migrations/versions/2019-07-15_12-00_190188938582_adding_unique_constraint_on_dashboard_slices_tbl.py
+++ b/superset/migrations/versions/2019-07-15_12-00_190188938582_adding_unique_constraint_on_dashboard_slices_tbl.py
@@ -30,6 +30,7 @@ from sqlalchemy.ext.declarative import declarative_base
from superset import db
+
# revision identifiers, used by Alembic.
revision = "190188938582"
down_revision = "d6ffdf31bdd4"
diff --git a/superset/migrations/versions/2019-09-08_21-50_11c737c17cc6_deprecate_restricted_metrics.py b/superset/migrations/versions/2019-09-08_21-50_11c737c17cc6_deprecate_restricted_metrics.py
index 1f803c7943..9738110e12 100644
--- a/superset/migrations/versions/2019-09-08_21-50_11c737c17cc6_deprecate_restricted_metrics.py
+++ b/superset/migrations/versions/2019-09-08_21-50_11c737c17cc6_deprecate_restricted_metrics.py
@@ -22,8 +22,9 @@ Create Date: 2019-09-08 21:50:58.200229
"""
-import sqlalchemy as sa
from alembic import op
+import sqlalchemy as sa
+
# revision identifiers, used by Alembic.
revision = "11c737c17cc6"
diff --git a/superset/migrations/versions/2019-09-11_21-49_5afa9079866a_serialize_schema_permissions_py.py b/superset/migrations/versions/2019-09-11_21-49_5afa9079866a_serialize_schema_permissions_py.py
index 1cf60f1056..f8cce66e19 100644
--- a/superset/migrations/versions/2019-09-11_21-49_5afa9079866a_serialize_schema_permissions_py.py
+++ b/superset/migrations/versions/2019-09-11_21-49_5afa9079866a_serialize_schema_permissions_py.py
@@ -30,6 +30,7 @@ from sqlalchemy.orm import relationship
from superset import db
+
revision = "5afa9079866a"
down_revision = "db4b49eb0782"
diff --git a/superset/migrations/versions/2019-09-19_13-40_258b5280a45e_form_strip_leading_and_trailing_whitespace.py b/superset/migrations/versions/2019-09-19_13-40_258b5280a45e_form_strip_leading_and_trailing_whitespace.py
index b5d80877a1..63719412a8 100644
--- a/superset/migrations/versions/2019-09-19_13-40_258b5280a45e_form_strip_leading_and_trailing_whitespace.py
+++ b/superset/migrations/versions/2019-09-19_13-40_258b5280a45e_form_strip_leading_and_trailing_whitespace.py
@@ -31,6 +31,7 @@ from sqlalchemy.ext.declarative import declarative_base
from superset import db
from superset.utils.core import MediumText
+
Base = declarative_base()
diff --git a/superset/migrations/versions/2019-10-02_00-29_b6fa807eac07_make_names_non_nullable.py b/superset/migrations/versions/2019-10-02_00-29_b6fa807eac07_make_names_non_nullable.py
index 815f58611a..f5b8ea9b4e 100644
--- a/superset/migrations/versions/2019-10-02_00-29_b6fa807eac07_make_names_non_nullable.py
+++ b/superset/migrations/versions/2019-10-02_00-29_b6fa807eac07_make_names_non_nullable.py
@@ -22,11 +22,12 @@ Create Date: 2019-10-02 00:29:16.679272
"""
-import sqlalchemy as sa
from alembic import op
+import sqlalchemy as sa
from superset.utils.core import generic_find_fk_constraint_name
+
# revision identifiers, used by Alembic.
revision = "b6fa807eac07"
down_revision = "1495eb914ad3"
diff --git a/superset/migrations/versions/2019-10-09_15-05_cca2f5d568c8_add_encrypted_extra_to_dbs.py b/superset/migrations/versions/2019-10-09_15-05_cca2f5d568c8_add_encrypted_extra_to_dbs.py
index 5f369f2c03..4b9a5e4f33 100644
--- a/superset/migrations/versions/2019-10-09_15-05_cca2f5d568c8_add_encrypted_extra_to_dbs.py
+++ b/superset/migrations/versions/2019-10-09_15-05_cca2f5d568c8_add_encrypted_extra_to_dbs.py
@@ -26,8 +26,8 @@ Create Date: 2019-10-09 15:05:06.965042
revision = "cca2f5d568c8"
down_revision = "b6fa807eac07"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
def upgrade():
diff --git a/superset/migrations/versions/2019-10-10_13-52_1495eb914ad3_time_range.py b/superset/migrations/versions/2019-10-10_13-52_1495eb914ad3_time_range.py
index 40f7bf8f3b..b26540b46a 100644
--- a/superset/migrations/versions/2019-10-10_13-52_1495eb914ad3_time_range.py
+++ b/superset/migrations/versions/2019-10-10_13-52_1495eb914ad3_time_range.py
@@ -32,6 +32,7 @@ from sqlalchemy.ext.declarative import declarative_base
from superset import db
from superset.legacy import update_time_range
+
# revision identifiers, used by Alembic.
revision = "1495eb914ad3"
down_revision = "258b5280a45e"
diff --git a/superset/migrations/versions/2019-11-01_09-18_c2acd2cf3df2_alter_type_of_dbs_encrypted_extra.py b/superset/migrations/versions/2019-11-01_09-18_c2acd2cf3df2_alter_type_of_dbs_encrypted_extra.py
index 5fae00b330..89a93d6776 100644
--- a/superset/migrations/versions/2019-11-01_09-18_c2acd2cf3df2_alter_type_of_dbs_encrypted_extra.py
+++ b/superset/migrations/versions/2019-11-01_09-18_c2acd2cf3df2_alter_type_of_dbs_encrypted_extra.py
@@ -23,8 +23,9 @@ Create Date: 2019-11-01 09:18:36.953603
"""
-import sqlalchemy as sa
from alembic import op
+import sqlalchemy as sa
+
# revision identifiers, used by Alembic.
revision = "c2acd2cf3df2"
diff --git a/superset/migrations/versions/2019-11-06_15-23_78ee127d0d1d_reconvert_legacy_filters_into_adhoc.py b/superset/migrations/versions/2019-11-06_15-23_78ee127d0d1d_reconvert_legacy_filters_into_adhoc.py
index a9f013f408..a882638bcb 100644
--- a/superset/migrations/versions/2019-11-06_15-23_78ee127d0d1d_reconvert_legacy_filters_into_adhoc.py
+++ b/superset/migrations/versions/2019-11-06_15-23_78ee127d0d1d_reconvert_legacy_filters_into_adhoc.py
@@ -39,6 +39,7 @@ from superset.utils.core import ( # noqa: E402
convert_legacy_filters_into_adhoc,
)
+
Base = declarative_base()
diff --git a/superset/migrations/versions/2019-11-13_11-05_db4b49eb0782_add_tables_for_sql_lab_state.py b/superset/migrations/versions/2019-11-13_11-05_db4b49eb0782_add_tables_for_sql_lab_state.py
index 44efe9c8ad..e3cb76a1a0 100644
--- a/superset/migrations/versions/2019-11-13_11-05_db4b49eb0782_add_tables_for_sql_lab_state.py
+++ b/superset/migrations/versions/2019-11-13_11-05_db4b49eb0782_add_tables_for_sql_lab_state.py
@@ -26,8 +26,8 @@ Create Date: 2019-11-13 11:05:30.122167
revision = "db4b49eb0782"
down_revision = "78ee127d0d1d"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
def upgrade():
diff --git a/superset/migrations/versions/2019-12-03_10-24_817e1c9b09d0_add_not_null_to_dbs_sqlalchemy_url.py b/superset/migrations/versions/2019-12-03_10-24_817e1c9b09d0_add_not_null_to_dbs_sqlalchemy_url.py
index 042e551b53..7649103c25 100644
--- a/superset/migrations/versions/2019-12-03_10-24_817e1c9b09d0_add_not_null_to_dbs_sqlalchemy_url.py
+++ b/superset/migrations/versions/2019-12-03_10-24_817e1c9b09d0_add_not_null_to_dbs_sqlalchemy_url.py
@@ -22,8 +22,9 @@ Create Date: 2019-12-03 10:24:16.201580
"""
-import sqlalchemy as sa
from alembic import op
+import sqlalchemy as sa
+
# revision identifiers, used by Alembic.
revision = "817e1c9b09d0"
diff --git a/superset/migrations/versions/2019-12-03_13-50_89115a40e8ea_change_table_schema_description_to_long_.py b/superset/migrations/versions/2019-12-03_13-50_89115a40e8ea_change_table_schema_description_to_long_.py
index cf5f155cf0..9af8ed836d 100644
--- a/superset/migrations/versions/2019-12-03_13-50_89115a40e8ea_change_table_schema_description_to_long_.py
+++ b/superset/migrations/versions/2019-12-03_13-50_89115a40e8ea_change_table_schema_description_to_long_.py
@@ -26,8 +26,8 @@ Create Date: 2019-12-03 13:50:24.746867
revision = "89115a40e8ea"
down_revision = "5afa9079866a"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
from sqlalchemy.dialects import mysql # noqa: E402
from sqlalchemy.dialects.mysql.base import MySQLDialect # noqa: E402
diff --git a/superset/migrations/versions/2019-12-04_17-07_0a6f12f60c73_add_role_level_security.py b/superset/migrations/versions/2019-12-04_17-07_0a6f12f60c73_add_role_level_security.py
index d248578707..df325e0c45 100644
--- a/superset/migrations/versions/2019-12-04_17-07_0a6f12f60c73_add_role_level_security.py
+++ b/superset/migrations/versions/2019-12-04_17-07_0a6f12f60c73_add_role_level_security.py
@@ -26,8 +26,8 @@ Create Date: 2019-12-04 17:07:54.390805
revision = "0a6f12f60c73"
down_revision = "3325d4caccc8"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
def upgrade():
diff --git a/superset/migrations/versions/2020-01-08_01-17_e96dbf2cfef0_datasource_cluster_fk.py b/superset/migrations/versions/2020-01-08_01-17_e96dbf2cfef0_datasource_cluster_fk.py
index 9682ee6c58..fb6e7680a1 100644
--- a/superset/migrations/versions/2020-01-08_01-17_e96dbf2cfef0_datasource_cluster_fk.py
+++ b/superset/migrations/versions/2020-01-08_01-17_e96dbf2cfef0_datasource_cluster_fk.py
@@ -22,14 +22,15 @@ Create Date: 2020-01-08 01:17:40.127610
"""
-import sqlalchemy as sa
from alembic import op
+import sqlalchemy as sa
from superset.utils.core import (
generic_find_fk_constraint_name,
generic_find_uq_constraint_name,
)
+
# revision identifiers, used by Alembic.
revision = "e96dbf2cfef0"
down_revision = "817e1c9b09d0"
diff --git a/superset/migrations/versions/2020-02-07_14-13_3325d4caccc8_dashboard_scoped_filters.py b/superset/migrations/versions/2020-02-07_14-13_3325d4caccc8_dashboard_scoped_filters.py
index f925b54b26..92cb713e49 100644
--- a/superset/migrations/versions/2020-02-07_14-13_3325d4caccc8_dashboard_scoped_filters.py
+++ b/superset/migrations/versions/2020-02-07_14-13_3325d4caccc8_dashboard_scoped_filters.py
@@ -34,6 +34,7 @@ from sqlalchemy.orm import relationship
from superset import db
from superset.utils.dashboard_filter_scopes_converter import convert_filter_scopes
+
revision = "3325d4caccc8"
down_revision = "e96dbf2cfef0"
diff --git a/superset/migrations/versions/2020-02-20_08-52_72428d1ea401_add_tmp_schema_name_to_the_query_object.py b/superset/migrations/versions/2020-02-20_08-52_72428d1ea401_add_tmp_schema_name_to_the_query_object.py
index bb21982910..6e0ce9b831 100644
--- a/superset/migrations/versions/2020-02-20_08-52_72428d1ea401_add_tmp_schema_name_to_the_query_object.py
+++ b/superset/migrations/versions/2020-02-20_08-52_72428d1ea401_add_tmp_schema_name_to_the_query_object.py
@@ -26,8 +26,8 @@ Create Date: 2020-02-20 08:52:22.877902
revision = "72428d1ea401"
down_revision = "0a6f12f60c73"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
def upgrade():
diff --git a/superset/migrations/versions/2020-03-25_10-42_f9a30386bd74_cleanup_time_grainularity.py b/superset/migrations/versions/2020-03-25_10-42_f9a30386bd74_cleanup_time_grainularity.py
index fd1469a6df..96d86e4019 100644
--- a/superset/migrations/versions/2020-03-25_10-42_f9a30386bd74_cleanup_time_grainularity.py
+++ b/superset/migrations/versions/2020-03-25_10-42_f9a30386bd74_cleanup_time_grainularity.py
@@ -34,6 +34,7 @@ from sqlalchemy.ext.declarative import declarative_base # noqa: E402
from superset import db # noqa: E402
+
Base = declarative_base()
diff --git a/superset/migrations/versions/2020-03-25_10-49_b5998378c225_add_certificate_to_dbs.py b/superset/migrations/versions/2020-03-25_10-49_b5998378c225_add_certificate_to_dbs.py
index 78f53466c7..fbfdcf27c0 100644
--- a/superset/migrations/versions/2020-03-25_10-49_b5998378c225_add_certificate_to_dbs.py
+++ b/superset/migrations/versions/2020-03-25_10-49_b5998378c225_add_certificate_to_dbs.py
@@ -27,8 +27,8 @@ revision = "b5998378c225"
down_revision = "72428d1ea401"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
def upgrade():
diff --git a/superset/migrations/versions/2020-04-24_10-46_e557699a813e_add_tables_relation_to_row_level_.py b/superset/migrations/versions/2020-04-24_10-46_e557699a813e_add_tables_relation_to_row_level_.py
index 1efa321b60..2775929cdf 100644
--- a/superset/migrations/versions/2020-04-24_10-46_e557699a813e_add_tables_relation_to_row_level_.py
+++ b/superset/migrations/versions/2020-04-24_10-46_e557699a813e_add_tables_relation_to_row_level_.py
@@ -26,8 +26,8 @@ Create Date: 2020-04-24 10:46:24.119363
revision = "e557699a813e"
down_revision = "743a117f0d98"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
from superset.utils.core import generic_find_fk_constraint_name # noqa: E402
diff --git a/superset/migrations/versions/2020-04-29_09-24_620241d1153f_update_time_grain_sqla.py b/superset/migrations/versions/2020-04-29_09-24_620241d1153f_update_time_grain_sqla.py
index 3492d77dd1..68dd0c90b4 100644
--- a/superset/migrations/versions/2020-04-29_09-24_620241d1153f_update_time_grain_sqla.py
+++ b/superset/migrations/versions/2020-04-29_09-24_620241d1153f_update_time_grain_sqla.py
@@ -35,6 +35,7 @@ from sqlalchemy.ext.declarative import declarative_base # noqa: E402
from superset import db, db_engine_specs # noqa: E402
from superset.databases.utils import make_url_safe # noqa: E402
+
Base = declarative_base()
diff --git a/superset/migrations/versions/2020-05-12_12-59_ea396d202291_ctas_method_in_query.py b/superset/migrations/versions/2020-05-12_12-59_ea396d202291_ctas_method_in_query.py
index 38e26845b8..46737a4ba3 100644
--- a/superset/migrations/versions/2020-05-12_12-59_ea396d202291_ctas_method_in_query.py
+++ b/superset/migrations/versions/2020-05-12_12-59_ea396d202291_ctas_method_in_query.py
@@ -26,8 +26,8 @@ Create Date: 2020-05-12 12:59:26.583276
revision = "ea396d202291"
down_revision = "e557699a813e"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
def upgrade():
diff --git a/superset/migrations/versions/2020-05-13_21-01_743a117f0d98_add_slack_to_the_schedule.py b/superset/migrations/versions/2020-05-13_21-01_743a117f0d98_add_slack_to_the_schedule.py
index 3179cd57ff..0e075c5b7d 100644
--- a/superset/migrations/versions/2020-05-13_21-01_743a117f0d98_add_slack_to_the_schedule.py
+++ b/superset/migrations/versions/2020-05-13_21-01_743a117f0d98_add_slack_to_the_schedule.py
@@ -26,8 +26,8 @@ Create Date: 2020-05-13 21:01:26.163478
revision = "743a117f0d98"
down_revision = "620241d1153f"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
def upgrade():
diff --git a/superset/migrations/versions/2020-05-26_23-21_2f1d15e8a6af_add_alerts.py b/superset/migrations/versions/2020-05-26_23-21_2f1d15e8a6af_add_alerts.py
index c0243717f4..e760f92932 100644
--- a/superset/migrations/versions/2020-05-26_23-21_2f1d15e8a6af_add_alerts.py
+++ b/superset/migrations/versions/2020-05-26_23-21_2f1d15e8a6af_add_alerts.py
@@ -26,8 +26,8 @@ Create Date: 2020-05-26 23:21:50.059635
revision = "2f1d15e8a6af"
down_revision = "a72cb0ebeb22"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
def upgrade():
diff --git a/superset/migrations/versions/2020-06-21_19-50_a72cb0ebeb22_deprecate_dbs_perm_column.py b/superset/migrations/versions/2020-06-21_19-50_a72cb0ebeb22_deprecate_dbs_perm_column.py
index 048ac11e14..5990650673 100644
--- a/superset/migrations/versions/2020-06-21_19-50_a72cb0ebeb22_deprecate_dbs_perm_column.py
+++ b/superset/migrations/versions/2020-06-21_19-50_a72cb0ebeb22_deprecate_dbs_perm_column.py
@@ -21,8 +21,9 @@ Revises: ea396d202291
Create Date: 2020-06-21 19:50:51.630917
"""
-import sqlalchemy as sa
from alembic import op
+import sqlalchemy as sa
+
# revision identifiers, used by Alembic.
revision = "a72cb0ebeb22"
diff --git a/superset/migrations/versions/2020-07-09_17-12_73fd22e742ab_add_dynamic_plugins_py.py b/superset/migrations/versions/2020-07-09_17-12_73fd22e742ab_add_dynamic_plugins_py.py
index b6a20148c1..fa28bd70c0 100644
--- a/superset/migrations/versions/2020-07-09_17-12_73fd22e742ab_add_dynamic_plugins_py.py
+++ b/superset/migrations/versions/2020-07-09_17-12_73fd22e742ab_add_dynamic_plugins_py.py
@@ -26,8 +26,8 @@ Create Date: 2020-07-09 17:12:00.686702
revision = "73fd22e742ab"
down_revision = "ab104a954a8f"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
def upgrade():
diff --git a/superset/migrations/versions/2020-08-08_18-10_f2672aa8350a_add_slack_to_alerts.py b/superset/migrations/versions/2020-08-08_18-10_f2672aa8350a_add_slack_to_alerts.py
index e87591fe8f..4c2c208ae9 100644
--- a/superset/migrations/versions/2020-08-08_18-10_f2672aa8350a_add_slack_to_alerts.py
+++ b/superset/migrations/versions/2020-08-08_18-10_f2672aa8350a_add_slack_to_alerts.py
@@ -26,8 +26,8 @@ Create Date: 2020-08-08 18:10:51.973551
revision = "f2672aa8350a"
down_revision = "2f1d15e8a6af"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
def upgrade():
diff --git a/superset/migrations/versions/2020-08-12_00-24_978245563a02_migrate_iframe_to_dash_markdown.py b/superset/migrations/versions/2020-08-12_00-24_978245563a02_migrate_iframe_to_dash_markdown.py
index c59abc8d46..2cc12b4731 100644
--- a/superset/migrations/versions/2020-08-12_00-24_978245563a02_migrate_iframe_to_dash_markdown.py
+++ b/superset/migrations/versions/2020-08-12_00-24_978245563a02_migrate_iframe_to_dash_markdown.py
@@ -22,10 +22,10 @@ Create Date: 2020-08-12 00:24:39.617899
"""
+from collections import defaultdict
import json
import logging
import uuid
-from collections import defaultdict
from alembic import op
from sqlalchemy import Column, ForeignKey, Integer, String, Table, Text
@@ -34,6 +34,7 @@ from sqlalchemy.orm import relationship
from superset import db
+
# revision identifiers, used by Alembic.
revision = "978245563a02"
down_revision = "f2672aa8350a"
diff --git a/superset/migrations/versions/2020-08-12_10-01_f120347acb39_add_extra_column_to_tables_and_metrics.py b/superset/migrations/versions/2020-08-12_10-01_f120347acb39_add_extra_column_to_tables_and_metrics.py
index 2bee1ee14c..f76b4d78a3 100644
--- a/superset/migrations/versions/2020-08-12_10-01_f120347acb39_add_extra_column_to_tables_and_metrics.py
+++ b/superset/migrations/versions/2020-08-12_10-01_f120347acb39_add_extra_column_to_tables_and_metrics.py
@@ -26,8 +26,8 @@ Create Date: 2020-08-12 10:01:43.531845
revision = "f120347acb39"
down_revision = "f2672aa8350a"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
def upgrade():
diff --git a/superset/migrations/versions/2020-08-28_17-16_175ea3592453_cache_lookup.py b/superset/migrations/versions/2020-08-28_17-16_175ea3592453_cache_lookup.py
index da3cd807db..081a05390e 100644
--- a/superset/migrations/versions/2020-08-28_17-16_175ea3592453_cache_lookup.py
+++ b/superset/migrations/versions/2020-08-28_17-16_175ea3592453_cache_lookup.py
@@ -26,8 +26,8 @@ Create Date: 2020-08-28 17:16:57.379425
revision = "175ea3592453"
down_revision = "f80a3b88324b"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
def upgrade():
diff --git a/superset/migrations/versions/2020-08-31_20-30_2e5a0ee25ed4_refractor_alerting.py b/superset/migrations/versions/2020-08-31_20-30_2e5a0ee25ed4_refractor_alerting.py
index d6c2b4a531..a0552e0378 100644
--- a/superset/migrations/versions/2020-08-31_20-30_2e5a0ee25ed4_refractor_alerting.py
+++ b/superset/migrations/versions/2020-08-31_20-30_2e5a0ee25ed4_refractor_alerting.py
@@ -26,8 +26,8 @@ Create Date: 2020-08-31 20:30:30.781478
revision = "2e5a0ee25ed4"
down_revision = "f80a3b88324b"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
from sqlalchemy.dialects import mysql # noqa: E402
diff --git a/superset/migrations/versions/2020-09-15_18-22_e5ef6828ac4e_add_rls_filter_type_and_grouping_key.py b/superset/migrations/versions/2020-09-15_18-22_e5ef6828ac4e_add_rls_filter_type_and_grouping_key.py
index d28633c09b..4282f791a3 100644
--- a/superset/migrations/versions/2020-09-15_18-22_e5ef6828ac4e_add_rls_filter_type_and_grouping_key.py
+++ b/superset/migrations/versions/2020-09-15_18-22_e5ef6828ac4e_add_rls_filter_type_and_grouping_key.py
@@ -26,8 +26,8 @@ Create Date: 2020-09-15 18:22:40.130985
revision = "e5ef6828ac4e"
down_revision = "ae19b4ee3692"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
from superset.utils import core as utils # noqa: E402
diff --git a/superset/migrations/versions/2020-09-24_12-04_3fbbc6e8d654_fix_data_access_permissions_for_virtual_.py b/superset/migrations/versions/2020-09-24_12-04_3fbbc6e8d654_fix_data_access_permissions_for_virtual_.py
index 47be424865..115420a308 100644
--- a/superset/migrations/versions/2020-09-24_12-04_3fbbc6e8d654_fix_data_access_permissions_for_virtual_.py
+++ b/superset/migrations/versions/2020-09-24_12-04_3fbbc6e8d654_fix_data_access_permissions_for_virtual_.py
@@ -43,6 +43,7 @@ from sqlalchemy.exc import SQLAlchemyError # noqa: E402
from sqlalchemy.ext.declarative import declarative_base # noqa: E402
from sqlalchemy.orm import backref, relationship # noqa: E402
+
Base = declarative_base()
# Partial freeze of the current metadata db schema
diff --git a/superset/migrations/versions/2020-09-28_17-57_b56500de1855_add_uuid_column_to_import_mixin.py b/superset/migrations/versions/2020-09-28_17-57_b56500de1855_add_uuid_column_to_import_mixin.py
index e92c1f0650..ec7be51a55 100644
--- a/superset/migrations/versions/2020-09-28_17-57_b56500de1855_add_uuid_column_to_import_mixin.py
+++ b/superset/migrations/versions/2020-09-28_17-57_b56500de1855_add_uuid_column_to_import_mixin.py
@@ -23,12 +23,12 @@ Create Date: 2020-09-28 17:57:23.128142
"""
import json
-import os
from json.decoder import JSONDecodeError
+import os
from uuid import uuid4
-import sqlalchemy as sa
from alembic import op
+import sqlalchemy as sa
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import load_only
from sqlalchemy_utils import UUIDType
@@ -37,6 +37,7 @@ from superset import db
from superset.migrations.shared.utils import assign_uuids
from superset.utils import core as utils
+
# revision identifiers, used by Alembic.
revision = "b56500de1855"
down_revision = "18532d70ab98"
diff --git a/superset/migrations/versions/2020-10-05_18-10_af30ca79208f_collapse_alerting_models_into_a_single_.py b/superset/migrations/versions/2020-10-05_18-10_af30ca79208f_collapse_alerting_models_into_a_single_.py
index 9502a66f4d..3d04fb2387 100644
--- a/superset/migrations/versions/2020-10-05_18-10_af30ca79208f_collapse_alerting_models_into_a_single_.py
+++ b/superset/migrations/versions/2020-10-05_18-10_af30ca79208f_collapse_alerting_models_into_a_single_.py
@@ -22,8 +22,8 @@ Create Date: 2020-10-05 18:10:52.272047
"""
-import sqlalchemy as sa
from alembic import op
+import sqlalchemy as sa
from sqlalchemy.dialects.sqlite.base import SQLiteDialect
from sqlalchemy.ext.declarative import declarative_base, declared_attr
from sqlalchemy.orm import backref, relationship, RelationshipProperty
@@ -31,6 +31,7 @@ from sqlalchemy.orm import backref, relationship, RelationshipProperty
from superset import db
from superset.utils.core import generic_find_fk_constraint_name
+
revision = "af30ca79208f"
down_revision = "b56500de1855"
diff --git a/superset/migrations/versions/2020-10-20_17-28_585b0b1a7b18_add_exec_info_to_saved_queries.py b/superset/migrations/versions/2020-10-20_17-28_585b0b1a7b18_add_exec_info_to_saved_queries.py
index ec0891ce69..36179bac6c 100644
--- a/superset/migrations/versions/2020-10-20_17-28_585b0b1a7b18_add_exec_info_to_saved_queries.py
+++ b/superset/migrations/versions/2020-10-20_17-28_585b0b1a7b18_add_exec_info_to_saved_queries.py
@@ -26,8 +26,8 @@ Create Date: 2020-10-20 17:28:22.857694
revision = "585b0b1a7b18"
down_revision = "af30ca79208f"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
def upgrade():
diff --git a/superset/migrations/versions/2020-10-21_21-09_96e99fb176a0_add_import_mixing_to_saved_query.py b/superset/migrations/versions/2020-10-21_21-09_96e99fb176a0_add_import_mixing_to_saved_query.py
index b3f57cf358..341a261563 100644
--- a/superset/migrations/versions/2020-10-21_21-09_96e99fb176a0_add_import_mixing_to_saved_query.py
+++ b/superset/migrations/versions/2020-10-21_21-09_96e99fb176a0_add_import_mixing_to_saved_query.py
@@ -25,8 +25,8 @@ Create Date: 2020-10-21 21:09:55.945956
import os
from uuid import uuid4
-import sqlalchemy as sa
from alembic import op
+import sqlalchemy as sa
from sqlalchemy.exc import OperationalError
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy_utils import UUIDType
@@ -34,6 +34,7 @@ from sqlalchemy_utils import UUIDType
from superset import db
from superset.migrations.shared.utils import assign_uuids
+
# revision identifiers, used by Alembic.
revision = "96e99fb176a0"
down_revision = "585b0b1a7b18"
diff --git a/superset/migrations/versions/2020-11-04_11-06_49b5a32daba5_add_report_schedules.py b/superset/migrations/versions/2020-11-04_11-06_49b5a32daba5_add_report_schedules.py
index 7446b9a759..170ed45422 100644
--- a/superset/migrations/versions/2020-11-04_11-06_49b5a32daba5_add_report_schedules.py
+++ b/superset/migrations/versions/2020-11-04_11-06_49b5a32daba5_add_report_schedules.py
@@ -26,8 +26,8 @@ Create Date: 2020-11-04 11:06:59.249758
revision = "49b5a32daba5"
down_revision = "96e99fb176a0"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
from sqlalchemy.engine.reflection import Inspector # noqa: E402
diff --git a/superset/migrations/versions/2020-11-20_14-24_e38177dbf641_security_converge_saved_queries.py b/superset/migrations/versions/2020-11-20_14-24_e38177dbf641_security_converge_saved_queries.py
index bf033c6514..4478c6627f 100644
--- a/superset/migrations/versions/2020-11-20_14-24_e38177dbf641_security_converge_saved_queries.py
+++ b/superset/migrations/versions/2020-11-20_14-24_e38177dbf641_security_converge_saved_queries.py
@@ -39,6 +39,7 @@ from superset.migrations.shared.security_converge import ( # noqa: E402
Pvm,
)
+
NEW_PVMS = {
"SavedQuery": (
"can_read",
diff --git a/superset/migrations/versions/2020-11-30_15-25_40f16acf1ba7_security_converge_reports.py b/superset/migrations/versions/2020-11-30_15-25_40f16acf1ba7_security_converge_reports.py
index 4535b793b3..e425e077ef 100644
--- a/superset/migrations/versions/2020-11-30_15-25_40f16acf1ba7_security_converge_reports.py
+++ b/superset/migrations/versions/2020-11-30_15-25_40f16acf1ba7_security_converge_reports.py
@@ -39,6 +39,7 @@ from superset.migrations.shared.security_converge import ( # noqa: E402
Pvm,
)
+
NEW_PVMS = {
"ReportSchedule": (
"can_read",
diff --git a/superset/migrations/versions/2020-11-30_17-54_8ee129739cf9_security_converge_css_templates.py b/superset/migrations/versions/2020-11-30_17-54_8ee129739cf9_security_converge_css_templates.py
index 7a57de7428..f6f0613bdc 100644
--- a/superset/migrations/versions/2020-11-30_17-54_8ee129739cf9_security_converge_css_templates.py
+++ b/superset/migrations/versions/2020-11-30_17-54_8ee129739cf9_security_converge_css_templates.py
@@ -39,6 +39,7 @@ from superset.migrations.shared.security_converge import ( # noqa: E402
Pvm,
)
+
NEW_PVMS = {
"CssTemplate": (
"can_read",
diff --git a/superset/migrations/versions/2020-12-03_10-11_5daced1f0e76_reports_add_working_timeout_column.py b/superset/migrations/versions/2020-12-03_10-11_5daced1f0e76_reports_add_working_timeout_column.py
index 2cd74a56c3..a085fe3f46 100644
--- a/superset/migrations/versions/2020-12-03_10-11_5daced1f0e76_reports_add_working_timeout_column.py
+++ b/superset/migrations/versions/2020-12-03_10-11_5daced1f0e76_reports_add_working_timeout_column.py
@@ -26,8 +26,8 @@ Create Date: 2020-12-03 10:11:22.894977
revision = "5daced1f0e76"
down_revision = "811494c0cc23"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
def upgrade():
diff --git a/superset/migrations/versions/2020-12-09_14-13_ccb74baaa89b_security_converge_charts.py b/superset/migrations/versions/2020-12-09_14-13_ccb74baaa89b_security_converge_charts.py
index 7697b4981c..4bf28de5a8 100644
--- a/superset/migrations/versions/2020-12-09_14-13_ccb74baaa89b_security_converge_charts.py
+++ b/superset/migrations/versions/2020-12-09_14-13_ccb74baaa89b_security_converge_charts.py
@@ -39,6 +39,7 @@ from superset.migrations.shared.security_converge import ( # noqa: E402
Pvm,
)
+
NEW_PVMS = {
"Chart": (
"can_read",
diff --git a/superset/migrations/versions/2020-12-10_15-05_45731db65d9c_security_converge_datasets.py b/superset/migrations/versions/2020-12-10_15-05_45731db65d9c_security_converge_datasets.py
index 645ee7e58f..dd818b955b 100644
--- a/superset/migrations/versions/2020-12-10_15-05_45731db65d9c_security_converge_datasets.py
+++ b/superset/migrations/versions/2020-12-10_15-05_45731db65d9c_security_converge_datasets.py
@@ -38,6 +38,7 @@ from superset.migrations.shared.security_converge import ( # noqa: E402
Pvm,
)
+
NEW_PVMS = {
"Dataset": (
"can_read",
diff --git a/superset/migrations/versions/2020-12-11_11-45_1f6dca87d1a2_security_converge_dashboards.py b/superset/migrations/versions/2020-12-11_11-45_1f6dca87d1a2_security_converge_dashboards.py
index e72fb416e2..20ed2e93fd 100644
--- a/superset/migrations/versions/2020-12-11_11-45_1f6dca87d1a2_security_converge_dashboards.py
+++ b/superset/migrations/versions/2020-12-11_11-45_1f6dca87d1a2_security_converge_dashboards.py
@@ -39,6 +39,7 @@ from superset.migrations.shared.security_converge import ( # noqa: E402
Pvm,
)
+
NEW_PVMS = {
"Dashboard": (
"can_read",
diff --git a/superset/migrations/versions/2020-12-11_17-02_c25cb2c78727_security_converge_annotations.py b/superset/migrations/versions/2020-12-11_17-02_c25cb2c78727_security_converge_annotations.py
index eedc721c98..d5d1861203 100644
--- a/superset/migrations/versions/2020-12-11_17-02_c25cb2c78727_security_converge_annotations.py
+++ b/superset/migrations/versions/2020-12-11_17-02_c25cb2c78727_security_converge_annotations.py
@@ -35,6 +35,7 @@ from superset.migrations.shared.security_converge import (
Pvm,
)
+
revision = "c25cb2c78727"
down_revision = "ccb74baaa89b"
diff --git a/superset/migrations/versions/2020-12-14_10-49_42b4c9e01447_security_converge_databases.py b/superset/migrations/versions/2020-12-14_10-49_42b4c9e01447_security_converge_databases.py
index a56a514a4b..e9b8406a41 100644
--- a/superset/migrations/versions/2020-12-14_10-49_42b4c9e01447_security_converge_databases.py
+++ b/superset/migrations/versions/2020-12-14_10-49_42b4c9e01447_security_converge_databases.py
@@ -38,6 +38,7 @@ from superset.migrations.shared.security_converge import ( # noqa: E402
Pvm,
)
+
NEW_PVMS = {
"Database": (
"can_read",
diff --git a/superset/migrations/versions/2020-12-14_13-40_4b84f97828aa_security_converge_logs.py b/superset/migrations/versions/2020-12-14_13-40_4b84f97828aa_security_converge_logs.py
index 284b7f7525..84734fdde0 100644
--- a/superset/migrations/versions/2020-12-14_13-40_4b84f97828aa_security_converge_logs.py
+++ b/superset/migrations/versions/2020-12-14_13-40_4b84f97828aa_security_converge_logs.py
@@ -34,6 +34,7 @@ from superset.migrations.shared.security_converge import (
Pvm,
)
+
revision = "4b84f97828aa"
down_revision = "45731db65d9c"
diff --git a/superset/migrations/versions/2020-12-15_09-07_ab104a954a8f_reports_alter_crontab_size.py b/superset/migrations/versions/2020-12-15_09-07_ab104a954a8f_reports_alter_crontab_size.py
index 2839a1c677..112118e820 100644
--- a/superset/migrations/versions/2020-12-15_09-07_ab104a954a8f_reports_alter_crontab_size.py
+++ b/superset/migrations/versions/2020-12-15_09-07_ab104a954a8f_reports_alter_crontab_size.py
@@ -26,8 +26,8 @@ Create Date: 2020-12-15 09:07:24.730545
revision = "ab104a954a8f"
down_revision = "e37912a26567"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
def upgrade():
diff --git a/superset/migrations/versions/2020-12-16_12-15_e37912a26567_security_converge_queries.py b/superset/migrations/versions/2020-12-16_12-15_e37912a26567_security_converge_queries.py
index 8c2b1b6c5d..4ca8d20e23 100644
--- a/superset/migrations/versions/2020-12-16_12-15_e37912a26567_security_converge_queries.py
+++ b/superset/migrations/versions/2020-12-16_12-15_e37912a26567_security_converge_queries.py
@@ -38,6 +38,7 @@ from superset.migrations.shared.security_converge import ( # noqa: E402
Pvm,
)
+
NEW_PVMS = {"Query": ("can_read",)}
PVM_MAP = {
Pvm("QueryView", "can_list"): (Pvm("Query", "can_read"),),
diff --git a/superset/migrations/versions/2020-12-23_11-34_c878781977c6_alert_reports_shared_uniqueness.py b/superset/migrations/versions/2020-12-23_11-34_c878781977c6_alert_reports_shared_uniqueness.py
index 2244835c11..297ec40b04 100644
--- a/superset/migrations/versions/2020-12-23_11-34_c878781977c6_alert_reports_shared_uniqueness.py
+++ b/superset/migrations/versions/2020-12-23_11-34_c878781977c6_alert_reports_shared_uniqueness.py
@@ -26,8 +26,8 @@ Create Date: 2020-12-23 11:34:53.882200
revision = "c878781977c6"
down_revision = "73fd22e742ab"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
from sqlalchemy.dialects.mysql.base import MySQLDialect # noqa: E402
from sqlalchemy.dialects.postgresql.base import PGDialect # noqa: E402
from sqlalchemy.dialects.sqlite.base import SQLiteDialect # noqa: E402
diff --git a/superset/migrations/versions/2021-01-14_19-12_e11ccdd12658_add_roles_relationship_to_dashboard.py b/superset/migrations/versions/2021-01-14_19-12_e11ccdd12658_add_roles_relationship_to_dashboard.py
index 78eaa98d58..410f94d637 100644
--- a/superset/migrations/versions/2021-01-14_19-12_e11ccdd12658_add_roles_relationship_to_dashboard.py
+++ b/superset/migrations/versions/2021-01-14_19-12_e11ccdd12658_add_roles_relationship_to_dashboard.py
@@ -24,8 +24,8 @@ Create Date: 2021-01-14 19:12:43.406230
# revision identifiers, used by Alembic.
revision = "e11ccdd12658"
down_revision = "260bf0649a77"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
def upgrade():
diff --git a/superset/migrations/versions/2021-01-23_16-25_260bf0649a77_migrate_x_dateunit_in_time_range.py b/superset/migrations/versions/2021-01-23_16-25_260bf0649a77_migrate_x_dateunit_in_time_range.py
index f56007fd0d..e38f06ff4d 100644
--- a/superset/migrations/versions/2021-01-23_16-25_260bf0649a77_migrate_x_dateunit_in_time_range.py
+++ b/superset/migrations/versions/2021-01-23_16-25_260bf0649a77_migrate_x_dateunit_in_time_range.py
@@ -29,8 +29,8 @@ down_revision = "c878781977c6"
import json # noqa: E402
import re # noqa: E402
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
from sqlalchemy import Column, Integer, or_, Text # noqa: E402
from sqlalchemy.dialects.mysql.base import MySQLDialect # noqa: E402
from sqlalchemy.dialects.sqlite.base import SQLiteDialect # noqa: E402
@@ -40,6 +40,7 @@ from sqlalchemy.ext.declarative import declarative_base # noqa: E402
from superset import db # noqa: E402
from superset.utils.date_parser import DateRangeMigration # noqa: E402
+
Base = declarative_base()
diff --git a/superset/migrations/versions/2021-02-04_09-34_070c043f2fdb_add_granularity_to_charts_where_missing.py b/superset/migrations/versions/2021-02-04_09-34_070c043f2fdb_add_granularity_to_charts_where_missing.py
index 133db66497..41cff7ee28 100644
--- a/superset/migrations/versions/2021-02-04_09-34_070c043f2fdb_add_granularity_to_charts_where_missing.py
+++ b/superset/migrations/versions/2021-02-04_09-34_070c043f2fdb_add_granularity_to_charts_where_missing.py
@@ -34,6 +34,7 @@ from sqlalchemy.ext.declarative import declarative_base # noqa: E402
from superset import db # noqa: E402
+
Base = declarative_base()
diff --git a/superset/migrations/versions/2021-02-10_12-32_41ce8799acc3_rename_pie_label_type.py b/superset/migrations/versions/2021-02-10_12-32_41ce8799acc3_rename_pie_label_type.py
index 7e84392b11..c1827524d4 100644
--- a/superset/migrations/versions/2021-02-10_12-32_41ce8799acc3_rename_pie_label_type.py
+++ b/superset/migrations/versions/2021-02-10_12-32_41ce8799acc3_rename_pie_label_type.py
@@ -34,6 +34,7 @@ from sqlalchemy.ext.declarative import declarative_base # noqa: E402
from superset import db # noqa: E402
+
Base = declarative_base()
diff --git a/superset/migrations/versions/2021-02-14_11-46_1412ec1e5a7b_legacy_force_directed_to_echart.py b/superset/migrations/versions/2021-02-14_11-46_1412ec1e5a7b_legacy_force_directed_to_echart.py
index 862a629c16..1e5763b548 100644
--- a/superset/migrations/versions/2021-02-14_11-46_1412ec1e5a7b_legacy_force_directed_to_echart.py
+++ b/superset/migrations/versions/2021-02-14_11-46_1412ec1e5a7b_legacy_force_directed_to_echart.py
@@ -30,6 +30,7 @@ from sqlalchemy.ext.declarative import declarative_base
from superset import db
+
# revision identifiers, used by Alembic.
revision = "1412ec1e5a7b"
down_revision = "c501b7c653a3"
diff --git a/superset/migrations/versions/2021-02-18_09-13_c501b7c653a3_add_missing_uuid_column.py b/superset/migrations/versions/2021-02-18_09-13_c501b7c653a3_add_missing_uuid_column.py
index be921e3ac7..8af0121232 100644
--- a/superset/migrations/versions/2021-02-18_09-13_c501b7c653a3_add_missing_uuid_column.py
+++ b/superset/migrations/versions/2021-02-18_09-13_c501b7c653a3_add_missing_uuid_column.py
@@ -26,18 +26,19 @@ Create Date: 2021-02-18 09:13:00.028317
revision = "c501b7c653a3"
down_revision = "070c043f2fdb"
-import logging # noqa: E402
from importlib import import_module # noqa: E402
+import logging # noqa: E402
from uuid import uuid4 # noqa: E402
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
from sqlalchemy.engine.reflection import Inspector # noqa: E402
from sqlalchemy.orm import load_only # noqa: E402
from sqlalchemy_utils import UUIDType # noqa: E402
from superset import db # noqa: E402
+
add_uuid_column_to_import_mixin = import_module(
"superset.migrations.versions."
"2020-09-28_17-57_b56500de1855_add_uuid_column_to_import_mixin",
diff --git a/superset/migrations/versions/2021-02-22_11-22_67da9ef1ef9c_add_hide_left_bar_to_tabstate.py b/superset/migrations/versions/2021-02-22_11-22_67da9ef1ef9c_add_hide_left_bar_to_tabstate.py
index 02e367eb7e..717378840d 100644
--- a/superset/migrations/versions/2021-02-22_11-22_67da9ef1ef9c_add_hide_left_bar_to_tabstate.py
+++ b/superset/migrations/versions/2021-02-22_11-22_67da9ef1ef9c_add_hide_left_bar_to_tabstate.py
@@ -26,8 +26,8 @@ Create Date: 2021-02-22 11:22:10.156942
revision = "67da9ef1ef9c"
down_revision = "1412ec1e5a7b"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
from sqlalchemy.sql import expression # noqa: E402
diff --git a/superset/migrations/versions/2021-03-23_05-23_301362411006_add_execution_id_to_report_execution_.py b/superset/migrations/versions/2021-03-23_05-23_301362411006_add_execution_id_to_report_execution_.py
index f6109fc57f..bd7029bb41 100644
--- a/superset/migrations/versions/2021-03-23_05-23_301362411006_add_execution_id_to_report_execution_.py
+++ b/superset/migrations/versions/2021-03-23_05-23_301362411006_add_execution_id_to_report_execution_.py
@@ -26,8 +26,8 @@ Create Date: 2021-03-23 05:23:15.641856
revision = "301362411006"
down_revision = "989bbe479899"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
from sqlalchemy_utils import UUIDType # noqa: E402
diff --git a/superset/migrations/versions/2021-03-24_09-47_989bbe479899_rename_filter_configuration_in_.py b/superset/migrations/versions/2021-03-24_09-47_989bbe479899_rename_filter_configuration_in_.py
index d738b0e6d2..80179c4982 100644
--- a/superset/migrations/versions/2021-03-24_09-47_989bbe479899_rename_filter_configuration_in_.py
+++ b/superset/migrations/versions/2021-03-24_09-47_989bbe479899_rename_filter_configuration_in_.py
@@ -34,6 +34,7 @@ from sqlalchemy.ext.declarative import declarative_base # noqa: E402
from superset import db # noqa: E402
+
Base = declarative_base()
diff --git a/superset/migrations/versions/2021-03-29_11-15_3ebe0993c770_filterset_table.py b/superset/migrations/versions/2021-03-29_11-15_3ebe0993c770_filterset_table.py
index 8e092112dc..5e6ba177cc 100644
--- a/superset/migrations/versions/2021-03-29_11-15_3ebe0993c770_filterset_table.py
+++ b/superset/migrations/versions/2021-03-29_11-15_3ebe0993c770_filterset_table.py
@@ -26,8 +26,8 @@ Create Date: 2021-03-29 11:15:48.831225
revision = "3ebe0993c770"
down_revision = "181091c0ef16"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
def upgrade():
diff --git a/superset/migrations/versions/2021-04-06_21-39_19e978e1b9c3_add_report_format_to_report_schedule_.py b/superset/migrations/versions/2021-04-06_21-39_19e978e1b9c3_add_report_format_to_report_schedule_.py
index 0d637748b0..7f2f81cc7e 100644
--- a/superset/migrations/versions/2021-04-06_21-39_19e978e1b9c3_add_report_format_to_report_schedule_.py
+++ b/superset/migrations/versions/2021-04-06_21-39_19e978e1b9c3_add_report_format_to_report_schedule_.py
@@ -26,8 +26,8 @@ Create Date: 2021-04-06 21:39:52.259223
revision = "19e978e1b9c3"
down_revision = "fc3a3a8ff221"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
def upgrade():
diff --git a/superset/migrations/versions/2021-04-07_07-21_134cea61c5e7_remove_dataset_health_check_message.py b/superset/migrations/versions/2021-04-07_07-21_134cea61c5e7_remove_dataset_health_check_message.py
index adcc04fdaa..7a4dbf08ff 100644
--- a/superset/migrations/versions/2021-04-07_07-21_134cea61c5e7_remove_dataset_health_check_message.py
+++ b/superset/migrations/versions/2021-04-07_07-21_134cea61c5e7_remove_dataset_health_check_message.py
@@ -35,6 +35,7 @@ from sqlalchemy.ext.declarative import declarative_base # noqa: E402
from superset import db # noqa: E402
+
Base = declarative_base()
diff --git a/superset/migrations/versions/2021-04-09_16-14_085f06488938_country_map_use_lowercase_country_name.py b/superset/migrations/versions/2021-04-09_16-14_085f06488938_country_map_use_lowercase_country_name.py
index a303d12c86..1207372621 100644
--- a/superset/migrations/versions/2021-04-09_16-14_085f06488938_country_map_use_lowercase_country_name.py
+++ b/superset/migrations/versions/2021-04-09_16-14_085f06488938_country_map_use_lowercase_country_name.py
@@ -30,6 +30,7 @@ from sqlalchemy.ext.declarative import declarative_base
from superset import db
+
# revision identifiers, used by Alembic.
revision = "085f06488938"
down_revision = "134cea61c5e7"
diff --git a/superset/migrations/versions/2021-04-12_12-38_fc3a3a8ff221_migrate_filter_sets_to_new_format.py b/superset/migrations/versions/2021-04-12_12-38_fc3a3a8ff221_migrate_filter_sets_to_new_format.py
index 13cfab0a43..9955d6299b 100644
--- a/superset/migrations/versions/2021-04-12_12-38_fc3a3a8ff221_migrate_filter_sets_to_new_format.py
+++ b/superset/migrations/versions/2021-04-12_12-38_fc3a3a8ff221_migrate_filter_sets_to_new_format.py
@@ -26,8 +26,8 @@ Create Date: 2021-04-12 12:38:03.913514
revision = "fc3a3a8ff221"
down_revision = "085f06488938"
-import json # noqa: E402
from collections.abc import Iterable # noqa: E402
+import json # noqa: E402
from typing import Any # noqa: E402
from alembic import op # noqa: E402
@@ -36,6 +36,7 @@ from sqlalchemy.ext.declarative import declarative_base # noqa: E402
from superset import db # noqa: E402
+
Base = declarative_base()
diff --git a/superset/migrations/versions/2021-04-16_17-38_d416d0d715cc_add_limiting_factor_column_to_query_.py b/superset/migrations/versions/2021-04-16_17-38_d416d0d715cc_add_limiting_factor_column_to_query_.py
index 4ed937c1a7..9a87a37067 100644
--- a/superset/migrations/versions/2021-04-16_17-38_d416d0d715cc_add_limiting_factor_column_to_query_.py
+++ b/superset/migrations/versions/2021-04-16_17-38_d416d0d715cc_add_limiting_factor_column_to_query_.py
@@ -26,8 +26,8 @@ Create Date: 2021-04-16 17:38:40.342260
revision = "d416d0d715cc"
down_revision = "19e978e1b9c3"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
def upgrade():
diff --git a/superset/migrations/versions/2021-04-29_15-32_f1410ed7ec95_migrate_native_filters_to_new_schema.py b/superset/migrations/versions/2021-04-29_15-32_f1410ed7ec95_migrate_native_filters_to_new_schema.py
index 44bbc0c964..e1a742b5e7 100644
--- a/superset/migrations/versions/2021-04-29_15-32_f1410ed7ec95_migrate_native_filters_to_new_schema.py
+++ b/superset/migrations/versions/2021-04-29_15-32_f1410ed7ec95_migrate_native_filters_to_new_schema.py
@@ -26,8 +26,8 @@ Create Date: 2021-04-29 15:32:21.939018
revision = "f1410ed7ec95"
down_revision = "d416d0d715cc"
-import json # noqa: E402
from collections.abc import Iterable # noqa: E402
+import json # noqa: E402
from typing import Any # noqa: E402
from alembic import op # noqa: E402
@@ -36,6 +36,7 @@ from sqlalchemy.ext.declarative import declarative_base # noqa: E402
from superset import db # noqa: E402
+
Base = declarative_base()
diff --git a/superset/migrations/versions/2021-04-30_10-55_453530256cea_add_save_option_column_to_db_model.py b/superset/migrations/versions/2021-04-30_10-55_453530256cea_add_save_option_column_to_db_model.py
index a85551290a..1eb14bc829 100644
--- a/superset/migrations/versions/2021-04-30_10-55_453530256cea_add_save_option_column_to_db_model.py
+++ b/superset/migrations/versions/2021-04-30_10-55_453530256cea_add_save_option_column_to_db_model.py
@@ -26,8 +26,8 @@ Create Date: 2021-04-30 10:55:07.009994
revision = "453530256cea"
down_revision = "f1410ed7ec95"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
def upgrade():
diff --git a/superset/migrations/versions/2021-05-27_16-10_6f139c533bea_add_advanced_data_types_to_column_models.py b/superset/migrations/versions/2021-05-27_16-10_6f139c533bea_add_advanced_data_types_to_column_models.py
index 114716c3da..aa2293537b 100644
--- a/superset/migrations/versions/2021-05-27_16-10_6f139c533bea_add_advanced_data_types_to_column_models.py
+++ b/superset/migrations/versions/2021-05-27_16-10_6f139c533bea_add_advanced_data_types_to_column_models.py
@@ -22,8 +22,9 @@ Create Date: 2021-05-27 16:10:59.567684
"""
-import sqlalchemy as sa
from alembic import op
+import sqlalchemy as sa
+
# revision identifiers, used by Alembic.
revision = "6f139c533bea"
diff --git a/superset/migrations/versions/2021-07-09_12-18_ae1ed299413b_add_timezone_to_report_schedule.py b/superset/migrations/versions/2021-07-09_12-18_ae1ed299413b_add_timezone_to_report_schedule.py
index e9fd025564..86f012724a 100644
--- a/superset/migrations/versions/2021-07-09_12-18_ae1ed299413b_add_timezone_to_report_schedule.py
+++ b/superset/migrations/versions/2021-07-09_12-18_ae1ed299413b_add_timezone_to_report_schedule.py
@@ -26,8 +26,8 @@ Create Date: 2021-07-09 12:18:52.057815
revision = "ae1ed299413b"
down_revision = "030c840e3a1c"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
def upgrade():
diff --git a/superset/migrations/versions/2021-07-14_10-31_3317e9248280_add_creation_method_to_reports_model.py b/superset/migrations/versions/2021-07-14_10-31_3317e9248280_add_creation_method_to_reports_model.py
index f77a69cea6..7ea3679bdc 100644
--- a/superset/migrations/versions/2021-07-14_10-31_3317e9248280_add_creation_method_to_reports_model.py
+++ b/superset/migrations/versions/2021-07-14_10-31_3317e9248280_add_creation_method_to_reports_model.py
@@ -26,8 +26,8 @@ Create Date: 2021-07-14 10:31:38.610095
revision = "3317e9248280"
down_revision = "453530256cea"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
def upgrade():
diff --git a/superset/migrations/versions/2021-07-21_12-09_030c840e3a1c_add_query_context_to_slices.py b/superset/migrations/versions/2021-07-21_12-09_030c840e3a1c_add_query_context_to_slices.py
index f26314feff..66a4ed79b8 100644
--- a/superset/migrations/versions/2021-07-21_12-09_030c840e3a1c_add_query_context_to_slices.py
+++ b/superset/migrations/versions/2021-07-21_12-09_030c840e3a1c_add_query_context_to_slices.py
@@ -26,8 +26,8 @@ Create Date: 2021-07-21 12:09:37.048337
revision = "030c840e3a1c"
down_revision = "3317e9248280"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
def upgrade():
diff --git a/superset/migrations/versions/2021-07-27_08-25_31b2a1039d4a_drop_tables_constraint.py b/superset/migrations/versions/2021-07-27_08-25_31b2a1039d4a_drop_tables_constraint.py
index 54dd1c5f3a..996f7e9c47 100644
--- a/superset/migrations/versions/2021-07-27_08-25_31b2a1039d4a_drop_tables_constraint.py
+++ b/superset/migrations/versions/2021-07-27_08-25_31b2a1039d4a_drop_tables_constraint.py
@@ -27,6 +27,7 @@ from sqlalchemy import engine
from superset.utils.core import generic_find_uq_constraint_name
+
# revision identifiers, used by Alembic.
revision = "31b2a1039d4a"
down_revision = "ae1ed299413b"
diff --git a/superset/migrations/versions/2021-08-02_16-39_e323605f370a_fix_schemas_allowed_for_csv_upload.py b/superset/migrations/versions/2021-08-02_16-39_e323605f370a_fix_schemas_allowed_for_csv_upload.py
index 6d8c1a4a1b..0f63b2390a 100644
--- a/superset/migrations/versions/2021-08-02_16-39_e323605f370a_fix_schemas_allowed_for_csv_upload.py
+++ b/superset/migrations/versions/2021-08-02_16-39_e323605f370a_fix_schemas_allowed_for_csv_upload.py
@@ -31,6 +31,7 @@ from sqlalchemy.ext.declarative import declarative_base
from superset import db
+
# revision identifiers, used by Alembic.
revision = "e323605f370a"
down_revision = "31b2a1039d4a"
diff --git a/superset/migrations/versions/2021-08-02_21-14_6d20ba9ecb33_add_last_saved_at_to_slice_model.py b/superset/migrations/versions/2021-08-02_21-14_6d20ba9ecb33_add_last_saved_at_to_slice_model.py
index e0aeea7c36..de68869daf 100644
--- a/superset/migrations/versions/2021-08-02_21-14_6d20ba9ecb33_add_last_saved_at_to_slice_model.py
+++ b/superset/migrations/versions/2021-08-02_21-14_6d20ba9ecb33_add_last_saved_at_to_slice_model.py
@@ -26,8 +26,8 @@ Create Date: 2021-08-02 21:14:58.200438
revision = "6d20ba9ecb33"
down_revision = "f6196627326f"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
def upgrade():
diff --git a/superset/migrations/versions/2021-08-03_15-36_143b6f2815da_migrate_pivot_table_v2_heatmaps_to_new_.py b/superset/migrations/versions/2021-08-03_15-36_143b6f2815da_migrate_pivot_table_v2_heatmaps_to_new_.py
index 861f163c3c..7799a240ed 100644
--- a/superset/migrations/versions/2021-08-03_15-36_143b6f2815da_migrate_pivot_table_v2_heatmaps_to_new_.py
+++ b/superset/migrations/versions/2021-08-03_15-36_143b6f2815da_migrate_pivot_table_v2_heatmaps_to_new_.py
@@ -34,6 +34,7 @@ from sqlalchemy.ext.declarative import declarative_base # noqa: E402
from superset import db # noqa: E402
+
Base = declarative_base()
diff --git a/superset/migrations/versions/2021-08-04_17-16_f6196627326f_update_chart_permissions.py b/superset/migrations/versions/2021-08-04_17-16_f6196627326f_update_chart_permissions.py
index 9a24138cef..c4af051877 100644
--- a/superset/migrations/versions/2021-08-04_17-16_f6196627326f_update_chart_permissions.py
+++ b/superset/migrations/versions/2021-08-04_17-16_f6196627326f_update_chart_permissions.py
@@ -34,6 +34,7 @@ from superset.migrations.shared.security_converge import (
Pvm,
)
+
# revision identifiers, used by Alembic.
revision = "f6196627326f"
down_revision = "143b6f2815da"
diff --git a/superset/migrations/versions/2021-08-09_17-32_07071313dd52_change_fetch_values_predicate_to_text.py b/superset/migrations/versions/2021-08-09_17-32_07071313dd52_change_fetch_values_predicate_to_text.py
index b5d9715daa..a38b18b336 100644
--- a/superset/migrations/versions/2021-08-09_17-32_07071313dd52_change_fetch_values_predicate_to_text.py
+++ b/superset/migrations/versions/2021-08-09_17-32_07071313dd52_change_fetch_values_predicate_to_text.py
@@ -28,8 +28,8 @@ down_revision = "6d20ba9ecb33"
import logging # noqa: E402
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
from sqlalchemy import func # noqa: E402
from superset import db # noqa: E402
diff --git a/superset/migrations/versions/2021-08-24_23-27_181091c0ef16_add_extra_column_to_columns_model.py b/superset/migrations/versions/2021-08-24_23-27_181091c0ef16_add_extra_column_to_columns_model.py
index 538f738d0c..b8b43c6242 100644
--- a/superset/migrations/versions/2021-08-24_23-27_181091c0ef16_add_extra_column_to_columns_model.py
+++ b/superset/migrations/versions/2021-08-24_23-27_181091c0ef16_add_extra_column_to_columns_model.py
@@ -26,8 +26,8 @@ Create Date: 2021-08-24 23:27:30.403308
revision = "181091c0ef16"
down_revision = "021b81fe4fbb"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
def upgrade():
diff --git a/superset/migrations/versions/2021-08-31_11-37_021b81fe4fbb_add_type_to_native_filter_configuration.py b/superset/migrations/versions/2021-08-31_11-37_021b81fe4fbb_add_type_to_native_filter_configuration.py
index 32b5b1ade5..c8e17287ec 100644
--- a/superset/migrations/versions/2021-08-31_11-37_021b81fe4fbb_add_type_to_native_filter_configuration.py
+++ b/superset/migrations/versions/2021-08-31_11-37_021b81fe4fbb_add_type_to_native_filter_configuration.py
@@ -29,12 +29,13 @@ down_revision = "07071313dd52"
import json # noqa: E402
import logging # noqa: E402
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
from sqlalchemy.ext.declarative import declarative_base # noqa: E402
from superset import db # noqa: E402
+
Base = declarative_base()
logger = logging.getLogger("alembic")
diff --git a/superset/migrations/versions/2021-09-19_14-42_b92d69a6643c_rename_csv_to_file.py b/superset/migrations/versions/2021-09-19_14-42_b92d69a6643c_rename_csv_to_file.py
index 2b83684079..aa1c137e05 100644
--- a/superset/migrations/versions/2021-09-19_14-42_b92d69a6643c_rename_csv_to_file.py
+++ b/superset/migrations/versions/2021-09-19_14-42_b92d69a6643c_rename_csv_to_file.py
@@ -26,8 +26,8 @@ Create Date: 2021-09-19 14:42:20.130368
revision = "b92d69a6643c"
down_revision = "aea15018d53b"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
from sqlalchemy.engine.reflection import Inspector # noqa: E402
diff --git a/superset/migrations/versions/2021-09-27_11-31_60dc453f4e2e_migrate_timeseries_limit_metric_to_.py b/superset/migrations/versions/2021-09-27_11-31_60dc453f4e2e_migrate_timeseries_limit_metric_to_.py
index 449cf72734..2cdb901295 100644
--- a/superset/migrations/versions/2021-09-27_11-31_60dc453f4e2e_migrate_timeseries_limit_metric_to_.py
+++ b/superset/migrations/versions/2021-09-27_11-31_60dc453f4e2e_migrate_timeseries_limit_metric_to_.py
@@ -34,6 +34,7 @@ from sqlalchemy.ext.declarative import declarative_base # noqa: E402
from superset import db # noqa: E402
+
Base = declarative_base()
diff --git a/superset/migrations/versions/2021-10-12_11-15_32646df09c64_update_time_grain_sqla.py b/superset/migrations/versions/2021-10-12_11-15_32646df09c64_update_time_grain_sqla.py
index f3cd97ccaa..b1fd2da152 100644
--- a/superset/migrations/versions/2021-10-12_11-15_32646df09c64_update_time_grain_sqla.py
+++ b/superset/migrations/versions/2021-10-12_11-15_32646df09c64_update_time_grain_sqla.py
@@ -34,6 +34,7 @@ from sqlalchemy.ext.declarative import declarative_base # noqa: E402
from superset import db # noqa: E402
+
Base = declarative_base()
diff --git a/superset/migrations/versions/2021-11-02_17-44_3ba29ecbaac5_change_datatype_of_type_in_basecolumn.py b/superset/migrations/versions/2021-11-02_17-44_3ba29ecbaac5_change_datatype_of_type_in_basecolumn.py
index b97a6f14e8..873c7cffab 100644
--- a/superset/migrations/versions/2021-11-02_17-44_3ba29ecbaac5_change_datatype_of_type_in_basecolumn.py
+++ b/superset/migrations/versions/2021-11-02_17-44_3ba29ecbaac5_change_datatype_of_type_in_basecolumn.py
@@ -26,8 +26,8 @@ Create Date: 2021-11-02 17:44:51.792138
revision = "3ba29ecbaac5"
down_revision = "abe27eaf93db"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
def upgrade():
diff --git a/superset/migrations/versions/2021-11-03_14-07_f9847149153d_add_certifications_columns_to_slice.py b/superset/migrations/versions/2021-11-03_14-07_f9847149153d_add_certifications_columns_to_slice.py
index bc8f37fd03..bf404b52f9 100644
--- a/superset/migrations/versions/2021-11-03_14-07_f9847149153d_add_certifications_columns_to_slice.py
+++ b/superset/migrations/versions/2021-11-03_14-07_f9847149153d_add_certifications_columns_to_slice.py
@@ -23,8 +23,9 @@ Create Date: 2021-11-03 14:07:09.905194
"""
# revision identifiers, used by Alembic.
-import sqlalchemy as sa
from alembic import op
+import sqlalchemy as sa
+
revision = "f9847149153d"
down_revision = "32646df09c64"
diff --git a/superset/migrations/versions/2021-11-05_11-11_aea15018d53b_add_certifications_columns_to_dashboard.py b/superset/migrations/versions/2021-11-05_11-11_aea15018d53b_add_certifications_columns_to_dashboard.py
index db53cf214c..c10937051d 100644
--- a/superset/migrations/versions/2021-11-05_11-11_aea15018d53b_add_certifications_columns_to_dashboard.py
+++ b/superset/migrations/versions/2021-11-05_11-11_aea15018d53b_add_certifications_columns_to_dashboard.py
@@ -23,8 +23,9 @@ Create Date: 2021-11-05 11:11:55.496618
"""
# revision identifiers, used by Alembic.
-import sqlalchemy as sa
from alembic import op
+import sqlalchemy as sa
+
revision = "aea15018d53b"
down_revision = "f9847149153d"
diff --git a/superset/migrations/versions/2021-11-11_04-18_0ca9e5f1dacd_rename_to_schemas_allowed_for_file_.py b/superset/migrations/versions/2021-11-11_04-18_0ca9e5f1dacd_rename_to_schemas_allowed_for_file_.py
index 370cf508c4..2707f41ea7 100644
--- a/superset/migrations/versions/2021-11-11_04-18_0ca9e5f1dacd_rename_to_schemas_allowed_for_file_.py
+++ b/superset/migrations/versions/2021-11-11_04-18_0ca9e5f1dacd_rename_to_schemas_allowed_for_file_.py
@@ -35,6 +35,7 @@ from sqlalchemy.ext.declarative import declarative_base # noqa: E402
from superset import db # noqa: E402
+
Base = declarative_base()
diff --git a/superset/migrations/versions/2021-12-02_12-03_abe27eaf93db_add_extra_config_column_to_alerts.py b/superset/migrations/versions/2021-12-02_12-03_abe27eaf93db_add_extra_config_column_to_alerts.py
index 1cce70c007..a3058054bc 100644
--- a/superset/migrations/versions/2021-12-02_12-03_abe27eaf93db_add_extra_config_column_to_alerts.py
+++ b/superset/migrations/versions/2021-12-02_12-03_abe27eaf93db_add_extra_config_column_to_alerts.py
@@ -26,11 +26,12 @@ Create Date: 2021-12-02 12:03:20.691171
revision = "abe27eaf93db"
down_revision = "0ca9e5f1dacd"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
from sqlalchemy import String # noqa: E402
from sqlalchemy.sql import column, table # noqa: E402
+
report_schedule = table("report_schedule", column("extra", String))
diff --git a/superset/migrations/versions/2021-12-10_19-25_bb38f40aa3ff_add_force_screenshot_to_alerts_reports.py b/superset/migrations/versions/2021-12-10_19-25_bb38f40aa3ff_add_force_screenshot_to_alerts_reports.py
index 38d8275d9f..ae05207244 100644
--- a/superset/migrations/versions/2021-12-10_19-25_bb38f40aa3ff_add_force_screenshot_to_alerts_reports.py
+++ b/superset/migrations/versions/2021-12-10_19-25_bb38f40aa3ff_add_force_screenshot_to_alerts_reports.py
@@ -26,12 +26,13 @@ Create Date: 2021-12-10 19:25:29.802949
revision = "bb38f40aa3ff"
down_revision = "31bb738bd1d2"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
from sqlalchemy.ext.declarative import declarative_base # noqa: E402
from superset import db # noqa: E402
+
Base = declarative_base()
diff --git a/superset/migrations/versions/2021-12-13_14-06_fe23025b9441_rename_big_viz_total_form_data_fields.py b/superset/migrations/versions/2021-12-13_14-06_fe23025b9441_rename_big_viz_total_form_data_fields.py
index 11a46a919e..4a024ae1ef 100644
--- a/superset/migrations/versions/2021-12-13_14-06_fe23025b9441_rename_big_viz_total_form_data_fields.py
+++ b/superset/migrations/versions/2021-12-13_14-06_fe23025b9441_rename_big_viz_total_form_data_fields.py
@@ -35,6 +35,7 @@ from sqlalchemy.ext.declarative import declarative_base # noqa: E402
from superset import db # noqa: E402
+
Base = declarative_base()
logger = logging.getLogger("alembic")
diff --git a/superset/migrations/versions/2021-12-15_15-05_c53bae8f08dd_add_saved_query_foreign_key_to_tab_state.py b/superset/migrations/versions/2021-12-15_15-05_c53bae8f08dd_add_saved_query_foreign_key_to_tab_state.py
index 2f2a121bcf..0d561d5eed 100644
--- a/superset/migrations/versions/2021-12-15_15-05_c53bae8f08dd_add_saved_query_foreign_key_to_tab_state.py
+++ b/superset/migrations/versions/2021-12-15_15-05_c53bae8f08dd_add_saved_query_foreign_key_to_tab_state.py
@@ -25,8 +25,8 @@ Create Date: 2021-12-15 15:05:21.845777
revision = "c53bae8f08dd"
down_revision = "bb38f40aa3ff"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
def upgrade():
diff --git a/superset/migrations/versions/2021-12-17_16-56_31bb738bd1d2_move_pivot_table_v2_legacy_order_by_to_.py b/superset/migrations/versions/2021-12-17_16-56_31bb738bd1d2_move_pivot_table_v2_legacy_order_by_to_.py
index 7740e23da4..5d0d18dbe7 100644
--- a/superset/migrations/versions/2021-12-17_16-56_31bb738bd1d2_move_pivot_table_v2_legacy_order_by_to_.py
+++ b/superset/migrations/versions/2021-12-17_16-56_31bb738bd1d2_move_pivot_table_v2_legacy_order_by_to_.py
@@ -36,6 +36,7 @@ from sqlalchemy.ext.declarative import declarative_base # noqa: E402
from superset import db # noqa: E402
+
Base = declarative_base()
logger = logging.getLogger("alembic")
diff --git a/superset/migrations/versions/2022-01-19_07-34_5fd49410a97a_add_columns_for_external_management.py b/superset/migrations/versions/2022-01-19_07-34_5fd49410a97a_add_columns_for_external_management.py
index 984c1fc7b5..d3981bcf19 100644
--- a/superset/migrations/versions/2022-01-19_07-34_5fd49410a97a_add_columns_for_external_management.py
+++ b/superset/migrations/versions/2022-01-19_07-34_5fd49410a97a_add_columns_for_external_management.py
@@ -26,8 +26,8 @@ Create Date: 2022-01-19 07:34:20.594786
revision = "5fd49410a97a"
down_revision = "c53bae8f08dd"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
def upgrade():
diff --git a/superset/migrations/versions/2022-01-28_16-03_5afbb1a5849b_add_embedded_dahshoard_table.py b/superset/migrations/versions/2022-01-28_16-03_5afbb1a5849b_add_embedded_dahshoard_table.py
index c784595735..d4044567a1 100644
--- a/superset/migrations/versions/2022-01-28_16-03_5afbb1a5849b_add_embedded_dahshoard_table.py
+++ b/superset/migrations/versions/2022-01-28_16-03_5afbb1a5849b_add_embedded_dahshoard_table.py
@@ -28,8 +28,8 @@ down_revision = "5fd49410a97a"
from uuid import uuid4 # noqa: E402
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
from sqlalchemy_utils import UUIDType # noqa: E402
diff --git a/superset/migrations/versions/2022-03-02_09-20_b5a422d8e252_fix_query_and_saved_query_null_schema.py b/superset/migrations/versions/2022-03-02_09-20_b5a422d8e252_fix_query_and_saved_query_null_schema.py
index 061b320969..a57a38d394 100644
--- a/superset/migrations/versions/2022-03-02_09-20_b5a422d8e252_fix_query_and_saved_query_null_schema.py
+++ b/superset/migrations/versions/2022-03-02_09-20_b5a422d8e252_fix_query_and_saved_query_null_schema.py
@@ -28,6 +28,7 @@ from sqlalchemy.ext.declarative import declarative_base
from superset import db
+
# revision identifiers, used by Alembic.
revision = "b5a422d8e252"
down_revision = "b8d3a24d9131"
diff --git a/superset/migrations/versions/2022-03-02_16-41_7293b0ca7944_change_adhoc_filter_b_from_none_to_.py b/superset/migrations/versions/2022-03-02_16-41_7293b0ca7944_change_adhoc_filter_b_from_none_to_.py
index 3c0eb78448..6f09e4e15e 100644
--- a/superset/migrations/versions/2022-03-02_16-41_7293b0ca7944_change_adhoc_filter_b_from_none_to_.py
+++ b/superset/migrations/versions/2022-03-02_16-41_7293b0ca7944_change_adhoc_filter_b_from_none_to_.py
@@ -35,6 +35,7 @@ from sqlalchemy.ext.declarative import declarative_base # noqa: E402
from superset import db # noqa: E402
+
Base = declarative_base()
diff --git a/superset/migrations/versions/2022-03-04_09-59_6766938c6065_add_key_value_store.py b/superset/migrations/versions/2022-03-04_09-59_6766938c6065_add_key_value_store.py
index f22ac167ef..048e6e23bc 100644
--- a/superset/migrations/versions/2022-03-04_09-59_6766938c6065_add_key_value_store.py
+++ b/superset/migrations/versions/2022-03-04_09-59_6766938c6065_add_key_value_store.py
@@ -28,8 +28,8 @@ down_revision = "7293b0ca7944"
from uuid import uuid4 # noqa: E402
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
from sqlalchemy_utils import UUIDType # noqa: E402
diff --git a/superset/migrations/versions/2022-03-16_21-07_8b841273bec3_sql_lab_models_database_constraint_updates.py b/superset/migrations/versions/2022-03-16_21-07_8b841273bec3_sql_lab_models_database_constraint_updates.py
index c37cda7320..8e8a302e8c 100644
--- a/superset/migrations/versions/2022-03-16_21-07_8b841273bec3_sql_lab_models_database_constraint_updates.py
+++ b/superset/migrations/versions/2022-03-16_21-07_8b841273bec3_sql_lab_models_database_constraint_updates.py
@@ -26,8 +26,8 @@ Create Date: 2022-03-16 21:07:48.768425
revision = "8b841273bec3"
down_revision = "2ed890b36b94"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
from superset.utils.core import generic_find_fk_constraint_name # noqa: E402
diff --git a/superset/migrations/versions/2022-03-16_23-24_58df9d617f14_add_on_saved_query_delete_tab_state_.py b/superset/migrations/versions/2022-03-16_23-24_58df9d617f14_add_on_saved_query_delete_tab_state_.py
index e57203fb02..b904e3cdef 100644
--- a/superset/migrations/versions/2022-03-16_23-24_58df9d617f14_add_on_saved_query_delete_tab_state_.py
+++ b/superset/migrations/versions/2022-03-16_23-24_58df9d617f14_add_on_saved_query_delete_tab_state_.py
@@ -26,8 +26,8 @@ Create Date: 2022-03-16 23:24:40.278937
revision = "58df9d617f14"
down_revision = "6766938c6065"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
from superset.utils.core import generic_find_fk_constraint_name # noqa: E402
diff --git a/superset/migrations/versions/2022-04-01_14-38_a9422eeaae74_new_dataset_models_take_2.py b/superset/migrations/versions/2022-04-01_14-38_a9422eeaae74_new_dataset_models_take_2.py
index fd88258208..a96edb16ad 100644
--- a/superset/migrations/versions/2022-04-01_14-38_a9422eeaae74_new_dataset_models_take_2.py
+++ b/superset/migrations/versions/2022-04-01_14-38_a9422eeaae74_new_dataset_models_take_2.py
@@ -26,14 +26,14 @@ Create Date: 2022-04-01 14:38:09.499483
revision = "a9422eeaae74"
down_revision = "ad07e4fdbaba"
+from datetime import datetime # noqa: E402
import json # noqa: E402
import os # noqa: E402
-from datetime import datetime # noqa: E402
from typing import Optional, Union # noqa: E402
from uuid import uuid4 # noqa: E402
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
from sqlalchemy import select # noqa: E402
from sqlalchemy.ext.declarative import declarative_base, declared_attr # noqa: E402
from sqlalchemy.orm import backref, relationship, Session # noqa: E402
@@ -43,12 +43,16 @@ from sqlalchemy.sql.expression import and_, or_ # noqa: E402
from sqlalchemy_utils import UUIDType # noqa: E402
from superset.connectors.sqla.models import ADDITIVE_METRIC_TYPES_LOWER # noqa: E402
-from superset.connectors.sqla.utils import get_dialect_name, get_identifier_quoter # noqa: E402
+from superset.connectors.sqla.utils import ( # noqa: E402
+ get_dialect_name,
+ get_identifier_quoter,
+)
from superset.extensions import encrypted_field_factory # noqa: E402
from superset.migrations.shared.utils import assign_uuids # noqa: E402
from superset.sql_parse import extract_table_references, Table # noqa: E402
from superset.utils.core import MediumText # noqa: E402
+
Base = declarative_base()
SHOW_PROGRESS = os.environ.get("SHOW_PROGRESS") == "1"
UNKNOWN_TYPE = "UNKNOWN"
diff --git a/superset/migrations/versions/2022-04-04_15-04_b0d0249074e4_deprecate_time_range_endpoints_v2.py b/superset/migrations/versions/2022-04-04_15-04_b0d0249074e4_deprecate_time_range_endpoints_v2.py
index 2d0f01477f..081d6a1227 100644
--- a/superset/migrations/versions/2022-04-04_15-04_b0d0249074e4_deprecate_time_range_endpoints_v2.py
+++ b/superset/migrations/versions/2022-04-04_15-04_b0d0249074e4_deprecate_time_range_endpoints_v2.py
@@ -30,6 +30,7 @@ from sqlalchemy.ext.declarative import declarative_base
from superset import db
+
# revision identifiers, used by Alembic.
revision = "b0d0249074e4"
down_revision = "2ed890b36b94"
diff --git a/superset/migrations/versions/2022-04-18_11-20_ad07e4fdbaba_rm_time_range_endpoints_from_qc_3.py b/superset/migrations/versions/2022-04-18_11-20_ad07e4fdbaba_rm_time_range_endpoints_from_qc_3.py
index 2087bc3e0f..067ff69a6c 100644
--- a/superset/migrations/versions/2022-04-18_11-20_ad07e4fdbaba_rm_time_range_endpoints_from_qc_3.py
+++ b/superset/migrations/versions/2022-04-18_11-20_ad07e4fdbaba_rm_time_range_endpoints_from_qc_3.py
@@ -28,12 +28,13 @@ down_revision = "cecc6bf46990"
import json # noqa: E402
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
from sqlalchemy.ext.declarative import declarative_base # noqa: E402
from superset import db # noqa: E402
+
Base = declarative_base()
diff --git a/superset/migrations/versions/2022-05-03_19-39_cbe71abde154_fix_report_schedule_and_log.py b/superset/migrations/versions/2022-05-03_19-39_cbe71abde154_fix_report_schedule_and_log.py
index 89f9dc3279..8a5d5d65e0 100644
--- a/superset/migrations/versions/2022-05-03_19-39_cbe71abde154_fix_report_schedule_and_log.py
+++ b/superset/migrations/versions/2022-05-03_19-39_cbe71abde154_fix_report_schedule_and_log.py
@@ -33,6 +33,7 @@ from sqlalchemy.ext.declarative import declarative_base # noqa: E402
from superset import db # noqa: E402
from superset.reports.models import ReportState # noqa: E402
+
Base = declarative_base()
diff --git a/superset/migrations/versions/2022-05-18_16-07_e786798587de_delete_none_permissions.py b/superset/migrations/versions/2022-05-18_16-07_e786798587de_delete_none_permissions.py
index d89ccf653c..ccd5eeb4f3 100644
--- a/superset/migrations/versions/2022-05-18_16-07_e786798587de_delete_none_permissions.py
+++ b/superset/migrations/versions/2022-05-18_16-07_e786798587de_delete_none_permissions.py
@@ -39,6 +39,7 @@ from sqlalchemy import ( # noqa: E402
from sqlalchemy.ext.declarative import declarative_base # noqa: E402
from sqlalchemy.orm import relationship, Session # noqa: E402
+
Base = declarative_base()
diff --git a/superset/migrations/versions/2022-06-14_15-28_e09b4ae78457_resize_key_value_blob.py b/superset/migrations/versions/2022-06-14_15-28_e09b4ae78457_resize_key_value_blob.py
index 095a031907..ccfbdf498d 100644
--- a/superset/migrations/versions/2022-06-14_15-28_e09b4ae78457_resize_key_value_blob.py
+++ b/superset/migrations/versions/2022-06-14_15-28_e09b4ae78457_resize_key_value_blob.py
@@ -26,8 +26,8 @@ Create Date: 2022-06-14 15:28:42.746349
revision = "e09b4ae78457"
down_revision = "e786798587de"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
def upgrade():
diff --git a/superset/migrations/versions/2022-06-19_16-17_f3afaf1f11f0_add_unique_name_desc_rls.py b/superset/migrations/versions/2022-06-19_16-17_f3afaf1f11f0_add_unique_name_desc_rls.py
index 34f5522ebd..de83020219 100644
--- a/superset/migrations/versions/2022-06-19_16-17_f3afaf1f11f0_add_unique_name_desc_rls.py
+++ b/superset/migrations/versions/2022-06-19_16-17_f3afaf1f11f0_add_unique_name_desc_rls.py
@@ -26,11 +26,12 @@ Create Date: 2022-06-19 16:17:23.318618
revision = "f3afaf1f11f0"
down_revision = "e09b4ae78457"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
from sqlalchemy.ext.declarative import declarative_base # noqa: E402
from sqlalchemy.orm import Session # noqa: E402
+
Base = declarative_base()
diff --git a/superset/migrations/versions/2022-06-27_14-59_7fb8bca906d2_permalink_rename_filterstate.py b/superset/migrations/versions/2022-06-27_14-59_7fb8bca906d2_permalink_rename_filterstate.py
index 194760d2fc..b955dde520 100644
--- a/superset/migrations/versions/2022-06-27_14-59_7fb8bca906d2_permalink_rename_filterstate.py
+++ b/superset/migrations/versions/2022-06-27_14-59_7fb8bca906d2_permalink_rename_filterstate.py
@@ -36,6 +36,7 @@ from sqlalchemy.orm import Session # noqa: E402
from superset import db # noqa: E402
from superset.migrations.shared.utils import paginated_update # noqa: E402
+
Base = declarative_base()
VALUE_MAX_SIZE = 2**24 - 1
DASHBOARD_PERMALINK_RESOURCE_TYPE = "dashboard_permalink"
diff --git a/superset/migrations/versions/2022-07-05_15-48_409c7b420ab0_add_created_by_fk_as_owner.py b/superset/migrations/versions/2022-07-05_15-48_409c7b420ab0_add_created_by_fk_as_owner.py
index 57c5af4f21..0ade0704cf 100644
--- a/superset/migrations/versions/2022-07-05_15-48_409c7b420ab0_add_created_by_fk_as_owner.py
+++ b/superset/migrations/versions/2022-07-05_15-48_409c7b420ab0_add_created_by_fk_as_owner.py
@@ -29,6 +29,7 @@ from sqlalchemy.ext.declarative import declarative_base
# revision identifiers, used by Alembic.
from superset import db
+
revision = "409c7b420ab0"
down_revision = "a39867932713"
diff --git a/superset/migrations/versions/2022-07-07_13-00_c747c78868b6_migrating_legacy_treemap.py b/superset/migrations/versions/2022-07-07_13-00_c747c78868b6_migrating_legacy_treemap.py
index ff67fc5f2b..55af41eba9 100644
--- a/superset/migrations/versions/2022-07-07_13-00_c747c78868b6_migrating_legacy_treemap.py
+++ b/superset/migrations/versions/2022-07-07_13-00_c747c78868b6_migrating_legacy_treemap.py
@@ -28,6 +28,7 @@ from sqlalchemy.dialects.mysql.base import MySQLDialect
from superset import db
from superset.migrations.shared.migrate_viz import MigrateTreeMap
+
# revision identifiers, used by Alembic.
revision = "c747c78868b6"
down_revision = "cdcf3d64daf4"
diff --git a/superset/migrations/versions/2022-07-07_14-00_06e1e70058c7_migrating_legacy_area.py b/superset/migrations/versions/2022-07-07_14-00_06e1e70058c7_migrating_legacy_area.py
index adeaabac0c..3caa84511e 100644
--- a/superset/migrations/versions/2022-07-07_14-00_06e1e70058c7_migrating_legacy_area.py
+++ b/superset/migrations/versions/2022-07-07_14-00_06e1e70058c7_migrating_legacy_area.py
@@ -27,6 +27,7 @@ from alembic import op
from superset import db
from superset.migrations.shared.migrate_viz import MigrateAreaChart
+
# revision identifiers, used by Alembic.
revision = "06e1e70058c7"
down_revision = "c747c78868b6"
diff --git a/superset/migrations/versions/2022-07-19_15-16_a39867932713_query_context_to_mediumtext.py b/superset/migrations/versions/2022-07-19_15-16_a39867932713_query_context_to_mediumtext.py
index 39651ccecd..6d56f58702 100644
--- a/superset/migrations/versions/2022-07-19_15-16_a39867932713_query_context_to_mediumtext.py
+++ b/superset/migrations/versions/2022-07-19_15-16_a39867932713_query_context_to_mediumtext.py
@@ -25,6 +25,7 @@ Create Date: 2022-07-19 15:16:06.091961
from alembic import op
from sqlalchemy.dialects.mysql.base import MySQLDialect
+
# revision identifiers, used by Alembic.
revision = "a39867932713"
down_revision = "06e1e70058c7"
diff --git a/superset/migrations/versions/2022-08-16_15-23_6d3c6f9d665d_fix_table_chart_conditional_formatting_.py b/superset/migrations/versions/2022-08-16_15-23_6d3c6f9d665d_fix_table_chart_conditional_formatting_.py
index 37b28c0aca..920a47b3bf 100644
--- a/superset/migrations/versions/2022-08-16_15-23_6d3c6f9d665d_fix_table_chart_conditional_formatting_.py
+++ b/superset/migrations/versions/2022-08-16_15-23_6d3c6f9d665d_fix_table_chart_conditional_formatting_.py
@@ -30,6 +30,7 @@ from sqlalchemy.ext.declarative import declarative_base
from superset import db
+
# revision identifiers, used by Alembic.
revision = "6d3c6f9d665d"
down_revision = "ffa79af61a56"
diff --git a/superset/migrations/versions/2022-08-31_19-30_291f024254b5_drop_column_allow_multi_schema_metadata_fetch.py b/superset/migrations/versions/2022-08-31_19-30_291f024254b5_drop_column_allow_multi_schema_metadata_fetch.py
index 3060bef0e1..329084d87c 100644
--- a/superset/migrations/versions/2022-08-31_19-30_291f024254b5_drop_column_allow_multi_schema_metadata_fetch.py
+++ b/superset/migrations/versions/2022-08-31_19-30_291f024254b5_drop_column_allow_multi_schema_metadata_fetch.py
@@ -27,8 +27,8 @@ Create Date: 2022-08-31 19:30:33.665025
revision = "291f024254b5"
down_revision = "6d3c6f9d665d"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
def upgrade():
diff --git a/superset/migrations/versions/2022-10-03_17-34_deb4c9d4a4ef_parameters_in_saved_queries.py b/superset/migrations/versions/2022-10-03_17-34_deb4c9d4a4ef_parameters_in_saved_queries.py
index 2d6f741081..ff3d78ff92 100644
--- a/superset/migrations/versions/2022-10-03_17-34_deb4c9d4a4ef_parameters_in_saved_queries.py
+++ b/superset/migrations/versions/2022-10-03_17-34_deb4c9d4a4ef_parameters_in_saved_queries.py
@@ -26,8 +26,8 @@ Create Date: 2022-10-03 17:34:00.721559
revision = "deb4c9d4a4ef"
down_revision = "291f024254b5"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
def upgrade():
diff --git a/superset/migrations/versions/2022-10-20_10-48_f3c2d8ec8595_create_ssh_tunnel_credentials_tbl.py b/superset/migrations/versions/2022-10-20_10-48_f3c2d8ec8595_create_ssh_tunnel_credentials_tbl.py
index 147ad8d372..ea90dc50ec 100644
--- a/superset/migrations/versions/2022-10-20_10-48_f3c2d8ec8595_create_ssh_tunnel_credentials_tbl.py
+++ b/superset/migrations/versions/2022-10-20_10-48_f3c2d8ec8595_create_ssh_tunnel_credentials_tbl.py
@@ -28,13 +28,14 @@ down_revision = "4ce1d9b25135"
from uuid import uuid4 # noqa: E402
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
from sqlalchemy_utils import UUIDType # noqa: E402
from superset import app # noqa: E402
from superset.extensions import encrypted_field_factory # noqa: E402
+
app_config = app.config
diff --git a/superset/migrations/versions/2022-11-28_17-51_4ce1d9b25135_remove_filter_bar_orientation.py b/superset/migrations/versions/2022-11-28_17-51_4ce1d9b25135_remove_filter_bar_orientation.py
index 86ee15350f..ae7ee8cc21 100644
--- a/superset/migrations/versions/2022-11-28_17-51_4ce1d9b25135_remove_filter_bar_orientation.py
+++ b/superset/migrations/versions/2022-11-28_17-51_4ce1d9b25135_remove_filter_bar_orientation.py
@@ -28,12 +28,13 @@ down_revision = "deb4c9d4a4ef"
import json # noqa: E402
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
from sqlalchemy.ext.declarative import declarative_base # noqa: E402
from superset import db # noqa: E402
+
Base = declarative_base()
diff --git a/superset/migrations/versions/2023-02-28_14-46_c0a3ea245b61_remove_show_native_filters.py b/superset/migrations/versions/2023-02-28_14-46_c0a3ea245b61_remove_show_native_filters.py
index 3954a7cb9a..a084e91fcd 100644
--- a/superset/migrations/versions/2023-02-28_14-46_c0a3ea245b61_remove_show_native_filters.py
+++ b/superset/migrations/versions/2023-02-28_14-46_c0a3ea245b61_remove_show_native_filters.py
@@ -28,12 +28,13 @@ down_revision = "9c2a5681ddfd"
import json # noqa: E402
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
from sqlalchemy.ext.declarative import declarative_base # noqa: E402
from superset import db # noqa: E402
+
Base = declarative_base()
diff --git a/superset/migrations/versions/2023-03-05_10-06_d0ac08bb5b83_invert_horizontal_bar_chart_order.py b/superset/migrations/versions/2023-03-05_10-06_d0ac08bb5b83_invert_horizontal_bar_chart_order.py
index df97cdb210..e42734c157 100644
--- a/superset/migrations/versions/2023-03-05_10-06_d0ac08bb5b83_invert_horizontal_bar_chart_order.py
+++ b/superset/migrations/versions/2023-03-05_10-06_d0ac08bb5b83_invert_horizontal_bar_chart_order.py
@@ -34,6 +34,7 @@ from sqlalchemy.ext.declarative import declarative_base # noqa: E402
from superset import db # noqa: E402
+
Base = declarative_base()
ORIENTATION = "horizontal"
diff --git a/superset/migrations/versions/2023-03-17_13-24_b5ea9d343307_bar_chart_stack_options.py b/superset/migrations/versions/2023-03-17_13-24_b5ea9d343307_bar_chart_stack_options.py
index 983384b3ff..55a336fb6b 100644
--- a/superset/migrations/versions/2023-03-17_13-24_b5ea9d343307_bar_chart_stack_options.py
+++ b/superset/migrations/versions/2023-03-17_13-24_b5ea9d343307_bar_chart_stack_options.py
@@ -34,6 +34,7 @@ from sqlalchemy.ext.declarative import declarative_base # noqa: E402
from superset import db # noqa: E402
+
Base = declarative_base()
CHART_TYPE = "%echarts_timeseries%"
diff --git a/superset/migrations/versions/2023-03-27_12-30_7e67aecbf3f1_chart_ds_constraint.py b/superset/migrations/versions/2023-03-27_12-30_7e67aecbf3f1_chart_ds_constraint.py
index 7b877d17e2..595907df3f 100644
--- a/superset/migrations/versions/2023-03-27_12-30_7e67aecbf3f1_chart_ds_constraint.py
+++ b/superset/migrations/versions/2023-03-27_12-30_7e67aecbf3f1_chart_ds_constraint.py
@@ -29,12 +29,13 @@ down_revision = "07f9a902af1b"
import json # noqa: E402
import logging # noqa: E402
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
from sqlalchemy.ext.declarative import declarative_base # noqa: E402
from superset import db # noqa: E402
+
Base = declarative_base()
logger = logging.getLogger(__name__)
diff --git a/superset/migrations/versions/2023-05-01_12-03_9c2a5681ddfd_convert_key_value_entries_to_json.py b/superset/migrations/versions/2023-05-01_12-03_9c2a5681ddfd_convert_key_value_entries_to_json.py
index fd1d728f0d..44c8759779 100644
--- a/superset/migrations/versions/2023-05-01_12-03_9c2a5681ddfd_convert_key_value_entries_to_json.py
+++ b/superset/migrations/versions/2023-05-01_12-03_9c2a5681ddfd_convert_key_value_entries_to_json.py
@@ -38,6 +38,7 @@ from sqlalchemy.orm import Session # noqa: E402
from superset import db # noqa: E402
from superset.migrations.shared.utils import paginated_update # noqa: E402
+
Base = declarative_base()
VALUE_MAX_SIZE = 2**24 - 1
RESOURCES_TO_MIGRATE = ("app", "dashboard_permalink", "explore_permalink")
diff --git a/superset/migrations/versions/2023-05-11_12-41_4ea966691069_cross_filter_global_scoping.py b/superset/migrations/versions/2023-05-11_12-41_4ea966691069_cross_filter_global_scoping.py
index 52128f8fda..d9b8b691bd 100644
--- a/superset/migrations/versions/2023-05-11_12-41_4ea966691069_cross_filter_global_scoping.py
+++ b/superset/migrations/versions/2023-05-11_12-41_4ea966691069_cross_filter_global_scoping.py
@@ -30,13 +30,14 @@ import copy # noqa: E402
import json # noqa: E402
import logging # noqa: E402
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
from sqlalchemy.ext.declarative import declarative_base # noqa: E402
from superset import db # noqa: E402
from superset.migrations.shared.utils import paginated_update # noqa: E402
+
Base = declarative_base()
logger = logging.getLogger(__name__)
diff --git a/superset/migrations/versions/2023-06-01_13-13_83e1abbe777f_drop_access_request.py b/superset/migrations/versions/2023-06-01_13-13_83e1abbe777f_drop_access_request.py
index 4e08a1b125..23ae7e9d10 100644
--- a/superset/migrations/versions/2023-06-01_13-13_83e1abbe777f_drop_access_request.py
+++ b/superset/migrations/versions/2023-06-01_13-13_83e1abbe777f_drop_access_request.py
@@ -26,8 +26,8 @@ Create Date: 2023-06-01 13:13:18.147362
revision = "83e1abbe777f"
down_revision = "ae58e1e58e5c"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
def upgrade():
diff --git a/superset/migrations/versions/2023-06-08_09-02_9ba2ce3086e5_migrate_pivot_table_v1_to_v2.py b/superset/migrations/versions/2023-06-08_09-02_9ba2ce3086e5_migrate_pivot_table_v1_to_v2.py
index f7c7a63ae6..ad657bb911 100644
--- a/superset/migrations/versions/2023-06-08_09-02_9ba2ce3086e5_migrate_pivot_table_v1_to_v2.py
+++ b/superset/migrations/versions/2023-06-08_09-02_9ba2ce3086e5_migrate_pivot_table_v1_to_v2.py
@@ -27,6 +27,7 @@ from alembic import op
from superset import db
from superset.migrations.shared.migrate_viz import MigratePivotTable
+
# revision identifiers, used by Alembic.
revision = "9ba2ce3086e5"
down_revision = "4ea966691069"
diff --git a/superset/migrations/versions/2023-06-08_10-22_4c5da39be729_migrate_treemap_chart.py b/superset/migrations/versions/2023-06-08_10-22_4c5da39be729_migrate_treemap_chart.py
index e80102b02d..4a49be2572 100644
--- a/superset/migrations/versions/2023-06-08_10-22_4c5da39be729_migrate_treemap_chart.py
+++ b/superset/migrations/versions/2023-06-08_10-22_4c5da39be729_migrate_treemap_chart.py
@@ -28,6 +28,7 @@ from sqlalchemy.dialects.mysql.base import MySQLDialect
from superset import db
from superset.migrations.shared.migrate_viz import MigrateTreeMap
+
# revision identifiers, used by Alembic.
revision = "4c5da39be729"
down_revision = "9ba2ce3086e5"
diff --git a/superset/migrations/versions/2023-06-08_11-34_ae58e1e58e5c_migrate_dual_line_to_mixed_chart.py b/superset/migrations/versions/2023-06-08_11-34_ae58e1e58e5c_migrate_dual_line_to_mixed_chart.py
index ba98d6e3f5..7287d8c73d 100644
--- a/superset/migrations/versions/2023-06-08_11-34_ae58e1e58e5c_migrate_dual_line_to_mixed_chart.py
+++ b/superset/migrations/versions/2023-06-08_11-34_ae58e1e58e5c_migrate_dual_line_to_mixed_chart.py
@@ -25,13 +25,15 @@ Create Date: 2023-06-08 11:34:36.241939
from alembic import op
from superset import db
+from superset.migrations.shared.migrate_viz.processors import (
+ MigrateDualLine, # noqa: E402
+)
+
# revision identifiers, used by Alembic.
revision = "ae58e1e58e5c"
down_revision = "4c5da39be729"
-from superset.migrations.shared.migrate_viz.processors import MigrateDualLine # noqa: E402
-
def upgrade():
bind = op.get_bind()
diff --git a/superset/migrations/versions/2023-06-21_14-02_90139bf715e4_add_currency_column_to_metrics.py b/superset/migrations/versions/2023-06-21_14-02_90139bf715e4_add_currency_column_to_metrics.py
index 005f4ce40d..196592293f 100644
--- a/superset/migrations/versions/2023-06-21_14-02_90139bf715e4_add_currency_column_to_metrics.py
+++ b/superset/migrations/versions/2023-06-21_14-02_90139bf715e4_add_currency_column_to_metrics.py
@@ -26,8 +26,8 @@ Create Date: 2023-06-21 14:02:08.200955
revision = "90139bf715e4"
down_revision = "83e1abbe777f"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
def upgrade():
diff --git a/superset/migrations/versions/2023-06-22_13-39_6fbe660cac39_add_on_delete_cascade_for_tables_references.py b/superset/migrations/versions/2023-06-22_13-39_6fbe660cac39_add_on_delete_cascade_for_tables_references.py
index ce25989b4a..32b9ed8744 100644
--- a/superset/migrations/versions/2023-06-22_13-39_6fbe660cac39_add_on_delete_cascade_for_tables_references.py
+++ b/superset/migrations/versions/2023-06-22_13-39_6fbe660cac39_add_on_delete_cascade_for_tables_references.py
@@ -28,6 +28,7 @@ down_revision = "90139bf715e4"
from superset.migrations.shared.constraints import ForeignKey, redefine # noqa: E402
+
foreign_keys = [
ForeignKey(
table="sql_metrics",
diff --git a/superset/migrations/versions/2023-06-27_16-54_8e5b0fb85b9a_add_custom_size_columns_to_report.py b/superset/migrations/versions/2023-06-27_16-54_8e5b0fb85b9a_add_custom_size_columns_to_report.py
index 16b46254d4..8fe30309fc 100644
--- a/superset/migrations/versions/2023-06-27_16-54_8e5b0fb85b9a_add_custom_size_columns_to_report.py
+++ b/superset/migrations/versions/2023-06-27_16-54_8e5b0fb85b9a_add_custom_size_columns_to_report.py
@@ -22,8 +22,9 @@ Create Date: 2023-06-27 16:54:57.161475
"""
-import sqlalchemy as sa
from alembic import op
+import sqlalchemy as sa
+
# revision identifiers, used by Alembic.
revision = "8e5b0fb85b9a"
diff --git a/superset/migrations/versions/2023-06-28_19-49_bf646a0c1501_json_metadata.py b/superset/migrations/versions/2023-06-28_19-49_bf646a0c1501_json_metadata.py
index 3f409af736..bbb15455d7 100644
--- a/superset/migrations/versions/2023-06-28_19-49_bf646a0c1501_json_metadata.py
+++ b/superset/migrations/versions/2023-06-28_19-49_bf646a0c1501_json_metadata.py
@@ -22,11 +22,12 @@ Create Date: 2023-06-28 19:49:59.217255
"""
-import sqlalchemy as sa
from alembic import op
+import sqlalchemy as sa
from superset.utils.core import MediumText
+
# revision identifiers, used by Alembic.
revision = "bf646a0c1501"
down_revision = "a23c6f8b1280"
diff --git a/superset/migrations/versions/2023-06-29_18-38_240d23c7f86f_update_tag_model_w_description.py b/superset/migrations/versions/2023-06-29_18-38_240d23c7f86f_update_tag_model_w_description.py
index a6d05e11ae..aa631b8193 100644
--- a/superset/migrations/versions/2023-06-29_18-38_240d23c7f86f_update_tag_model_w_description.py
+++ b/superset/migrations/versions/2023-06-29_18-38_240d23c7f86f_update_tag_model_w_description.py
@@ -26,8 +26,8 @@ Create Date: 2023-06-29 18:38:30.033529
revision = "240d23c7f86f"
down_revision = "8e5b0fb85b9a"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
def upgrade():
diff --git a/superset/migrations/versions/2023-07-11_15-51_6d05b0a70c89_add_on_delete_cascade_for_owners_references.py b/superset/migrations/versions/2023-07-11_15-51_6d05b0a70c89_add_on_delete_cascade_for_owners_references.py
index bad2801a6f..b65c734b48 100644
--- a/superset/migrations/versions/2023-07-11_15-51_6d05b0a70c89_add_on_delete_cascade_for_owners_references.py
+++ b/superset/migrations/versions/2023-07-11_15-51_6d05b0a70c89_add_on_delete_cascade_for_owners_references.py
@@ -28,6 +28,7 @@ down_revision = "f92a3124dd66"
from superset.migrations.shared.constraints import ForeignKey, redefine # noqa: E402
+
foreign_keys = [
ForeignKey(
table="dashboard_user",
diff --git a/superset/migrations/versions/2023-07-12_20-34_e0f6f91c2055_create_user_favorite_table.py b/superset/migrations/versions/2023-07-12_20-34_e0f6f91c2055_create_user_favorite_table.py
index 2cf0e02ce8..7198a9582c 100644
--- a/superset/migrations/versions/2023-07-12_20-34_e0f6f91c2055_create_user_favorite_table.py
+++ b/superset/migrations/versions/2023-07-12_20-34_e0f6f91c2055_create_user_favorite_table.py
@@ -26,8 +26,8 @@ Create Date: 2023-07-12 20:34:57.553981
revision = "e0f6f91c2055"
down_revision = "bf646a0c1501"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
def upgrade():
diff --git a/superset/migrations/versions/2023-07-18_15-30_863adcf72773_delete_obsolete_druid_nosql_slice_parameters.py b/superset/migrations/versions/2023-07-18_15-30_863adcf72773_delete_obsolete_druid_nosql_slice_parameters.py
index 4104c2a593..14c13c787a 100644
--- a/superset/migrations/versions/2023-07-18_15-30_863adcf72773_delete_obsolete_druid_nosql_slice_parameters.py
+++ b/superset/migrations/versions/2023-07-18_15-30_863adcf72773_delete_obsolete_druid_nosql_slice_parameters.py
@@ -35,6 +35,7 @@ from sqlalchemy.ext.declarative import declarative_base # noqa: E402
from superset import db # noqa: E402
+
Base = declarative_base()
diff --git a/superset/migrations/versions/2023-07-19_16-48_a23c6f8b1280_cleanup_erroneous_parent_filter_ids.py b/superset/migrations/versions/2023-07-19_16-48_a23c6f8b1280_cleanup_erroneous_parent_filter_ids.py
index a41dea4976..933dfc4055 100644
--- a/superset/migrations/versions/2023-07-19_16-48_a23c6f8b1280_cleanup_erroneous_parent_filter_ids.py
+++ b/superset/migrations/versions/2023-07-19_16-48_a23c6f8b1280_cleanup_erroneous_parent_filter_ids.py
@@ -36,6 +36,7 @@ from sqlalchemy.ext.declarative import declarative_base # noqa: E402
from superset import db # noqa: E402
+
Base = declarative_base()
diff --git a/superset/migrations/versions/2023-07-19_17-54_ee179a490af9_deckgl_path_width_units.py b/superset/migrations/versions/2023-07-19_17-54_ee179a490af9_deckgl_path_width_units.py
index 8110c42dc7..6f3153401d 100644
--- a/superset/migrations/versions/2023-07-19_17-54_ee179a490af9_deckgl_path_width_units.py
+++ b/superset/migrations/versions/2023-07-19_17-54_ee179a490af9_deckgl_path_width_units.py
@@ -31,6 +31,7 @@ from sqlalchemy.ext.declarative import declarative_base
from superset import db
+
# revision identifiers, used by Alembic.
revision = "ee179a490af9"
down_revision = "e0f6f91c2055"
diff --git a/superset/migrations/versions/2023-08-02_15-23_0769ef90fddd_fix_schema_perm_for_datasets.py b/superset/migrations/versions/2023-08-02_15-23_0769ef90fddd_fix_schema_perm_for_datasets.py
index 428677b372..5b57af8190 100644
--- a/superset/migrations/versions/2023-08-02_15-23_0769ef90fddd_fix_schema_perm_for_datasets.py
+++ b/superset/migrations/versions/2023-08-02_15-23_0769ef90fddd_fix_schema_perm_for_datasets.py
@@ -26,13 +26,14 @@ Create Date: 2023-08-02 15:23:58.242396
revision = "0769ef90fddd"
down_revision = "ee179a490af9"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
from sqlalchemy.dialects.sqlite.base import SQLiteDialect # noqa: E402
from sqlalchemy.ext.declarative import declarative_base # noqa: E402
from superset import db # noqa: E402
+
Base = declarative_base()
diff --git a/superset/migrations/versions/2023-08-08_14-14_2e826adca42c_log_json.py b/superset/migrations/versions/2023-08-08_14-14_2e826adca42c_log_json.py
index 4fc0d08789..562d73e598 100644
--- a/superset/migrations/versions/2023-08-08_14-14_2e826adca42c_log_json.py
+++ b/superset/migrations/versions/2023-08-08_14-14_2e826adca42c_log_json.py
@@ -22,11 +22,12 @@ Create Date: 2023-08-08 14:14:23.381364
"""
-import sqlalchemy as sa
from alembic import op
+import sqlalchemy as sa
from superset.utils.core import MediumText
+
# revision identifiers, used by Alembic.
revision = "2e826adca42c"
down_revision = "0769ef90fddd"
diff --git a/superset/migrations/versions/2023-08-09_14-17_8ace289026f3_add_on_delete_cascade_for_dashboard_slices.py b/superset/migrations/versions/2023-08-09_14-17_8ace289026f3_add_on_delete_cascade_for_dashboard_slices.py
index ff2ea71d00..ef86fb7ce2 100644
--- a/superset/migrations/versions/2023-08-09_14-17_8ace289026f3_add_on_delete_cascade_for_dashboard_slices.py
+++ b/superset/migrations/versions/2023-08-09_14-17_8ace289026f3_add_on_delete_cascade_for_dashboard_slices.py
@@ -29,6 +29,7 @@ down_revision = "2e826adca42c"
from superset.migrations.shared.constraints import ForeignKey, redefine # noqa: E402
+
foreign_keys = [
ForeignKey(
table="dashboard_slices",
diff --git a/superset/migrations/versions/2023-08-09_15-39_4448fa6deeb1__dd_on_delete_cascade_for_embedded_dashboards.py.py b/superset/migrations/versions/2023-08-09_15-39_4448fa6deeb1__dd_on_delete_cascade_for_embedded_dashboards.py.py
index 54aa5bc570..1724c782da 100644
--- a/superset/migrations/versions/2023-08-09_15-39_4448fa6deeb1__dd_on_delete_cascade_for_embedded_dashboards.py.py
+++ b/superset/migrations/versions/2023-08-09_15-39_4448fa6deeb1__dd_on_delete_cascade_for_embedded_dashboards.py.py
@@ -28,6 +28,7 @@ down_revision = "8ace289026f3"
from superset.migrations.shared.constraints import ForeignKey, redefine # noqa: E402
+
foreign_keys = [
ForeignKey(
table="embedded_dashboards",
diff --git a/superset/migrations/versions/2023-08-14_09-38_9f4a086c2676_add_normalize_columns_to_sqla_model.py b/superset/migrations/versions/2023-08-14_09-38_9f4a086c2676_add_normalize_columns_to_sqla_model.py
index b79b032a05..36b2579730 100644
--- a/superset/migrations/versions/2023-08-14_09-38_9f4a086c2676_add_normalize_columns_to_sqla_model.py
+++ b/superset/migrations/versions/2023-08-14_09-38_9f4a086c2676_add_normalize_columns_to_sqla_model.py
@@ -26,13 +26,14 @@ Create Date: 2023-08-14 09:38:11.897437
revision = "9f4a086c2676"
down_revision = "4448fa6deeb1"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
from sqlalchemy.ext.declarative import declarative_base # noqa: E402
from superset import db # noqa: E402
from superset.migrations.shared.utils import paginated_update # noqa: E402
+
Base = declarative_base()
diff --git a/superset/migrations/versions/2023-08-22_11-09_ec54aca4c8a2_increase_ab_user_email_field_size.py b/superset/migrations/versions/2023-08-22_11-09_ec54aca4c8a2_increase_ab_user_email_field_size.py
index 33f57953d3..85f6bfea48 100644
--- a/superset/migrations/versions/2023-08-22_11-09_ec54aca4c8a2_increase_ab_user_email_field_size.py
+++ b/superset/migrations/versions/2023-08-22_11-09_ec54aca4c8a2_increase_ab_user_email_field_size.py
@@ -26,8 +26,8 @@ Create Date: 2023-08-22 11:09:48.577457
revision = "ec54aca4c8a2"
down_revision = "9f4a086c2676"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
def upgrade():
diff --git a/superset/migrations/versions/2023-09-06_13-18_317970b4400c_added_time_secondary_column_to_.py b/superset/migrations/versions/2023-09-06_13-18_317970b4400c_added_time_secondary_column_to_.py
index 1dbc216f83..010d9b7192 100755
--- a/superset/migrations/versions/2023-09-06_13-18_317970b4400c_added_time_secondary_column_to_.py
+++ b/superset/migrations/versions/2023-09-06_13-18_317970b4400c_added_time_secondary_column_to_.py
@@ -26,12 +26,16 @@ Create Date: 2023-09-06 13:18:59.597259
revision = "317970b4400c"
down_revision = "ec54aca4c8a2"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
from sqlalchemy.ext.declarative import declarative_base # noqa: E402
from superset import db # noqa: E402
-from superset.migrations.shared.utils import paginated_update, table_has_column # noqa: E402
+from superset.migrations.shared.utils import ( # noqa: E402
+ paginated_update,
+ table_has_column,
+)
+
Base = declarative_base()
diff --git a/superset/migrations/versions/2023-09-15_12-58_4b85906e5b91_add_on_delete_cascade_for_dashboard_roles.py b/superset/migrations/versions/2023-09-15_12-58_4b85906e5b91_add_on_delete_cascade_for_dashboard_roles.py
index 702751948b..85d3dfc4d8 100644
--- a/superset/migrations/versions/2023-09-15_12-58_4b85906e5b91_add_on_delete_cascade_for_dashboard_roles.py
+++ b/superset/migrations/versions/2023-09-15_12-58_4b85906e5b91_add_on_delete_cascade_for_dashboard_roles.py
@@ -29,6 +29,7 @@ down_revision = "317970b4400c"
from superset.migrations.shared.constraints import ForeignKey, redefine # noqa: E402
+
foreign_keys = [
ForeignKey(
table="dashboard_roles",
diff --git a/superset/migrations/versions/2023-12-15_17-58_06dd9ff00fe8_add_percent_calculation_type_funnel_.py b/superset/migrations/versions/2023-12-15_17-58_06dd9ff00fe8_add_percent_calculation_type_funnel_.py
index 5811cb4b3d..46953d2a93 100644
--- a/superset/migrations/versions/2023-12-15_17-58_06dd9ff00fe8_add_percent_calculation_type_funnel_.py
+++ b/superset/migrations/versions/2023-12-15_17-58_06dd9ff00fe8_add_percent_calculation_type_funnel_.py
@@ -31,6 +31,7 @@ from sqlalchemy.ext.declarative import declarative_base
from superset import db
from superset.migrations.shared.utils import paginated_update
+
# revision identifiers, used by Alembic.
revision = "06dd9ff00fe8"
down_revision = "b7851ee5522f"
diff --git a/superset/migrations/versions/2024-01-17_13-09_96164e3017c6_tagged_object_unique_constraint.py b/superset/migrations/versions/2024-01-17_13-09_96164e3017c6_tagged_object_unique_constraint.py
index fd3d883c99..67f23f8b8b 100644
--- a/superset/migrations/versions/2024-01-17_13-09_96164e3017c6_tagged_object_unique_constraint.py
+++ b/superset/migrations/versions/2024-01-17_13-09_96164e3017c6_tagged_object_unique_constraint.py
@@ -16,11 +16,12 @@
# under the License.
import enum
-import migration_utils as utils
from alembic import op
+import migration_utils as utils
from sqlalchemy import Column, Enum, Integer, MetaData, Table
from sqlalchemy.sql import func, select
+
# revision identifiers, used by Alembic.
revision = "96164e3017c6"
down_revision = "59a1450b3c10"
diff --git a/superset/migrations/versions/2024-01-18_15-20_214f580d09c9_migrate_filter_boxes_to_native_filters.py b/superset/migrations/versions/2024-01-18_15-20_214f580d09c9_migrate_filter_boxes_to_native_filters.py
index 830905e0e0..4699b1fd25 100644
--- a/superset/migrations/versions/2024-01-18_15-20_214f580d09c9_migrate_filter_boxes_to_native_filters.py
+++ b/superset/migrations/versions/2024-01-18_15-20_214f580d09c9_migrate_filter_boxes_to_native_filters.py
@@ -35,6 +35,7 @@ from superset import db # noqa: E402
from superset.migrations.shared.native_filters import migrate_dashboard # noqa: E402
from superset.migrations.shared.utils import paginated_update # noqa: E402
+
Base = declarative_base()
dashboard_slices = Table(
diff --git a/superset/migrations/versions/2024-01-19_10-03_e863403c0c50_drop_url_table.py b/superset/migrations/versions/2024-01-19_10-03_e863403c0c50_drop_url_table.py
index df46f36bc6..acd5f05fc2 100644
--- a/superset/migrations/versions/2024-01-19_10-03_e863403c0c50_drop_url_table.py
+++ b/superset/migrations/versions/2024-01-19_10-03_e863403c0c50_drop_url_table.py
@@ -28,8 +28,9 @@ down_revision = "214f580d09c9"
from importlib import import_module # noqa: E402
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
+
module = import_module("superset.migrations.versions.2016-01-13_20-24_8e80a26a31db_")
diff --git a/superset/migrations/versions/2024-02-07_17-13_87d38ad83218_migrate_can_view_and_drill_permission.py b/superset/migrations/versions/2024-02-07_17-13_87d38ad83218_migrate_can_view_and_drill_permission.py
index c15379df6d..e5ebee5723 100644
--- a/superset/migrations/versions/2024-02-07_17-13_87d38ad83218_migrate_can_view_and_drill_permission.py
+++ b/superset/migrations/versions/2024-02-07_17-13_87d38ad83218_migrate_can_view_and_drill_permission.py
@@ -38,6 +38,7 @@ from superset.migrations.shared.security_converge import ( # noqa: E402
Pvm,
)
+
NEW_PVMS = {"Dashboard": ("can_view_chart_as_table",)}
PVM_MAP = {
diff --git a/superset/migrations/versions/2024-02-14_14-43_17fcea065655_change_text_to_mediumtext.py b/superset/migrations/versions/2024-02-14_14-43_17fcea065655_change_text_to_mediumtext.py
index 3ba126d24e..5e4fe8dad2 100644
--- a/superset/migrations/versions/2024-02-14_14-43_17fcea065655_change_text_to_mediumtext.py
+++ b/superset/migrations/versions/2024-02-14_14-43_17fcea065655_change_text_to_mediumtext.py
@@ -26,12 +26,13 @@ Create Date: 2024-02-14 14:43:39.898093
revision = "17fcea065655"
down_revision = "87d38ad83218"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
from sqlalchemy.dialects.mysql.base import MySQLDialect # noqa: E402
from superset.utils.core import MediumText # noqa: E402
+
TABLE_COLUMNS = [
"annotation.json_metadata",
"css_templates.css",
diff --git a/superset/migrations/versions/2024-03-01_10-47_be1b217cd8cd_big_number_kpi_single_metric.py b/superset/migrations/versions/2024-03-01_10-47_be1b217cd8cd_big_number_kpi_single_metric.py
index 84466b5480..3c3d5f25a0 100644
--- a/superset/migrations/versions/2024-03-01_10-47_be1b217cd8cd_big_number_kpi_single_metric.py
+++ b/superset/migrations/versions/2024-03-01_10-47_be1b217cd8cd_big_number_kpi_single_metric.py
@@ -36,6 +36,7 @@ from sqlalchemy.ext.declarative import declarative_base # noqa: E402
from superset import db # noqa: E402
from superset.migrations.shared.utils import paginated_update # noqa: E402
+
Base = declarative_base()
diff --git a/superset/migrations/versions/2024-03-20_16-02_678eefb4ab44_add_access_token_table.py b/superset/migrations/versions/2024-03-20_16-02_678eefb4ab44_add_access_token_table.py
index ff3f06f077..188995e2f3 100644
--- a/superset/migrations/versions/2024-03-20_16-02_678eefb4ab44_add_access_token_table.py
+++ b/superset/migrations/versions/2024-03-20_16-02_678eefb4ab44_add_access_token_table.py
@@ -26,8 +26,8 @@ Create Date: 2024-03-20 16:02:58.515915
revision = "678eefb4ab44"
down_revision = "be1b217cd8cd"
-import sqlalchemy as sa # noqa: E402
from alembic import op # noqa: E402
+import sqlalchemy as sa # noqa: E402
from sqlalchemy_utils import EncryptedType # noqa: E402
diff --git a/superset/migrations/versions/2024-04-01_22-44_c22cb5c2e546_user_attr_avatar_url.py b/superset/migrations/versions/2024-04-01_22-44_c22cb5c2e546_user_attr_avatar_url.py
index 8e07f1b6c3..de6128ae48 100644
--- a/superset/migrations/versions/2024-04-01_22-44_c22cb5c2e546_user_attr_avatar_url.py
+++ b/superset/migrations/versions/2024-04-01_22-44_c22cb5c2e546_user_attr_avatar_url.py
@@ -21,8 +21,9 @@ Create Date: 2024-04-01 22:44:40.386543
"""
-import sqlalchemy as sa
from alembic import op
+import sqlalchemy as sa
+
# revision identifiers, used by Alembic.
revision = "c22cb5c2e546"
diff --git a/superset/migrations/versions/2024-04-08_15-43_5ad7321c2169_mig_new_csv_upload_perm.py b/superset/migrations/versions/2024-04-08_15-43_5ad7321c2169_mig_new_csv_upload_perm.py
index 3a846c42dc..ce631c34fc 100644
--- a/superset/migrations/versions/2024-04-08_15-43_5ad7321c2169_mig_new_csv_upload_perm.py
+++ b/superset/migrations/versions/2024-04-08_15-43_5ad7321c2169_mig_new_csv_upload_perm.py
@@ -38,6 +38,7 @@ from superset.migrations.shared.security_converge import ( # noqa: E402
Pvm,
)
+
NEW_PVMS = {"Database": ("can_csv_upload",)}
PVM_MAP = {
diff --git a/superset/migrations/versions/2024-04-11_15-41_5f57af97bc3f_add_catalog_column.py b/superset/migrations/versions/2024-04-11_15-41_5f57af97bc3f_add_catalog_column.py
index ec5733e151..440f4a9fd5 100644
--- a/superset/migrations/versions/2024-04-11_15-41_5f57af97bc3f_add_catalog_column.py
+++ b/superset/migrations/versions/2024-04-11_15-41_5f57af97bc3f_add_catalog_column.py
@@ -22,8 +22,9 @@ Create Date: 2024-04-11 15:41:34.663989
"""
-import sqlalchemy as sa
from alembic import op
+import sqlalchemy as sa
+
# revision identifiers, used by Alembic.
revision = "5f57af97bc3f"
diff --git a/superset/migrations/versions/2024-04-17_14-04_d60591c5515f_mig_new_excel_upload_perm.py b/superset/migrations/versions/2024-04-17_14-04_d60591c5515f_mig_new_excel_upload_perm.py
index 56e6373094..6f0e1f7576 100644
--- a/superset/migrations/versions/2024-04-17_14-04_d60591c5515f_mig_new_excel_upload_perm.py
+++ b/superset/migrations/versions/2024-04-17_14-04_d60591c5515f_mig_new_excel_upload_perm.py
@@ -38,6 +38,7 @@ from superset.migrations.shared.security_converge import ( # noqa: E402
Pvm,
)
+
NEW_PVMS = {"Database": ("can_excel_upload",)}
PVM_MAP = {
diff --git a/superset/models/core.py b/superset/models/core.py
index 9a4a1de403..7c040ac7b7 100755
--- a/superset/models/core.py
+++ b/superset/models/core.py
@@ -21,23 +21,22 @@
from __future__ import annotations
-import builtins
-import json
-import logging
-import textwrap
from ast import literal_eval
+import builtins
from contextlib import closing, contextmanager, nullcontext, suppress
from copy import deepcopy
from datetime import datetime
from functools import lru_cache
+import json
+import logging
+import textwrap
from typing import Any, Callable, TYPE_CHECKING
+from flask import g, request
+from flask_appbuilder import Model
import numpy
import pandas as pd
import sqlalchemy as sqla
-import sshtunnel
-from flask import g, request
-from flask_appbuilder import Model
from sqlalchemy import (
Boolean,
Column,
@@ -59,6 +58,7 @@ from sqlalchemy.orm import relationship
from sqlalchemy.pool import NullPool
from sqlalchemy.schema import UniqueConstraint
from sqlalchemy.sql import ColumnElement, expression, Select
+import sshtunnel
from superset import app, db_engine_specs
from superset.commands.database.exceptions import DatabaseInvalidError
@@ -81,6 +81,7 @@ from superset.utils.backports import StrEnum
from superset.utils.core import get_username
from superset.utils.oauth2 import get_oauth2_access_token
+
config = app.config
custom_password_store = config["SQLALCHEMY_CUSTOM_PASSWORD_STORE"]
stats_logger = config["STATS_LOGGER"]
diff --git a/superset/models/dashboard.py b/superset/models/dashboard.py
index 991d2d41a4..0c1dd080ce 100644
--- a/superset/models/dashboard.py
+++ b/superset/models/dashboard.py
@@ -16,17 +16,17 @@
# under the License.
from __future__ import annotations
+from collections import defaultdict
import json
import logging
-import uuid
-from collections import defaultdict
from typing import Any, Callable
+import uuid
-import sqlalchemy as sqla
from flask_appbuilder import Model
from flask_appbuilder.models.decorators import renders
from flask_appbuilder.security.sqla.models import User
from markupsafe import escape, Markup
+import sqlalchemy as sqla
from sqlalchemy import (
Boolean,
Column,
@@ -53,6 +53,7 @@ from superset.tasks.utils import get_current_user
from superset.thumbnails.digest import get_dashboard_digest
from superset.utils import core as utils
+
metadata = Model.metadata # pylint: disable=no-member
config = app.config
logger = logging.getLogger(__name__)
diff --git a/superset/models/helpers.py b/superset/models/helpers.py
index 4165f874a0..463fefaa73 100644
--- a/superset/models/helpers.py
+++ b/superset/models/helpers.py
@@ -18,33 +18,31 @@
"""a collection of model-related helper classes and functions"""
import builtins
-import dataclasses
-import json
-import logging
-import re
-import uuid
from collections import defaultdict
from collections.abc import Hashable
+import dataclasses
from datetime import datetime, timedelta
+import json
from json.decoder import JSONDecodeError
+import logging
+import re
from typing import Any, cast, NamedTuple, Optional, TYPE_CHECKING, Union
+import uuid
import dateutil.parser
-import humanize
-import numpy as np
-import pandas as pd
-import pytz
-import sqlalchemy as sa
-import sqlparse
-import yaml
from flask import g
from flask_appbuilder import Model
from flask_appbuilder.models.decorators import renders
from flask_appbuilder.models.mixins import AuditMixin
from flask_appbuilder.security.sqla.models import User
from flask_babel import lazy_gettext as _
+import humanize
from jinja2.exceptions import TemplateError
from markupsafe import escape, Markup
+import numpy as np
+import pandas as pd
+import pytz
+import sqlalchemy as sa
from sqlalchemy import and_, Column, or_, UniqueConstraint
from sqlalchemy.exc import MultipleResultsFound
from sqlalchemy.ext.declarative import declared_attr
@@ -53,6 +51,8 @@ from sqlalchemy.sql.elements import ColumnElement, literal_column, TextClause
from sqlalchemy.sql.expression import Label, Select, TextAsFrom
from sqlalchemy.sql.selectable import Alias, TableClause
from sqlalchemy_utils import UUIDType
+import sqlparse
+import yaml
from superset import app, db, is_feature_enabled, security_manager
from superset.advanced_data_type.types import AdvancedDataTypeResponse
@@ -99,6 +99,7 @@ from superset.utils.core import (
)
from superset.utils.dates import datetime_to_epoch
+
if TYPE_CHECKING:
from superset.connectors.sqla.models import SqlMetric, TableColumn
from superset.db_engine_specs import BaseEngineSpec
diff --git a/superset/models/slice.py b/superset/models/slice.py
index 197b09a9e8..35f8aff12d 100644
--- a/superset/models/slice.py
+++ b/superset/models/slice.py
@@ -21,10 +21,10 @@ import logging
from typing import Any, TYPE_CHECKING
from urllib import parse
-import sqlalchemy as sqla
from flask_appbuilder import Model
from flask_appbuilder.models.decorators import renders
from markupsafe import escape, Markup
+import sqlalchemy as sqla
from sqlalchemy import (
Boolean,
Column,
@@ -48,6 +48,7 @@ from superset.thumbnails.digest import get_chart_digest
from superset.utils import core as utils
from superset.viz import BaseViz, viz_types
+
if TYPE_CHECKING:
from superset.common.query_context import QueryContext
from superset.common.query_context_factory import QueryContextFactory
diff --git a/superset/models/sql_lab.py b/superset/models/sql_lab.py
index 40a5132c55..1faf85127e 100644
--- a/superset/models/sql_lab.py
+++ b/superset/models/sql_lab.py
@@ -17,15 +17,13 @@
"""A collection of ORM sqlalchemy models for SQL Lab"""
import builtins
+from collections.abc import Hashable
+from datetime import datetime
import inspect
import logging
import re
-from collections.abc import Hashable
-from datetime import datetime
from typing import Any, Optional, TYPE_CHECKING
-import simplejson as json
-import sqlalchemy as sqla
from flask import current_app
from flask_appbuilder import Model
from flask_appbuilder.models.decorators import renders
@@ -33,6 +31,8 @@ from flask_babel import gettext as __
from humanize import naturaltime
from jinja2.exceptions import TemplateError
from markupsafe import Markup
+import simplejson as json
+import sqlalchemy as sqla
from sqlalchemy import (
Boolean,
Column,
@@ -61,6 +61,7 @@ from superset.sql_parse import CtasMethod, extract_tables_from_jinja_sql, Table
from superset.sqllab.limiting_factor import LimitingFactor
from superset.utils.core import get_column_name, MediumText, QueryStatus, user_label
+
if TYPE_CHECKING:
from superset.connectors.sqla.models import TableColumn
from superset.db_engine_specs import BaseEngineSpec
diff --git a/superset/models/sql_types/presto_sql_types.py b/superset/models/sql_types/presto_sql_types.py
index bf77055347..b5a7b28dcc 100644
--- a/superset/models/sql_types/presto_sql_types.py
+++ b/superset/models/sql_types/presto_sql_types.py
@@ -24,6 +24,7 @@ from sqlalchemy.sql.type_api import TypeEngine
from sqlalchemy.sql.visitors import Visitable
from sqlalchemy.types import TypeDecorator
+
# _compiler_dispatch is defined to help with type compilation
diff --git a/superset/queries/api.py b/superset/queries/api.py
index 0695946fe0..69fc9af62c 100644
--- a/superset/queries/api.py
+++ b/superset/queries/api.py
@@ -43,6 +43,7 @@ from superset.views.base_api import (
)
from superset.views.filters import BaseFilterRelatedUsers, FilterRelatedOwners
+
logger = logging.getLogger(__name__)
diff --git a/superset/queries/saved_queries/api.py b/superset/queries/saved_queries/api.py
index be9a3f00b3..5152571fb3 100644
--- a/superset/queries/saved_queries/api.py
+++ b/superset/queries/saved_queries/api.py
@@ -14,10 +14,10 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
-import json
-import logging
from datetime import datetime
from io import BytesIO
+import json
+import logging
from typing import Any
from zipfile import is_zipfile, ZipFile
@@ -60,6 +60,7 @@ from superset.views.base_api import (
statsd_metrics,
)
+
logger = logging.getLogger(__name__)
diff --git a/superset/queries/saved_queries/schemas.py b/superset/queries/saved_queries/schemas.py
index 7c314e6391..3345059276 100644
--- a/superset/queries/saved_queries/schemas.py
+++ b/superset/queries/saved_queries/schemas.py
@@ -17,6 +17,7 @@
from marshmallow import fields, Schema
from marshmallow.validate import Length
+
openapi_spec_methods_override = {
"get": {"get": {"summary": "Get a saved query"}},
"get_list": {
diff --git a/superset/queries/schemas.py b/superset/queries/schemas.py
index 9e0c9f8343..208e1e2485 100644
--- a/superset/queries/schemas.py
+++ b/superset/queries/schemas.py
@@ -21,6 +21,7 @@ from superset.dashboards.schemas import UserSchema
from superset.models.sql_lab import Query
from superset.sql_parse import Table
+
openapi_spec_methods_override = {
"get": {"get": {"summary": "Get query detail information"}},
"get_list": {
diff --git a/superset/reports/api.py b/superset/reports/api.py
index 8238213fef..ed6e88b5ea 100644
--- a/superset/reports/api.py
+++ b/superset/reports/api.py
@@ -57,6 +57,7 @@ from superset.views.base_api import (
)
from superset.views.filters import BaseFilterRelatedUsers, FilterRelatedOwners
+
logger = logging.getLogger(__name__)
diff --git a/superset/reports/logs/api.py b/superset/reports/logs/api.py
index db307039bf..91b21b8cbf 100644
--- a/superset/reports/logs/api.py
+++ b/superset/reports/logs/api.py
@@ -29,6 +29,7 @@ from superset.reports.logs.schemas import openapi_spec_methods_override
from superset.reports.models import ReportExecutionLog
from superset.views.base_api import BaseSupersetModelRestApi
+
logger = logging.getLogger(__name__)
diff --git a/superset/reports/models.py b/superset/reports/models.py
index 63f904876f..ba96a1265a 100644
--- a/superset/reports/models.py
+++ b/superset/reports/models.py
@@ -44,6 +44,7 @@ from superset.reports.types import ReportScheduleExtra
from superset.utils.backports import StrEnum
from superset.utils.core import MediumText
+
metadata = Model.metadata # pylint: disable=no-member
diff --git a/superset/reports/notifications/email.py b/superset/reports/notifications/email.py
index b8da60b909..69668f4547 100644
--- a/superset/reports/notifications/email.py
+++ b/superset/reports/notifications/email.py
@@ -14,15 +14,15 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
+from dataclasses import dataclass
+from email.utils import make_msgid, parseaddr
import json
import logging
import textwrap
-from dataclasses import dataclass
-from email.utils import make_msgid, parseaddr
from typing import Any, Optional
-import nh3
from flask_babel import gettext as __
+import nh3
from superset import app
from superset.exceptions import SupersetErrorsException
@@ -32,6 +32,7 @@ from superset.reports.notifications.exceptions import NotificationError
from superset.utils.core import HeaderDataType, send_email_smtp
from superset.utils.decorators import statsd_gauge
+
logger = logging.getLogger(__name__)
TABLE_TAGS = {"table", "th", "tr", "td", "thead", "tbody", "tfoot"}
diff --git a/superset/reports/notifications/slack.py b/superset/reports/notifications/slack.py
index a7072ca20c..ca2e2a22c8 100644
--- a/superset/reports/notifications/slack.py
+++ b/superset/reports/notifications/slack.py
@@ -14,16 +14,16 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
-import json
-import logging
from collections.abc import Sequence
from io import IOBase
+import json
+import logging
from typing import Union
import backoff
-import pandas as pd
from flask import g
from flask_babel import gettext as __
+import pandas as pd
from slack_sdk.errors import (
BotUserAccessError,
SlackApiError,
@@ -47,6 +47,7 @@ from superset.utils.core import get_email_address_list
from superset.utils.decorators import statsd_gauge
from superset.utils.slack import get_slack_client
+
logger = logging.getLogger(__name__)
# Slack only allows Markdown messages up to 4k chars
diff --git a/superset/reports/schemas.py b/superset/reports/schemas.py
index 64b56ec35a..4d3f376824 100644
--- a/superset/reports/schemas.py
+++ b/superset/reports/schemas.py
@@ -31,6 +31,7 @@ from superset.reports.models import (
ReportScheduleValidatorType,
)
+
openapi_spec_methods_override = {
"get": {"get": {"summary": "Get a report schedule"}},
"get_list": {
diff --git a/superset/result_set.py b/superset/result_set.py
index 061656720e..b962cc0cf7 100644
--- a/superset/result_set.py
+++ b/superset/result_set.py
@@ -22,15 +22,16 @@ import logging
from typing import Any, Optional
import numpy as np
+from numpy.typing import NDArray
import pandas as pd
import pyarrow as pa
-from numpy.typing import NDArray
from superset.db_engine_specs import BaseEngineSpec
from superset.superset_typing import DbapiDescription, DbapiResult, ResultSetColumnType
from superset.utils import core as utils
from superset.utils.core import GenericDataType
+
logger = logging.getLogger(__name__)
diff --git a/superset/row_level_security/api.py b/superset/row_level_security/api.py
index 86956683cb..55f3adc0b4 100644
--- a/superset/row_level_security/api.py
+++ b/superset/row_level_security/api.py
@@ -52,6 +52,7 @@ from superset.views.base_api import (
)
from superset.views.filters import BaseFilterRelatedRoles
+
logger = logging.getLogger(__name__)
diff --git a/superset/row_level_security/schemas.py b/superset/row_level_security/schemas.py
index f02767ec13..a1d517f183 100644
--- a/superset/row_level_security/schemas.py
+++ b/superset/row_level_security/schemas.py
@@ -23,6 +23,7 @@ from superset.connectors.sqla.models import RowLevelSecurityFilter
from superset.dashboards.schemas import UserSchema
from superset.utils.core import RowLevelSecurityFilterType
+
id_description = "Unique if of rls filter"
name_description = "Name of rls filter"
description_description = "Detailed description"
diff --git a/superset/schemas.py b/superset/schemas.py
index 52fb95f4f9..15576ea16e 100644
--- a/superset/schemas.py
+++ b/superset/schemas.py
@@ -17,6 +17,7 @@
from superset.errors import SupersetErrorType
+
error_payload_content = {
"application/json": {
"schema": {
diff --git a/superset/security/analytics_db_safety.py b/superset/security/analytics_db_safety.py
index 73db564c60..2135335326 100644
--- a/superset/security/analytics_db_safety.py
+++ b/superset/security/analytics_db_safety.py
@@ -24,6 +24,7 @@ from superset import feature_flag_manager
from superset.errors import ErrorLevel, SupersetError, SupersetErrorType
from superset.exceptions import SupersetSecurityException
+
# list of unsafe SQLAlchemy dialects
BLOCKLIST = {
# sqlite creates a local DB, which allows mapping server's filesystem
diff --git a/superset/security/api.py b/superset/security/api.py
index 61fd68e6f0..c4e8ad1df0 100644
--- a/superset/security/api.py
+++ b/superset/security/api.py
@@ -31,6 +31,7 @@ from superset.extensions import event_logger
from superset.security.guest_token import GuestTokenResourceType
from superset.views.base_api import BaseSupersetApi, statsd_metrics
+
logger = logging.getLogger(__name__)
diff --git a/superset/security/manager.py b/superset/security/manager.py
index a84c0cec0d..6f46ec3f70 100644
--- a/superset/security/manager.py
+++ b/superset/security/manager.py
@@ -17,11 +17,11 @@
# pylint: disable=too-many-lines
"""A set of constants and methods to manage permissions and security"""
+from collections import defaultdict
import json
import logging
import re
import time
-from collections import defaultdict
from typing import Any, Callable, cast, NamedTuple, Optional, TYPE_CHECKING, Union
from flask import current_app, Flask, g, Request
@@ -78,6 +78,7 @@ from superset.utils.core import (
from superset.utils.filters import get_dataset_access_filters
from superset.utils.urls import get_url_host
+
if TYPE_CHECKING:
from superset.common.query_context import QueryContext
from superset.connectors.sqla.models import (
diff --git a/superset/sql_lab.py b/superset/sql_lab.py
index 3f8c1cc737..a3f332d597 100644
--- a/superset/sql_lab.py
+++ b/superset/sql_lab.py
@@ -14,19 +14,19 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
-import dataclasses
-import logging
-import uuid
from contextlib import closing
+import dataclasses
from datetime import datetime
+import logging
from sys import getsizeof
from typing import Any, cast, Optional, Union
+import uuid
import backoff
-import msgpack
-import simplejson as json
from celery.exceptions import SoftTimeLimitExceeded
from flask_babel import gettext as __
+import msgpack
+import simplejson as json
from superset import (
app,
@@ -68,6 +68,7 @@ from superset.utils.core import (
from superset.utils.dates import now_as_float
from superset.utils.decorators import stats_timing
+
config = app.config
stats_logger = config["STATS_LOGGER"]
SQLLAB_TIMEOUT = config["SQLLAB_ASYNC_TIME_LIMIT_SEC"]
diff --git a/superset/sql_parse.py b/superset/sql_parse.py
index e31d8b6402..8ee921decc 100644
--- a/superset/sql_parse.py
+++ b/superset/sql_parse.py
@@ -19,23 +19,23 @@
from __future__ import annotations
+from collections.abc import Iterable, Iterator
+from dataclasses import dataclass
import enum
import logging
import re
-import urllib.parse
-from collections.abc import Iterable, Iterator
-from dataclasses import dataclass
from typing import Any, cast, Generic, TYPE_CHECKING, TypeVar
+import urllib.parse
-import sqlglot
-import sqlparse
from flask_babel import gettext as __
from jinja2 import nodes
from sqlalchemy import and_
+import sqlglot
from sqlglot import exp, parse, parse_one
from sqlglot.dialects.dialect import Dialect, Dialects
from sqlglot.errors import ParseError, SqlglotError
from sqlglot.optimizer.scope import Scope, ScopeType, traverse_scope
+import sqlparse
from sqlparse import keywords
from sqlparse.lexer import Lexer
from sqlparse.sql import (
@@ -69,6 +69,7 @@ from superset.exceptions import (
)
from superset.utils.backports import StrEnum
+
try:
from sqloxide import parse_sql as sqloxide_parse
except (ImportError, ModuleNotFoundError):
diff --git a/superset/sql_validators/presto_db.py b/superset/sql_validators/presto_db.py
index 06bee217cf..03355d2828 100644
--- a/superset/sql_validators/presto_db.py
+++ b/superset/sql_validators/presto_db.py
@@ -17,9 +17,9 @@
from __future__ import annotations
+from contextlib import closing
import logging
import time
-from contextlib import closing
from typing import Any
from superset import app
@@ -28,6 +28,7 @@ from superset.sql_parse import ParsedQuery
from superset.sql_validators.base import BaseSQLValidator, SQLValidationAnnotation
from superset.utils.core import QuerySource
+
MAX_ERROR_ROWS = 10
config = app.config
diff --git a/superset/sqllab/api.py b/superset/sqllab/api.py
index 24c04dfe5e..23cfbf528b 100644
--- a/superset/sqllab/api.py
+++ b/superset/sqllab/api.py
@@ -18,12 +18,12 @@ import logging
from typing import Any, cast, Optional
from urllib import parse
-import simplejson as json
from flask import request, Response
from flask_appbuilder import permission_name
from flask_appbuilder.api import expose, protect, rison, safe
from flask_appbuilder.models.sqla.interface import SQLAInterface
from marshmallow import ValidationError
+import simplejson as json
from superset import app, is_feature_enabled
from superset.commands.sql_lab.estimate import QueryEstimationCommand
@@ -66,6 +66,7 @@ from superset.utils import core as utils
from superset.views.base import CsvResponse, generate_download_headers, json_success
from superset.views.base_api import BaseSupersetApi, requires_json, statsd_metrics
+
config = app.config
logger = logging.getLogger(__name__)
diff --git a/superset/sqllab/exceptions.py b/superset/sqllab/exceptions.py
index f06cc8dd2e..0b32e98e8d 100644
--- a/superset/sqllab/exceptions.py
+++ b/superset/sqllab/exceptions.py
@@ -24,6 +24,7 @@ from flask_babel import lazy_gettext as _
from superset.errors import SupersetError, SupersetErrorType
from superset.exceptions import SupersetException
+
if TYPE_CHECKING:
from superset.sqllab.sqllab_execution_context import SqlJsonExecutionContext
diff --git a/superset/sqllab/execution_context_convertor.py b/superset/sqllab/execution_context_convertor.py
index 587e027555..4a1392ca28 100644
--- a/superset/sqllab/execution_context_convertor.py
+++ b/superset/sqllab/execution_context_convertor.py
@@ -21,9 +21,10 @@ from typing import Any, TYPE_CHECKING
import simplejson as json
-import superset.utils.core as utils
from superset.sqllab.command_status import SqlJsonExecutionStatus
from superset.sqllab.utils import apply_display_max_row_configuration_if_require
+import superset.utils.core as utils
+
logger = logging.getLogger(__name__)
diff --git a/superset/sqllab/query_render.py b/superset/sqllab/query_render.py
index caf9a3cb2b..74b0ddb106 100644
--- a/superset/sqllab/query_render.py
+++ b/superset/sqllab/query_render.py
@@ -30,6 +30,7 @@ from superset.sql_parse import ParsedQuery
from superset.sqllab.exceptions import SqlLabException
from superset.utils import core as utils
+
MSG_OF_1006 = "Issue 1006 - One or more parameters specified in the query are missing."
if TYPE_CHECKING:
diff --git a/superset/sqllab/schemas.py b/superset/sqllab/schemas.py
index 0864420c90..455b3b61b1 100644
--- a/superset/sqllab/schemas.py
+++ b/superset/sqllab/schemas.py
@@ -18,6 +18,7 @@ from marshmallow import fields, Schema
from superset.databases.schemas import ImportV1DatabaseSchema
+
sql_lab_get_results_schema = {
"type": "object",
"properties": {
diff --git a/superset/sqllab/sql_json_executer.py b/superset/sqllab/sql_json_executer.py
index 246154f47b..81958909e0 100644
--- a/superset/sqllab/sql_json_executer.py
+++ b/superset/sqllab/sql_json_executer.py
@@ -17,9 +17,9 @@
# pylint: disable=too-few-public-methods, invalid-name
from __future__ import annotations
+from abc import ABC
import dataclasses
import logging
-from abc import ABC
from typing import Any, Callable, TYPE_CHECKING
from flask_babel import gettext as __
@@ -36,6 +36,7 @@ from superset.utils import core as utils
from superset.utils.core import get_username
from superset.utils.dates import now_as_float
+
if TYPE_CHECKING:
from superset.daos.query import QueryDAO
from superset.sqllab.sqllab_execution_context import SqlJsonExecutionContext
diff --git a/superset/sqllab/sqllab_execution_context.py b/superset/sqllab/sqllab_execution_context.py
index 7a732cf642..59e89f7202 100644
--- a/superset/sqllab/sqllab_execution_context.py
+++ b/superset/sqllab/sqllab_execution_context.py
@@ -17,9 +17,9 @@
from __future__ import annotations
import contextlib
+from dataclasses import dataclass
import json
import logging
-from dataclasses import dataclass
from typing import Any, cast, TYPE_CHECKING
from flask import g
@@ -33,6 +33,7 @@ from superset.utils.core import apply_max_row_limit, get_user_id
from superset.utils.dates import now_as_float
from superset.views.utils import get_cta_schema_name
+
if TYPE_CHECKING:
from superset.connectors.sqla.models import Database
diff --git a/superset/sqllab/utils.py b/superset/sqllab/utils.py
index bbf3919640..d81b9baf34 100644
--- a/superset/sqllab/utils.py
+++ b/superset/sqllab/utils.py
@@ -25,6 +25,7 @@ from superset.common.db_query_status import QueryStatus
from superset.daos.database import DatabaseDAO
from superset.models.sql_lab import TabState
+
DATABASE_KEYS = [
"allow_file_upload",
"allow_ctas",
diff --git a/superset/sqllab/validators.py b/superset/sqllab/validators.py
index b79789da4c..20178d0f41 100644
--- a/superset/sqllab/validators.py
+++ b/superset/sqllab/validators.py
@@ -22,6 +22,7 @@ from typing import TYPE_CHECKING
from superset import security_manager
from superset.commands.sql_lab.execute import CanAccessQueryValidator
+
if TYPE_CHECKING:
from superset.models.sql_lab import Query
diff --git a/superset/stats_logger.py b/superset/stats_logger.py
index fc223f7529..cd0eeb5932 100644
--- a/superset/stats_logger.py
+++ b/superset/stats_logger.py
@@ -19,6 +19,7 @@ from typing import Optional
from colorama import Fore, Style
+
logger = logging.getLogger(__name__)
diff --git a/superset/superset_typing.py b/superset/superset_typing.py
index ba623f5819..291819e74d 100644
--- a/superset/superset_typing.py
+++ b/superset/superset_typing.py
@@ -21,6 +21,7 @@ from typing import Any, Literal, Optional, TYPE_CHECKING, TypedDict, Union
from typing_extensions import NotRequired
from werkzeug.wrappers import Response
+
if TYPE_CHECKING:
from superset.utils.core import GenericDataType
diff --git a/superset/tables/models.py b/superset/tables/models.py
index 2616aaf90f..e57da3b7b6 100644
--- a/superset/tables/models.py
+++ b/superset/tables/models.py
@@ -27,8 +27,8 @@ These models are not fully implemented, and shouldn't be used yet.
from collections.abc import Iterable
from typing import Any, Optional, TYPE_CHECKING
-import sqlalchemy as sa
from flask_appbuilder import Model
+import sqlalchemy as sa
from sqlalchemy import inspect
from sqlalchemy.orm import backref, relationship, Session
from sqlalchemy.schema import UniqueConstraint
@@ -45,6 +45,7 @@ from superset.models.helpers import (
from superset.sql_parse import Table as TableName
from superset.superset_typing import ResultSetColumnType
+
if TYPE_CHECKING:
from superset.datasets.models import Dataset
diff --git a/superset/tags/api.py b/superset/tags/api.py
index ad25ffe7c9..8ea8b04c40 100644
--- a/superset/tags/api.py
+++ b/superset/tags/api.py
@@ -58,6 +58,7 @@ from superset.views.base_api import (
)
from superset.views.filters import BaseFilterRelatedUsers, FilterRelatedOwners
+
logger = logging.getLogger(__name__)
diff --git a/superset/tags/models.py b/superset/tags/models.py
index ba859f519b..0b5376b897 100644
--- a/superset/tags/models.py
+++ b/superset/tags/models.py
@@ -40,6 +40,7 @@ from sqlalchemy.schema import UniqueConstraint
from superset import security_manager
from superset.models.helpers import AuditMixinNullable
+
if TYPE_CHECKING:
from superset.connectors.sqla.models import SqlaTable
from superset.models.core import FavStar
diff --git a/superset/tags/schemas.py b/superset/tags/schemas.py
index 38676b4294..9895744878 100644
--- a/superset/tags/schemas.py
+++ b/superset/tags/schemas.py
@@ -19,6 +19,7 @@ from marshmallow.validate import Length, Range
from superset.dashboards.schemas import UserSchema
+
delete_tags_schema = {"type": "array", "items": {"type": "string"}}
object_type_description = "A title for the tag."
diff --git a/superset/tasks/async_queries.py b/superset/tasks/async_queries.py
index b804847cd8..d448c7ca2d 100644
--- a/superset/tasks/async_queries.py
+++ b/superset/tasks/async_queries.py
@@ -37,6 +37,7 @@ from superset.utils.cache import generate_cache_key, set_and_log_cache
from superset.utils.core import override_user
from superset.views.utils import get_datasource_info, get_viz
+
if TYPE_CHECKING:
from superset.common.query_context import QueryContext
diff --git a/superset/tasks/cache.py b/superset/tasks/cache.py
index d2757aa22c..fcbfa89fab 100644
--- a/superset/tasks/cache.py
+++ b/superset/tasks/cache.py
@@ -34,6 +34,7 @@ from superset.utils.date_parser import parse_human_datetime
from superset.utils.machine_auth import MachineAuthProvider
from superset.utils.urls import get_url_path
+
logger = get_task_logger(__name__)
logger.setLevel(logging.INFO)
diff --git a/superset/tasks/celery_app.py b/superset/tasks/celery_app.py
index 4d36917be0..cc33edf0a3 100644
--- a/superset/tasks/celery_app.py
+++ b/superset/tasks/celery_app.py
@@ -28,6 +28,7 @@ from celery.signals import task_postrun, worker_process_init
from superset import create_app
from superset.extensions import celery_app, db
+
# Init the Flask app / configure everything
flask_app = create_app()
diff --git a/superset/tasks/cron_util.py b/superset/tasks/cron_util.py
index 329937fb82..4eb01e2eb0 100644
--- a/superset/tasks/cron_util.py
+++ b/superset/tasks/cron_util.py
@@ -15,15 +15,16 @@
# specific language governing permissions and limitations
# under the License.
-import logging
from collections.abc import Iterator
from datetime import datetime, timedelta
+import logging
from croniter import croniter
from pytz import timezone as pytz_timezone, UnknownTimeZoneError
from superset import app
+
logger = logging.getLogger(__name__)
diff --git a/superset/tasks/scheduler.py b/superset/tasks/scheduler.py
index cb55dc9f69..ff04736a2e 100644
--- a/superset/tasks/scheduler.py
+++ b/superset/tasks/scheduler.py
@@ -14,8 +14,8 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
-import logging
from datetime import datetime
+import logging
from celery import Celery
from celery.exceptions import SoftTimeLimitExceeded
@@ -32,6 +32,7 @@ from superset.tasks.cron_util import cron_schedule_window
from superset.utils.core import LoggerLevel
from superset.utils.log import get_logger_from_status
+
logger = logging.getLogger(__name__)
diff --git a/superset/tasks/slack_util.py b/superset/tasks/slack_util.py
index 72a11b1e92..87ceae9d08 100644
--- a/superset/tasks/slack_util.py
+++ b/superset/tasks/slack_util.py
@@ -18,8 +18,8 @@
DEPRECATION NOTICE: this module is deprecated and will be removed on 2.0.
"""
-import logging
from io import IOBase
+import logging
from typing import cast, Optional, Union
import backoff
@@ -28,6 +28,7 @@ from slack_sdk import WebClient
from slack_sdk.errors import SlackApiError
from slack_sdk.web.slack_response import SlackResponse
+
# Globals
logger = logging.getLogger("tasks.slack_util")
diff --git a/superset/tasks/thumbnails.py b/superset/tasks/thumbnails.py
index 03b3999dce..0b2fd0b70e 100644
--- a/superset/tasks/thumbnails.py
+++ b/superset/tasks/thumbnails.py
@@ -30,6 +30,7 @@ from superset.utils.screenshots import ChartScreenshot, DashboardScreenshot
from superset.utils.urls import get_url_path
from superset.utils.webdriver import WindowSize
+
logger = logging.getLogger(__name__)
diff --git a/superset/tasks/utils.py b/superset/tasks/utils.py
index 5012330bbd..f6f6ae0112 100644
--- a/superset/tasks/utils.py
+++ b/superset/tasks/utils.py
@@ -24,6 +24,7 @@ from flask import current_app, g
from superset.tasks.exceptions import ExecutorNotFoundError
from superset.tasks.types import ExecutorType
+
if TYPE_CHECKING:
from superset.models.dashboard import Dashboard
from superset.models.slice import Slice
diff --git a/superset/temporary_cache/api.py b/superset/temporary_cache/api.py
index 1937049cb5..85c0baa4d4 100644
--- a/superset/temporary_cache/api.py
+++ b/superset/temporary_cache/api.py
@@ -14,9 +14,9 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
+from abc import ABC, abstractmethod
import contextlib
import logging
-from abc import ABC, abstractmethod
from typing import Any
from apispec import APISpec
@@ -37,6 +37,7 @@ from superset.temporary_cache.schemas import (
)
from superset.views.base_api import BaseSupersetApi, requires_json
+
logger = logging.getLogger(__name__)
CODEC = JsonKeyValueCodec()
diff --git a/superset/temporary_cache/utils.py b/superset/temporary_cache/utils.py
index 9ba2a8d036..43f29f1d4d 100644
--- a/superset/temporary_cache/utils.py
+++ b/superset/temporary_cache/utils.py
@@ -16,6 +16,7 @@
# under the License.
from typing import Any
+
SEPARATOR = ";"
diff --git a/superset/thumbnails/digest.py b/superset/thumbnails/digest.py
index fb209fcd50..e87250d98a 100644
--- a/superset/thumbnails/digest.py
+++ b/superset/thumbnails/digest.py
@@ -26,6 +26,7 @@ from superset.tasks.types import ExecutorType
from superset.tasks.utils import get_current_user, get_executor
from superset.utils.hashing import md5_sha_from_str
+
if TYPE_CHECKING:
from superset.models.dashboard import Dashboard
from superset.models.slice import Slice
diff --git a/superset/translations/utils.py b/superset/translations/utils.py
index 23eca1dd8c..c07891e83c 100644
--- a/superset/translations/utils.py
+++ b/superset/translations/utils.py
@@ -18,6 +18,7 @@ import json
import os
from typing import Any, Optional
+
# Global caching for JSON language packs
ALL_LANGUAGE_PACKS: dict[str, dict[str, Any]] = {"en": {}}
diff --git a/superset/utils/backports.py b/superset/utils/backports.py
index b48f76d235..10d30ca2b0 100644
--- a/superset/utils/backports.py
+++ b/superset/utils/backports.py
@@ -14,8 +14,9 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
-import sys
from enum import Enum
+import sys
+
if sys.version_info >= (3, 11):
# pylint: disable=unused-import
diff --git a/superset/utils/cache.py b/superset/utils/cache.py
index 48e283e7c1..15a5c5b109 100644
--- a/superset/utils/cache.py
+++ b/superset/utils/cache.py
@@ -16,10 +16,10 @@
# under the License.
from __future__ import annotations
-import inspect
-import logging
from datetime import datetime, timedelta
from functools import wraps
+import inspect
+import logging
from typing import Any, Callable, TYPE_CHECKING
from flask import current_app as app, request
@@ -33,6 +33,7 @@ from superset.models.cache import CacheKey
from superset.utils.core import json_int_dttm_ser
from superset.utils.hashing import md5_sha_from_dict
+
if TYPE_CHECKING:
from superset.stats_logger import BaseStatsLogger
diff --git a/superset/utils/cache_manager.py b/superset/utils/cache_manager.py
index d3b2dbdb00..bdafc4af0e 100644
--- a/superset/utils/cache_manager.py
+++ b/superset/utils/cache_manager.py
@@ -23,6 +23,7 @@ from markupsafe import Markup
from superset.utils.core import DatasourceType
+
logger = logging.getLogger(__name__)
CACHE_IMPORT_PATH = "superset.extensions.metastore_cache.SupersetMetastoreCache"
diff --git a/superset/utils/core.py b/superset/utils/core.py
index f02b004432..0fd7280118 100644
--- a/superset/utils/core.py
+++ b/superset/utils/core.py
@@ -21,8 +21,19 @@ from __future__ import annotations
import _thread
import collections
+from collections.abc import Iterable, Iterator, Sequence
+from contextlib import closing, contextmanager
+from dataclasses import dataclass
+from datetime import date, datetime, time, timedelta
import decimal
+from email.mime.application import MIMEApplication
+from email.mime.image import MIMEImage
+from email.mime.multipart import MIMEMultipart
+from email.mime.text import MIMEText
+from email.utils import formatdate
+from enum import Enum, IntEnum
import errno
+from io import BytesIO
import json
import logging
import os
@@ -34,31 +45,15 @@ import sqlite3
import ssl
import tempfile
import threading
-import traceback
-import uuid
-import zlib
-from collections.abc import Iterable, Iterator, Sequence
-from contextlib import closing, contextmanager
-from dataclasses import dataclass
-from datetime import date, datetime, time, timedelta
-from email.mime.application import MIMEApplication
-from email.mime.image import MIMEImage
-from email.mime.multipart import MIMEMultipart
-from email.mime.text import MIMEText
-from email.utils import formatdate
-from enum import Enum, IntEnum
-from io import BytesIO
from timeit import default_timer
+import traceback
from types import TracebackType
from typing import Any, Callable, cast, NamedTuple, TYPE_CHECKING, TypedDict, TypeVar
from urllib.parse import unquote_plus
+import uuid
from zipfile import ZipFile
+import zlib
-import markdown as md
-import nh3
-import numpy as np
-import pandas as pd
-import sqlalchemy as sa
from cryptography.hazmat.backends import default_backend
from cryptography.x509 import Certificate, load_pem_x509_certificate
from flask import current_app, g, request
@@ -66,9 +61,14 @@ from flask_appbuilder import SQLA
from flask_appbuilder.security.sqla.models import User
from flask_babel import gettext as __
from flask_babel.speaklater import LazyString
+import markdown as md
from markupsafe import Markup
+import nh3
+import numpy as np
+import pandas as pd
from pandas.api.types import infer_dtype
from pandas.core.dtypes.common import is_numeric_dtype
+import sqlalchemy as sa
from sqlalchemy import event, exc, inspect, select, Text
from sqlalchemy.dialects.mysql import MEDIUMTEXT
from sqlalchemy.engine import Connection, Engine
@@ -106,6 +106,7 @@ from superset.utils.date_parser import parse_human_timedelta
from superset.utils.dates import datetime_to_epoch, EPOCH
from superset.utils.hashing import md5_sha_from_dict, md5_sha_from_str
+
if TYPE_CHECKING:
from superset.connectors.sqla.models import BaseDatasource, TableColumn
from superset.models.sql_lab import Query
diff --git a/superset/utils/csv.py b/superset/utils/csv.py
index 74a33187a5..f66d72b9fb 100644
--- a/superset/utils/csv.py
+++ b/superset/utils/csv.py
@@ -16,9 +16,9 @@
# under the License.
import logging
import re
-import urllib.request
from typing import Any, Optional, Union
from urllib.error import URLError
+import urllib.request
import numpy as np
import pandas as pd
@@ -26,6 +26,7 @@ import simplejson
from superset.utils.core import GenericDataType
+
logger = logging.getLogger(__name__)
negative_number_re = re.compile(r"^-[0-9.]+$")
diff --git a/superset/utils/dashboard_filter_scopes_converter.py b/superset/utils/dashboard_filter_scopes_converter.py
index 6a3ead7c14..9d80cf3f6d 100644
--- a/superset/utils/dashboard_filter_scopes_converter.py
+++ b/superset/utils/dashboard_filter_scopes_converter.py
@@ -14,13 +14,14 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
+from collections import defaultdict
import json
import logging
-from collections import defaultdict
from typing import Any
from superset.models.slice import Slice
+
logger = logging.getLogger(__name__)
diff --git a/superset/utils/dashboard_import_export.py b/superset/utils/dashboard_import_export.py
index c21761dadb..84b66daa0c 100644
--- a/superset/utils/dashboard_import_export.py
+++ b/superset/utils/dashboard_import_export.py
@@ -19,6 +19,7 @@ import logging
from superset import db
from superset.models.dashboard import Dashboard
+
logger = logging.getLogger(__name__)
diff --git a/superset/utils/database.py b/superset/utils/database.py
index 073e58ffda..885b8b510f 100644
--- a/superset/utils/database.py
+++ b/superset/utils/database.py
@@ -23,6 +23,7 @@ from flask import current_app
from superset.constants import EXAMPLES_DB_UUID
+
if TYPE_CHECKING:
from superset.connectors.sqla.models import Database
diff --git a/superset/utils/date_parser.py b/superset/utils/date_parser.py
index 9a7c135f5c..54d29e673e 100644
--- a/superset/utils/date_parser.py
+++ b/superset/utils/date_parser.py
@@ -17,18 +17,18 @@
from __future__ import annotations
import calendar
-import logging
-import re
from datetime import datetime, timedelta
from functools import lru_cache
+import logging
+import re
from time import struct_time
-import pandas as pd
-import parsedatetime
from dateutil.parser import parse
from dateutil.relativedelta import relativedelta
from flask_babel import lazy_gettext as _
from holidays import country_holidays
+import pandas as pd
+import parsedatetime
from pyparsing import (
CaselessKeyword,
Forward,
@@ -49,6 +49,7 @@ from superset.commands.chart.exceptions import (
)
from superset.constants import InstantTimeComparison, LRU_CACHE_MAX_SIZE, NO_TIME_RANGE
+
ParserElement.enable_packrat()
logger = logging.getLogger(__name__)
diff --git a/superset/utils/dates.py b/superset/utils/dates.py
index b2b422a1f0..fc7b520022 100644
--- a/superset/utils/dates.py
+++ b/superset/utils/dates.py
@@ -18,6 +18,7 @@ from datetime import datetime
import pytz
+
EPOCH = datetime(1970, 1, 1)
diff --git a/superset/utils/decorators.py b/superset/utils/decorators.py
index 70fb305879..b08b3790e8 100644
--- a/superset/utils/decorators.py
+++ b/superset/utils/decorators.py
@@ -16,10 +16,10 @@
# under the License.
from __future__ import annotations
-import logging
-import time
from collections.abc import Iterator
from contextlib import contextmanager
+import logging
+import time
from typing import Any, Callable, TYPE_CHECKING
from uuid import UUID
@@ -28,6 +28,7 @@ from flask import current_app, g, Response
from superset.utils import core as utils
from superset.utils.dates import now_as_float
+
... 3472 lines suppressed ...