diff --git a/.github/workflows/check-python-deps.yml b/.github/workflows/check-python-deps.yml index edb7d4ea5f6..115d2776d43 100644 --- a/.github/workflows/check-python-deps.yml +++ b/.github/workflows/check-python-deps.yml @@ -24,6 +24,12 @@ jobs: submodules: recursive fetch-depth: 1 + - name: Check for file changes + id: check + uses: ./.github/actions/change-detector/ + with: + token: ${{ secrets.GITHUB_TOKEN }} + - name: Setup Python if: steps.check.outputs.python uses: ./.github/actions/setup-backend/ @@ -33,10 +39,20 @@ jobs: run: ./scripts/uv-pip-compile.sh - name: Check for uncommitted changes + if: steps.check.outputs.python run: | - if [[ -n "$(git diff)" ]]; then + echo "Full diff (for logging/debugging):" + git diff + + echo "Filtered diff (excluding comments and whitespace):" + filtered_diff=$(git diff -U0 | grep '^[-+]' | grep -vE '^[-+]{3}' | grep -vE '^[-+][[:space:]]*#' | grep -vE '^[-+][[:space:]]*$' || true) + echo "$filtered_diff" + + if [[ -n "$filtered_diff" ]]; then + echo echo "ERROR: The pinned dependencies are not up-to-date." echo "Please run './scripts/uv-pip-compile.sh' and commit the changes." + echo "More info: https://github.com/apache/superset/tree/master/requirements" exit 1 else echo "Pinned dependencies are up-to-date." diff --git a/docs/docs/configuration/networking-settings.mdx b/docs/docs/configuration/networking-settings.mdx index eced46d4873..8165cedbac4 100644 --- a/docs/docs/configuration/networking-settings.mdx +++ b/docs/docs/configuration/networking-settings.mdx @@ -8,11 +8,11 @@ version: 1 ## CORS -To configure CORS, or cross-origin resource sharing, the following dependency must be installed: -```python -pip install apache_superset[cors] -``` +:::note +In Superset versions prior to `5.x` you have to install to install `flask-cors` with `pip install flask-cors` to enable CORS support. +::: + The following keys in `superset_config.py` can be specified to configure CORS: diff --git a/pyproject.toml b/pyproject.toml index 8de6216d331..75b2901ac13 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -40,6 +40,7 @@ dependencies = [ "click>=8.0.3", "click-option-group", "colorama", + "flask-cors>=4.0.2, <5.0", "croniter>=0.3.28", "cron-descriptor", "cryptography>=42.0.4, <45.0.0", @@ -115,7 +116,6 @@ bigquery = [ ] clickhouse = ["clickhouse-connect>=0.5.14, <1.0"] cockroachdb = ["cockroachdb>=0.3.5, <0.4"] -cors = ["flask-cors>=4.0.2, <5.0"] crate = ["sqlalchemy-cratedb>=0.40.1, <1"] databend = ["databend-sqlalchemy>=0.3.2, <1.0"] databricks = [ diff --git a/requirements/README.md b/requirements/README.md index 29192a1fad3..7550931cffd 100644 --- a/requirements/README.md +++ b/requirements/README.md @@ -7,7 +7,14 @@ To alter the pinned dependency, you can edit/alter the `.in` and `pyproject.toml ```bash ./scripts/uv-pip-compile.sh ``` +:::warning +The pinned dependencies are based on the `current` version of python supported in Superset. +Output of `./scripts/uv-pip-compile.sh` may vary slightly based on the python version you are using to run the command. +Check the `pyproject.toml` file for the current version of python supported. +::: This will generate the pinned requirements in the `.txt` files, which will be used in our CI/CD pipelines and in the Docker images. We recommend to everyone in the community to use the pinned requirements in their local development environments, to ensure consistency across different environments, though we don't force requirements as part of our python package semantics to allow flexibility for users to install different versions of the dependencies if they wish. + +Note that `development.txt` is a superset of what's in `base.txt`, and all version numbers for shared library should fully match at all times. `translations.txt` is meant as a supplemental file to be used in conjunction with the other requirements files, and is not meant to be used standalone. diff --git a/requirements/base.in b/requirements/base.in index 769568dc2ec..d110fa89314 100644 --- a/requirements/base.in +++ b/requirements/base.in @@ -36,6 +36,3 @@ marshmallow-sqlalchemy>=1.3.0,<1.4.1 # needed for python 3.12 support openapi-schema-validator>=0.6.3 - -# needed when using the flask-cors extension -.[cors] diff --git a/requirements/base.txt b/requirements/base.txt index fd2d44b0404..f7742cb5ada 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -154,7 +154,6 @@ greenlet==3.1.1 # via # apache-superset (pyproject.toml) # shillelagh - # sqlalchemy gunicorn==23.0.0 # via apache-superset (pyproject.toml) h11==0.16.0 diff --git a/requirements/development.in b/requirements/development.in index 99584560e58..3a526c991a4 100644 --- a/requirements/development.in +++ b/requirements/development.in @@ -16,4 +16,4 @@ # specific language governing permissions and limitations # under the License. # --e .[development,bigquery,cors,druid,gevent,gsheets,mysql,postgres,presto,prophet,trino,thumbnails] +-e .[development,bigquery,druid,gevent,gsheets,mysql,postgres,presto,prophet,trino,thumbnails] diff --git a/requirements/development.txt b/requirements/development.txt index 76da8f463d3..1301f9d9b1c 100644 --- a/requirements/development.txt +++ b/requirements/development.txt @@ -1,19 +1,28 @@ # This file was autogenerated by uv via the following command: -# uv pip compile pyproject.toml requirements/development.in -o requirements/development.txt +# uv pip compile requirements/development.in -c requirements/base.txt -o requirements/development.txt -e . # via -r requirements/development.in alembic==1.15.2 - # via flask-migrate + # via + # -c requirements/base.txt + # flask-migrate amqp==5.3.1 - # via kombu + # via + # -c requirements/base.txt + # kombu apispec==6.6.1 - # via flask-appbuilder + # via + # -c requirements/base.txt + # flask-appbuilder apsw==3.50.1.0 - # via shillelagh + # via + # -c requirements/base.txt + # shillelagh astroid==3.3.10 # via pylint attrs==25.3.0 # via + # -c requirements/base.txt # cattrs # jsonschema # outcome @@ -21,50 +30,69 @@ attrs==25.3.0 # requests-cache # trio babel==2.17.0 - # via flask-babel + # via + # -c requirements/base.txt + # flask-babel backoff==2.2.1 # via - # apache-superset (pyproject.toml) + # -c requirements/base.txt # apache-superset bcrypt==4.3.0 - # via paramiko + # via + # -c requirements/base.txt + # paramiko billiard==4.2.1 - # via celery + # via + # -c requirements/base.txt + # celery blinker==1.9.0 - # via flask + # via + # -c requirements/base.txt + # flask bottleneck==1.5.0 # via - # apache-superset (pyproject.toml) + # -c requirements/base.txt # apache-superset brotli==1.1.0 - # via flask-compress + # via + # -c requirements/base.txt + # flask-compress cachelib==0.13.0 # via + # -c requirements/base.txt # flask-caching # flask-session cachetools==5.5.2 - # via google-auth + # via + # -c requirements/base.txt + # google-auth cattrs==25.1.1 - # via requests-cache + # via + # -c requirements/base.txt + # requests-cache celery==5.5.2 # via - # apache-superset (pyproject.toml) + # -c requirements/base.txt # apache-superset certifi==2025.6.15 # via + # -c requirements/base.txt # requests # selenium cffi==1.17.1 # via + # -c requirements/base.txt # cryptography # pynacl cfgv==3.4.0 # via pre-commit charset-normalizer==3.4.2 - # via requests + # via + # -c requirements/base.txt + # requests click==8.2.1 # via - # apache-superset (pyproject.toml) + # -c requirements/base.txt # apache-superset # celery # click-didyoumean @@ -74,20 +102,26 @@ click==8.2.1 # flask # flask-appbuilder click-didyoumean==0.3.1 - # via celery + # via + # -c requirements/base.txt + # celery click-option-group==0.5.7 # via - # apache-superset (pyproject.toml) + # -c requirements/base.txt # apache-superset click-plugins==1.1.1 - # via celery + # via + # -c requirements/base.txt + # celery click-repl==0.3.0 - # via celery + # via + # -c requirements/base.txt + # celery cmdstanpy==1.1.0 # via prophet colorama==0.4.6 # via - # apache-superset (pyproject.toml) + # -c requirements/base.txt # apache-superset # flask-appbuilder contourpy==1.0.7 @@ -96,15 +130,15 @@ coverage==7.6.8 # via pytest-cov cron-descriptor==1.4.5 # via - # apache-superset (pyproject.toml) + # -c requirements/base.txt # apache-superset croniter==6.0.0 # via - # apache-superset (pyproject.toml) + # -c requirements/base.txt # apache-superset cryptography==44.0.3 # via - # apache-superset (pyproject.toml) + # -c requirements/base.txt # apache-superset # paramiko # pyopenssl @@ -113,30 +147,40 @@ cycler==0.12.1 db-dtypes==1.3.1 # via pandas-gbq defusedxml==0.7.1 - # via odfpy + # via + # -c requirements/base.txt + # odfpy deprecated==1.2.18 - # via limits + # via + # -c requirements/base.txt + # limits deprecation==2.1.0 # via - # apache-superset (pyproject.toml) + # -c requirements/base.txt # apache-superset dill==0.4.0 # via pylint distlib==0.3.8 # via virtualenv dnspython==2.7.0 - # via email-validator + # via + # -c requirements/base.txt + # email-validator docker==7.0.0 # via apache-superset email-validator==2.2.0 - # via flask-appbuilder + # via + # -c requirements/base.txt + # flask-appbuilder et-xmlfile==2.0.0 - # via openpyxl + # via + # -c requirements/base.txt + # openpyxl filelock==3.12.2 # via virtualenv flask==2.3.3 # via - # apache-superset (pyproject.toml) + # -c requirements/base.txt # apache-superset # flask-appbuilder # flask-babel @@ -153,50 +197,59 @@ flask==2.3.3 # flask-wtf flask-appbuilder==4.8.0 # via - # apache-superset (pyproject.toml) + # -c requirements/base.txt # apache-superset flask-babel==2.0.0 - # via flask-appbuilder + # via + # -c requirements/base.txt + # flask-appbuilder flask-caching==2.3.1 # via - # apache-superset (pyproject.toml) + # -c requirements/base.txt # apache-superset flask-compress==1.17 # via - # apache-superset (pyproject.toml) + # -c requirements/base.txt # apache-superset flask-cors==4.0.2 - # via apache-superset + # via + # -c requirements/base.txt + # apache-superset flask-jwt-extended==4.7.1 - # via flask-appbuilder + # via + # -c requirements/base.txt + # flask-appbuilder flask-limiter==3.12 - # via flask-appbuilder + # via + # -c requirements/base.txt + # flask-appbuilder flask-login==0.6.3 # via - # apache-superset (pyproject.toml) + # -c requirements/base.txt # apache-superset # flask-appbuilder flask-migrate==3.1.0 # via - # apache-superset (pyproject.toml) + # -c requirements/base.txt # apache-superset flask-session==0.8.0 # via - # apache-superset (pyproject.toml) + # -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 - # apache-superset (pyproject.toml) + # -c requirements/base.txt # apache-superset flask-testing==0.8.1 # via apache-superset flask-wtf==1.2.2 # via - # apache-superset (pyproject.toml) + # -c requirements/base.txt # apache-superset # flask-appbuilder fonttools==4.55.0 @@ -206,10 +259,12 @@ freezegun==1.5.1 future==1.0.0 # via pyhive geographiclib==2.0 - # via geopy + # via + # -c requirements/base.txt + # geopy geopy==2.4.1 # via - # apache-superset (pyproject.toml) + # -c requirements/base.txt # apache-superset gevent==24.2.1 # via apache-superset @@ -222,6 +277,7 @@ google-api-core==2.23.0 # sqlalchemy-bigquery google-auth==2.40.3 # via + # -c requirements/base.txt # google-api-core # google-auth-oauthlib # google-cloud-bigquery @@ -253,11 +309,10 @@ googleapis-common-protos==1.66.0 # grpcio-status greenlet==3.1.1 # via - # apache-superset (pyproject.toml) + # -c requirements/base.txt # apache-superset # gevent # shillelagh - # sqlalchemy grpcio==1.71.0 # via # apache-superset @@ -267,27 +322,30 @@ grpcio-status==1.60.1 # via google-api-core gunicorn==23.0.0 # via - # apache-superset (pyproject.toml) + # -c requirements/base.txt # apache-superset h11==0.16.0 - # via wsproto + # via + # -c requirements/base.txt + # wsproto hashids==1.3.1 # via - # apache-superset (pyproject.toml) + # -c requirements/base.txt # apache-superset holidays==0.25 # via - # apache-superset (pyproject.toml) + # -c requirements/base.txt # apache-superset # prophet humanize==4.12.3 # via - # apache-superset (pyproject.toml) + # -c requirements/base.txt # apache-superset identify==2.5.36 # via pre-commit idna==3.10 # via + # -c requirements/base.txt # email-validator # requests # trio @@ -298,24 +356,27 @@ iniconfig==2.0.0 # via pytest isodate==0.7.2 # via - # apache-superset (pyproject.toml) + # -c requirements/base.txt # apache-superset isort==6.0.1 # via pylint itsdangerous==2.2.0 # via + # -c requirements/base.txt # flask # flask-wtf jinja2==3.1.6 # via + # -c requirements/base.txt # flask # flask-babel jsonpath-ng==1.7.0 # via - # apache-superset (pyproject.toml) + # -c requirements/base.txt # apache-superset jsonschema==4.23.0 # via + # -c requirements/base.txt # flask-appbuilder # openapi-schema-validator # openapi-spec-validator @@ -323,66 +384,82 @@ jsonschema-path==0.3.4 # via openapi-spec-validator jsonschema-specifications==2025.4.1 # via + # -c requirements/base.txt # jsonschema # openapi-schema-validator kiwisolver==1.4.7 # via matplotlib kombu==5.5.3 - # via celery + # via + # -c requirements/base.txt + # celery korean-lunar-calendar==0.3.1 - # via holidays + # via + # -c requirements/base.txt + # holidays lazy-object-proxy==1.10.0 # via openapi-spec-validator limits==5.1.0 - # via flask-limiter + # via + # -c requirements/base.txt + # flask-limiter mako==1.3.10 # via - # apache-superset (pyproject.toml) + # -c requirements/base.txt # alembic # apache-superset markdown==3.8 # via - # apache-superset (pyproject.toml) + # -c requirements/base.txt # apache-superset markdown-it-py==3.0.0 - # via rich + # via + # -c requirements/base.txt + # rich markupsafe==3.0.2 # via + # -c requirements/base.txt # jinja2 # mako # werkzeug # wtforms marshmallow==3.26.1 # via - # apache-superset (pyproject.toml) + # -c requirements/base.txt # apache-superset # flask-appbuilder # marshmallow-sqlalchemy marshmallow-sqlalchemy==1.4.0 - # via flask-appbuilder + # via + # -c requirements/base.txt + # flask-appbuilder matplotlib==3.9.0 # via prophet mccabe==0.7.0 # via pylint mdurl==0.1.2 - # via markdown-it-py + # via + # -c requirements/base.txt + # markdown-it-py msgpack==1.0.8 # via - # apache-superset (pyproject.toml) + # -c requirements/base.txt # apache-superset msgspec==0.19.0 - # via flask-session + # via + # -c requirements/base.txt + # flask-session mysqlclient==2.2.6 # via apache-superset nh3==0.2.21 # via - # apache-superset (pyproject.toml) + # -c requirements/base.txt # apache-superset nodeenv==1.8.0 # via pre-commit numpy==1.26.4 # via - # apache-superset (pyproject.toml) + # -c requirements/base.txt # apache-superset # bottleneck # cmdstanpy @@ -395,22 +472,31 @@ numpy==1.26.4 oauthlib==3.2.2 # via requests-oauthlib odfpy==1.4.1 - # via pandas + # via + # -c requirements/base.txt + # pandas openapi-schema-validator==0.6.3 - # via openapi-spec-validator + # via + # -c requirements/base.txt + # openapi-spec-validator openapi-spec-validator==0.7.1 # via apache-superset openpyxl==3.1.5 - # via pandas + # via + # -c requirements/base.txt + # pandas ordered-set==4.1.0 - # via flask-limiter + # via + # -c requirements/base.txt + # flask-limiter outcome==1.3.0.post0 # via + # -c requirements/base.txt # trio # trio-websocket packaging==25.0 # via - # apache-superset (pyproject.toml) + # -c requirements/base.txt # apache-superset # apispec # db-dtypes @@ -426,7 +512,7 @@ packaging==25.0 # sqlalchemy-bigquery pandas==2.0.3 # via - # apache-superset (pyproject.toml) + # -c requirements/base.txt # apache-superset # cmdstanpy # db-dtypes @@ -438,18 +524,18 @@ parameterized==0.9.0 # via apache-superset paramiko==3.5.1 # via - # apache-superset (pyproject.toml) + # -c requirements/base.txt # apache-superset # sshtunnel parsedatetime==2.6 # via - # apache-superset (pyproject.toml) + # -c requirements/base.txt # apache-superset pathable==0.4.3 # via jsonschema-path pgsanity==0.2.9 # via - # apache-superset (pyproject.toml) + # -c requirements/base.txt # apache-superset pillow==10.3.0 # via @@ -457,25 +543,32 @@ pillow==10.3.0 # matplotlib platformdirs==4.3.8 # via + # -c requirements/base.txt # pylint # requests-cache # virtualenv pluggy==1.5.0 # via pytest ply==3.11 - # via jsonpath-ng + # via + # -c requirements/base.txt + # jsonpath-ng polyline==2.0.2 # via - # apache-superset (pyproject.toml) + # -c requirements/base.txt # apache-superset pre-commit==4.1.0 # via apache-superset prison==0.2.1 - # via flask-appbuilder + # via + # -c requirements/base.txt + # flask-appbuilder progress==1.6 # via apache-superset prompt-toolkit==3.0.51 - # via click-repl + # via + # -c requirements/base.txt + # click-repl prophet==1.1.5 # via apache-superset proto-plus==1.25.0 @@ -495,21 +588,25 @@ psycopg2-binary==2.9.6 # via apache-superset pyarrow==18.1.0 # via - # apache-superset (pyproject.toml) + # -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.2 # via + # -c requirements/base.txt # google-auth # python-ldap pycparser==2.22 - # via cffi + # via + # -c requirements/base.txt + # cffi pydata-google-auth==1.9.0 # via pandas-gbq pydruid==0.6.9 @@ -517,30 +614,38 @@ pydruid==0.6.9 pyfakefs==5.3.5 # via apache-superset pygments==2.19.1 - # via rich + # via + # -c requirements/base.txt + # rich pyhive==0.7.0 # via apache-superset pyinstrument==4.4.0 # via apache-superset pyjwt==2.10.1 # via - # apache-superset (pyproject.toml) + # -c requirements/base.txt # apache-superset # flask-appbuilder # flask-jwt-extended pylint==3.3.7 # via apache-superset pynacl==1.5.0 - # via paramiko + # via + # -c requirements/base.txt + # paramiko pyopenssl==25.1.0 - # via shillelagh + # via + # -c requirements/base.txt + # shillelagh pyparsing==3.2.3 # via - # apache-superset (pyproject.toml) + # -c requirements/base.txt # apache-superset # matplotlib pysocks==1.7.1 - # via urllib3 + # via + # -c requirements/base.txt + # urllib3 pytest==7.4.4 # via # apache-superset @@ -552,7 +657,7 @@ pytest-mock==3.10.0 # via apache-superset python-dateutil==2.9.0.post0 # via - # apache-superset (pyproject.toml) + # -c requirements/base.txt # apache-superset # celery # croniter @@ -567,40 +672,45 @@ python-dateutil==2.9.0.post0 # trino python-dotenv==1.1.0 # via - # apache-superset (pyproject.toml) + # -c requirements/base.txt # apache-superset python-geohash==0.8.5 # via - # apache-superset (pyproject.toml) + # -c requirements/base.txt # apache-superset python-ldap==3.4.4 # via apache-superset pytz==2025.2 # via + # -c requirements/base.txt # croniter # flask-babel # pandas # trino pyxlsb==1.0.10 - # via pandas + # via + # -c requirements/base.txt + # pandas pyyaml==6.0.2 # via - # apache-superset (pyproject.toml) + # -c requirements/base.txt # apache-superset # apispec # jsonschema-path # pre-commit redis==4.6.0 # via - # apache-superset (pyproject.toml) + # -c requirements/base.txt # apache-superset referencing==0.36.2 # via + # -c requirements/base.txt # jsonschema # jsonschema-path # jsonschema-specifications requests==2.32.4 # via + # -c requirements/base.txt # docker # google-api-core # google-cloud-bigquery @@ -612,24 +722,33 @@ requests==2.32.4 # shillelagh # trino requests-cache==1.2.1 - # via shillelagh + # via + # -c requirements/base.txt + # shillelagh requests-oauthlib==2.0.0 # via google-auth-oauthlib rfc3339-validator==0.1.4 - # via openapi-schema-validator + # via + # -c requirements/base.txt + # openapi-schema-validator rich==13.9.4 - # via flask-limiter + # via + # -c requirements/base.txt + # flask-limiter rpds-py==0.25.0 # via + # -c requirements/base.txt # jsonschema # referencing rsa==4.9.1 - # via google-auth + # via + # -c requirements/base.txt + # google-auth ruff==0.8.0 # via apache-superset selenium==4.32.0 # via - # apache-superset (pyproject.toml) + # -c requirements/base.txt # apache-superset setuptools==80.7.1 # via @@ -640,29 +759,34 @@ setuptools==80.7.1 # zope-interface shillelagh==1.3.5 # via - # apache-superset (pyproject.toml) + # -c requirements/base.txt # apache-superset simplejson==3.20.1 # via - # apache-superset (pyproject.toml) + # -c requirements/base.txt # apache-superset six==1.17.0 # via + # -c requirements/base.txt # prison # python-dateutil # rfc3339-validator # wtforms-json slack-sdk==3.35.0 # via - # apache-superset (pyproject.toml) + # -c requirements/base.txt # apache-superset sniffio==1.3.1 - # via trio + # via + # -c requirements/base.txt + # trio sortedcontainers==2.4.0 - # via trio + # via + # -c requirements/base.txt + # trio sqlalchemy==1.4.54 # via - # apache-superset (pyproject.toml) + # -c requirements/base.txt # alembic # apache-superset # flask-appbuilder @@ -675,24 +799,24 @@ sqlalchemy-bigquery==1.12.0 # via apache-superset sqlalchemy-utils==0.38.3 # via - # apache-superset (pyproject.toml) + # -c requirements/base.txt # apache-superset # flask-appbuilder sqlglot==26.28.1 # via - # apache-superset (pyproject.toml) + # -c requirements/base.txt # apache-superset sqloxide==0.1.51 # via apache-superset sshtunnel==0.4.0 # via - # apache-superset (pyproject.toml) + # -c requirements/base.txt # apache-superset statsd==4.0.1 # via apache-superset tabulate==0.9.0 # via - # apache-superset (pyproject.toml) + # -c requirements/base.txt # apache-superset tomlkit==0.13.3 # via pylint @@ -704,13 +828,16 @@ trino==0.330.0 # via apache-superset trio==0.30.0 # via + # -c requirements/base.txt # selenium # trio-websocket trio-websocket==0.12.2 - # via selenium + # via + # -c requirements/base.txt + # selenium typing-extensions==4.14.0 # via - # apache-superset (pyproject.toml) + # -c requirements/base.txt # alembic # apache-superset # cattrs @@ -721,55 +848,71 @@ typing-extensions==4.14.0 # shillelagh tzdata==2025.2 # via + # -c requirements/base.txt # kombu # pandas tzlocal==5.2 # via trino url-normalize==2.2.1 - # via requests-cache + # via + # -c requirements/base.txt + # requests-cache urllib3==2.5.0 # via + # -c requirements/base.txt # docker # requests # requests-cache # selenium vine==5.1.0 # via + # -c requirements/base.txt # amqp # celery # kombu virtualenv==20.29.2 # via pre-commit wcwidth==0.2.13 - # via prompt-toolkit + # via + # -c requirements/base.txt + # prompt-toolkit websocket-client==1.8.0 - # via selenium + # via + # -c requirements/base.txt + # selenium werkzeug==3.1.3 # via + # -c requirements/base.txt # flask # flask-appbuilder # flask-jwt-extended # flask-login wrapt==1.17.2 - # via deprecated + # via + # -c requirements/base.txt + # deprecated wsproto==1.2.0 - # via trio-websocket + # via + # -c requirements/base.txt + # trio-websocket wtforms==3.2.1 # via - # apache-superset (pyproject.toml) + # -c requirements/base.txt # apache-superset # flask-appbuilder # flask-wtf # wtforms-json wtforms-json==0.3.5 # via - # apache-superset (pyproject.toml) + # -c requirements/base.txt # apache-superset xlrd==2.0.1 - # via pandas + # via + # -c requirements/base.txt + # pandas xlsxwriter==3.0.9 # via - # apache-superset (pyproject.toml) + # -c requirements/base.txt # apache-superset # pandas zope-event==5.0 @@ -777,4 +920,6 @@ zope-event==5.0 zope-interface==5.4.0 # via gevent zstandard==0.23.0 - # via flask-compress + # via + # -c requirements/base.txt + # flask-compress diff --git a/requirements/translations.txt b/requirements/translations.txt index 88513034d04..1cd3ce84d76 100644 --- a/requirements/translations.txt +++ b/requirements/translations.txt @@ -1,431 +1,4 @@ # This file was autogenerated by uv via the following command: -# uv pip compile pyproject.toml requirements/translations.in -o requirements/translations.txt -alembic==1.16.2 - # via flask-migrate -amqp==5.3.1 - # via kombu -apispec==6.8.2 - # via flask-appbuilder -apsw==3.50.2.0 - # via shillelagh -attrs==25.3.0 - # via - # cattrs - # jsonschema - # outcome - # referencing - # requests-cache - # trio +# uv pip compile requirements/translations.in -o requirements/translations.txt babel==2.17.0 - # via - # -r requirements/translations.in - # flask-babel -backoff==2.2.1 - # via apache-superset (pyproject.toml) -bcrypt==4.3.0 - # via paramiko -billiard==4.2.1 - # via celery -blinker==1.9.0 - # via flask -bottleneck==1.5.0 - # via apache-superset (pyproject.toml) -brotli==1.1.0 - # via flask-compress -cachelib==0.13.0 - # via - # flask-caching - # flask-session -cachetools==5.5.2 - # via google-auth -cattrs==25.1.1 - # via requests-cache -celery==5.5.3 - # via apache-superset (pyproject.toml) -certifi==2025.6.15 - # via - # requests - # selenium -cffi==1.17.1 - # via - # cryptography - # pynacl -charset-normalizer==3.4.2 - # via requests -click==8.2.1 - # via - # apache-superset (pyproject.toml) - # celery - # click-didyoumean - # click-option-group - # click-plugins - # click-repl - # flask - # flask-appbuilder -click-didyoumean==0.3.1 - # via celery -click-option-group==0.5.7 - # via apache-superset (pyproject.toml) -click-plugins==1.1.1.2 - # via celery -click-repl==0.3.0 - # via celery -colorama==0.4.6 - # via - # apache-superset (pyproject.toml) - # flask-appbuilder -cron-descriptor==1.4.5 - # via apache-superset (pyproject.toml) -croniter==6.0.0 - # via apache-superset (pyproject.toml) -cryptography==44.0.3 - # via - # apache-superset (pyproject.toml) - # paramiko - # pyopenssl -defusedxml==0.7.1 - # via odfpy -deprecated==1.2.18 - # via limits -deprecation==2.1.0 - # via apache-superset (pyproject.toml) -dnspython==2.7.0 - # via email-validator -email-validator==2.2.0 - # via flask-appbuilder -et-xmlfile==2.0.0 - # via openpyxl -flask==2.3.3 - # via - # apache-superset (pyproject.toml) - # flask-appbuilder - # flask-babel - # flask-caching - # flask-compress - # flask-jwt-extended - # flask-limiter - # flask-login - # flask-migrate - # flask-session - # flask-sqlalchemy - # flask-wtf -flask-appbuilder==4.8.0 - # via apache-superset (pyproject.toml) -flask-babel==2.0.0 - # via flask-appbuilder -flask-caching==2.3.1 - # via apache-superset (pyproject.toml) -flask-compress==1.17 - # via apache-superset (pyproject.toml) -flask-jwt-extended==4.7.1 - # via flask-appbuilder -flask-limiter==3.12 - # via flask-appbuilder -flask-login==0.6.3 - # via - # apache-superset (pyproject.toml) - # flask-appbuilder -flask-migrate==3.1.0 - # via apache-superset (pyproject.toml) -flask-session==0.8.0 - # via apache-superset (pyproject.toml) -flask-sqlalchemy==2.5.1 - # via - # flask-appbuilder - # flask-migrate -flask-talisman==1.1.0 - # via apache-superset (pyproject.toml) -flask-wtf==1.2.2 - # via - # apache-superset (pyproject.toml) - # flask-appbuilder -geographiclib==2.0 - # via geopy -geopy==2.4.1 - # via apache-superset (pyproject.toml) -google-auth==2.40.3 - # via shillelagh -greenlet==3.1.1 - # via - # apache-superset (pyproject.toml) - # shillelagh - # sqlalchemy -gunicorn==23.0.0 - # via apache-superset (pyproject.toml) -h11==0.16.0 - # via wsproto -hashids==1.3.1 - # via apache-superset (pyproject.toml) -holidays==0.25 - # via apache-superset (pyproject.toml) -humanize==4.12.3 - # via apache-superset (pyproject.toml) -idna==3.10 - # via - # email-validator - # requests - # trio - # url-normalize -isodate==0.7.2 - # via apache-superset (pyproject.toml) -itsdangerous==2.2.0 - # via - # flask - # flask-wtf -jinja2==3.1.6 - # via - # flask - # flask-babel -jsonpath-ng==1.7.0 - # via apache-superset (pyproject.toml) -jsonschema==4.24.0 - # via flask-appbuilder -jsonschema-specifications==2025.4.1 - # via jsonschema -kombu==5.5.4 - # via celery -korean-lunar-calendar==0.3.1 - # via holidays -limits==5.4.0 - # via flask-limiter -mako==1.3.10 - # via - # apache-superset (pyproject.toml) - # alembic -markdown==3.8.2 - # via apache-superset (pyproject.toml) -markdown-it-py==3.0.0 - # via rich -markupsafe==3.0.2 - # via - # jinja2 - # mako - # werkzeug - # wtforms -marshmallow==3.26.1 - # via - # apache-superset (pyproject.toml) - # flask-appbuilder - # marshmallow-sqlalchemy -marshmallow-sqlalchemy==1.4.2 - # via flask-appbuilder -mdurl==0.1.2 - # via markdown-it-py -msgpack==1.0.8 - # via apache-superset (pyproject.toml) -msgspec==0.19.0 - # via flask-session -nh3==0.2.21 - # via apache-superset (pyproject.toml) -numpy==2.2.6 - # via - # apache-superset (pyproject.toml) - # bottleneck - # pandas -odfpy==1.4.1 - # via pandas -openpyxl==3.1.5 - # via pandas -ordered-set==4.1.0 - # via flask-limiter -outcome==1.3.0.post0 - # via - # trio - # trio-websocket -packaging==25.0 - # via - # apache-superset (pyproject.toml) - # apispec - # deprecation - # gunicorn - # kombu - # limits - # marshmallow - # shillelagh -pandas==2.0.3 - # via apache-superset (pyproject.toml) -paramiko==3.5.1 - # via - # apache-superset (pyproject.toml) - # sshtunnel -parsedatetime==2.6 - # via apache-superset (pyproject.toml) -pgsanity==0.2.9 - # via apache-superset (pyproject.toml) -platformdirs==4.3.8 - # via requests-cache -ply==3.11 - # via jsonpath-ng -polyline==2.0.2 - # via apache-superset (pyproject.toml) -prison==0.2.1 - # via flask-appbuilder -prompt-toolkit==3.0.51 - # via click-repl -pyarrow==18.1.0 - # via apache-superset (pyproject.toml) -pyasn1==0.6.1 - # via - # pyasn1-modules - # rsa -pyasn1-modules==0.4.2 - # via google-auth -pycparser==2.22 - # via cffi -pygments==2.19.2 - # via rich -pyjwt==2.10.1 - # via - # apache-superset (pyproject.toml) - # flask-appbuilder - # flask-jwt-extended -pynacl==1.5.0 - # via paramiko -pyopenssl==25.1.0 - # via shillelagh -pyparsing==3.2.3 - # via apache-superset (pyproject.toml) -pysocks==1.7.1 - # via urllib3 -python-dateutil==2.9.0.post0 - # via - # apache-superset (pyproject.toml) - # celery - # croniter - # flask-appbuilder - # holidays - # pandas - # shillelagh -python-dotenv==1.1.1 - # via apache-superset (pyproject.toml) -python-geohash==0.8.5 - # via apache-superset (pyproject.toml) -pytz==2025.2 - # via - # croniter - # flask-babel - # pandas -pyxlsb==1.0.10 - # via pandas -pyyaml==6.0.2 - # via - # apache-superset (pyproject.toml) - # apispec -redis==4.6.0 - # via apache-superset (pyproject.toml) -referencing==0.36.2 - # via - # jsonschema - # jsonschema-specifications -requests==2.32.4 - # via - # requests-cache - # shillelagh -requests-cache==1.2.1 - # via shillelagh -rich==13.9.4 - # via flask-limiter -rpds-py==0.25.1 - # via - # jsonschema - # referencing -rsa==4.9.1 - # via google-auth -selenium==4.34.0 - # via apache-superset (pyproject.toml) -shillelagh==1.3.5 - # via apache-superset (pyproject.toml) -simplejson==3.20.1 - # via apache-superset (pyproject.toml) -six==1.17.0 - # via - # prison - # python-dateutil - # wtforms-json -slack-sdk==3.35.0 - # via apache-superset (pyproject.toml) -sniffio==1.3.1 - # via trio -sortedcontainers==2.4.0 - # via trio -sqlalchemy==1.4.54 - # via - # apache-superset (pyproject.toml) - # alembic - # flask-appbuilder - # flask-sqlalchemy - # marshmallow-sqlalchemy - # shillelagh - # sqlalchemy-utils -sqlalchemy-utils==0.38.3 - # via - # apache-superset (pyproject.toml) - # flask-appbuilder -sqlglot==26.31.0 - # via apache-superset (pyproject.toml) -sshtunnel==0.4.0 - # via apache-superset (pyproject.toml) -tabulate==0.9.0 - # via apache-superset (pyproject.toml) -trio==0.30.0 - # via - # selenium - # trio-websocket -trio-websocket==0.12.2 - # via selenium -typing-extensions==4.14.0 - # via - # apache-superset (pyproject.toml) - # alembic - # cattrs - # limits - # pyopenssl - # referencing - # selenium - # shillelagh -tzdata==2025.2 - # via - # kombu - # pandas -url-normalize==2.2.1 - # via requests-cache -urllib3==2.4.0 - # via - # requests - # requests-cache - # selenium -vine==5.1.0 - # via - # amqp - # celery - # kombu -wcwidth==0.2.13 - # via prompt-toolkit -websocket-client==1.8.0 - # via selenium -werkzeug==3.1.3 - # via - # flask - # flask-appbuilder - # flask-jwt-extended - # flask-login -wrapt==1.17.2 - # via deprecated -wsproto==1.2.0 - # via trio-websocket -wtforms==3.2.1 - # via - # apache-superset (pyproject.toml) - # flask-appbuilder - # flask-wtf - # wtforms-json -wtforms-json==0.3.5 - # via apache-superset (pyproject.toml) -xlrd==2.0.2 - # via pandas -xlsxwriter==3.0.9 - # via - # apache-superset (pyproject.toml) - # pandas -zstandard==0.23.0 - # via flask-compress + # via -r requirements/translations.in diff --git a/scripts/uv-pip-compile.sh b/scripts/uv-pip-compile.sh index dd1208ec267..f3f12a96363 100755 --- a/scripts/uv-pip-compile.sh +++ b/scripts/uv-pip-compile.sh @@ -24,7 +24,8 @@ 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 +# Generate the requirements/development.txt file, making sure requirements/base.txt is a constraint to keep the versions in sync. Note that `development.txt` is a Superset of `base.txt` where version for the shared libs should match their version. uv pip compile requirements/development.in -c requirements/base.txt -o requirements/development.txt $ADDITIONAL_ARGS +# NOTE translation is intended as a "supplemental" set of pins that can be combined with either base or dev as needed uv pip compile requirements/translations.in -o requirements/translations.txt $ADDITIONAL_ARGS