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 840ed6a9a886c6993ef9b27ab39063948df8d7df Author: Jarek Potiuk <[email protected]> AuthorDate: Tue Nov 5 15:26:48 2024 +0100 Fix reproducibility of prepared provider packages (fix flit frontend) (#43683) (#43687) After some checks it turned out that reproducibility of produced packages depends not only on the build backend configured for the project but also on the build front-end used - because frontend is the one to modify meta-data in prepared packages - including the build tool used, it's version and metadata version supported by the front-end. That's why in order to maintain reproducibility for anyone who builds the packages, we have to pin not only the build backend in pyproject.toml (flit-core) but also build fronted used (flit). Since package preparation is done with breeze, we can do it by pinning flit (and just in case also flit-core) so that anyone who builds specific version of the package will use exactly the same flit as the person who built the original packages. This way we will avoid reproducibility problems experienced with 1.5.0 release of FAB. (cherry picked from commit 18ea01cef2b92fe820ceaa33be7b44f9f576aad4) --- dev/README_RELEASE_PROVIDER_PACKAGES.md | 1 - dev/breeze/README.md | 2 +- dev/breeze/doc/images/output_build-docs.svg | 28 +++++++++++----------- dev/breeze/doc/images/output_build-docs.txt | 2 +- dev/breeze/doc/images/output_prod-image.svg | 2 +- dev/breeze/doc/images/output_prod-image.txt | 2 +- dev/breeze/doc/images/output_prod-image_build.txt | 2 +- dev/breeze/doc/images/output_setup.svg | 2 +- dev/breeze/doc/images/output_setup.txt | 2 +- .../doc/images/output_setup_autocomplete.svg | 10 ++++---- .../doc/images/output_setup_autocomplete.txt | 2 +- dev/breeze/doc/images/output_setup_config.txt | 2 +- dev/breeze/doc/images/output_start-airflow.txt | 2 +- dev/breeze/pyproject.toml | 15 +++++++++++- .../commands/release_candidate_command.py | 1 - .../commands/release_management_commands.py | 4 ---- .../src/airflow_breeze/commands/setup_commands.py | 26 +++++++++++++++++++- .../templates/pyproject_TEMPLATE.toml.jinja2 | 3 +-- .../src/airflow_breeze/utils/python_versions.py | 8 +------ .../src/airflow_breeze/utils/reproducible.py | 3 --- dev/breeze/uv.lock | 4 +++- 21 files changed, 73 insertions(+), 50 deletions(-) diff --git a/dev/README_RELEASE_PROVIDER_PACKAGES.md b/dev/README_RELEASE_PROVIDER_PACKAGES.md index 749f89e1063..25aa8062c77 100644 --- a/dev/README_RELEASE_PROVIDER_PACKAGES.md +++ b/dev/README_RELEASE_PROVIDER_PACKAGES.md @@ -335,7 +335,6 @@ export AIRFLOW_REPO_ROOT=$(pwd -P) rm -rf ${AIRFLOW_REPO_ROOT}/dist/* ``` - * Release candidate packages: ```shell script diff --git a/dev/breeze/README.md b/dev/breeze/README.md index 2c38aa7c1a9..713bf7ce83f 100644 --- a/dev/breeze/README.md +++ b/dev/breeze/README.md @@ -66,6 +66,6 @@ PLEASE DO NOT MODIFY THE HASH BELOW! IT IS AUTOMATICALLY UPDATED BY PRE-COMMIT. --------------------------------------------------------------------------------------------------------- -Package config hash: f8e8729f4236f050d4412cbbc9d53fdd4e6ddad65ce5fafd3c5b6fcdacbea5431eea760b961534a63fd5733b072b38e8167b5b0c12ee48b31c3257306ef11940 +Package config hash: d1d07397099e14c5fc5f0b0e13a87ac8e112bf66755f77cee62b29151cd18c2f2d35932906db6b3885af652defddce696ef9b2df58e21bd3a7749bca82baf910 --------------------------------------------------------------------------------------------------------- diff --git a/dev/breeze/doc/images/output_build-docs.svg b/dev/breeze/doc/images/output_build-docs.svg index e270c6b92e9..6fa90171444 100644 --- a/dev/breeze/doc/images/output_build-docs.svg +++ b/dev/breeze/doc/images/output_build-docs.svg @@ -203,32 +203,32 @@ </text><text class="breeze-build-docs-r1" x="12.2" y="361.6" textLength="195.2" clip-path="url(#breeze-build-docs-line-14)">Build documents.</text><text class="breeze-build-docs-r1" x="1464" y="361.6" textLength="12.2" clip-path="url(#breeze-build-docs-line-14)"> </text><text class="breeze-build-docs-r1" x="1464" y="386" textLength="12.2" clip-path="url(#breeze-build-docs-line-15)"> </text><text class="breeze-build-docs-r5" x="0" y="410.4" textLength="24.4" clip-path="url(#breeze-build-docs-line-16)">╭─</text><text class="breeze-build-docs-r5" x="24.4" y="410.4" textLength="134.2" clip-path="url(#breeze-build-docs-line-16)"> Doc flags </text><text class="breeze-build-docs-r5" x="158.6" y="410.4" textLength="1281" clip-path="url(#breeze-build-docs-line-16)">──────────────────────────────────────────────────────────────────────────────────────────────── [...] -</text><text class="breeze-build-docs-r5" x="0" y="434.8" textLength="12.2" clip-path="url(#breeze-build-docs-line-17)">│</text><text class="breeze-build-docs-r4" x="24.4" y="434.8" textLength="12.2" clip-path="url(#breeze-build-docs-line-17)">-</text><text class="breeze-build-docs-r4" x="36.6" y="434.8" textLength="61" clip-path="url(#breeze-build-docs-line-17)">-docs</text><text class="breeze-build-docs-r4" x="97.6" y="434.8" textLength="61" clip-path="url(#breeze-build-docs-line-17)"> [...] -</text><text class="breeze-build-docs-r5" x="0" y="459.2" textLength="12.2" clip-path="url(#breeze-build-docs-line-18)">│</text><text class="breeze-build-docs-r4" x="24.4" y="459.2" textLength="12.2" clip-path="url(#breeze-build-docs-line-18)">-</text><text class="breeze-build-docs-r4" x="36.6" y="459.2" textLength="134.2" clip-path="url(#breeze-build-docs-line-18)">-spellcheck</text><text class="breeze-build-docs-r4" x="170.8" y="459.2" textLength="61" clip-path="url(#breeze-build-docs- [...] -</text><text class="breeze-build-docs-r5" x="0" y="483.6" textLength="12.2" clip-path="url(#breeze-build-docs-line-19)">│</text><text class="breeze-build-docs-r4" x="24.4" y="483.6" textLength="12.2" clip-path="url(#breeze-build-docs-line-19)">-</text><text class="breeze-build-docs-r4" x="36.6" y="483.6" textLength="73.2" clip-path="url(#breeze-build-docs-line-19)">-clean</text><text class="breeze-build-docs-r4" x="109.8" y="483.6" textLength="73.2" clip-path="url(#breeze-build-docs-line [...] +</text><text class="breeze-build-docs-r5" x="0" y="434.8" textLength="12.2" clip-path="url(#breeze-build-docs-line-17)">│</text><text class="breeze-build-docs-r4" x="24.4" y="434.8" textLength="134.2" clip-path="url(#breeze-build-docs-line-17)">--docs-only</text><text class="breeze-build-docs-r6" x="402.6" y="434.8" textLength="24.4" clip-path="url(#breeze-build-docs-line-17)">-d</text><text class="breeze-build-docs-r1" x="451.4" y="434.8" textLength="305" clip-path="url(#breeze-build-do [...] +</text><text class="breeze-build-docs-r5" x="0" y="459.2" textLength="12.2" clip-path="url(#breeze-build-docs-line-18)">│</text><text class="breeze-build-docs-r4" x="24.4" y="459.2" textLength="207.4" clip-path="url(#breeze-build-docs-line-18)">--spellcheck-only</text><text class="breeze-build-docs-r6" x="402.6" y="459.2" textLength="24.4" clip-path="url(#breeze-build-docs-line-18)">-s</text><text class="breeze-build-docs-r1" x="451.4" y="459.2" textLength="292.8" clip-path="url(#breeze- [...] +</text><text class="breeze-build-docs-r5" x="0" y="483.6" textLength="12.2" clip-path="url(#breeze-build-docs-line-19)">│</text><text class="breeze-build-docs-r4" x="24.4" y="483.6" textLength="158.6" clip-path="url(#breeze-build-docs-line-19)">--clean-build</text><text class="breeze-build-docs-r1" x="451.4" y="483.6" textLength="988.2" clip-path="url(#breeze-build-docs-line-19)">Clean inventories of Inter-Sphinx documentation and generated APIs an [...] </text><text class="breeze-build-docs-r5" x="0" y="508" textLength="12.2" clip-path="url(#breeze-build-docs-line-20)">│</text><text class="breeze-build-docs-r1" x="451.4" y="508" textLength="988.2" clip-path="url(#breeze-build-docs-line-20)">artifacts before the build - useful for a clean build.                         & [...] -</text><text class="breeze-build-docs-r5" x="0" y="532.4" textLength="12.2" clip-path="url(#breeze-build-docs-line-21)">│</text><text class="breeze-build-docs-r4" x="24.4" y="532.4" textLength="12.2" clip-path="url(#breeze-build-docs-line-21)">-</text><text class="breeze-build-docs-r4" x="36.6" y="532.4" textLength="48.8" clip-path="url(#breeze-build-docs-line-21)">-one</text><text class="breeze-build-docs-r4" x="85.4" y="532.4" textLength="122" clip-path="url(#breeze-build-docs-line-21) [...] +</text><text class="breeze-build-docs-r5" x="0" y="532.4" textLength="12.2" clip-path="url(#breeze-build-docs-line-21)">│</text><text class="breeze-build-docs-r4" x="24.4" y="532.4" textLength="183" clip-path="url(#breeze-build-docs-line-21)">--one-pass-only</text><text class="breeze-build-docs-r1" x="451.4" y="532.4" textLength="988.2" clip-path="url(#breeze-build-docs-line-21)">Builds documentation in one pass only. This is useful for d [...] </text><text class="breeze-build-docs-r5" x="0" y="556.8" textLength="12.2" clip-path="url(#breeze-build-docs-line-22)">│</text><text class="breeze-build-docs-r1" x="451.4" y="556.8" textLength="988.2" clip-path="url(#breeze-build-docs-line-22)">errors.                                         [...] -</text><text class="breeze-build-docs-r5" x="0" y="581.2" textLength="12.2" clip-path="url(#breeze-build-docs-line-23)">│</text><text class="breeze-build-docs-r4" x="24.4" y="581.2" textLength="12.2" clip-path="url(#breeze-build-docs-line-23)">-</text><text class="breeze-build-docs-r4" x="36.6" y="581.2" textLength="97.6" clip-path="url(#breeze-build-docs-line-23)">-package</text><text class="breeze-build-docs-r4" x="134.2" y="581.2" textLength="85.4" clip-path="url(#breeze-build-docs-li [...] +</text><text class="breeze-build-docs-r5" x="0" y="581.2" textLength="12.2" clip-path="url(#breeze-build-docs-line-23)">│</text><text class="breeze-build-docs-r4" x="24.4" y="581.2" textLength="195.2" clip-path="url(#breeze-build-docs-line-23)">--package-filter</text><text class="breeze-build-docs-r1" x="451.4" y="581.2" textLength="988.2" clip-path="url(#breeze-build-docs-line-23)">Filter(s) to use more than one can be specified. You can [...] </text><text class="breeze-build-docs-r5" x="0" y="605.6" textLength="12.2" clip-path="url(#breeze-build-docs-line-24)">│</text><text class="breeze-build-docs-r1" x="451.4" y="605.6" textLength="988.2" clip-path="url(#breeze-build-docs-line-24)">matching the full package name, for example `apache-airflow-providers-*`. Useful </text><text class="breeze-build-docs-r5" x="1451.8" y="605.6" textLength="12.2" clip-path="url(#breeze-build-docs-line- [...] </text><text class="breeze-build-docs-r5" x="0" y="630" textLength="12.2" clip-path="url(#breeze-build-docs-line-25)">│</text><text class="breeze-build-docs-r1" x="451.4" y="630" textLength="988.2" clip-path="url(#breeze-build-docs-line-25)">when you want to selectseveral similarly named packages together.                </text><text class="breeze-build-docs-r5" x="1451 [...] </text><text class="breeze-build-docs-r5" x="0" y="654.4" textLength="12.2" clip-path="url(#breeze-build-docs-line-26)">│</text><text class="breeze-build-docs-r7" x="451.4" y="654.4" textLength="988.2" clip-path="url(#breeze-build-docs-line-26)">(TEXT)                                         [...] -</text><text class="breeze-build-docs-r5" x="0" y="678.8" textLength="12.2" clip-path="url(#breeze-build-docs-line-27)">│</text><text class="breeze-build-docs-r4" x="24.4" y="678.8" textLength="12.2" clip-path="url(#breeze-build-docs-line-27)">-</text><text class="breeze-build-docs-r4" x="36.6" y="678.8" textLength="97.6" clip-path="url(#breeze-build-docs-line-27)">-include</text><text class="breeze-build-docs-r4" x="134.2" y="678.8" textLength="244" clip-path="url(#breeze-build-docs-lin [...] -</text><text class="breeze-build-docs-r5" x="0" y="703.2" textLength="12.2" clip-path="url(#breeze-build-docs-line-28)">│</text><text class="breeze-build-docs-r4" x="24.4" y="703.2" textLength="12.2" clip-path="url(#breeze-build-docs-line-28)">-</text><text class="breeze-build-docs-r4" x="36.6" y="703.2" textLength="97.6" clip-path="url(#breeze-build-docs-line-28)">-include</text><text class="breeze-build-docs-r4" x="134.2" y="703.2" textLength="219.6" clip-path="url(#breeze-build-docs-l [...] -</text><text class="breeze-build-docs-r5" x="0" y="727.6" textLength="12.2" clip-path="url(#breeze-build-docs-line-29)">│</text><text class="breeze-build-docs-r4" x="24.4" y="727.6" textLength="12.2" clip-path="url(#breeze-build-docs-line-29)">-</text><text class="breeze-build-docs-r4" x="36.6" y="727.6" textLength="85.4" clip-path="url(#breeze-build-docs-line-29)">-github</text><text class="breeze-build-docs-r4" x="122" y="727.6" textLength="134.2" clip-path="url(#breeze-build-docs-line [...] -</text><text class="breeze-build-docs-r5" x="0" y="752" textLength="12.2" clip-path="url(#breeze-build-docs-line-30)">│</text><text class="breeze-build-docs-r4" x="24.4" y="752" textLength="12.2" clip-path="url(#breeze-build-docs-line-30)">-</text><text class="breeze-build-docs-r4" x="36.6" y="752" textLength="97.6" clip-path="url(#breeze-build-docs-line-30)">-builder</text><text class="breeze-build-docs-r1" x="451.4" y="752" textLength="756.4" clip-path="url(#breeze-build-docs-line-30)" [...] +</text><text class="breeze-build-docs-r5" x="0" y="678.8" textLength="12.2" clip-path="url(#breeze-build-docs-line-27)">│</text><text class="breeze-build-docs-r4" x="24.4" y="678.8" textLength="353.8" clip-path="url(#breeze-build-docs-line-27)">--include-not-ready-providers</text><text class="breeze-build-docs-r1" x="451.4" y="678.8" textLength="817.4" clip-path="url(#breeze-build-docs-line-27)">Whether to include providers that are not yet ready&# [...] +</text><text class="breeze-build-docs-r5" x="0" y="703.2" textLength="12.2" clip-path="url(#breeze-build-docs-line-28)">│</text><text class="breeze-build-docs-r4" x="24.4" y="703.2" textLength="329.4" clip-path="url(#breeze-build-docs-line-28)">--include-removed-providers</text><text class="breeze-build-docs-r1" x="451.4" y="703.2" textLength="561.2" clip-path="url(#breeze-build-docs-line-28)">Whether to include providers that are removed.</text><text class= [...] +</text><text class="breeze-build-docs-r5" x="0" y="727.6" textLength="12.2" clip-path="url(#breeze-build-docs-line-29)">│</text><text class="breeze-build-docs-r4" x="24.4" y="727.6" textLength="231.8" clip-path="url(#breeze-build-docs-line-29)">--github-repository</text><text class="breeze-build-docs-r6" x="402.6" y="727.6" textLength="24.4" clip-path="url(#breeze-build-docs-line-29)">-g</text><text class="breeze-build-docs-r1" x="451.4" y="727.6" textLength="585.6" clip-path="url(#breez [...] +</text><text class="breeze-build-docs-r5" x="0" y="752" textLength="12.2" clip-path="url(#breeze-build-docs-line-30)">│</text><text class="breeze-build-docs-r4" x="24.4" y="752" textLength="109.8" clip-path="url(#breeze-build-docs-line-30)">--builder</text><text class="breeze-build-docs-r1" x="451.4" y="752" textLength="756.4" clip-path="url(#breeze-build-docs-line-30)">Buildx builder used to perform `docker buildx build` commands.</text><text clas [...] </text><text class="breeze-build-docs-r5" x="0" y="776.4" textLength="12.2" clip-path="url(#breeze-build-docs-line-31)">│</text><text class="breeze-build-docs-r5" x="451.4" y="776.4" textLength="756.4" clip-path="url(#breeze-build-docs-line-31)">[default: autodetect]                                     [...] -</text><text class="breeze-build-docs-r5" x="0" y="800.8" textLength="12.2" clip-path="url(#breeze-build-docs-line-32)">│</text><text class="breeze-build-docs-r4" x="24.4" y="800.8" textLength="12.2" clip-path="url(#breeze-build-docs-line-32)">-</text><text class="breeze-build-docs-r4" x="36.6" y="800.8" textLength="97.6" clip-path="url(#breeze-build-docs-line-32)">-package</text><text class="breeze-build-docs-r4" x="134.2" y="800.8" textLength="61" clip-path="url(#breeze-build-docs-line [...] +</text><text class="breeze-build-docs-r5" x="0" y="800.8" textLength="12.2" clip-path="url(#breeze-build-docs-line-32)">│</text><text class="breeze-build-docs-r4" x="24.4" y="800.8" textLength="170.8" clip-path="url(#breeze-build-docs-line-32)">--package-list</text><text class="breeze-build-docs-r1" x="451.4" y="800.8" textLength="988.2" clip-path="url(#breeze-build-docs-line-32)">Optional, contains comma-separated list of package ids that are  [...] </text><text class="breeze-build-docs-r5" x="0" y="825.2" textLength="12.2" clip-path="url(#breeze-build-docs-line-33)">│</text><text class="breeze-build-docs-r1" x="451.4" y="825.2" textLength="988.2" clip-path="url(#breeze-build-docs-line-33)">documentation building, and document publishing. It is an easier alternative to  </text><text class="breeze-build-docs-r5" x="1451.8" y="825.2" textLength="12.2" clip-path="url(#breeze-b [...] </text><text class="breeze-build-docs-r5" x="0" y="849.6" textLength="12.2" clip-path="url(#breeze-build-docs-line-34)">│</text><text class="breeze-build-docs-r1" x="451.4" y="849.6" textLength="988.2" clip-path="url(#breeze-build-docs-line-34)">adding individual packages as arguments to every command. This overrides the     </text><text class="breeze-build-docs-r5" x="1451.8" y="849.6" textLength="12.2" clip-path [...] </text><text class="breeze-build-docs-r5" x="0" y="874" textLength="12.2" clip-path="url(#breeze-build-docs-line-35)">│</text><text class="breeze-build-docs-r1" x="451.4" y="874" textLength="988.2" clip-path="url(#breeze-build-docs-line-35)">packages passed as arguments.                                  &# [...] </text><text class="breeze-build-docs-r5" x="0" y="898.4" textLength="12.2" clip-path="url(#breeze-build-docs-line-36)">│</text><text class="breeze-build-docs-r7" x="451.4" y="898.4" textLength="988.2" clip-path="url(#breeze-build-docs-line-36)">(TEXT)                                         [...] </text><text class="breeze-build-docs-r5" x="0" y="922.8" textLength="1464" clip-path="url(#breeze-build-docs-line-37)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-build-docs-r1" x="1464" y="922.8" textLength="12.2" clip-path="url(#breeze-build-docs-line-37)"> </text><text class="breeze-build-docs-r5" x="0" y="947.2" textLength="24.4" clip-path="url(#breeze-build-docs-line-38)">╭─</text><text class="breeze-build-docs-r5" x="24.4" y="947.2" textLength="195.2" clip-path="url(#breeze-build-docs-line-38)"> Common options </text><text class="breeze-build-docs-r5" x="219.6" y="947.2" textLength="1220" clip-path="url(#breeze-build-docs-line-38)">─────────────────────────────────────────────────────────────────────────────────────────── [...] -</text><text class="breeze-build-docs-r5" x="0" y="971.6" textLength="12.2" clip-path="url(#breeze-build-docs-line-39)">│</text><text class="breeze-build-docs-r4" x="24.4" y="971.6" textLength="12.2" clip-path="url(#breeze-build-docs-line-39)">-</text><text class="breeze-build-docs-r4" x="36.6" y="971.6" textLength="48.8" clip-path="url(#breeze-build-docs-line-39)">-dry</text><text class="breeze-build-docs-r4" x="85.4" y="971.6" textLength="48.8" clip-path="url(#breeze-build-docs-line-39 [...] -</text><text class="breeze-build-docs-r5" x="0" y="996" textLength="12.2" clip-path="url(#breeze-build-docs-line-40)">│</text><text class="breeze-build-docs-r4" x="24.4" y="996" textLength="12.2" clip-path="url(#breeze-build-docs-line-40)">-</text><text class="breeze-build-docs-r4" x="36.6" y="996" textLength="97.6" clip-path="url(#breeze-build-docs-line-40)">-verbose</text><text class="breeze-build-docs-r6" x="158.6" y="996" textLength="24.4" clip-path="url(#breeze-build-docs-line-40)"> [...] -</text><text class="breeze-build-docs-r5" x="0" y="1020.4" textLength="12.2" clip-path="url(#breeze-build-docs-line-41)">│</text><text class="breeze-build-docs-r4" x="24.4" y="1020.4" textLength="12.2" clip-path="url(#breeze-build-docs-line-41)">-</text><text class="breeze-build-docs-r4" x="36.6" y="1020.4" textLength="85.4" clip-path="url(#breeze-build-docs-line-41)">-answer</text><text class="breeze-build-docs-r6" x="158.6" y="1020.4" textLength="24.4" clip-path="url(#breeze-build-docs [...] -</text><text class="breeze-build-docs-r5" x="0" y="1044.8" textLength="12.2" clip-path="url(#breeze-build-docs-line-42)">│</text><text class="breeze-build-docs-r4" x="24.4" y="1044.8" textLength="12.2" clip-path="url(#breeze-build-docs-line-42)">-</text><text class="breeze-build-docs-r4" x="36.6" y="1044.8" textLength="61" clip-path="url(#breeze-build-docs-line-42)">-help</text><text class="breeze-build-docs-r6" x="158.6" y="1044.8" textLength="24.4" clip-path="url(#breeze-build-docs-lin [...] +</text><text class="breeze-build-docs-r5" x="0" y="971.6" textLength="12.2" clip-path="url(#breeze-build-docs-line-39)">│</text><text class="breeze-build-docs-r4" x="24.4" y="971.6" textLength="109.8" clip-path="url(#breeze-build-docs-line-39)">--dry-run</text><text class="breeze-build-docs-r6" x="158.6" y="971.6" textLength="24.4" clip-path="url(#breeze-build-docs-line-39)">-D</text><text class="breeze-build-docs-r1" x="207.4" y="971.6" textLength="719.8" clip-path="url(#breeze-build-do [...] +</text><text class="breeze-build-docs-r5" x="0" y="996" textLength="12.2" clip-path="url(#breeze-build-docs-line-40)">│</text><text class="breeze-build-docs-r4" x="24.4" y="996" textLength="109.8" clip-path="url(#breeze-build-docs-line-40)">--verbose</text><text class="breeze-build-docs-r6" x="158.6" y="996" textLength="24.4" clip-path="url(#breeze-build-docs-line-40)">-v</text><text class="breeze-build-docs-r1" x="207.4" y="996" textLength="585.6" clip-path="url(#breeze-build-docs-line- [...] +</text><text class="breeze-build-docs-r5" x="0" y="1020.4" textLength="12.2" clip-path="url(#breeze-build-docs-line-41)">│</text><text class="breeze-build-docs-r4" x="24.4" y="1020.4" textLength="97.6" clip-path="url(#breeze-build-docs-line-41)">--answer</text><text class="breeze-build-docs-r6" x="158.6" y="1020.4" textLength="24.4" clip-path="url(#breeze-build-docs-line-41)">-a</text><text class="breeze-build-docs-r1" x="207.4" y="1020.4" textLength="317.2" clip-path="url(#breeze-build- [...] +</text><text class="breeze-build-docs-r5" x="0" y="1044.8" textLength="12.2" clip-path="url(#breeze-build-docs-line-42)">│</text><text class="breeze-build-docs-r4" x="24.4" y="1044.8" textLength="73.2" clip-path="url(#breeze-build-docs-line-42)">--help</text><text class="breeze-build-docs-r6" x="158.6" y="1044.8" textLength="24.4" clip-path="url(#breeze-build-docs-line-42)">-h</text><text class="breeze-build-docs-r1" x="207.4" y="1044.8" textLength="329.4" clip-path="url(#breeze-build-do [...] </text><text class="breeze-build-docs-r5" x="0" y="1069.2" textLength="1464" clip-path="url(#breeze-build-docs-line-43)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-build-docs-r1" x="1464" y="1069.2" textLength="12.2" clip-path="url(#breeze-build-docs-line-43)"> </text> </g> diff --git a/dev/breeze/doc/images/output_build-docs.txt b/dev/breeze/doc/images/output_build-docs.txt index 760b6b3d098..85554fb426c 100644 --- a/dev/breeze/doc/images/output_build-docs.txt +++ b/dev/breeze/doc/images/output_build-docs.txt @@ -1 +1 @@ -ac6594538890f8fba65c916aa8672aa1 +91166ce4114ea9c162c139d2aff15886 diff --git a/dev/breeze/doc/images/output_prod-image.svg b/dev/breeze/doc/images/output_prod-image.svg index 6b907c07a6b..ef8e95626d1 100644 --- a/dev/breeze/doc/images/output_prod-image.svg +++ b/dev/breeze/doc/images/output_prod-image.svg @@ -98,7 +98,7 @@ </text><text class="breeze-prod-image-r1" x="12.2" y="93.2" textLength="732" clip-path="url(#breeze-prod-image-line-3)">Tools that developers can use to manually manage PROD images</text><text class="breeze-prod-image-r1" x="1464" y="93.2" textLength="12.2" clip-path="url(#breeze-prod-image-line-3)"> </text><text class="breeze-prod-image-r1" x="1464" y="117.6" textLength="12.2" clip-path="url(#breeze-prod-image-line-4)"> </text><text class="breeze-prod-image-r5" x="0" y="142" textLength="24.4" clip-path="url(#breeze-prod-image-line-5)">╭─</text><text class="breeze-prod-image-r5" x="24.4" y="142" textLength="195.2" clip-path="url(#breeze-prod-image-line-5)"> Common options </text><text class="breeze-prod-image-r5" x="219.6" y="142" textLength="1220" clip-path="url(#breeze-prod-image-line-5)">──────────────────────────────────────────────────────────────────────────────────────────────────── [...] -</text><text class="breeze-prod-image-r5" x="0" y="166.4" textLength="12.2" clip-path="url(#breeze-prod-image-line-6)">│</text><text class="breeze-prod-image-r4" x="24.4" y="166.4" textLength="12.2" clip-path="url(#breeze-prod-image-line-6)">-</text><text class="breeze-prod-image-r4" x="36.6" y="166.4" textLength="61" clip-path="url(#breeze-prod-image-line-6)">-help</text><text class="breeze-prod-image-r6" x="122" y="166.4" textLength="24.4" clip-path="url(#breeze-prod-image-line-6)">-h< [...] +</text><text class="breeze-prod-image-r5" x="0" y="166.4" textLength="12.2" clip-path="url(#breeze-prod-image-line-6)">│</text><text class="breeze-prod-image-r4" x="24.4" y="166.4" textLength="73.2" clip-path="url(#breeze-prod-image-line-6)">--help</text><text class="breeze-prod-image-r6" x="122" y="166.4" textLength="24.4" clip-path="url(#breeze-prod-image-line-6)">-h</text><text class="breeze-prod-image-r1" x="170.8" y="166.4" textLength="329.4" clip-path="url(#breeze-prod-image-line-6 [...] </text><text class="breeze-prod-image-r5" x="0" y="190.8" textLength="1464" clip-path="url(#breeze-prod-image-line-7)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-prod-image-r1" x="1464" y="190.8" textLength="12.2" clip-path="url(#breeze-prod-image-line-7)"> </text><text class="breeze-prod-image-r5" x="0" y="215.2" textLength="24.4" clip-path="url(#breeze-prod-image-line-8)">╭─</text><text class="breeze-prod-image-r5" x="24.4" y="215.2" textLength="292.8" clip-path="url(#breeze-prod-image-line-8)"> Production Image tools </text><text class="breeze-prod-image-r5" x="317.2" y="215.2" textLength="1122.4" clip-path="url(#breeze-prod-image-line-8)">─────────────────────────────────────────────────────────────────────────────── [...] </text><text class="breeze-prod-image-r5" x="0" y="239.6" textLength="12.2" clip-path="url(#breeze-prod-image-line-9)">│</text><text class="breeze-prod-image-r4" x="24.4" y="239.6" textLength="85.4" clip-path="url(#breeze-prod-image-line-9)">build  </text><text class="breeze-prod-image-r1" x="134.2" y="239.6" textLength="1305.4" clip-path="url(#breeze-prod-image-line-9)">Build Production image. Include building multiple images for all [...] diff --git a/dev/breeze/doc/images/output_prod-image.txt b/dev/breeze/doc/images/output_prod-image.txt index 4e4ac97bd60..c767ee09d4f 100644 --- a/dev/breeze/doc/images/output_prod-image.txt +++ b/dev/breeze/doc/images/output_prod-image.txt @@ -1 +1 @@ -55030fe0d7718eb668fa1a37128647b0 +d91bcc76b14f186e749efe2c6aaa8682 diff --git a/dev/breeze/doc/images/output_prod-image_build.txt b/dev/breeze/doc/images/output_prod-image_build.txt index e1e2a2c9c6c..1645f4d547b 100644 --- a/dev/breeze/doc/images/output_prod-image_build.txt +++ b/dev/breeze/doc/images/output_prod-image_build.txt @@ -1 +1 @@ -88290b22adcd4e5cc9da29aaa8467992 +c243f4de16bc858f6202d88922f00109 diff --git a/dev/breeze/doc/images/output_setup.svg b/dev/breeze/doc/images/output_setup.svg index c747a1eea7f..5dda408adef 100644 --- a/dev/breeze/doc/images/output_setup.svg +++ b/dev/breeze/doc/images/output_setup.svg @@ -110,7 +110,7 @@ </text><text class="breeze-setup-r1" x="12.2" y="93.2" textLength="597.8" clip-path="url(#breeze-setup-line-3)">Tools that developers can use to configure Breeze</text><text class="breeze-setup-r1" x="1464" y="93.2" textLength="12.2" clip-path="url(#breeze-setup-line-3)"> </text><text class="breeze-setup-r1" x="1464" y="117.6" textLength="12.2" clip-path="url(#breeze-setup-line-4)"> </text><text class="breeze-setup-r5" x="0" y="142" textLength="24.4" clip-path="url(#breeze-setup-line-5)">╭─</text><text class="breeze-setup-r5" x="24.4" y="142" textLength="195.2" clip-path="url(#breeze-setup-line-5)"> Common options </text><text class="breeze-setup-r5" x="219.6" y="142" textLength="1220" clip-path="url(#breeze-setup-line-5)">────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="breeze-set [...] -</text><text class="breeze-setup-r5" x="0" y="166.4" textLength="12.2" clip-path="url(#breeze-setup-line-6)">│</text><text class="breeze-setup-r4" x="24.4" y="166.4" textLength="12.2" clip-path="url(#breeze-setup-line-6)">-</text><text class="breeze-setup-r4" x="36.6" y="166.4" textLength="61" clip-path="url(#breeze-setup-line-6)">-help</text><text class="breeze-setup-r6" x="122" y="166.4" textLength="24.4" clip-path="url(#breeze-setup-line-6)">-h</text><text class="breeze-setup-r1" x="1 [...] +</text><text class="breeze-setup-r5" x="0" y="166.4" textLength="12.2" clip-path="url(#breeze-setup-line-6)">│</text><text class="breeze-setup-r4" x="24.4" y="166.4" textLength="73.2" clip-path="url(#breeze-setup-line-6)">--help</text><text class="breeze-setup-r6" x="122" y="166.4" textLength="24.4" clip-path="url(#breeze-setup-line-6)">-h</text><text class="breeze-setup-r1" x="170.8" y="166.4" textLength="329.4" clip-path="url(#breeze-setup-line-6)">Show this message and& [...] </text><text class="breeze-setup-r5" x="0" y="190.8" textLength="1464" clip-path="url(#breeze-setup-line-7)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-setup-r1" x="1464" y="190.8" textLength="12.2" clip-path="url(#breeze-setup-line-7)"> </text><text class="breeze-setup-r5" x="0" y="215.2" textLength="24.4" clip-path="url(#breeze-setup-line-8)">╭─</text><text class="breeze-setup-r5" x="24.4" y="215.2" textLength="85.4" clip-path="url(#breeze-setup-line-8)"> Setup </text><text class="breeze-setup-r5" x="109.8" y="215.2" textLength="1329.8" clip-path="url(#breeze-setup-line-8)">─────────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="breeze-s [...] </text><text class="breeze-setup-r5" x="0" y="239.6" textLength="12.2" clip-path="url(#breeze-setup-line-9)">│</text><text class="breeze-setup-r4" x="24.4" y="239.6" textLength="378.2" clip-path="url(#breeze-setup-line-9)">autocomplete                   </text><text class="breeze-setup-r1" x="427" y="239.6" textLength="1012.6" clip-path="url(#breeze-setup-line-9)">Enables autocompletion [...] diff --git a/dev/breeze/doc/images/output_setup.txt b/dev/breeze/doc/images/output_setup.txt index b8f9048b91f..274751197da 100644 --- a/dev/breeze/doc/images/output_setup.txt +++ b/dev/breeze/doc/images/output_setup.txt @@ -1 +1 @@ -d4a4f1b405f912fa234ff4116068290a +08c78d9dddd037a2ade6b751c5a22ff9 diff --git a/dev/breeze/doc/images/output_setup_autocomplete.svg b/dev/breeze/doc/images/output_setup_autocomplete.svg index e118e1fced9..31f7814001f 100644 --- a/dev/breeze/doc/images/output_setup_autocomplete.svg +++ b/dev/breeze/doc/images/output_setup_autocomplete.svg @@ -102,13 +102,13 @@ </text><text class="breeze-setup-autocomplete-r1" x="12.2" y="93.2" textLength="512.4" clip-path="url(#breeze-setup-autocomplete-line-3)">Enables autocompletion of breeze commands.</text><text class="breeze-setup-autocomplete-r1" x="1464" y="93.2" textLength="12.2" clip-path="url(#breeze-setup-autocomplete-line-3)"> </text><text class="breeze-setup-autocomplete-r1" x="1464" y="117.6" textLength="12.2" clip-path="url(#breeze-setup-autocomplete-line-4)"> </text><text class="breeze-setup-autocomplete-r5" x="0" y="142" textLength="24.4" clip-path="url(#breeze-setup-autocomplete-line-5)">╭─</text><text class="breeze-setup-autocomplete-r5" x="24.4" y="142" textLength="317.2" clip-path="url(#breeze-setup-autocomplete-line-5)"> Setup autocomplete flags </text><text class="breeze-setup-autocomplete-r5" x="341.6" y="142" textLength="1098" clip-path="url(#breeze-setup-autocomplete-line-5)">───────────────────────────────────── [...] -</text><text class="breeze-setup-autocomplete-r5" x="0" y="166.4" textLength="12.2" clip-path="url(#breeze-setup-autocomplete-line-6)">│</text><text class="breeze-setup-autocomplete-r4" x="24.4" y="166.4" textLength="12.2" clip-path="url(#breeze-setup-autocomplete-line-6)">-</text><text class="breeze-setup-autocomplete-r4" x="36.6" y="166.4" textLength="73.2" clip-path="url(#breeze-setup-autocomplete-line-6)">-force</text><text class="breeze-setup-autocomplete-r6" x="134.2" y="166.4" tex [...] +</text><text class="breeze-setup-autocomplete-r5" x="0" y="166.4" textLength="12.2" clip-path="url(#breeze-setup-autocomplete-line-6)">│</text><text class="breeze-setup-autocomplete-r4" x="24.4" y="166.4" textLength="85.4" clip-path="url(#breeze-setup-autocomplete-line-6)">--force</text><text class="breeze-setup-autocomplete-r6" x="134.2" y="166.4" textLength="24.4" clip-path="url(#breeze-setup-autocomplete-line-6)">-f</text><text class="breeze-setup-autocomplete-r1" x="183" y="166.4" te [...] </text><text class="breeze-setup-autocomplete-r5" x="0" y="190.8" textLength="1464" clip-path="url(#breeze-setup-autocomplete-line-7)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-setup-autocomplete-r1" x="1464" y="190.8" textLength="12.2" clip-path="url(#breeze-setup-autocomplete-line-7)"> </text><text class="breeze-setup-autocomplete-r5" x="0" y="215.2" textLength="24.4" clip-path="url(#breeze-setup-autocomplete-line-8)">╭─</text><text class="breeze-setup-autocomplete-r5" x="24.4" y="215.2" textLength="195.2" clip-path="url(#breeze-setup-autocomplete-line-8)"> Common options </text><text class="breeze-setup-autocomplete-r5" x="219.6" y="215.2" textLength="1220" clip-path="url(#breeze-setup-autocomplete-line-8)">────────────────────────────────────────────── [...] -</text><text class="breeze-setup-autocomplete-r5" x="0" y="239.6" textLength="12.2" clip-path="url(#breeze-setup-autocomplete-line-9)">│</text><text class="breeze-setup-autocomplete-r4" x="24.4" y="239.6" textLength="12.2" clip-path="url(#breeze-setup-autocomplete-line-9)">-</text><text class="breeze-setup-autocomplete-r4" x="36.6" y="239.6" textLength="97.6" clip-path="url(#breeze-setup-autocomplete-line-9)">-verbose</text><text class="breeze-setup-autocomplete-r6" x="158.6" y="239.6" t [...] -</text><text class="breeze-setup-autocomplete-r5" x="0" y="264" textLength="12.2" clip-path="url(#breeze-setup-autocomplete-line-10)">│</text><text class="breeze-setup-autocomplete-r4" x="24.4" y="264" textLength="12.2" clip-path="url(#breeze-setup-autocomplete-line-10)">-</text><text class="breeze-setup-autocomplete-r4" x="36.6" y="264" textLength="48.8" clip-path="url(#breeze-setup-autocomplete-line-10)">-dry</text><text class="breeze-setup-autocomplete-r4" x="85.4" y="264" textLength= [...] -</text><text class="breeze-setup-autocomplete-r5" x="0" y="288.4" textLength="12.2" clip-path="url(#breeze-setup-autocomplete-line-11)">│</text><text class="breeze-setup-autocomplete-r4" x="24.4" y="288.4" textLength="12.2" clip-path="url(#breeze-setup-autocomplete-line-11)">-</text><text class="breeze-setup-autocomplete-r4" x="36.6" y="288.4" textLength="85.4" clip-path="url(#breeze-setup-autocomplete-line-11)">-answer</text><text class="breeze-setup-autocomplete-r6" x="158.6" y="288.4" [...] -</text><text class="breeze-setup-autocomplete-r5" x="0" y="312.8" textLength="12.2" clip-path="url(#breeze-setup-autocomplete-line-12)">│</text><text class="breeze-setup-autocomplete-r4" x="24.4" y="312.8" textLength="12.2" clip-path="url(#breeze-setup-autocomplete-line-12)">-</text><text class="breeze-setup-autocomplete-r4" x="36.6" y="312.8" textLength="61" clip-path="url(#breeze-setup-autocomplete-line-12)">-help</text><text class="breeze-setup-autocomplete-r6" x="158.6" y="312.8" tex [...] +</text><text class="breeze-setup-autocomplete-r5" x="0" y="239.6" textLength="12.2" clip-path="url(#breeze-setup-autocomplete-line-9)">│</text><text class="breeze-setup-autocomplete-r4" x="24.4" y="239.6" textLength="109.8" clip-path="url(#breeze-setup-autocomplete-line-9)">--verbose</text><text class="breeze-setup-autocomplete-r6" x="158.6" y="239.6" textLength="24.4" clip-path="url(#breeze-setup-autocomplete-line-9)">-v</text><text class="breeze-setup-autocomplete-r1" x="207.4" y="239. [...] +</text><text class="breeze-setup-autocomplete-r5" x="0" y="264" textLength="12.2" clip-path="url(#breeze-setup-autocomplete-line-10)">│</text><text class="breeze-setup-autocomplete-r4" x="24.4" y="264" textLength="109.8" clip-path="url(#breeze-setup-autocomplete-line-10)">--dry-run</text><text class="breeze-setup-autocomplete-r6" x="158.6" y="264" textLength="24.4" clip-path="url(#breeze-setup-autocomplete-line-10)">-D</text><text class="breeze-setup-autocomplete-r1" x="207.4" y="264" te [...] +</text><text class="breeze-setup-autocomplete-r5" x="0" y="288.4" textLength="12.2" clip-path="url(#breeze-setup-autocomplete-line-11)">│</text><text class="breeze-setup-autocomplete-r4" x="24.4" y="288.4" textLength="97.6" clip-path="url(#breeze-setup-autocomplete-line-11)">--answer</text><text class="breeze-setup-autocomplete-r6" x="158.6" y="288.4" textLength="24.4" clip-path="url(#breeze-setup-autocomplete-line-11)">-a</text><text class="breeze-setup-autocomplete-r1" x="207.4" y="288 [...] +</text><text class="breeze-setup-autocomplete-r5" x="0" y="312.8" textLength="12.2" clip-path="url(#breeze-setup-autocomplete-line-12)">│</text><text class="breeze-setup-autocomplete-r4" x="24.4" y="312.8" textLength="73.2" clip-path="url(#breeze-setup-autocomplete-line-12)">--help</text><text class="breeze-setup-autocomplete-r6" x="158.6" y="312.8" textLength="24.4" clip-path="url(#breeze-setup-autocomplete-line-12)">-h</text><text class="breeze-setup-autocomplete-r1" x="207.4" y="312.8 [...] </text><text class="breeze-setup-autocomplete-r5" x="0" y="337.2" textLength="1464" clip-path="url(#breeze-setup-autocomplete-line-13)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-setup-autocomplete-r1" x="1464" y="337.2" textLength="12.2" clip-path="url(#breeze-setup-autocomplete-line-13)"> </text> </g> diff --git a/dev/breeze/doc/images/output_setup_autocomplete.txt b/dev/breeze/doc/images/output_setup_autocomplete.txt index 185feef0264..144c2613cd6 100644 --- a/dev/breeze/doc/images/output_setup_autocomplete.txt +++ b/dev/breeze/doc/images/output_setup_autocomplete.txt @@ -1 +1 @@ -fffcd49e102e09ccd69b3841a9e3ea8e +ec3b4541a478afe5cb86a6f1c48f50f5 diff --git a/dev/breeze/doc/images/output_setup_config.txt b/dev/breeze/doc/images/output_setup_config.txt index 3b2da9a9c04..695e4b5c871 100644 --- a/dev/breeze/doc/images/output_setup_config.txt +++ b/dev/breeze/doc/images/output_setup_config.txt @@ -1 +1 @@ -96e10564034b282769a2c48ebf7176e2 +e77da96b508cc4911857d6f1266802b5 diff --git a/dev/breeze/doc/images/output_start-airflow.txt b/dev/breeze/doc/images/output_start-airflow.txt index 31367c64bfa..428a70cf0c0 100644 --- a/dev/breeze/doc/images/output_start-airflow.txt +++ b/dev/breeze/doc/images/output_start-airflow.txt @@ -1 +1 @@ -2fdb4b01e6d949fb40993e3cc416ca5c +834ca1bef0a55889bfccfeb41738a2f6 diff --git a/dev/breeze/pyproject.toml b/dev/breeze/pyproject.toml index 32b3e1fbe6e..e7bdbb4db08 100644 --- a/dev/breeze/pyproject.toml +++ b/dev/breeze/pyproject.toml @@ -48,7 +48,20 @@ dependencies = [ "black>=23.11.0", "click>=8.1.7", "filelock>=3.13.0", - "flit>=3.5.0", + # + # We pin flit in order to make sure reproducibility of provider packages is maintained + # It turns out that when packages are prepared metadata version in the produced packages + # is taken from the front-end not from the backend, so in order to make sure that the + # packages are reproducible, we should pin both backend in "build-system" and frontend in + # "dependencies" of the environment that is used to build the packages. + # + # TODO(potiuk): automate bumping the version of flit in breeze and sync it with + # the version in the template for provider packages with pre-commit also add instructions in + # the source packages explaining that reproducibility can only be achieved by using the same + # version of flit front-end to build the package + # + "flit==3.10.1", + "flit-core==3.10.1", "gitpython>=3.1.40", "hatch==1.9.4", # Importib_resources 6.2.0-6.3.1 break pytest_rewrite diff --git a/dev/breeze/src/airflow_breeze/commands/release_candidate_command.py b/dev/breeze/src/airflow_breeze/commands/release_candidate_command.py index 8c5c449ed7e..697526c1af3 100644 --- a/dev/breeze/src/airflow_breeze/commands/release_candidate_command.py +++ b/dev/breeze/src/airflow_breeze/commands/release_candidate_command.py @@ -341,7 +341,6 @@ def remove_old_releases(version, repo_root): "--version", required=True, help="The release candidate version e.g. 2.4.3rc1", envvar="VERSION" ) def prepare_airflow_tarball(version: str): - check_python_version() from packaging.version import Version airflow_version = Version(version) 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 ce9ec44e579..9defbe7ef4d 100644 --- a/dev/breeze/src/airflow_breeze/commands/release_management_commands.py +++ b/dev/breeze/src/airflow_breeze/commands/release_management_commands.py @@ -520,7 +520,6 @@ def prepare_airflow_packages( version_suffix_for_pypi: str, use_local_hatch: bool, ): - check_python_version() perform_environment_checks() fix_ownership_using_docker() cleanup_python_generated_files() @@ -3067,7 +3066,6 @@ def prepare_helm_chart_tarball( ) -> None: import yaml - check_python_version() chart_yaml_file_content = CHART_YAML_FILE.read_text() chart_yaml_dict = yaml.safe_load(chart_yaml_file_content) version_in_chart = chart_yaml_dict["version"] @@ -3209,8 +3207,6 @@ def prepare_helm_chart_tarball( @option_dry_run @option_verbose def prepare_helm_chart_package(sign_email: str): - check_python_version() - import yaml from airflow_breeze.utils.kubernetes_utils import ( diff --git a/dev/breeze/src/airflow_breeze/commands/setup_commands.py b/dev/breeze/src/airflow_breeze/commands/setup_commands.py index bc1ac4f1fa5..f0d1e4eac7c 100644 --- a/dev/breeze/src/airflow_breeze/commands/setup_commands.py +++ b/dev/breeze/src/airflow_breeze/commands/setup_commands.py @@ -22,6 +22,7 @@ import os import shutil import subprocess import sys +import textwrap from copy import copy from pathlib import Path from typing import Any @@ -274,8 +275,31 @@ def change_config( get_console().print() -def dict_hash(dictionary: dict[str, Any]) -> str: +def dedent_help(dictionary: dict[str, Any]) -> None: + """ + Dedent help stored in the dictionary. + + Python 3.13 automatically dedents docstrings retrieved from functions. + See https://github.com/python/cpython/issues/81283 + + However, click uses docstrings in the absence of help strings, and we are using click + command definition dictionary hash to detect changes in the command definitions, so if the + help strings are not dedented, the hash will change. + + That's why we must de-dent all the help strings in the command definition dictionary + before we hash it. + """ + for key, value in dictionary.items(): + if isinstance(value, dict): + dedent_help(value) + elif key == "help" and isinstance(value, str): + dictionary[key] = textwrap.dedent(value) + + +def dict_hash(dictionary: dict[str, Any], dedent_help_strings: bool = True) -> str: """MD5 hash of a dictionary. Sorted and dumped via json to account for random sequence)""" + if dedent_help_strings: + dedent_help(dictionary) # noinspection InsecureHash dhash = hashlib.md5() try: diff --git a/dev/breeze/src/airflow_breeze/templates/pyproject_TEMPLATE.toml.jinja2 b/dev/breeze/src/airflow_breeze/templates/pyproject_TEMPLATE.toml.jinja2 index 389d2ce62e5..a375ffedc63 100644 --- a/dev/breeze/src/airflow_breeze/templates/pyproject_TEMPLATE.toml.jinja2 +++ b/dev/breeze/src/airflow_breeze/templates/pyproject_TEMPLATE.toml.jinja2 @@ -39,9 +39,8 @@ # IF YOU WANT TO MODIFY THIS FILE, YOU SHOULD MODIFY THE TEMPLATE # `pyproject_TEMPLATE.toml.jinja2` IN the `dev/breeze/src/airflow_breeze/templates` DIRECTORY -# [build-system] -requires = ["flit_core >=3.2,<4"] +requires = ["flit_core==3.10.1"] build-backend = "flit_core.buildapi" [project] diff --git a/dev/breeze/src/airflow_breeze/utils/python_versions.py b/dev/breeze/src/airflow_breeze/utils/python_versions.py index b8807e66bf8..d84c4f932ba 100644 --- a/dev/breeze/src/airflow_breeze/utils/python_versions.py +++ b/dev/breeze/src/airflow_breeze/utils/python_versions.py @@ -46,16 +46,10 @@ def get_python_version_list(python_versions: str) -> list[str]: def check_python_version(): - error = False if not sys.version_info >= (3, 9): get_console().print("[error]At least Python 3.9 is required to prepare reproducible archives.\n") - error = True - elif not sys.version_info < (3, 12): - get_console().print("[error]Python 3.12 is not supported.\n") - error = True - if error: get_console().print( - "[warning]Please reinstall Breeze using Python 3.9 - 3.11 environment.[/]\n\n" + "[warning]Please reinstall Breeze using Python 3.9 - 3.12 environment.[/]\n\n" "If you are using uv:\n\n" " uv tool install --force --reinstall --python 3.9 -e ./dev/breeze\n\n" "If you are using pipx:\n\n" diff --git a/dev/breeze/src/airflow_breeze/utils/reproducible.py b/dev/breeze/src/airflow_breeze/utils/reproducible.py index 1429333d641..cf4005d9ddd 100644 --- a/dev/breeze/src/airflow_breeze/utils/reproducible.py +++ b/dev/breeze/src/airflow_breeze/utils/reproducible.py @@ -43,7 +43,6 @@ from pathlib import Path from subprocess import CalledProcessError, CompletedProcess from airflow_breeze.utils.path_utils import AIRFLOW_SOURCES_ROOT, OUT_DIR, REPRODUCIBLE_DIR -from airflow_breeze.utils.python_versions import check_python_version from airflow_breeze.utils.run_utils import run_command @@ -91,7 +90,6 @@ def repack_deterministically( tarinfo.mtime = timestamp return tarinfo - check_python_version() OUT_DIR.mkdir(exist_ok=True) shutil.rmtree(REPRODUCIBLE_DIR, ignore_errors=True) REPRODUCIBLE_DIR.mkdir(exist_ok=True) @@ -149,7 +147,6 @@ def repack_deterministically( def main(): - check_python_version() parser = ArgumentParser() parser.add_argument("-a", "--archive", help="archive to repack") parser.add_argument("-o", "--out", help="archive destination") diff --git a/dev/breeze/uv.lock b/dev/breeze/uv.lock index 666cb378052..a5a25206364 100644 --- a/dev/breeze/uv.lock +++ b/dev/breeze/uv.lock @@ -25,6 +25,7 @@ dependencies = [ { name = "click" }, { name = "filelock" }, { name = "flit" }, + { name = "flit-core" }, { name = "gitpython" }, { name = "hatch" }, { name = "importlib-resources", marker = "python_full_version < '3.9'" }, @@ -53,7 +54,8 @@ requires-dist = [ { name = "black", specifier = ">=23.11.0" }, { name = "click", specifier = ">=8.1.7" }, { name = "filelock", specifier = ">=3.13.0" }, - { name = "flit", specifier = ">=3.5.0" }, + { name = "flit", specifier = "==3.10.1" }, + { name = "flit-core", specifier = "==3.10.1" }, { name = "gitpython", specifier = ">=3.1.40" }, { name = "hatch", specifier = "==1.9.4" }, { name = "importlib-resources", marker = "python_full_version < '3.9'", specifier = ">=5.2,!=6.2.0,!=6.3.0,!=6.3.1" },
