This is an automated email from the ASF dual-hosted git repository. utkarsharma pushed a commit to branch sync_2-10-test in repository https://gitbox.apache.org/repos/asf/airflow.git
commit f593d8b07386320a0eb9c1a1a75af41a0d284996 Author: Jarek Potiuk <[email protected]> AuthorDate: Mon Nov 4 09:59:29 2024 +0100 Allow to switch breeze to use uv internally to create virtualenvs (#43587) (#43624) Breeze sometimes creates "internal" virtualenvs in local ".build" directory when it needs - for example in order to run k8s tests or for release management commands. This PR adds capability to switch breeze to use `uv` instead of `pip` to install depdendencies in those envs. You can now switch breeze to use uv by `breeze setup config --use-uv` and switch back to pip by `breeze setup config --no-use-uv`. (cherry picked from commit a2a0ef09357f278bde031092e395f13286fd3076) --- .github/workflows/ci.yml | 1 + .github/workflows/k8s-tests.yml | 7 ++++ Dockerfile | 4 +-- Dockerfile.ci | 8 ++--- dev/breeze/doc/ci/02_images.md | 4 +-- dev/breeze/doc/images/output-commands.svg | 42 +++++++++++----------- dev/breeze/doc/images/output_setup_config.svg | 32 +++++++++-------- dev/breeze/doc/images/output_setup_config.txt | 2 +- .../commands/release_management_commands.py | 10 ++++-- .../src/airflow_breeze/commands/setup_commands.py | 31 ++++++++++++---- .../commands/setup_commands_config.py | 1 + dev/breeze/src/airflow_breeze/global_constants.py | 3 +- .../src/airflow_breeze/utils/kubernetes_utils.py | 27 +++++++++++--- dev/breeze/src/airflow_breeze/utils/run_tests.py | 6 ++-- .../src/airflow_breeze/utils/virtualenv_utils.py | 30 ++++++++++++++-- scripts/ci/install_breeze.sh | 2 +- scripts/ci/pre_commit/update_installers.py | 6 +++- 17 files changed, 150 insertions(+), 66 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 866f8f253d4..c94518489d2 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -622,6 +622,7 @@ jobs: kubernetes-versions-list-as-string: ${{ needs.build-info.outputs.kubernetes-versions-list-as-string }} kubernetes-combos-list-as-string: ${{ needs.build-info.outputs.kubernetes-combos-list-as-string }} include-success-outputs: ${{ needs.build-info.outputs.include-success-outputs }} + use-uv: ${{ needs.build-info.outputs.force-pip && 'false' || 'true' }} debug-resources: ${{ needs.build-info.outputs.debug-resources }} if: > ( needs.build-info.outputs.run-kubernetes-tests == 'true' || diff --git a/.github/workflows/k8s-tests.yml b/.github/workflows/k8s-tests.yml index c4b72a9afc9..9a764e88c4e 100644 --- a/.github/workflows/k8s-tests.yml +++ b/.github/workflows/k8s-tests.yml @@ -44,6 +44,10 @@ on: # yamllint disable-line rule:truthy description: "Whether to include success outputs" required: true type: string + use-uv: + description: "Whether to use uv" + required: true + type: string debug-resources: description: "Whether to debug resources" required: true @@ -96,6 +100,9 @@ jobs: key: "\ k8s-env-${{ steps.breeze.outputs.host-python-version }}-\ ${{ hashFiles('scripts/ci/kubernetes/k8s_requirements.txt','hatch_build.py') }}" + - name: "Switch breeze to use uv" + run: breeze setup-config --use-uv + if: inputs.use-uv == 'true' - name: Run complete K8S tests ${{ inputs.kubernetes-combos-list-as-string }} run: breeze k8s run-complete-tests --run-in-parallel --upgrade --no-copy-local-sources env: diff --git a/Dockerfile b/Dockerfile index cf5226c0008..4cdf1a8bb34 100644 --- a/Dockerfile +++ b/Dockerfile @@ -49,8 +49,8 @@ ARG AIRFLOW_VERSION="2.9.3" ARG PYTHON_BASE_IMAGE="python:3.8-slim-bookworm" -ARG AIRFLOW_PIP_VERSION=24.2 -ARG AIRFLOW_UV_VERSION=0.4.1 +ARG AIRFLOW_PIP_VERSION=24.3.1 +ARG AIRFLOW_UV_VERSION=0.4.29 ARG AIRFLOW_USE_UV="false" ARG UV_HTTP_TIMEOUT="300" ARG AIRFLOW_IMAGE_REPOSITORY="https://github.com/apache/airflow" diff --git a/Dockerfile.ci b/Dockerfile.ci index d23e810fa36..e188a7ec391 100644 --- a/Dockerfile.ci +++ b/Dockerfile.ci @@ -1297,8 +1297,8 @@ ARG DEFAULT_CONSTRAINTS_BRANCH="constraints-main" # It can also be overwritten manually by setting the AIRFLOW_CI_BUILD_EPOCH environment variable. ARG AIRFLOW_CI_BUILD_EPOCH="10" ARG AIRFLOW_PRE_CACHED_PIP_PACKAGES="true" -ARG AIRFLOW_PIP_VERSION=24.2 -ARG AIRFLOW_UV_VERSION=0.4.1 +ARG AIRFLOW_PIP_VERSION=24.3.1 +ARG AIRFLOW_UV_VERSION=0.4.29 ARG AIRFLOW_USE_UV="true" # Setup PIP # By default PIP install run without cache to make image smaller @@ -1321,8 +1321,8 @@ ARG AIRFLOW_VERSION="" # Additional PIP flags passed to all pip install commands except reinstalling pip itself ARG ADDITIONAL_PIP_INSTALL_FLAGS="" -ARG AIRFLOW_PIP_VERSION=24.2 -ARG AIRFLOW_UV_VERSION=0.4.1 +ARG AIRFLOW_PIP_VERSION=24.3.1 +ARG AIRFLOW_UV_VERSION=0.4.29 ARG AIRFLOW_USE_UV="true" ENV AIRFLOW_REPO=${AIRFLOW_REPO}\ diff --git a/dev/breeze/doc/ci/02_images.md b/dev/breeze/doc/ci/02_images.md index f9ea4faaee7..1db263f8b3a 100644 --- a/dev/breeze/doc/ci/02_images.md +++ b/dev/breeze/doc/ci/02_images.md @@ -447,8 +447,8 @@ can be used for CI images: | `DEV_APT_DEPS` | | Dev APT dependencies installed in the first part of the image | | `ADDITIONAL_DEV_APT_DEPS` | | Additional apt dev dependencies installed in the first part of the image | | `ADDITIONAL_DEV_APT_ENV` | | Additional env variables defined when installing dev deps | -| `AIRFLOW_PIP_VERSION` | `24.0` | PIP version used. | -| `AIRFLOW_UV_VERSION` | `0.1.10` | UV version used. | +| `AIRFLOW_PIP_VERSION` | `24.3.1` | PIP version used. | +| `AIRFLOW_UV_VERSION` | `0.4.29` | UV version used. | | `AIRFLOW_USE_UV` | `true` | Whether to use UV for installation. | | `PIP_PROGRESS_BAR` | `on` | Progress bar for PIP installation | diff --git a/dev/breeze/doc/images/output-commands.svg b/dev/breeze/doc/images/output-commands.svg index 08d3dc2a13e..5888d1fc862 100644 --- a/dev/breeze/doc/images/output-commands.svg +++ b/dev/breeze/doc/images/output-commands.svg @@ -298,53 +298,53 @@ </text><text class="breeze-help-r2" x="12.2" y="44.4" textLength="73.2" clip-path="url(#breeze-help-line-1)">Usage:</text><text class="breeze-help-r3" x="97.6" y="44.4" textLength="73.2" clip-path="url(#breeze-help-line-1)">breeze</text><text class="breeze-help-r1" x="183" y="44.4" textLength="12.2" clip-path="url(#breeze-help-line-1)">[</text><text class="breeze-help-r4" x="195.2" y="44.4" textLength="85.4" clip-path="url(#breeze-help-line-1)">OPTIONS</text><text class="breeze-help-r1" [...] </text><text class="breeze-help-r1" x="1464" y="68.8" textLength="12.2" clip-path="url(#breeze-help-line-2)"> </text><text class="breeze-help-r5" x="0" y="93.2" textLength="24.4" clip-path="url(#breeze-help-line-3)">╭─</text><text class="breeze-help-r5" x="24.4" y="93.2" textLength="195.2" clip-path="url(#breeze-help-line-3)"> Execution mode </text><text class="breeze-help-r5" x="219.6" y="93.2" textLength="1220" clip-path="url(#breeze-help-line-3)">────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="breeze-help-r [...] -</text><text class="breeze-help-r5" x="0" y="117.6" textLength="12.2" clip-path="url(#breeze-help-line-4)">│</text><text class="breeze-help-r4" x="24.4" y="117.6" textLength="12.2" clip-path="url(#breeze-help-line-4)">-</text><text class="breeze-help-r4" x="36.6" y="117.6" textLength="85.4" clip-path="url(#breeze-help-line-4)">-python</text><text class="breeze-help-r6" x="366" y="117.6" textLength="24.4" clip-path="url(#breeze-help-line-4)">-p</text><text class="breeze-help-r1" x="414.8" [...] +</text><text class="breeze-help-r5" x="0" y="117.6" textLength="12.2" clip-path="url(#breeze-help-line-4)">│</text><text class="breeze-help-r4" x="24.4" y="117.6" textLength="97.6" clip-path="url(#breeze-help-line-4)">--python</text><text class="breeze-help-r6" x="366" y="117.6" textLength="24.4" clip-path="url(#breeze-help-line-4)">-p</text><text class="breeze-help-r1" x="414.8" y="117.6" textLength="732" clip-path="url(#breeze-help-line-4)">Python major/minor version use [...] </text><text class="breeze-help-r5" x="0" y="142" textLength="12.2" clip-path="url(#breeze-help-line-5)">│</text><text class="breeze-help-r7" x="414.8" y="142" textLength="732" clip-path="url(#breeze-help-line-5)">(>3.8< | 3.9 | 3.10 | 3.11 | 3.12)                          </text><text class="breeze-help-r5" x="145 [...] </text><text class="breeze-help-r5" x="0" y="166.4" textLength="12.2" clip-path="url(#breeze-help-line-6)">│</text><text class="breeze-help-r5" x="414.8" y="166.4" textLength="732" clip-path="url(#breeze-help-line-6)">[default: 3.8]                                           [...] -</text><text class="breeze-help-r5" x="0" y="190.8" textLength="12.2" clip-path="url(#breeze-help-line-7)">│</text><text class="breeze-help-r4" x="24.4" y="190.8" textLength="12.2" clip-path="url(#breeze-help-line-7)">-</text><text class="breeze-help-r4" x="36.6" y="190.8" textLength="146.4" clip-path="url(#breeze-help-line-7)">-integration</text><text class="breeze-help-r1" x="414.8" y="190.8" textLength="1024.8" clip-path="url(#breeze-help-line-7)">Integration(s) to enable [...] +</text><text class="breeze-help-r5" x="0" y="190.8" textLength="12.2" clip-path="url(#breeze-help-line-7)">│</text><text class="breeze-help-r4" x="24.4" y="190.8" textLength="158.6" clip-path="url(#breeze-help-line-7)">--integration</text><text class="breeze-help-r1" x="414.8" y="190.8" textLength="1024.8" clip-path="url(#breeze-help-line-7)">Integration(s) to enable when running (can be more than one).        [...] </text><text class="breeze-help-r5" x="0" y="215.2" textLength="12.2" clip-path="url(#breeze-help-line-8)">│</text><text class="breeze-help-r7" x="414.8" y="215.2" textLength="1024.8" clip-path="url(#breeze-help-line-8)">(all | all-testable | cassandra | celery | drill | kafka | kerberos | mongo | mssql </text><text class="breeze-help-r5" x="1451.8" y="215.2" textLength="12.2" clip-path="url(#breeze-help [...] </text><text class="breeze-help-r5" x="0" y="239.6" textLength="12.2" clip-path="url(#breeze-help-line-9)">│</text><text class="breeze-help-r7" x="414.8" y="239.6" textLength="1024.8" clip-path="url(#breeze-help-line-9)">| openlineage | otel | pinot | qdrant | redis | statsd | trino | ydb)               </text><text class="breeze-help-r5" x [...] -</text><text class="breeze-help-r5" x="0" y="264" textLength="12.2" clip-path="url(#breeze-help-line-10)">│</text><text class="breeze-help-r4" x="24.4" y="264" textLength="12.2" clip-path="url(#breeze-help-line-10)">-</text><text class="breeze-help-r4" x="36.6" y="264" textLength="134.2" clip-path="url(#breeze-help-line-10)">-standalone</text><text class="breeze-help-r4" x="170.8" y="264" textLength="170.8" clip-path="url(#breeze-help-line-10)">-dag-processor</text><text class="breeze-he [...] -</text><text class="breeze-help-r5" x="0" y="288.4" textLength="12.2" clip-path="url(#breeze-help-line-11)">│</text><text class="breeze-help-r4" x="24.4" y="288.4" textLength="12.2" clip-path="url(#breeze-help-line-11)">-</text><text class="breeze-help-r4" x="36.6" y="288.4" textLength="109.8" clip-path="url(#breeze-help-line-11)">-database</text><text class="breeze-help-r4" x="146.4" y="288.4" textLength="122" clip-path="url(#breeze-help-line-11)">-isolation</text><text class="breeze-he [...] +</text><text class="breeze-help-r5" x="0" y="264" textLength="12.2" clip-path="url(#breeze-help-line-10)">│</text><text class="breeze-help-r4" x="24.4" y="264" textLength="317.2" clip-path="url(#breeze-help-line-10)">--standalone-dag-processor</text><text class="breeze-help-r1" x="414.8" y="264" textLength="573.4" clip-path="url(#breeze-help-line-10)">Run standalone dag processor for start-airflow.</text><text class="breeze-help-r5" x="1451.8" y="264" textLength= [...] +</text><text class="breeze-help-r5" x="0" y="288.4" textLength="12.2" clip-path="url(#breeze-help-line-11)">│</text><text class="breeze-help-r4" x="24.4" y="288.4" textLength="244" clip-path="url(#breeze-help-line-11)">--database-isolation</text><text class="breeze-help-r1" x="414.8" y="288.4" textLength="475.8" clip-path="url(#breeze-help-line-11)">Run airflow in database isolation mode.</text><text class="breeze-help-r5" x="1451.8" y="288.4" textLength="12.2" c [...] </text><text class="breeze-help-r5" x="0" y="312.8" textLength="1464" clip-path="url(#breeze-help-line-12)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-help-r1" x="1464" y="312.8" textLength="12.2" clip-path="url(#breeze-help-line-12)"> </text><text class="breeze-help-r5" x="0" y="337.2" textLength="24.4" clip-path="url(#breeze-help-line-13)">╭─</text><text class="breeze-help-r5" x="24.4" y="337.2" textLength="463.6" clip-path="url(#breeze-help-line-13)"> Docker Compose selection and cleanup </text><text class="breeze-help-r5" x="488" y="337.2" textLength="951.6" clip-path="url(#breeze-help-line-13)">──────────────────────────────────────────────────────────────────────────────</text><text [...] -</text><text class="breeze-help-r5" x="0" y="361.6" textLength="12.2" clip-path="url(#breeze-help-line-14)">│</text><text class="breeze-help-r4" x="24.4" y="361.6" textLength="12.2" clip-path="url(#breeze-help-line-14)">-</text><text class="breeze-help-r4" x="36.6" y="361.6" textLength="97.6" clip-path="url(#breeze-help-line-14)">-project</text><text class="breeze-help-r4" x="134.2" y="361.6" textLength="61" clip-path="url(#breeze-help-line-14)">-name</text><text class="breeze-help-r1" x [...] -</text><text class="breeze-help-r5" x="0" y="386" textLength="12.2" clip-path="url(#breeze-help-line-15)">│</text><text class="breeze-help-r1" x="244" y="386" textLength="512.4" clip-path="url(#breeze-help-line-15)">project name and you can use `breeze down </text><text class="breeze-help-r4" x="756.4" y="386" textLength="12.2" clip-path="url(#breeze-help-line-15)">-</text><text class="breeze-help-r4" x="768.6" y="386" textLength="97.6" clip-path=" [...] +</text><text class="breeze-help-r5" x="0" y="361.6" textLength="12.2" clip-path="url(#breeze-help-line-14)">│</text><text class="breeze-help-r4" x="24.4" y="361.6" textLength="170.8" clip-path="url(#breeze-help-line-14)">--project-name</text><text class="breeze-help-r1" x="244" y="361.6" textLength="1195.6" clip-path="url(#breeze-help-line-14)">Name of the docker-compose project to bring down. The `docker-compose` is for legacy& [...] +</text><text class="breeze-help-r5" x="0" y="386" textLength="12.2" clip-path="url(#breeze-help-line-15)">│</text><text class="breeze-help-r1" x="244" y="386" textLength="512.4" clip-path="url(#breeze-help-line-15)">project name and you can use `breeze down </text><text class="breeze-help-r4" x="756.4" y="386" textLength="170.8" clip-path="url(#breeze-help-line-15)">--project-name</text><text class="breeze-help-r1" x="927.2" y="386" textLength="512 [...] </text><text class="breeze-help-r5" x="0" y="410.4" textLength="12.2" clip-path="url(#breeze-help-line-16)">│</text><text class="breeze-help-r1" x="244" y="410.4" textLength="1195.6" clip-path="url(#breeze-help-line-16)">belonging to it.                                          [...] </text><text class="breeze-help-r5" x="0" y="434.8" textLength="12.2" clip-path="url(#breeze-help-line-17)">│</text><text class="breeze-help-r7" x="244" y="434.8" textLength="1195.6" clip-path="url(#breeze-help-line-17)">(breeze | pre-commit | docker-compose)                                    [...] </text><text class="breeze-help-r5" x="0" y="459.2" textLength="12.2" clip-path="url(#breeze-help-line-18)">│</text><text class="breeze-help-r5" x="244" y="459.2" textLength="1195.6" clip-path="url(#breeze-help-line-18)">[default: breeze]                                          [...] -</text><text class="breeze-help-r5" x="0" y="483.6" textLength="12.2" clip-path="url(#breeze-help-line-19)">│</text><text class="breeze-help-r4" x="24.4" y="483.6" textLength="12.2" clip-path="url(#breeze-help-line-19)">-</text><text class="breeze-help-r4" x="36.6" y="483.6" textLength="85.4" clip-path="url(#breeze-help-line-19)">-docker</text><text class="breeze-help-r4" x="122" y="483.6" textLength="61" clip-path="url(#breeze-help-line-19)">-host</text><text class="breeze-help-r1" x="2 [...] +</text><text class="breeze-help-r5" x="0" y="483.6" textLength="12.2" clip-path="url(#breeze-help-line-19)">│</text><text class="breeze-help-r4" x="24.4" y="483.6" textLength="158.6" clip-path="url(#breeze-help-line-19)">--docker-host</text><text class="breeze-help-r1" x="244" y="483.6" textLength="915" clip-path="url(#breeze-help-line-19)">Optional - docker host to use when running docker commands. When set, the `</text><t [...] </text><text class="breeze-help-r5" x="0" y="508" textLength="12.2" clip-path="url(#breeze-help-line-20)">│</text><text class="breeze-help-r1" x="244" y="508" textLength="1195.6" clip-path="url(#breeze-help-line-20)">ignored when building images.                                       [...] </text><text class="breeze-help-r5" x="0" y="532.4" textLength="12.2" clip-path="url(#breeze-help-line-21)">│</text><text class="breeze-help-r7" x="244" y="532.4" textLength="1195.6" clip-path="url(#breeze-help-line-21)">(TEXT)                                            & [...] </text><text class="breeze-help-r5" x="0" y="556.8" textLength="1464" clip-path="url(#breeze-help-line-22)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-help-r1" x="1464" y="556.8" textLength="12.2" clip-path="url(#breeze-help-line-22)"> </text><text class="breeze-help-r5" x="0" y="581.2" textLength="24.4" clip-path="url(#breeze-help-line-23)">╭─</text><text class="breeze-help-r5" x="24.4" y="581.2" textLength="122" clip-path="url(#breeze-help-line-23)"> Database </text><text class="breeze-help-r5" x="146.4" y="581.2" textLength="1293.2" clip-path="url(#breeze-help-line-23)">──────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="breeze-help- [...] -</text><text class="breeze-help-r5" x="0" y="605.6" textLength="12.2" clip-path="url(#breeze-help-line-24)">│</text><text class="breeze-help-r4" x="24.4" y="605.6" textLength="12.2" clip-path="url(#breeze-help-line-24)">-</text><text class="breeze-help-r4" x="36.6" y="605.6" textLength="97.6" clip-path="url(#breeze-help-line-24)">-backend</text><text class="breeze-help-r6" x="268.4" y="605.6" textLength="24.4" clip-path="url(#breeze-help-line-24)">-b</text><text class="breeze-help-r1" x= [...] +</text><text class="breeze-help-r5" x="0" y="605.6" textLength="12.2" clip-path="url(#breeze-help-line-24)">│</text><text class="breeze-help-r4" x="24.4" y="605.6" textLength="109.8" clip-path="url(#breeze-help-line-24)">--backend</text><text class="breeze-help-r6" x="268.4" y="605.6" textLength="24.4" clip-path="url(#breeze-help-line-24)">-b</text><text class="breeze-help-r1" x="317.2" y="605.6" textLength="1122.4" clip-path="url(#breeze-help-line-24)">Database backend to  [...] </text><text class="breeze-help-r5" x="0" y="630" textLength="12.2" clip-path="url(#breeze-help-line-25)">│</text><text class="breeze-help-r1" x="317.2" y="630" textLength="1122.4" clip-path="url(#breeze-help-line-25)">configuration, meaning there will be no database available, and any attempts to connect to  </text><text class="breeze-help-r5" x="1451.8" y="630" textLength="12.2" clip-path="url(#breeze-help-line- [...] </text><text class="breeze-help-r5" x="0" y="654.4" textLength="12.2" clip-path="url(#breeze-help-line-26)">│</text><text class="breeze-help-r1" x="317.2" y="654.4" textLength="1122.4" clip-path="url(#breeze-help-line-26)">the Airflow database will fail.                                    &# [...] </text><text class="breeze-help-r5" x="0" y="678.8" textLength="12.2" clip-path="url(#breeze-help-line-27)">│</text><text class="breeze-help-r7" x="317.2" y="678.8" textLength="1122.4" clip-path="url(#breeze-help-line-27)">(>sqlite< | mysql | postgres | none)                                  [...] </text><text class="breeze-help-r5" x="0" y="703.2" textLength="12.2" clip-path="url(#breeze-help-line-28)">│</text><text class="breeze-help-r5" x="317.2" y="703.2" textLength="1122.4" clip-path="url(#breeze-help-line-28)">[default: sqlite]                                         & [...] -</text><text class="breeze-help-r5" x="0" y="727.6" textLength="12.2" clip-path="url(#breeze-help-line-29)">│</text><text class="breeze-help-r4" x="24.4" y="727.6" textLength="12.2" clip-path="url(#breeze-help-line-29)">-</text><text class="breeze-help-r4" x="36.6" y="727.6" textLength="109.8" clip-path="url(#breeze-help-line-29)">-postgres</text><text class="breeze-help-r4" x="146.4" y="727.6" textLength="97.6" clip-path="url(#breeze-help-line-29)">-version</text><text class="breeze-hel [...] -</text><text class="breeze-help-r5" x="0" y="752" textLength="12.2" clip-path="url(#breeze-help-line-30)">│</text><text class="breeze-help-r4" x="24.4" y="752" textLength="12.2" clip-path="url(#breeze-help-line-30)">-</text><text class="breeze-help-r4" x="36.6" y="752" textLength="73.2" clip-path="url(#breeze-help-line-30)">-mysql</text><text class="breeze-help-r4" x="109.8" y="752" textLength="97.6" clip-path="url(#breeze-help-line-30)">-version</text><text class="breeze-help-r6" x="268 [...] -</text><text class="breeze-help-r5" x="0" y="776.4" textLength="12.2" clip-path="url(#breeze-help-line-31)">│</text><text class="breeze-help-r4" x="24.4" y="776.4" textLength="12.2" clip-path="url(#breeze-help-line-31)">-</text><text class="breeze-help-r4" x="36.6" y="776.4" textLength="36.6" clip-path="url(#breeze-help-line-31)">-db</text><text class="breeze-help-r4" x="73.2" y="776.4" textLength="73.2" clip-path="url(#breeze-help-line-31)">-reset</text><text class="breeze-help-r6" x="2 [...] +</text><text class="breeze-help-r5" x="0" y="727.6" textLength="12.2" clip-path="url(#breeze-help-line-29)">│</text><text class="breeze-help-r4" x="24.4" y="727.6" textLength="219.6" clip-path="url(#breeze-help-line-29)">--postgres-version</text><text class="breeze-help-r6" x="268.4" y="727.6" textLength="24.4" clip-path="url(#breeze-help-line-29)">-P</text><text class="breeze-help-r1" x="317.2" y="727.6" textLength="305" clip-path="url(#breeze-help-line-29)">Version of Postgre [...] +</text><text class="breeze-help-r5" x="0" y="752" textLength="12.2" clip-path="url(#breeze-help-line-30)">│</text><text class="breeze-help-r4" x="24.4" y="752" textLength="183" clip-path="url(#breeze-help-line-30)">--mysql-version</text><text class="breeze-help-r6" x="268.4" y="752" textLength="24.4" clip-path="url(#breeze-help-line-30)">-M</text><text class="breeze-help-r1" x="317.2" y="752" textLength="268.4" clip-path="url(#breeze-help-line-30)">Version of MySQL used.</ [...] +</text><text class="breeze-help-r5" x="0" y="776.4" textLength="12.2" clip-path="url(#breeze-help-line-31)">│</text><text class="breeze-help-r4" x="24.4" y="776.4" textLength="122" clip-path="url(#breeze-help-line-31)">--db-reset</text><text class="breeze-help-r6" x="268.4" y="776.4" textLength="24.4" clip-path="url(#breeze-help-line-31)">-d</text><text class="breeze-help-r1" x="317.2" y="776.4" textLength="451.4" clip-path="url(#breeze-help-line-31)">Reset DB when enterin [...] </text><text class="breeze-help-r5" x="0" y="800.8" textLength="1464" clip-path="url(#breeze-help-line-32)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-help-r1" x="1464" y="800.8" textLength="12.2" clip-path="url(#breeze-help-line-32)"> </text><text class="breeze-help-r5" x="0" y="825.2" textLength="24.4" clip-path="url(#breeze-help-line-33)">╭─</text><text class="breeze-help-r5" x="24.4" y="825.2" textLength="488" clip-path="url(#breeze-help-line-33)"> Build CI image (before entering shell) </text><text class="breeze-help-r5" x="512.4" y="825.2" textLength="927.2" clip-path="url(#breeze-help-line-33)">────────────────────────────────────────────────────────────────────────────</text>< [...] -</text><text class="breeze-help-r5" x="0" y="849.6" textLength="12.2" clip-path="url(#breeze-help-line-34)">│</text><text class="breeze-help-r4" x="24.4" y="849.6" textLength="12.2" clip-path="url(#breeze-help-line-34)">-</text><text class="breeze-help-r4" x="36.6" y="849.6" textLength="85.4" clip-path="url(#breeze-help-line-34)">-github</text><text class="breeze-help-r4" x="122" y="849.6" textLength="134.2" clip-path="url(#breeze-help-line-34)">-repository</text><text class="breeze-help [...] -</text><text class="breeze-help-r5" x="0" y="874" textLength="12.2" clip-path="url(#breeze-help-line-35)">│</text><text class="breeze-help-r4" x="24.4" y="874" textLength="12.2" clip-path="url(#breeze-help-line-35)">-</text><text class="breeze-help-r4" x="36.6" y="874" textLength="97.6" clip-path="url(#breeze-help-line-35)">-builder</text><text class="breeze-help-r1" x="341.6" y="874" textLength="756.4" clip-path="url(#breeze-help-line-35)">Buildx builder used to perf [...] +</text><text class="breeze-help-r5" x="0" y="849.6" textLength="12.2" clip-path="url(#breeze-help-line-34)">│</text><text class="breeze-help-r4" x="24.4" y="849.6" textLength="231.8" clip-path="url(#breeze-help-line-34)">--github-repository</text><text class="breeze-help-r6" x="292.8" y="849.6" textLength="24.4" clip-path="url(#breeze-help-line-34)">-g</text><text class="breeze-help-r1" x="341.6" y="849.6" textLength="585.6" clip-path="url(#breeze-help-line-34)">GitHub repository [...] +</text><text class="breeze-help-r5" x="0" y="874" textLength="12.2" clip-path="url(#breeze-help-line-35)">│</text><text class="breeze-help-r4" x="24.4" y="874" textLength="109.8" clip-path="url(#breeze-help-line-35)">--builder</text><text class="breeze-help-r1" x="341.6" y="874" textLength="756.4" clip-path="url(#breeze-help-line-35)">Buildx builder used to perform `docker buildx build` commands.</text><text class="breeze-help-r7" x="1110.2" y="874 [...] </text><text class="breeze-help-r5" x="0" y="898.4" textLength="12.2" clip-path="url(#breeze-help-line-36)">│</text><text class="breeze-help-r5" x="341.6" y="898.4" textLength="756.4" clip-path="url(#breeze-help-line-36)">[default: autodetect]                                         [...] -</text><text class="breeze-help-r5" x="0" y="922.8" textLength="12.2" clip-path="url(#breeze-help-line-37)">│</text><text class="breeze-help-r4" x="24.4" y="922.8" textLength="12.2" clip-path="url(#breeze-help-line-37)">-</text><text class="breeze-help-r4" x="36.6" y="922.8" textLength="48.8" clip-path="url(#breeze-help-line-37)">-use</text><text class="breeze-help-r4" x="85.4" y="922.8" textLength="36.6" clip-path="url(#breeze-help-line-37)">-uv</text><text class="breeze-help-r1" x="122 [...] -</text><text class="breeze-help-r5" x="0" y="947.2" textLength="12.2" clip-path="url(#breeze-help-line-38)">│</text><text class="breeze-help-r4" x="24.4" y="947.2" textLength="12.2" clip-path="url(#breeze-help-line-38)">-</text><text class="breeze-help-r4" x="36.6" y="947.2" textLength="36.6" clip-path="url(#breeze-help-line-38)">-uv</text><text class="breeze-help-r4" x="73.2" y="947.2" textLength="158.6" clip-path="url(#breeze-help-line-38)">-http-timeout</text><text class="breeze-help- [...] +</text><text class="breeze-help-r5" x="0" y="922.8" textLength="12.2" clip-path="url(#breeze-help-line-37)">│</text><text class="breeze-help-r4" x="24.4" y="922.8" textLength="97.6" clip-path="url(#breeze-help-line-37)">--use-uv</text><text class="breeze-help-r1" x="122" y="922.8" textLength="12.2" clip-path="url(#breeze-help-line-37)">/</text><text class="breeze-help-r4" x="134.2" y="922.8" textLength="134.2" clip-path="url(#breeze-help-line-37)">--no-use-uv</text><text class="breeze-he [...] +</text><text class="breeze-help-r5" x="0" y="947.2" textLength="12.2" clip-path="url(#breeze-help-line-38)">│</text><text class="breeze-help-r4" x="24.4" y="947.2" textLength="207.4" clip-path="url(#breeze-help-line-38)">--uv-http-timeout</text><text class="breeze-help-r1" x="341.6" y="947.2" textLength="829.6" clip-path="url(#breeze-help-line-38)">Timeout for requests that UV makes (only used in case of UV builds).</text><text [...] </text><text class="breeze-help-r5" x="0" y="971.6" textLength="12.2" clip-path="url(#breeze-help-line-39)">│</text><text class="breeze-help-r5" x="341.6" y="971.6" textLength="829.6" clip-path="url(#breeze-help-line-39)">[default: 300; x>=1]                                        [...] </text><text class="breeze-help-r5" x="0" y="996" textLength="1464" clip-path="url(#breeze-help-line-40)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-help-r1" x="1464" y="996" textLength="12.2" clip-path="url(#breeze-help-line-40)"> </text><text class="breeze-help-r5" x="0" y="1020.4" textLength="24.4" clip-path="url(#breeze-help-line-41)">╭─</text><text class="breeze-help-r5" x="24.4" y="1020.4" textLength="183" clip-path="url(#breeze-help-line-41)"> Other options </text><text class="breeze-help-r5" x="207.4" y="1020.4" textLength="1232.2" clip-path="url(#breeze-help-line-41)">─────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="bree [...] -</text><text class="breeze-help-r5" x="0" y="1044.8" textLength="12.2" clip-path="url(#breeze-help-line-42)">│</text><text class="breeze-help-r4" x="24.4" y="1044.8" textLength="12.2" clip-path="url(#breeze-help-line-42)">-</text><text class="breeze-help-r4" x="36.6" y="1044.8" textLength="97.6" clip-path="url(#breeze-help-line-42)">-forward</text><text class="breeze-help-r4" x="134.2" y="1044.8" textLength="146.4" clip-path="url(#breeze-help-line-42)">-credentials</text><text class="bre [...] -</text><text class="breeze-help-r5" x="0" y="1069.2" textLength="12.2" clip-path="url(#breeze-help-line-43)">│</text><text class="breeze-help-r4" x="24.4" y="1069.2" textLength="12.2" clip-path="url(#breeze-help-line-43)">-</text><text class="breeze-help-r4" x="36.6" y="1069.2" textLength="48.8" clip-path="url(#breeze-help-line-43)">-max</text><text class="breeze-help-r4" x="85.4" y="1069.2" textLength="61" clip-path="url(#breeze-help-line-43)">-time</text><text class="breeze-help-r1" x= [...] +</text><text class="breeze-help-r5" x="0" y="1044.8" textLength="12.2" clip-path="url(#breeze-help-line-42)">│</text><text class="breeze-help-r4" x="24.4" y="1044.8" textLength="256.2" clip-path="url(#breeze-help-line-42)">--forward-credentials</text><text class="breeze-help-r6" x="305" y="1044.8" textLength="24.4" clip-path="url(#breeze-help-line-42)">-f</text><text class="breeze-help-r1" x="353.8" y="1044.8" textLength="634.4" clip-path="url(#breeze-help-line-42)">Forward local [...] +</text><text class="breeze-help-r5" x="0" y="1069.2" textLength="12.2" clip-path="url(#breeze-help-line-43)">│</text><text class="breeze-help-r4" x="24.4" y="1069.2" textLength="122" clip-path="url(#breeze-help-line-43)">--max-time</text><text class="breeze-help-r1" x="353.8" y="1069.2" textLength="1049.2" clip-path="url(#breeze-help-line-43)">Maximum time that the command should take - if it takes longer, the command  [...] </text><text class="breeze-help-r5" x="0" y="1093.6" textLength="12.2" clip-path="url(#breeze-help-line-44)">│</text><text class="breeze-help-r7" x="353.8" y="1093.6" textLength="1049.2" clip-path="url(#breeze-help-line-44)">(INTEGER RANGE)                                         & [...] </text><text class="breeze-help-r5" x="0" y="1118" textLength="1464" clip-path="url(#breeze-help-line-45)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-help-r1" x="1464" y="1118" textLength="12.2" clip-path="url(#breeze-help-line-45)"> </text><text class="breeze-help-r5" x="0" y="1142.4" textLength="24.4" clip-path="url(#breeze-help-line-46)">╭─</text><text class="breeze-help-r5" x="24.4" y="1142.4" textLength="195.2" clip-path="url(#breeze-help-line-46)"> Common options </text><text class="breeze-help-r5" x="219.6" y="1142.4" textLength="1220" clip-path="url(#breeze-help-line-46)">────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="bree [...] -</text><text class="breeze-help-r5" x="0" y="1166.8" textLength="12.2" clip-path="url(#breeze-help-line-47)">│</text><text class="breeze-help-r4" x="24.4" y="1166.8" textLength="12.2" clip-path="url(#breeze-help-line-47)">-</text><text class="breeze-help-r4" x="36.6" y="1166.8" textLength="85.4" clip-path="url(#breeze-help-line-47)">-answer</text><text class="breeze-help-r6" x="158.6" y="1166.8" textLength="24.4" clip-path="url(#breeze-help-line-47)">-a</text><text class="breeze-help-r1" [...] -</text><text class="breeze-help-r5" x="0" y="1191.2" textLength="12.2" clip-path="url(#breeze-help-line-48)">│</text><text class="breeze-help-r4" x="24.4" y="1191.2" textLength="12.2" clip-path="url(#breeze-help-line-48)">-</text><text class="breeze-help-r4" x="36.6" y="1191.2" textLength="48.8" clip-path="url(#breeze-help-line-48)">-dry</text><text class="breeze-help-r4" x="85.4" y="1191.2" textLength="48.8" clip-path="url(#breeze-help-line-48)">-run</text><text class="breeze-help-r6" x [...] -</text><text class="breeze-help-r5" x="0" y="1215.6" textLength="12.2" clip-path="url(#breeze-help-line-49)">│</text><text class="breeze-help-r4" x="24.4" y="1215.6" textLength="12.2" clip-path="url(#breeze-help-line-49)">-</text><text class="breeze-help-r4" x="36.6" y="1215.6" textLength="97.6" clip-path="url(#breeze-help-line-49)">-verbose</text><text class="breeze-help-r6" x="158.6" y="1215.6" textLength="24.4" clip-path="url(#breeze-help-line-49)">-v</text><text class="breeze-help-r1 [...] -</text><text class="breeze-help-r5" x="0" y="1240" textLength="12.2" clip-path="url(#breeze-help-line-50)">│</text><text class="breeze-help-r4" x="24.4" y="1240" textLength="12.2" clip-path="url(#breeze-help-line-50)">-</text><text class="breeze-help-r4" x="36.6" y="1240" textLength="61" clip-path="url(#breeze-help-line-50)">-help</text><text class="breeze-help-r6" x="158.6" y="1240" textLength="24.4" clip-path="url(#breeze-help-line-50)">-h</text><text class="breeze-help-r1" x="207.4" y [...] +</text><text class="breeze-help-r5" x="0" y="1166.8" textLength="12.2" clip-path="url(#breeze-help-line-47)">│</text><text class="breeze-help-r4" x="24.4" y="1166.8" textLength="97.6" clip-path="url(#breeze-help-line-47)">--answer</text><text class="breeze-help-r6" x="158.6" y="1166.8" textLength="24.4" clip-path="url(#breeze-help-line-47)">-a</text><text class="breeze-help-r1" x="207.4" y="1166.8" textLength="317.2" clip-path="url(#breeze-help-line-47)">Force answer to qu [...] +</text><text class="breeze-help-r5" x="0" y="1191.2" textLength="12.2" clip-path="url(#breeze-help-line-48)">│</text><text class="breeze-help-r4" x="24.4" y="1191.2" textLength="109.8" clip-path="url(#breeze-help-line-48)">--dry-run</text><text class="breeze-help-r6" x="158.6" y="1191.2" textLength="24.4" clip-path="url(#breeze-help-line-48)">-D</text><text class="breeze-help-r1" x="207.4" y="1191.2" textLength="719.8" clip-path="url(#breeze-help-line-48)">If dry-run is se [...] +</text><text class="breeze-help-r5" x="0" y="1215.6" textLength="12.2" clip-path="url(#breeze-help-line-49)">│</text><text class="breeze-help-r4" x="24.4" y="1215.6" textLength="109.8" clip-path="url(#breeze-help-line-49)">--verbose</text><text class="breeze-help-r6" x="158.6" y="1215.6" textLength="24.4" clip-path="url(#breeze-help-line-49)">-v</text><text class="breeze-help-r1" x="207.4" y="1215.6" textLength="585.6" clip-path="url(#breeze-help-line-49)">Print verbose informa [...] +</text><text class="breeze-help-r5" x="0" y="1240" textLength="12.2" clip-path="url(#breeze-help-line-50)">│</text><text class="breeze-help-r4" x="24.4" y="1240" textLength="73.2" clip-path="url(#breeze-help-line-50)">--help</text><text class="breeze-help-r6" x="158.6" y="1240" textLength="24.4" clip-path="url(#breeze-help-line-50)">-h</text><text class="breeze-help-r1" x="207.4" y="1240" textLength="329.4" clip-path="url(#breeze-help-line-50)">Show this message and e [...] </text><text class="breeze-help-r5" x="0" y="1264.4" textLength="1464" clip-path="url(#breeze-help-line-51)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-help-r1" x="1464" y="1264.4" textLength="12.2" clip-path="url(#breeze-help-line-51)"> </text><text class="breeze-help-r5" x="0" y="1288.8" textLength="24.4" clip-path="url(#breeze-help-line-52)">╭─</text><text class="breeze-help-r5" x="24.4" y="1288.8" textLength="244" clip-path="url(#breeze-help-line-52)"> Developer commands </text><text class="breeze-help-r5" x="268.4" y="1288.8" textLength="1171.2" clip-path="url(#breeze-help-line-52)">────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="bree [...] </text><text class="breeze-help-r5" x="0" y="1313.2" textLength="12.2" clip-path="url(#breeze-help-line-53)">│</text><text class="breeze-help-r4" x="24.4" y="1313.2" textLength="280.6" clip-path="url(#breeze-help-line-53)">start-airflow          </text><text class="breeze-help-r1" x="329.4" y="1313.2" textLength="1110.2" clip-path="url(#breeze-help-line-53)">Enter breeze environment and starts all Airflow [...] diff --git a/dev/breeze/doc/images/output_setup_config.svg b/dev/breeze/doc/images/output_setup_config.svg index 9a42467ea52..5a44bb20030 100644 --- a/dev/breeze/doc/images/output_setup_config.svg +++ b/dev/breeze/doc/images/output_setup_config.svg @@ -1,4 +1,4 @@ -<svg class="rich-terminal" viewBox="0 0 1482 611.1999999999999" xmlns="http://www.w3.org/2000/svg"> +<svg class="rich-terminal" viewBox="0 0 1482 635.5999999999999" xmlns="http://www.w3.org/2000/svg"> <!-- Generated with Rich https://www.textualize.io --> <style> @@ -43,7 +43,7 @@ <defs> <clipPath id="breeze-setup-config-clip-terminal"> - <rect x="0" y="0" width="1463.0" height="560.1999999999999" /> + <rect x="0" y="0" width="1463.0" height="584.5999999999999" /> </clipPath> <clipPath id="breeze-setup-config-line-0"> <rect x="0" y="1.5" width="1464" height="24.65"/> @@ -111,9 +111,12 @@ <clipPath id="breeze-setup-config-line-21"> <rect x="0" y="513.9" width="1464" height="24.65"/> </clipPath> +<clipPath id="breeze-setup-config-line-22"> + <rect x="0" y="538.3" width="1464" height="24.65"/> + </clipPath> </defs> - <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="609.2" rx="8"/><text class="breeze-setup-config-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command: setup config</text> + <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="633.6" rx="8"/><text class="breeze-setup-config-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command: setup config</text> <g transform="translate(26,22)"> <circle cx="0" cy="0" r="7" fill="#ff5f57"/> <circle cx="22" cy="0" r="7" fill="#febc2e"/> @@ -129,23 +132,24 @@ </text><text class="breeze-setup-config-r1" x="12.2" y="93.2" textLength="805.2" clip-path="url(#breeze-setup-config-line-3)">Show/update configuration (Python, Backend, Cheatsheet, ASCIIART).</text><text class="breeze-setup-config-r1" x="1464" y="93.2" textLength="12.2" clip-path="url(#breeze-setup-config-line-3)"> </text><text class="breeze-setup-config-r1" x="1464" y="117.6" textLength="12.2" clip-path="url(#breeze-setup-config-line-4)"> </text><text class="breeze-setup-config-r5" x="0" y="142" textLength="24.4" clip-path="url(#breeze-setup-config-line-5)">╭─</text><text class="breeze-setup-config-r5" x="24.4" y="142" textLength="170.8" clip-path="url(#breeze-setup-config-line-5)"> Config flags </text><text class="breeze-setup-config-r5" x="195.2" y="142" textLength="1244.4" clip-path="url(#breeze-setup-config-line-5)">──────────────────────────────────────────────────────────────────────────────────────── [...] -</text><text class="breeze-setup-config-r5" x="0" y="166.4" textLength="12.2" clip-path="url(#breeze-setup-config-line-6)">│</text><text class="breeze-setup-config-r4" x="24.4" y="166.4" textLength="12.2" clip-path="url(#breeze-setup-config-line-6)">-</text><text class="breeze-setup-config-r4" x="36.6" y="166.4" textLength="85.4" clip-path="url(#breeze-setup-config-line-6)">-python</text><text class="breeze-setup-config-r6" x="390.4" y="166.4" textLength="24.4" clip-path="url(#breeze-set [...] +</text><text class="breeze-setup-config-r5" x="0" y="166.4" textLength="12.2" clip-path="url(#breeze-setup-config-line-6)">│</text><text class="breeze-setup-config-r4" x="24.4" y="166.4" textLength="97.6" clip-path="url(#breeze-setup-config-line-6)">--python</text><text class="breeze-setup-config-r6" x="390.4" y="166.4" textLength="24.4" clip-path="url(#breeze-setup-config-line-6)">-p</text><text class="breeze-setup-config-r1" x="475.8" y="166.4" textLength="732" clip-path="url(#breeze-s [...] </text><text class="breeze-setup-config-r5" x="0" y="190.8" textLength="12.2" clip-path="url(#breeze-setup-config-line-7)">│</text><text class="breeze-setup-config-r7" x="475.8" y="190.8" textLength="732" clip-path="url(#breeze-setup-config-line-7)">(>3.8< | 3.9 | 3.10 | 3.11 | 3.12)                          </text [...] </text><text class="breeze-setup-config-r5" x="0" y="215.2" textLength="12.2" clip-path="url(#breeze-setup-config-line-8)">│</text><text class="breeze-setup-config-r5" x="475.8" y="215.2" textLength="732" clip-path="url(#breeze-setup-config-line-8)">[default: 3.8]                                     & [...] -</text><text class="breeze-setup-config-r5" x="0" y="239.6" textLength="12.2" clip-path="url(#breeze-setup-config-line-9)">│</text><text class="breeze-setup-config-r4" x="24.4" y="239.6" textLength="12.2" clip-path="url(#breeze-setup-config-line-9)">-</text><text class="breeze-setup-config-r4" x="36.6" y="239.6" textLength="97.6" clip-path="url(#breeze-setup-config-line-9)">-backend</text><text class="breeze-setup-config-r6" x="390.4" y="239.6" textLength="24.4" clip-path="url(#breeze-se [...] +</text><text class="breeze-setup-config-r5" x="0" y="239.6" textLength="12.2" clip-path="url(#breeze-setup-config-line-9)">│</text><text class="breeze-setup-config-r4" x="24.4" y="239.6" textLength="109.8" clip-path="url(#breeze-setup-config-line-9)">--backend</text><text class="breeze-setup-config-r6" x="390.4" y="239.6" textLength="24.4" clip-path="url(#breeze-setup-config-line-9)">-b</text><text class="breeze-setup-config-r1" x="475.8" y="239.6" textLength="963.8" clip-path="url(#bree [...] </text><text class="breeze-setup-config-r5" x="0" y="264" textLength="12.2" clip-path="url(#breeze-setup-config-line-10)">│</text><text class="breeze-setup-config-r1" x="475.8" y="264" textLength="963.8" clip-path="url(#breeze-setup-config-line-10)">database configuration, meaning there will be no database available, and any   </text><text class="breeze-setup-config-r5" x="1451.8" y="264" textLength="12.2" clip-path="url(#b [...] </text><text class="breeze-setup-config-r5" x="0" y="288.4" textLength="12.2" clip-path="url(#breeze-setup-config-line-11)">│</text><text class="breeze-setup-config-r1" x="475.8" y="288.4" textLength="963.8" clip-path="url(#breeze-setup-config-line-11)">attempts to connect to the Airflow database will fail.                         [...] </text><text class="breeze-setup-config-r5" x="0" y="312.8" textLength="12.2" clip-path="url(#breeze-setup-config-line-12)">│</text><text class="breeze-setup-config-r7" x="475.8" y="312.8" textLength="963.8" clip-path="url(#breeze-setup-config-line-12)">(>sqlite< | mysql | postgres | none)                            [...] </text><text class="breeze-setup-config-r5" x="0" y="337.2" textLength="12.2" clip-path="url(#breeze-setup-config-line-13)">│</text><text class="breeze-setup-config-r5" x="475.8" y="337.2" textLength="963.8" clip-path="url(#breeze-setup-config-line-13)">[default: sqlite]                                     [...] -</text><text class="breeze-setup-config-r5" x="0" y="361.6" textLength="12.2" clip-path="url(#breeze-setup-config-line-14)">│</text><text class="breeze-setup-config-r4" x="24.4" y="361.6" textLength="12.2" clip-path="url(#breeze-setup-config-line-14)">-</text><text class="breeze-setup-config-r4" x="36.6" y="361.6" textLength="109.8" clip-path="url(#breeze-setup-config-line-14)">-postgres</text><text class="breeze-setup-config-r4" x="146.4" y="361.6" textLength="97.6" clip-path="url(#bree [...] -</text><text class="breeze-setup-config-r5" x="0" y="386" textLength="12.2" clip-path="url(#breeze-setup-config-line-15)">│</text><text class="breeze-setup-config-r4" x="24.4" y="386" textLength="12.2" clip-path="url(#breeze-setup-config-line-15)">-</text><text class="breeze-setup-config-r4" x="36.6" y="386" textLength="73.2" clip-path="url(#breeze-setup-config-line-15)">-mysql</text><text class="breeze-setup-config-r4" x="109.8" y="386" textLength="97.6" clip-path="url(#breeze-setup-con [...] -</text><text class="breeze-setup-config-r5" x="0" y="410.4" textLength="12.2" clip-path="url(#breeze-setup-config-line-16)">│</text><text class="breeze-setup-config-r4" x="24.4" y="410.4" textLength="12.2" clip-path="url(#breeze-setup-config-line-16)">-</text><text class="breeze-setup-config-r4" x="36.6" y="410.4" textLength="134.2" clip-path="url(#breeze-setup-config-line-16)">-cheatsheet</text><text class="breeze-setup-config-r1" x="170.8" y="410.4" textLength="12.2" clip-path="url(#br [...] -</text><text class="breeze-setup-config-r5" x="0" y="434.8" textLength="12.2" clip-path="url(#breeze-setup-config-line-17)">│</text><text class="breeze-setup-config-r4" x="24.4" y="434.8" textLength="12.2" clip-path="url(#breeze-setup-config-line-17)">-</text><text class="breeze-setup-config-r4" x="36.6" y="434.8" textLength="109.8" clip-path="url(#breeze-setup-config-line-17)">-asciiart</text><text class="breeze-setup-config-r1" x="146.4" y="434.8" textLength="12.2" clip-path="url(#bree [...] -</text><text class="breeze-setup-config-r5" x="0" y="459.2" textLength="12.2" clip-path="url(#breeze-setup-config-line-18)">│</text><text class="breeze-setup-config-r4" x="24.4" y="459.2" textLength="12.2" clip-path="url(#breeze-setup-config-line-18)">-</text><text class="breeze-setup-config-r4" x="36.6" y="459.2" textLength="85.4" clip-path="url(#breeze-setup-config-line-18)">-colour</text><text class="breeze-setup-config-r1" x="122" y="459.2" textLength="12.2" clip-path="url(#breeze-se [...] -</text><text class="breeze-setup-config-r5" x="0" y="483.6" textLength="1464" clip-path="url(#breeze-setup-config-line-19)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-setup-config-r1" x="1464" y="483.6" textLength="12.2" clip-path="url(#breeze-setup-config-line-19)"> -</text><text class="breeze-setup-config-r5" x="0" y="508" textLength="24.4" clip-path="url(#breeze-setup-config-line-20)">╭─</text><text class="breeze-setup-config-r5" x="24.4" y="508" textLength="195.2" clip-path="url(#breeze-setup-config-line-20)"> Common options </text><text class="breeze-setup-config-r5" x="219.6" y="508" textLength="1220" clip-path="url(#breeze-setup-config-line-20)">───────────────────────────────────────────────────────────────────────────────────── [...] -</text><text class="breeze-setup-config-r5" x="0" y="532.4" textLength="12.2" clip-path="url(#breeze-setup-config-line-21)">│</text><text class="breeze-setup-config-r4" x="24.4" y="532.4" textLength="12.2" clip-path="url(#breeze-setup-config-line-21)">-</text><text class="breeze-setup-config-r4" x="36.6" y="532.4" textLength="61" clip-path="url(#breeze-setup-config-line-21)">-help</text><text class="breeze-setup-config-r6" x="122" y="532.4" textLength="24.4" clip-path="url(#breeze-setup- [...] -</text><text class="breeze-setup-config-r5" x="0" y="556.8" textLength="1464" clip-path="url(#breeze-setup-config-line-22)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-setup-config-r1" x="1464" y="556.8" textLength="12.2" clip-path="url(#breeze-setup-config-line-22)"> +</text><text class="breeze-setup-config-r5" x="0" y="361.6" textLength="12.2" clip-path="url(#breeze-setup-config-line-14)">│</text><text class="breeze-setup-config-r4" x="24.4" y="361.6" textLength="219.6" clip-path="url(#breeze-setup-config-line-14)">--postgres-version</text><text class="breeze-setup-config-r6" x="390.4" y="361.6" textLength="24.4" clip-path="url(#breeze-setup-config-line-14)">-P</text><text class="breeze-setup-config-r1" x="475.8" y="361.6" textLength="305" clip-path= [...] +</text><text class="breeze-setup-config-r5" x="0" y="386" textLength="12.2" clip-path="url(#breeze-setup-config-line-15)">│</text><text class="breeze-setup-config-r4" x="24.4" y="386" textLength="183" clip-path="url(#breeze-setup-config-line-15)">--mysql-version</text><text class="breeze-setup-config-r6" x="390.4" y="386" textLength="24.4" clip-path="url(#breeze-setup-config-line-15)">-M</text><text class="breeze-setup-config-r1" x="475.8" y="386" textLength="268.4" clip-path="url(#breez [...] +</text><text class="breeze-setup-config-r5" x="0" y="410.4" textLength="12.2" clip-path="url(#breeze-setup-config-line-16)">│</text><text class="breeze-setup-config-r4" x="24.4" y="410.4" textLength="97.6" clip-path="url(#breeze-setup-config-line-16)">--use-uv</text><text class="breeze-setup-config-r1" x="122" y="410.4" textLength="12.2" clip-path="url(#breeze-setup-config-line-16)">/</text><text class="breeze-setup-config-r4" x="134.2" y="410.4" textLength="134.2" clip-path="url(#breeze [...] +</text><text class="breeze-setup-config-r5" x="0" y="434.8" textLength="12.2" clip-path="url(#breeze-setup-config-line-17)">│</text><text class="breeze-setup-config-r4" x="24.4" y="434.8" textLength="146.4" clip-path="url(#breeze-setup-config-line-17)">--cheatsheet</text><text class="breeze-setup-config-r1" x="170.8" y="434.8" textLength="12.2" clip-path="url(#breeze-setup-config-line-17)">/</text><text class="breeze-setup-config-r4" x="183" y="434.8" textLength="183" clip-path="url(#bre [...] +</text><text class="breeze-setup-config-r5" x="0" y="459.2" textLength="12.2" clip-path="url(#breeze-setup-config-line-18)">│</text><text class="breeze-setup-config-r4" x="24.4" y="459.2" textLength="122" clip-path="url(#breeze-setup-config-line-18)">--asciiart</text><text class="breeze-setup-config-r1" x="146.4" y="459.2" textLength="12.2" clip-path="url(#breeze-setup-config-line-18)">/</text><text class="breeze-setup-config-r4" x="158.6" y="459.2" textLength="158.6" clip-path="url(#bre [...] +</text><text class="breeze-setup-config-r5" x="0" y="483.6" textLength="12.2" clip-path="url(#breeze-setup-config-line-19)">│</text><text class="breeze-setup-config-r4" x="24.4" y="483.6" textLength="97.6" clip-path="url(#breeze-setup-config-line-19)">--colour</text><text class="breeze-setup-config-r1" x="122" y="483.6" textLength="12.2" clip-path="url(#breeze-setup-config-line-19)">/</text><text class="breeze-setup-config-r4" x="134.2" y="483.6" textLength="134.2" clip-path="url(#breeze [...] +</text><text class="breeze-setup-config-r5" x="0" y="508" textLength="1464" clip-path="url(#breeze-setup-config-line-20)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-setup-config-r1" x="1464" y="508" textLength="12.2" clip-path="url(#breeze-setup-config-line-20)"> +</text><text class="breeze-setup-config-r5" x="0" y="532.4" textLength="24.4" clip-path="url(#breeze-setup-config-line-21)">╭─</text><text class="breeze-setup-config-r5" x="24.4" y="532.4" textLength="195.2" clip-path="url(#breeze-setup-config-line-21)"> Common options </text><text class="breeze-setup-config-r5" x="219.6" y="532.4" textLength="1220" clip-path="url(#breeze-setup-config-line-21)">─────────────────────────────────────────────────────────────────────────────── [...] +</text><text class="breeze-setup-config-r5" x="0" y="556.8" textLength="12.2" clip-path="url(#breeze-setup-config-line-22)">│</text><text class="breeze-setup-config-r4" x="24.4" y="556.8" textLength="73.2" clip-path="url(#breeze-setup-config-line-22)">--help</text><text class="breeze-setup-config-r6" x="122" y="556.8" textLength="24.4" clip-path="url(#breeze-setup-config-line-22)">-h</text><text class="breeze-setup-config-r1" x="170.8" y="556.8" textLength="329.4" clip-path="url(#breeze- [...] +</text><text class="breeze-setup-config-r5" x="0" y="581.2" textLength="1464" clip-path="url(#breeze-setup-config-line-23)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-setup-config-r1" x="1464" y="581.2" textLength="12.2" clip-path="url(#breeze-setup-config-line-23)"> </text> </g> </g> diff --git a/dev/breeze/doc/images/output_setup_config.txt b/dev/breeze/doc/images/output_setup_config.txt index f47fa38e42c..3b2da9a9c04 100644 --- a/dev/breeze/doc/images/output_setup_config.txt +++ b/dev/breeze/doc/images/output_setup_config.txt @@ -1 +1 @@ -422c8c524b557fcf5924da4c8590935d +96e10564034b282769a2c48ebf7176e2 diff --git a/dev/breeze/src/airflow_breeze/commands/release_management_commands.py b/dev/breeze/src/airflow_breeze/commands/release_management_commands.py index 33f3dd338e4..648a13d4246 100644 --- a/dev/breeze/src/airflow_breeze/commands/release_management_commands.py +++ b/dev/breeze/src/airflow_breeze/commands/release_management_commands.py @@ -226,8 +226,8 @@ class VersionedFile(NamedTuple): file_name: str -AIRFLOW_PIP_VERSION = "24.0" -AIRFLOW_UV_VERSION = "0.1.10" +AIRFLOW_PIP_VERSION = "24.3.1" +AIRFLOW_UV_VERSION = "0.4.29" AIRFLOW_USE_UV = False WHEEL_VERSION = "0.36.2" GITPYTHON_VERSION = "3.1.40" @@ -451,7 +451,11 @@ def _check_sdist_to_wheel_dists(dists_info: tuple[DistributionPackageInfo, ...]) continue if not venv_created: - python_path = create_venv(Path(tmp_dir_name) / ".venv", pip_version=AIRFLOW_PIP_VERSION) + python_path = create_venv( + Path(tmp_dir_name) / ".venv", + pip_version=AIRFLOW_PIP_VERSION, + uv_version=AIRFLOW_UV_VERSION, + ) pip_command = create_pip_command(python_path) venv_created = True diff --git a/dev/breeze/src/airflow_breeze/commands/setup_commands.py b/dev/breeze/src/airflow_breeze/commands/setup_commands.py index 407ff7f8cdf..bc1ac4f1fa5 100644 --- a/dev/breeze/src/airflow_breeze/commands/setup_commands.py +++ b/dev/breeze/src/airflow_breeze/commands/setup_commands.py @@ -192,6 +192,12 @@ def version(): @option_mysql_version @click.option("-C/-c", "--cheatsheet/--no-cheatsheet", help="Enable/disable cheatsheet.", default=None) @click.option("-A/-a", "--asciiart/--no-asciiart", help="Enable/disable ASCIIart.", default=None) [email protected]( + "-U/-u", + "--use-uv/--no-use-uv", + help="Enable/disable using uv for creating venvs by breeze.", + default=None, +) @click.option( "--colour/--no-colour", help="Enable/disable Colour mode (useful for colour blind-friendly communication).", @@ -200,6 +206,7 @@ def version(): def change_config( python: str, backend: str, + use_uv: bool, postgres_version: str, mysql_version: str, cheatsheet: bool, @@ -212,14 +219,22 @@ def change_config( asciiart_file = "suppress_asciiart" cheatsheet_file = "suppress_cheatsheet" colour_file = "suppress_colour" + use_uv_file = "use_uv" + if use_uv is not None: + if use_uv: + touch_cache_file(use_uv_file) + get_console().print("[info]Enable using uv[/]") + else: + delete_cache(use_uv_file) + get_console().print("[info]Disable using uv[/]") if asciiart is not None: if asciiart: delete_cache(asciiart_file) - get_console().print("[info]Enable ASCIIART![/]") + get_console().print("[info]Enable ASCIIART[/]") else: touch_cache_file(asciiart_file) - get_console().print("[info]Disable ASCIIART![/]") + get_console().print("[info]Disable ASCIIART[/]") if cheatsheet is not None: if cheatsheet: delete_cache(cheatsheet_file) @@ -235,23 +250,27 @@ def change_config( touch_cache_file(colour_file) get_console().print("[info]Disable Colour[/]") - def get_status(file: str): + def get_supress_status(file: str): return "disabled" if check_if_cache_exists(file) else "enabled" + def get_status(file: str): + return "enabled" if check_if_cache_exists(file) else "disabled" + get_console().print() get_console().print("[info]Current configuration:[/]") get_console().print() get_console().print(f"[info]* Python: {python}[/]") get_console().print(f"[info]* Backend: {backend}[/]") + get_console().print(f"[info]* Use uv: {get_status(use_uv_file)}[/]") get_console().print() get_console().print(f"[info]* Postgres version: {postgres_version}[/]") get_console().print(f"[info]* MySQL version: {mysql_version}[/]") get_console().print() - get_console().print(f"[info]* ASCIIART: {get_status(asciiart_file)}[/]") - get_console().print(f"[info]* Cheatsheet: {get_status(cheatsheet_file)}[/]") + get_console().print(f"[info]* ASCIIART: {get_supress_status(asciiart_file)}[/]") + get_console().print(f"[info]* Cheatsheet: {get_supress_status(cheatsheet_file)}[/]") get_console().print() get_console().print() - get_console().print(f"[info]* Colour: {get_status(colour_file)}[/]") + get_console().print(f"[info]* Colour: {get_supress_status(colour_file)}[/]") get_console().print() diff --git a/dev/breeze/src/airflow_breeze/commands/setup_commands_config.py b/dev/breeze/src/airflow_breeze/commands/setup_commands_config.py index 61460f004ec..802a41fc273 100644 --- a/dev/breeze/src/airflow_breeze/commands/setup_commands_config.py +++ b/dev/breeze/src/airflow_breeze/commands/setup_commands_config.py @@ -63,6 +63,7 @@ SETUP_PARAMETERS: dict[str, list[dict[str, str | list[str]]]] = { "--backend", "--postgres-version", "--mysql-version", + "--use-uv", "--cheatsheet", "--asciiart", "--colour", diff --git a/dev/breeze/src/airflow_breeze/global_constants.py b/dev/breeze/src/airflow_breeze/global_constants.py index 94487012274..791e07cfe71 100644 --- a/dev/breeze/src/airflow_breeze/global_constants.py +++ b/dev/breeze/src/airflow_breeze/global_constants.py @@ -155,7 +155,8 @@ if MYSQL_INNOVATION_RELEASE: ALLOWED_INSTALL_MYSQL_CLIENT_TYPES = ["mariadb", "mysql"] -PIP_VERSION = "24.0" +PIP_VERSION = "24.3.1" +UV_VERSION = "0.4.29" DEFAULT_UV_HTTP_TIMEOUT = 300 DEFAULT_WSL2_HTTP_TIMEOUT = 900 diff --git a/dev/breeze/src/airflow_breeze/utils/kubernetes_utils.py b/dev/breeze/src/airflow_breeze/utils/kubernetes_utils.py index 69703b4692b..3aca9d51c13 100644 --- a/dev/breeze/src/airflow_breeze/utils/kubernetes_utils.py +++ b/dev/breeze/src/airflow_breeze/utils/kubernetes_utils.py @@ -41,12 +41,15 @@ from airflow_breeze.global_constants import ( HELM_VERSION, KIND_VERSION, PIP_VERSION, + UV_VERSION, ) +from airflow_breeze.utils.cache import check_if_cache_exists from airflow_breeze.utils.console import Output, get_console from airflow_breeze.utils.host_info_utils import Architecture, get_host_architecture, get_host_os from airflow_breeze.utils.path_utils import AIRFLOW_SOURCES_ROOT, BUILD_CACHE_DIR from airflow_breeze.utils.run_utils import RunCommandResult, run_command from airflow_breeze.utils.shared_options import get_dry_run, get_verbose +from airflow_breeze.utils.virtualenv_utils import create_pip_command, create_uv_command K8S_ENV_PATH = BUILD_CACHE_DIR / ".k8s-env" K8S_CLUSTERS_PATH = BUILD_CACHE_DIR / ".k8s-clusters" @@ -301,10 +304,12 @@ def _requirements_changed() -> bool: def _install_packages_in_k8s_virtualenv(): + if check_if_cache_exists("use_uv"): + command = create_uv_command(PYTHON_BIN_PATH) + else: + command = create_pip_command(PYTHON_BIN_PATH) install_command_no_constraints = [ - str(PYTHON_BIN_PATH), - "-m", - "pip", + *command, "install", "-r", str(K8S_REQUIREMENTS_PATH.resolve()), @@ -405,8 +410,9 @@ def create_virtualenv(force_venv_setup: bool) -> RunCommandResult: ) return venv_command_result get_console().print(f"[info]Reinstalling PIP version in {K8S_ENV_PATH}") + command = create_pip_command(PYTHON_BIN_PATH) pip_reinstall_result = run_command( - [str(PYTHON_BIN_PATH), "-m", "pip", "install", f"pip=={PIP_VERSION}"], + [*command, "install", f"pip=={PIP_VERSION}"], check=False, capture_output=True, ) @@ -416,8 +422,19 @@ def create_virtualenv(force_venv_setup: bool) -> RunCommandResult: f"{pip_reinstall_result.stdout}\n{pip_reinstall_result.stderr}" ) return pip_reinstall_result - get_console().print(f"[info]Installing necessary packages in {K8S_ENV_PATH}") + uv_reinstall_result = run_command( + [*command, "install", f"uv=={UV_VERSION}"], + check=False, + capture_output=True, + ) + if uv_reinstall_result.returncode != 0: + get_console().print( + f"[error]Error when updating uv to {UV_VERSION}:[/]\n" + f"{uv_reinstall_result.stdout}\n{uv_reinstall_result.stderr}" + ) + return uv_reinstall_result + get_console().print(f"[info]Installing necessary packages in {K8S_ENV_PATH}") install_packages_result = _install_packages_in_k8s_virtualenv() if install_packages_result.returncode == 0: if get_dry_run(): diff --git a/dev/breeze/src/airflow_breeze/utils/run_tests.py b/dev/breeze/src/airflow_breeze/utils/run_tests.py index 73cbb430817..b34fa3b3410 100644 --- a/dev/breeze/src/airflow_breeze/utils/run_tests.py +++ b/dev/breeze/src/airflow_breeze/utils/run_tests.py @@ -22,7 +22,7 @@ import sys from itertools import chain from subprocess import DEVNULL -from airflow_breeze.global_constants import PIP_VERSION +from airflow_breeze.global_constants import PIP_VERSION, UV_VERSION from airflow_breeze.utils.console import Output, get_console from airflow_breeze.utils.packages import get_excluded_provider_folders, get_suspended_provider_folders from airflow_breeze.utils.path_utils import AIRFLOW_SOURCES_ROOT @@ -59,7 +59,9 @@ def verify_an_image( env["DOCKER_IMAGE"] = image_name if slim_image: env["TEST_SLIM_IMAGE"] = "true" - with create_temp_venv(pip_version=PIP_VERSION, requirements_file=DOCKER_TESTS_REQUIREMENTS) as py_exe: + with create_temp_venv( + pip_version=PIP_VERSION, uv_version=UV_VERSION, requirements_file=DOCKER_TESTS_REQUIREMENTS + ) as py_exe: command_result = run_command( [py_exe, "-m", "pytest", str(test_path), *pytest_args, *extra_pytest_args], env=env, diff --git a/dev/breeze/src/airflow_breeze/utils/virtualenv_utils.py b/dev/breeze/src/airflow_breeze/utils/virtualenv_utils.py index 0288e49b909..3c6a175a0fc 100644 --- a/dev/breeze/src/airflow_breeze/utils/virtualenv_utils.py +++ b/dev/breeze/src/airflow_breeze/utils/virtualenv_utils.py @@ -23,6 +23,7 @@ import tempfile from pathlib import Path from typing import Generator +from airflow_breeze.utils.cache import check_if_cache_exists from airflow_breeze.utils.console import get_console from airflow_breeze.utils.run_utils import run_command @@ -31,10 +32,15 @@ def create_pip_command(python: str | Path) -> list[str]: return [python.as_posix() if hasattr(python, "as_posix") else str(python), "-m", "pip"] +def create_uv_command(python: str | Path) -> list[str]: + return [python.as_posix() if hasattr(python, "as_posix") else str(python), "-m", "uv", "pip"] + + def create_venv( venv_path: str | Path, python: str | None = None, pip_version: str | None = None, + uv_version: str | None = None, requirements_file: str | Path | None = None, ) -> str: venv_path = Path(venv_path).resolve().absolute() @@ -53,10 +59,13 @@ def create_venv( if not python_path.exists(): get_console().print(f"\n[errors]Python interpreter is not exist in path {python_path}. Exiting!\n") sys.exit(1) - pip_command = create_pip_command(python_path) + if check_if_cache_exists("use_uv"): + command = create_uv_command(python_path) + else: + command = create_pip_command(python_path) if pip_version: result = run_command( - [*pip_command, "install", f"pip=={pip_version}", "-q"], + [*command, "install", f"pip=={pip_version}", "-q"], check=False, capture_output=False, text=True, @@ -67,10 +76,23 @@ def create_venv( f"{result.stdout}\n{result.stderr}" ) sys.exit(result.returncode) + if uv_version: + result = run_command( + [*command, "install", f"uv=={uv_version}", "-q"], + check=False, + capture_output=False, + text=True, + ) + if result.returncode != 0: + get_console().print( + f"[error]Error when installing uv in {venv_path.as_posix()}[/]\n" + f"{result.stdout}\n{result.stderr}" + ) + sys.exit(result.returncode) if requirements_file: requirements_file = Path(requirements_file).absolute().as_posix() result = run_command( - [*pip_command, "install", "-r", requirements_file, "-q"], + [*command, "install", "-r", requirements_file, "-q"], check=True, capture_output=False, text=True, @@ -88,6 +110,7 @@ def create_venv( def create_temp_venv( python: str | None = None, pip_version: str | None = None, + uv_version: str | None = None, requirements_file: str | Path | None = None, prefix: str | None = None, ) -> Generator[str, None, None]: @@ -96,5 +119,6 @@ def create_temp_venv( Path(tmp_dir_name) / ".venv", python=python, pip_version=pip_version, + uv_version=uv_version, requirements_file=requirements_file, ) diff --git a/scripts/ci/install_breeze.sh b/scripts/ci/install_breeze.sh index 5ffd604670b..aa5a3160060 100755 --- a/scripts/ci/install_breeze.sh +++ b/scripts/ci/install_breeze.sh @@ -25,7 +25,7 @@ if [[ ${PYTHON_VERSION=} != "" ]]; then PYTHON_ARG="--python=$(which python"${PYTHON_VERSION}") " fi -python -m pip install --upgrade pip==24.0 +python -m pip install --upgrade pip==24.3.1 python -m pip install "pipx>=1.4.1" python -m pipx uninstall apache-airflow-breeze >/dev/null 2>&1 || true # shellcheck disable=SC2086 diff --git a/scripts/ci/pre_commit/update_installers.py b/scripts/ci/pre_commit/update_installers.py index a90e07d38c9..f55a937df0c 100755 --- a/scripts/ci/pre_commit/update_installers.py +++ b/scripts/ci/pre_commit/update_installers.py @@ -65,6 +65,7 @@ AIRFLOW_PIP_UPGRADE_PATTERN = re.compile(r"(python -m pip install --upgrade pip= AIRFLOW_UV_PATTERN = re.compile(r"(AIRFLOW_UV_VERSION=)([0-9.]+)") AIRFLOW_UV_QUOTED_PATTERN = re.compile(r"(AIRFLOW_UV_VERSION = )(\"[0-9.]+\")") +UV_QUOTED_PATTERN = re.compile(r"(UV_VERSION = )(\"[0-9.]+\")") AIRFLOW_UV_DOC_PATTERN = re.compile(r"(\| *`AIRFLOW_UV_VERSION` *\| *)(`[0-9.]+`)( *\|)") UV_GREATER_PATTERN = re.compile(r'"(uv>=)([0-9]+)"') @@ -118,11 +119,14 @@ if __name__ == "__main__": new_content = replace_group_2_while_keeping_total_length( AIRFLOW_UV_PATTERN, uv_version, new_content ) + new_content = replace_group_2_while_keeping_total_length( + UV_GREATER_PATTERN, uv_version, new_content + ) new_content = replace_group_2_while_keeping_total_length( AIRFLOW_UV_QUOTED_PATTERN, f'"{uv_version}"', new_content ) new_content = replace_group_2_while_keeping_total_length( - UV_GREATER_PATTERN, uv_version, new_content + UV_QUOTED_PATTERN, f'"{uv_version}"', new_content ) if new_content != file_content: file.write_text(new_content)
