apache/superset · error · ExtensionNameError
Display name must start with a letter and can contain letter
Error message
Display name must start with a letter and can contain letters, numbers, spaces, hyphens, underscores, and dots (e.g., 'Dashboard Widgets')
What it means
Thrown by validate_display_name() when the normalized display name fails DISPLAY_NAME_REGEX. A valid display name must start with a letter and may then contain letters, numbers, spaces, hyphens, underscores, and dots — so input beginning with a digit, or containing punctuation like '!', '@', '#', parentheses, or quotes, is rejected. The name is whitespace-normalized (stripped, internal runs collapsed) before the regex runs.
Source
Thrown at superset-extensions-cli/src/superset_extensions_cli/utils.py:277
Validate and normalize display name format.
Args:
display_name: Human-readable extension name
Returns:
Cleaned display name
Raises:
ExtensionNameError: If display name is invalid
"""
if not display_name or not display_name.strip():
raise ExtensionNameError("Display name cannot be empty")
# Normalize whitespace: strip and collapse multiple spaces
normalized = " ".join(display_name.strip().split())
if not DISPLAY_NAME_REGEX.match(normalized):
raise ExtensionNameError(
"Display name must start with a letter and can contain letters, numbers, spaces, hyphens, underscores, and dots (e.g., 'Dashboard Widgets')"
)
# Check for only whitespace/special chars after normalization
if not any(c.isalnum() for c in normalized):
raise ExtensionNameError(
"Display name must contain at least one letter or number"
)
return normalized
def suggest_technical_name(display_name: str) -> str:
"""
Suggest technical name from display name.
Args:
display_name: Human-readable name (e.g., "Dashboard Widgets!")View on GitHub (pinned to f4587218dd)
Solutions
- Strip unsupported punctuation and start with a letter: 'Dashboard Widgets' instead of 'Dashboard Widgets!'.
- If you want richer text, keep punctuation out of the display name and put it in descriptions/README where it is free-form.
- For numbers, move them after the first word ('Helper 2' not '2 Helper') if the leading character is the only problem.
Example fix
# before superset-extensions create my-org dashboard-widgets --display-name "Dashboard Widgets!" # after superset-extensions create my-org dashboard-widgets --display-name "Dashboard Widgets"
Defensive patterns
Strategy: validation
Validate before calling
import re
DISPLAY_RE = re.compile(r"^[A-Za-z][A-Za-z0-9 _.-]*$")
normalized = " ".join(display_name.strip().split())
if not DISPLAY_RE.match(normalized):
normalized = re.sub(r"[^A-Za-z0-9 _.-]+", "", normalized) Prevention
- Keep marketing punctuation, parentheses, and leading digits out of display names; put rich text in descriptions.
- Sanitize pasted names (strip smart quotes and symbols) before validation.
When it happens
Trigger: Passing display names like '1Dashboard' (leading digit), 'Dashboard Widgets!' (exclamation mark), "Superset (charts)" (parentheses), '#1 Widgets' (leading '#'), or any name with emoji/unicode punctuation. Raised from the CLI create/validate commands or a direct validate_display_name() call.
Common situations: Marketing-style names with taglines or exclamation points ('Widgets!'), names prefixed with a version or number ('2FA Helper'), localized names with non-Latin punctuation, or names copied from documents carrying smart quotes.
Related errors
- Publisher must start with a letter and contain only lowercas
- Extension name must start with a letter and contain only low
- Extension name cannot be empty
- Display name cannot be empty
- Display name must contain at least one letter or number
AI-assisted analysis of apache/superset@f4587218dd (2026-08-14).
Data as JSON: /api/errors/f260fef47f3f179c.
Report an issue: GitHub.