This is an automated email from the ASF dual-hosted git repository.
rusackas pushed a change to branch fix/37700-forced-password-change-stranding
in repository https://gitbox.apache.org/repos/asf/superset.git
omit 5ea663c1ea3 fix(i18n): add password-change profile-access string to
messages.pot
omit 258593d8241 fix(auth): close the forced-password-change redirect loop
and sweep stale legacy password perms from all roles
add abdf2e6c702 fix(home): redirect users without an ID before rendering
(#44456)
add 3f6d4cd6896 chore(deps-dev): update google-cloud-storage requirement
from >=1.37 to >=3.14.1 (#44693)
add 6a832cb2102 fix(mcp): enforce dashboard filter scope on dataset, SQL
and chart tool calls (#44800)
add e7702020344 fix(postprocessing): preserve NULL index values through
pivot() (#43547) (#43693)
add f7badeb095b fix(mcp): execute_sql request limit caps, never raises, an
explicit SQL LIMIT (#44604)
add db56168a861 ci: require babel-extract to pass before merging master
(#44543)
add 342a8f1e4e0 fix(mcp): report a chart's live dataset id and name
(#44681)
add 21b937b59d7 fix(retention): skip models without purge policies before
scanning (#44874)
add 6d97cde59a6 fix(semantic-layers): export/import semantic-view charts
by typed reference (#44396)
add b94f88ffbb4 fix(semantic-layer): require explicit member identity
reselection (#44370)
add 9c7c96fe057 fix(logging): register LogRestApi only once (#44732)
add edc91b86e5c chore(deps-dev): bump baseline-browser-mapping from
2.11.25 to 2.11.26 in /superset-frontend (#44890)
add 338e640df93 chore(deps): bump dompurify from 3.4.15 to 3.4.16 in
/superset-frontend (#44889)
add 4a199486599 chore(deps): bump dom-to-image-more from 3.10.2 to 3.11.0
in /superset-frontend (#44888)
add 6559b483f28 chore(deps): bump maplibre-gl from 6.8.0 to 6.11.2 in
/superset-frontend (#44887)
add dfccc2e1e9c chore(deps-dev): bump minimizer-webpack-plugin from 5.11.0
to 5.12.0 in /superset-frontend (#44886)
add c43770e12da chore(deps-dev): bump webpack-sources from 3.5.1 to 3.5.3
in /superset-frontend (#44885)
add 95faf3a6a04 chore(deps-dev): bump oxlint-tsgolint from 7.0.2002 to
7.0.2003 in /docs (#44883)
add 27c9213cca2 chore(deps-dev): bump oxlint-tsgolint from 7.0.2002 to
7.0.2003 in /superset-websocket (#44882)
add 25956d6c448 chore(superset-ui-chart-controls): forward-compat fixes
for TypeScript 6.0 (#44877)
add ba3500e0e9a feat(export/import): add annotation layer export/import
support for charts and dashboards (#43232)
add 1b0a37cf223 fix(users): stop update_me setting self-referential
changed_by_fk (#44866)
add 7bb29649416 chore(deps): bump dawidd6/action-download-artifact from 24
to 25 (#44884)
add 005edd74234 chore(build): de-vendor `helm/chart-testing-action` GHA
(#44722)
add 10d06859b83 fix(ci): floor pyfakefs at 5.7.4 to fix Python 3.13
pytest-cov crash (#44853)
add 0fdfd6660e0 docs(databases): add ClickHouse Managed Postgres (#44870)
add e0483898728 test(explore): cover time range frames, comparison labels,
and metric popover state (#44847)
add c1bb129c218 fix(change-detector): classify changed files by language,
not directory (#44895)
add e606cadff7c chore(mcp): fix malformed tool and prompt docstrings
(#44572)
add ef64bacbaa0 feat(chart): cross-filter by x-axis label on charts with
dimensions (#44869)
add b0ac9ef61f6 test(explore): cover color scheme selection, BigNumber
subheader/trendline, and WorldMap bubbles (#44846)
add 8d25777b995 test(plugin-chart-table): cover server-side sort, query
mode controls, and sort ordering (#44845)
add 8849542bda1 test(explore): cover viz switch and control dependency
logic (#44842)
add 03b61cc2d89 test(explore): add fetchTopNValues unit tests (#44841)
add e32493c9d93 test(explore): add saveModalReducer unit tests (#44839)
add f6155b9e9ea fix(dashboard): show the configured refresh warning
alongside the limit error (#44836)
add 240a4267f85 test(explore): add datasourcesReducer unit tests (#44840)
add bc3698b5d64 test(explore): port remaining deleted Cypress explore
specs to RTL (#44838)
add 2872d16ee65 test(frontend): await the userEvent calls that needed
restructuring (#44799)
add 7fea33761b8 fix(chart): wrap raw pandas TypeError/DataError from
post-processing as QueryObjectValidationError (#44463)
add 3f7d01aaafc fix(reports): catch TypeError when validating non-string
extra.dashboard.anchor (#44404)
add ece8b8bd7b2 fix(import): avoid UnboundLocalError when load_yaml fails
during load_configs (SC-121288) (#44390)
add 47ba8fc8014 fix(api): return 401 not 500 for auth errors in
CurrentUserRestApi (SC-120417) (#44213)
add ef2c05c0900 fix(security): guard is_guest_user against
NoAuthorizationError on unauthenticated error paths (#43826)
add f9d67e1a118 fix: downgrade deprecated query_object field warnings to
info (#43520)
add 396030d87e0 docs: remove stale Selenium references after
Playwright-only switch (#44243)
add 3fa06db85b6 fix(mcp): include feature_availability in
instance://metadata resource (#44891)
add 52d8b405c99 fix(echarts): recognize Date and ISO-string temporal
x-axis values in getXAxisDomain (#44818)
add 15bde2a3016 fix(native-filters): keep cascade dependency gate in sync
with live filter type (#44366)
add 11bdbc91f37 feat(ci): add Chromatic visual regression testing for
Storybook (#44103)
add 8d026b4a568 fix(mcp): skip dashboard live updates when websockets are
disabled or realtime access is missing (#44796)
add ca8a5890731 fix(auth): close the forced-password-change redirect loop
and sweep stale legacy password perms from all roles
add ecef0b82a25 fix(i18n): add password-change profile-access string to
messages.pot
add 124b72f32a3 fix(auth): chain password-perm sweep migration after
annotation UUID and stop REMOTE_USER logout loop
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 (5ea663c1ea3)
\
N -- N -- N
refs/heads/fix/37700-forced-password-change-stranding (124b72f32a3)
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:
.asf.yaml | 1 +
.github/actions/change-detector/action.yml | 5 +
.github/actions/chart-testing-action | 1 -
.github/workflows/chromatic.yml | 134 ++
.github/workflows/superset-docs-deploy.yml | 4 +-
.github/workflows/superset-docs-verify.yml | 2 +-
.github/workflows/superset-helm-lint-test.yml | 19 +-
.github/workflows/superset-translations.yml | 2 +
.gitmodules | 3 -
UPDATING.md | 94 ++
docs/admin_docs/configuration/alerts-reports.mdx | 57 +-
docs/admin_docs/configuration/cache.mdx | 37 +-
.../configuration/dashboard-performance.mdx | 4 +-
.../importing-exporting-datasources.mdx | 32 +
docs/admin_docs/configuration/mcp-server.mdx | 146 +-
.../contributing/development-setup.md | 4 +-
docs/developer_docs/testing/backend-testing.md | 3 +-
docs/docs/quickstart.mdx | 3 +
docs/docs/using-superset/recently-archived.mdx | 10 +
.../using-superset/semantic-member-selections.mdx | 62 +
docs/package.json | 2 +-
docs/src/data/databases.json | 19 +
docs/static/resources/openapi.json | 23 +-
docs/yarn.lock | 78 +-
pyproject.toml | 14 +-
requirements/development.txt | 2 +-
scripts/change_detector.py | 60 +
superset-core/src/superset_core/queries/types.py | 3 +
.../src/superset_core/semantic_layers/types.py | 1 +
.../src/superset_core/semantic_layers/view.py | 14 +
superset-frontend/package-lock.json | 87 +-
superset-frontend/package.json | 8 +-
.../src/sections/sections.tsx | 7 +
.../superset-ui-chart-controls/src/types.ts | 1 +
.../src/utils/getColorFormatters.ts | 84 +-
.../superset-ui-core/src/query/extractExtras.ts | 22 +
.../packages/superset-ui-core/src/query/index.ts | 2 +
.../src/query/semanticSelection.ts} | 35 +-
.../superset-ui-core/src/query/types/Dashboard.ts | 1 +
.../superset-ui-core/src/query/types/Query.ts | 1 +
.../src/query/types/QueryFormData.ts | 12 +-
.../test/query/extractExtras.test.ts | 62 +
.../src/BigNumber/BigNumberViz.test.tsx | 57 +
.../BigNumberWithTrendline/transformProps.test.ts | 72 +
.../src/Timeseries/EchartsTimeseries.test.tsx | 116 +-
.../src/Timeseries/EchartsTimeseries.tsx | 29 +-
.../src/Timeseries/transformProps.ts | 7 +-
.../src/Timeseries/transformers.ts | 6 +-
.../plugins/plugin-chart-echarts/src/constants.ts | 4 +
.../plugin-chart-echarts/src/utils/formatters.ts | 40 +-
.../plugin-chart-echarts/src/utils/series.ts | 28 +-
.../test/Timeseries/EchartsTimeseries.test.tsx | 13 +-
.../test/Timeseries/transformProps.test.ts | 31 +
.../test/Timeseries/transformers.test.ts | 17 +
.../test/utils/formatters.test.ts | 118 ++
.../plugin-chart-echarts/test/utils/series.test.ts | 96 +-
.../plugin-chart-point-cluster-map/package.json | 2 +-
.../plugin-chart-table/test/TableChart.test.tsx | 88 ++
.../plugin-chart-table/test/buildQuery.test.ts | 42 +
.../plugin-chart-table/test/controlPanel.test.ts | 55 +
.../plugin-chart-world-map/test/WorldMap.test.ts | 14 +
.../plugins/preset-chart-deckgl/package.json | 2 +-
.../SqlEditorTabHeader/SqlEditorTabHeader.test.tsx | 28 +-
.../src/components/Chart/ChartRenderer.test.tsx | 52 +-
.../src/components/Chart/ChartRenderer.tsx | 23 +-
.../RowCountLabel/RowCountLabel.test.tsx | 16 +-
.../components/RefreshIntervalModal.test.tsx | 37 +
.../dashboard/components/RefreshIntervalModal.tsx | 2 +-
.../FilterBar/FilterControls/FilterValue.test.tsx | 42 +-
.../FilterBar/FilterControls/FilterValue.tsx | 70 +-
.../FiltersConfigForm/FiltersConfigForm.tsx | 161 ++-
.../FiltersConfigModal/FiltersConfigModal.test.tsx | 145 +-
.../hooks/useFilterOperations.test.ts | 62 +
.../hooks/useFilterOperations.ts | 10 +-
.../transformers/buildTarget.test.ts | 44 +-
.../FiltersConfigModal/transformers/buildTarget.ts | 37 +-
.../transformers/customizationTransformer.ts | 10 +-
.../transformers/filterTransformer.ts | 10 +-
.../nativeFilters/FiltersConfigModal/types.ts | 2 +
.../components/nativeFilters/utils.test.ts | 27 +
.../dashboard/components/nativeFilters/utils.ts | 13 +
.../util/charts/getFormDataWithExtraFilters.ts | 163 ++-
.../util/getFormDataWithExtraFilters.test.ts | 412 +++++-
superset-frontend/src/dataMask/reducer.test.ts | 58 +
superset-frontend/src/dataMask/reducer.ts | 18 +
.../src/explore/actions/exploreActions.ts | 10 +
.../components/ControlPanelsContainer.test.tsx | 265 +++-
.../explore/components/ControlPanelsContainer.tsx | 44 +-
.../controls/AnnotationLayerControl/index.test.tsx | 84 +-
.../ColorSchemeControl/ColorSchemeControl.test.tsx | 76 +
.../controls/ComparisonRangeLabel.test.tsx | 252 ++++
.../DateFilterControl/tests/CommonFrame.test.tsx | 72 +
.../tests/DateFilterLabel.test.tsx | 193 +++
.../DateFilterControl/tests/DateLabel.test.tsx | 73 +
.../DndMetricSelect.test.tsx | 90 ++
.../AdhocFilterControl/AdhocFilterControl.test.tsx | 102 +-
.../AdhocFilterEditPopover.test.tsx | 55 +-
...AdhocFilterEditPopoverSimpleTabContent.test.tsx | 17 +
.../index.tsx | 27 +-
.../MatrixifyControl/utils/fetchTopNValues.test.ts | 165 +++
.../controls/MatrixifyDimensionControl.test.tsx | 139 +-
.../controls/MatrixifyDimensionControl.tsx | 26 +-
.../AdhocMetricPopoverTrigger.test.tsx | 278 ++++
.../components/controls/SelectControl.test.tsx | 55 +
.../src/explore/controlPanels/sections.tsx | 7 +
.../controlUtils/getSectionsToRender.test.ts | 179 +++
.../explore/reducers/datasourcesReducer.test.ts | 171 +++
.../src/explore/reducers/exploreReducer.test.ts | 269 +++-
.../src/explore/reducers/exploreReducer.ts | 29 +-
.../src/explore/reducers/saveModalReducer.test.ts | 184 +++
.../datasets/AddDataset/Footer/Footer.test.tsx | 5 +-
superset-frontend/src/pages/Home/Home.test.tsx | 47 +-
superset-frontend/src/pages/Home/index.tsx | 20 +-
.../src/utils/semanticViewStructure.test.ts | 13 +
.../src/utils/semanticViewStructure.ts | 15 +-
superset-websocket/package-lock.json | 56 +-
superset-websocket/package.json | 2 +-
superset/annotation_layers/schemas.py | 21 +
superset/charts/api.py | 3 +
superset/charts/schemas.py | 21 +-
superset/commands/annotation_layer/exceptions.py | 5 +
superset/commands/annotation_layer/export.py | 109 ++
.../annotation_layer/importers}/__init__.py | 0
.../importers/dispatcher.py | 20 +-
.../annotation_layer/importers/v1/__init__.py | 54 +
.../annotation_layer/importers/v1/utils.py | 73 +
superset/commands/chart/export.py | 251 +++-
superset/commands/chart/importers/v1/__init__.py | 99 +-
superset/commands/chart/importers/v1/utils.py | 381 ++++-
superset/commands/dashboard/export.py | 8 +-
superset/commands/dashboard/export_example.py | 31 +
.../commands/dashboard/importers/v1/__init__.py | 89 +-
superset/commands/export/assets.py | 10 +-
superset/commands/importers/v1/__init__.py | 10 +-
superset/commands/importers/v1/assets.py | 74 +-
superset/commands/importers/v1/examples.py | 19 +
superset/commands/importers/v1/utils.py | 8 +-
superset/commands/report/base.py | 10 +-
superset/common/query_context_processor.py | 14 +-
superset/common/query_object.py | 49 +-
superset/common/tabular_query.py | 8 +-
superset/dashboards/api.py | 13 +-
superset/datasource/api.py | 52 +-
superset/datasource/schemas.py | 9 +
superset/db_engine_specs/bigquery.py | 35 +-
superset/db_engine_specs/postgres.py | 34 +
superset/initialization/__init__.py | 1 -
superset/mcp_service/app.py | 2 +
superset/mcp_service/auth.py | 22 +-
superset/mcp_service/caching.py | 37 +-
.../chart/prompts/create_chart_guided.py | 4 +-
superset/mcp_service/chart/schemas.py | 61 +-
superset/mcp_service/chart/tool/get_chart_info.py | 18 +-
superset/mcp_service/chart/tool/get_chart_sql.py | 5 +-
superset/mcp_service/chart/tool/list_charts.py | 118 +-
superset/mcp_service/common/schema_discovery.py | 2 +-
superset/mcp_service/dashboard/schemas.py | 29 +-
.../dashboard/tool/apply_dashboard_filters.py | 8 +
superset/mcp_service/dashboard_scope.py | 1365 ++++++++++++++++++
superset/mcp_service/dashboard_scope_sql.py | 516 +++++++
superset/mcp_service/privacy.py | 1 +
superset/mcp_service/semantic_layer/schemas.py | 9 +
.../semantic_layer/tool/get_compatible_metrics.py | 3 +
.../mcp_service/semantic_layer/tool/get_table.py | 51 +-
.../semantic_layer/tool/list_metrics.py | 3 +
superset/mcp_service/sql_lab/schemas.py | 10 +-
superset/mcp_service/sql_lab/tool/execute_sql.py | 1 +
superset/mcp_service/system/prompts/quickstart.py | 4 +-
.../system/resources/instance_metadata.py | 37 +-
superset/mcp_service/system/system_utils.py | 33 +-
.../mcp_service/system/tool/get_instance_info.py | 38 +-
superset/mcp_service/system/tool/get_schema.py | 7 +-
superset/mcp_service/system/tool/health_check.py | 5 +-
superset/migrations/shared/utils.py | 2 +-
..._add_uuid_to_annotation_layer_and_annotation.py | 144 ++
...ep_legacy_password_view_perms_from_all_roles.py | 4 +-
superset/models/annotations.py | 19 +-
superset/models/core.py | 16 +-
superset/models/helpers.py | 2 +
superset/result_set.py | 3 +
superset/security/manager.py | 25 +-
superset/security/password_change.py | 37 +-
superset/semantic_layers/api.py | 3 +
.../semantic_layers/bundle_schemas.py | 24 +-
superset/semantic_layers/import_export.py | 240 ++++
superset/semantic_layers/mapper.py | 6 +
superset/semantic_layers/models.py | 3 +
superset/sql/execution/celery_task.py | 1 +
superset/sql/execution/executor.py | 109 +-
superset/sql/parse.py | 101 +-
superset/superset_typing.py | 11 +
superset/tasks/deletion_retention.py | 55 +-
superset/translations/messages.pot | 68 +
superset/utils/core.py | 36 +
superset/utils/dict_import_export.py | 7 +
superset/utils/pandas_postprocessing/pivot.py | 51 +-
superset/utils/rls.py | 4 +-
superset/views/users/api.py | 22 +-
.../annotation_layers/commands_tests.py | 750 ++++++++++
tests/integration_tests/charts/commands_tests.py | 1515 ++++++++++++++++++++
tests/integration_tests/commands_test.py | 58 +
.../integration_tests/dashboards/commands_tests.py | 585 ++++++++
tests/integration_tests/fixtures/importexport.py | 104 ++
.../charts/commands/importers/v1/import_test.py | 32 +-
.../charts/commands/importers/v1/utils_test.py | 28 +-
.../commands/chart/semantic_export_test.py | 127 ++
.../dashboard/export_example_semantic_test.py | 175 +++
tests/unit_tests/commands/export_test.py | 51 +
.../commands/importers/v1/assets_test.py | 4 +-
.../unit_tests/commands/importers/v1/utils_test.py | 34 +
tests/unit_tests/commands/report/create_test.py | 36 +
.../common/test_query_context_processor.py | 33 +
tests/unit_tests/connectors/sqla/utils_test.py | 34 +
tests/unit_tests/db_engine_specs/test_bigquery.py | 87 +-
tests/unit_tests/initialization/init_views_test.py | 113 ++
.../chart/test_live_chart_datasource.py | 709 +++++++++
.../dashboard/test_dashboard_schemas.py | 18 +
.../dashboard/tool/test_apply_dashboard_filters.py | 54 +-
.../tool/test_get_compatible_metrics.py | 14 +-
.../semantic_layer/tool/test_get_table.py | 39 +
.../semantic_layer/tool/test_list_metrics.py | 10 +-
.../mcp_service/sql_lab/tool/test_execute_sql.py | 22 +-
.../system/resources/test_instance_metadata.py | 144 ++
.../system/tool/test_get_current_user.py | 6 +-
.../unit_tests/mcp_service/test_dashboard_scope.py | 1502 +++++++++++++++++++
.../mcp_service/test_dashboard_scope_sql.py | 674 +++++++++
.../unit_tests/mcp_service/test_mcp_docstrings.py | 128 ++
.../unit_tests/mcp_service/test_tool_inventory.py | 4 +-
tests/unit_tests/mcp_service/test_worker.py | 6 +-
tests/unit_tests/models/core_test.py | 62 +
tests/unit_tests/models/helpers_test.py | 51 +
.../unit_tests/pandas_postprocessing/test_pivot.py | 339 +++++
tests/unit_tests/scripts/change_detector_test.py | 77 +
tests/unit_tests/security/manager_test.py | 27 +
tests/unit_tests/security/test_password_change.py | 20 +
.../test_superset_user_api_subject_sync.py | 23 +
tests/unit_tests/semantic_layers/api_test.py | 10 +-
.../semantic_layers/import_export_test.py | 921 ++++++++++++
tests/unit_tests/semantic_layers/mapper_test.py | 5 +
tests/unit_tests/semantic_layers/models_test.py | 2 +
.../semantic_layers/selection_identity_test.py | 293 ++++
.../semantic_layers/values_endpoint_test.py | 21 +-
tests/unit_tests/sql/execution/conftest.py | 3 +
tests/unit_tests/sql/execution/test_celery_task.py | 2 +
tests/unit_tests/sql/execution/test_executor.py | 850 ++++++++++-
tests/unit_tests/sql/parse_tests.py | 107 ++
tests/unit_tests/tasks/test_deletion_retention.py | 171 ++-
tests/unit_tests/views/test_current_user_api.py | 23 +
.../views/test_current_user_auth_errors.py | 122 ++
249 files changed, 20788 insertions(+), 790 deletions(-)
delete mode 160000 .github/actions/chart-testing-action
create mode 100644 .github/workflows/chromatic.yml
create mode 100644 docs/docs/using-superset/semantic-member-selections.mdx
copy superset-frontend/{src/views/ScrollToTop.tsx =>
packages/superset-ui-core/src/query/semanticSelection.ts} (50%)
create mode 100644
superset-frontend/src/explore/components/controls/ComparisonRangeLabel.test.tsx
create mode 100644
superset-frontend/src/explore/components/controls/DateFilterControl/tests/CommonFrame.test.tsx
create mode 100644
superset-frontend/src/explore/components/controls/DateFilterControl/tests/DateLabel.test.tsx
create mode 100644
superset-frontend/src/explore/components/controls/MatrixifyControl/utils/fetchTopNValues.test.ts
create mode 100644
superset-frontend/src/explore/components/controls/MetricControl/AdhocMetricPopoverTrigger.test.tsx
create mode 100644
superset-frontend/src/explore/controlUtils/getSectionsToRender.test.ts
create mode 100644
superset-frontend/src/explore/reducers/datasourcesReducer.test.ts
create mode 100644
superset-frontend/src/explore/reducers/saveModalReducer.test.ts
create mode 100644 superset/commands/annotation_layer/export.py
copy {scripts => superset/commands/annotation_layer/importers}/__init__.py
(100%)
copy superset/commands/{chart => annotation_layer}/importers/dispatcher.py
(82%)
create mode 100644 superset/commands/annotation_layer/importers/v1/__init__.py
create mode 100644 superset/commands/annotation_layer/importers/v1/utils.py
create mode 100644 superset/mcp_service/dashboard_scope.py
create mode 100644 superset/mcp_service/dashboard_scope_sql.py
create mode 100644
superset/migrations/versions/2026-08-17_18-38_884a2115ebd3_add_uuid_to_annotation_layer_and_annotation.py
copy tests/unit_tests/utils/db.py =>
superset/semantic_layers/bundle_schemas.py (56%)
create mode 100644 superset/semantic_layers/import_export.py
create mode 100644 tests/integration_tests/annotation_layers/commands_tests.py
create mode 100644 tests/unit_tests/commands/chart/semantic_export_test.py
create mode 100644
tests/unit_tests/commands/dashboard/export_example_semantic_test.py
create mode 100644 tests/unit_tests/initialization/init_views_test.py
create mode 100644
tests/unit_tests/mcp_service/chart/test_live_chart_datasource.py
create mode 100644
tests/unit_tests/mcp_service/system/resources/test_instance_metadata.py
create mode 100644 tests/unit_tests/mcp_service/test_dashboard_scope.py
create mode 100644 tests/unit_tests/mcp_service/test_dashboard_scope_sql.py
create mode 100644 tests/unit_tests/mcp_service/test_mcp_docstrings.py
create mode 100644 tests/unit_tests/semantic_layers/import_export_test.py
create mode 100644 tests/unit_tests/semantic_layers/selection_identity_test.py
create mode 100644 tests/unit_tests/views/test_current_user_auth_errors.py