chore: deprecate pip-compile-multi in favor or uv (#31313)

This commit is contained in:
Maxime Beauchemin 2024-12-18 17:40:58 -08:00 committed by GitHub
parent 88cde7225e
commit 9da65d6bfd
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
14 changed files with 876 additions and 133 deletions

View File

@ -44,10 +44,13 @@ runs:
if [ "${{ inputs.install-superset }}" = "true" ]; then if [ "${{ inputs.install-superset }}" = "true" ]; then
sudo apt-get update && sudo apt-get -y install libldap2-dev libsasl2-dev sudo apt-get update && sudo apt-get -y install libldap2-dev libsasl2-dev
pip install --upgrade pip setuptools wheel uv pip install --upgrade pip setuptools wheel uv
if [ "${{ inputs.requirements-type }}" = "dev" ]; then if [ "${{ inputs.requirements-type }}" = "dev" ]; then
uv pip install --system -r requirements/development.txt uv pip install --system -r requirements/development.txt
elif [ "${{ inputs.requirements-type }}" = "base" ]; then elif [ "${{ inputs.requirements-type }}" = "base" ]; then
uv pip install --system -r requirements/base.txt uv pip install --system -r requirements/base.txt
fi fi
uv pip install --system -e .
fi fi
shell: bash shell: bash

View File

@ -22,8 +22,7 @@ updates:
# - package-ecosystem: "pip" # - package-ecosystem: "pip"
# NOTE: as dependabot isn't compatible with our python # NOTE: as dependabot isn't compatible with our usage of `uv pip compile` we're using
# dependency setup (pip-compile-multi), we'll be using
# `supersetbot` instead # `supersetbot` instead
- package-ecosystem: "npm" - package-ecosystem: "npm"

View File

@ -45,8 +45,8 @@ jobs:
with: with:
python-version: "3.10" python-version: "3.10"
- name: Install pip-compile-multi - name: Install uv
run: pip install pip-compile-multi run: pip install uv
- name: supersetbot bump-python -p "${{ github.event.inputs.package }}" - name: supersetbot bump-python -p "${{ github.event.inputs.package }}"
env: env:

44
.github/workflows/check-python-deps.yml vendored Normal file
View File

@ -0,0 +1,44 @@
name: Check python dependencies
on:
push:
branches:
- "master"
- "[0-9].[0-9]*"
pull_request:
types: [synchronize, opened, reopened, ready_for_review]
# cancel previous workflow jobs for PRs
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.run_id }}
cancel-in-progress: true
jobs:
check-python-deps:
runs-on: ubuntu-22.04
steps:
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
uses: actions/checkout@v4
with:
persist-credentials: false
submodules: recursive
depth: 1
- name: Setup Python
if: steps.check.outputs.python
uses: ./.github/actions/setup-backend/
- name: Run uv
if: steps.check.outputs.python
run: ./scripts/uv-pip-compile.sh
- name: Check for uncommitted changes
run: |
if [[ -n "$(git diff)" ]]; then
echo "ERROR: The pinned dependencies are not up-to-date."
echo "Please run './scripts/uv-pip-compile.sh' and commit the changes."
exit 1
else
echo "Pinned dependencies are up-to-date."
fi

View File

@ -38,10 +38,6 @@ repos:
types-paramiko, types-paramiko,
types-Markdown, types-Markdown,
] ]
- repo: https://github.com/peterdemin/pip-compile-multi
rev: v2.6.4
hooks:
- id: pip-compile-multi-verify
- repo: https://github.com/pre-commit/pre-commit-hooks - repo: https://github.com/pre-commit/pre-commit-hooks
rev: v5.0.0 rev: v5.0.0
hooks: hooks:

View File

@ -137,7 +137,7 @@ FROM python-base AS python-translation-compiler
# Install Python dependencies using docker/pip-install.sh # Install Python dependencies using docker/pip-install.sh
COPY requirements/translations.txt requirements/ COPY requirements/translations.txt requirements/
RUN --mount=type=cache,target=/root/.cache/uv \ RUN --mount=type=cache,target=/root/.cache/uv \
/app/docker/pip-install.sh -r requirements/translations.txt /app/docker/pip-install.sh --requires-build-essential -r requirements/translations.txt
COPY superset/translations/ /app/translations_mo/ COPY superset/translations/ /app/translations_mo/
RUN if [ "$BUILD_TRANSLATIONS" = "true" ]; then \ RUN if [ "$BUILD_TRANSLATIONS" = "true" ]; then \

View File

@ -255,19 +255,19 @@ If you add a new requirement or update an existing requirement (per the `install
$ python3 -m venv venv $ python3 -m venv venv
$ source venv/bin/activate $ source venv/bin/activate
$ python3 -m pip install -r requirements/development.txt $ python3 -m pip install -r requirements/development.txt
$ pip-compile-multi --no-upgrade $ ./scripts/uv-pip-compile.sh
``` ```
When upgrading the version number of a single package, you should run `pip-compile-multi` with the `-P` flag: When upgrading the version number of a single package, you should run `./scripts/uv-pip-compile.sh` with the `-P` flag:
```bash ```bash
$ pip-compile-multi -P my-package $ ./scripts/uv-pip-compile.sh -P some-package-to-upgrade
``` ```
To bring all dependencies up to date as per the restrictions defined in `setup.py` and `requirements/*.in`, run pip-compile-multi` without any flags: To bring all dependencies up to date as per the restrictions defined in `setup.py` and `requirements/*.in`, run `./scripts/uv-pip-compile.sh --upgrade`
```bash ```bash
$ pip-compile-multi $ ./scripts/uv-pip-compile.sh --upgrade
``` ```
This should be done periodically, but it is recommended to do thorough manual testing of the application to ensure no breaking changes have been introduced that aren't caught by the unit and integration tests. This should be done periodically, but it is recommended to do thorough manual testing of the application to ensure no breaking changes have been introduced that aren't caught by the unit and integration tests.

View File

@ -191,7 +191,6 @@ development = [
"grpcio>=1.55.3", "grpcio>=1.55.3",
"openapi-spec-validator", "openapi-spec-validator",
"parameterized", "parameterized",
"pip-compile-multi",
"pre-commit", "pre-commit",
"progress>=1.5,<2", "progress>=1.5,<2",
"psutil", "psutil",

View File

@ -16,7 +16,6 @@
# specific language governing permissions and limitations # specific language governing permissions and limitations
# under the License. # under the License.
# #
-e file:.
urllib3>=1.26.18 urllib3>=1.26.18
werkzeug>=3.0.1 werkzeug>=3.0.1
numexpr>=2.9.0 numexpr>=2.9.0

View File

@ -1,17 +1,10 @@
# SHA1:04f7e0860829f18926ea238354e6d4a6ab823d50 # This file was autogenerated by uv via the following command:
# # uv pip compile pyproject.toml requirements/base.in -o requirements/base.txt
# This file is autogenerated by pip-compile-multi
# To update, run:
#
# pip-compile-multi
#
-e file:.
# via -r requirements/base.in
alembic==1.14.0 alembic==1.14.0
# via flask-migrate # via flask-migrate
amqp==5.3.1 amqp==5.3.1
# via kombu # via kombu
apispec[yaml]==6.3.0 apispec==6.3.0
# via flask-appbuilder # via flask-appbuilder
apsw==3.46.0.0 apsw==3.46.0.0
# via shillelagh # via shillelagh
@ -27,7 +20,7 @@ attrs==24.2.0
babel==2.16.0 babel==2.16.0
# via flask-babel # via flask-babel
backoff==2.2.1 backoff==2.2.1
# via apache-superset # via apache-superset (pyproject.toml)
bcrypt==4.2.1 bcrypt==4.2.1
# via paramiko # via paramiko
billiard==4.2.1 billiard==4.2.1
@ -35,7 +28,7 @@ billiard==4.2.1
blinker==1.9.0 blinker==1.9.0
# via flask # via flask
bottleneck==1.4.2 bottleneck==1.4.2
# via apache-superset # via apache-superset (pyproject.toml)
brotli==1.1.0 brotli==1.1.0
# via flask-compress # via flask-compress
cachelib==0.9.0 cachelib==0.9.0
@ -47,7 +40,7 @@ cachetools==5.5.0
cattrs==24.1.2 cattrs==24.1.2
# via requests-cache # via requests-cache
celery==5.4.0 celery==5.4.0
# via apache-superset # via apache-superset (pyproject.toml)
certifi==2024.8.30 certifi==2024.8.30
# via requests # via requests
cffi==1.17.1 cffi==1.17.1
@ -58,7 +51,7 @@ charset-normalizer==3.4.0
# via requests # via requests
click==8.1.7 click==8.1.7
# via # via
# apache-superset # apache-superset (pyproject.toml)
# celery # celery
# click-didyoumean # click-didyoumean
# click-option-group # click-option-group
@ -69,22 +62,22 @@ click==8.1.7
click-didyoumean==0.3.1 click-didyoumean==0.3.1
# via celery # via celery
click-option-group==0.5.6 click-option-group==0.5.6
# via apache-superset # via apache-superset (pyproject.toml)
click-plugins==1.1.1 click-plugins==1.1.1
# via celery # via celery
click-repl==0.3.0 click-repl==0.3.0
# via celery # via celery
colorama==0.4.6 colorama==0.4.6
# via # via
# apache-superset # apache-superset (pyproject.toml)
# flask-appbuilder # flask-appbuilder
cron-descriptor==1.4.5 cron-descriptor==1.4.5
# via apache-superset # via apache-superset (pyproject.toml)
croniter==5.0.1 croniter==5.0.1
# via apache-superset # via apache-superset (pyproject.toml)
cryptography==43.0.3 cryptography==43.0.3
# via # via
# apache-superset # apache-superset (pyproject.toml)
# paramiko # paramiko
# pyopenssl # pyopenssl
defusedxml==0.7.1 defusedxml==0.7.1
@ -92,7 +85,7 @@ defusedxml==0.7.1
deprecated==1.2.15 deprecated==1.2.15
# via limits # via limits
deprecation==2.1.0 deprecation==2.1.0
# via apache-superset # via apache-superset (pyproject.toml)
dnspython==2.7.0 dnspython==2.7.0
# via email-validator # via email-validator
email-validator==2.2.0 email-validator==2.2.0
@ -103,7 +96,7 @@ exceptiongroup==1.2.2
# via cattrs # via cattrs
flask==2.3.3 flask==2.3.3
# via # via
# apache-superset # apache-superset (pyproject.toml)
# flask-appbuilder # flask-appbuilder
# flask-babel # flask-babel
# flask-caching # flask-caching
@ -116,66 +109,66 @@ flask==2.3.3
# flask-sqlalchemy # flask-sqlalchemy
# flask-wtf # flask-wtf
flask-appbuilder==4.5.2 flask-appbuilder==4.5.2
# via apache-superset # via apache-superset (pyproject.toml)
flask-babel==2.0.0 flask-babel==2.0.0
# via flask-appbuilder # via flask-appbuilder
flask-caching==2.3.0 flask-caching==2.3.0
# via apache-superset # via apache-superset (pyproject.toml)
flask-compress==1.17 flask-compress==1.17
# via apache-superset # via apache-superset (pyproject.toml)
flask-jwt-extended==4.7.1 flask-jwt-extended==4.7.1
# via flask-appbuilder # via flask-appbuilder
flask-limiter==3.8.0 flask-limiter==3.8.0
# via flask-appbuilder # via flask-appbuilder
flask-login==0.6.3 flask-login==0.6.3
# via # via
# apache-superset # apache-superset (pyproject.toml)
# flask-appbuilder # flask-appbuilder
flask-migrate==3.1.0 flask-migrate==3.1.0
# via apache-superset # via apache-superset (pyproject.toml)
flask-session==0.8.0 flask-session==0.8.0
# via apache-superset # via apache-superset (pyproject.toml)
flask-sqlalchemy==2.5.1 flask-sqlalchemy==2.5.1
# via # via
# flask-appbuilder # flask-appbuilder
# flask-migrate # flask-migrate
flask-talisman==1.1.0 flask-talisman==1.1.0
# via apache-superset # via apache-superset (pyproject.toml)
flask-wtf==1.2.2 flask-wtf==1.2.2
# via # via
# apache-superset # apache-superset (pyproject.toml)
# flask-appbuilder # flask-appbuilder
func-timeout==4.3.5 func-timeout==4.3.5
# via apache-superset # via apache-superset (pyproject.toml)
geographiclib==2.0 geographiclib==2.0
# via geopy # via geopy
geopy==2.4.1 geopy==2.4.1
# via apache-superset # via apache-superset (pyproject.toml)
google-auth==2.36.0 google-auth==2.36.0
# via shillelagh # via shillelagh
greenlet==3.0.3 greenlet==3.0.3
# via # via
# -r requirements/base.in # -r requirements/base.in
# apache-superset # apache-superset (pyproject.toml)
# shillelagh # shillelagh
gunicorn==23.0.0 gunicorn==23.0.0
# via apache-superset # via apache-superset (pyproject.toml)
hashids==1.3.1 hashids==1.3.1
# via apache-superset # via apache-superset (pyproject.toml)
holidays==0.25 holidays==0.25
# via apache-superset # via apache-superset (pyproject.toml)
humanize==4.11.0 humanize==4.11.0
# via apache-superset # via apache-superset (pyproject.toml)
idna==3.10 idna==3.10
# via # via
# email-validator # email-validator
# requests # requests
importlib-metadata==8.5.0 importlib-metadata==8.5.0
# via apache-superset # via apache-superset (pyproject.toml)
importlib-resources==6.4.5 importlib-resources==6.4.5
# via limits # via limits
isodate==0.7.2 isodate==0.7.2
# via apache-superset # via apache-superset (pyproject.toml)
itsdangerous==2.2.0 itsdangerous==2.2.0
# via # via
# flask # flask
@ -185,7 +178,7 @@ jinja2==3.1.4
# flask # flask
# flask-babel # flask-babel
jsonpath-ng==1.7.0 jsonpath-ng==1.7.0
# via apache-superset # via apache-superset (pyproject.toml)
jsonschema==4.17.3 jsonschema==4.17.3
# via flask-appbuilder # via flask-appbuilder
kombu==5.4.2 kombu==5.4.2
@ -196,10 +189,10 @@ limits==3.13.0
# via flask-limiter # via flask-limiter
mako==1.3.6 mako==1.3.6
# via # via
# apache-superset (pyproject.toml)
# alembic # alembic
# apache-superset
markdown==3.7 markdown==3.7
# via apache-superset # via apache-superset (pyproject.toml)
markdown-it-py==3.0.0 markdown-it-py==3.0.0
# via rich # via rich
markupsafe==3.0.2 markupsafe==3.0.2
@ -217,16 +210,16 @@ marshmallow-sqlalchemy==0.28.2
mdurl==0.1.2 mdurl==0.1.2
# via markdown-it-py # via markdown-it-py
msgpack==1.0.8 msgpack==1.0.8
# via apache-superset # via apache-superset (pyproject.toml)
msgspec==0.18.6 msgspec==0.18.6
# via flask-session # via flask-session
nh3==0.2.19 nh3==0.2.19
# via apache-superset # via apache-superset (pyproject.toml)
numexpr==2.10.2 numexpr==2.10.2
# via -r requirements/base.in # via -r requirements/base.in
numpy==1.23.5 numpy==1.23.5
# via # via
# apache-superset # apache-superset (pyproject.toml)
# bottleneck # bottleneck
# numexpr # numexpr
# pandas # pandas
@ -239,7 +232,7 @@ ordered-set==4.1.0
# via flask-limiter # via flask-limiter
packaging==24.2 packaging==24.2
# via # via
# apache-superset # apache-superset (pyproject.toml)
# apispec # apispec
# deprecation # deprecation
# gunicorn # gunicorn
@ -247,28 +240,28 @@ packaging==24.2
# marshmallow # marshmallow
# marshmallow-sqlalchemy # marshmallow-sqlalchemy
# shillelagh # shillelagh
pandas[excel]==2.0.3 pandas==2.0.3
# via apache-superset # via apache-superset (pyproject.toml)
paramiko==3.5.0 paramiko==3.5.0
# via # via
# apache-superset # apache-superset (pyproject.toml)
# sshtunnel # sshtunnel
parsedatetime==2.6 parsedatetime==2.6
# via apache-superset # via apache-superset (pyproject.toml)
pgsanity==0.2.9 pgsanity==0.2.9
# via apache-superset # via apache-superset (pyproject.toml)
platformdirs==3.8.1 platformdirs==3.8.1
# via requests-cache # via requests-cache
ply==3.11 ply==3.11
# via jsonpath-ng # via jsonpath-ng
polyline==2.0.2 polyline==2.0.2
# via apache-superset # via apache-superset (pyproject.toml)
prison==0.2.1 prison==0.2.1
# via flask-appbuilder # via flask-appbuilder
prompt-toolkit==3.0.48 prompt-toolkit==3.0.48
# via click-repl # via click-repl
pyarrow==14.0.2 pyarrow==14.0.2
# via apache-superset # via apache-superset (pyproject.toml)
pyasn1==0.6.1 pyasn1==0.6.1
# via # via
# pyasn1-modules # pyasn1-modules
@ -281,7 +274,7 @@ pygments==2.18.0
# via rich # via rich
pyjwt==2.10.1 pyjwt==2.10.1
# via # via
# apache-superset # apache-superset (pyproject.toml)
# flask-appbuilder # flask-appbuilder
# flask-jwt-extended # flask-jwt-extended
pynacl==1.5.0 pynacl==1.5.0
@ -289,12 +282,12 @@ pynacl==1.5.0
pyopenssl==24.2.1 pyopenssl==24.2.1
# via shillelagh # via shillelagh
pyparsing==3.2.0 pyparsing==3.2.0
# via apache-superset # via apache-superset (pyproject.toml)
pyrsistent==0.20.0 pyrsistent==0.20.0
# via jsonschema # via jsonschema
python-dateutil==2.9.0.post0 python-dateutil==2.9.0.post0
# via # via
# apache-superset # apache-superset (pyproject.toml)
# celery # celery
# croniter # croniter
# flask-appbuilder # flask-appbuilder
@ -302,9 +295,9 @@ python-dateutil==2.9.0.post0
# pandas # pandas
# shillelagh # shillelagh
python-dotenv==1.0.1 python-dotenv==1.0.1
# via apache-superset # via apache-superset (pyproject.toml)
python-geohash==0.8.5 python-geohash==0.8.5
# via apache-superset # via apache-superset (pyproject.toml)
pytz==2024.2 pytz==2024.2
# via # via
# croniter # croniter
@ -314,10 +307,10 @@ pyxlsb==1.0.10
# via pandas # via pandas
pyyaml==6.0.2 pyyaml==6.0.2
# via # via
# apache-superset # apache-superset (pyproject.toml)
# apispec # apispec
redis==4.6.0 redis==4.6.0
# via apache-superset # via apache-superset (pyproject.toml)
requests==2.32.2 requests==2.32.2
# via # via
# requests-cache # requests-cache
@ -329,13 +322,13 @@ rich==13.9.4
rsa==4.9 rsa==4.9
# via google-auth # via google-auth
selenium==3.141.0 selenium==3.141.0
# via apache-superset # via apache-superset (pyproject.toml)
shillelagh[gsheetsapi]==1.2.18 shillelagh==1.2.18
# via apache-superset # via apache-superset (pyproject.toml)
shortid==0.1.2 shortid==0.1.2
# via apache-superset # via apache-superset (pyproject.toml)
simplejson==3.19.3 simplejson==3.19.3
# via apache-superset # via apache-superset (pyproject.toml)
six==1.16.0 six==1.16.0
# via # via
# prison # prison
@ -343,11 +336,11 @@ six==1.16.0
# url-normalize # url-normalize
# wtforms-json # wtforms-json
slack-sdk==3.33.4 slack-sdk==3.33.4
# via apache-superset # via apache-superset (pyproject.toml)
sqlalchemy==1.4.54 sqlalchemy==1.4.54
# via # via
# apache-superset (pyproject.toml)
# alembic # alembic
# apache-superset
# flask-appbuilder # flask-appbuilder
# flask-sqlalchemy # flask-sqlalchemy
# marshmallow-sqlalchemy # marshmallow-sqlalchemy
@ -355,20 +348,20 @@ sqlalchemy==1.4.54
# sqlalchemy-utils # sqlalchemy-utils
sqlalchemy-utils==0.38.3 sqlalchemy-utils==0.38.3
# via # via
# apache-superset # apache-superset (pyproject.toml)
# flask-appbuilder # flask-appbuilder
sqlglot==25.24.5 sqlglot==25.24.5
# via apache-superset # via apache-superset (pyproject.toml)
sqlparse==0.5.2 sqlparse==0.5.2
# via apache-superset # via apache-superset (pyproject.toml)
sshtunnel==0.4.0 sshtunnel==0.4.0
# via apache-superset # via apache-superset (pyproject.toml)
tabulate==0.8.10 tabulate==0.8.10
# via apache-superset # via apache-superset (pyproject.toml)
typing-extensions==4.12.2 typing-extensions==4.12.2
# via # via
# apache-superset (pyproject.toml)
# alembic # alembic
# apache-superset
# cattrs # cattrs
# flask-limiter # flask-limiter
# limits # limits
@ -405,17 +398,17 @@ wrapt==1.17.0
# via deprecated # via deprecated
wtforms==3.2.1 wtforms==3.2.1
# via # via
# apache-superset # apache-superset (pyproject.toml)
# flask-appbuilder # flask-appbuilder
# flask-wtf # flask-wtf
# wtforms-json # wtforms-json
wtforms-json==0.3.5 wtforms-json==0.3.5
# via apache-superset # via apache-superset (pyproject.toml)
xlrd==2.0.1 xlrd==2.0.1
# via pandas # via pandas
xlsxwriter==3.0.9 xlsxwriter==3.0.9
# via # via
# apache-superset # apache-superset (pyproject.toml)
# pandas # pandas
zipp==3.21.0 zipp==3.21.0
# via importlib-metadata # via importlib-metadata

View File

@ -16,5 +16,4 @@
# specific language governing permissions and limitations # specific language governing permissions and limitations
# under the License. # under the License.
# #
-r base.in
-e .[development,bigquery,cors,druid,gevent,gsheets,mysql,postgres,presto,prophet,trino,thumbnails] -e .[development,bigquery,cors,druid,gevent,gsheets,mysql,postgres,presto,prophet,trino,thumbnails]

View File

@ -1,54 +1,294 @@
# SHA1:9a543d5cd98c8ac766ad556ef5bd59de47834c9e # This file was autogenerated by uv via the following command:
# # uv pip compile requirements/development.in -c requirements/base.txt -o requirements/development.txt
# This file is autogenerated by pip-compile-multi -e .
# To update, run: # via -r requirements/development.in
# alembic==1.14.0
# pip-compile-multi
#
-r base.txt
-e file:.
# via # via
# -r /Users/max/code/superset/requirements/base.in # -c requirements/base.txt
# -r requirements/development.in # flask-migrate
build==1.2.1 amqp==5.3.1
# via pip-tools # via
# -c requirements/base.txt
# kombu
apispec==6.3.0
# via
# -c requirements/base.txt
# flask-appbuilder
apsw==3.46.0.0
# via
# -c requirements/base.txt
# shillelagh
async-timeout==4.0.3
# via
# -c requirements/base.txt
# redis
attrs==24.2.0
# via
# -c requirements/base.txt
# cattrs
# jsonschema
# requests-cache
babel==2.16.0
# via
# -c requirements/base.txt
# flask-babel
backoff==2.2.1
# via
# -c requirements/base.txt
# apache-superset
bcrypt==4.2.1
# via
# -c requirements/base.txt
# paramiko
billiard==4.2.1
# via
# -c requirements/base.txt
# celery
blinker==1.9.0
# via
# -c requirements/base.txt
# flask
bottleneck==1.4.2
# via
# -c requirements/base.txt
# apache-superset
brotli==1.1.0
# via
# -c requirements/base.txt
# flask-compress
cachelib==0.9.0
# via
# -c requirements/base.txt
# flask-caching
# flask-session
cachetools==5.5.0
# via
# -c requirements/base.txt
# google-auth
cattrs==24.1.2
# via
# -c requirements/base.txt
# requests-cache
celery==5.4.0
# via
# -c requirements/base.txt
# apache-superset
certifi==2024.8.30
# via
# -c requirements/base.txt
# requests
cffi==1.17.1
# via
# -c requirements/base.txt
# cryptography
# pynacl
cfgv==3.4.0 cfgv==3.4.0
# via pre-commit # via pre-commit
charset-normalizer==3.4.0
# via
# -c requirements/base.txt
# requests
click==8.1.7
# via
# -c requirements/base.txt
# apache-superset
# celery
# click-didyoumean
# click-option-group
# click-plugins
# click-repl
# flask
# flask-appbuilder
click-didyoumean==0.3.1
# via
# -c requirements/base.txt
# celery
click-option-group==0.5.6
# via
# -c requirements/base.txt
# apache-superset
click-plugins==1.1.1
# via
# -c requirements/base.txt
# celery
click-repl==0.3.0
# via
# -c requirements/base.txt
# celery
cmdstanpy==1.1.0 cmdstanpy==1.1.0
# via prophet # via prophet
colorama==0.4.6
# via
# -c requirements/base.txt
# apache-superset
# flask-appbuilder
contourpy==1.0.7 contourpy==1.0.7
# via matplotlib # via matplotlib
coverage[toml]==7.6.8 coverage==7.6.8
# via pytest-cov # via pytest-cov
cron-descriptor==1.4.5
# via
# -c requirements/base.txt
# apache-superset
croniter==5.0.1
# via
# -c requirements/base.txt
# apache-superset
cryptography==43.0.3
# via
# -c requirements/base.txt
# apache-superset
# paramiko
# pyopenssl
cycler==0.12.1 cycler==0.12.1
# via matplotlib # via matplotlib
db-dtypes==1.3.1 db-dtypes==1.3.1
# via pandas-gbq # via pandas-gbq
defusedxml==0.7.1
# via
# -c requirements/base.txt
# odfpy
deprecated==1.2.15
# via
# -c requirements/base.txt
# limits
deprecation==2.1.0
# via
# -c requirements/base.txt
# apache-superset
distlib==0.3.8 distlib==0.3.8
# via virtualenv # via virtualenv
dnspython==2.7.0
# via
# -c requirements/base.txt
# email-validator
docker==7.0.0 docker==7.0.0
# via apache-superset # via apache-superset
email-validator==2.2.0
# via
# -c requirements/base.txt
# flask-appbuilder
et-xmlfile==2.0.0
# via
# -c requirements/base.txt
# openpyxl
exceptiongroup==1.2.2
# via
# -c requirements/base.txt
# cattrs
# pytest
filelock==3.12.2 filelock==3.12.2
# via virtualenv # via virtualenv
flask==2.3.3
# via
# -c requirements/base.txt
# apache-superset
# flask-appbuilder
# flask-babel
# flask-caching
# flask-compress
# flask-cors
# flask-jwt-extended
# flask-limiter
# flask-login
# flask-migrate
# flask-session
# flask-sqlalchemy
# flask-testing
# flask-wtf
flask-appbuilder==4.5.2
# via
# -c requirements/base.txt
# apache-superset
flask-babel==2.0.0
# via
# -c requirements/base.txt
# flask-appbuilder
flask-caching==2.3.0
# via
# -c requirements/base.txt
# apache-superset
flask-compress==1.17
# via
# -c requirements/base.txt
# apache-superset
flask-cors==4.0.0 flask-cors==4.0.0
# via apache-superset # via apache-superset
flask-jwt-extended==4.7.1
# via
# -c requirements/base.txt
# flask-appbuilder
flask-limiter==3.8.0
# via
# -c requirements/base.txt
# flask-appbuilder
flask-login==0.6.3
# via
# -c requirements/base.txt
# apache-superset
# flask-appbuilder
flask-migrate==3.1.0
# via
# -c requirements/base.txt
# apache-superset
flask-session==0.8.0
# via
# -c requirements/base.txt
# apache-superset
flask-sqlalchemy==2.5.1
# via
# -c requirements/base.txt
# flask-appbuilder
# flask-migrate
flask-talisman==1.1.0
# via
# -c requirements/base.txt
# apache-superset
flask-testing==0.8.1 flask-testing==0.8.1
# via apache-superset # via apache-superset
flask-wtf==1.2.2
# via
# -c requirements/base.txt
# apache-superset
# flask-appbuilder
fonttools==4.55.0 fonttools==4.55.0
# via matplotlib # via matplotlib
freezegun==1.5.1 freezegun==1.5.1
# via apache-superset # via apache-superset
func-timeout==4.3.5
# via
# -c requirements/base.txt
# apache-superset
future==1.0.0 future==1.0.0
# via pyhive # via pyhive
geographiclib==2.0
# via
# -c requirements/base.txt
# geopy
geopy==2.4.1
# via
# -c requirements/base.txt
# apache-superset
gevent==24.2.1 gevent==24.2.1
# via apache-superset # via apache-superset
google-api-core[grpc]==2.23.0 google-api-core==2.23.0
# via # via
# google-cloud-bigquery # google-cloud-bigquery
# google-cloud-bigquery-storage # google-cloud-bigquery-storage
# google-cloud-core # google-cloud-core
# pandas-gbq # pandas-gbq
# sqlalchemy-bigquery # sqlalchemy-bigquery
google-auth==2.36.0
# via
# -c requirements/base.txt
# 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.1 google-auth-oauthlib==1.2.1
# via # via
# pandas-gbq # pandas-gbq
@ -70,6 +310,12 @@ googleapis-common-protos==1.66.0
# via # via
# google-api-core # google-api-core
# grpcio-status # grpcio-status
greenlet==3.0.3
# via
# -c requirements/base.txt
# apache-superset
# gevent
# shillelagh
grpcio==1.68.0 grpcio==1.68.0
# via # via
# apache-superset # apache-superset
@ -77,48 +323,241 @@ grpcio==1.68.0
# grpcio-status # grpcio-status
grpcio-status==1.60.1 grpcio-status==1.60.1
# via google-api-core # via google-api-core
gunicorn==23.0.0
# via
# -c requirements/base.txt
# apache-superset
hashids==1.3.1
# via
# -c requirements/base.txt
# apache-superset
holidays==0.25
# via
# -c requirements/base.txt
# apache-superset
# prophet
humanize==4.11.0
# via
# -c requirements/base.txt
# apache-superset
identify==2.5.36 identify==2.5.36
# via pre-commit # via pre-commit
idna==3.10
# via
# -c requirements/base.txt
# email-validator
# requests
importlib-metadata==8.5.0
# via
# -c requirements/base.txt
# apache-superset
importlib-resources==6.4.5
# via
# -c requirements/base.txt
# limits
# prophet
iniconfig==2.0.0 iniconfig==2.0.0
# via pytest # via pytest
isodate==0.7.2
# via
# -c requirements/base.txt
# apache-superset
itsdangerous==2.2.0
# via
# -c requirements/base.txt
# flask
# flask-wtf
jinja2==3.1.4
# via
# -c requirements/base.txt
# flask
# flask-babel
jsonpath-ng==1.7.0
# via
# -c requirements/base.txt
# apache-superset
jsonschema==4.17.3
# via
# -c requirements/base.txt
# flask-appbuilder
# jsonschema-spec
# openapi-schema-validator
# openapi-spec-validator
jsonschema-spec==0.1.6 jsonschema-spec==0.1.6
# via openapi-spec-validator # via openapi-spec-validator
kiwisolver==1.4.7 kiwisolver==1.4.7
# via matplotlib # via matplotlib
kombu==5.4.2
# via
# -c requirements/base.txt
# celery
korean-lunar-calendar==0.3.1
# via
# -c requirements/base.txt
# holidays
lazy-object-proxy==1.10.0 lazy-object-proxy==1.10.0
# via openapi-spec-validator # via openapi-spec-validator
limits==3.13.0
# via
# -c requirements/base.txt
# flask-limiter
mako==1.3.6
# via
# -c requirements/base.txt
# alembic
# apache-superset
markdown==3.7
# via
# -c requirements/base.txt
# apache-superset
markdown-it-py==3.0.0
# via
# -c requirements/base.txt
# rich
markupsafe==3.0.2
# via
# -c requirements/base.txt
# jinja2
# mako
# werkzeug
# wtforms
marshmallow==3.23.1
# via
# -c requirements/base.txt
# flask-appbuilder
# marshmallow-sqlalchemy
marshmallow-sqlalchemy==0.28.2
# via
# -c requirements/base.txt
# flask-appbuilder
matplotlib==3.9.0 matplotlib==3.9.0
# via prophet # via prophet
mdurl==0.1.2
# via
# -c requirements/base.txt
# markdown-it-py
msgpack==1.0.8
# via
# -c requirements/base.txt
# apache-superset
msgspec==0.18.6
# via
# -c requirements/base.txt
# flask-session
mysqlclient==2.2.6 mysqlclient==2.2.6
# via apache-superset # via apache-superset
nh3==0.2.19
# via
# -c requirements/base.txt
# apache-superset
nodeenv==1.8.0 nodeenv==1.8.0
# via pre-commit # via pre-commit
numpy==1.23.5
# via
# -c requirements/base.txt
# apache-superset
# bottleneck
# cmdstanpy
# contourpy
# db-dtypes
# matplotlib
# pandas
# pandas-gbq
# prophet
# pyarrow
oauthlib==3.2.2 oauthlib==3.2.2
# via requests-oauthlib # via requests-oauthlib
odfpy==1.4.1
# via
# -c requirements/base.txt
# pandas
openapi-schema-validator==0.4.4 openapi-schema-validator==0.4.4
# via openapi-spec-validator # via openapi-spec-validator
openapi-spec-validator==0.5.6 openapi-spec-validator==0.5.6
# via apache-superset # via apache-superset
openpyxl==3.1.5
# via
# -c requirements/base.txt
# pandas
ordered-set==4.1.0
# via
# -c requirements/base.txt
# flask-limiter
packaging==24.2
# via
# -c requirements/base.txt
# apache-superset
# apispec
# db-dtypes
# deprecation
# docker
# google-cloud-bigquery
# gunicorn
# limits
# marshmallow
# marshmallow-sqlalchemy
# matplotlib
# pytest
# shillelagh
# sqlalchemy-bigquery
pandas==2.0.3
# via
# -c requirements/base.txt
# apache-superset
# cmdstanpy
# db-dtypes
# pandas-gbq
# prophet
pandas-gbq==0.19.1 pandas-gbq==0.19.1
# via apache-superset # via apache-superset
parameterized==0.9.0 parameterized==0.9.0
# via apache-superset # via apache-superset
paramiko==3.5.0
# via
# -c requirements/base.txt
# apache-superset
# sshtunnel
parsedatetime==2.6
# via
# -c requirements/base.txt
# apache-superset
pathable==0.4.3 pathable==0.4.3
# via jsonschema-spec # via jsonschema-spec
pgsanity==0.2.9
# via
# -c requirements/base.txt
# apache-superset
pillow==10.3.0 pillow==10.3.0
# via # via
# apache-superset # apache-superset
# matplotlib # matplotlib
pip-compile-multi==2.6.3 platformdirs==3.8.1
# via apache-superset # via
pip-tools==7.4.1 # -c requirements/base.txt
# via pip-compile-multi # requests-cache
# virtualenv
pluggy==1.5.0 pluggy==1.5.0
# via pytest # via pytest
ply==3.11
# via
# -c requirements/base.txt
# jsonpath-ng
polyline==2.0.2
# via
# -c requirements/base.txt
# apache-superset
pre-commit==4.0.1 pre-commit==4.0.1
# via apache-superset # via apache-superset
prison==0.2.1
# via
# -c requirements/base.txt
# flask-appbuilder
progress==1.6 progress==1.6
# via apache-superset # via apache-superset
prompt-toolkit==3.0.48
# via
# -c requirements/base.txt
# click-repl
prophet==1.1.5 prophet==1.1.5
# via apache-superset # via apache-superset
proto-plus==1.25.0 proto-plus==1.25.0
@ -136,20 +575,64 @@ psutil==6.1.0
# via apache-superset # via apache-superset
psycopg2-binary==2.9.6 psycopg2-binary==2.9.6
# via apache-superset # via apache-superset
pyarrow==14.0.2
# via
# -c requirements/base.txt
# apache-superset
# db-dtypes
# pandas-gbq
pyasn1==0.6.1
# via
# -c requirements/base.txt
# pyasn1-modules
# python-ldap
# rsa
pyasn1-modules==0.4.1
# via
# -c requirements/base.txt
# google-auth
# python-ldap
pycparser==2.22
# via
# -c requirements/base.txt
# cffi
pydata-google-auth==1.9.0 pydata-google-auth==1.9.0
# via pandas-gbq # via pandas-gbq
pydruid==0.6.9 pydruid==0.6.9
# via apache-superset # via apache-superset
pyfakefs==5.3.5 pyfakefs==5.3.5
# via apache-superset # via apache-superset
pyhive[presto]==0.7.0 pygments==2.18.0
# via
# -c requirements/base.txt
# rich
pyhive==0.7.0
# via apache-superset # via apache-superset
pyinstrument==4.4.0 pyinstrument==4.4.0
# via apache-superset # via apache-superset
pyproject-hooks==1.2.0 pyjwt==2.10.1
# via # via
# build # -c requirements/base.txt
# pip-tools # apache-superset
# flask-appbuilder
# flask-jwt-extended
pynacl==1.5.0
# via
# -c requirements/base.txt
# paramiko
pyopenssl==24.2.1
# via
# -c requirements/base.txt
# shillelagh
pyparsing==3.2.0
# via
# -c requirements/base.txt
# apache-superset
# matplotlib
pyrsistent==0.20.0
# via
# -c requirements/base.txt
# jsonschema
pytest==7.4.4 pytest==7.4.4
# via # via
# apache-superset # apache-superset
@ -159,45 +642,248 @@ pytest-cov==6.0.0
# via apache-superset # via apache-superset
pytest-mock==3.10.0 pytest-mock==3.10.0
# via apache-superset # via apache-superset
python-dateutil==2.9.0.post0
# via
# -c requirements/base.txt
# apache-superset
# celery
# croniter
# flask-appbuilder
# freezegun
# google-cloud-bigquery
# holidays
# matplotlib
# pandas
# pyhive
# shillelagh
# trino
python-dotenv==1.0.1
# via
# -c requirements/base.txt
# apache-superset
python-geohash==0.8.5
# via
# -c requirements/base.txt
# apache-superset
python-ldap==3.4.4 python-ldap==3.4.4
# via apache-superset # via apache-superset
pytz==2024.2
# via
# -c requirements/base.txt
# croniter
# flask-babel
# pandas
# trino
pyxlsb==1.0.10
# via
# -c requirements/base.txt
# pandas
pyyaml==6.0.2
# via
# -c requirements/base.txt
# apache-superset
# apispec
# jsonschema-spec
# pre-commit
redis==4.6.0
# via
# -c requirements/base.txt
# apache-superset
requests==2.32.2
# via
# -c requirements/base.txt
# docker
# google-api-core
# google-cloud-bigquery
# jsonschema-spec
# pydruid
# pyhive
# requests-cache
# requests-oauthlib
# shillelagh
# trino
requests-cache==1.2.0
# via
# -c requirements/base.txt
# shillelagh
requests-oauthlib==2.0.0 requests-oauthlib==2.0.0
# via google-auth-oauthlib # via google-auth-oauthlib
rfc3339-validator==0.1.4 rfc3339-validator==0.1.4
# via openapi-schema-validator # via openapi-schema-validator
rich==13.9.4
# via
# -c requirements/base.txt
# flask-limiter
rsa==4.9
# via
# -c requirements/base.txt
# google-auth
ruff==0.8.0 ruff==0.8.0
# via apache-superset # via apache-superset
selenium==3.141.0
# via
# -c requirements/base.txt
# apache-superset
setuptools==75.6.0
# via
# nodeenv
# pandas-gbq
# pydata-google-auth
# zope-event
# zope-interface
shillelagh==1.2.18
# via
# -c requirements/base.txt
# apache-superset
shortid==0.1.2
# via
# -c requirements/base.txt
# apache-superset
simplejson==3.19.3
# via
# -c requirements/base.txt
# apache-superset
six==1.16.0
# via
# -c requirements/base.txt
# prison
# python-dateutil
# rfc3339-validator
# url-normalize
# wtforms-json
slack-sdk==3.33.4
# via
# -c requirements/base.txt
# apache-superset
sqlalchemy==1.4.54
# via
# -c requirements/base.txt
# alembic
# apache-superset
# flask-appbuilder
# flask-sqlalchemy
# marshmallow-sqlalchemy
# shillelagh
# sqlalchemy-bigquery
# sqlalchemy-utils
sqlalchemy-bigquery==1.12.0 sqlalchemy-bigquery==1.12.0
# via apache-superset # via apache-superset
sqlalchemy-utils==0.38.3
# via
# -c requirements/base.txt
# apache-superset
# flask-appbuilder
sqlglot==25.24.5
# via
# -c requirements/base.txt
# apache-superset
sqloxide==0.1.51 sqloxide==0.1.51
# via apache-superset # via apache-superset
sqlparse==0.5.2
# via
# -c requirements/base.txt
# apache-superset
sshtunnel==0.4.0
# via
# -c requirements/base.txt
# apache-superset
statsd==4.0.1 statsd==4.0.1
# via apache-superset # via apache-superset
tomli==2.1.0 tabulate==0.8.10
# via
# -c requirements/base.txt
# apache-superset
tomli==2.2.1
# via # via
# build
# coverage # coverage
# pip-tools
# pytest # pytest
toposort==1.10
# via pip-compile-multi
tqdm==4.67.1 tqdm==4.67.1
# via # via
# cmdstanpy # cmdstanpy
# prophet # prophet
trino==0.330.0 trino==0.330.0
# via apache-superset # via apache-superset
typing-extensions==4.12.2
# via
# -c requirements/base.txt
# alembic
# apache-superset
# cattrs
# flask-limiter
# limits
# rich
# shillelagh
tzdata==2024.2
# via
# -c requirements/base.txt
# celery
# kombu
# pandas
tzlocal==5.2 tzlocal==5.2
# via trino # via trino
url-normalize==1.4.3
# via
# -c requirements/base.txt
# requests-cache
urllib3==1.26.18
# via
# -c requirements/base.txt
# docker
# requests
# requests-cache
# selenium
vine==5.1.0
# via
# -c requirements/base.txt
# amqp
# celery
# kombu
virtualenv==20.23.1 virtualenv==20.23.1
# via pre-commit # via pre-commit
wheel==0.45.1 wcwidth==0.2.13
# via pip-tools # via
# -c requirements/base.txt
# prompt-toolkit
werkzeug==3.1.3
# via
# -c requirements/base.txt
# flask
# flask-appbuilder
# flask-jwt-extended
# flask-login
wrapt==1.17.0
# via
# -c requirements/base.txt
# deprecated
wtforms==3.2.1
# via
# -c requirements/base.txt
# apache-superset
# flask-appbuilder
# flask-wtf
# wtforms-json
wtforms-json==0.3.5
# via
# -c requirements/base.txt
# apache-superset
xlrd==2.0.1
# via
# -c requirements/base.txt
# pandas
xlsxwriter==3.0.9
# via
# -c requirements/base.txt
# apache-superset
# pandas
zipp==3.21.0
# via
# -c requirements/base.txt
# importlib-metadata
zope-event==5.0 zope-event==5.0
# via gevent # via gevent
zope-interface==5.4.0 zope-interface==5.4.0
# via gevent # via gevent
zstandard==0.23.0
# The following packages are considered to be unsafe in a requirements file: # via
# pip # -c requirements/base.txt
# setuptools # flask-compress

View File

@ -1,9 +1,4 @@
# SHA1:cad160f3d4cd7c33896f42a479eeaa1b5bedc5fb # This file was autogenerated by uv via the following command:
# # uv pip compile requirements/translations.in -o requirements/translations.txt
# This file is autogenerated by pip-compile-multi
# To update, run:
#
# pip-compile-multi
#
babel==2.16.0 babel==2.16.0
# via -r requirements/translations.in # via -r requirements/translations.in

30
scripts/uv-pip-compile.sh Executable file
View File

@ -0,0 +1,30 @@
#!/usr/bin/env bash
#
# 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.
#
set -e
ADDITIONAL_ARGS="$@"
# Generate the requirements/base.txt file
uv pip compile pyproject.toml requirements/base.in -o requirements/base.txt $ADDITIONAL_ARGS
# Generate the requirements/development.txt file, making sure requirements/base.txt is a constraint to keep the versions in sync
uv pip compile requirements/development.in -c requirements/base.txt -o requirements/development.txt $ADDITIONAL_ARGS
uv pip compile requirements/translations.in -o requirements/translations.txt $ADDITIONAL_ARGS