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 ...