You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by ru...@apache.org on 2026/07/01 23:16:40 UTC
(superset) branch feat/i18n-sk-translations updated (7d9bf5d5605 -> de1f43cc27c)
This is an automated email from the ASF dual-hosted git repository.
rusackas pushed a change to branch feat/i18n-sk-translations
in repository https://gitbox.apache.org/repos/asf/superset.git
discard 7d9bf5d5605 feat(i18n): backfill Slovak (sk) translations (AI-generated, needs review)
add 7cc7e9f6e34 fix(async-query): prevent JWT InvalidSubjectError for guest users (#37862)
add 16e1f41ceff chore(deps): bump swagger-ui-react from 5.32.7 to 5.32.8 in /docs (#41614)
add b9e3f0aa1e2 feat(soft-delete): gate soft delete behind a temporary SOFT_DELETE release toggle (#41166)
add 36510200147 fix(sql): cap parser input length via SQL_MAX_PARSE_LENGTH config (#40499)
add 2da2db6c7c0 feat(sql): schema-qualified table denylist + information_schema/lo_* defaults (#41120)
add 6d2b94ceb80 fix(currency): derive default symbol position from locale when unset (#40931)
add 438d4d569f8 test(sqllab): repair broken TablePreview and SavedQueryList jest tests (#41628)
add da4cae16574 chore(deps): bump fastmcp from >=3.2.4 to >=3.4.2 (#41592)
add 7f4cac63c90 fix(mcp): escape LIKE wildcards in find_users to prevent user enumeration (#41593)
add 55b2da75f65 fix(echarts): allow forcing categorical x-axis for temporal columns (#41221)
add 2d2a72b721f fix(sqllab): show non-ASCII text in array/JSON columns instead of \uXXXX escapes (#41533)
add 792d6776349 fix(reports): respect CSV_EXPORT sep and decimal config in email reports (#38616)
add b3c709b3d5e feat(i18n): backfill German (de) translations (AI-generated, needs review) (#41608)
add eeacd9b6ddc feat(i18n): backfill Latvian (lv) translations (AI-generated, needs review) (#41612)
add 692f81d9451 feat(i18n): backfill Finnish (fi) translations (AI-generated, needs review) (#41613)
add 7d7c3ce7239 feat(ci): install `helm-docs` directly instead of using whole `brew` setup (#41629)
add b7d5de8e524 fix(sqllab): truncate long tab names in the overflow ("...") dropdown (#41585)
add bed1034c2f7 refactor(frontend): centralize subdirectory URL prefixing behind nav helpers (#39925)
add 6c579196474 chore(codeowners): update maintainer assignments (#41634)
add e0a3b1c10cf fix(mcp): document select_columns valid fields and URL scheme for preview tools (#41595)
add 393adc45356 refactor(db): composite PK on M2M association tables (#39859)
add e58ce1cf39d fix(dashboard): pre-filter time grain for display controls (#40000)
add de1f43cc27c feat(i18n): backfill Slovak (sk) translations (AI-generated, needs review)
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 (7d9bf5d5605)
\
N -- N -- N refs/heads/feat/i18n-sk-translations (de1f43cc27c)
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.
No new revisions were added by this update.
Summary of changes:
.github/CODEOWNERS | 14 +-
.github/workflows/pre-commit.yml | 17 +-
UPDATING.md | 68 +
docs/package.json | 2 +-
docs/static/feature-flags.json | 6 +
docs/yarn.lock | 8 +-
pyproject.toml | 2 +-
requirements/development.txt | 66 +-
.../cypress-base/cypress/utils/urls.ts | 9 +-
superset-frontend/package-lock.json | 72 +-
.../src/shared-controls/customControls.tsx | 7 +-
.../test/shared-controls/customControls.test.tsx | 36 +-
.../src/chart/clients/ChartClient.ts | 4 +-
.../src/chart/components/StatefulChart.tsx | 4 +-
.../src/connection/SupersetClientClass.ts | 26 +-
.../src/connection/callApi/parseResponse.ts | 33 +-
.../superset-ui-core/src/connection/index.ts | 3 +
.../src/connection/normalizeBackendUrls.ts | 59 +
.../src/currency-format/CurrencyFormatter.ts | 38 +-
.../src/currency-format/currencyLocale.ts | 52 +
.../superset-ui-core/src/currency-format/index.ts | 6 +
.../src/currency-format/symbolPosition.ts | 93 +
.../src/query/api/legacy/getDatasourceMetadata.ts | 2 +-
.../superset-ui-core/src/query/types/Dashboard.ts | 1 +
.../superset-ui-core/src/utils/mapStyles.test.ts | 16 +
.../superset-ui-core/src/utils/mapStyles.ts | 3 +
.../test/chart/clients/ChartClient.test.ts | 26 +-
.../SupersetClientAppRootContract.test.ts | 113 +
.../test/connection/normalizeBackendUrls.test.ts | 89 +
.../test/currency-format/CurrencyFormatter.test.ts | 52 +-
.../test/currency-format/currencyLocale.test.ts | 65 +
.../test/currency-format/symbolPosition.test.ts | 74 +
.../query/api/legacy/getDatasourceMetadata.test.ts | 4 +-
.../playwright/pages/DashboardPage.ts | 4 +-
superset-frontend/playwright/utils/urls.ts | 2 +-
.../test/Timeseries/transformProps.test.ts | 41 +
.../spec/helpers/sourceTreeScanner.ts | 183 +
.../spec/helpers/withApplicationRoot.ts | 53 +
.../src/SqlLab/SqlLabGlobalStyles.tsx | 30 +
.../src/SqlLab/components/QueryTable/index.tsx | 5 +-
.../SqlLab/components/ResultSet/ResultSet.test.tsx | 123 +
.../src/SqlLab/components/ResultSet/index.tsx | 15 +-
.../SqlLab/components/SaveDatasetModal/index.tsx | 12 +-
.../SqlEditorTabHeader/SqlEditorTabHeader.test.tsx | 587 ++-
.../SqlLab/components/SqlEditorTabHeader/index.tsx | 2 +-
.../SqlLab/components/TabbedSqlEditors/index.tsx | 2 +
.../components/TablePreview/TablePreview.test.tsx | 6 +-
...zationTimeGrainsTransformer.integration.test.ts | 153 +
.../components/TimeGrain/TimeGrainFilterPlugin.tsx | 25 +-
.../TimeGrainPreFilter.integration.test.tsx | 181 +
.../components/TimeGrain/types.ts | 1 +
.../DatasourceEditor/DatasourceEditor.tsx | 6 +-
.../DashboardLinksExternal.test.tsx | 10 +-
.../components/DashboardLinksExternal/index.tsx | 2 +-
.../tests/DatasourceEditor.test.tsx | 55 +
.../src/components/FacePile/index.tsx | 2 +-
.../src/components/ListView/CrossLinks.test.tsx | 7 +-
.../src/components/ListView/CrossLinks.tsx | 2 +-
.../StreamingExportModal/useStreamingExport.ts | 6 +-
superset-frontend/src/components/Tag/index.tsx | 2 +-
.../src/core/navigation/index.test.ts | 12 +-
superset-frontend/src/core/navigation/index.ts | 6 +-
.../src/dashboard/actions/dashboardState.test.ts | 70 +-
.../src/dashboard/actions/dashboardState.ts | 6 +-
.../src/dashboard/actions/datasources.ts | 2 +-
.../DashboardBuilder/DashboardBuilder.test.tsx | 2 +-
.../DashboardBuilder/DashboardContainer.test.tsx | 2 +-
.../SliceHeaderControls.subdirectory.test.tsx | 172 +
.../components/SliceHeaderControls/index.tsx | 3 +-
.../URLShortLinkButton/URLShortLinkButton.test.tsx | 9 +-
.../gridComponents/Tab/Tab.subdirectory.test.tsx | 146 +
.../components/gridComponents/Tab/Tab.test.tsx | 31 +
.../components/gridComponents/Tab/Tab.tsx | 5 +-
.../FilterBar/FilterBar.subdirectory.test.ts | 207 +
.../FilterControls/FilterValue.timeGrain.test.ts | 60 -
.../FilterBar/FilterControls/FilterValue.tsx | 55 +-
.../components/nativeFilters/FilterBar/index.tsx | 6 +-
.../FiltersConfigForm/FiltersConfigForm.tsx | 16 +-
.../transformers/customizationTransformer.ts | 8 +-
.../nativeFilters/FiltersConfigModal/types.ts | 1 +
.../src/dashboard/util/risonFilters.ts | 24 +-
.../EmbedCodeContent.subdirectory.test.tsx | 78 +
.../AnnotationLayerControl/AnnotationLayer.tsx | 10 +-
.../explore/components/controls/ViewQuery.test.tsx | 1 +
.../src/explore/components/controls/ViewQuery.tsx | 9 +-
.../DashboardsSubMenu.test.tsx | 31 +-
.../DashboardsSubMenu.tsx | 4 +-
.../src/explore/exploreUtils/exploreUtils.test.tsx | 22 +-
.../src/explore/exploreUtils/exportChart.test.ts | 17 +-
.../src/explore/exploreUtils/getExploreUrl.test.ts | 10 +-
.../explore/exploreUtils/getURIDirectory.test.ts | 6 +-
.../src/explore/exploreUtils/index.ts | 4 +-
.../src/extensions/ExtensionsLoader.test.ts | 108 +
.../src/extensions/ExtensionsLoader.ts | 7 +-
.../src/features/alerts/AlertReportModal.tsx | 2 +-
.../AllEntitiesTable.subdirectory.test.tsx | 152 +
.../src/features/allEntities/AllEntitiesTable.tsx | 5 +-
.../DatabaseModal.subdirectory.test.ts | 160 +
.../DatasetPanel.subdirectory.test.tsx | 114 +
.../AddDataset/DatasetPanel/DatasetPanel.tsx | 12 +-
.../datasets/AddDataset/LeftPanel/index.tsx | 2 +-
.../src/features/home/Menu.subdirectory.test.tsx | 230 +
superset-frontend/src/features/home/Menu.test.tsx | 184 +
superset-frontend/src/features/home/Menu.tsx | 37 +-
.../src/features/home/RightMenu.test.tsx | 64 +
superset-frontend/src/features/home/RightMenu.tsx | 10 +-
.../src/features/home/SavedQueries.tsx | 4 +-
.../TimeGrain/TimeGrainFilterPlugin.test.tsx | 12 +-
.../components/TimeGrain/TimeGrainFilterPlugin.tsx | 14 +-
.../TimeGrainPreFilter.integration.test.tsx | 23 +-
.../src/filters/components/TimeGrain/types.ts | 2 +-
superset-frontend/src/middleware/logger.test.ts | 6 +-
.../src/middleware/loggerMiddleware.ts | 11 +-
.../src/pages/AnnotationLayerList/index.tsx | 6 +-
.../src/pages/AnnotationList/index.tsx | 3 +-
.../pages/ChartList/ChartList.listview.test.tsx | 4 +-
.../src/pages/ChartList/ChartList.testHelpers.tsx | 18 +-
.../DashboardList/DashboardList.testHelpers.tsx | 10 +-
superset-frontend/src/pages/DatabaseList/index.tsx | 7 +-
.../DatasetList/DatasetList.subdirectory.test.tsx | 135 +
superset-frontend/src/pages/DatasetList/index.tsx | 18 +-
.../FileHandler/FileHandler.subdirectory.test.tsx | 267 ++
.../src/pages/FileHandler/index.test.tsx | 10 +-
superset-frontend/src/pages/FileHandler/index.tsx | 10 +-
superset-frontend/src/pages/Login/Login.test.tsx | 67 +-
superset-frontend/src/pages/Login/index.tsx | 11 +-
.../pages/RedirectWarning/RedirectWarning.test.tsx | 78 +
.../src/pages/RedirectWarning/index.tsx | 38 +-
.../src/pages/RedirectWarning/utils.test.ts | 59 +
.../src/pages/RedirectWarning/utils.ts | 15 +
superset-frontend/src/pages/Register/index.tsx | 7 +-
.../pages/SavedQueryList/SavedQueryList.test.tsx | 6 +-
.../src/pages/SavedQueryList/index.tsx | 14 +-
superset-frontend/src/pages/Tags/index.tsx | 2 +-
superset-frontend/src/preamble.ts | 4 +-
superset-frontend/src/pwa-manifest.json | 65 -
.../src/setup/setupFormatters.test.ts | 71 +
superset-frontend/src/setup/setupFormatters.ts | 5 +
superset-frontend/src/utils/assetUrl.test.ts | 39 +
superset-frontend/src/utils/assetUrl.ts | 17 +-
.../src/utils/getBootstrapData.test.ts | 73 +-
superset-frontend/src/utils/getBootstrapData.ts | 56 +-
.../src/utils/navigationUtils.AppLink.test.tsx | 95 +
.../src/utils/navigationUtils.appRoot.test.tsx | 136 +
.../src/utils/navigationUtils.directDom.test.tsx | 244 +
.../src/utils/navigationUtils.invariants.test.ts | 375 ++
.../src/utils/navigationUtils.schemes.test.ts | 207 +
.../src/utils/navigationUtils.test.ts | 783 +++-
superset-frontend/src/utils/navigationUtils.ts | 486 +-
.../src/utils/pathUtils.parity.test.ts | 166 +
superset-frontend/src/utils/pathUtils.test.ts | 151 +
superset-frontend/src/utils/pathUtils.ts | 44 +-
superset-frontend/src/utils/urlUtils.test.ts | 131 +
superset-frontend/src/utils/urlUtils.ts | 41 +-
superset-frontend/src/views/App.tsx | 2 +-
superset-frontend/src/views/CRUD/hooks.ts | 6 +-
superset-frontend/src/views/routePaths.ts | 12 +-
superset-frontend/src/views/routes.test.tsx | 49 +
superset-frontend/src/views/routes.tsx | 12 +-
superset-frontend/webpack.config.js | 6 +-
superset/app.py | 37 +-
superset/async_events/async_query_manager.py | 16 +-
superset/charts/client_processing.py | 6 +
superset/commands/sql_lab/estimate.py | 79 +-
superset/config.py | 66 +
superset/connectors/sqla/models.py | 57 +-
superset/daos/base.py | 15 +-
superset/extensions/__init__.py | 11 +-
superset/initialization/__init__.py | 9 +-
superset/mcp_service/chart/schemas.py | 9 +-
.../mcp_service/chart/tool/get_chart_preview.py | 4 +
.../mcp_service/chart/tool/update_chart_preview.py | 4 +-
superset/mcp_service/dashboard/schemas.py | 6 +-
.../tool/add_chart_to_existing_dashboard.py | 8 +-
.../dashboard/tool/generate_dashboard.py | 3 +-
.../mcp_service/dashboard/tool/update_dashboard.py | 5 +-
superset/mcp_service/dataset/schemas.py | 15 +-
.../mcp_service/dataset/tool/get_dataset_info.py | 17 +
.../explore/tool/generate_explore_link.py | 3 +-
superset/mcp_service/jwt_verifier.py | 5 +
.../sql_lab/tool/open_sql_lab_with_context.py | 2 +
superset/mcp_service/system/tool/find_users.py | 11 +-
superset/mcp_service/utils/__init__.py | 1 +
superset/mcp_service/utils/sanitization.py | 10 +
.../common => superset/middleware}/__init__.py | 0
superset/middleware/legacy_prefix_redirect.py | 256 ++
...2bee73611e32_composite_pk_association_tables.py | 606 +++
superset/models/core.py | 46 +-
superset/models/dashboard.py | 66 +-
superset/models/helpers.py | 87 +-
superset/models/slice.py | 34 +-
superset/reports/models.py | 6 +-
superset/result_set.py | 6 +-
superset/sql/execution/executor.py | 62 +-
superset/sql/parse.py | 275 +-
superset/sql_lab.py | 35 +-
superset/tasks/async_queries.py | 2 +-
superset/templates/superset/spa.html | 6 +-
superset/translations/ar/LC_MESSAGES/messages.po | 6 +
superset/translations/ca/LC_MESSAGES/messages.po | 6 +
superset/translations/cs/LC_MESSAGES/messages.po | 6 +
superset/translations/de/LC_MESSAGES/messages.po | 4846 ++++++++++++--------
superset/translations/en/LC_MESSAGES/messages.po | 6 +
superset/translations/es/LC_MESSAGES/messages.po | 6 +
superset/translations/fa/LC_MESSAGES/messages.po | 6 +
superset/translations/fi/LC_MESSAGES/messages.po | 571 ++-
superset/translations/fr/LC_MESSAGES/messages.po | 6 +
superset/translations/it/LC_MESSAGES/messages.po | 6 +
superset/translations/ja/LC_MESSAGES/messages.po | 6 +
superset/translations/ko/LC_MESSAGES/messages.po | 6 +
superset/translations/lv/LC_MESSAGES/messages.po | 560 ++-
superset/translations/messages.pot | 6 +
superset/translations/mi/LC_MESSAGES/messages.po | 6 +
superset/translations/nl/LC_MESSAGES/messages.po | 6 +
superset/translations/pl/LC_MESSAGES/messages.po | 6 +
superset/translations/pt/LC_MESSAGES/messages.po | 6 +
.../translations/pt_BR/LC_MESSAGES/messages.po | 6 +
superset/translations/ru/LC_MESSAGES/messages.po | 6 +
superset/translations/sk/LC_MESSAGES/messages.po | 10 +
superset/translations/sl/LC_MESSAGES/messages.po | 6 +
superset/translations/th/LC_MESSAGES/messages.po | 6 +
superset/translations/tr/LC_MESSAGES/messages.po | 6 +
superset/translations/uk/LC_MESSAGES/messages.po | 6 +
superset/translations/zh/LC_MESSAGES/messages.po | 6 +
.../translations/zh_TW/LC_MESSAGES/messages.po | 6 +
superset/utils/core.py | 18 +-
superset/utils/json.py | 5 +
superset/views/all_entities.py | 2 +-
superset/views/base.py | 1 +
superset/views/core.py | 60 +-
superset/views/datasource/views.py | 6 +-
superset/views/explore.py | 19 +-
superset/views/pwa_manifest.py | 159 +
superset/views/tags.py | 2 +-
superset/views/utils.py | 159 +-
tests/integration_tests/core_tests.py | 55 +-
tests/integration_tests/dashboard_tests.py | 26 +-
tests/integration_tests/dashboards/api_tests.py | 6 +-
tests/integration_tests/datasource_tests.py | 17 +
tests/integration_tests/event_logger_tests.py | 6 +-
tests/integration_tests/log_api_tests.py | 8 +-
.../composite_pk_association_tables__tests.py | 137 +
.../migrations/composite_pk_round_trip__tests.py | 208 +
.../commands/execute_dashboard_report_tests.py | 2 +-
tests/integration_tests/reports/commands_tests.py | 2 +-
tests/integration_tests/security_tests.py | 7 +-
tests/integration_tests/strategy_tests.py | 2 +-
tests/integration_tests/utils_tests.py | 2 +-
.../views/test_explore_redirect.py | 326 ++
.../async_events/async_query_manager_tests.py | 53 +
tests/unit_tests/charts/test_client_processing.py | 187 +-
tests/unit_tests/commands/report/execute_test.py | 22 +-
tests/unit_tests/commands/sql_lab/test_estimate.py | 78 +-
tests/unit_tests/daos/test_base_dao_soft_delete.py | 50 +-
tests/unit_tests/initialization_test.py | 128 +-
.../dashboard/test_dashboard_schemas.py | 8 +-
.../tool/test_add_chart_to_existing_dashboard.py | 3 +-
.../dashboard/tool/test_dashboard_generation.py | 15 +-
.../dashboard/tool/test_dashboard_tools.py | 5 +-
.../mcp_service/system/tool/test_find_users.py | 81 +
.../mcp_service/utils/test_sanitization.py | 41 +
.../unit_tests/middleware}/__init__.py | 0
.../middleware/test_legacy_prefix_redirect.py | 726 +++
.../composite_pk_association_tables_test.py | 170 +
tests/unit_tests/models/core_test.py | 39 +
tests/unit_tests/models/dashboard_test.py | 87 +-
tests/unit_tests/models/helpers_test.py | 55 +
tests/unit_tests/models/slice_test.py | 58 +
tests/unit_tests/models/test_soft_delete_mixin.py | 38 +
tests/unit_tests/result_set_test.py | 31 +
tests/unit_tests/sql/execution/test_executor.py | 86 +-
tests/unit_tests/sql/parse_tests.py | 562 +++
tests/unit_tests/test_subdirectory_url_for.py | 256 ++
tests/unit_tests/utils/json_tests.py | 14 +
tests/unit_tests/utils/test_core.py | 21 +
tests/unit_tests/views/test_pwa_manifest.py | 354 ++
.../views/test_redirect_view_subdirectory.py | 221 +
tests/unit_tests/views/test_spa_service_worker.py | 182 +
278 files changed, 18073 insertions(+), 3586 deletions(-)
create mode 100644 superset-frontend/packages/superset-ui-core/src/connection/normalizeBackendUrls.ts
create mode 100644 superset-frontend/packages/superset-ui-core/src/currency-format/currencyLocale.ts
create mode 100644 superset-frontend/packages/superset-ui-core/src/currency-format/symbolPosition.ts
create mode 100644 superset-frontend/packages/superset-ui-core/test/connection/SupersetClientAppRootContract.test.ts
create mode 100644 superset-frontend/packages/superset-ui-core/test/connection/normalizeBackendUrls.test.ts
create mode 100644 superset-frontend/packages/superset-ui-core/test/currency-format/currencyLocale.test.ts
create mode 100644 superset-frontend/packages/superset-ui-core/test/currency-format/symbolPosition.test.ts
create mode 100644 superset-frontend/spec/helpers/sourceTreeScanner.ts
create mode 100644 superset-frontend/spec/helpers/withApplicationRoot.ts
create mode 100644 superset-frontend/src/chartCustomizations/components/TimeGrain/CustomizationTimeGrainsTransformer.integration.test.ts
create mode 100644 superset-frontend/src/chartCustomizations/components/TimeGrain/TimeGrainPreFilter.integration.test.tsx
create mode 100644 superset-frontend/src/dashboard/components/SliceHeaderControls/SliceHeaderControls.subdirectory.test.tsx
create mode 100644 superset-frontend/src/dashboard/components/gridComponents/Tab/Tab.subdirectory.test.tsx
create mode 100644 superset-frontend/src/dashboard/components/nativeFilters/FilterBar/FilterBar.subdirectory.test.ts
delete mode 100644 superset-frontend/src/dashboard/components/nativeFilters/FilterBar/FilterControls/FilterValue.timeGrain.test.ts
create mode 100644 superset-frontend/src/explore/components/EmbedCodeContent.subdirectory.test.tsx
create mode 100644 superset-frontend/src/features/allEntities/AllEntitiesTable.subdirectory.test.tsx
create mode 100644 superset-frontend/src/features/databases/DatabaseModal/DatabaseModal.subdirectory.test.ts
create mode 100644 superset-frontend/src/features/datasets/AddDataset/DatasetPanel/DatasetPanel.subdirectory.test.tsx
create mode 100644 superset-frontend/src/features/home/Menu.subdirectory.test.tsx
create mode 100644 superset-frontend/src/pages/DatasetList/DatasetList.subdirectory.test.tsx
create mode 100644 superset-frontend/src/pages/FileHandler/FileHandler.subdirectory.test.tsx
create mode 100644 superset-frontend/src/pages/RedirectWarning/RedirectWarning.test.tsx
delete mode 100644 superset-frontend/src/pwa-manifest.json
create mode 100644 superset-frontend/src/setup/setupFormatters.test.ts
create mode 100644 superset-frontend/src/utils/navigationUtils.AppLink.test.tsx
create mode 100644 superset-frontend/src/utils/navigationUtils.appRoot.test.tsx
create mode 100644 superset-frontend/src/utils/navigationUtils.directDom.test.tsx
create mode 100644 superset-frontend/src/utils/navigationUtils.invariants.test.ts
create mode 100644 superset-frontend/src/utils/navigationUtils.schemes.test.ts
create mode 100644 superset-frontend/src/utils/pathUtils.parity.test.ts
mode change 100644 => 100755 superset/mcp_service/system/tool/find_users.py
copy {superset-core/src/superset_core/common => superset/middleware}/__init__.py (100%)
create mode 100644 superset/middleware/legacy_prefix_redirect.py
create mode 100644 superset/migrations/versions/2026-05-01_23-36_2bee73611e32_composite_pk_association_tables.py
create mode 100644 superset/views/pwa_manifest.py
create mode 100644 tests/integration_tests/migrations/composite_pk_association_tables__tests.py
create mode 100644 tests/integration_tests/migrations/composite_pk_round_trip__tests.py
create mode 100644 tests/integration_tests/views/test_explore_redirect.py
copy {superset-core/src/superset_core/common => tests/unit_tests/middleware}/__init__.py (100%)
create mode 100644 tests/unit_tests/middleware/test_legacy_prefix_redirect.py
create mode 100644 tests/unit_tests/migrations/composite_pk_association_tables_test.py
create mode 100644 tests/unit_tests/test_subdirectory_url_for.py
create mode 100644 tests/unit_tests/views/test_pwa_manifest.py
create mode 100644 tests/unit_tests/views/test_redirect_view_subdirectory.py
create mode 100644 tests/unit_tests/views/test_spa_service_worker.py