You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by as...@apache.org on 2026/10/23 13:58:41 UTC

(superset) branch alexandrusoare/feat/canvas-flexible-layout updated (2c5e7eb0665 -> e4f76b53268)

This is an automated email from the ASF dual-hosted git repository.

alexandrusoare pushed a change to branch alexandrusoare/feat/canvas-flexible-layout
in repository https://gitbox.apache.org/repos/asf/superset.git


    from 2c5e7eb0665 last fixes
     add f8b71c7c0ca feat(canvas): a placed widget takes the spot it lands on
     add be453124eef chore(canvas): open the Canvas and Widget Framework feature branch
     add 522629ebb83 feat: initial commit for widgets
     add 73ebe1e5f93 Merge remote-tracking branch 'origin/canvas' into msyavuz/feat/canvas
     add 60f132c74b7 feat(canvas): every non-structural widget is its own entity
     add c5c8a7080f3 Merge branch 'msyavuz/feat/canvas' of https://github.com/apache/superset into alexandrusoare/feat/canvas-flexible-layout
     add e4f76b53268 latest touches

No new revisions were added by this update.

Summary of changes:
 docs/static/feature-flags.json                     |   2 +-
 superset-core/src/superset_core/canvas/__init__.py |   4 +-
 superset-core/src/superset_core/canvas/base.py     |  40 +-
 .../src/superset_core/widgets/__init__.py          |   9 +-
 .../src/superset_core/widgets/behavior.py          |   3 +
 .../src/superset_core/{queries => widgets}/daos.py |  33 +-
 .../{semantic_layers => widgets}/models.py         |  56 +--
 .../packages/superset-core/src/canvas/index.ts     |   8 +-
 .../src/features/canvas/CanvasGrid.tsx             |  13 +-
 .../src/features/canvas/gridCases.json             | 498 +++++++++++++++++++++
 .../src/features/canvas/resolveGrid.test.ts        |  43 +-
 superset-frontend/src/features/canvas/types.ts     |  14 +-
 superset/canvas/api.py                             |  11 +-
 superset/canvas/definition/grid.py                 |  33 +-
 superset/canvas/definition/ops.py                  | 135 +++++-
 superset/canvas/definition/pending.py              | 109 +++++
 superset/canvas/definition/placements.py           |  13 +-
 superset/canvas/definition/registry.py             |  23 +-
 superset/canvas/definition/render.py               |  12 +-
 superset/canvas/definition/schemas.py              |  39 +-
 superset/canvas/definition/validation.py           |  25 +-
 superset/canvas/widgets.py                         |  79 ++++
 superset/commands/canvas/apply_ops.py              |  91 +++-
 superset/commands/canvas/draft.py                  |  38 +-
 superset/commands/canvas/exceptions.py             |  30 +-
 superset/commands/canvas/placement_data.py         |   9 +-
 {scripts => superset/commands/widget}/__init__.py  |   0
 .../{annotation_layer => widget}/create.py         |  31 +-
 .../commands/{dataset/metrics => widget}/delete.py |  34 +-
 superset/commands/widget/exceptions.py             |  68 +++
 superset/commands/widget/update.py                 | 100 +++++
 superset/config.py                                 |   6 +-
 superset/core/api/core_api_injection.py            |  12 +-
 superset/daos/{css.py => widget.py}                |   7 +-
 superset/initialization/__init__.py                |   4 +-
 superset/mcp_service/app.py                        |  10 +
 superset/mcp_service/canvas/schemas.py             |  10 +
 .../canvas/tool/apply_canvas_draft_ops.py          |  27 +-
 .../mcp_service/canvas/tool/canvas_draft_common.py |   2 +
 superset/mcp_service/canvas/tool/get_canvas.py     |  11 +-
 superset/mcp_service/canvas/tool/preview_widget.py |  14 +-
 superset/mcp_service/dashboard_scope.py            |   2 +
 .../mcp_service/widget}/__init__.py                |   0
 superset/mcp_service/{tag => widget}/schemas.py    | 100 +++--
 .../{catalog => widget}/tool/__init__.py           |   6 +-
 .../tool/get_widget_info.py}                       |  68 ++-
 superset/mcp_service/widget/tool/list_widgets.py   | 144 ++++++
 .../mcp_service/widgets/tool/list_widget_types.py  |   4 +-
 superset/mcp_service/worker.py                     |   2 +
 ...0-03_12-00_06373bc38605_create_widgets_table.py | 113 +++++
 ...2-00_e18dda53ce53_canvas_widgets_as_entities.py | 144 ++++++
 superset/subjects/models.py                        |  38 ++
 superset/widgets/api.py                            | 491 +++++++++++---------
 superset/widgets/builtin.py                        |  14 +-
 superset/widgets/filters.py                        |  88 ++++
 superset/widgets/models.py                         |  65 +++
 superset/widgets/schemas.py                        | 107 +++++
 superset/widgets/{api.py => types_api.py}          |   0
 tests/unit_tests/canvas/conftest.py                |   3 +-
 tests/unit_tests/canvas/draft_test.py              |  63 ++-
 tests/unit_tests/canvas/fixtures.py                |  56 ++-
 tests/unit_tests/canvas/grid_test.py               |  78 +++-
 tests/unit_tests/canvas/ops_test.py                | 210 ++++++++-
 tests/unit_tests/canvas/placement_data_test.py     |   6 +-
 tests/unit_tests/canvas/validation_test.py         |  31 +-
 tests/unit_tests/canvas/widget_entities_test.py    | 179 ++++++++
 .../mcp_service/canvas/tool/test_canvas_tools.py   |  26 ++
 .../mcp_service/native_tool_inventory.json         |  80 +++-
 .../mcp_service/test_mcp_tool_registration.py      |   8 +
 .../unit_tests/mcp_service/test_tool_inventory.py  |   2 +
 .../unit_tests/mcp_service/widget}/__init__.py     |   0
 .../unit_tests/mcp_service/widget/conftest.py      |   7 +-
 .../mcp_service/widget/tool}/__init__.py           |   0
 .../mcp_service/widget/tool/test_widget_tools.py   | 127 ++++++
 .../migrations/test_canvas_widgets_as_entities.py  |  88 ++++
 .../migrations/test_create_widgets_table.py        | 108 +++++
 tests/unit_tests/widgets/api_test.py               | 179 ++++++++
 tests/unit_tests/widgets/commands_test.py          | 169 +++++++
 tests/unit_tests/widgets/conftest.py               |   6 +
 tests/unit_tests/widgets/filters_test.py           |  86 ++++
 tests/unit_tests/widgets/fixtures.py               |  91 ++++
 81 files changed, 4073 insertions(+), 622 deletions(-)
 copy superset-core/src/superset_core/{queries => widgets}/daos.py (61%)
 copy superset-core/src/superset_core/{semantic_layers => widgets}/models.py (51%)
 create mode 100644 superset/canvas/definition/pending.py
 create mode 100644 superset/canvas/widgets.py
 copy {scripts => superset/commands/widget}/__init__.py (100%)
 copy superset/commands/{annotation_layer => widget}/create.py (59%)
 copy superset/commands/{dataset/metrics => widget}/delete.py (60%)
 create mode 100644 superset/commands/widget/exceptions.py
 create mode 100644 superset/commands/widget/update.py
 copy superset/daos/{css.py => widget.py} (83%)
 copy {scripts => superset/mcp_service/widget}/__init__.py (100%)
 copy superset/mcp_service/{tag => widget}/schemas.py (56%)
 copy superset/mcp_service/{catalog => widget}/tool/__init__.py (86%)
 copy superset/mcp_service/{theme/tool/get_theme_info.py => widget/tool/get_widget_info.py} (57%)
 create mode 100644 superset/mcp_service/widget/tool/list_widgets.py
 create mode 100644 superset/migrations/versions/2026-10-03_12-00_06373bc38605_create_widgets_table.py
 create mode 100644 superset/migrations/versions/2026-10-23_12-00_e18dda53ce53_canvas_widgets_as_entities.py
 create mode 100644 superset/widgets/filters.py
 create mode 100644 superset/widgets/models.py
 create mode 100644 superset/widgets/schemas.py
 copy superset/widgets/{api.py => types_api.py} (100%)
 create mode 100644 tests/unit_tests/canvas/widget_entities_test.py
 copy {scripts => tests/unit_tests/mcp_service/widget}/__init__.py (100%)
 copy superset/openapi/__init__.py => tests/unit_tests/mcp_service/widget/conftest.py (88%)
 copy {scripts => tests/unit_tests/mcp_service/widget/tool}/__init__.py (100%)
 create mode 100644 tests/unit_tests/mcp_service/widget/tool/test_widget_tools.py
 create mode 100644 tests/unit_tests/migrations/test_canvas_widgets_as_entities.py
 create mode 100644 tests/unit_tests/migrations/test_create_widgets_table.py
 create mode 100644 tests/unit_tests/widgets/api_test.py
 create mode 100644 tests/unit_tests/widgets/commands_test.py
 create mode 100644 tests/unit_tests/widgets/filters_test.py
 create mode 100644 tests/unit_tests/widgets/fixtures.py