You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by ma...@apache.org on 2024/03/11 17:38:31 UTC

(superset) branch kill-pip-compile-multi created (now f41bb40246)

This is an automated email from the ASF dual-hosted git repository.

maximebeauchemin pushed a change to branch kill-pip-compile-multi
in repository https://gitbox.apache.org/repos/asf/superset.git


      at f41bb40246 chore: simplify python dependencies management

This branch includes the following new commits:

     new f41bb40246 chore: simplify python dependencies management

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



(superset) 01/01: chore: simplify python dependencies management

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

maximebeauchemin pushed a commit to branch kill-pip-compile-multi
in repository https://gitbox.apache.org/repos/asf/superset.git

commit f41bb402469c39efb8eb3b57d8b88051ff4f246e
Author: Maxime Beauchemin <ma...@gmail.com>
AuthorDate: Mon Mar 11 10:22:54 2024 -0700

    chore: simplify python dependencies management
    
    POC around simplifying our python dependency setup. Goal ultimately is
    to restore dependabot support and overall untangle complex nested dependencies.
    
    Here I'm aiming at having two bundles: a base/lean bundle, and a
    development bundle. We used to have testing/integration/docker/local and
    we're merging all this into development.
    
    While the benefits of simplifying are clear, the tradeoff is having a
    more bloated setup for development. My stance here that having a more
    bloated dev setup is better than having 3-4 that are confusing and
    half-broken at times.
---
 .github/workflows/pre-commit.yml                   |   4 +-
 .github/workflows/superset-applitool-cypress.yml   |   2 +-
 .github/workflows/superset-cli.yml                 |   4 +-
 .github/workflows/superset-e2e.yml                 |   2 +-
 .../workflows/superset-python-integrationtest.yml  |  12 +-
 .github/workflows/superset-python-misc.yml         |   4 +-
 .github/workflows/superset-python-presto-hive.yml  |   8 +-
 .github/workflows/superset-python-unittest.yml     |   4 +-
 .pre-commit-config.yaml                            |   4 -
 CONTRIBUTING.md                                    |   6 +-
 Dockerfile                                         |  11 +-
 Makefile                                           |   6 +-
 docs/docs/contributing/hooks-and-linting.mdx       |   2 +-
 docs/docs/contributing/local-backend.mdx           |   4 +-
 requirements/base.in                               |   2 +
 requirements/base.txt                              |  26 +-
 requirements/development.in                        |  17 +-
 requirements/development.txt                       | 719 ++++++++++++++++++++-
 requirements/docker.in                             |  19 -
 requirements/docker.txt                            |  23 -
 requirements/integration.in                        |  19 -
 requirements/integration.txt                       |  74 ---
 requirements/local.in                              |  17 -
 requirements/local.txt                             |  15 -
 requirements/testing.in                            |  31 -
 requirements/testing.txt                           | 147 -----
 tox.ini                                            |   8 +-
 27 files changed, 777 insertions(+), 413 deletions(-)

diff --git a/.github/workflows/pre-commit.yml b/.github/workflows/pre-commit.yml
index f9a3681ce0..bc12bdd8cf 100644
--- a/.github/workflows/pre-commit.yml
+++ b/.github/workflows/pre-commit.yml
@@ -32,7 +32,7 @@ jobs:
           cache: "pip"
           cache-dependency-path: |
             requirements/base.txt
-            requirements/integration.txt
+            requirements/development.txt
       - name: Install dependencies
         uses: ./.github/actions/cached-dependencies
         with:
@@ -41,7 +41,7 @@ jobs:
             pip-upgrade
             pip install wheel
             pip install -r requirements/base.txt
-            pip install -r requirements/integration.txt
+            pip install -r requirements/development.txt
       # Add brew to the path - see https://github.com/actions/runner-images/issues/6283
       - name: Enable brew and helm-docs
         run: |
diff --git a/.github/workflows/superset-applitool-cypress.yml b/.github/workflows/superset-applitool-cypress.yml
index 7341372cad..a7cbf3b68f 100644
--- a/.github/workflows/superset-applitool-cypress.yml
+++ b/.github/workflows/superset-applitool-cypress.yml
@@ -70,7 +70,7 @@ jobs:
         with:
           run: |
             pip-upgrade
-            pip install -r requirements/testing.txt
+            pip install -r requirements/development.txt
       - name: Setup postgres
         uses: ./.github/actions/cached-dependencies
         with:
diff --git a/.github/workflows/superset-cli.yml b/.github/workflows/superset-cli.yml
index 9c52f36497..b718618558 100644
--- a/.github/workflows/superset-cli.yml
+++ b/.github/workflows/superset-cli.yml
@@ -57,7 +57,7 @@ jobs:
         with:
           python-version: ${{ matrix.python-version }}
           cache: "pip"
-          cache-dependency-path: "requirements/testing.txt"
+          cache-dependency-path: "requirements/development.txt"
       - name: Install dependencies
         if: steps.check.outcome == 'failure'
         uses: ./.github/actions/cached-dependencies
@@ -66,7 +66,7 @@ jobs:
             apt-get-install
             pip-upgrade
             pip install wheel
-            pip install -r requirements/testing.txt
+            pip install -r requirements/development.txt
             setup-postgres
       - name: superset init
         if: steps.check.outcome == 'failure'
diff --git a/.github/workflows/superset-e2e.yml b/.github/workflows/superset-e2e.yml
index 71b415ee6e..f871494330 100644
--- a/.github/workflows/superset-e2e.yml
+++ b/.github/workflows/superset-e2e.yml
@@ -83,7 +83,7 @@ jobs:
         with:
           run: |
             pip-upgrade
-            pip install -r requirements/testing.txt
+            pip install -r requirements/development.txt
       - name: Setup postgres
         if: steps.check.outcome == 'failure'
         uses: ./.github/actions/cached-dependencies
diff --git a/.github/workflows/superset-python-integrationtest.yml b/.github/workflows/superset-python-integrationtest.yml
index 6bf314d961..8f753e1668 100644
--- a/.github/workflows/superset-python-integrationtest.yml
+++ b/.github/workflows/superset-python-integrationtest.yml
@@ -56,7 +56,7 @@ jobs:
         with:
           python-version: ${{ matrix.python-version }}
           cache: "pip"
-          cache-dependency-path: "requirements/testing.txt"
+          cache-dependency-path: "requirements/development.txt"
       - name: Install dependencies
         if: steps.check.outcome == 'failure'
         uses: ./.github/actions/cached-dependencies
@@ -65,7 +65,7 @@ jobs:
             apt-get-install
             pip-upgrade
             pip install wheel
-            pip install -r requirements/testing.txt
+            pip install -r requirements/development.txt
             setup-mysql
       - name: Run celery
         if: steps.check.outcome == 'failure'
@@ -122,7 +122,7 @@ jobs:
         with:
           python-version: ${{ matrix.python-version }}
           cache: "pip"
-          cache-dependency-path: "requirements/testing.txt"
+          cache-dependency-path: "requirements/development.txt"
       - name: Install dependencies
         if: steps.check.outcome == 'failure'
         uses: ./.github/actions/cached-dependencies
@@ -131,7 +131,7 @@ jobs:
             apt-get-install
             pip-upgrade
             pip install wheel
-            pip install -r requirements/testing.txt
+            pip install -r requirements/development.txt
             setup-postgres
       - name: Run celery
         if: steps.check.outcome == 'failure'
@@ -182,7 +182,7 @@ jobs:
         with:
           python-version: ${{ matrix.python-version }}
           cache: "pip"
-          cache-dependency-path: "requirements/testing.txt"
+          cache-dependency-path: "requirements/development.txt"
       - name: Install dependencies
         if: steps.check.outcome == 'failure'
         uses: ./.github/actions/cached-dependencies
@@ -191,7 +191,7 @@ jobs:
             apt-get-install
             pip-upgrade
             pip install wheel
-            pip install -r requirements/testing.txt
+            pip install -r requirements/development.txt
             mkdir ${{ github.workspace }}/.temp
       - name: Run celery
         if: steps.check.outcome == 'failure'
diff --git a/.github/workflows/superset-python-misc.yml b/.github/workflows/superset-python-misc.yml
index e05e05f48b..539a9bc927 100644
--- a/.github/workflows/superset-python-misc.yml
+++ b/.github/workflows/superset-python-misc.yml
@@ -43,7 +43,7 @@ jobs:
         with:
           python-version: ${{ matrix.python-version }}
           cache: "pip"
-          cache-dependency-path: "requirements/testing.txt"
+          cache-dependency-path: "requirements/development.txt"
       - name: Install dependencies
         if: steps.check.outcome == 'failure'
         uses: ./.github/actions/cached-dependencies
@@ -52,7 +52,7 @@ jobs:
             apt-get-install
             pip-upgrade
             pip install wheel
-            pip install -r requirements/testing.txt
+            pip install -r requirements/development.txt
       - name: pylint
         if: steps.check.outcome == 'failure'
         # `-j 0` run Pylint in parallel
diff --git a/.github/workflows/superset-python-presto-hive.yml b/.github/workflows/superset-python-presto-hive.yml
index af2c844057..4e47e3f896 100644
--- a/.github/workflows/superset-python-presto-hive.yml
+++ b/.github/workflows/superset-python-presto-hive.yml
@@ -72,7 +72,7 @@ jobs:
         with:
           python-version: ${{ matrix.python-version }}
           cache: "pip"
-          cache-dependency-path: "requirements/testing.txt"
+          cache-dependency-path: "requirements/development.txt"
       - name: Install dependencies
         if: steps.check.outcome == 'failure'
         uses: ./.github/actions/cached-dependencies
@@ -81,7 +81,7 @@ jobs:
             apt-get-install
             pip-upgrade
             pip install wheel
-            pip install -r requirements/testing.txt
+            pip install -r requirements/development.txt
             setup-postgres
       - name: Run celery
         if: steps.check.outcome == 'failure'
@@ -149,7 +149,7 @@ jobs:
         with:
           python-version: ${{ matrix.python-version }}
           cache: "pip"
-          cache-dependency-path: "requirements/testing.txt"
+          cache-dependency-path: "requirements/development.txt"
       - name: Install dependencies
         if: steps.check.outcome == 'failure'
         uses: ./.github/actions/cached-dependencies
@@ -158,7 +158,7 @@ jobs:
             apt-get-install
             pip-upgrade
             pip install wheel
-            pip install -r requirements/testing.txt
+            pip install -r requirements/development.txt
             setup-postgres
       - name: Run celery
         if: steps.check.outcome == 'failure'
diff --git a/.github/workflows/superset-python-unittest.yml b/.github/workflows/superset-python-unittest.yml
index 2bdb8cef3e..adaac41aaf 100644
--- a/.github/workflows/superset-python-unittest.yml
+++ b/.github/workflows/superset-python-unittest.yml
@@ -51,7 +51,7 @@ jobs:
         with:
           python-version: ${{ matrix.python-version }}
           cache: "pip"
-          cache-dependency-path: "requirements/testing.txt"
+          cache-dependency-path: "requirements/development.txt"
       # TODO: separated requirements.txt file just for unit tests
       - name: Install dependencies
         if: steps.check.outcome == 'failure'
@@ -61,7 +61,7 @@ jobs:
             apt-get-install
             pip-upgrade
             pip install wheel
-            pip install -r requirements/testing.txt
+            pip install -r requirements/development.txt
             mkdir ${{ github.workspace }}/.temp
       - name: Python unit tests
         if: steps.check.outcome == 'failure'
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index 3549b3f473..d18eea6b91 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -56,10 +56,6 @@ repos:
             types-paramiko,
             types-Markdown,
           ]
-  - repo: https://github.com/peterdemin/pip-compile-multi
-    rev: v2.6.2
-    hooks:
-      - id: pip-compile-multi-verify
   - repo: https://github.com/pre-commit/pre-commit-hooks
     rev: v4.4.0
     hooks:
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 4afa69eb2e..50c0663972 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -477,7 +477,7 @@ python3 -m venv venv # setup a python3 virtualenv
 source venv/bin/activate
 
 # Install external dependencies
-pip install -r requirements/testing.txt
+pip install -r requirements/development.txt
 
 # Install Superset in editable (development) mode
 pip install -e .
@@ -531,7 +531,7 @@ If you add a new requirement or update an existing requirement (per the `install
 ```bash
 $ python3 -m venv venv
 $ source venv/bin/activate
-$ python3 -m pip install -r requirements/integration.txt
+$ python3 -m pip install -r requirements/development.txt
 $ pip-compile-multi --no-upgrade
 ```
 
@@ -749,7 +749,7 @@ The current status of the usability of each flag (stable vs testing, etc) can be
 Superset uses Git pre-commit hooks courtesy of [pre-commit](https://pre-commit.com/). To install run the following:
 
 ```bash
-pip3 install -r requirements/integration.txt
+pip3 install -r requirements/development.txt
 pre-commit install
 ```
 
diff --git a/Dockerfile b/Dockerfile
index fc3e667037..8e9b0eb075 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -79,11 +79,9 @@ RUN mkdir -p ${PYTHONPATH} superset/static superset-frontend apache_superset.egg
 COPY --chown=superset:superset setup.py MANIFEST.in README.md ./
 # setup.py uses the version information in package.json
 COPY --chown=superset:superset superset-frontend/package.json superset-frontend/
-RUN --mount=type=bind,target=./requirements/local.txt,src=./requirements/local.txt \
-    --mount=type=bind,target=./requirements/development.txt,src=./requirements/development.txt \
-    --mount=type=bind,target=./requirements/base.txt,src=./requirements/base.txt \
+RUN --mount=type=bind,target=./requirements/base.txt,src=./requirements/base.txt \
     --mount=type=cache,target=/root/.cache/pip \
-    pip install -r requirements/local.txt
+    pip install -r requirements/base.txt
 
 COPY --chown=superset:superset --from=superset-node /app/superset/static/assets superset/static/assets
 ## Lastly, let's install superset itself
@@ -127,10 +125,9 @@ RUN apt-get update -qq \
     && ln -s /opt/firefox/firefox /usr/local/bin/firefox \
     && apt-get autoremove -yqq --purge wget && rm -rf /var/[log,tmp]/* /tmp/* /var/lib/apt/lists/*
 # Cache everything for dev purposes...
-RUN --mount=type=bind,target=./requirements/base.txt,src=./requirements/base.txt \
-    --mount=type=bind,target=./requirements/docker.txt,src=./requirements/docker.txt \
+RUN --mount=type=bind,target=./requirements/development.txt,src=./requirements/development.txt \
     --mount=type=cache,target=/root/.cache/pip \
-    pip install -r requirements/docker.txt
+    pip install -r requirements/development.txt
 
 USER superset
 ######################################################################
diff --git a/Makefile b/Makefile
index 14e7bb17ef..42ec9f5aa4 100644
--- a/Makefile
+++ b/Makefile
@@ -24,7 +24,7 @@ install: superset pre-commit
 
 superset:
 	# Install external dependencies
-	pip install -r requirements/local.txt
+	pip install -r requirements/development.txt
 
 	# Install Superset in editable (development) mode
 	pip install -e .
@@ -53,7 +53,7 @@ update: update-py update-js
 
 update-py:
 	# Install external dependencies
-	pip install -r requirements/local.txt
+	pip install -r requirements/development.txt
 
 	# Install Superset in editable (development) mode
 	pip install -e .
@@ -79,7 +79,7 @@ activate:
 
 pre-commit:
 	# setup pre commit dependencies
-	pip3 install -r requirements/integration.txt
+	pip3 install -r requirements/development.txt
 	pre-commit install
 
 format: py-format js-format
diff --git a/docs/docs/contributing/hooks-and-linting.mdx b/docs/docs/contributing/hooks-and-linting.mdx
index 68c9d28ca0..8b4d173c0c 100644
--- a/docs/docs/contributing/hooks-and-linting.mdx
+++ b/docs/docs/contributing/hooks-and-linting.mdx
@@ -10,7 +10,7 @@ version: 1
 Superset uses Git pre-commit hooks courtesy of [pre-commit](https://pre-commit.com/). To install run the following:
 
 ```bash
-pip3 install -r requirements/integration.txt
+pip3 install -r requirements/development.txt
 pre-commit install
 ```
 
diff --git a/docs/docs/contributing/local-backend.mdx b/docs/docs/contributing/local-backend.mdx
index b7d0d8f14a..a288bd937c 100644
--- a/docs/docs/contributing/local-backend.mdx
+++ b/docs/docs/contributing/local-backend.mdx
@@ -20,7 +20,7 @@ python3 -m venv venv # setup a python3 virtualenv
 source venv/bin/activate
 
 # Install external dependencies
-pip install -r requirements/testing.txt
+pip install -r requirements/development.txt
 
 # Install Superset in editable (development) mode
 pip install -e .
@@ -75,7 +75,7 @@ If you add a new requirement or update an existing requirement (per the `install
 ```bash
 $ python3 -m venv venv
 $ source venv/bin/activate
-$ python3 -m pip install -r requirements/integration.txt
+$ python3 -m pip install -r requirements/development.txt
 $ pip-compile-multi --no-upgrade
 ```
 
diff --git a/requirements/base.in b/requirements/base.in
index d0f7108840..0ac31dbfb7 100644
--- a/requirements/base.in
+++ b/requirements/base.in
@@ -20,3 +20,5 @@
 urllib3>=1.26.18
 werkzeug>=3.0.1
 numexpr>=2.9.0
+urllib3>=1.25.4,<1.27 # botocore 1.34.32
+referencing>=0.28.0,<0.32.0 # jsonschema-path 0.3.2
diff --git a/requirements/base.txt b/requirements/base.txt
index 0df7e08041..c07a281320 100644
--- a/requirements/base.txt
+++ b/requirements/base.txt
@@ -1,9 +1,8 @@
-# SHA1:85649679306ea016e401f37adfbad832028d2e5f
 #
-# This file is autogenerated by pip-compile-multi
-# To update, run:
+# This file is autogenerated by pip-compile with Python 3.9
+# by the following command:
 #
-#    pip-compile-multi
+#    pip-compile --output-file=requirements/base.txt requirements/base.in
 #
 -e file:.
     # via -r requirements/base.in
@@ -21,6 +20,7 @@ attrs==23.1.0
     # via
     #   cattrs
     #   jsonschema
+    #   referencing
     #   requests-cache
 babel==2.9.1
     # via flask-babel
@@ -145,9 +145,7 @@ geopy==2.2.0
 google-auth==2.27.0
     # via shillelagh
 greenlet==3.0.3
-    # via
-    #   shillelagh
-    #   sqlalchemy
+    # via shillelagh
 gunicorn==21.2.0
     # via apache-superset
 hashids==1.3.1
@@ -161,7 +159,10 @@ idna==3.2
     #   email-validator
     #   requests
 importlib-metadata==6.6.0
-    # via apache-superset
+    # via
+    #   apache-superset
+    #   flask
+    #   shillelagh
 importlib-resources==5.12.0
     # via limits
 isodate==0.6.0
@@ -303,6 +304,8 @@ pyyaml==6.0.1
     #   apispec
 redis==4.6.0
     # via apache-superset
+referencing==0.31.1
+    # via -r requirements/base.in
 requests==2.31.0
     # via
     #   requests-cache
@@ -311,6 +314,8 @@ requests-cache==1.1.1
     # via shillelagh
 rich==13.3.4
     # via flask-limiter
+rpds-py==0.18.0
+    # via referencing
 rsa==4.9
     # via google-auth
 selenium==3.141.0
@@ -357,6 +362,7 @@ typing-extensions==4.4.0
     #   apache-superset
     #   cattrs
     #   flask-limiter
+    #   kombu
     #   limits
     #   shillelagh
 tzdata==2023.3
@@ -398,7 +404,9 @@ wtforms-json==0.3.5
 xlsxwriter==3.0.7
     # via apache-superset
 zipp==3.15.0
-    # via importlib-metadata
+    # via
+    #   importlib-metadata
+    #   importlib-resources
 
 # The following packages are considered to be unsafe in a requirements file:
 # setuptools
diff --git a/requirements/development.in b/requirements/development.in
index d939d085a0..ff663a758f 100644
--- a/requirements/development.in
+++ b/requirements/development.in
@@ -17,11 +17,26 @@
 # under the License.
 #
 -r base.in
--e .[cors,druid,hive,mysql,postgres,thumbnails]
+-e file:.[bigquery,core,druid,hive,gevent,mysql,postgres,presto,prophet,trino,gsheets,playwright,thumbnails]
+docker
+flask-testing
+freezegun
+greenlet>=2.0.2
+grpcio>=1.55.3
 ipython
+openapi-spec-validator
+parameterized
+pip-compile-multi
+pre-commit
 progress>=1.5,<2
+pyfakefs
 pyinstrument>=4.0.2,<5
 pylint
+pytest
+pytest-cov
+pytest-mock
 python-ldap>=3.4.3
 setuptools>=65.5.1
 sqloxide
+statsd
+tox
diff --git a/requirements/development.txt b/requirements/development.txt
index 463781a1f2..4a1c411a5f 100644
--- a/requirements/development.txt
+++ b/requirements/development.txt
@@ -1,79 +1,501 @@
-# SHA1:e35d6e709dc86002ca35ad59f7119aa6cc1e7179
 #
-# This file is autogenerated by pip-compile-multi
-# To update, run:
+# This file is autogenerated by pip-compile with Python 3.9
+# by the following command:
 #
-#    pip-compile-multi
+#    pip-compile --output-file=requirements/development.txt requirements/development.in
 #
--r base.txt
 -e file:.
-    # via
-    #   -r requirements/base.in
-    #   -r requirements/development.in
+    # via -r requirements/base.in
+alembic==1.6.5
+    # via flask-migrate
+amqp==5.1.1
+    # via kombu
+apispec[yaml]==6.3.0
+    # via flask-appbuilder
+appnope==0.1.4
+    # via ipython
+apsw==3.42.0.1
+    # via shillelagh
 astroid==2.15.8
     # via pylint
 asttokens==2.2.1
     # via stack-data
+async-timeout==4.0.2
+    # via redis
+attrs==23.1.0
+    # via
+    #   cattrs
+    #   jsonlines
+    #   jsonschema
+    #   referencing
+    #   requests-cache
+babel==2.9.1
+    # via flask-babel
 backcall==0.2.0
     # via ipython
+backoff==1.11.1
+    # via apache-superset
+bcrypt==4.0.1
+    # via paramiko
+billiard==4.2.0
+    # via celery
 boto3==1.26.130
     # via tabulator
 botocore==1.29.130
     # via
     #   boto3
     #   s3transfer
+bottleneck==1.3.7
+    # via pandas
+brotli==1.0.9
+    # via flask-compress
+build==1.1.1
+    # via pip-tools
 cached-property==1.5.2
     # via tableschema
-chardet==5.1.0
-    # via tabulator
+cachelib==0.9.0
+    # via
+    #   flask-caching
+    #   flask-session
+cachetools==5.3.2
+    # via
+    #   google-auth
+    #   tox
+cattrs==23.2.1
+    # via requests-cache
+celery==5.3.6
+    # via apache-superset
+certifi==2023.7.22
+    # via requests
+cffi==1.15.1
+    # via
+    #   cryptography
+    #   pynacl
+cfgv==3.4.0
+    # via pre-commit
+chardet==5.2.0
+    # via
+    #   tabulator
+    #   tox
+charset-normalizer==3.2.0
+    # via requests
+click==8.1.3
+    # via
+    #   apache-superset
+    #   celery
+    #   click-didyoumean
+    #   click-option-group
+    #   click-plugins
+    #   click-repl
+    #   flask
+    #   flask-appbuilder
+    #   pip-compile-multi
+    #   pip-tools
+    #   tableschema
+    #   tabulator
+click-didyoumean==0.3.0
+    # via celery
+click-option-group==0.5.5
+    # via apache-superset
+click-plugins==1.1.1
+    # via celery
+click-repl==0.2.0
+    # via celery
+cmdstanpy==1.2.1
+    # via prophet
+colorama==0.4.6
+    # via
+    #   apache-superset
+    #   flask-appbuilder
+    #   tox
+contourpy==1.2.0
+    # via matplotlib
+coverage[toml]==7.4.3
+    # via pytest-cov
+cron-descriptor==1.2.24
+    # via apache-superset
+croniter==1.0.15
+    # via apache-superset
+cryptography==42.0.4
+    # via
+    #   apache-superset
+    #   paramiko
+cycler==0.12.1
+    # via matplotlib
+db-dtypes==1.2.0
+    # via pandas-gbq
 decorator==5.1.1
     # via ipython
+deprecated==1.2.13
+    # via limits
+deprecation==2.1.0
+    # via apache-superset
 dill==0.3.6
     # via pylint
+distlib==0.3.8
+    # via virtualenv
+dnspython==2.1.0
+    # via email-validator
+docker==7.0.0
+    # via -r requirements/development.in
+email-validator==1.1.3
+    # via flask-appbuilder
 et-xmlfile==1.1.0
     # via openpyxl
+exceptiongroup==1.2.0
+    # via
+    #   cattrs
+    #   pytest
 executing==1.2.0
     # via stack-data
-flask-cors==3.0.10
+filelock==3.13.1
+    # via
+    #   tox
+    #   virtualenv
+flask==2.2.5
+    # via
+    #   apache-superset
+    #   flask-appbuilder
+    #   flask-babel
+    #   flask-caching
+    #   flask-compress
+    #   flask-jwt-extended
+    #   flask-limiter
+    #   flask-login
+    #   flask-migrate
+    #   flask-session
+    #   flask-sqlalchemy
+    #   flask-testing
+    #   flask-wtf
+flask-appbuilder==4.4.1
+    # via apache-superset
+flask-babel==1.0.0
+    # via flask-appbuilder
+flask-caching==2.1.0
+    # via apache-superset
+flask-compress==1.13
+    # via apache-superset
+flask-jwt-extended==4.3.1
+    # via flask-appbuilder
+flask-limiter==3.3.1
+    # via flask-appbuilder
+flask-login==0.6.3
+    # via
+    #   apache-superset
+    #   flask-appbuilder
+flask-migrate==3.1.0
+    # via apache-superset
+flask-session==0.5.0
+    # via apache-superset
+flask-sqlalchemy==2.5.1
+    # via
+    #   flask-appbuilder
+    #   flask-migrate
+flask-talisman==1.0.0
+    # via apache-superset
+flask-testing==0.8.1
+    # via -r requirements/development.in
+flask-wtf==1.2.1
+    # via
+    #   apache-superset
+    #   flask-appbuilder
+fonttools==4.49.0
+    # via matplotlib
+freezegun==1.4.0
+    # via -r requirements/development.in
+func-timeout==4.3.5
     # via apache-superset
 future==0.18.3
     # via pyhive
+geographiclib==1.52
+    # via geopy
+geopy==2.2.0
+    # via apache-superset
+gevent==24.2.1
+    # via apache-superset
+google-api-core[grpc]==2.17.1
+    # via
+    #   google-cloud-bigquery
+    #   google-cloud-core
+    #   pandas-gbq
+    #   sqlalchemy-bigquery
+google-auth==2.27.0
+    # via
+    #   google-api-core
+    #   google-auth-oauthlib
+    #   google-cloud-bigquery
+    #   google-cloud-core
+    #   pandas-gbq
+    #   pydata-google-auth
+    #   shillelagh
+    #   sqlalchemy-bigquery
+google-auth-oauthlib==1.2.0
+    # via
+    #   pandas-gbq
+    #   pydata-google-auth
+google-cloud-bigquery==3.19.0
+    # via
+    #   apache-superset
+    #   pandas-gbq
+    #   sqlalchemy-bigquery
+google-cloud-core==2.4.1
+    # via google-cloud-bigquery
+google-crc32c==1.5.0
+    # via google-resumable-media
+google-resumable-media==2.7.0
+    # via google-cloud-bigquery
+googleapis-common-protos==1.63.0
+    # via
+    #   google-api-core
+    #   grpcio-status
+greenlet==3.0.3
+    # via
+    #   -r requirements/development.in
+    #   gevent
+    #   playwright
+    #   shillelagh
+grpcio==1.62.1
+    # via
+    #   -r requirements/development.in
+    #   google-api-core
+    #   grpcio-status
+grpcio-status==1.62.1
+    # via google-api-core
+gunicorn==21.2.0
+    # via apache-superset
+hashids==1.3.1
+    # via apache-superset
+holidays==0.25
+    # via
+    #   apache-superset
+    #   prophet
+humanize==3.11.0
+    # via apache-superset
+identify==2.5.35
+    # via pre-commit
+idna==3.2
+    # via
+    #   email-validator
+    #   requests
 ijson==3.2.0.post0
     # via tabulator
+importlib-metadata==6.6.0
+    # via
+    #   apache-superset
+    #   build
+    #   flask
+    #   shillelagh
+importlib-resources==5.12.0
+    # via
+    #   limits
+    #   matplotlib
+    #   prophet
+iniconfig==2.0.0
+    # via pytest
 ipython==8.12.2
     # via -r requirements/development.in
+isodate==0.6.0
+    # via
+    #   apache-superset
+    #   tableschema
 isort==5.12.0
     # via pylint
+itsdangerous==2.1.2
+    # via
+    #   flask
+    #   flask-wtf
 jedi==0.18.2
     # via ipython
+jinja2==3.1.3
+    # via
+    #   flask
+    #   flask-babel
 jmespath==1.0.1
     # via
     #   boto3
     #   botocore
 jsonlines==3.1.0
     # via tabulator
+jsonschema==4.21.1
+    # via
+    #   flask-appbuilder
+    #   openapi-schema-validator
+    #   openapi-spec-validator
+    #   tableschema
+jsonschema-path==0.3.2
+    # via openapi-spec-validator
+jsonschema-specifications==2023.12.1
+    # via
+    #   jsonschema
+    #   openapi-schema-validator
+kiwisolver==1.4.5
+    # via matplotlib
+kombu==5.3.4
+    # via celery
+korean-lunar-calendar==0.3.1
+    # via holidays
 lazy-object-proxy==1.9.0
-    # via astroid
+    # via
+    #   astroid
+    #   openapi-spec-validator
+limits==3.4.0
+    # via flask-limiter
 linear-tsv==1.1.0
     # via tabulator
+llvmlite==0.40.1
+    # via numba
+mako==1.2.4
+    # via
+    #   alembic
+    #   apache-superset
+markdown==3.3.4
+    # via apache-superset
+markdown-it-py==2.2.0
+    # via rich
+markupsafe==2.1.1
+    # via
+    #   jinja2
+    #   mako
+    #   werkzeug
+    #   wtforms
+marshmallow==3.19.0
+    # via
+    #   flask-appbuilder
+    #   marshmallow-sqlalchemy
+marshmallow-sqlalchemy==0.23.1
+    # via flask-appbuilder
+matplotlib==3.8.3
+    # via prophet
 matplotlib-inline==0.1.6
     # via ipython
 mccabe==0.7.0
     # via pylint
+mdurl==0.1.2
+    # via markdown-it-py
+msgpack==1.0.2
+    # via apache-superset
 mysqlclient==2.1.0
     # via apache-superset
+nh3==0.2.11
+    # via apache-superset
+nodeenv==1.8.0
+    # via pre-commit
+numba==0.57.1
+    # via pandas
+numexpr==2.9.0
+    # via
+    #   -r requirements/base.in
+    #   pandas
+numpy==1.23.5
+    # via
+    #   apache-superset
+    #   bottleneck
+    #   cmdstanpy
+    #   contourpy
+    #   db-dtypes
+    #   matplotlib
+    #   numba
+    #   numexpr
+    #   pandas
+    #   pandas-gbq
+    #   prophet
+    #   pyarrow
+    #   stanio
+oauthlib==3.2.2
+    # via requests-oauthlib
+openapi-schema-validator==0.6.2
+    # via openapi-spec-validator
+openapi-spec-validator==0.7.1
+    # via -r requirements/development.in
 openpyxl==3.1.2
     # via tabulator
+ordered-set==4.1.0
+    # via flask-limiter
+packaging==23.2
+    # via
+    #   apache-superset
+    #   apispec
+    #   build
+    #   db-dtypes
+    #   deprecation
+    #   docker
+    #   google-cloud-bigquery
+    #   gunicorn
+    #   limits
+    #   marshmallow
+    #   matplotlib
+    #   pandas-gbq
+    #   pyproject-api
+    #   pytest
+    #   shillelagh
+    #   sqlalchemy-bigquery
+    #   tox
+pandas[performance]==2.0.3
+    # via
+    #   apache-superset
+    #   cmdstanpy
+    #   db-dtypes
+    #   pandas-gbq
+    #   prophet
+pandas-gbq==0.22.0
+    # via apache-superset
+parameterized==0.9.0
+    # via -r requirements/development.in
+paramiko==3.4.0
+    # via
+    #   apache-superset
+    #   sshtunnel
+parsedatetime==2.6
+    # via apache-superset
 parso==0.8.3
     # via jedi
+pathable==0.4.3
+    # via jsonschema-path
 pexpect==4.8.0
     # via ipython
+pgsanity==0.2.9
+    # via apache-superset
 pickleshare==0.7.5
     # via ipython
 pillow==10.2.0
+    # via
+    #   apache-superset
+    #   matplotlib
+pip-compile-multi==2.6.3
+    # via -r requirements/development.in
+pip-tools==7.4.1
+    # via pip-compile-multi
+platformdirs==4.2.0
+    # via
+    #   pylint
+    #   requests-cache
+    #   tox
+    #   virtualenv
+playwright==1.42.0
+    # via apache-superset
+pluggy==1.4.0
+    # via
+    #   pytest
+    #   tox
+polyline==2.0.0
     # via apache-superset
+pre-commit==3.6.2
+    # via -r requirements/development.in
+prison==0.2.1
+    # via flask-appbuilder
 progress==1.6
     # via -r requirements/development.in
+prompt-toolkit==3.0.38
+    # via
+    #   click-repl
+    #   ipython
+prophet==1.1.5
+    # via apache-superset
+protobuf==4.25.3
+    # via
+    #   google-api-core
+    #   googleapis-common-protos
+    #   grpcio-status
 psycopg2-binary==2.9.6
     # via apache-superset
 ptyprocess==0.7.0
@@ -84,26 +506,206 @@ pure-sasl==0.6.2
     # via
     #   pyhive
     #   thrift-sasl
+pyarrow==14.0.1
+    # via
+    #   apache-superset
+    #   db-dtypes
+    #   pandas-gbq
+pyasn1==0.5.1
+    # via
+    #   pyasn1-modules
+    #   python-ldap
+    #   rsa
+pyasn1-modules==0.3.0
+    # via
+    #   google-auth
+    #   python-ldap
+pycparser==2.20
+    # via cffi
+pydata-google-auth==1.8.2
+    # via pandas-gbq
 pydruid==0.6.5
     # via apache-superset
-pyhive[hive_pure_sasl]==0.7.0
+pyee==11.0.1
+    # via playwright
+pyfakefs==5.3.5
+    # via -r requirements/development.in
+pygments==2.15.0
+    # via
+    #   ipython
+    #   rich
+pyhive[hive,hive-pure-sasl,presto]==0.7.0
     # via apache-superset
 pyinstrument==4.4.0
     # via -r requirements/development.in
+pyjwt==2.4.0
+    # via
+    #   apache-superset
+    #   flask-appbuilder
+    #   flask-jwt-extended
 pylint==2.17.7
     # via -r requirements/development.in
+pynacl==1.5.0
+    # via paramiko
+pyparsing==3.0.6
+    # via
+    #   apache-superset
+    #   matplotlib
+pyproject-api==1.6.1
+    # via tox
+pyproject-hooks==1.0.0
+    # via
+    #   build
+    #   pip-tools
+pytest==8.1.1
+    # via
+    #   -r requirements/development.in
+    #   pytest-cov
+    #   pytest-mock
+pytest-cov==4.1.0
+    # via -r requirements/development.in
+pytest-mock==3.12.0
+    # via -r requirements/development.in
+python-dateutil==2.8.2
+    # via
+    #   alembic
+    #   apache-superset
+    #   botocore
+    #   celery
+    #   croniter
+    #   flask-appbuilder
+    #   freezegun
+    #   google-cloud-bigquery
+    #   holidays
+    #   matplotlib
+    #   pandas
+    #   pyhive
+    #   shillelagh
+    #   tableschema
+    #   trino
+python-dotenv==0.19.0
+    # via apache-superset
+python-editor==1.0.4
+    # via alembic
+python-geohash==0.8.5
+    # via apache-superset
 python-ldap==3.4.3
     # via -r requirements/development.in
+pytz==2021.3
+    # via
+    #   babel
+    #   flask-babel
+    #   pandas
+    #   trino
+pyyaml==6.0.1
+    # via
+    #   apache-superset
+    #   apispec
+    #   jsonschema-path
+    #   pre-commit
+redis==4.6.0
+    # via apache-superset
+referencing==0.31.1
+    # via
+    #   -r requirements/base.in
+    #   jsonschema
+    #   jsonschema-path
+    #   jsonschema-specifications
+requests==2.31.0
+    # via
+    #   docker
+    #   google-api-core
+    #   google-cloud-bigquery
+    #   jsonschema-path
+    #   pydruid
+    #   pyhive
+    #   requests-cache
+    #   requests-oauthlib
+    #   shillelagh
+    #   tableschema
+    #   tabulator
+    #   trino
+requests-cache==1.1.1
+    # via shillelagh
+requests-oauthlib==1.4.0
+    # via google-auth-oauthlib
+rfc3339-validator==0.1.4
+    # via openapi-schema-validator
 rfc3986==2.0.0
     # via tableschema
+rich==13.3.4
+    # via flask-limiter
+rpds-py==0.18.0
+    # via
+    #   jsonschema
+    #   referencing
+rsa==4.9
+    # via google-auth
 s3transfer==0.6.1
     # via boto3
+sasl==0.3.1
+    # via pyhive
+selenium==3.141.0
+    # via apache-superset
+shillelagh[gsheetsapi]==1.2.10
+    # via apache-superset
+shortid==0.1.2
+    # via apache-superset
+simplejson==3.17.3
+    # via apache-superset
+six==1.16.0
+    # via
+    #   asttokens
+    #   click-repl
+    #   isodate
+    #   linear-tsv
+    #   prison
+    #   python-dateutil
+    #   rfc3339-validator
+    #   sasl
+    #   tableschema
+    #   tabulator
+    #   thrift
+    #   thrift-sasl
+    #   url-normalize
+    #   wtforms-json
+slack-sdk==3.21.3
+    # via apache-superset
+sqlalchemy==1.4.36
+    # via
+    #   alembic
+    #   apache-superset
+    #   flask-appbuilder
+    #   flask-sqlalchemy
+    #   marshmallow-sqlalchemy
+    #   shillelagh
+    #   sqlalchemy-bigquery
+    #   sqlalchemy-utils
+    #   tabulator
+sqlalchemy-bigquery==1.10.0
+    # via apache-superset
+sqlalchemy-utils==0.38.3
+    # via
+    #   apache-superset
+    #   flask-appbuilder
+sqlglot==20.8.0
+    # via apache-superset
 sqloxide==0.1.33
     # via -r requirements/development.in
+sqlparse==0.4.4
+    # via apache-superset
+sshtunnel==0.4.0
+    # via apache-superset
 stack-data==0.6.2
     # via ipython
+stanio==0.3.0
+    # via cmdstanpy
+statsd==4.0.1
+    # via -r requirements/development.in
 tableschema==1.20.2
     # via apache-superset
+tabulate==0.8.9
+    # via apache-superset
 tabulator==1.53.5
     # via tableschema
 thrift==0.16.0
@@ -114,19 +716,108 @@ thrift==0.16.0
 thrift-sasl==0.4.3
     # via pyhive
 tomli==2.0.1
-    # via pylint
+    # via
+    #   build
+    #   coverage
+    #   pip-tools
+    #   pylint
+    #   pyproject-api
+    #   pyproject-hooks
+    #   pytest
+    #   tox
 tomlkit==0.11.8
     # via pylint
+toposort==1.10
+    # via pip-compile-multi
+tox==4.14.1
+    # via -r requirements/development.in
+tqdm==4.66.2
+    # via
+    #   cmdstanpy
+    #   prophet
 traitlets==5.9.0
     # via
     #   ipython
     #   matplotlib-inline
+trino==0.328.0
+    # via apache-superset
+typing-extensions==4.4.0
+    # via
+    #   apache-superset
+    #   astroid
+    #   cattrs
+    #   flask-limiter
+    #   ipython
+    #   kombu
+    #   limits
+    #   pyee
+    #   pylint
+    #   shillelagh
+tzdata==2023.3
+    # via
+    #   celery
+    #   pandas
+tzlocal==5.2
+    # via trino
 unicodecsv==0.14.1
     # via
     #   tableschema
     #   tabulator
+url-normalize==1.4.3
+    # via requests-cache
+urllib3==1.26.18
+    # via
+    #   -r requirements/base.in
+    #   botocore
+    #   docker
+    #   requests
+    #   requests-cache
+    #   selenium
+vine==5.1.0
+    # via
+    #   amqp
+    #   celery
+    #   kombu
+virtualenv==20.25.1
+    # via
+    #   pre-commit
+    #   tox
+wcwidth==0.2.5
+    # via prompt-toolkit
+werkzeug==3.0.1
+    # via
+    #   -r requirements/base.in
+    #   flask
+    #   flask-appbuilder
+    #   flask-jwt-extended
+    #   flask-login
+wheel==0.42.0
+    # via pip-tools
+wrapt==1.15.0
+    # via
+    #   astroid
+    #   deprecated
+wtforms==2.3.3
+    # via
+    #   apache-superset
+    #   flask-appbuilder
+    #   flask-wtf
+    #   wtforms-json
+wtforms-json==0.3.5
+    # via apache-superset
 xlrd==2.0.1
     # via tabulator
+xlsxwriter==3.0.7
+    # via apache-superset
+zipp==3.15.0
+    # via
+    #   importlib-metadata
+    #   importlib-resources
+zope-event==5.0
+    # via gevent
+zope-interface==6.2
+    # via gevent
 
 # The following packages are considered to be unsafe in a requirements file:
+# pip
 # setuptools
diff --git a/requirements/docker.in b/requirements/docker.in
deleted file mode 100644
index 5b65cc6871..0000000000
--- a/requirements/docker.in
+++ /dev/null
@@ -1,19 +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.
-#
--r base.in
--e .[postgres,gevent]
-greenlet>=2.0.2
diff --git a/requirements/docker.txt b/requirements/docker.txt
deleted file mode 100644
index 27c135e04c..0000000000
--- a/requirements/docker.txt
+++ /dev/null
@@ -1,23 +0,0 @@
-# SHA1:f00a57c70a52607d638c19f64f426f887382927e
-#
-# This file is autogenerated by pip-compile-multi
-# To update, run:
-#
-#    pip-compile-multi
-#
--r base.txt
--e file:.
-    # via
-    #   -r requirements/base.in
-    #   -r requirements/docker.in
-gevent==23.9.1
-    # via apache-superset
-psycopg2-binary==2.9.6
-    # via apache-superset
-zope-event==4.5.0
-    # via gevent
-zope-interface==5.4.0
-    # via gevent
-
-# The following packages are considered to be unsafe in a requirements file:
-# setuptools
diff --git a/requirements/integration.in b/requirements/integration.in
deleted file mode 100644
index 9601b3a0d2..0000000000
--- a/requirements/integration.in
+++ /dev/null
@@ -1,19 +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.
-#
-pip-compile-multi
-pre-commit
-tox
diff --git a/requirements/integration.txt b/requirements/integration.txt
deleted file mode 100644
index ce55c02b8b..0000000000
--- a/requirements/integration.txt
+++ /dev/null
@@ -1,74 +0,0 @@
-# SHA1:39179f2c476f94362aa0705be059a488d7e38b6d
-#
-# This file is autogenerated by pip-compile-multi
-# To update, run:
-#
-#    pip-compile-multi
-#
-build==0.10.0
-    # via pip-tools
-cachetools==5.3.2
-    # via tox
-cfgv==3.3.1
-    # via pre-commit
-chardet==5.1.0
-    # via tox
-click==8.1.3
-    # via
-    #   pip-compile-multi
-    #   pip-tools
-colorama==0.4.6
-    # via tox
-distlib==0.3.6
-    # via virtualenv
-filelock==3.12.2
-    # via
-    #   tox
-    #   virtualenv
-identify==2.5.24
-    # via pre-commit
-nodeenv==1.7.0
-    # via pre-commit
-packaging==23.1
-    # via
-    #   build
-    #   pyproject-api
-    #   tox
-pip-compile-multi==2.6.3
-    # via -r requirements/integration.in
-pip-tools==7.3.0
-    # via pip-compile-multi
-platformdirs==3.8.1
-    # via
-    #   tox
-    #   virtualenv
-pluggy==1.2.0
-    # via tox
-pre-commit==3.3.3
-    # via -r requirements/integration.in
-pyproject-api==1.5.2
-    # via tox
-pyproject-hooks==1.0.0
-    # via build
-pyyaml==6.0.1
-    # via pre-commit
-tomli==2.0.1
-    # via
-    #   build
-    #   pip-tools
-    #   pyproject-api
-    #   tox
-toposort==1.10
-    # via pip-compile-multi
-tox==4.6.4
-    # via -r requirements/integration.in
-virtualenv==20.23.1
-    # via
-    #   pre-commit
-    #   tox
-wheel==0.40.0
-    # via pip-tools
-
-# The following packages are considered to be unsafe in a requirements file:
-# pip
-# setuptools
diff --git a/requirements/local.in b/requirements/local.in
deleted file mode 100644
index bc67aed109..0000000000
--- a/requirements/local.in
+++ /dev/null
@@ -1,17 +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.
-#
--r development.in
diff --git a/requirements/local.txt b/requirements/local.txt
deleted file mode 100644
index c4bd3cd599..0000000000
--- a/requirements/local.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-# SHA1:a71c19ba0170092851941268a0a3dc233feba06d
-#
-# This file is autogenerated by pip-compile-multi
-# To update, run:
-#
-#    pip-compile-multi
-#
--r development.txt
--e file:.
-    # via
-    #   -r requirements/base.in
-    #   -r requirements/development.in
-
-# The following packages are considered to be unsafe in a requirements file:
-# setuptools
diff --git a/requirements/testing.in b/requirements/testing.in
deleted file mode 100644
index 3245886ec8..0000000000
--- a/requirements/testing.in
+++ /dev/null
@@ -1,31 +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.
-#
--r development.in
--r integration.in
--e file:.[bigquery,hive,presto,prophet,trino,gsheets,playwright]
-docker
-flask-testing
-freezegun
-grpcio>=1.55.3
-openapi-spec-validator
-parameterized
-pyfakefs
-pylint
-pytest
-pytest-cov
-pytest-mock
-statsd
diff --git a/requirements/testing.txt b/requirements/testing.txt
deleted file mode 100644
index 55e03e4470..0000000000
--- a/requirements/testing.txt
+++ /dev/null
@@ -1,147 +0,0 @@
-# SHA1:a37a1037f359c1101162ef43288178fbf00c487d
-#
-# This file is autogenerated by pip-compile-multi
-# To update, run:
-#
-#    pip-compile-multi
-#
--r development.txt
--r integration.txt
--e file:.
-    # via
-    #   -r requirements/base.in
-    #   -r requirements/development.in
-    #   -r requirements/testing.in
-cmdstanpy==1.1.0
-    # via prophet
-contourpy==1.0.7
-    # via matplotlib
-coverage[toml]==7.2.5
-    # via pytest-cov
-cycler==0.11.0
-    # via matplotlib
-db-dtypes==1.1.1
-    # via pandas-gbq
-docker==6.1.1
-    # via -r requirements/testing.in
-flask-testing==0.8.1
-    # via -r requirements/testing.in
-fonttools==4.43.0
-    # via matplotlib
-freezegun==1.2.2
-    # via -r requirements/testing.in
-google-api-core[grpc]==2.11.0
-    # via
-    #   google-cloud-bigquery
-    #   google-cloud-bigquery-storage
-    #   google-cloud-core
-    #   pandas-gbq
-    #   sqlalchemy-bigquery
-google-auth-oauthlib==1.0.0
-    # via
-    #   pandas-gbq
-    #   pydata-google-auth
-google-cloud-bigquery==3.10.0
-    # via
-    #   apache-superset
-    #   pandas-gbq
-    #   sqlalchemy-bigquery
-google-cloud-bigquery-storage==2.19.1
-    # via
-    #   pandas-gbq
-    #   sqlalchemy-bigquery
-google-cloud-core==2.3.2
-    # via google-cloud-bigquery
-google-crc32c==1.5.0
-    # via google-resumable-media
-google-resumable-media==2.5.0
-    # via google-cloud-bigquery
-googleapis-common-protos==1.59.0
-    # via
-    #   google-api-core
-    #   grpcio-status
-grpcio==1.60.1
-    # via
-    #   -r requirements/testing.in
-    #   google-api-core
-    #   google-cloud-bigquery
-    #   grpcio-status
-grpcio-status==1.60.1
-    # via google-api-core
-iniconfig==2.0.0
-    # via pytest
-jsonschema-spec==0.1.4
-    # via openapi-spec-validator
-kiwisolver==1.4.4
-    # via matplotlib
-matplotlib==3.7.1
-    # via prophet
-oauthlib==3.2.2
-    # via requests-oauthlib
-openapi-schema-validator==0.4.4
-    # via openapi-spec-validator
-openapi-spec-validator==0.5.6
-    # via -r requirements/testing.in
-pandas-gbq==0.19.1
-    # via apache-superset
-parameterized==0.9.0
-    # via -r requirements/testing.in
-pathable==0.4.3
-    # via jsonschema-spec
-playwright==1.41.2
-    # via apache-superset
-prophet==1.1.5
-    # via apache-superset
-proto-plus==1.22.2
-    # via
-    #   google-cloud-bigquery
-    #   google-cloud-bigquery-storage
-protobuf==4.23.0
-    # via
-    #   google-api-core
-    #   google-cloud-bigquery
-    #   google-cloud-bigquery-storage
-    #   googleapis-common-protos
-    #   grpcio-status
-    #   proto-plus
-pydata-google-auth==1.7.0
-    # via pandas-gbq
-pyee==11.0.1
-    # via playwright
-pyfakefs==5.2.2
-    # via -r requirements/testing.in
-pyhive[presto]==0.7.0
-    # via apache-superset
-pytest==7.3.1
-    # via
-    #   -r requirements/testing.in
-    #   pytest-cov
-    #   pytest-mock
-pytest-cov==4.0.0
-    # via -r requirements/testing.in
-pytest-mock==3.10.0
-    # via -r requirements/testing.in
-pytz-deprecation-shim==0.1.0.post0
-    # via tzlocal
-requests-oauthlib==1.3.1
-    # via google-auth-oauthlib
-rfc3339-validator==0.1.4
-    # via openapi-schema-validator
-sqlalchemy-bigquery==1.6.1
-    # via apache-superset
-statsd==4.0.1
-    # via -r requirements/testing.in
-tqdm==4.65.0
-    # via
-    #   cmdstanpy
-    #   prophet
-trino==0.328.0
-    # via apache-superset
-tzlocal==4.3
-    # via trino
-websocket-client==1.5.1
-    # via docker
-
-# The following packages are considered to be unsafe in a requirements file:
-# pip
-# setuptools
diff --git a/tox.ini b/tox.ini
index 1218fb79a3..28102e0143 100644
--- a/tox.ini
+++ b/tox.ini
@@ -27,7 +27,7 @@ commands =
     # no args or tests/* can be passed as an argument to run all tests
     pytest -s {posargs}
 deps =
-    -rrequirements/testing.txt
+    -rrequirements/development.txt
 setenv =
     PYTHONPATH = {toxinidir}
     SUPERSET_TESTENV = true
@@ -147,20 +147,20 @@ deps =
 commands =
     pre-commit run --all-files
 deps =
-    -rrequirements/integration.txt
+    -rrequirements/development.txt
 skip_install = true
 
 [testenv:pylint]
 commands =
     pylint superset
 deps =
-    -rrequirements/testing.txt
+    -rrequirements/development.txt
 
 [testenv:thumbnails]
 setenv =
     SUPERSET_CONFIG = tests.integration_tests.superset_test_config_thumbnails
 deps =
-    -rrequirements/testing.txt
+    -rrequirements/development.txt
 
 [tox]
 envlist =