chore(extensions): simplify backend package structure by removing superset_extensions namespace (#38476)

This commit is contained in:
Michael S. Molina
2026-03-06 14:49:49 -03:00
committed by GitHub
parent 5fb9e17721
commit a6c0d6321f
12 changed files with 70 additions and 169 deletions

View File

@@ -167,7 +167,7 @@ def build_manifest(cwd: Path, remote_entry: str | None) -> Manifest:
# Generate conventional entry point
publisher_snake = kebab_to_snake_case(extension.publisher)
name_snake = kebab_to_snake_case(extension.name)
entrypoint = f"superset_extensions.{publisher_snake}.{name_snake}.entrypoint"
entrypoint = f"{publisher_snake}.{name_snake}.entrypoint"
backend = ManifestBackend(entrypoint=entrypoint)
return Manifest(
@@ -344,12 +344,7 @@ def validate() -> None:
publisher_snake = kebab_to_snake_case(extension.publisher)
name_snake = kebab_to_snake_case(extension.name)
expected_entry_file = (
backend_dir
/ "src"
/ "superset_extensions"
/ publisher_snake
/ name_snake
/ "entrypoint.py"
backend_dir / "src" / publisher_snake / name_snake / "entrypoint.py"
)
if not expected_entry_file.exists():
@@ -359,7 +354,7 @@ def validate() -> None:
fg="red",
)
click.secho(
f" Convention requires: backend/src/superset_extensions/{publisher_snake}/{name_snake}/entrypoint.py",
f" Convention requires: backend/src/{publisher_snake}/{name_snake}/entrypoint.py",
fg="yellow",
)
sys.exit(1)
@@ -713,23 +708,19 @@ def init(
(frontend_src_dir / "index.tsx").write_text(index_tsx)
click.secho("✅ Created frontend folder structure", fg="green")
# Initialize backend files with superset_extensions.publisher.name structure
# Initialize backend files with publisher.name structure
if include_backend:
backend_dir = target_dir / "backend"
backend_dir.mkdir()
backend_src_dir = backend_dir / "src"
backend_src_dir.mkdir()
# Create superset_extensions namespace directory
namespace_dir = backend_src_dir / "superset_extensions"
namespace_dir.mkdir()
# Create publisher directory (e.g., superset_extensions/my_org)
# Create publisher directory (e.g., my_org)
publisher_snake = kebab_to_snake_case(names["publisher"])
publisher_dir = namespace_dir / publisher_snake
publisher_dir = backend_src_dir / publisher_snake
publisher_dir.mkdir()
# Create extension package directory (e.g., superset_extensions/my_org/dashboard_widgets)
# Create extension package directory (e.g., my_org/dashboard_widgets)
name_snake = kebab_to_snake_case(names["name"])
extension_package_dir = publisher_dir / name_snake
extension_package_dir.mkdir()

View File

@@ -42,8 +42,8 @@ class ExtensionNames(TypedDict):
# Backend package name with hyphens for distribution (e.g., "my_org-dashboard_widgets")
backend_package: str
# Full backend import path (e.g., "superset_extensions.my_org.dashboard_widgets")
# Full backend import path (e.g., "my_org.dashboard_widgets")
backend_path: str
# Backend entry point (e.g., "superset_extensions.my_org.dashboard_widgets.entrypoint")
# Backend entry point (e.g., "my_org.dashboard_widgets.entrypoint")
backend_entry: str

View File

@@ -361,7 +361,7 @@ def generate_extension_names(
publisher_snake = kebab_to_snake_case(publisher)
name_snake = kebab_to_snake_case(technical_name)
backend_package = f"{publisher_snake}-{name_snake}"
backend_path = f"superset_extensions.{publisher_snake}.{name_snake}"
backend_path = f"{publisher_snake}.{name_snake}"
backend_entry = f"{backend_path}.entrypoint"
# Validate the generated names