This is an automated email from the ASF dual-hosted git repository.
potiuk pushed a commit to branch v2-10-test
in repository https://gitbox.apache.org/repos/asf/airflow.git
The following commit(s) were added to refs/heads/v2-10-test by this push:
new ce002fa7ba Fix reproducibility of prepared provider packages (fix flit
frontend) (#43683) (#43687)
ce002fa7ba is described below
commit ce002fa7ba6bd9cb87324cc112de0bd690e05930
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 749f89e106..25aa8062c7 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 2c38aa7c1a..713bf7ce83 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 e270c6b92e..6fa9017144 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 760b6b3d09..85554fb426 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 6b907c07a6..ef8e95626d 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 4e4ac97bd6..c767ee09d4 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 e1e2a2c9c6..1645f4d547 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 c747a1eea7..5dda408ade 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 b8f9048b91..274751197d 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 e118e1fced..31f7814001 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 185feef026..144c2613cd 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 3b2da9a9c0..695e4b5c87 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 31367c64bf..428a70cf0c 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 32b3e1fbe6..e7bdbb4db0 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 8c5c449ed7..697526c1af 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 ce9ec44e57..9defbe7ef4 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 bc1ac4f1fa..f0d1e4eac7 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 389d2ce62e..a375ffedc6 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 b8807e66bf..d84c4f932b 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 1429333d64..cf4005d9dd 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 666cb37805..a5a2520636 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" },