This is an automated email from the ASF dual-hosted git repository.
rusackas pushed a commit to branch docs/federate-contributing-links
in repository https://gitbox.apache.org/repos/asf/superset.git
The following commit(s) were added to
refs/heads/docs/federate-contributing-links by this push:
new 278dd5b9dd docs: federate FEATURE_FLAGS.md into dynamic docs page
278dd5b9dd is described below
commit 278dd5b9dd573ae9b3153de386eec58b78a9cb7b
Author: Evan Rusackas <[email protected]>
AuthorDate: Thu Dec 18 17:11:27 2025 -0800
docs: federate FEATURE_FLAGS.md into dynamic docs page
- Annotate feature flags in config.py with @lifecycle, @docs, @category
- Add scripts/extract_feature_flags.py to parse annotations to JSON
- Create docs/docs/configuration/feature-flags.mdx that renders the JSON
- Delete RESOURCES/FEATURE_FLAGS.md
- Update all links to point to new docs page
The feature flags documentation is now auto-generated from the source
of truth in config.py, ensuring docs stay in sync with code.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <[email protected]>
---
README.md | 2 +-
RESOURCES/FEATURE_FLAGS.md | 103 ------
.../contributing/development-setup.md | 2 +-
docs/docs/configuration/configuring-superset.mdx | 2 +-
docs/docs/configuration/feature-flags.mdx | 107 ++++++
docs/docs/configuration/networking-settings.mdx | 2 +-
docs/docs/contributing/development.mdx | 2 +-
docs/static/feature-flags.json | 373 +++++++++++++++++++++
.../configuration/configuring-superset.mdx | 2 +-
.../configuration/networking-settings.mdx | 2 +-
.../version-6.0.0/contributing/development.mdx | 2 +-
docs/versioned_docs/version-6.0.0/intro.md | 2 +-
scripts/extract_feature_flags.py | 194 +++++++++++
superset/config.py | 360 +++++++++++++-------
14 files changed, 924 insertions(+), 231 deletions(-)
diff --git a/README.md b/README.md
index 455b764eae..1930ae85cf 100644
--- a/README.md
+++ b/README.md
@@ -172,7 +172,7 @@ how to set up a development environment.
## Resources
- [Superset "In the Wild"](https://superset.apache.org/inTheWild) - see who's
using Superset, and [add your
organization](https://github.com/apache/superset/edit/master/RESOURCES/INTHEWILD.yaml)
to the list!
-- [Feature
Flags](https://github.com/apache/superset/blob/master/RESOURCES/FEATURE_FLAGS.md)
- the status of Superset's Feature Flags.
+- [Feature
Flags](https://superset.apache.org/docs/configuration/feature-flags) - the
status of Superset's Feature Flags.
- [Standard
Roles](https://github.com/apache/superset/blob/master/RESOURCES/STANDARD_ROLES.md)
- How RBAC permissions map to roles.
- [Superset Wiki](https://github.com/apache/superset/wiki) - Tons of
additional community resources: best practices, community content and other
information.
- [Superset SIPs](https://github.com/orgs/apache/projects/170) - The status of
Superset's SIPs (Superset Improvement Proposals) for both consensus and
implementation status.
diff --git a/RESOURCES/FEATURE_FLAGS.md b/RESOURCES/FEATURE_FLAGS.md
deleted file mode 100644
index 32e291b083..0000000000
--- a/RESOURCES/FEATURE_FLAGS.md
+++ /dev/null
@@ -1,103 +0,0 @@
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied. See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-
-# Superset Feature Flags
-
-This is a list of the current Superset optional features. See config.py for
default values. These features can be turned on/off by setting your preferred
values in superset_config.py to True/False respectively
-
-## In Development
-
-These features are considered **unfinished** and should only be used on
development environments.
-
-[//]: # "PLEASE KEEP THE LIST SORTED ALPHABETICALLY"
-
-- ALERT_REPORT_TABS
-- DATE_RANGE_TIMESHIFTS_ENABLED
-- ENABLE_ADVANCED_DATA_TYPES
-- PRESTO_EXPAND_DATA
-- SHARE_QUERIES_VIA_KV_STORE
-- TAGGING_SYSTEM
-- CHART_PLUGINS_EXPERIMENTAL
-
-## In Testing
-
-These features are **finished** but currently being tested. They are usable,
but may still contain some bugs.
-
-[//]: # "PLEASE KEEP THE LIST SORTED ALPHABETICALLY"
-
-- ALERT_REPORTS:
[(docs)](https://superset.apache.org/docs/configuration/alerts-reports)
-- ALLOW_FULL_CSV_EXPORT
-- CACHE_IMPERSONATION
-- CONFIRM_DASHBOARD_DIFF
-- DYNAMIC_PLUGINS
-- DATE_FORMAT_IN_EMAIL_SUBJECT:
[(docs)](https://superset.apache.org/docs/configuration/alerts-reports#commons)
-- ENABLE_SUPERSET_META_DB:
[(docs)](https://superset.apache.org/docs/configuration/databases/#querying-across-databases)
-- ESTIMATE_QUERY_COST
-- GLOBAL_ASYNC_QUERIES
[(docs)](https://superset.apache.org/docs/contributing/misc#async-chart-queries)
-- IMPERSONATE_WITH_EMAIL_PREFIX
-- PLAYWRIGHT_REPORTS_AND_THUMBNAILS
-- RLS_IN_SQLLAB
-- SSH_TUNNELING
[(docs)](https://superset.apache.org/docs/configuration/setup-ssh-tunneling)
-- USE_ANALAGOUS_COLORS
-
-## Stable
-
-These features flags are **safe for production**. They have been tested and
will be supported for the at least the current major version cycle.
-
-[//]: # "PLEASE KEEP THESE LISTS SORTED ALPHABETICALLY"
-
-### Flags on the path to feature launch and flag deprecation/removal
-
-- DASHBOARD_VIRTUALIZATION
-
-### Flags retained for runtime configuration
-
-Currently some of our feature flags act as dynamic configurations that can
change
-on the fly. This acts in contradiction with the typical ephemeral feature flag
use case,
-where the flag is used to mature a feature, and eventually deprecated once the
feature is
-solid. Eventually we'll likely refactor these under a more formal "dynamic
configurations" managed
-independently. This new framework will also allow for non-boolean
configurations.
-
-- ALERTS_ATTACH_REPORTS
-- ALLOW_ADHOC_SUBQUERY
-- DASHBOARD_RBAC
[(docs)](https://superset.apache.org/docs/using-superset/creating-your-first-dashboard#manage-access-to-dashboards)
-- DATAPANEL_CLOSED_BY_DEFAULT
-- DRILL_BY
-- DRUID_JOINS
-- EMBEDDABLE_CHARTS
-- EMBEDDED_SUPERSET
-- ENABLE_TEMPLATE_PROCESSING
-- ESCAPE_MARKDOWN_HTML
-- LISTVIEWS_DEFAULT_CARD_VIEW
-- SCHEDULED_QUERIES
[(docs)](https://superset.apache.org/docs/configuration/alerts-reports)
-- SLACK_ENABLE_AVATARS (see `superset/config.py` for more information)
-- SQLLAB_BACKEND_PERSISTENCE
-- SQL_VALIDATORS_BY_ENGINE
[(docs)](https://superset.apache.org/docs/configuration/sql-templating)
-- THUMBNAILS [(docs)](https://superset.apache.org/docs/configuration/cache)
-
-## Deprecated Flags
-
-These features flags currently default to True and **will be removed in a
future major release**. For this current release you can turn them off by
setting your config to False, but it is advised to remove or set these flags in
your local configuration to **True** so that you do not experience any
unexpected changes in a future release.
-
-[//]: # "PLEASE KEEP THE LIST SORTED ALPHABETICALLY"
-
-- AVOID_COLORS_COLLISION
-- DRILL_TO_DETAIL
-- ENABLE_JAVASCRIPT_CONTROLS
-- KV_STORE
diff --git a/docs/developer_portal/contributing/development-setup.md
b/docs/developer_portal/contributing/development-setup.md
index a25cca8dbc..6d8fb38522 100644
--- a/docs/developer_portal/contributing/development-setup.md
+++ b/docs/developer_portal/contributing/development-setup.md
@@ -618,7 +618,7 @@ export enum FeatureFlag {
those specified under FEATURE_FLAGS in `superset_config.py`. For example,
`DEFAULT_FEATURE_FLAGS = { 'FOO': True, 'BAR': False }` in `superset/config.py`
and `FEATURE_FLAGS = { 'BAR': True, 'BAZ': True }` in `superset_config.py` will
result
in combined feature flags of `{ 'FOO': True, 'BAR': True, 'BAZ': True }`.
-The current status of the usability of each flag (stable vs testing, etc) can
be found in `RESOURCES/FEATURE_FLAGS.md`.
+The current status of the usability of each flag (stable vs testing, etc) can
be found in the [Feature
Flags](https://superset.apache.org/docs/configuration/feature-flags)
documentation.
## Git Hooks
diff --git a/docs/docs/configuration/configuring-superset.mdx
b/docs/docs/configuration/configuring-superset.mdx
index 0a50b07fe6..845fd91e3c 100644
--- a/docs/docs/configuration/configuring-superset.mdx
+++ b/docs/docs/configuration/configuring-superset.mdx
@@ -441,4 +441,4 @@ FEATURE_FLAGS = {
}
```
-A current list of feature flags can be found in
[RESOURCES/FEATURE_FLAGS.md](https://github.com/apache/superset/blob/master/RESOURCES/FEATURE_FLAGS.md).
+A current list of feature flags can be found in the [Feature
Flags](/docs/configuration/feature-flags) documentation.
diff --git a/docs/docs/configuration/feature-flags.mdx
b/docs/docs/configuration/feature-flags.mdx
new file mode 100644
index 0000000000..b573b07d32
--- /dev/null
+++ b/docs/docs/configuration/feature-flags.mdx
@@ -0,0 +1,107 @@
+---
+title: Feature Flags
+hide_title: true
+sidebar_position: 2
+version: 1
+---
+
+import featureFlags from '@site/static/feature-flags.json';
+
+export const FlagTable = ({flags}) => (
+ <table>
+ <thead>
+ <tr>
+ <th>Flag</th>
+ <th>Default</th>
+ <th>Description</th>
+ </tr>
+ </thead>
+ <tbody>
+ {flags.map((flag) => (
+ <tr key={flag.name}>
+ <td><code>{flag.name}</code></td>
+ <td><code>{flag.default ? 'True' : 'False'}</code></td>
+ <td>
+ {flag.description}
+ {flag.docs && (
+ <> (<a href={flag.docs}>docs</a>)</>
+ )}
+ </td>
+ </tr>
+ ))}
+ </tbody>
+ </table>
+);
+
+# Feature Flags
+
+Superset uses feature flags to control the availability of features. Feature
flags allow
+gradual rollout of new functionality and provide a way to enable experimental
features.
+
+To enable a feature flag, add it to your `superset_config.py`:
+
+```python
+FEATURE_FLAGS = {
+ "ENABLE_TEMPLATE_PROCESSING": True,
+}
+```
+
+## Lifecycle
+
+Feature flags progress through lifecycle stages:
+
+| Stage | Description |
+|-------|-------------|
+| **Development** | Experimental features under active development. May be
incomplete or unstable. |
+| **Testing** | Feature complete but undergoing testing. Usable but may
contain bugs. |
+| **Stable** | Production-ready features. Safe for all deployments. |
+| **Deprecated** | Features scheduled for removal. Migrate away from these. |
+
+---
+
+## Development
+
+These features are experimental and under active development. Use only in
development environments.
+
+<FlagTable flags={featureFlags.flags.development} />
+
+---
+
+## Testing
+
+These features are complete but still being tested. They are usable but may
have bugs.
+
+<FlagTable flags={featureFlags.flags.testing} />
+
+---
+
+## Stable
+
+These features are production-ready and safe to enable.
+
+<FlagTable flags={featureFlags.flags.stable} />
+
+---
+
+## Deprecated
+
+These features are scheduled for removal. Plan to migrate away from them.
+
+<FlagTable flags={featureFlags.flags.deprecated} />
+
+---
+
+## Adding New Feature Flags
+
+When adding a new feature flag to `superset/config.py`, include the following
annotations:
+
+```python
+# Description of what the feature does
+# @lifecycle: development | testing | stable | deprecated
+# @docs: https://superset.apache.org/docs/... (optional)
+# @category: runtime_config | path_to_deprecation (optional, for stable flags)
+"MY_NEW_FEATURE": False,
+```
+
+This documentation is auto-generated from the annotations in
+[config.py](https://github.com/apache/superset/blob/master/superset/config.py).
diff --git a/docs/docs/configuration/networking-settings.mdx
b/docs/docs/configuration/networking-settings.mdx
index 8165cedbac..020071ed91 100644
--- a/docs/docs/configuration/networking-settings.mdx
+++ b/docs/docs/configuration/networking-settings.mdx
@@ -51,7 +51,7 @@ Restart Superset for this configuration change to take effect.
#### Making a Dashboard Public
-1. Add the `'DASHBOARD_RBAC': True` [Feature
Flag](https://github.com/apache/superset/blob/master/RESOURCES/FEATURE_FLAGS.md)
to `superset_config.py`
+1. Add the `'DASHBOARD_RBAC': True` [Feature
Flag](/docs/configuration/feature-flags) to `superset_config.py`
2. Add the `Public` role to your dashboard as described
[here](https://superset.apache.org/docs/using-superset/creating-your-first-dashboard/#manage-access-to-dashboards)
#### Embedding a Public Dashboard
diff --git a/docs/docs/contributing/development.mdx
b/docs/docs/contributing/development.mdx
index c43e703152..f6514091d0 100644
--- a/docs/docs/contributing/development.mdx
+++ b/docs/docs/contributing/development.mdx
@@ -599,7 +599,7 @@ export enum FeatureFlag {
those specified under FEATURE_FLAGS in `superset_config.py`. For example,
`DEFAULT_FEATURE_FLAGS = { 'FOO': True, 'BAR': False }` in `superset/config.py`
and `FEATURE_FLAGS = { 'BAR': True, 'BAZ': True }` in `superset_config.py` will
result
in combined feature flags of `{ 'FOO': True, 'BAR': True, 'BAZ': True }`.
-The current status of the usability of each flag (stable vs testing, etc) can
be found in `RESOURCES/FEATURE_FLAGS.md`.
+The current status of the usability of each flag (stable vs testing, etc) can
be found in the [Feature Flags](/docs/configuration/feature-flags)
documentation.
## Git Hooks
diff --git a/docs/static/feature-flags.json b/docs/static/feature-flags.json
new file mode 100644
index 0000000000..d36ad6dfbc
--- /dev/null
+++ b/docs/static/feature-flags.json
@@ -0,0 +1,373 @@
+{
+ "generated": true,
+ "source": "superset/config.py",
+ "flags": {
+ "development": [
+ {
+ "name": "AG_GRID_TABLE_ENABLED",
+ "default": false,
+ "lifecycle": "development",
+ "description": "Enables Table V2 (AG Grid) viz plugin"
+ },
+ {
+ "name": "ALERT_REPORT_TABS",
+ "default": false,
+ "lifecycle": "development",
+ "description": "Enables experimental tabs UI for Alerts and Reports"
+ },
+ {
+ "name": "CHART_PLUGINS_EXPERIMENTAL",
+ "default": false,
+ "lifecycle": "development",
+ "description": "Enables experimental chart plugins"
+ },
+ {
+ "name": "CSV_UPLOAD_PYARROW_ENGINE",
+ "default": false,
+ "lifecycle": "development",
+ "description": "Experimental PyArrow engine for CSV parsing (may have
issues with dates/nulls)"
+ },
+ {
+ "name": "DATASET_FOLDERS",
+ "default": false,
+ "lifecycle": "development",
+ "description": "Allow metrics and columns to be grouped into folders
in the chart builder"
+ },
+ {
+ "name": "DATE_RANGE_TIMESHIFTS_ENABLED",
+ "default": false,
+ "lifecycle": "development",
+ "description": "Enable support for date range timeshifts (e.g.,
\"2015-01-03 : 2015-01-04\") in addition to relative timeshifts (e.g., \"1 day
ago\")"
+ },
+ {
+ "name": "ENABLE_ADVANCED_DATA_TYPES",
+ "default": false,
+ "lifecycle": "development",
+ "description": "Enables advanced data type support"
+ },
+ {
+ "name": "ENABLE_EXTENSIONS",
+ "default": false,
+ "lifecycle": "development",
+ "description": "Enable Superset extensions for custom functionality
without modifying core"
+ },
+ {
+ "name": "MATRIXIFY",
+ "default": false,
+ "lifecycle": "development",
+ "description": "Enable Matrixify feature for matrix-style chart
layouts"
+ },
+ {
+ "name": "OPTIMIZE_SQL",
+ "default": false,
+ "lifecycle": "development",
+ "description": "Try to optimize SQL queries \u2014 for now only
predicate pushdown is supported"
+ },
+ {
+ "name": "PRESTO_EXPAND_DATA",
+ "default": false,
+ "lifecycle": "development",
+ "description": "Expand nested types in Presto into extra
columns/arrays. Experimental, doesn't work with all nested types."
+ },
+ {
+ "name": "TABLE_V2_TIME_COMPARISON_ENABLED",
+ "default": false,
+ "lifecycle": "development",
+ "description": "Enable Table V2 time comparison feature"
+ },
+ {
+ "name": "TAGGING_SYSTEM",
+ "default": false,
+ "lifecycle": "development",
+ "description": "Enables the tagging system for organizing assets"
+ }
+ ],
+ "testing": [
+ {
+ "name": "ALERT_REPORTS",
+ "default": false,
+ "lifecycle": "testing",
+ "description": "Enables Alerts and Reports functionality",
+ "docs": "https://superset.apache.org/docs/configuration/alerts-reports"
+ },
+ {
+ "name": "ALERT_REPORTS_FILTER",
+ "default": false,
+ "lifecycle": "testing",
+ "description": "Enables filter functionality in Alerts and Reports"
+ },
+ {
+ "name": "ALERT_REPORT_SLACK_V2",
+ "default": false,
+ "lifecycle": "testing",
+ "description": "Enables Slack V2 integration for Alerts and Reports"
+ },
+ {
+ "name": "ALLOW_FULL_CSV_EXPORT",
+ "default": false,
+ "lifecycle": "testing",
+ "description": "Allow users to export full CSV of table viz type.
Warning: Could cause server memory/compute issues with large datasets."
+ },
+ {
+ "name": "CACHE_IMPERSONATION",
+ "default": false,
+ "lifecycle": "testing",
+ "description": "Enable caching per impersonation key in datasources
with user impersonation"
+ },
+ {
+ "name": "DATE_FORMAT_IN_EMAIL_SUBJECT",
+ "default": false,
+ "lifecycle": "testing",
+ "description": "Allow users to optionally specify date formats in
email subjects",
+ "docs": "https://superset.apache.org/docs/configuration/alerts-reports"
+ },
+ {
+ "name": "DYNAMIC_PLUGINS",
+ "default": false,
+ "lifecycle": "testing",
+ "description": "Enable dynamic plugin loading"
+ },
+ {
+ "name": "ENABLE_DASHBOARD_DOWNLOAD_WEBDRIVER_SCREENSHOT",
+ "default": false,
+ "lifecycle": "testing",
+ "description": "Generate screenshots (PDF/JPG) of dashboards using web
driver. Depends on ENABLE_DASHBOARD_SCREENSHOT_ENDPOINTS."
+ },
+ {
+ "name": "ENABLE_DASHBOARD_SCREENSHOT_ENDPOINTS",
+ "default": false,
+ "lifecycle": "testing",
+ "description": "Enables endpoints to cache and retrieve dashboard
screenshots via webdriver. Requires Celery and THUMBNAIL_CACHE_CONFIG."
+ },
+ {
+ "name": "ENABLE_SUPERSET_META_DB",
+ "default": false,
+ "lifecycle": "testing",
+ "description": "Allows users to add a superset:// DB that can query
across databases. Experimental with potential security/performance risks. See
SUPERSET_META_DB_LIMIT.",
+ "docs":
"https://superset.apache.org/docs/configuration/databases/#querying-across-databases"
+ },
+ {
+ "name": "ESTIMATE_QUERY_COST",
+ "default": false,
+ "lifecycle": "testing",
+ "description": "Enable query cost estimation. Supported in Presto,
Postgres, and BigQuery. Requires `cost_estimate_enabled: true` in database
`extra` attribute."
+ },
+ {
+ "name": "GLOBAL_ASYNC_QUERIES",
+ "default": false,
+ "lifecycle": "testing",
+ "description": "Enable async queries for dashboards and Explore via
WebSocket. Requires Redis 5.0+ and Celery workers.",
+ "docs":
"https://superset.apache.org/docs/contributing/misc#async-chart-queries"
+ },
+ {
+ "name": "IMPERSONATE_WITH_EMAIL_PREFIX",
+ "default": false,
+ "lifecycle": "testing",
+ "description": "When impersonating a user, use the email prefix
instead of username"
+ },
+ {
+ "name": "PLAYWRIGHT_REPORTS_AND_THUMBNAILS",
+ "default": false,
+ "lifecycle": "testing",
+ "description": "Replace Selenium with Playwright for reports and
thumbnails. Supports deck.gl visualizations. Requires playwright pip package."
+ },
+ {
+ "name": "RLS_IN_SQLLAB",
+ "default": false,
+ "lifecycle": "testing",
+ "description": "Apply RLS rules to SQL Lab queries. Requires query
parsing/manipulation. May break queries or allow RLS bypass. Use with care!"
+ },
+ {
+ "name": "SSH_TUNNELING",
+ "default": false,
+ "lifecycle": "testing",
+ "description": "Allow users to enable SSH tunneling when creating a DB
connection. DB engine must support SSH Tunnels.",
+ "docs":
"https://superset.apache.org/docs/configuration/setup-ssh-tunneling"
+ },
+ {
+ "name": "USE_ANALOGOUS_COLORS",
+ "default": false,
+ "lifecycle": "testing",
+ "description": "Use analogous colors in charts"
+ }
+ ],
+ "stable": [
+ {
+ "name": "ALERTS_ATTACH_REPORTS",
+ "default": true,
+ "lifecycle": "stable",
+ "description": "When enabled, alerts send email/slack with screenshot
AND link. When disabled, alerts send only link; reports still send screenshot.",
+ "category": "runtime_config"
+ },
+ {
+ "name": "ALLOW_ADHOC_SUBQUERY",
+ "default": false,
+ "lifecycle": "stable",
+ "description": "Allow ad-hoc subqueries in SQL Lab",
+ "category": "runtime_config"
+ },
+ {
+ "name": "CACHE_QUERY_BY_USER",
+ "default": false,
+ "lifecycle": "stable",
+ "description": "Enable caching per user key for Superset cache",
+ "category": "runtime_config"
+ },
+ {
+ "name": "CSS_TEMPLATES",
+ "default": true,
+ "lifecycle": "stable",
+ "description": "Enables CSS Templates in Settings menu and dashboard
forms",
+ "category": "runtime_config"
+ },
+ {
+ "name": "DASHBOARD_RBAC",
+ "default": false,
+ "lifecycle": "stable",
+ "description": "Role-based access control for dashboards",
+ "docs":
"https://superset.apache.org/docs/using-superset/creating-your-first-dashboard",
+ "category": "runtime_config"
+ },
+ {
+ "name": "DASHBOARD_VIRTUALIZATION",
+ "default": true,
+ "lifecycle": "stable",
+ "description": "Enables dashboard virtualization for improved
performance",
+ "category": "path_to_deprecation"
+ },
+ {
+ "name": "DATAPANEL_CLOSED_BY_DEFAULT",
+ "default": false,
+ "lifecycle": "stable",
+ "description": "Data panel closed by default in chart builder",
+ "category": "runtime_config"
+ },
+ {
+ "name": "DRILL_BY",
+ "default": true,
+ "lifecycle": "stable",
+ "description": "Enable drill-by functionality in charts",
+ "category": "runtime_config"
+ },
+ {
+ "name": "DRUID_JOINS",
+ "default": false,
+ "lifecycle": "stable",
+ "description": "Enable Druid JOINs (requires Druid version with JOIN
support)",
+ "category": "runtime_config"
+ },
+ {
+ "name": "EMBEDDABLE_CHARTS",
+ "default": true,
+ "lifecycle": "stable",
+ "description": "Enable sharing charts with embedding",
+ "category": "runtime_config"
+ },
+ {
+ "name": "EMBEDDED_SUPERSET",
+ "default": false,
+ "lifecycle": "stable",
+ "description": "Enable embedded Superset functionality",
+ "category": "runtime_config"
+ },
+ {
+ "name": "ENABLE_FACTORY_RESET_COMMAND",
+ "default": false,
+ "lifecycle": "stable",
+ "description": "Enable factory reset CLI command",
+ "category": "internal"
+ },
+ {
+ "name": "ENABLE_TEMPLATE_PROCESSING",
+ "default": false,
+ "lifecycle": "stable",
+ "description": "Enable Jinja templating in SQL queries",
+ "category": "runtime_config"
+ },
+ {
+ "name": "ESCAPE_MARKDOWN_HTML",
+ "default": false,
+ "lifecycle": "stable",
+ "description": "Escape HTML in Markdown components (rather than
rendering it)",
+ "category": "runtime_config"
+ },
+ {
+ "name": "FILTERBAR_CLOSED_BY_DEFAULT",
+ "default": false,
+ "lifecycle": "stable",
+ "description": "Filter bar closed by default when opening dashboard",
+ "category": "runtime_config"
+ },
+ {
+ "name": "FORCE_GARBAGE_COLLECTION_AFTER_EVERY_REQUEST",
+ "default": false,
+ "lifecycle": "stable",
+ "description": "Force garbage collection after every request",
+ "category": "runtime_config"
+ },
+ {
+ "name": "LISTVIEWS_DEFAULT_CARD_VIEW",
+ "default": false,
+ "lifecycle": "stable",
+ "description": "Use card view as default in list views",
+ "category": "runtime_config"
+ },
+ {
+ "name": "MENU_HIDE_USER_INFO",
+ "default": false,
+ "lifecycle": "stable",
+ "description": "Hide user info in the navigation menu",
+ "category": "runtime_config"
+ },
+ {
+ "name": "SLACK_ENABLE_AVATARS",
+ "default": false,
+ "lifecycle": "stable",
+ "description": "Use Slack avatars for users. Requires adding
slack-edge.com to TALISMAN_CONFIG.",
+ "category": "runtime_config"
+ },
+ {
+ "name": "SQLLAB_BACKEND_PERSISTENCE",
+ "default": true,
+ "lifecycle": "stable",
+ "description": "Enable SQL Lab backend persistence for query state",
+ "category": "runtime_config"
+ },
+ {
+ "name": "SQLLAB_FORCE_RUN_ASYNC",
+ "default": false,
+ "lifecycle": "stable",
+ "description": "Force SQL Lab to run async via Celery regardless of
database settings",
+ "category": "runtime_config"
+ },
+ {
+ "name": "THUMBNAILS",
+ "default": false,
+ "lifecycle": "stable",
+ "description": "Exposes API endpoint to compute thumbnails",
+ "docs": "https://superset.apache.org/docs/configuration/cache",
+ "category": "runtime_config"
+ }
+ ],
+ "deprecated": [
+ {
+ "name": "AVOID_COLORS_COLLISION",
+ "default": true,
+ "lifecycle": "deprecated",
+ "description": "Avoid color collisions in charts by using distinct
colors"
+ },
+ {
+ "name": "DRILL_TO_DETAIL",
+ "default": true,
+ "lifecycle": "deprecated",
+ "description": "Enable drill-to-detail functionality in charts"
+ },
+ {
+ "name": "ENABLE_JAVASCRIPT_CONTROLS",
+ "default": false,
+ "lifecycle": "deprecated",
+ "description": "Allow JavaScript in chart controls. WARNING: XSS
security vulnerability!"
+ }
+ ]
+ }
+}
diff --git
a/docs/versioned_docs/version-6.0.0/configuration/configuring-superset.mdx
b/docs/versioned_docs/version-6.0.0/configuration/configuring-superset.mdx
index 0a50b07fe6..845fd91e3c 100644
--- a/docs/versioned_docs/version-6.0.0/configuration/configuring-superset.mdx
+++ b/docs/versioned_docs/version-6.0.0/configuration/configuring-superset.mdx
@@ -441,4 +441,4 @@ FEATURE_FLAGS = {
}
```
-A current list of feature flags can be found in
[RESOURCES/FEATURE_FLAGS.md](https://github.com/apache/superset/blob/master/RESOURCES/FEATURE_FLAGS.md).
+A current list of feature flags can be found in the [Feature
Flags](/docs/configuration/feature-flags) documentation.
diff --git
a/docs/versioned_docs/version-6.0.0/configuration/networking-settings.mdx
b/docs/versioned_docs/version-6.0.0/configuration/networking-settings.mdx
index 8165cedbac..020071ed91 100644
--- a/docs/versioned_docs/version-6.0.0/configuration/networking-settings.mdx
+++ b/docs/versioned_docs/version-6.0.0/configuration/networking-settings.mdx
@@ -51,7 +51,7 @@ Restart Superset for this configuration change to take effect.
#### Making a Dashboard Public
-1. Add the `'DASHBOARD_RBAC': True` [Feature
Flag](https://github.com/apache/superset/blob/master/RESOURCES/FEATURE_FLAGS.md)
to `superset_config.py`
+1. Add the `'DASHBOARD_RBAC': True` [Feature
Flag](/docs/configuration/feature-flags) to `superset_config.py`
2. Add the `Public` role to your dashboard as described
[here](https://superset.apache.org/docs/using-superset/creating-your-first-dashboard/#manage-access-to-dashboards)
#### Embedding a Public Dashboard
diff --git a/docs/versioned_docs/version-6.0.0/contributing/development.mdx
b/docs/versioned_docs/version-6.0.0/contributing/development.mdx
index d461ea087b..8e6822adc5 100644
--- a/docs/versioned_docs/version-6.0.0/contributing/development.mdx
+++ b/docs/versioned_docs/version-6.0.0/contributing/development.mdx
@@ -599,7 +599,7 @@ export enum FeatureFlag {
those specified under FEATURE_FLAGS in `superset_config.py`. For example,
`DEFAULT_FEATURE_FLAGS = { 'FOO': True, 'BAR': False }` in `superset/config.py`
and `FEATURE_FLAGS = { 'BAR': True, 'BAZ': True }` in `superset_config.py` will
result
in combined feature flags of `{ 'FOO': True, 'BAR': True, 'BAZ': True }`.
-The current status of the usability of each flag (stable vs testing, etc) can
be found in `RESOURCES/FEATURE_FLAGS.md`.
+The current status of the usability of each flag (stable vs testing, etc) can
be found in the [Feature Flags](/docs/configuration/feature-flags)
documentation.
## Git Hooks
diff --git a/docs/versioned_docs/version-6.0.0/intro.md
b/docs/versioned_docs/version-6.0.0/intro.md
index 67e3e205f2..ce2f3c3155 100644
--- a/docs/versioned_docs/version-6.0.0/intro.md
+++ b/docs/versioned_docs/version-6.0.0/intro.md
@@ -172,7 +172,7 @@ how to set up a development environment.
## Resources
- [Superset "In the
Wild"](https://github.com/apache/superset/blob/master/RESOURCES/INTHEWILD.md) -
open a PR to add your org to the list!
-- [Feature
Flags](https://github.com/apache/superset/blob/master/RESOURCES/FEATURE_FLAGS.md)
- the status of Superset's Feature Flags.
+- [Feature
Flags](https://superset.apache.org/docs/configuration/feature-flags) - the
status of Superset's Feature Flags.
- [Standard
Roles](https://github.com/apache/superset/blob/master/RESOURCES/STANDARD_ROLES.md)
- How RBAC permissions map to roles.
- [Superset Wiki](https://github.com/apache/superset/wiki) - Tons of
additional community resources: best practices, community content and other
information.
- [Superset SIPs](https://github.com/orgs/apache/projects/170) - The status of
Superset's SIPs (Superset Improvement Proposals) for both consensus and
implementation status.
diff --git a/scripts/extract_feature_flags.py b/scripts/extract_feature_flags.py
new file mode 100644
index 0000000000..cf34639a60
--- /dev/null
+++ b/scripts/extract_feature_flags.py
@@ -0,0 +1,194 @@
+#!/usr/bin/env python3
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+"""
+Extract feature flag metadata from superset/config.py.
+
+This script parses the annotated feature flags in config.py and outputs
+a JSON file that can be consumed by the documentation site to generate
+dynamic feature flag tables.
+
+Usage:
+ python scripts/extract_feature_flags.py > docs/static/feature-flags.json
+
+Annotations supported:
+ @lifecycle: development | testing | stable | deprecated
+ @docs: URL to documentation
+ @category: runtime_config | path_to_deprecation | internal (for stable
flags)
+"""
+
+import json
+import re
+import sys
+from pathlib import Path
+from typing import TypedDict
+
+
+class FeatureFlag(TypedDict, total=False):
+ name: str
+ default: bool
+ lifecycle: str
+ description: str
+ docs: str | None
+ category: str | None
+
+
+def extract_feature_flags(config_path: Path) -> list[FeatureFlag]:
+ """
+ Parse config.py and extract feature flag metadata from comments.
+
+ Each flag should have a comment block above it with:
+ - Description (first line(s) before @annotations)
+ - @lifecycle: development | testing | stable | deprecated
+ - @docs: URL (optional)
+ - @category: runtime_config | path_to_deprecation | internal (optional)
+ """
+ content = config_path.read_text()
+
+ # Find the DEFAULT_FEATURE_FLAGS dict
+ match = re.search(
+ r"DEFAULT_FEATURE_FLAGS:\s*dict\[str,\s*bool\]\s*=\s*\{(.+?)\n\}",
+ content,
+ re.DOTALL,
+ )
+ if not match:
+ print("ERROR: Could not find DEFAULT_FEATURE_FLAGS in config.py",
file=sys.stderr)
+ sys.exit(1)
+
+ flags_content = match.group(1)
+ flags: list[FeatureFlag] = []
+
+ # Split content into lines for easier processing
+ lines = flags_content.split("\n")
+
+ current_comments: list[str] = []
+
+ for i, line in enumerate(lines):
+ stripped = line.strip()
+
+ # Skip section headers and dividers
+ if "====" in stripped or "----" in stripped:
+ current_comments = []
+ continue
+
+ # Collect comment lines
+ if stripped.startswith("#"):
+ comment_text = stripped[1:].strip()
+ # Skip section description comments
+ if comment_text.startswith("These features") or
comment_text.startswith("These flags"):
+ current_comments = []
+ continue
+ current_comments.append(comment_text)
+ continue
+
+ # Check for flag definition
+ flag_match = re.match(r'"([A-Z0-9_]+)":\s*(True|False),?', stripped)
+ if flag_match:
+ if current_comments:
+ flag_name = flag_match.group(1)
+ default_value = flag_match.group(2) == "True"
+
+ flag = parse_comment_lines(current_comments, flag_name,
default_value)
+ if flag:
+ flags.append(flag)
+
+ current_comments = [] # Always reset after a flag definition
+
+ return flags
+
+
+def parse_comment_lines(comment_lines: list[str], flag_name: str, default:
bool) -> FeatureFlag | None:
+ """Parse comment lines to extract flag metadata."""
+ if not comment_lines:
+ return None
+
+ lifecycle = None
+ docs = None
+ category = None
+ description_lines = []
+
+ for line in comment_lines:
+ if line.startswith("@lifecycle:"):
+ lifecycle = line.split(":", 1)[1].strip()
+ elif line.startswith("@docs:"):
+ docs = line.split(":", 1)[1].strip()
+ elif line.startswith("@category:"):
+ category = line.split(":", 1)[1].strip()
+ elif line and not line.startswith("@"):
+ description_lines.append(line)
+
+ if not lifecycle:
+ # Skip flags without lifecycle annotation
+ return None
+
+ description = " ".join(description_lines)
+
+ flag: FeatureFlag = {
+ "name": flag_name,
+ "default": default,
+ "lifecycle": lifecycle,
+ "description": description,
+ }
+
+ if docs:
+ flag["docs"] = docs
+ if category:
+ flag["category"] = category
+
+ return flag
+
+
+def main():
+ # Find config.py relative to this script
+ script_dir = Path(__file__).parent
+ repo_root = script_dir.parent
+ config_path = repo_root / "superset" / "config.py"
+
+ if not config_path.exists():
+ print(f"ERROR: Could not find {config_path}", file=sys.stderr)
+ sys.exit(1)
+
+ flags = extract_feature_flags(config_path)
+
+ # Group by lifecycle
+ grouped = {
+ "development": [],
+ "testing": [],
+ "stable": [],
+ "deprecated": [],
+ }
+
+ for flag in flags:
+ lifecycle = flag.get("lifecycle", "stable")
+ if lifecycle in grouped:
+ grouped[lifecycle].append(flag)
+
+ # Sort each group alphabetically by name
+ for lifecycle in grouped:
+ grouped[lifecycle].sort(key=lambda f: f["name"])
+
+ output = {
+ "generated": True,
+ "source": "superset/config.py",
+ "flags": grouped,
+ }
+
+ print(json.dumps(output, indent=2))
+
+
+if __name__ == "__main__":
+ main()
diff --git a/superset/config.py b/superset/config.py
index a33294ed65..5701d38d73 100644
--- a/superset/config.py
+++ b/superset/config.py
@@ -519,142 +519,264 @@ CURRENCIES = ["USD", "EUR", "GBP", "INR", "MXN", "JPY",
"CNY"]
# ---------------------------------------------------
# Feature flags
# ---------------------------------------------------
-# Feature flags that are set by default go here. Their values can be
-# overwritten by those specified under FEATURE_FLAGS in superset_config.py
-# For example, DEFAULT_FEATURE_FLAGS = { 'FOO': True, 'BAR': False } here
-# and FEATURE_FLAGS = { 'BAR': True, 'BAZ': True } in superset_config.py
-# will result in combined feature flags of { 'FOO': True, 'BAR': True, 'BAZ':
True }
+# Feature flags control optional functionality in Superset. They can be set in
+# superset_config.py to override the defaults below.
+#
+# Example: FEATURE_FLAGS = { 'ALERT_REPORTS': True }
+#
+# Each flag is annotated with:
+# @lifecycle: development | testing | stable | deprecated
+# @docs: URL to documentation (optional)
+# @category: runtime_config | path_to_deprecation (for stable flags)
+#
+# Lifecycle meanings:
+# - development: Unfinished, for dev environments only
+# - testing: Complete but being validated, may have bugs
+# - stable: Production-ready, tested and supported
+# - deprecated: Will be removed in a future major release
+
DEFAULT_FEATURE_FLAGS: dict[str, bool] = {
- # When using a recent version of Druid that supports JOINs turn this on
- "DRUID_JOINS": False,
- "DYNAMIC_PLUGINS": False,
- "ENABLE_TEMPLATE_PROCESSING": False,
- # Allow for javascript controls components
- # this enables programmers to customize certain charts (like the
- # geospatial ones) by inputting javascript in controls. This exposes
- # an XSS security vulnerability
- "ENABLE_JAVASCRIPT_CONTROLS": False, # deprecated
+ # =================================================================
+ # IN DEVELOPMENT
+ # =================================================================
+ # These features are considered unfinished and should only be used
+ # on development environments.
+ # -----------------------------------------------------------------
+ # Enables Table V2 (AG Grid) viz plugin
+ # @lifecycle: development
+ "AG_GRID_TABLE_ENABLED": False,
+ # Enables experimental tabs UI for Alerts and Reports
+ # @lifecycle: development
+ "ALERT_REPORT_TABS": False,
+ # Enables experimental chart plugins
+ # @lifecycle: development
+ "CHART_PLUGINS_EXPERIMENTAL": False,
# Experimental PyArrow engine for CSV parsing (may have issues with
dates/nulls)
+ # @lifecycle: development
"CSV_UPLOAD_PYARROW_ENGINE": False,
- # When this feature is enabled, nested types in Presto will be
- # expanded into extra columns and/or arrays. This is experimental,
- # and doesn't work with all nested types.
+ # Allow metrics and columns to be grouped into folders in the chart builder
+ # @lifecycle: development
+ "DATASET_FOLDERS": False,
+ # Enable support for date range timeshifts (e.g., "2015-01-03 :
2015-01-04")
+ # in addition to relative timeshifts (e.g., "1 day ago")
+ # @lifecycle: development
+ "DATE_RANGE_TIMESHIFTS_ENABLED": False,
+ # Enables advanced data type support
+ # @lifecycle: development
+ "ENABLE_ADVANCED_DATA_TYPES": False,
+ # Enable Superset extensions for custom functionality without modifying
core
+ # @lifecycle: development
+ "ENABLE_EXTENSIONS": False,
+ # Enable Matrixify feature for matrix-style chart layouts
+ # @lifecycle: development
+ "MATRIXIFY": False,
+ # Try to optimize SQL queries — for now only predicate pushdown is
supported
+ # @lifecycle: development
+ "OPTIMIZE_SQL": False,
+ # Expand nested types in Presto into extra columns/arrays. Experimental,
+ # doesn't work with all nested types.
+ # @lifecycle: development
"PRESTO_EXPAND_DATA": False,
- # Exposes API endpoint to compute thumbnails
- "THUMBNAILS": False,
- # Enables the endpoints to cache and retrieve dashboard screenshots via
webdriver.
- # Requires configuring Celery and a cache using THUMBNAIL_CACHE_CONFIG.
- "ENABLE_DASHBOARD_SCREENSHOT_ENDPOINTS": False,
- # Generate screenshots (PDF or JPG) of dashboards using the web driver.
- # When disabled, screenshots are generated on the fly by the browser.
- # This feature flag is used by the download feature in the dashboard view.
- # It is dependent on ENABLE_DASHBOARD_SCREENSHOT_ENDPOINT being enabled.
- "ENABLE_DASHBOARD_DOWNLOAD_WEBDRIVER_SCREENSHOT": False,
+ # Enable Table V2 time comparison feature
+ # @lifecycle: development
+ "TABLE_V2_TIME_COMPARISON_ENABLED": False,
+ # Enables the tagging system for organizing assets
+ # @lifecycle: development
"TAGGING_SYSTEM": False,
- "SQLLAB_BACKEND_PERSISTENCE": True,
- "LISTVIEWS_DEFAULT_CARD_VIEW": False,
- # When True, this escapes HTML (rather than rendering it) in Markdown
components
- "ESCAPE_MARKDOWN_HTML": False,
- "DASHBOARD_VIRTUALIZATION": True,
- # This feature flag is stil in beta and is not recommended for production
use.
- "GLOBAL_ASYNC_QUERIES": False,
- "EMBEDDED_SUPERSET": False,
- # Enables Alerts and reports new implementation
- "ALERT_REPORTS": False,
- "ALERT_REPORT_TABS": False,
+ # =================================================================
+ # IN TESTING
+ # =================================================================
+ # These features are finished but currently being tested.
+ # They are usable, but may still contain some bugs.
+ # -----------------------------------------------------------------
+ # Enables filter functionality in Alerts and Reports
+ # @lifecycle: testing
"ALERT_REPORTS_FILTER": False,
+ # Enables Alerts and Reports functionality
+ # @lifecycle: testing
+ # @docs: https://superset.apache.org/docs/configuration/alerts-reports
+ "ALERT_REPORTS": False,
+ # Enables Slack V2 integration for Alerts and Reports
+ # @lifecycle: testing
"ALERT_REPORT_SLACK_V2": False,
- "DASHBOARD_RBAC": False,
- "ENABLE_ADVANCED_DATA_TYPES": False,
- # Enabling ALERTS_ATTACH_REPORTS, the system sends email and slack message
- # with screenshot and link
- # Disables ALERTS_ATTACH_REPORTS, the system DOES NOT generate screenshot
- # for report with type 'alert' and sends email and slack message with only
link;
- # for report with type 'report' still send with email and slack message
with
- # screenshot and link
- "ALERTS_ATTACH_REPORTS": True,
# Allow users to export full CSV of table viz type.
- # This could cause the server to run out of memory or compute.
+ # Warning: Could cause server memory/compute issues with large datasets.
+ # @lifecycle: testing
"ALLOW_FULL_CSV_EXPORT": False,
- "ALLOW_ADHOC_SUBQUERY": False,
- "USE_ANALOGOUS_COLORS": False,
- # Apply RLS rules to SQL Lab queries. This requires parsing and
manipulating the
- # query, and might break queries and/or allow users to bypass RLS. Use
with care!
- "RLS_IN_SQLLAB": False,
- # Try to optimize SQL queries — for now only predicate pushdown is
supported.
- "OPTIMIZE_SQL": False,
- # When impersonating a user, use the email prefix instead of the username
- "IMPERSONATE_WITH_EMAIL_PREFIX": False,
- # Enable caching per impersonation key (e.g username) in a datasource
where user
- # impersonation is enabled
+ # Enable caching per impersonation key in datasources with user
impersonation
+ # @lifecycle: testing
"CACHE_IMPERSONATION": False,
- # Enable caching per user key for Superset cache (not database cache
impersonation)
+ # Allow users to optionally specify date formats in email subjects
+ # @lifecycle: testing
+ # @docs: https://superset.apache.org/docs/configuration/alerts-reports
+ "DATE_FORMAT_IN_EMAIL_SUBJECT": False,
+ # Enable dynamic plugin loading
+ # @lifecycle: testing
+ "DYNAMIC_PLUGINS": False,
+ # Enables endpoints to cache and retrieve dashboard screenshots via
webdriver.
+ # Requires Celery and THUMBNAIL_CACHE_CONFIG.
+ # @lifecycle: testing
+ "ENABLE_DASHBOARD_SCREENSHOT_ENDPOINTS": False,
+ # Generate screenshots (PDF/JPG) of dashboards using web driver.
+ # Depends on ENABLE_DASHBOARD_SCREENSHOT_ENDPOINTS.
+ # @lifecycle: testing
+ "ENABLE_DASHBOARD_DOWNLOAD_WEBDRIVER_SCREENSHOT": False,
+ # Allows users to add a superset:// DB that can query across databases.
+ # Experimental with potential security/performance risks. See
SUPERSET_META_DB_LIMIT.
+ # @lifecycle: testing
+ # @docs:
https://superset.apache.org/docs/configuration/databases/#querying-across-databases
+ "ENABLE_SUPERSET_META_DB": False,
+ # Enable query cost estimation. Supported in Presto, Postgres, and
BigQuery.
+ # Requires `cost_estimate_enabled: true` in database `extra` attribute.
+ # @lifecycle: testing
+ "ESTIMATE_QUERY_COST": False,
+ # Enable async queries for dashboards and Explore via WebSocket.
+ # Requires Redis 5.0+ and Celery workers.
+ # @lifecycle: testing
+ # @docs:
https://superset.apache.org/docs/contributing/misc#async-chart-queries
+ "GLOBAL_ASYNC_QUERIES": False,
+ # When impersonating a user, use the email prefix instead of username
+ # @lifecycle: testing
+ "IMPERSONATE_WITH_EMAIL_PREFIX": False,
+ # Replace Selenium with Playwright for reports and thumbnails.
+ # Supports deck.gl visualizations. Requires playwright pip package.
+ # @lifecycle: testing
+ "PLAYWRIGHT_REPORTS_AND_THUMBNAILS": False,
+ # Apply RLS rules to SQL Lab queries. Requires query parsing/manipulation.
+ # May break queries or allow RLS bypass. Use with care!
+ # @lifecycle: testing
+ "RLS_IN_SQLLAB": False,
+ # Allow users to enable SSH tunneling when creating a DB connection.
+ # DB engine must support SSH Tunnels.
+ # @lifecycle: testing
+ # @docs: https://superset.apache.org/docs/configuration/setup-ssh-tunneling
+ "SSH_TUNNELING": False,
+ # Use analogous colors in charts
+ # @lifecycle: testing
+ "USE_ANALOGOUS_COLORS": False,
+ # =================================================================
+ # STABLE - PATH TO DEPRECATION
+ # =================================================================
+ # These flags are stable and on path to becoming default behavior,
+ # after which the flag will be deprecated.
+ # -----------------------------------------------------------------
+ # Enables dashboard virtualization for improved performance
+ # @lifecycle: stable
+ # @category: path_to_deprecation
+ "DASHBOARD_VIRTUALIZATION": True,
+ # =================================================================
+ # STABLE - RUNTIME CONFIGURATION
+ # =================================================================
+ # These flags act as runtime configuration options. They are stable
+ # but will be retained as configuration options rather than deprecated.
+ # -----------------------------------------------------------------
+ # When enabled, alerts send email/slack with screenshot AND link.
+ # When disabled, alerts send only link; reports still send screenshot.
+ # @lifecycle: stable
+ # @category: runtime_config
+ "ALERTS_ATTACH_REPORTS": True,
+ # Allow ad-hoc subqueries in SQL Lab
+ # @lifecycle: stable
+ # @category: runtime_config
+ "ALLOW_ADHOC_SUBQUERY": False,
+ # Enable caching per user key for Superset cache
+ # @lifecycle: stable
+ # @category: runtime_config
"CACHE_QUERY_BY_USER": False,
+ # Enables CSS Templates in Settings menu and dashboard forms
+ # @lifecycle: stable
+ # @category: runtime_config
+ "CSS_TEMPLATES": True,
+ # Role-based access control for dashboards
+ # @lifecycle: stable
+ # @category: runtime_config
+ # @docs:
https://superset.apache.org/docs/using-superset/creating-your-first-dashboard
+ "DASHBOARD_RBAC": False,
+ # Data panel closed by default in chart builder
+ # @lifecycle: stable
+ # @category: runtime_config
+ "DATAPANEL_CLOSED_BY_DEFAULT": False,
+ # Enable drill-by functionality in charts
+ # @lifecycle: stable
+ # @category: runtime_config
+ "DRILL_BY": True,
+ # Enable Druid JOINs (requires Druid version with JOIN support)
+ # @lifecycle: stable
+ # @category: runtime_config
+ "DRUID_JOINS": False,
# Enable sharing charts with embedding
+ # @lifecycle: stable
+ # @category: runtime_config
"EMBEDDABLE_CHARTS": True,
- "DRILL_TO_DETAIL": True, # deprecated
- "DRILL_BY": True,
- "DATAPANEL_CLOSED_BY_DEFAULT": False,
- # When you open the dashboard, the filter panel will be closed
+ # Enable embedded Superset functionality
+ # @lifecycle: stable
+ # @category: runtime_config
+ "EMBEDDED_SUPERSET": False,
+ # Enable Jinja templating in SQL queries
+ # @lifecycle: stable
+ # @category: runtime_config
+ "ENABLE_TEMPLATE_PROCESSING": False,
+ # Escape HTML in Markdown components (rather than rendering it)
+ # @lifecycle: stable
+ # @category: runtime_config
+ "ESCAPE_MARKDOWN_HTML": False,
+ # Filter bar closed by default when opening dashboard
+ # @lifecycle: stable
+ # @category: runtime_config
"FILTERBAR_CLOSED_BY_DEFAULT": False,
- # The feature is off by default, and currently only supported in Presto
and Postgres, # noqa: E501
- # and Bigquery.
- # It also needs to be enabled on a per-database basis, by adding the
key/value pair
- # `cost_estimate_enabled: true` to the database `extra` attribute.
- "ESTIMATE_QUERY_COST": False,
- # Allow users to enable ssh tunneling when creating a DB.
- # Users must check whether the DB engine supports SSH Tunnels
- # otherwise enabling this flag won't have any effect on the DB.
- "SSH_TUNNELING": False,
- "AVOID_COLORS_COLLISION": True,
- # Do not show user info in the menu
+ # Force garbage collection after every request
+ # @lifecycle: stable
+ # @category: runtime_config
+ "FORCE_GARBAGE_COLLECTION_AFTER_EVERY_REQUEST": False,
+ # Use card view as default in list views
+ # @lifecycle: stable
+ # @category: runtime_config
+ "LISTVIEWS_DEFAULT_CARD_VIEW": False,
+ # Hide user info in the navigation menu
+ # @lifecycle: stable
+ # @category: runtime_config
"MENU_HIDE_USER_INFO": False,
- # Allows users to add a ``superset://`` DB that can query across
databases. This is
- # an experimental feature with potential security and performance risks,
so use with
- # caution. If the feature is enabled you can also set a limit for how much
data is
- # returned from each database in the ``SUPERSET_META_DB_LIMIT``
configuration value
- # in this file.
- "ENABLE_SUPERSET_META_DB": False,
- # Set to True to replace Selenium with Playwright to execute reports and
thumbnails.
- # Unlike Selenium, Playwright reports support deck.gl visualizations
- # Enabling this feature flag requires installing "playwright" pip package
- "PLAYWRIGHT_REPORTS_AND_THUMBNAILS": False,
- # Set to True to enable experimental chart plugins
- "CHART_PLUGINS_EXPERIMENTAL": False,
- # Regardless of database configuration settings, force SQLLAB to run async
- # using Celery
+ # Use Slack avatars for users. Requires adding slack-edge.com to
TALISMAN_CONFIG.
+ # @lifecycle: stable
+ # @category: runtime_config
+ "SLACK_ENABLE_AVATARS": False,
+ # Enable SQL Lab backend persistence for query state
+ # @lifecycle: stable
+ # @category: runtime_config
+ "SQLLAB_BACKEND_PERSISTENCE": True,
+ # Force SQL Lab to run async via Celery regardless of database settings
+ # @lifecycle: stable
+ # @category: runtime_config
"SQLLAB_FORCE_RUN_ASYNC": False,
- # Set to True to to enable factory resent CLI command
+ # Exposes API endpoint to compute thumbnails
+ # @lifecycle: stable
+ # @category: runtime_config
+ # @docs: https://superset.apache.org/docs/configuration/cache
+ "THUMBNAILS": False,
+ # =================================================================
+ # STABLE - INTERNAL/ADMIN
+ # =================================================================
+ # These flags are for internal use or administrative purposes.
+ # -----------------------------------------------------------------
+ # Enable factory reset CLI command
+ # @lifecycle: stable
+ # @category: internal
"ENABLE_FACTORY_RESET_COMMAND": False,
- # Whether Superset should use Slack avatars for users.
- # If on, you'll want to add "https://avatars.slack-edge.com" to the list
of allowed
- # domains in your TALISMAN_CONFIG
- "SLACK_ENABLE_AVATARS": False,
- # Adds a theme editor as a modal dialog in the navbar. Allows people to
type in JSON
- # Enables CSS Templates functionality in Settings menu and dashboard forms.
- # When disabled, users can still add custom CSS to dashboards but cannot
use
- # pre-built CSS templates.
- "CSS_TEMPLATES": True,
- # Allow users to optionally specify date formats in email subjects, which
will
- # be parsed if enabled
- "DATE_FORMAT_IN_EMAIL_SUBJECT": False,
- # Allow metrics and columns to be grouped into (potentially nested)
folders in the
- # chart builder
- "DATASET_FOLDERS": False,
- # Enable Table V2 Viz plugin
- "AG_GRID_TABLE_ENABLED": False,
- # Enable Table v2 time comparison feature
- "TABLE_V2_TIME_COMPARISON_ENABLED": False,
- # Enable Superset extensions, which allow users to add custom functionality
- # to Superset without modifying the core codebase.
- "ENABLE_EXTENSIONS": False,
- # Enable support for date range timeshifts (e.g., "2015-01-03 :
2015-01-04")
- # in addition to relative timeshifts (e.g., "1 day ago")
- "DATE_RANGE_TIMESHIFTS_ENABLED": False,
- # Enable Matrixify feature for matrix-style chart layouts
- "MATRIXIFY": False,
- # Force garbage collection after every request
- "FORCE_GARBAGE_COLLECTION_AFTER_EVERY_REQUEST": False,
+ # =================================================================
+ # DEPRECATED
+ # =================================================================
+ # These flags default to True and will be removed in a future major
+ # release. Set to True in your config to avoid unexpected changes.
+ # -----------------------------------------------------------------
+ # Avoid color collisions in charts by using distinct colors
+ # @lifecycle: deprecated
+ "AVOID_COLORS_COLLISION": True,
+ # Enable drill-to-detail functionality in charts
+ # @lifecycle: deprecated
+ "DRILL_TO_DETAIL": True,
+ # Allow JavaScript in chart controls. WARNING: XSS security vulnerability!
+ # @lifecycle: deprecated
+ "ENABLE_JAVASCRIPT_CONTROLS": False,
}
# ------------------------------