From 6e02d19b0d560c3d97483e9f3b17405d5da2fe51 Mon Sep 17 00:00:00 2001
From: Joe Li <joe@preset.io>
Date: Mon, 31 Mar 2025 20:34:24 -0700
Subject: [PATCH] fix: make packages PEP 625 compliant (#32866)

Co-authored-by: Michael S. Molina <michael.s.molina@gmail.com>
---
 .gitignore                                    |  1 +
 README.md                                     | 14 ++++++----
 RELEASING/Dockerfile.from_local_tarball       | 26 +++++++++----------
 RELEASING/Dockerfile.from_svn_tarball         | 24 ++++++++---------
 RELEASING/README.md                           | 12 ++++-----
 RELEASING/email_templates/announce.j2         |  2 +-
 RELEASING/make_tarball.sh                     |  2 +-
 RELEASING/make_tarball_entrypoint.sh          |  2 +-
 RELEASING/set_release_env.sh                  |  4 +--
 RELEASING/test_run_tarball.sh                 |  2 +-
 RELEASING/validate_this_release.sh            |  2 +-
 docs/docs/configuration/databases.mdx         |  2 +-
 .../configuration/networking-settings.mdx     |  2 +-
 docs/docs/contributing/contributing.mdx       |  4 +--
 docs/docs/installation/pypi.mdx               |  6 ++---
 docs/docs/installation/upgrading-superset.mdx |  2 +-
 pyproject.toml                                |  2 +-
 setup.py                                      |  1 +
 superset/config.py                            |  2 +-
 19 files changed, 59 insertions(+), 53 deletions(-)

diff --git a/.gitignore b/.gitignore
index b3ef8b6db1..2f649d941f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -107,6 +107,7 @@ ghostdriver.log
 testCSV.csv
 .terser-plugin-cache/
 apache-superset-*.tar.gz*
+apache_superset-*.tar.gz*
 release.json
 
 # Translation-related files
diff --git a/README.md b/README.md
index c23fd3fdbe..1cc4c44a6d 100644
--- a/README.md
+++ b/README.md
@@ -22,9 +22,9 @@ under the License.
 [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/license/apache-2-0)
 [![Latest Release on Github](https://img.shields.io/github/v/release/apache/superset?sort=semver)](https://github.com/apache/superset/releases/latest)
 [![Build Status](https://github.com/apache/superset/actions/workflows/superset-python-unittest.yml/badge.svg)](https://github.com/apache/superset/actions)
-[![PyPI version](https://badge.fury.io/py/apache-superset.svg)](https://badge.fury.io/py/apache-superset)
+[![PyPI version](https://badge.fury.io/py/apache_superset.svg)](https://badge.fury.io/py/apache_superset)
 [![Coverage Status](https://codecov.io/github/apache/superset/coverage.svg?branch=master)](https://codecov.io/github/apache/superset)
-[![PyPI](https://img.shields.io/pypi/pyversions/apache-superset.svg?maxAge=2592000)](https://pypi.python.org/pypi/apache-superset)
+[![PyPI](https://img.shields.io/pypi/pyversions/apache_superset.svg?maxAge=2592000)](https://pypi.python.org/pypi/apache_superset)
 [![Get on Slack](https://img.shields.io/badge/slack-join-orange.svg)](http://bit.ly/join-superset-slack)
 [![Documentation](https://img.shields.io/badge/docs-apache.org-blue.svg)](https://superset.apache.org)
 
@@ -72,9 +72,10 @@ Superset provides:
 ## Screenshots & Gifs
 
 **Video Overview**
+
 <!-- File hosted here https://github.com/apache/superset-site/raw/lfs/superset-video-4k.mp4 -->
-[superset-video-1080p.webm](https://github.com/user-attachments/assets/b37388f7-a971-409c-96a7-90c4e31322e6)
 
+[superset-video-1080p.webm](https://github.com/user-attachments/assets/b37388f7-a971-409c-96a7-90c4e31322e6)
 
 <br/>
 
@@ -156,7 +157,7 @@ Try out Superset's [quickstart](https://superset.apache.org/docs/quickstart/) gu
   and please read our [Slack Community Guidelines](https://github.com/apache/superset/blob/master/CODE_OF_CONDUCT.md#slack-community-guidelines)
 - [Join our dev@superset.apache.org Mailing list](https://lists.apache.org/list.html?dev@superset.apache.org). To join, simply send an email to [dev-subscribe@superset.apache.org](mailto:dev-subscribe@superset.apache.org)
 - If you want to help troubleshoot GitHub Issues involving the numerous database drivers that Superset supports, please consider adding your name and the databases you have access to on the [Superset Database Familiarity Rolodex](https://docs.google.com/spreadsheets/d/1U1qxiLvOX0kBTUGME1AHHi6Ywel6ECF8xk_Qy-V9R8c/edit#gid=0)
-- Join Superset's Town Hall and [Operational Model](https://preset.io/blog/the-superset-operational-model-wants-you/) recurring meetings.  Meeting info is available on the [Superset Community Calendar](https://superset.apache.org/community)
+- Join Superset's Town Hall and [Operational Model](https://preset.io/blog/the-superset-operational-model-wants-you/) recurring meetings. Meeting info is available on the [Superset Community Calendar](https://superset.apache.org/community)
 
 ## Contributor Guide
 
@@ -184,14 +185,16 @@ Understanding the Superset Points of View
   - [Building New Database Connectors](https://preset.io/blog/building-database-connector/)
   - [Create Your First Dashboard](https://superset.apache.org/docs/using-superset/creating-your-first-dashboard/)
   - [Comprehensive Tutorial for Contributing Code to Apache Superset
-  ](https://preset.io/blog/tutorial-contributing-code-to-apache-superset/)
+    ](https://preset.io/blog/tutorial-contributing-code-to-apache-superset/)
 - [Resources to master Superset by Preset](https://preset.io/resources/)
 
 - Deploying Superset
+
   - [Official Docker image](https://hub.docker.com/r/apache/superset)
   - [Helm Chart](https://github.com/apache/superset/tree/master/helm/superset)
 
 - Recordings of Past [Superset Community Events](https://preset.io/events)
+
   - [Mixed Time Series Charts](https://preset.io/events/mixed-time-series-visualization-in-superset-workshop/)
   - [How the Bing Team Customized Superset for the Internal Self-Serve Data & Analytics Platform](https://preset.io/events/how-the-bing-team-heavily-customized-superset-for-their-internal-data/)
   - [Live Demo: Visualizing MongoDB and Pinot Data using Trino](https://preset.io/events/2021-04-13-visualizing-mongodb-and-pinot-data-using-trino/)
@@ -199,6 +202,7 @@ Understanding the Superset Points of View
   - [Building a Database Connector for Superset](https://preset.io/events/2021-02-16-building-a-database-connector-for-superset/)
 
 - Visualizations
+
   - [Creating Viz Plugins](https://superset.apache.org/docs/contributing/creating-viz-plugins/)
   - [Managing and Deploying Custom Viz Plugins](https://medium.com/nmc-techblog/apache-superset-manage-custom-viz-plugins-in-production-9fde1a708e55)
   - [Why Apache Superset is Betting on Apache ECharts](https://preset.io/blog/2021-4-1-why-echarts/)
diff --git a/RELEASING/Dockerfile.from_local_tarball b/RELEASING/Dockerfile.from_local_tarball
index 6240439050..3794ed4c80 100644
--- a/RELEASING/Dockerfile.from_local_tarball
+++ b/RELEASING/Dockerfile.from_local_tarball
@@ -20,7 +20,7 @@ RUN useradd --user-group --create-home --no-log-init --shell /bin/bash superset
 
 # Configure environment
 ENV LANG=C.UTF-8 \
-    LC_ALL=C.UTF-8
+  LC_ALL=C.UTF-8
 
 RUN apt-get update -y
 
@@ -30,14 +30,14 @@ RUN apt-get install -y apt-transport-https apt-utils
 # Install superset dependencies
 # https://superset.apache.org/docs/installation/installing-superset-from-scratch
 RUN apt-get install -y build-essential libssl-dev \
-    libffi-dev python3-dev libsasl2-dev libldap2-dev libxi-dev chromium zstd
+  libffi-dev python3-dev libsasl2-dev libldap2-dev libxi-dev chromium zstd
 
 # Install nodejs for custom build
 # https://nodejs.org/en/download/package-manager/
 RUN set -eux; \
-    curl -sL https://deb.nodesource.com/setup_20.x | bash -; \
-    apt-get install -y nodejs; \
-    node --version;
+  curl -sL https://deb.nodesource.com/setup_20.x | bash -; \
+  apt-get install -y nodejs; \
+  node --version;
 RUN if ! which npm; then apt-get install -y npm; fi
 
 RUN mkdir -p /home/superset
@@ -50,21 +50,21 @@ ARG SUPERSET_RELEASE_RC_TARBALL
 # Can fetch source from svn or copy tarball from local mounted directory
 COPY $SUPERSET_RELEASE_RC_TARBALL ./
 RUN tar -xvf *.tar.gz
-WORKDIR /home/superset/apache-superset-$VERSION/superset-frontend
+WORKDIR /home/superset/apache_superset-$VERSION/superset-frontend
 
 RUN npm ci \
-    && npm run build \
-    && rm -rf node_modules
+  && npm run build \
+  && rm -rf node_modules
 
-WORKDIR /home/superset/apache-superset-$VERSION
+WORKDIR /home/superset/apache_superset-$VERSION
 RUN pip install --upgrade setuptools pip \
-    && pip install -r requirements/base.txt \
-    && pip install --no-cache-dir .
+  && pip install -r requirements/base.txt \
+  && pip install --no-cache-dir .
 
 RUN flask fab babel-compile --target superset/translations
 
 ENV PATH=/home/superset/superset/bin:$PATH \
-    PYTHONPATH=/home/superset/superset/ \
-    SUPERSET_TESTENV=true
+  PYTHONPATH=/home/superset/superset/ \
+  SUPERSET_TESTENV=true
 COPY from_tarball_entrypoint.sh /entrypoint.sh
 ENTRYPOINT ["/entrypoint.sh"]
diff --git a/RELEASING/Dockerfile.from_svn_tarball b/RELEASING/Dockerfile.from_svn_tarball
index f14754c690..33d0e9451b 100644
--- a/RELEASING/Dockerfile.from_svn_tarball
+++ b/RELEASING/Dockerfile.from_svn_tarball
@@ -20,7 +20,7 @@ RUN useradd --user-group --create-home --no-log-init --shell /bin/bash superset
 
 # Configure environment
 ENV LANG=C.UTF-8 \
-    LC_ALL=C.UTF-8
+  LC_ALL=C.UTF-8
 
 RUN apt-get update -y
 
@@ -30,14 +30,14 @@ RUN apt-get install -y apt-transport-https apt-utils
 # Install superset dependencies
 # https://superset.apache.org/docs/installation/installing-superset-from-scratch
 RUN apt-get install -y subversion build-essential libssl-dev \
-    libffi-dev python3-dev libsasl2-dev libldap2-dev libxi-dev chromium zstd
+  libffi-dev python3-dev libsasl2-dev libldap2-dev libxi-dev chromium zstd
 
 # Install nodejs for custom build
 # https://nodejs.org/en/download/package-manager/
 RUN set -eux; \
-    curl -sL https://deb.nodesource.com/setup_20.x | bash -; \
-    apt-get install -y nodejs; \
-    node --version;
+  curl -sL https://deb.nodesource.com/setup_20.x | bash -; \
+  apt-get install -y nodejs; \
+  node --version;
 RUN if ! which npm; then apt-get install -y npm; fi
 
 RUN mkdir -p /home/superset
@@ -49,20 +49,20 @@ ARG VERSION
 # Can fetch source from svn or copy tarball from local mounted directory
 RUN svn co https://dist.apache.org/repos/dist/dev/superset/$VERSION ./
 RUN tar -xvf *.tar.gz
-WORKDIR /home/superset/apache-superset-$VERSION/superset-frontend
+WORKDIR /home/superset/apache_superset-$VERSION/superset-frontend
 
 RUN npm ci \
-    && npm run build \
-    && rm -rf node_modules
+  && npm run build \
+  && rm -rf node_modules
 
-WORKDIR /home/superset/apache-superset-$VERSION
+WORKDIR /home/superset/apache_superset-$VERSION
 RUN pip install --upgrade setuptools pip \
-    && pip install -r requirements/base.txt \
-    && pip install --no-cache-dir .
+  && pip install -r requirements/base.txt \
+  && pip install --no-cache-dir .
 
 RUN flask fab babel-compile --target superset/translations
 
 ENV PATH=/home/superset/superset/bin:$PATH \
-    PYTHONPATH=/home/superset/superset/
+  PYTHONPATH=/home/superset/superset/
 COPY from_tarball_entrypoint.sh /entrypoint.sh
 ENTRYPOINT ["/entrypoint.sh"]
diff --git a/RELEASING/README.md b/RELEASING/README.md
index 7030571be6..4468c9d278 100644
--- a/RELEASING/README.md
+++ b/RELEASING/README.md
@@ -123,10 +123,10 @@ SUPERSET_RC=1
 SUPERSET_GITHUB_BRANCH=1.5
 SUPERSET_PGP_FULLNAME=villebro@apache.org
 SUPERSET_VERSION_RC=1.5.1rc1
-SUPERSET_RELEASE=apache-superset-1.5.1
-SUPERSET_RELEASE_RC=apache-superset-1.5.1rc1
-SUPERSET_RELEASE_TARBALL=apache-superset-1.5.1-source.tar.gz
-SUPERSET_RELEASE_RC_TARBALL=apache-superset-1.5.1rc1-source.tar.gz
+SUPERSET_RELEASE=apache_superset-1.5.1
+SUPERSET_RELEASE_RC=apache_superset-1.5.1rc1
+SUPERSET_RELEASE_TARBALL=apache_superset-1.5.1-source.tar.gz
+SUPERSET_RELEASE_RC_TARBALL=apache_superset-1.5.1rc1-source.tar.gz
 SUPERSET_TMP_ASF_SITE_PATH=/tmp/incubator-superset-site-1.5.1
 -------------------------------
 ```
@@ -380,7 +380,7 @@ Official instructions:
 https://www.apache.org/info/verification.html
 
 We now have a handy script for anyone validating a release to use. The core of it is in this very folder, `verify_release.py`. Just make sure you have all three release files in the same directory (`{some version}.tar.gz`, `{some version}.tar.gz.asc` and `{some version}tar.gz.sha512`). Then you can pass this script the path to the `.gz` file like so:
-`python verify_release.py ~/path/tp/apache-superset-{version/candidate}-source.tar.gz`
+`python verify_release.py ~/path/tp/apache_superset-{version/candidate}-source.tar.gz`
 
 If all goes well, you will see this result in your terminal:
 
@@ -470,7 +470,7 @@ while requesting access to push packages.
 
 ```bash
 twine upload dist/apache_superset-${SUPERSET_VERSION}-py3-none-any.whl
-twine upload dist/apache-superset-${SUPERSET_VERSION}.tar.gz
+twine upload dist/apache_superset-${SUPERSET_VERSION}.tar.gz
 ```
 
 Set your username to `__token__`
diff --git a/RELEASING/email_templates/announce.j2 b/RELEASING/email_templates/announce.j2
index b12a2ee5b0..01b6893fb3 100644
--- a/RELEASING/email_templates/announce.j2
+++ b/RELEASING/email_templates/announce.j2
@@ -31,7 +31,7 @@ The official source release:
 https://downloads.apache.org/{{ project_module }}/{{ version }}
 
 The PyPI package:
-https://pypi.org/project/apache-superset/{{ version }}
+https://pypi.org/project/apache_superset/{{ version }}
 
 The CHANGELOG for the release:
 https://github.com/apache/{{ project_module }}/blob/{{ version }}/CHANGELOG/{{ version }}.md
diff --git a/RELEASING/make_tarball.sh b/RELEASING/make_tarball.sh
index 47686d4402..c4c53f979e 100755
--- a/RELEASING/make_tarball.sh
+++ b/RELEASING/make_tarball.sh
@@ -32,7 +32,7 @@ else
   SUPERSET_VERSION="${1}"
   SUPERSET_RC="${2}"
   SUPERSET_PGP_FULLNAME="${3}"
-  SUPERSET_RELEASE_RC_TARBALL="apache-superset-${SUPERSET_VERSION_RC}-source.tar.gz"
+  SUPERSET_RELEASE_RC_TARBALL="apache_superset-${SUPERSET_VERSION_RC}-source.tar.gz"
 fi
 
 SUPERSET_VERSION_RC="${SUPERSET_VERSION}rc${SUPERSET_RC}"
diff --git a/RELEASING/make_tarball_entrypoint.sh b/RELEASING/make_tarball_entrypoint.sh
index ffbc0ac33c..022fca294c 100755
--- a/RELEASING/make_tarball_entrypoint.sh
+++ b/RELEASING/make_tarball_entrypoint.sh
@@ -22,7 +22,7 @@ if [ -z "${SUPERSET_VERSION_RC}" ] || [ -z "${SUPERSET_SVN_DEV_PATH}" ] || [ -z
   exit 1
 fi
 
-SUPERSET_RELEASE_RC=apache-superset-"${SUPERSET_VERSION_RC}"
+SUPERSET_RELEASE_RC=apache_superset-"${SUPERSET_VERSION_RC}"
 SUPERSET_RELEASE_RC_TARBALL="${SUPERSET_RELEASE_RC}"-source.tar.gz
 SUPERSET_RELEASE_RC_BASE_PATH="${SUPERSET_SVN_DEV_PATH}"/"${SUPERSET_VERSION_RC}"
 SUPERSET_RELEASE_RC_TARBALL_PATH="${SUPERSET_RELEASE_RC_BASE_PATH}"/"${SUPERSET_RELEASE_RC_TARBALL}"
diff --git a/RELEASING/set_release_env.sh b/RELEASING/set_release_env.sh
index 3d04a76d78..7b29739577 100755
--- a/RELEASING/set_release_env.sh
+++ b/RELEASING/set_release_env.sh
@@ -50,8 +50,8 @@ else
   export SUPERSET_GITHUB_BRANCH="${VERSION_MAJOR}.${VERSION_MINOR}"
   export SUPERSET_PGP_FULLNAME="${2}"
   export SUPERSET_VERSION_RC="${SUPERSET_VERSION}rc${VERSION_RC}"
-  export SUPERSET_RELEASE=apache-superset-"${SUPERSET_VERSION}"
-  export SUPERSET_RELEASE_RC=apache-superset-"${SUPERSET_VERSION_RC}"
+  export SUPERSET_RELEASE=apache_superset-"${SUPERSET_VERSION}"
+  export SUPERSET_RELEASE_RC=apache_superset-"${SUPERSET_VERSION_RC}"
   export SUPERSET_RELEASE_TARBALL="${SUPERSET_RELEASE}"-source.tar.gz
   export SUPERSET_RELEASE_RC_TARBALL="${SUPERSET_RELEASE_RC}"-source.tar.gz
   export SUPERSET_TMP_ASF_SITE_PATH="/tmp/incubator-superset-site-${SUPERSET_VERSION}"
diff --git a/RELEASING/test_run_tarball.sh b/RELEASING/test_run_tarball.sh
index d4c8a9c706..d28c7226bd 100755
--- a/RELEASING/test_run_tarball.sh
+++ b/RELEASING/test_run_tarball.sh
@@ -27,7 +27,7 @@ if [ -z "${SUPERSET_SVN_DEV_PATH}" ]; then
 fi
 
 if [[ -n ${1} ]] && [[ ${1} == "local" ]]; then
-  SUPERSET_RELEASE_RC=apache-superset-"${SUPERSET_VERSION_RC}"
+  SUPERSET_RELEASE_RC=apache_superset-"${SUPERSET_VERSION_RC}"
   SUPERSET_RELEASE_RC_TARBALL="${SUPERSET_RELEASE_RC}"-source.tar.gz
   SUPERSET_TARBALL_PATH="${SUPERSET_SVN_DEV_PATH}"/${SUPERSET_VERSION_RC}/${SUPERSET_RELEASE_RC_TARBALL}
   SUPERSET_TMP_TARBALL_FILENAME=_tmp_"${SUPERSET_VERSION_RC}".tar.gz
diff --git a/RELEASING/validate_this_release.sh b/RELEASING/validate_this_release.sh
index 98c502be2a..4942803702 100755
--- a/RELEASING/validate_this_release.sh
+++ b/RELEASING/validate_this_release.sh
@@ -38,7 +38,7 @@ get_pip_command() {
 PYTHON=$(get_python_command)
 PIP=$(get_pip_command)
 
-# Get the release directory's path. If you unzip an Apache release and just run the npm script to validate the release, this will be a file name like `apache-superset-x.x.xrcx-source.tar.gz`
+# Get the release directory's path. If you unzip an Apache release and just run the npm script to validate the release, this will be a file name like `apache_superset-x.x.xrcx-source.tar.gz`
 RELEASE_ZIP_PATH="../../$(basename "$(dirname "$(pwd)")")-source.tar.gz"
 
 # Install dependencies from requirements.txt if the file exists
diff --git a/docs/docs/configuration/databases.mdx b/docs/docs/configuration/databases.mdx
index d30d4c2e39..e74c1e535a 100644
--- a/docs/docs/configuration/databases.mdx
+++ b/docs/docs/configuration/databases.mdx
@@ -72,7 +72,7 @@ are compatible with Superset.
 | [PostgreSQL](/docs/configuration/databases#postgres)                    | `pip install psycopg2`                                                             | `postgresql://<UserName>:<DBPassword>@<Database Host>/<Database Name>`                                                                                 |
 | [Presto](/docs/configuration/databases#presto)                          | `pip install pyhive`                                                               | `presto://{username}:{password}@{hostname}:{port}/{database}`                                                                                                                                            |
 | [Rockset](/docs/configuration/databases#rockset)                        | `pip install rockset-sqlalchemy`                                                   | `rockset://<api_key>:@<api_server>`                                                                                                                    |
-| [SAP Hana](/docs/configuration/databases#hana)                          | `pip install hdbcli sqlalchemy-hana` or `pip install apache-superset[hana]`          | `hana://{username}:{password}@{host}:{port}`                                                                                                           |
+| [SAP Hana](/docs/configuration/databases#hana)                          | `pip install hdbcli sqlalchemy-hana` or `pip install apache_superset[hana]`          | `hana://{username}:{password}@{host}:{port}`                                                                                                           |
 | [StarRocks](/docs/configuration/databases#starrocks)                    | `pip install starrocks`                                                            | `starrocks://<User>:<Password>@<Host>:<Port>/<Catalog>.<Database>`                                                                                     |
 | [Snowflake](/docs/configuration/databases#snowflake)                    | `pip install snowflake-sqlalchemy`                                                 | `snowflake://{user}:{password}@{account}.{region}/{database}?role={role}&warehouse={warehouse}`                                                        |
 | SQLite                                                    | No additional library needed                                                       | `sqlite://path/to/file.db?check_same_thread=false`                                                                                                     |
diff --git a/docs/docs/configuration/networking-settings.mdx b/docs/docs/configuration/networking-settings.mdx
index 03b2b981fe..4921a277d4 100644
--- a/docs/docs/configuration/networking-settings.mdx
+++ b/docs/docs/configuration/networking-settings.mdx
@@ -11,7 +11,7 @@ version: 1
 To configure CORS, or cross-origin resource sharing, the following dependency must be installed:
 
 ```python
-pip install apache-superset[cors]
+pip install apache_superset[cors]
 ```
 
 The following keys in `superset_config.py` can be specified to configure CORS:
diff --git a/docs/docs/contributing/contributing.mdx b/docs/docs/contributing/contributing.mdx
index 6ae7901874..109a3692df 100644
--- a/docs/docs/contributing/contributing.mdx
+++ b/docs/docs/contributing/contributing.mdx
@@ -26,9 +26,9 @@ More references:
 Here's a list of repositories that contain Superset-related packages:
 
 - [apache/superset](https://github.com/apache/superset)
-  is the main repository containing the `apache-superset` Python package
+  is the main repository containing the `apache_superset` Python package
   distributed on
-  [pypi](https://pypi.org/project/apache-superset/). This repository
+  [pypi](https://pypi.org/project/apache_superset/). This repository
   also includes Superset's main TypeScript/JavaScript bundles and react apps under
   the [superset-frontend](https://github.com/apache/superset/tree/master/superset-frontend)
   folder.
diff --git a/docs/docs/installation/pypi.mdx b/docs/docs/installation/pypi.mdx
index 3e01986f5c..da2aabcf0b 100644
--- a/docs/docs/installation/pypi.mdx
+++ b/docs/docs/installation/pypi.mdx
@@ -12,7 +12,7 @@ import useBaseUrl from "@docusaurus/useBaseUrl";
 <img src={useBaseUrl("/img/pypi.png" )} width="150" />
 <br /><br />
 
-This page describes how to install Superset using the `apache-superset` package [published on PyPI](https://pypi.org/project/apache-superset/).
+This page describes how to install Superset using the `apache_superset` package [published on PyPI](https://pypi.org/project/apache_superset/).
 
 ## OS Dependencies
 
@@ -124,10 +124,10 @@ command line.
 
 ### Installing and Initializing Superset
 
-First, start by installing `apache-superset`:
+First, start by installing `apache_superset`:
 
 ```bash
-pip install apache-superset
+pip install apache_superset
 ```
 
 Then, define mandatory configurations, SECRET_KEY and FLASK_APP:
diff --git a/docs/docs/installation/upgrading-superset.mdx b/docs/docs/installation/upgrading-superset.mdx
index 459223385c..38e03822dd 100644
--- a/docs/docs/installation/upgrading-superset.mdx
+++ b/docs/docs/installation/upgrading-superset.mdx
@@ -32,7 +32,7 @@ docker compose up
 To upgrade superset in a native installation, run the following commands:
 
 ```bash
-pip install apache-superset --upgrade
+pip install apache_superset --upgrade
 ```
 
 ## Upgrading the Metadata Database
diff --git a/pyproject.toml b/pyproject.toml
index 2885418397..55364db11f 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -20,7 +20,7 @@ requires = ["setuptools>=40.9.0", "wheel"]
 build-backend = "setuptools.build_meta"
 
 [project]
-name = "apache-superset"
+name = "apache_superset"
 description = "A modern, enterprise-ready business intelligence web application"
 readme = "README.md"
 dynamic = ["version", "scripts", "entry-points"]
diff --git a/setup.py b/setup.py
index b89288f760..9b834cc241 100644
--- a/setup.py
+++ b/setup.py
@@ -52,6 +52,7 @@ with open(VERSION_INFO_FILE, "w") as version_file:
 version_string = version_string.replace("-dev", ".dev0")
 
 setup(
+    name="apache_superset",
     version=version_string,
     packages=find_packages(),
     include_package_data=True,
diff --git a/superset/config.py b/superset/config.py
index 8be07ed935..d9c35e04fa 100644
--- a/superset/config.py
+++ b/superset/config.py
@@ -818,7 +818,7 @@ STORE_CACHE_KEYS_IN_METADATA_DB = False
 
 # CORS Options
 # NOTE: enabling this requires installing the cors-related python dependencies
-# `pip install .[cors]` or `pip install apache-superset[cors]`, depending
+# `pip install .[cors]` or `pip install apache_superset[cors]`, depending
 ENABLE_CORS = False
 CORS_OPTIONS: dict[Any, Any] = {}
 
-- 
GitLab