Routine rebase; the only conflict was package-lock.json, regenerated
via npm install against the already-cleanly-merged package.json.
Everything else (package.json, plugin-chart-partition's package.json,
superset/views/base.py, superset/views/core.py,
tests/integration_tests/security_tests.py) merged automatically.
Addresses @sadpandajoe's follow-up review comment on #41714: an
original query_context with "queries": [] backs up as a falsy-but-
present empty list, not None. downgrade_slice's truthiness check
(`if queries_bak:`) treated that the same as "no context was ever
stored" and set query_context to None, discarding the slice's
original datasource and form_data instead of restoring it.
Also fixes the same ambiguity at the source: QUERIES_BAK_FIELD_NAME
defaulted to {} rather than None when absent from form_data, which
could be misread as a real (if malformed) backup rather than "key not
present". Changed to the natural None default so "no backup" and "an
empty list backup" stay distinguishable, and dedented the
query_context assignment that was incorrectly nested inside the
"form_data" in query_context check (a context missing "form_data"
would restore params/viz_type but silently leave query_context at its
upgraded value).
Also updates the stale UPDATING.md note for this PR: the percent-
re-basing and deck_multi autozoom limitations it warned about were
both resolved earlier in this branch.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
- Enforce DECK_MULTI_MAX_SLICES client-side before fanning out
per-layer metadata/data requests, mirroring the cap the removed
viz.py pipeline used to enforce server-side.
- Accumulate autozoom features by slice_id (bucketed by viz_type)
instead of overwriting by viz_type, so two layers sharing a
viz_type no longer clobber each other's points.
- ChartClient.loadQueryData now posts the built query context at
the top level of the request body (as /api/v1/chart/data expects)
instead of nesting it under a query_context key, and unwraps the
{result: [...]} response shape correctly.
- migrate_viz downgrade no longer discards a hand-edited
query_context that lacks a "queries" key; the whole context is
backed up and restored verbatim in that case.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The only real conflict was an import-list collision in
Timeseries/transformProps.ts (this branch's DTTM_ALIAS next to master's
DataRecordValue); kept both. Country-map's regenerated GeoJSON files and
notebook edits from master merged cleanly via rename detection onto this
branch's already-renamed plugin-chart-country-map/ package, with no
overlapping edits to reconcile.
Resolves a conflict in ExploreChartPanel/index.tsx between master's new
standalone-download-control feature and this branch's earlier removal
of the raw core Alert import in favor of the ExploreAlert component:
kept master's URL_PARAMS/getUrlParam/StandaloneDownloadControl wiring,
dropped the reintroduced Alert import since it's unused on this branch.
Resolves conflicts between the async-job-cancellation feature added on
master and this branch's removal of the legacy explore_json pipeline:
kept the cancellation feature (_register_cancellable_job, cancel_job,
is_job_cancelled, the task_id/SIGUSR1 revoke wiring, and its tests) and
dropped the parts of it that only applied to submit_explore_json_job /
load_explore_json_into_cache, which this branch already deleted. Also
merged master's get_request_json_body() hardening in views/utils.py
and its abort-signal wiring in chartAction.ts (adapted to this
branch's already-simplified, useLegacyApi-free handleChartDataResponse
signature).
This test module imported `superset.viz`, which this PR removes, breaking
unit-test collection. The jinja-preservation regression it guarded is
already covered by
core_tests.py::test_split_adhoc_filters_preserves_jinja_templates against
the new (non-viz.py) code path, so the file is redundant.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>