This is an automated email from the ASF dual-hosted git repository.
hainenber pushed a change to branch sec/resolve-gha-vulns
in repository https://gitbox.apache.org/repos/asf/superset.git
from 4073c48d401 Merge branch 'master' into sec/resolve-gha-vulns
add 53e2793bc3c fix: coerce out-of-bounds nanosecond timestamps to NaT
instead of raising (#40127)
add f614863ed78 feat(mcp): add list and get tools for annotation layers
and annotations (#40342)
add a69bbcb044c feat(mcp): add list and get tools for saved queries and
query history (#40346)
add 8d8eeb35053 feat(mcp): add list_tags and get_tag_info MCP tools
(#40349)
add b8ea4448d69 feat(ci): perform static security analysis for GHA
workflows (#40510)
add 40de44f6de6 feat(mcp): add list and get tools for action log and tasks
(#40344)
add 43c3c06035f chore(deps): bump vm2 from 3.11.3 to 3.11.5 in
/superset-frontend (#40529)
add 62b4ee3d9e0 feat(mcp): add list and get tools for users and roles
(#40345)
add 16b56873b02 fix(ci): restrict workflow_run jobs to trusted origins and
add zizmor audit (#40533)
add f0838353a5a feat(i18n): add Czech (cs) locale support for dates
(#40241)
add c9136af8b6d fix(ci): trigger python dep check when pyproject.toml
changes (#39792)
add d350792d438 feat(mcp): add list and get tools for CSS templates and
themes (#40343)
add 44a8d9d4695 chore(deps): pin lodash, lodash-es, and yaml in docs to
patched releases (#40535)
add 8c6271e9ff8 chore(deps): bump urllib3, Mako, and python-multipart for
high-severity CVEs (#40534)
add f165c3fa786 fix(ci): grant security-events write to GHA validator
workflow (#40539)
add 7f54b0b13d0 test(database): regression test for sqla engine creation
(#27897) (#40237)
add 838ee27c299 chore(deps): bump protobuf to 5.29.6 and
google-cloud-bigquery-storage to 2.26.0 (#40537)
add fa4e571db5d chore(deps): force uuid 11.1.1 in docs (#40542)
add f4787a4f252 chore(deps): bump ws to 8.20.1 in docs (#40538)
add 2e7bec3646c chore(ci): harden GitHub Actions workflows per static
analysis (#40545)
add 8591387316f Merge branch 'master' into sec/resolve-gha-vulns
No new revisions were added by this update.
Summary of changes:
.github/actions/setup-backend/action.yml | 2 +-
.github/actions/setup-supersetbot/action.yml | 1 +
.github/dependabot.yml | 60 +--
.github/workflows/check_db_migration_confict.yml | 2 +
.github/workflows/claude.yml | 4 +
.github/workflows/codeql-analysis.yml | 2 +
.github/workflows/dependency-review.yml | 4 +
.github/workflows/embedded-sdk-release.yml | 2 +
.github/workflows/embedded-sdk-test.yml | 2 +
.github/workflows/github-action-validator.yml | 17 +-
.github/workflows/release.yml | 6 +
.github/workflows/superset-docs-deploy.yml | 11 +-
.github/workflows/superset-docs-verify.yml | 8 +-
.github/workflows/superset-extensions-cli.yml | 2 +-
.github/workflows/superset-frontend.yml | 5 +-
.../workflows/superset-python-integrationtest.yml | 6 +-
.github/workflows/superset-python-presto-hive.yml | 4 +-
.github/workflows/superset-python-unittest.yml | 2 +-
.github/workflows/tag-release.yml | 7 +
.github/workflows/tech-debt.yml | 2 +
.github/workflows/welcome-new-users.yml | 1 -
.pre-commit-config.yaml | 11 +
Dockerfile | 2 +-
docs/package.json | 6 +-
docs/yarn.lock | 41 +-
requirements/base.txt | 4 +-
requirements/development.txt | 11 +-
scripts/change_detector.py | 3 +-
superset-frontend/package-lock.json | 6 +-
superset-frontend/src/hooks/useLocale.ts | 2 +
superset/commands/dataset/importers/v1/utils.py | 39 +-
superset/daos/base.py | 3 +
superset/daos/{security.py => role.py} | 11 +-
.../mcp_service/action_log}/__init__.py | 0
superset/mcp_service/action_log/schemas.py | 302 +++++++++++
.../{database => action_log}/tool/__init__.py | 8 +-
.../action_log/tool/get_action_log_info.py | 97 ++++
.../action_log/tool/list_action_logs.py | 152 ++++++
.../mcp_service/annotation_layer}/__init__.py | 0
superset/mcp_service/annotation_layer/schemas.py | 367 ++++++++++++++
.../{explore => annotation_layer}/tool/__init__.py | 17 +-
.../tool/get_annotation_layer_info.py | 97 ++++
.../tool/get_layer_annotation_info.py | 130 +++++
.../tool/list_annotation_layers.py | 123 +++++
.../tool/list_layer_annotations.py | 144 ++++++
superset/mcp_service/app.py | 130 ++++-
superset/mcp_service/chart/schemas.py | 17 +-
superset/mcp_service/common/schema_discovery.py | 79 +++
superset/mcp_service/constants.py | 4 +-
.../mcp_service/css_template}/__init__.py | 0
superset/mcp_service/css_template/schemas.py | 280 ++++++++++
.../{database => css_template}/tool/__init__.py | 8 +-
.../css_template/tool/get_css_template_info.py | 108 ++++
.../css_template/tool/list_css_templates.py | 150 ++++++
superset/mcp_service/dashboard/schemas.py | 13 +-
.../dashboard/tool/generate_dashboard.py | 6 +-
superset/mcp_service/database/schemas.py | 14 +-
superset/mcp_service/dataset/schemas.py | 13 +-
superset/mcp_service/mcp_core.py | 7 +
.../mcp_service/query}/__init__.py | 0
superset/mcp_service/query/schemas.py | 293 +++++++++++
.../query/tool}/__init__.py | 7 +-
superset/mcp_service/query/tool/get_query_info.py | 122 +++++
superset/mcp_service/query/tool/list_queries.py | 156 ++++++
.../mcp_service/role}/__init__.py | 0
superset/mcp_service/role/schemas.py | 264 ++++++++++
.../role/tool}/__init__.py | 7 +-
superset/mcp_service/role/tool/get_role_info.py | 97 ++++
superset/mcp_service/role/tool/list_roles.py | 135 +++++
.../mcp_service/saved_query}/__init__.py | 0
superset/mcp_service/saved_query/schemas.py | 269 ++++++++++
.../{database => saved_query}/tool/__init__.py | 8 +-
.../saved_query/tool/get_saved_query_info.py | 129 +++++
.../saved_query/tool/list_saved_queries.py | 158 ++++++
superset/mcp_service/system/tool/get_schema.py | 92 +++-
.../mcp_service/tag}/__init__.py | 0
superset/mcp_service/tag/schemas.py | 251 +++++++++
.../execution => mcp_service/tag/tool}/__init__.py | 8 +-
superset/mcp_service/tag/tool/get_tag_info.py | 108 ++++
superset/mcp_service/tag/tool/list_tags.py | 157 ++++++
.../mcp_service/task}/__init__.py | 0
superset/mcp_service/task/schemas.py | 259 ++++++++++
.../task/tool}/__init__.py | 7 +-
superset/mcp_service/task/tool/get_task_info.py | 107 ++++
superset/mcp_service/task/tool/list_tasks.py | 140 +++++
.../mcp_service/theme}/__init__.py | 0
superset/mcp_service/theme/schemas.py | 305 +++++++++++
.../theme/tool}/__init__.py | 7 +-
superset/mcp_service/theme/tool/get_theme_info.py | 116 +++++
superset/mcp_service/theme/tool/list_themes.py | 147 ++++++
.../mcp_service/user}/__init__.py | 0
superset/mcp_service/user/schemas.py | 302 +++++++++++
.../user/tool}/__init__.py | 7 +-
superset/mcp_service/user/tool/get_user_info.py | 107 ++++
superset/mcp_service/user/tool/list_users.py | 151 ++++++
superset/mcp_service/utils/response_utils.py | 11 +
superset/mcp_service/utils/sanitization.py | 12 +-
superset/models/core.py | 71 ++-
superset/result_set.py | 4 +-
.../unit_tests/commands/importers/v1/utils_test.py | 119 +++++
tests/unit_tests/dao/base_dao_test.py | 7 +
.../unit_tests/mcp_service/action_log}/__init__.py | 0
.../mcp_service/action_log/tool}/__init__.py | 0
.../action_log/tool/test_action_log_tools.py | 401 +++++++++++++++
.../mcp_service/annotation_layer}/__init__.py | 0
.../mcp_service/annotation_layer/tool}/__init__.py | 0
.../tool/test_annotation_layer_tools.py | 562 +++++++++++++++++++++
.../mcp_service/css_template}/__init__.py | 0
.../mcp_service/css_template/tool}/__init__.py | 0
.../css_template/tool/test_css_template_tools.py | 280 ++++++++++
.../unit_tests/mcp_service/query}/__init__.py | 0
.../unit_tests/mcp_service/query/tool}/__init__.py | 0
.../mcp_service/query/tool/test_query_tools.py | 328 ++++++++++++
.../unit_tests/mcp_service/role}/__init__.py | 0
.../unit_tests/mcp_service/role/tool}/__init__.py | 0
.../mcp_service/role/tool/test_role_tools.py | 336 ++++++++++++
.../mcp_service/saved_query}/__init__.py | 0
.../mcp_service/saved_query/tool}/__init__.py | 0
.../saved_query/tool/test_saved_query_tools.py | 337 ++++++++++++
.../mcp_service/system/tool/test_get_schema.py | 157 ++++++
.../unit_tests/mcp_service/tag}/__init__.py | 0
.../unit_tests/mcp_service/tag/tool}/__init__.py | 0
.../mcp_service/tag/tool/test_tag_tools.py | 268 ++++++++++
.../unit_tests/mcp_service/task}/__init__.py | 0
.../unit_tests/mcp_service/task/tool}/__init__.py | 0
.../mcp_service/task/tool/test_task_tools.py | 284 +++++++++++
.../mcp_service/test_mcp_tool_registration.py | 138 ++++-
.../unit_tests/mcp_service/theme}/__init__.py | 0
.../unit_tests/mcp_service/theme/tool}/__init__.py | 0
.../mcp_service/theme/tool/test_theme_tools.py | 267 ++++++++++
.../unit_tests/mcp_service/user}/__init__.py | 0
.../unit_tests/mcp_service/user/tool}/__init__.py | 0
.../mcp_service/user/tool/test_user_tools.py | 449 ++++++++++++++++
tests/unit_tests/models/core_test.py | 94 ++++
tests/unit_tests/result_set_test.py | 20 +
135 files changed, 10415 insertions(+), 201 deletions(-)
copy superset/daos/{security.py => role.py} (78%)
copy {superset-core/src/superset_core/common =>
superset/mcp_service/action_log}/__init__.py (100%)
create mode 100644 superset/mcp_service/action_log/schemas.py
copy superset/mcp_service/{database => action_log}/tool/__init__.py (84%)
create mode 100644 superset/mcp_service/action_log/tool/get_action_log_info.py
create mode 100644 superset/mcp_service/action_log/tool/list_action_logs.py
copy {superset-core/src/superset_core/common =>
superset/mcp_service/annotation_layer}/__init__.py (100%)
create mode 100644 superset/mcp_service/annotation_layer/schemas.py
copy superset/mcp_service/{explore => annotation_layer}/tool/__init__.py (68%)
create mode 100644
superset/mcp_service/annotation_layer/tool/get_annotation_layer_info.py
create mode 100644
superset/mcp_service/annotation_layer/tool/get_layer_annotation_info.py
create mode 100644
superset/mcp_service/annotation_layer/tool/list_annotation_layers.py
create mode 100644
superset/mcp_service/annotation_layer/tool/list_layer_annotations.py
copy {superset-core/src/superset_core/common =>
superset/mcp_service/css_template}/__init__.py (100%)
create mode 100644 superset/mcp_service/css_template/schemas.py
copy superset/mcp_service/{database => css_template}/tool/__init__.py (83%)
create mode 100644
superset/mcp_service/css_template/tool/get_css_template_info.py
create mode 100644 superset/mcp_service/css_template/tool/list_css_templates.py
copy {superset-core/src/superset_core/common =>
superset/mcp_service/query}/__init__.py (100%)
create mode 100644 superset/mcp_service/query/schemas.py
copy superset/{models/sql_types => mcp_service/query/tool}/__init__.py (86%)
create mode 100644 superset/mcp_service/query/tool/get_query_info.py
create mode 100644 superset/mcp_service/query/tool/list_queries.py
copy {superset-core/src/superset_core/common =>
superset/mcp_service/role}/__init__.py (100%)
create mode 100644 superset/mcp_service/role/schemas.py
copy superset/{models/sql_types => mcp_service/role/tool}/__init__.py (86%)
create mode 100644 superset/mcp_service/role/tool/get_role_info.py
create mode 100644 superset/mcp_service/role/tool/list_roles.py
copy {superset-core/src/superset_core/common =>
superset/mcp_service/saved_query}/__init__.py (100%)
create mode 100644 superset/mcp_service/saved_query/schemas.py
copy superset/mcp_service/{database => saved_query}/tool/__init__.py (83%)
create mode 100644
superset/mcp_service/saved_query/tool/get_saved_query_info.py
create mode 100644 superset/mcp_service/saved_query/tool/list_saved_queries.py
copy {superset-core/src/superset_core/common =>
superset/mcp_service/tag}/__init__.py (100%)
create mode 100644 superset/mcp_service/tag/schemas.py
copy superset/{sql/execution => mcp_service/tag/tool}/__init__.py (86%)
create mode 100644 superset/mcp_service/tag/tool/get_tag_info.py
create mode 100644 superset/mcp_service/tag/tool/list_tags.py
copy {superset-core/src/superset_core/common =>
superset/mcp_service/task}/__init__.py (100%)
create mode 100644 superset/mcp_service/task/schemas.py
copy superset/{models/sql_types => mcp_service/task/tool}/__init__.py (86%)
create mode 100644 superset/mcp_service/task/tool/get_task_info.py
create mode 100644 superset/mcp_service/task/tool/list_tasks.py
copy {superset-core/src/superset_core/common =>
superset/mcp_service/theme}/__init__.py (100%)
create mode 100644 superset/mcp_service/theme/schemas.py
copy superset/{models/sql_types => mcp_service/theme/tool}/__init__.py (86%)
create mode 100644 superset/mcp_service/theme/tool/get_theme_info.py
create mode 100644 superset/mcp_service/theme/tool/list_themes.py
copy {superset-core/src/superset_core/common =>
superset/mcp_service/user}/__init__.py (100%)
create mode 100644 superset/mcp_service/user/schemas.py
copy superset/{models/sql_types => mcp_service/user/tool}/__init__.py (86%)
create mode 100644 superset/mcp_service/user/tool/get_user_info.py
create mode 100644 superset/mcp_service/user/tool/list_users.py
create mode 100644 tests/unit_tests/commands/importers/v1/utils_test.py
copy {superset-core/src/superset_core/common =>
tests/unit_tests/mcp_service/action_log}/__init__.py (100%)
copy {superset-core/src/superset_core/common =>
tests/unit_tests/mcp_service/action_log/tool}/__init__.py (100%)
create mode 100644
tests/unit_tests/mcp_service/action_log/tool/test_action_log_tools.py
copy {superset-core/src/superset_core/common =>
tests/unit_tests/mcp_service/annotation_layer}/__init__.py (100%)
copy {superset-core/src/superset_core/common =>
tests/unit_tests/mcp_service/annotation_layer/tool}/__init__.py (100%)
create mode 100644
tests/unit_tests/mcp_service/annotation_layer/tool/test_annotation_layer_tools.py
copy {superset-core/src/superset_core/common =>
tests/unit_tests/mcp_service/css_template}/__init__.py (100%)
copy {superset-core/src/superset_core/common =>
tests/unit_tests/mcp_service/css_template/tool}/__init__.py (100%)
create mode 100644
tests/unit_tests/mcp_service/css_template/tool/test_css_template_tools.py
copy {superset-core/src/superset_core/common =>
tests/unit_tests/mcp_service/query}/__init__.py (100%)
copy {superset-core/src/superset_core/common =>
tests/unit_tests/mcp_service/query/tool}/__init__.py (100%)
create mode 100644 tests/unit_tests/mcp_service/query/tool/test_query_tools.py
copy {superset-core/src/superset_core/common =>
tests/unit_tests/mcp_service/role}/__init__.py (100%)
copy {superset-core/src/superset_core/common =>
tests/unit_tests/mcp_service/role/tool}/__init__.py (100%)
create mode 100644 tests/unit_tests/mcp_service/role/tool/test_role_tools.py
copy {superset-core/src/superset_core/common =>
tests/unit_tests/mcp_service/saved_query}/__init__.py (100%)
copy {superset-core/src/superset_core/common =>
tests/unit_tests/mcp_service/saved_query/tool}/__init__.py (100%)
create mode 100644
tests/unit_tests/mcp_service/saved_query/tool/test_saved_query_tools.py
copy {superset-core/src/superset_core/common =>
tests/unit_tests/mcp_service/tag}/__init__.py (100%)
copy {superset-core/src/superset_core/common =>
tests/unit_tests/mcp_service/tag/tool}/__init__.py (100%)
create mode 100644 tests/unit_tests/mcp_service/tag/tool/test_tag_tools.py
copy {superset-core/src/superset_core/common =>
tests/unit_tests/mcp_service/task}/__init__.py (100%)
copy {superset-core/src/superset_core/common =>
tests/unit_tests/mcp_service/task/tool}/__init__.py (100%)
create mode 100644 tests/unit_tests/mcp_service/task/tool/test_task_tools.py
copy {superset-core/src/superset_core/common =>
tests/unit_tests/mcp_service/theme}/__init__.py (100%)
copy {superset-core/src/superset_core/common =>
tests/unit_tests/mcp_service/theme/tool}/__init__.py (100%)
create mode 100644 tests/unit_tests/mcp_service/theme/tool/test_theme_tools.py
copy {superset-core/src/superset_core/common =>
tests/unit_tests/mcp_service/user}/__init__.py (100%)
copy {superset-core/src/superset_core/common =>
tests/unit_tests/mcp_service/user/tool}/__init__.py (100%)
create mode 100644 tests/unit_tests/mcp_service/user/tool/test_user_tools.py