This is an automated email from the ASF dual-hosted git repository.
rusackas pushed a change to branch feat/color-picker-consolidation
in repository https://gitbox.apache.org/repos/asf/superset.git
omit 3392d3bd437 fix(big-number): revert PopKPI arrow color assertion to
render-only check
omit c1532fd00bb fix(color-picker): address bito review findings on
range/comparison colors
omit 2bd91f80526 chore(i18n): regenerate messages.pot for the new
color-picker strings
omit 0a5a6a8eeca fix(bullet): share one range tokenizer, assert the
down-arrow value
omit 8c5ea079b67 refactor(bignumber): name the comparison pill tint alpha
suffix
omit e1c03941430 test(color-picker): await click before asserting
reset-button onChange
omit 977904d99f1 refactor(color-picker): dedupe comparison color config and
disable theme pickers on invalid JSON
omit bec03229c40 test(themes): paste JSON into the theme editor instead of
typing it
omit 0686244cd6a fix(charts): align finite-value filtering between Bullet
ranges and range colors
omit 9018e4bfd32 fix(charts): address bot review findings on legacy color
fallbacks
omit 1b3063d5323 feat(themes): add curated color pickers above the theme
JSON editor
omit 4a4a4c0e8a7 feat(big-number): replace 2-choice comparison scheme with
color pickers
omit 9b895790e7c feat(bullet): add optional per-range band colors
omit 74afdd05447 feat(gauge): replace scheme-index interval colors with a
color picker
add 63c004fe66c feat(mcp): add a permission-filtered asset catalog tool
(#44694)
add 6b2d3b15116 fix(auth): gate registration UI by auth type, not just the
flag (#44368)
add e1daa2f7e10 chore(deps-dev): bump ip-address from 10.4.0 to 10.7.2 in
/superset-frontend in the security group across 1 directory (#44774)
add 8bd268f9cef docs(versioning): screenshots, retention, and permission
guidance for version history and archives (#44190)
add 14b87366bc7 chore(deps-dev): bump brace-expansion from 5.0.9 to 5.0.12
in /superset-embedded-sdk in the security group across 1 directory (#44812)
add 1dbb7aaace6 chore(deps): bump fast-uri from 3.1.7 to 3.1.8 in /docs in
the security group across 1 directory (#44814)
add 6d1bfaa4cd4 fix(dashboard): forward clearAllTriggers from vertical
filter bar to FilterControls (#44531)
add df450dc2a24 fix(mypy): narrow nullable uuid before
RestoreVersionCommand calls (#44789)
add 92b0cf82ca9 fix(echarts-timeseries): convert xAxisLabelInterval string
'0' to number 0 (#43729)
add 517e94d1062 fix(echarts): fix sparse sub-daily bar sizing and x-axis
mislabeling (#44628)
add 48a3b02d129 fix(mysql): require TLS when SSL is requested (#44723)
add 773f976b6de fix(dynamodb): render time bounds as ISO 8601 so sub-day
ranges match stored timestamps (#44702)
add 005eadcacd8 fix(opensearch): page drill-to-detail samples with the
OpenSearch SQL response format (#44703)
add 542e4661837 fix(gsheets): pass the OAuth2 token and delegation subject
through connect_args (#44709)
add 16271bbfbb7 fix(databricks): stop the string-type patch writing
SQLAlchemy's shared colspecs (#44707)
add 7154f2790a9 fix(oracle): map Oracle NUMBER, BINARY_FLOAT/DOUBLE and
CLOB column types (#44685)
add 3e8cec55c4b chore(deps): bump undici from 7.29.0 to 7.30.0 in
/superset-frontend in the security group across 1 directory (#44809)
add 89759eba5d9 chore(deps): bump react-window from 2.3.2 to 2.3.3 in
/superset-frontend (#44820)
add 3e36b242a61 fix(datafusion): render temporal SQL that DataFusion
accepts (#44700)
add 8c3b985c22c fix(db2): set current_schema to the catalog name of the
selected schema (#44706)
add ba62c867258 chore(deps): bump brace-expansion from 5.0.9 to 5.0.12 in
/superset-frontend/cypress-base (#44813)
add 3f8a23622c7 perf(security): memoise the user subject lookup within a
request (#44017)
add 3f408238baa refactor(mcp): one plugin lifecycle contract and compact
chart config schemas (#44746)
add 5668faf18e6 fix(doris): quarter grain, SSL toggle, parameters URI,
error mapping and column types (#44718)
add 929c44097f8 chore(deps): bump the security group across 1 directory
with 2 updates (#44824)
add e93f8ce638c test(semantic-views): wait for views refetches to settle
before selecting a view (#44792)
add 21d46d52dfd chore(build): remove unused dependencies in `docs` and
`superset-frontend` (#44697)
add af794f8c93a chore(deps): bump the security group across 1 directory
with 2 updates (#44831)
add 8a7be3b327b fix: avoid provider calls when rendering datasource access
denials (#44432)
add 3b06cadca4c fix(csv-import): add primary key when MySQL requires one
(#44411)
add 88efac09c67 fix(mcp): align histogram and waterfall query contracts
(#44744)
add 65a6012843b ci(python): run the Python-next canary nightly, bump to
3.13 (#44767)
add e90b9fb751e chore(deps): bump dompurify from 3.4.15 to 3.4.16 in
/superset-frontend in the security group across 1 directory (#44830)
add 51378f529d8 fix(matrixify): fan metrics-axis selection into
multi-query fields (#44629)
add 883e43ee2da fix(sqllab): ignore non-object template_params in
format_sql instead of 500 (#44826)
add bbf0fa5f42f fix(core): stop discarding API errors that quote an HTML
tag (#42489)
add d80fcfc02a2 fix(i18n): make babel_update.sh .pot normalization
actually run (#44395)
add f02f53df234 fix(sql): reject client-side file-transfer statements in
query execution (#44496)
add fd524f4b217 fix(sqllab): preserve exact decimals in results and
exports (#44739)
add d2101c8dba2 fix(exasol): classify common server errors (#44721)
add dc0e306a24c fix(elasticsearch): classify byte, short, half_float,
scaled_float and unsigned_long columns (#44713)
add 8baa9c1f2e3 fix(db2): accept sqlglot's parse_mod in the DB2 term
parser (#44708)
add 5cf8213354c fix(databricks): keep the user's OAuth2 token and extra
connect_args; re-auth on HTTP 401 (#44705)
add 855bb4e21c8 fix(gsheets): align service-account validation and
serialize upload dates (#44695)
add bbf00956d46 fix(mcp): prioritize exact tool names in BM25 search
(#44682)
add 90fc4735835 test(embedded-sdk): cross-document test rig for the
navigation fix (#44608)
add e91ce19a606 fix(auth): drain flash messages on the login page (#44605)
add 924343e3ee6 fix(gantt): prevent y-axis category labels from being
clipped (#44321)
add d2fb52ac83e fix(auth): remove the legacy FAB password reset views and
move password resets into the SPA (#44626)
add a9bba5b6a36 feat(gauge): replace scheme-index interval colors with a
color picker
add c4df55a199d feat(bullet): add optional per-range band colors
add afd72eb6c99 feat(big-number): replace 2-choice comparison scheme with
color pickers
add f263925ad07 feat(themes): add curated color pickers above the theme
JSON editor
add fd598e5f422 fix(charts): address bot review findings on legacy color
fallbacks
add 9e8881018ba fix(charts): align finite-value filtering between Bullet
ranges and range colors
add 47f9ac34a96 test(themes): paste JSON into the theme editor instead of
typing it
add f947b0e0be4 refactor(color-picker): dedupe comparison color config and
disable theme pickers on invalid JSON
add 3f647227ada test(color-picker): await click before asserting
reset-button onChange
add a3e4b9a656e refactor(bignumber): name the comparison pill tint alpha
suffix
add 6f879c81c09 fix(bullet): share one range tokenizer, assert the
down-arrow value
add a5d40e76013 chore(i18n): regenerate messages.pot for the new
color-picker strings
add 2b07783e478 fix(color-picker): address bito review findings on
range/comparison colors
add b572ff6efd0 fix(big-number): revert PopKPI arrow color assertion to
render-only check
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 (3392d3bd437)
\
N -- N -- N refs/heads/feat/color-picker-consolidation
(b572ff6efd0)
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/actions/setup-backend/action.yml | 5 +-
.github/workflows/python-nightly-canary.yml | 94 +
.github/workflows/superset-python-unittest.yml | 7 +-
RESOURCES/STANDARD_ROLES.md | 6 -
UPDATING.md | 149 ++
.../configuration/configuring-superset.mdx | 2 +-
docs/admin_docs/configuration/google-sheets.mdx | 49 +
docs/admin_docs/configuration/mcp-server.mdx | 31 +
docs/docs/using-superset/exploring-data.mdx | 8 +
docs/docs/using-superset/number-formatting.mdx | 16 +
docs/docs/using-superset/recently-archived.mdx | 101 +-
.../docs/using-superset/using-ai-with-superset.mdx | 6 +
docs/docs/using-superset/version-history.mdx | 72 +-
docs/docusaurus.config.ts | 1 -
docs/package.json | 10 +-
.../img/version-history/recently-archived.jpg | Bin 0 -> 23897 bytes
.../img/version-history/version-history-panel.jpg | Bin 0 -> 19792 bytes
.../version-history/version-history-preview.jpg | Bin 0 -> 64287 bytes
docs/static/resources/openapi.json | 4 +-
.../databases/supported/apache-doris.mdx | 8 +
.../version-6.1.0/databases/supported/mysql.mdx | 18 +
docs/yarn.lock | 33 +-
requirements/development.in | 11 +
requirements/development.txt | 7 +-
scripts/translations/babel_update.sh | 15 +-
superset-embedded-sdk/package-lock.json | 6 +-
superset-embedded-sdk/testrig/README.md | 89 +
superset-embedded-sdk/testrig/drive.mjs | 655 +++++
superset-embedded-sdk/testrig/embedded.html | 127 +
superset-embedded-sdk/testrig/host.html | 239 ++
superset-embedded-sdk/testrig/server.mjs | 199 ++
superset-frontend/cypress-base/package-lock.json | 12 +-
superset-frontend/package-lock.json | 243 +-
superset-frontend/package.json | 10 +-
.../packages/superset-core/package.json | 2 -
.../packages/superset-ui-core/package.json | 4 +-
.../Matrixify/MatrixifyGridGenerator.test.ts | 63 +
.../components/Matrixify/MatrixifyGridGenerator.ts | 34 +-
.../src/query/getClientErrorObject.ts | 29 +-
.../test/query/getClientErrorObject.test.ts | 66 +
.../components/dashboard/DashboardFilterBar.ts | 6 +-
.../tests/dashboard/clear-all-filters.spec.ts | 112 +
.../plugin-chart-echarts/src/Gantt/constants.ts | 3 +
.../src/Gantt/transformProps.ts | 35 +-
.../src/MixedTimeseries/transformProps.ts | 95 +-
.../src/Timeseries/transformProps.ts | 104 +-
.../src/Timeseries/transformers.ts | 6 +-
.../plugins/plugin-chart-echarts/src/constants.ts | 13 +
.../plugin-chart-echarts/src/utils/formatters.ts | 7 +
.../plugin-chart-echarts/src/utils/series.ts | 172 +-
.../test/Gantt/transformProps.test.ts | 213 +-
.../test/MixedTimeseries/transformProps.test.ts | 26 +
.../Bar/sparseSubDailyBarGeometry.test.ts | 505 ++++
.../test/Timeseries/transformProps.test.ts | 163 ++
.../test/utils/formatters.test.ts | 37 +
.../plugin-chart-echarts/test/utils/series.test.ts | 70 +
.../FilterableTable/exactDecimals.test.tsx | 92 +
.../src/components/FilterableTable/index.tsx | 41 +-
.../components/FilterableTable/sortResults.test.ts | 238 ++
.../src/components/FilterableTable/sortResults.ts | 180 ++
.../nativeFilters/FilterBar/FilterBar.test.tsx | 124 +-
.../nativeFilters/FilterBar/Vertical.tsx | 6 +
.../semanticViews/AddSemanticViewModal.test.tsx | 22 +
.../src/features/userInfo/UserInfoModal.test.tsx | 62 +-
.../src/features/userInfo/UserInfoModal.tsx | 26 +-
.../src/features/users/UserListModal.test.tsx | 178 ++
.../src/features/users/UserListModal.tsx | 108 +-
superset-frontend/src/features/users/utils.ts | 8 +-
superset-frontend/src/pages/Login/Login.test.tsx | 152 +-
superset-frontend/src/pages/Login/index.tsx | 45 +-
superset-frontend/src/types/bootstrapTypes.ts | 1 +
superset/commands/report/alert.py | 12 +-
superset/commands/sql_lab/estimate.py | 10 +-
superset/commands/sql_lab/export.py | 14 +
superset/commands/streaming_export/base.py | 11 +-
superset/common/query_context_processor.py | 1 +
superset/config.py | 5 +-
superset/daos/base.py | 7 +-
superset/dataframe.py | 38 +-
superset/db_engine_specs/databricks.py | 119 +-
superset/db_engine_specs/datafusion.py | 34 +-
superset/db_engine_specs/db2.py | 12 +-
superset/db_engine_specs/doris.py | 111 +-
superset/db_engine_specs/dynamodb.py | 8 +-
superset/db_engine_specs/elasticsearch.py | 63 +-
superset/db_engine_specs/exasol.py | 76 +
superset/db_engine_specs/gsheets.py | 127 +-
superset/db_engine_specs/mysql.py | 349 +++
superset/db_engine_specs/oracle.py | 52 +-
superset/exceptions.py | 18 +
superset/initialization/__init__.py | 2 +-
superset/mcp_service/app.py | 6 +
superset/mcp_service/auth.py | 35 +-
superset/mcp_service/caching.py | 28 +-
.../mcp_service/catalog}/__init__.py | 0
superset/mcp_service/catalog/schemas.py | 131 +
.../catalog/tool}/__init__.py | 6 +-
superset/mcp_service/catalog/tool/get_catalog.py | 443 ++++
superset/mcp_service/chart/chart_helpers.py | 163 +-
superset/mcp_service/chart/chart_utils.py | 128 +-
superset/mcp_service/chart/compile.py | 19 +-
superset/mcp_service/chart/plugin.py | 222 +-
superset/mcp_service/chart/plugins/big_number.py | 55 +-
superset/mcp_service/chart/plugins/bubble.py | 27 +-
superset/mcp_service/chart/plugins/gantt.py | 79 +-
superset/mcp_service/chart/plugins/gauge.py | 63 +-
superset/mcp_service/chart/plugins/handlebars.py | 4 +
superset/mcp_service/chart/plugins/histogram.py | 98 +-
.../mcp_service/chart/plugins/mixed_timeseries.py | 43 +
superset/mcp_service/chart/plugins/table.py | 1 +
superset/mcp_service/chart/plugins/treemap.py | 141 +-
superset/mcp_service/chart/plugins/waterfall.py | 35 +
superset/mcp_service/chart/preview_utils.py | 197 +-
superset/mcp_service/chart/query_result.py | 19 +-
superset/mcp_service/chart/registry.py | 49 +-
superset/mcp_service/chart/schemas.py | 82 +-
superset/mcp_service/chart/tool/get_chart_data.py | 29 +-
.../mcp_service/chart/tool/get_chart_preview.py | 128 +-
.../chart/tool/get_chart_type_schema.py | 4 +-
superset/mcp_service/chart/tool/update_chart.py | 65 +-
.../mcp_service/chart/tool/update_chart_preview.py | 48 +-
.../chart/validation/dataset_validator.py | 4 +-
superset/mcp_service/server.py | 48 +
superset/result_set.py | 6 +
superset/security/manager.py | 163 +-
superset/security/password_change.py | 63 +-
superset/sql/dialects/db2.py | 81 +-
superset/sql/execution/celery_task.py | 2 +-
superset/sql/execution/executor.py | 13 +
superset/sql/parse.py | 333 ++-
superset/sql_lab.py | 7 +-
superset/sqllab/api.py | 7 +
superset/subjects/utils.py | 40 +-
superset/translations/ar/LC_MESSAGES/messages.po | 150 +-
superset/translations/ca/LC_MESSAGES/messages.po | 175 +-
superset/translations/cs/LC_MESSAGES/messages.po | 163 +-
superset/translations/de/LC_MESSAGES/messages.po | 168 +-
superset/translations/en/LC_MESSAGES/messages.po | 137 +-
superset/translations/es/LC_MESSAGES/messages.po | 156 +-
superset/translations/fa/LC_MESSAGES/messages.po | 148 +-
superset/translations/fi/LC_MESSAGES/messages.po | 158 +-
superset/translations/fr/LC_MESSAGES/messages.po | 160 +-
superset/translations/it/LC_MESSAGES/messages.po | 183 +-
superset/translations/ja/LC_MESSAGES/messages.po | 143 +-
superset/translations/ko/LC_MESSAGES/messages.po | 147 +-
superset/translations/lv/LC_MESSAGES/messages.po | 160 +-
superset/translations/messages.pot | 2557 +++++---------------
superset/translations/mi/LC_MESSAGES/messages.po | 157 +-
superset/translations/nl/LC_MESSAGES/messages.po | 162 +-
superset/translations/pl/LC_MESSAGES/messages.po | 169 +-
superset/translations/pt/LC_MESSAGES/messages.po | 167 +-
.../translations/pt_BR/LC_MESSAGES/messages.po | 168 +-
superset/translations/ro/LC_MESSAGES/messages.po | 158 +-
superset/translations/ru/LC_MESSAGES/messages.po | 150 +-
superset/translations/sk/LC_MESSAGES/messages.po | 152 +-
superset/translations/sl/LC_MESSAGES/messages.po | 162 +-
superset/translations/sr/LC_MESSAGES/messages.po | 167 +-
.../translations/sr_Latn/LC_MESSAGES/messages.po | 170 +-
superset/translations/ta/LC_MESSAGES/messages.po | 173 +-
superset/translations/th/LC_MESSAGES/messages.po | 149 +-
superset/translations/tr/LC_MESSAGES/messages.po | 150 +-
superset/translations/uk/LC_MESSAGES/messages.po | 172 +-
superset/translations/zh/LC_MESSAGES/messages.po | 139 +-
.../translations/zh_TW/LC_MESSAGES/messages.po | 139 +-
superset/utils/csv.py | 10 +
superset/views/auth.py | 11 +-
superset/views/users/api.py | 7 +-
superset/views/users/schemas.py | 39 +-
superset/views/utils.py | 2 +-
.../charts/semantic_save_tests.py | 82 +-
tests/integration_tests/core_tests.py | 30 +-
tests/unit_tests/commands/report/alert_test.py | 37 +
tests/unit_tests/commands/sql_lab/export_test.py | 113 +
.../sql_lab/streaming_export_command_test.py | 74 +
tests/unit_tests/commands/sql_lab/test_estimate.py | 30 +
.../common/test_query_context_processor.py | 12 +
tests/unit_tests/dataframe_test.py | 83 +-
.../unit_tests/db_engine_specs/test_databricks.py | 272 ++-
.../unit_tests/db_engine_specs/test_datafusion.py | 32 +-
tests/unit_tests/db_engine_specs/test_db2.py | 52 +-
tests/unit_tests/db_engine_specs/test_doris.py | 227 +-
tests/unit_tests/db_engine_specs/test_dynamodb.py | 48 +-
.../db_engine_specs/test_elasticsearch.py | 185 +-
tests/unit_tests/db_engine_specs/test_exasol.py | 191 ++
tests/unit_tests/db_engine_specs/test_gsheets.py | 419 +++-
tests/unit_tests/db_engine_specs/test_mariadb.py | 83 +
tests/unit_tests/db_engine_specs/test_mysql.py | 741 ++++++
tests/unit_tests/db_engine_specs/test_oracle.py | 64 +-
.../unit_tests/mcp_service/catalog}/__init__.py | 0
.../mcp_service/catalog/tool}/__init__.py | 0
.../mcp_service/catalog/tool/test_get_catalog.py | 921 +++++++
.../mcp_service/chart/test_chart_helpers.py | 113 +
.../chart/test_chart_plugin_contract.py | 762 ++++++
.../chart/test_histogram_boxplot_charts.py | 62 +
.../mcp_service/chart/test_preview_utils.py | 66 +
.../unit_tests/mcp_service/chart/test_registry.py | 56 +-
.../mcp_service/chart/test_registry_filters.py | 9 +
.../mcp_service/chart/test_treemap_completeness.py | 76 +-
.../mcp_service/chart/tool/test_get_chart_data.py | 38 +
.../chart/tool/test_get_chart_preview.py | 37 +
.../chart/tool/test_get_chart_type_schema.py | 10 +
.../mcp_service/chart/tool/test_update_chart.py | 43 +-
.../mcp_service/test_chart_tool_inventory.py | 236 +-
tests/unit_tests/mcp_service/test_mcp_caching.py | 67 +-
.../mcp_service/test_mcp_tool_registration.py | 1 +
.../unit_tests/mcp_service/test_tool_inventory.py | 79 +-
.../mcp_service/test_tool_search_transform.py | 412 +++-
tests/unit_tests/result_set_test.py | 71 +
.../scripts/translations/babel_update_test.py | 355 +++
tests/unit_tests/security/manager_test.py | 291 ++-
tests/unit_tests/security/test_password_change.py | 106 +-
.../security/test_permission_instructions_link.py | 4 +-
tests/unit_tests/sql/dialects/db2_tests.py | 20 +
tests/unit_tests/sql/execution/test_celery_task.py | 2 +-
tests/unit_tests/sql/execution/test_executor.py | 51 +
tests/unit_tests/sql/parse_tests.py | 207 ++
tests/unit_tests/sql_lab_test.py | 41 +-
tests/unit_tests/sqllab/api_test.py | 45 +
tests/unit_tests/subjects/test_utils.py | 80 +
.../versioning/test_capture_gap_restore.py | 52 +-
.../unit_tests/versioning/test_runtime_capture.py | 7 +-
tests/unit_tests/views/test_auth_login.py | 77 +
tests/unit_tests/views/test_current_user_api.py | 103 +-
223 files changed, 20370 insertions(+), 3748 deletions(-)
create mode 100644 .github/workflows/python-nightly-canary.yml
create mode 100644 docs/admin_docs/configuration/google-sheets.mdx
create mode 100644 docs/static/img/version-history/recently-archived.jpg
create mode 100644 docs/static/img/version-history/version-history-panel.jpg
create mode 100644 docs/static/img/version-history/version-history-preview.jpg
create mode 100644 superset-embedded-sdk/testrig/README.md
create mode 100644 superset-embedded-sdk/testrig/drive.mjs
create mode 100644 superset-embedded-sdk/testrig/embedded.html
create mode 100644 superset-embedded-sdk/testrig/host.html
create mode 100644 superset-embedded-sdk/testrig/server.mjs
create mode 100644
superset-frontend/plugins/plugin-chart-echarts/test/Timeseries/Bar/sparseSubDailyBarGeometry.test.ts
create mode 100644
superset-frontend/src/components/FilterableTable/exactDecimals.test.tsx
create mode 100644
superset-frontend/src/components/FilterableTable/sortResults.test.ts
create mode 100644
superset-frontend/src/components/FilterableTable/sortResults.ts
create mode 100644 superset-frontend/src/features/users/UserListModal.test.tsx
copy {scripts => superset/mcp_service/catalog}/__init__.py (100%)
create mode 100644 superset/mcp_service/catalog/schemas.py
copy superset/{sql/execution => mcp_service/catalog/tool}/__init__.py (91%)
create mode 100644 superset/mcp_service/catalog/tool/get_catalog.py
create mode 100644 tests/unit_tests/commands/sql_lab/export_test.py
create mode 100644 tests/unit_tests/db_engine_specs/test_exasol.py
copy {scripts => tests/unit_tests/mcp_service/catalog}/__init__.py (100%)
copy {scripts => tests/unit_tests/mcp_service/catalog/tool}/__init__.py (100%)
create mode 100644
tests/unit_tests/mcp_service/catalog/tool/test_get_catalog.py
create mode 100644
tests/unit_tests/mcp_service/chart/test_chart_plugin_contract.py
create mode 100644 tests/unit_tests/scripts/translations/babel_update_test.py
create mode 100644 tests/unit_tests/views/test_auth_login.py