This is an automated email from the ASF dual-hosted git repository.

weilee pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git


The following commit(s) were added to refs/heads/main by this push:
     new f1f5212abf5 Cleanup committed zip file in tests/dags (#46604)
f1f5212abf5 is described below

commit f1f5212abf5f3fb75df6ed148b56f1f79cf5743b
Author: Josix <[email protected]>
AuthorDate: Mon Feb 10 15:14:04 2025 +0800

    Cleanup committed zip file in tests/dags (#46604)
    
    * refactor: remove test_dag_warning.zip in test_dagbag.py
    
    * refactor: add dynamic test_zip_path fixture for generating test zip files
    
    * chore: Ignore zip files in .gitignore
    
    * fixup! refactor: add dynamic test_zip_path fixture for generating test 
zip files
---
 .gitignore                                      |   3 +
 .pre-commit-config.yaml                         |   8 ++
 contributing-docs/08_static_code_checks.rst     |   2 +
 dev/breeze/doc/images/output_static-checks.svg  | 110 ++++++++++++------------
 dev/breeze/doc/images/output_static-checks.txt  |   2 +-
 dev/breeze/src/airflow_breeze/pre_commit_ids.py |   1 +
 scripts/ci/pre_commit/check_init_in_tests.py    |   4 +-
 tests/conftest.py                               |  18 +++-
 tests/dag_processing/test_manager.py            |  11 ++-
 tests/dags/test_dag_warnings.zip                | Bin 964 -> 0 bytes
 tests/dags/test_zip.zip                         | Bin 2269 -> 0 bytes
 tests/dags/test_zip/file_no_airflow_dag.py      |  16 ++++
 tests/dags/test_zip/test_zip.py                 |  33 +++++++
 tests/dags/test_zip/test_zip_module/__init__.py |  16 ++++
 tests/dags/test_zip/test_zip_module/test.py     |  21 +++++
 tests/models/test_dagbag.py                     |  60 ++++++++-----
 tests/utils/test_file.py                        |   8 +-
 17 files changed, 225 insertions(+), 88 deletions(-)

diff --git a/.gitignore b/.gitignore
index 84afbd47410..0daa4b0b1c3 100644
--- a/.gitignore
+++ b/.gitignore
@@ -257,3 +257,6 @@ airflow-build-dockerfile*
 
 # Temporary ignore uv.lock until we integrate it fully in our constraint 
preparation mechanism
 /uv.lock
+
+# Ignore zip files https://github.com/apache/airflow/issues/46449
+*.zip
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index dd4cd85631a..bcd589ad093 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -1085,6 +1085,14 @@ repos:
         pass_filenames: true
         files: \.py$
         additional_dependencies: ['rich>=12.4.4']
+      - id: check-zip-file-is-not-committed
+        name: Check no zip files are committed
+        description: Zip files are not allowed in the repository
+        language: fail
+        entry: |
+          Zip files are not allowed in the repository as they are hard to
+          track and have security implications. Please remove the zip file 
from the repository.
+        files: \.zip$
       - id: check-code-deprecations
         name: Check deprecations categories in decorators
         entry: ./scripts/ci/pre_commit/check_deprecations.py
diff --git a/contributing-docs/08_static_code_checks.rst 
b/contributing-docs/08_static_code_checks.rst
index 1ee8ae52890..d9742a003d8 100644
--- a/contributing-docs/08_static_code_checks.rst
+++ b/contributing-docs/08_static_code_checks.rst
@@ -252,6 +252,8 @@ require Breeze Docker image to be built locally.
 
+-----------------------------------------------------------+--------------------------------------------------------+---------+
 | check-xml                                                 | Check XML files 
with xmllint                           |         |
 
+-----------------------------------------------------------+--------------------------------------------------------+---------+
+| check-zip-file-is-not-committed                           | Check no zip 
files are committed                       |         |
++-----------------------------------------------------------+--------------------------------------------------------+---------+
 | codespell                                                 | Run codespell    
                                      |         |
 
+-----------------------------------------------------------+--------------------------------------------------------+---------+
 | compile-ui-assets                                         | Compile ui 
assets (manual)                             |         |
diff --git a/dev/breeze/doc/images/output_static-checks.svg 
b/dev/breeze/doc/images/output_static-checks.svg
index c316ed2a2cc..670ff24f586 100644
--- a/dev/breeze/doc/images/output_static-checks.svg
+++ b/dev/breeze/doc/images/output_static-checks.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 2221.6" 
xmlns="http://www.w3.org/2000/svg";>
+<svg class="rich-terminal" viewBox="0 0 1482 2246.0" 
xmlns="http://www.w3.org/2000/svg";>
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -43,7 +43,7 @@
 
     <defs>
     <clipPath id="breeze-static-checks-clip-terminal">
-      <rect x="0" y="0" width="1463.0" height="2170.6" />
+      <rect x="0" y="0" width="1463.0" height="2195.0" />
     </clipPath>
     <clipPath id="breeze-static-checks-line-0">
     <rect x="0" y="1.5" width="1464" height="24.65"/>
@@ -309,9 +309,12 @@
 <clipPath id="breeze-static-checks-line-87">
     <rect x="0" y="2124.3" width="1464" height="24.65"/>
             </clipPath>
+<clipPath id="breeze-static-checks-line-88">
+    <rect x="0" y="2148.7" width="1464" height="24.65"/>
+            </clipPath>
     </defs>
 
-    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" 
x="1" y="1" width="1480" height="2219.6" rx="8"/><text 
class="breeze-static-checks-title" fill="#c5c8c6" text-anchor="middle" x="740" 
y="27">Command:&#160;static-checks</text>
+    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" 
x="1" y="1" width="1480" height="2244" rx="8"/><text 
class="breeze-static-checks-title" fill="#c5c8c6" text-anchor="middle" x="740" 
y="27">Command:&#160;static-checks</text>
             <g transform="translate(26,22)">
             <circle cx="0" cy="0" r="7" fill="#ff5f57"/>
             <circle cx="22" cy="0" r="7" fill="#febc2e"/>
@@ -360,56 +363,57 @@
 </text><text class="breeze-static-checks-r5" x="0" y="898.4" textLength="12.2" 
clip-path="url(#breeze-static-checks-line-36)">│</text><text 
class="breeze-static-checks-r7" x="451.4" y="898.4" textLength="988.2" 
clip-path="url(#breeze-static-checks-line-36)">check-system-tests-tocs&#160;|&#160;check-taskinstance-tis-attrs&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text
  [...]
 </text><text class="breeze-static-checks-r5" x="0" y="922.8" textLength="12.2" 
clip-path="url(#breeze-static-checks-line-37)">│</text><text 
class="breeze-static-checks-r7" x="451.4" y="922.8" textLength="988.2" 
clip-path="url(#breeze-static-checks-line-37)">check-template-context-variable-in-sync&#160;|&#160;check-template-fields-valid&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text
 class="breeze-static-checks-r5" x="1451.8" y="922.8" textLength="12.2" clip 
[...]
 </text><text class="breeze-static-checks-r5" x="0" y="947.2" textLength="12.2" 
clip-path="url(#breeze-static-checks-line-38)">│</text><text 
class="breeze-static-checks-r7" x="451.4" y="947.2" textLength="988.2" 
clip-path="url(#breeze-static-checks-line-38)">check-tests-in-the-right-folders&#160;|&#160;check-tests-unittest-testcase&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text
 class="breeze-static-checks-r5" x="1451.8" y="947. [...]
-</text><text class="breeze-static-checks-r5" x="0" y="971.6" textLength="12.2" 
clip-path="url(#breeze-static-checks-line-39)">│</text><text 
class="breeze-static-checks-r7" x="451.4" y="971.6" textLength="988.2" 
clip-path="url(#breeze-static-checks-line-39)">check-urlparse-usage-in-code&#160;|&#160;check-usage-of-re2-over-re&#160;|&#160;check-xml&#160;|&#160;codespell</text><text
 class="breeze-static-checks-r5" x="1451.8" y="971.6" textLength="12.2" 
clip-path="url(#breeze-static-checks-li [...]
-</text><text class="breeze-static-checks-r5" x="0" y="996" textLength="12.2" 
clip-path="url(#breeze-static-checks-line-40)">│</text><text 
class="breeze-static-checks-r7" x="451.4" y="996" textLength="988.2" 
clip-path="url(#breeze-static-checks-line-40)">|&#160;compile-ui-assets&#160;|&#160;compile-ui-assets-dev&#160;|&#160;compile-www-assets&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text
 class="breeze-static-checks-r5" x="1451 [...]
-</text><text class="breeze-static-checks-r5" x="0" y="1020.4" 
textLength="12.2" clip-path="url(#breeze-static-checks-line-41)">│</text><text 
class="breeze-static-checks-r7" x="451.4" y="1020.4" textLength="988.2" 
clip-path="url(#breeze-static-checks-line-41)">compile-www-assets-dev&#160;|&#160;create-missing-init-py-files-tests&#160;|&#160;debug-statements&#160;|&#160;</text><text
 class="breeze-static-checks-r5" x="1451.8" y="1020.4" textLength="12.2" 
clip-path="url(#breeze-static-checks [...]
-</text><text class="breeze-static-checks-r5" x="0" y="1044.8" 
textLength="12.2" clip-path="url(#breeze-static-checks-line-42)">│</text><text 
class="breeze-static-checks-r7" x="451.4" y="1044.8" textLength="988.2" 
clip-path="url(#breeze-static-checks-line-42)">detect-private-key&#160;|&#160;doctoc&#160;|&#160;end-of-file-fixer&#160;|&#160;fix-encoding-pragma&#160;|&#160;flynt&#160;|&#160;&#160;</text><text
 class="breeze-static-checks-r5" x="1451.8" y="1044.8" textLength="12.2" 
clip-path=" [...]
-</text><text class="breeze-static-checks-r5" x="0" y="1069.2" 
textLength="12.2" clip-path="url(#breeze-static-checks-line-43)">│</text><text 
class="breeze-static-checks-r7" x="451.4" y="1069.2" textLength="988.2" 
clip-path="url(#breeze-static-checks-line-43)">generate-airflow-diagrams&#160;|&#160;generate-openapi-spec&#160;|&#160;generate-pypi-readme&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text
 class="breeze-static-checks-r5" x="1451.8" y="1069.2" textLength="12.2" clip-p 
[...]
-</text><text class="breeze-static-checks-r5" x="0" y="1093.6" 
textLength="12.2" clip-path="url(#breeze-static-checks-line-44)">│</text><text 
class="breeze-static-checks-r7" x="451.4" y="1093.6" textLength="988.2" 
clip-path="url(#breeze-static-checks-line-44)">generate-volumes-for-sources&#160;|&#160;identity&#160;|&#160;insert-license&#160;|&#160;kubeconform&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text
 class="breeze-static-checks-r5" x="1451.8" y="1093.6" text [...]
-</text><text class="breeze-static-checks-r5" x="0" y="1118" textLength="12.2" 
clip-path="url(#breeze-static-checks-line-45)">│</text><text 
class="breeze-static-checks-r7" x="451.4" y="1118" textLength="988.2" 
clip-path="url(#breeze-static-checks-line-45)">lint-chart-schema&#160;|&#160;lint-css&#160;|&#160;lint-dockerfile&#160;|&#160;lint-helm-chart&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text
 class="breeze-static-checks-r5"  [...]
-</text><text class="breeze-static-checks-r5" x="0" y="1142.4" 
textLength="12.2" clip-path="url(#breeze-static-checks-line-46)">│</text><text 
class="breeze-static-checks-r7" x="451.4" y="1142.4" textLength="988.2" 
clip-path="url(#breeze-static-checks-line-46)">lint-json-schema&#160;|&#160;lint-markdown&#160;|&#160;lint-openapi&#160;|&#160;mixed-line-ending&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text
 class="breeze-static-checks-r5" x="1451.8"  [...]
-</text><text class="breeze-static-checks-r5" x="0" y="1166.8" 
textLength="12.2" clip-path="url(#breeze-static-checks-line-47)">│</text><text 
class="breeze-static-checks-r7" x="451.4" y="1166.8" textLength="988.2" 
clip-path="url(#breeze-static-checks-line-47)">mypy-airflow&#160;|&#160;mypy-dev&#160;|&#160;mypy-docs&#160;|&#160;mypy-providers&#160;|&#160;mypy-task-sdk&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text
 class="breeze-static-checks-r5" x="145 [...]
-</text><text class="breeze-static-checks-r5" x="0" y="1191.2" 
textLength="12.2" clip-path="url(#breeze-static-checks-line-48)">│</text><text 
class="breeze-static-checks-r7" x="451.4" y="1191.2" textLength="988.2" 
clip-path="url(#breeze-static-checks-line-48)">pretty-format-json&#160;|&#160;pylint&#160;|&#160;python-no-log-warn&#160;|&#160;replace-bad-characters&#160;|&#160;&#160;&#160;&#160;&#160;&#160;</text><text
 class="breeze-static-checks-r5" x="1451.8" y="1191.2" textLength="12.2" c [...]
-</text><text class="breeze-static-checks-r5" x="0" y="1215.6" 
textLength="12.2" clip-path="url(#breeze-static-checks-line-49)">│</text><text 
class="breeze-static-checks-r7" x="451.4" y="1215.6" textLength="988.2" 
clip-path="url(#breeze-static-checks-line-49)">rst-backticks&#160;|&#160;ruff&#160;|&#160;ruff-format&#160;|&#160;shellcheck&#160;|&#160;trailing-whitespace&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text
 class="breeze-static-checks-r5" x="1451.8"  [...]
-</text><text class="breeze-static-checks-r5" x="0" y="1240" textLength="12.2" 
clip-path="url(#breeze-static-checks-line-50)">│</text><text 
class="breeze-static-checks-r7" x="451.4" y="1240" textLength="988.2" 
clip-path="url(#breeze-static-checks-line-50)">ts-compile-format-lint-ui&#160;|&#160;ts-compile-format-lint-www&#160;|&#160;update-black-version&#160;|&#160;&#160;</text><text
 class="breeze-static-checks-r5" x="1451.8" y="1240" textLength="12.2" 
clip-path="url(#breeze-static-checks- [...]
-</text><text class="breeze-static-checks-r5" x="0" y="1264.4" 
textLength="12.2" clip-path="url(#breeze-static-checks-line-51)">│</text><text 
class="breeze-static-checks-r7" x="451.4" y="1264.4" textLength="988.2" 
clip-path="url(#breeze-static-checks-line-51)">update-breeze-cmd-output&#160;|&#160;update-breeze-readme-config-hash&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text
 class="breeze-static-ch [...]
-</text><text class="breeze-static-checks-r5" x="0" y="1288.8" 
textLength="12.2" clip-path="url(#breeze-static-checks-line-52)">│</text><text 
class="breeze-static-checks-r7" x="451.4" y="1288.8" textLength="988.2" 
clip-path="url(#breeze-static-checks-line-52)">update-chart-dependencies&#160;|&#160;update-er-diagram&#160;|&#160;update-extras&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text
 class="breeze-static-ch [...]
-</text><text class="breeze-static-checks-r5" x="0" y="1313.2" 
textLength="12.2" clip-path="url(#breeze-static-checks-line-53)">│</text><text 
class="breeze-static-checks-r7" x="451.4" y="1313.2" textLength="988.2" 
clip-path="url(#breeze-static-checks-line-53)">update-in-the-wild-to-be-sorted&#160;|&#160;update-inlined-dockerfile-scripts&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text
 class="breeze-static-checks-r5" x="1451.8" y="1313.2" textLengt [...]
-</text><text class="breeze-static-checks-r5" x="0" y="1337.6" 
textLength="12.2" clip-path="url(#breeze-static-checks-line-54)">│</text><text 
class="breeze-static-checks-r7" x="451.4" y="1337.6" textLength="988.2" 
clip-path="url(#breeze-static-checks-line-54)">update-installed-providers-to-be-sorted&#160;|&#160;update-installers-and-pre-commit&#160;|&#160;&#160;&#160;&#160;&#160;</text><text
 class="breeze-static-checks-r5" x="1451.8" y="1337.6" textLength="12.2" 
clip-path="url(#breeze-sta [...]
-</text><text class="breeze-static-checks-r5" x="0" y="1362" textLength="12.2" 
clip-path="url(#breeze-static-checks-line-55)">│</text><text 
class="breeze-static-checks-r7" x="451.4" y="1362" textLength="988.2" 
clip-path="url(#breeze-static-checks-line-55)">update-local-yml-file&#160;|&#160;update-migration-references&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
 [...]
-</text><text class="breeze-static-checks-r5" x="0" y="1386.4" 
textLength="12.2" clip-path="url(#breeze-static-checks-line-56)">│</text><text 
class="breeze-static-checks-r7" x="451.4" y="1386.4" textLength="988.2" 
clip-path="url(#breeze-static-checks-line-56)">update-openapi-spec-tags-to-be-sorted&#160;|&#160;update-providers-build-files&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text
 class="breeze-static-checks-r5" x="1451.8" y="1386.4" textLength="12 [...]
-</text><text class="breeze-static-checks-r5" x="0" y="1410.8" 
textLength="12.2" clip-path="url(#breeze-static-checks-line-57)">│</text><text 
class="breeze-static-checks-r7" x="451.4" y="1410.8" textLength="988.2" 
clip-path="url(#breeze-static-checks-line-57)">update-providers-dependencies&#160;|&#160;update-reproducible-source-date-epoch&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text
 class="breeze-static-checks-r5" x="1451.8" y="1410.8" textLength="12.2" c [...]
-</text><text class="breeze-static-checks-r5" x="0" y="1435.2" 
textLength="12.2" clip-path="url(#breeze-static-checks-line-58)">│</text><text 
class="breeze-static-checks-r7" x="451.4" y="1435.2" textLength="988.2" 
clip-path="url(#breeze-static-checks-line-58)">update-spelling-wordlist-to-be-sorted&#160;|&#160;update-supported-versions&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text
 class="breeze-static-checks-r5" x="1451.8" y="1435.2" [...]
-</text><text class="breeze-static-checks-r5" x="0" y="1459.6" 
textLength="12.2" clip-path="url(#breeze-static-checks-line-59)">│</text><text 
class="breeze-static-checks-r7" x="451.4" y="1459.6" textLength="988.2" 
clip-path="url(#breeze-static-checks-line-59)">update-vendored-in-k8s-json-schema&#160;|&#160;update-version&#160;|&#160;validate-operators-init&#160;|&#160;&#160;</text><text
 class="breeze-static-checks-r5" x="1451.8" y="1459.6" textLength="12.2" 
clip-path="url(#breeze-static-c [...]
-</text><text class="breeze-static-checks-r5" x="0" y="1484" textLength="12.2" 
clip-path="url(#breeze-static-checks-line-60)">│</text><text 
class="breeze-static-checks-r7" x="451.4" y="1484" textLength="988.2" 
clip-path="url(#breeze-static-checks-line-60)">yamllint&#160;|&#160;zizmor)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#16
 [...]
-</text><text class="breeze-static-checks-r5" x="0" y="1508.4" 
textLength="12.2" clip-path="url(#breeze-static-checks-line-61)">│</text><text 
class="breeze-static-checks-r4" x="24.4" y="1508.4" textLength="268.4" 
clip-path="url(#breeze-static-checks-line-61)">--show-diff-on-failure</text><text
 class="breeze-static-checks-r6" x="402.6" y="1508.4" textLength="24.4" 
clip-path="url(#breeze-static-checks-line-61)">-s</text><text 
class="breeze-static-checks-r1" x="451.4" y="1508.4" textLength=" [...]
-</text><text class="breeze-static-checks-r5" x="0" y="1532.8" 
textLength="12.2" clip-path="url(#breeze-static-checks-line-62)">│</text><text 
class="breeze-static-checks-r4" x="24.4" y="1532.8" textLength="292.8" 
clip-path="url(#breeze-static-checks-line-62)">--initialize-environment</text><text
 class="breeze-static-checks-r1" x="451.4" y="1532.8" textLength="549" 
clip-path="url(#breeze-static-checks-line-62)">Initialize&#160;environment&#160;before&#160;running&#160;checks.</text><text
 c [...]
-</text><text class="breeze-static-checks-r5" x="0" y="1557.2" 
textLength="12.2" clip-path="url(#breeze-static-checks-line-63)">│</text><text 
class="breeze-static-checks-r4" x="24.4" y="1557.2" textLength="353.8" 
clip-path="url(#breeze-static-checks-line-63)">--max-initialization-attempts</text><text
 class="breeze-static-checks-r1" x="451.4" y="1557.2" textLength="854" 
clip-path="url(#breeze-static-checks-line-63)">Maximum&#160;number&#160;of&#160;attempts&#160;to&#160;initialize&#160;env
 [...]
-</text><text class="breeze-static-checks-r5" x="0" y="1581.6" 
textLength="12.2" clip-path="url(#breeze-static-checks-line-64)">│</text><text 
class="breeze-static-checks-r7" x="451.4" y="1581.6" textLength="854" 
clip-path="url(#breeze-static-checks-line-64)">(INTEGER&#160;RANGE)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#16
 [...]
-</text><text class="breeze-static-checks-r5" x="0" y="1606" textLength="12.2" 
clip-path="url(#breeze-static-checks-line-65)">│</text><text 
class="breeze-static-checks-r5" x="451.4" y="1606" textLength="854" 
clip-path="url(#breeze-static-checks-line-65)">[default:&#160;3;&#160;1&lt;=x&lt;=10]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#
 [...]
-</text><text class="breeze-static-checks-r5" x="0" y="1630.4" 
textLength="1464" 
clip-path="url(#breeze-static-checks-line-66)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
 class="breeze-static-checks-r1" x="1464" y="1630.4" textLength="12.2" 
clip-path="url(#breeze-static-checks-line-66)">
-</text><text class="breeze-static-checks-r5" x="0" y="1654.8" 
textLength="24.4" clip-path="url(#breeze-static-checks-line-67)">╭─</text><text 
class="breeze-static-checks-r5" x="24.4" y="1654.8" textLength="463.6" 
clip-path="url(#breeze-static-checks-line-67)">&#160;Selecting&#160;files&#160;to&#160;run&#160;the&#160;checks&#160;on&#160;</text><text
 class="breeze-static-checks-r5" x="488" y="1654.8" textLength="951.6" 
clip-path="url(#breeze-static-checks-line-67)">──────────────────────── [...]
-</text><text class="breeze-static-checks-r5" x="0" y="1679.2" 
textLength="12.2" clip-path="url(#breeze-static-checks-line-68)">│</text><text 
class="breeze-static-checks-r4" x="24.4" y="1679.2" textLength="73.2" 
clip-path="url(#breeze-static-checks-line-68)">--file</text><text 
class="breeze-static-checks-r6" x="256.2" y="1679.2" textLength="24.4" 
clip-path="url(#breeze-static-checks-line-68)">-f</text><text 
class="breeze-static-checks-r1" x="305" y="1679.2" textLength="427" 
clip-path="url [...]
-</text><text class="breeze-static-checks-r5" x="0" y="1703.6" 
textLength="12.2" clip-path="url(#breeze-static-checks-line-69)">│</text><text 
class="breeze-static-checks-r4" x="24.4" y="1703.6" textLength="134.2" 
clip-path="url(#breeze-static-checks-line-69)">--all-files</text><text 
class="breeze-static-checks-r6" x="256.2" y="1703.6" textLength="24.4" 
clip-path="url(#breeze-static-checks-line-69)">-a</text><text 
class="breeze-static-checks-r1" x="305" y="1703.6" textLength="292.8" clip-p 
[...]
-</text><text class="breeze-static-checks-r5" x="0" y="1728" textLength="12.2" 
clip-path="url(#breeze-static-checks-line-70)">│</text><text 
class="breeze-static-checks-r4" x="24.4" y="1728" textLength="146.4" 
clip-path="url(#breeze-static-checks-line-70)">--commit-ref</text><text 
class="breeze-static-checks-r6" x="256.2" y="1728" textLength="24.4" 
clip-path="url(#breeze-static-checks-line-70)">-r</text><text 
class="breeze-static-checks-r1" x="305" y="1728" textLength="1134.6" 
clip-path="u [...]
-</text><text class="breeze-static-checks-r5" x="0" y="1752.4" 
textLength="12.2" clip-path="url(#breeze-static-checks-line-71)">│</text><text 
class="breeze-static-checks-r1" x="305" y="1752.4" textLength="183" 
clip-path="url(#breeze-static-checks-line-71)">exclusive&#160;with&#160;</text><text
 class="breeze-static-checks-r4" x="488" y="1752.4" textLength="158.6" 
clip-path="url(#breeze-static-checks-line-71)">--last-commit</text><text 
class="breeze-static-checks-r1" x="646.6" y="1752.4" te [...]
-</text><text class="breeze-static-checks-r5" x="0" y="1776.8" 
textLength="12.2" clip-path="url(#breeze-static-checks-line-72)">│</text><text 
class="breeze-static-checks-r7" x="305" y="1776.8" textLength="1134.6" 
clip-path="url(#breeze-static-checks-line-72)">(TEXT)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160
 [...]
-</text><text class="breeze-static-checks-r5" x="0" y="1801.2" 
textLength="12.2" clip-path="url(#breeze-static-checks-line-73)">│</text><text 
class="breeze-static-checks-r4" x="24.4" y="1801.2" textLength="158.6" 
clip-path="url(#breeze-static-checks-line-73)">--last-commit</text><text 
class="breeze-static-checks-r6" x="256.2" y="1801.2" textLength="24.4" 
clip-path="url(#breeze-static-checks-line-73)">-c</text><text 
class="breeze-static-checks-r1" x="305" y="1801.2" textLength="793" clip-p [...]
-</text><text class="breeze-static-checks-r5" x="0" y="1825.6" 
textLength="12.2" clip-path="url(#breeze-static-checks-line-74)">│</text><text 
class="breeze-static-checks-r4" x="24.4" y="1825.6" textLength="207.4" 
clip-path="url(#breeze-static-checks-line-74)">--only-my-changes</text><text 
class="breeze-static-checks-r6" x="256.2" y="1825.6" textLength="24.4" 
clip-path="url(#breeze-static-checks-line-74)">-m</text><text 
class="breeze-static-checks-r1" x="305" y="1825.6" textLength="1134.6" [...]
-</text><text class="breeze-static-checks-r5" x="0" y="1850" textLength="12.2" 
clip-path="url(#breeze-static-checks-line-75)">│</text><text 
class="breeze-static-checks-r1" x="305" y="1850" textLength="1134.6" 
clip-path="url(#breeze-static-checks-line-75)">branch&#160;and&#160;HEAD&#160;of&#160;your&#160;branch.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&
 [...]
-</text><text class="breeze-static-checks-r5" x="0" y="1874.4" 
textLength="1464" 
clip-path="url(#breeze-static-checks-line-76)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
 class="breeze-static-checks-r1" x="1464" y="1874.4" textLength="12.2" 
clip-path="url(#breeze-static-checks-line-76)">
-</text><text class="breeze-static-checks-r5" x="0" y="1898.8" 
textLength="24.4" clip-path="url(#breeze-static-checks-line-77)">╭─</text><text 
class="breeze-static-checks-r5" x="24.4" y="1898.8" textLength="463.6" 
clip-path="url(#breeze-static-checks-line-77)">&#160;Building&#160;image&#160;before&#160;running&#160;checks&#160;</text><text
 class="breeze-static-checks-r5" x="488" y="1898.8" textLength="951.6" 
clip-path="url(#breeze-static-checks-line-77)">──────────────────────────────────
 [...]
-</text><text class="breeze-static-checks-r5" x="0" y="1923.2" 
textLength="12.2" clip-path="url(#breeze-static-checks-line-78)">│</text><text 
class="breeze-static-checks-r4" x="24.4" y="1923.2" textLength="317.2" 
clip-path="url(#breeze-static-checks-line-78)">--skip-image-upgrade-check</text><text
 class="breeze-static-checks-r1" x="414.8" y="1923.2" textLength="536.8" 
clip-path="url(#breeze-static-checks-line-78)">Skip&#160;checking&#160;if&#160;the&#160;CI&#160;image&#160;is&#160;up&#160
 [...]
-</text><text class="breeze-static-checks-r5" x="0" y="1947.6" 
textLength="12.2" clip-path="url(#breeze-static-checks-line-79)">│</text><text 
class="breeze-static-checks-r4" x="24.4" y="1947.6" textLength="158.6" 
clip-path="url(#breeze-static-checks-line-79)">--force-build</text><text 
class="breeze-static-checks-r1" x="414.8" y="1947.6" textLength="707.6" 
clip-path="url(#breeze-static-checks-line-79)">Force&#160;image&#160;build&#160;no&#160;matter&#160;if&#160;it&#160;is&#160;determined&
 [...]
-</text><text class="breeze-static-checks-r5" x="0" y="1972" textLength="12.2" 
clip-path="url(#breeze-static-checks-line-80)">│</text><text 
class="breeze-static-checks-r4" x="24.4" y="1972" textLength="231.8" 
clip-path="url(#breeze-static-checks-line-80)">--github-repository</text><text 
class="breeze-static-checks-r6" x="366" y="1972" textLength="24.4" 
clip-path="url(#breeze-static-checks-line-80)">-g</text><text 
class="breeze-static-checks-r1" x="414.8" y="1972" textLength="585.6" clip-p 
[...]
-</text><text class="breeze-static-checks-r5" x="0" y="1996.4" 
textLength="12.2" clip-path="url(#breeze-static-checks-line-81)">│</text><text 
class="breeze-static-checks-r4" x="24.4" y="1996.4" textLength="109.8" 
clip-path="url(#breeze-static-checks-line-81)">--builder</text><text 
class="breeze-static-checks-r1" x="414.8" y="1996.4" textLength="756.4" 
clip-path="url(#breeze-static-checks-line-81)">Buildx&#160;builder&#160;used&#160;to&#160;perform&#160;`docker&#160;buildx&#160;build`&#160
 [...]
-</text><text class="breeze-static-checks-r5" x="0" y="2020.8" 
textLength="12.2" clip-path="url(#breeze-static-checks-line-82)">│</text><text 
class="breeze-static-checks-r5" x="414.8" y="2020.8" textLength="756.4" 
clip-path="url(#breeze-static-checks-line-82)">[default:&#160;autodetect]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#
 [...]
-</text><text class="breeze-static-checks-r5" x="0" y="2045.2" 
textLength="1464" 
clip-path="url(#breeze-static-checks-line-83)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
 class="breeze-static-checks-r1" x="1464" y="2045.2" textLength="12.2" 
clip-path="url(#breeze-static-checks-line-83)">
-</text><text class="breeze-static-checks-r5" x="0" y="2069.6" 
textLength="24.4" clip-path="url(#breeze-static-checks-line-84)">╭─</text><text 
class="breeze-static-checks-r5" x="24.4" y="2069.6" textLength="195.2" 
clip-path="url(#breeze-static-checks-line-84)">&#160;Common&#160;options&#160;</text><text
 class="breeze-static-checks-r5" x="219.6" y="2069.6" textLength="1220" 
clip-path="url(#breeze-static-checks-line-84)">──────────────────────────────────────────────────────────────────────
 [...]
-</text><text class="breeze-static-checks-r5" x="0" y="2094" textLength="12.2" 
clip-path="url(#breeze-static-checks-line-85)">│</text><text 
class="breeze-static-checks-r4" x="24.4" y="2094" textLength="109.8" 
clip-path="url(#breeze-static-checks-line-85)">--dry-run</text><text 
class="breeze-static-checks-r6" x="158.6" y="2094" textLength="24.4" 
clip-path="url(#breeze-static-checks-line-85)">-D</text><text 
class="breeze-static-checks-r1" x="207.4" y="2094" textLength="719.8" 
clip-path="url [...]
-</text><text class="breeze-static-checks-r5" x="0" y="2118.4" 
textLength="12.2" clip-path="url(#breeze-static-checks-line-86)">│</text><text 
class="breeze-static-checks-r4" x="24.4" y="2118.4" textLength="109.8" 
clip-path="url(#breeze-static-checks-line-86)">--verbose</text><text 
class="breeze-static-checks-r6" x="158.6" y="2118.4" textLength="24.4" 
clip-path="url(#breeze-static-checks-line-86)">-v</text><text 
class="breeze-static-checks-r1" x="207.4" y="2118.4" textLength="585.6" clip-p 
[...]
-</text><text class="breeze-static-checks-r5" x="0" y="2142.8" 
textLength="12.2" clip-path="url(#breeze-static-checks-line-87)">│</text><text 
class="breeze-static-checks-r4" x="24.4" y="2142.8" textLength="73.2" 
clip-path="url(#breeze-static-checks-line-87)">--help</text><text 
class="breeze-static-checks-r6" x="158.6" y="2142.8" textLength="24.4" 
clip-path="url(#breeze-static-checks-line-87)">-h</text><text 
class="breeze-static-checks-r1" x="207.4" y="2142.8" textLength="329.4" 
clip-path= [...]
-</text><text class="breeze-static-checks-r5" x="0" y="2167.2" 
textLength="1464" 
clip-path="url(#breeze-static-checks-line-88)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
 class="breeze-static-checks-r1" x="1464" y="2167.2" textLength="12.2" 
clip-path="url(#breeze-static-checks-line-88)">
+</text><text class="breeze-static-checks-r5" x="0" y="971.6" textLength="12.2" 
clip-path="url(#breeze-static-checks-line-39)">│</text><text 
class="breeze-static-checks-r7" x="451.4" y="971.6" textLength="988.2" 
clip-path="url(#breeze-static-checks-line-39)">check-urlparse-usage-in-code&#160;|&#160;check-usage-of-re2-over-re&#160;|&#160;check-xml&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text
 class="breeze-static-checks-r5" x="1451.8" y="971.6" textLength=" [...]
+</text><text class="breeze-static-checks-r5" x="0" y="996" textLength="12.2" 
clip-path="url(#breeze-static-checks-line-40)">│</text><text 
class="breeze-static-checks-r7" x="451.4" y="996" textLength="988.2" 
clip-path="url(#breeze-static-checks-line-40)">check-zip-file-is-not-committed&#160;|&#160;codespell&#160;|&#160;compile-ui-assets&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text
 class="breeze-static-checks-r5" x="1451 [...]
+</text><text class="breeze-static-checks-r5" x="0" y="1020.4" 
textLength="12.2" clip-path="url(#breeze-static-checks-line-41)">│</text><text 
class="breeze-static-checks-r7" x="451.4" y="1020.4" textLength="988.2" 
clip-path="url(#breeze-static-checks-line-41)">compile-ui-assets-dev&#160;|&#160;compile-www-assets&#160;|&#160;compile-www-assets-dev&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text
 class="breeze-static-checks-r5" x="1451.8" y="1020.4" [...]
+</text><text class="breeze-static-checks-r5" x="0" y="1044.8" 
textLength="12.2" clip-path="url(#breeze-static-checks-line-42)">│</text><text 
class="breeze-static-checks-r7" x="451.4" y="1044.8" textLength="988.2" 
clip-path="url(#breeze-static-checks-line-42)">create-missing-init-py-files-tests&#160;|&#160;debug-statements&#160;|&#160;detect-private-key&#160;|&#160;&#160;&#160;&#160;&#160;</text><text
 class="breeze-static-checks-r5" x="1451.8" y="1044.8" textLength="12.2" 
clip-path="url(# [...]
+</text><text class="breeze-static-checks-r5" x="0" y="1069.2" 
textLength="12.2" clip-path="url(#breeze-static-checks-line-43)">│</text><text 
class="breeze-static-checks-r7" x="451.4" y="1069.2" textLength="988.2" 
clip-path="url(#breeze-static-checks-line-43)">doctoc&#160;|&#160;end-of-file-fixer&#160;|&#160;fix-encoding-pragma&#160;|&#160;flynt&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<
 [...]
+</text><text class="breeze-static-checks-r5" x="0" y="1093.6" 
textLength="12.2" clip-path="url(#breeze-static-checks-line-44)">│</text><text 
class="breeze-static-checks-r7" x="451.4" y="1093.6" textLength="988.2" 
clip-path="url(#breeze-static-checks-line-44)">generate-airflow-diagrams&#160;|&#160;generate-openapi-spec&#160;|&#160;generate-pypi-readme&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text
 class="breeze-static-checks-r5" x="1451.8" y="1093.6" textLength="12.2" clip-p 
[...]
+</text><text class="breeze-static-checks-r5" x="0" y="1118" textLength="12.2" 
clip-path="url(#breeze-static-checks-line-45)">│</text><text 
class="breeze-static-checks-r7" x="451.4" y="1118" textLength="988.2" 
clip-path="url(#breeze-static-checks-line-45)">generate-volumes-for-sources&#160;|&#160;identity&#160;|&#160;insert-license&#160;|&#160;kubeconform&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text
 class="breeze-static-checks-r5" x="1451.8" y="1118" textLength [...]
+</text><text class="breeze-static-checks-r5" x="0" y="1142.4" 
textLength="12.2" clip-path="url(#breeze-static-checks-line-46)">│</text><text 
class="breeze-static-checks-r7" x="451.4" y="1142.4" textLength="988.2" 
clip-path="url(#breeze-static-checks-line-46)">lint-chart-schema&#160;|&#160;lint-css&#160;|&#160;lint-dockerfile&#160;|&#160;lint-helm-chart&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text
 class="breeze-static-checks- [...]
+</text><text class="breeze-static-checks-r5" x="0" y="1166.8" 
textLength="12.2" clip-path="url(#breeze-static-checks-line-47)">│</text><text 
class="breeze-static-checks-r7" x="451.4" y="1166.8" textLength="988.2" 
clip-path="url(#breeze-static-checks-line-47)">lint-json-schema&#160;|&#160;lint-markdown&#160;|&#160;lint-openapi&#160;|&#160;mixed-line-ending&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text
 class="breeze-static-checks-r5" x="1451.8"  [...]
+</text><text class="breeze-static-checks-r5" x="0" y="1191.2" 
textLength="12.2" clip-path="url(#breeze-static-checks-line-48)">│</text><text 
class="breeze-static-checks-r7" x="451.4" y="1191.2" textLength="988.2" 
clip-path="url(#breeze-static-checks-line-48)">mypy-airflow&#160;|&#160;mypy-dev&#160;|&#160;mypy-docs&#160;|&#160;mypy-providers&#160;|&#160;mypy-task-sdk&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text
 class="breeze-static-checks-r5" x="145 [...]
+</text><text class="breeze-static-checks-r5" x="0" y="1215.6" 
textLength="12.2" clip-path="url(#breeze-static-checks-line-49)">│</text><text 
class="breeze-static-checks-r7" x="451.4" y="1215.6" textLength="988.2" 
clip-path="url(#breeze-static-checks-line-49)">pretty-format-json&#160;|&#160;pylint&#160;|&#160;python-no-log-warn&#160;|&#160;replace-bad-characters&#160;|&#160;&#160;&#160;&#160;&#160;&#160;</text><text
 class="breeze-static-checks-r5" x="1451.8" y="1215.6" textLength="12.2" c [...]
+</text><text class="breeze-static-checks-r5" x="0" y="1240" textLength="12.2" 
clip-path="url(#breeze-static-checks-line-50)">│</text><text 
class="breeze-static-checks-r7" x="451.4" y="1240" textLength="988.2" 
clip-path="url(#breeze-static-checks-line-50)">rst-backticks&#160;|&#160;ruff&#160;|&#160;ruff-format&#160;|&#160;shellcheck&#160;|&#160;trailing-whitespace&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text
 class="breeze-static-checks-r5" x="1451.8" y="1 [...]
+</text><text class="breeze-static-checks-r5" x="0" y="1264.4" 
textLength="12.2" clip-path="url(#breeze-static-checks-line-51)">│</text><text 
class="breeze-static-checks-r7" x="451.4" y="1264.4" textLength="988.2" 
clip-path="url(#breeze-static-checks-line-51)">ts-compile-format-lint-ui&#160;|&#160;ts-compile-format-lint-www&#160;|&#160;update-black-version&#160;|&#160;&#160;</text><text
 class="breeze-static-checks-r5" x="1451.8" y="1264.4" textLength="12.2" 
clip-path="url(#breeze-static-c [...]
+</text><text class="breeze-static-checks-r5" x="0" y="1288.8" 
textLength="12.2" clip-path="url(#breeze-static-checks-line-52)">│</text><text 
class="breeze-static-checks-r7" x="451.4" y="1288.8" textLength="988.2" 
clip-path="url(#breeze-static-checks-line-52)">update-breeze-cmd-output&#160;|&#160;update-breeze-readme-config-hash&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text
 class="breeze-static-ch [...]
+</text><text class="breeze-static-checks-r5" x="0" y="1313.2" 
textLength="12.2" clip-path="url(#breeze-static-checks-line-53)">│</text><text 
class="breeze-static-checks-r7" x="451.4" y="1313.2" textLength="988.2" 
clip-path="url(#breeze-static-checks-line-53)">update-chart-dependencies&#160;|&#160;update-er-diagram&#160;|&#160;update-extras&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text
 class="breeze-static-ch [...]
+</text><text class="breeze-static-checks-r5" x="0" y="1337.6" 
textLength="12.2" clip-path="url(#breeze-static-checks-line-54)">│</text><text 
class="breeze-static-checks-r7" x="451.4" y="1337.6" textLength="988.2" 
clip-path="url(#breeze-static-checks-line-54)">update-in-the-wild-to-be-sorted&#160;|&#160;update-inlined-dockerfile-scripts&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text
 class="breeze-static-checks-r5" x="1451.8" y="1337.6" textLengt [...]
+</text><text class="breeze-static-checks-r5" x="0" y="1362" textLength="12.2" 
clip-path="url(#breeze-static-checks-line-55)">│</text><text 
class="breeze-static-checks-r7" x="451.4" y="1362" textLength="988.2" 
clip-path="url(#breeze-static-checks-line-55)">update-installed-providers-to-be-sorted&#160;|&#160;update-installers-and-pre-commit&#160;|&#160;&#160;&#160;&#160;&#160;</text><text
 class="breeze-static-checks-r5" x="1451.8" y="1362" textLength="12.2" 
clip-path="url(#breeze-static-ch [...]
+</text><text class="breeze-static-checks-r5" x="0" y="1386.4" 
textLength="12.2" clip-path="url(#breeze-static-checks-line-56)">│</text><text 
class="breeze-static-checks-r7" x="451.4" y="1386.4" textLength="988.2" 
clip-path="url(#breeze-static-checks-line-56)">update-local-yml-file&#160;|&#160;update-migration-references&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#
 [...]
+</text><text class="breeze-static-checks-r5" x="0" y="1410.8" 
textLength="12.2" clip-path="url(#breeze-static-checks-line-57)">│</text><text 
class="breeze-static-checks-r7" x="451.4" y="1410.8" textLength="988.2" 
clip-path="url(#breeze-static-checks-line-57)">update-openapi-spec-tags-to-be-sorted&#160;|&#160;update-providers-build-files&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text
 class="breeze-static-checks-r5" x="1451.8" y="1410.8" textLength="12 [...]
+</text><text class="breeze-static-checks-r5" x="0" y="1435.2" 
textLength="12.2" clip-path="url(#breeze-static-checks-line-58)">│</text><text 
class="breeze-static-checks-r7" x="451.4" y="1435.2" textLength="988.2" 
clip-path="url(#breeze-static-checks-line-58)">update-providers-dependencies&#160;|&#160;update-reproducible-source-date-epoch&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text
 class="breeze-static-checks-r5" x="1451.8" y="1435.2" textLength="12.2" c [...]
+</text><text class="breeze-static-checks-r5" x="0" y="1459.6" 
textLength="12.2" clip-path="url(#breeze-static-checks-line-59)">│</text><text 
class="breeze-static-checks-r7" x="451.4" y="1459.6" textLength="988.2" 
clip-path="url(#breeze-static-checks-line-59)">update-spelling-wordlist-to-be-sorted&#160;|&#160;update-supported-versions&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text
 class="breeze-static-checks-r5" x="1451.8" y="1459.6" [...]
+</text><text class="breeze-static-checks-r5" x="0" y="1484" textLength="12.2" 
clip-path="url(#breeze-static-checks-line-60)">│</text><text 
class="breeze-static-checks-r7" x="451.4" y="1484" textLength="988.2" 
clip-path="url(#breeze-static-checks-line-60)">update-vendored-in-k8s-json-schema&#160;|&#160;update-version&#160;|&#160;validate-operators-init&#160;|&#160;&#160;</text><text
 class="breeze-static-checks-r5" x="1451.8" y="1484" textLength="12.2" 
clip-path="url(#breeze-static-checks- [...]
+</text><text class="breeze-static-checks-r5" x="0" y="1508.4" 
textLength="12.2" clip-path="url(#breeze-static-checks-line-61)">│</text><text 
class="breeze-static-checks-r7" x="451.4" y="1508.4" textLength="988.2" 
clip-path="url(#breeze-static-checks-line-61)">yamllint&#160;|&#160;zizmor)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
 [...]
+</text><text class="breeze-static-checks-r5" x="0" y="1532.8" 
textLength="12.2" clip-path="url(#breeze-static-checks-line-62)">│</text><text 
class="breeze-static-checks-r4" x="24.4" y="1532.8" textLength="268.4" 
clip-path="url(#breeze-static-checks-line-62)">--show-diff-on-failure</text><text
 class="breeze-static-checks-r6" x="402.6" y="1532.8" textLength="24.4" 
clip-path="url(#breeze-static-checks-line-62)">-s</text><text 
class="breeze-static-checks-r1" x="451.4" y="1532.8" textLength=" [...]
+</text><text class="breeze-static-checks-r5" x="0" y="1557.2" 
textLength="12.2" clip-path="url(#breeze-static-checks-line-63)">│</text><text 
class="breeze-static-checks-r4" x="24.4" y="1557.2" textLength="292.8" 
clip-path="url(#breeze-static-checks-line-63)">--initialize-environment</text><text
 class="breeze-static-checks-r1" x="451.4" y="1557.2" textLength="549" 
clip-path="url(#breeze-static-checks-line-63)">Initialize&#160;environment&#160;before&#160;running&#160;checks.</text><text
 c [...]
+</text><text class="breeze-static-checks-r5" x="0" y="1581.6" 
textLength="12.2" clip-path="url(#breeze-static-checks-line-64)">│</text><text 
class="breeze-static-checks-r4" x="24.4" y="1581.6" textLength="353.8" 
clip-path="url(#breeze-static-checks-line-64)">--max-initialization-attempts</text><text
 class="breeze-static-checks-r1" x="451.4" y="1581.6" textLength="854" 
clip-path="url(#breeze-static-checks-line-64)">Maximum&#160;number&#160;of&#160;attempts&#160;to&#160;initialize&#160;env
 [...]
+</text><text class="breeze-static-checks-r5" x="0" y="1606" textLength="12.2" 
clip-path="url(#breeze-static-checks-line-65)">│</text><text 
class="breeze-static-checks-r7" x="451.4" y="1606" textLength="854" 
clip-path="url(#breeze-static-checks-line-65)">(INTEGER&#160;RANGE)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#
 [...]
+</text><text class="breeze-static-checks-r5" x="0" y="1630.4" 
textLength="12.2" clip-path="url(#breeze-static-checks-line-66)">│</text><text 
class="breeze-static-checks-r5" x="451.4" y="1630.4" textLength="854" 
clip-path="url(#breeze-static-checks-line-66)">[default:&#160;3;&#160;1&lt;=x&lt;=10]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#16
 [...]
+</text><text class="breeze-static-checks-r5" x="0" y="1654.8" 
textLength="1464" 
clip-path="url(#breeze-static-checks-line-67)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
 class="breeze-static-checks-r1" x="1464" y="1654.8" textLength="12.2" 
clip-path="url(#breeze-static-checks-line-67)">
+</text><text class="breeze-static-checks-r5" x="0" y="1679.2" 
textLength="24.4" clip-path="url(#breeze-static-checks-line-68)">╭─</text><text 
class="breeze-static-checks-r5" x="24.4" y="1679.2" textLength="463.6" 
clip-path="url(#breeze-static-checks-line-68)">&#160;Selecting&#160;files&#160;to&#160;run&#160;the&#160;checks&#160;on&#160;</text><text
 class="breeze-static-checks-r5" x="488" y="1679.2" textLength="951.6" 
clip-path="url(#breeze-static-checks-line-68)">──────────────────────── [...]
+</text><text class="breeze-static-checks-r5" x="0" y="1703.6" 
textLength="12.2" clip-path="url(#breeze-static-checks-line-69)">│</text><text 
class="breeze-static-checks-r4" x="24.4" y="1703.6" textLength="73.2" 
clip-path="url(#breeze-static-checks-line-69)">--file</text><text 
class="breeze-static-checks-r6" x="256.2" y="1703.6" textLength="24.4" 
clip-path="url(#breeze-static-checks-line-69)">-f</text><text 
class="breeze-static-checks-r1" x="305" y="1703.6" textLength="427" 
clip-path="url [...]
+</text><text class="breeze-static-checks-r5" x="0" y="1728" textLength="12.2" 
clip-path="url(#breeze-static-checks-line-70)">│</text><text 
class="breeze-static-checks-r4" x="24.4" y="1728" textLength="134.2" 
clip-path="url(#breeze-static-checks-line-70)">--all-files</text><text 
class="breeze-static-checks-r6" x="256.2" y="1728" textLength="24.4" 
clip-path="url(#breeze-static-checks-line-70)">-a</text><text 
class="breeze-static-checks-r1" x="305" y="1728" textLength="292.8" 
clip-path="url [...]
+</text><text class="breeze-static-checks-r5" x="0" y="1752.4" 
textLength="12.2" clip-path="url(#breeze-static-checks-line-71)">│</text><text 
class="breeze-static-checks-r4" x="24.4" y="1752.4" textLength="146.4" 
clip-path="url(#breeze-static-checks-line-71)">--commit-ref</text><text 
class="breeze-static-checks-r6" x="256.2" y="1752.4" textLength="24.4" 
clip-path="url(#breeze-static-checks-line-71)">-r</text><text 
class="breeze-static-checks-r1" x="305" y="1752.4" textLength="1134.6" clip 
[...]
+</text><text class="breeze-static-checks-r5" x="0" y="1776.8" 
textLength="12.2" clip-path="url(#breeze-static-checks-line-72)">│</text><text 
class="breeze-static-checks-r1" x="305" y="1776.8" textLength="183" 
clip-path="url(#breeze-static-checks-line-72)">exclusive&#160;with&#160;</text><text
 class="breeze-static-checks-r4" x="488" y="1776.8" textLength="158.6" 
clip-path="url(#breeze-static-checks-line-72)">--last-commit</text><text 
class="breeze-static-checks-r1" x="646.6" y="1776.8" te [...]
+</text><text class="breeze-static-checks-r5" x="0" y="1801.2" 
textLength="12.2" clip-path="url(#breeze-static-checks-line-73)">│</text><text 
class="breeze-static-checks-r7" x="305" y="1801.2" textLength="1134.6" 
clip-path="url(#breeze-static-checks-line-73)">(TEXT)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160
 [...]
+</text><text class="breeze-static-checks-r5" x="0" y="1825.6" 
textLength="12.2" clip-path="url(#breeze-static-checks-line-74)">│</text><text 
class="breeze-static-checks-r4" x="24.4" y="1825.6" textLength="158.6" 
clip-path="url(#breeze-static-checks-line-74)">--last-commit</text><text 
class="breeze-static-checks-r6" x="256.2" y="1825.6" textLength="24.4" 
clip-path="url(#breeze-static-checks-line-74)">-c</text><text 
class="breeze-static-checks-r1" x="305" y="1825.6" textLength="793" clip-p [...]
+</text><text class="breeze-static-checks-r5" x="0" y="1850" textLength="12.2" 
clip-path="url(#breeze-static-checks-line-75)">│</text><text 
class="breeze-static-checks-r4" x="24.4" y="1850" textLength="207.4" 
clip-path="url(#breeze-static-checks-line-75)">--only-my-changes</text><text 
class="breeze-static-checks-r6" x="256.2" y="1850" textLength="24.4" 
clip-path="url(#breeze-static-checks-line-75)">-m</text><text 
class="breeze-static-checks-r1" x="305" y="1850" textLength="1134.6" clip-pa 
[...]
+</text><text class="breeze-static-checks-r5" x="0" y="1874.4" 
textLength="12.2" clip-path="url(#breeze-static-checks-line-76)">│</text><text 
class="breeze-static-checks-r1" x="305" y="1874.4" textLength="1134.6" 
clip-path="url(#breeze-static-checks-line-76)">branch&#160;and&#160;HEAD&#160;of&#160;your&#160;branch.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1
 [...]
+</text><text class="breeze-static-checks-r5" x="0" y="1898.8" 
textLength="1464" 
clip-path="url(#breeze-static-checks-line-77)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
 class="breeze-static-checks-r1" x="1464" y="1898.8" textLength="12.2" 
clip-path="url(#breeze-static-checks-line-77)">
+</text><text class="breeze-static-checks-r5" x="0" y="1923.2" 
textLength="24.4" clip-path="url(#breeze-static-checks-line-78)">╭─</text><text 
class="breeze-static-checks-r5" x="24.4" y="1923.2" textLength="463.6" 
clip-path="url(#breeze-static-checks-line-78)">&#160;Building&#160;image&#160;before&#160;running&#160;checks&#160;</text><text
 class="breeze-static-checks-r5" x="488" y="1923.2" textLength="951.6" 
clip-path="url(#breeze-static-checks-line-78)">──────────────────────────────────
 [...]
+</text><text class="breeze-static-checks-r5" x="0" y="1947.6" 
textLength="12.2" clip-path="url(#breeze-static-checks-line-79)">│</text><text 
class="breeze-static-checks-r4" x="24.4" y="1947.6" textLength="317.2" 
clip-path="url(#breeze-static-checks-line-79)">--skip-image-upgrade-check</text><text
 class="breeze-static-checks-r1" x="414.8" y="1947.6" textLength="536.8" 
clip-path="url(#breeze-static-checks-line-79)">Skip&#160;checking&#160;if&#160;the&#160;CI&#160;image&#160;is&#160;up&#160
 [...]
+</text><text class="breeze-static-checks-r5" x="0" y="1972" textLength="12.2" 
clip-path="url(#breeze-static-checks-line-80)">│</text><text 
class="breeze-static-checks-r4" x="24.4" y="1972" textLength="158.6" 
clip-path="url(#breeze-static-checks-line-80)">--force-build</text><text 
class="breeze-static-checks-r1" x="414.8" y="1972" textLength="707.6" 
clip-path="url(#breeze-static-checks-line-80)">Force&#160;image&#160;build&#160;no&#160;matter&#160;if&#160;it&#160;is&#160;determined&#160;a
 [...]
+</text><text class="breeze-static-checks-r5" x="0" y="1996.4" 
textLength="12.2" clip-path="url(#breeze-static-checks-line-81)">│</text><text 
class="breeze-static-checks-r4" x="24.4" y="1996.4" textLength="231.8" 
clip-path="url(#breeze-static-checks-line-81)">--github-repository</text><text 
class="breeze-static-checks-r6" x="366" y="1996.4" textLength="24.4" 
clip-path="url(#breeze-static-checks-line-81)">-g</text><text 
class="breeze-static-checks-r1" x="414.8" y="1996.4" textLength="585.6 [...]
+</text><text class="breeze-static-checks-r5" x="0" y="2020.8" 
textLength="12.2" clip-path="url(#breeze-static-checks-line-82)">│</text><text 
class="breeze-static-checks-r4" x="24.4" y="2020.8" textLength="109.8" 
clip-path="url(#breeze-static-checks-line-82)">--builder</text><text 
class="breeze-static-checks-r1" x="414.8" y="2020.8" textLength="756.4" 
clip-path="url(#breeze-static-checks-line-82)">Buildx&#160;builder&#160;used&#160;to&#160;perform&#160;`docker&#160;buildx&#160;build`&#160
 [...]
+</text><text class="breeze-static-checks-r5" x="0" y="2045.2" 
textLength="12.2" clip-path="url(#breeze-static-checks-line-83)">│</text><text 
class="breeze-static-checks-r5" x="414.8" y="2045.2" textLength="756.4" 
clip-path="url(#breeze-static-checks-line-83)">[default:&#160;autodetect]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#
 [...]
+</text><text class="breeze-static-checks-r5" x="0" y="2069.6" 
textLength="1464" 
clip-path="url(#breeze-static-checks-line-84)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
 class="breeze-static-checks-r1" x="1464" y="2069.6" textLength="12.2" 
clip-path="url(#breeze-static-checks-line-84)">
+</text><text class="breeze-static-checks-r5" x="0" y="2094" textLength="24.4" 
clip-path="url(#breeze-static-checks-line-85)">╭─</text><text 
class="breeze-static-checks-r5" x="24.4" y="2094" textLength="195.2" 
clip-path="url(#breeze-static-checks-line-85)">&#160;Common&#160;options&#160;</text><text
 class="breeze-static-checks-r5" x="219.6" y="2094" textLength="1220" 
clip-path="url(#breeze-static-checks-line-85)">────────────────────────────────────────────────────────────────────────────
 [...]
+</text><text class="breeze-static-checks-r5" x="0" y="2118.4" 
textLength="12.2" clip-path="url(#breeze-static-checks-line-86)">│</text><text 
class="breeze-static-checks-r4" x="24.4" y="2118.4" textLength="109.8" 
clip-path="url(#breeze-static-checks-line-86)">--dry-run</text><text 
class="breeze-static-checks-r6" x="158.6" y="2118.4" textLength="24.4" 
clip-path="url(#breeze-static-checks-line-86)">-D</text><text 
class="breeze-static-checks-r1" x="207.4" y="2118.4" textLength="719.8" clip-p 
[...]
+</text><text class="breeze-static-checks-r5" x="0" y="2142.8" 
textLength="12.2" clip-path="url(#breeze-static-checks-line-87)">│</text><text 
class="breeze-static-checks-r4" x="24.4" y="2142.8" textLength="109.8" 
clip-path="url(#breeze-static-checks-line-87)">--verbose</text><text 
class="breeze-static-checks-r6" x="158.6" y="2142.8" textLength="24.4" 
clip-path="url(#breeze-static-checks-line-87)">-v</text><text 
class="breeze-static-checks-r1" x="207.4" y="2142.8" textLength="585.6" clip-p 
[...]
+</text><text class="breeze-static-checks-r5" x="0" y="2167.2" 
textLength="12.2" clip-path="url(#breeze-static-checks-line-88)">│</text><text 
class="breeze-static-checks-r4" x="24.4" y="2167.2" textLength="73.2" 
clip-path="url(#breeze-static-checks-line-88)">--help</text><text 
class="breeze-static-checks-r6" x="158.6" y="2167.2" textLength="24.4" 
clip-path="url(#breeze-static-checks-line-88)">-h</text><text 
class="breeze-static-checks-r1" x="207.4" y="2167.2" textLength="329.4" 
clip-path= [...]
+</text><text class="breeze-static-checks-r5" x="0" y="2191.6" 
textLength="1464" 
clip-path="url(#breeze-static-checks-line-89)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
 class="breeze-static-checks-r1" x="1464" y="2191.6" textLength="12.2" 
clip-path="url(#breeze-static-checks-line-89)">
 </text>
     </g>
     </g>
diff --git a/dev/breeze/doc/images/output_static-checks.txt 
b/dev/breeze/doc/images/output_static-checks.txt
index d120b5b0839..8f1ea4ed3a7 100644
--- a/dev/breeze/doc/images/output_static-checks.txt
+++ b/dev/breeze/doc/images/output_static-checks.txt
@@ -1 +1 @@
-bc496446ce0ed673262a2515daf88da9
+16b7f3c6c23d11208195ebda9a569fe4
diff --git a/dev/breeze/src/airflow_breeze/pre_commit_ids.py 
b/dev/breeze/src/airflow_breeze/pre_commit_ids.py
index a5a75cd8fad..8230e0a1bf7 100644
--- a/dev/breeze/src/airflow_breeze/pre_commit_ids.py
+++ b/dev/breeze/src/airflow_breeze/pre_commit_ids.py
@@ -91,6 +91,7 @@ PRE_COMMIT_LIST = [
     "check-urlparse-usage-in-code",
     "check-usage-of-re2-over-re",
     "check-xml",
+    "check-zip-file-is-not-committed",
     "codespell",
     "compile-ui-assets",
     "compile-ui-assets-dev",
diff --git a/scripts/ci/pre_commit/check_init_in_tests.py 
b/scripts/ci/pre_commit/check_init_in_tests.py
index a9c6dee2379..6c3e3a538a9 100755
--- a/scripts/ci/pre_commit/check_init_in_tests.py
+++ b/scripts/ci/pre_commit/check_init_in_tests.py
@@ -42,7 +42,9 @@ added = False
 if __name__ == "__main__":
     for dirname, sub_dirs, _ in os.walk(ROOT_DIR / "tests"):
         dir = Path(dirname)
-        sub_dirs[:] = [subdir for subdir in sub_dirs if subdir not in 
{"__pycache__", "test_logs"}]
+        sub_dirs[:] = [
+            subdir for subdir in sub_dirs if subdir not in {"__pycache__", 
"test_logs", "test_zip"}
+        ]
         for sub_dir in sub_dirs:
             init_py_path = dir / sub_dir / "__init__.py"
             if not init_py_path.exists():
diff --git a/tests/conftest.py b/tests/conftest.py
index 1db7027f13c..d1dbd6a3a4b 100644
--- a/tests/conftest.py
+++ b/tests/conftest.py
@@ -20,16 +20,15 @@ import json
 import logging
 import os
 import sys
+import zipfile
 from contextlib import contextmanager
+from pathlib import Path
 from typing import TYPE_CHECKING
 
 import pytest
 
 from tests_common.test_utils.log_handlers import non_pytest_handlers
 
-if TYPE_CHECKING:
-    from pathlib import Path
-
 # We should set these before loading _any_ of the rest of airflow so that the
 # unit test mode config is set as early as possible.
 assert "airflow" not in sys.modules, "No airflow module can be imported before 
these lines"
@@ -133,6 +132,19 @@ def configure_testing_dag_bundle():
     return _config_bundle
 
 
[email protected]
+def test_zip_path(tmp_path: Path):
+    TEST_DAGS_FOLDER = Path(__file__).parent / "dags"
+    test_zip_folder = TEST_DAGS_FOLDER / "test_zip"
+    zipped = tmp_path / "test_zip.zip"
+    with zipfile.ZipFile(zipped, "w") as zf:
+        for root, _, files in os.walk(test_zip_folder):
+            for file in files:
+                zf.write(os.path.join(root, file), 
os.path.relpath(os.path.join(root, file), test_zip_folder))
+
+    return os.fspath(zipped)
+
+
 if TYPE_CHECKING:
     # Static checkers do not know about pytest fixtures' types and return,
     # In case if them distributed through third party packages.
diff --git a/tests/dag_processing/test_manager.py 
b/tests/dag_processing/test_manager.py
index e5cef2e8033..1149b776c53 100644
--- a/tests/dag_processing/test_manager.py
+++ b/tests/dag_processing/test_manager.py
@@ -623,17 +623,16 @@ class TestDagFileProcessorManager:
         )
 
     def test_refresh_dags_dir_doesnt_delete_zipped_dags(
-        self, tmp_path, testing_dag_bundle, configure_testing_dag_bundle
+        self, tmp_path, testing_dag_bundle, configure_testing_dag_bundle, 
test_zip_path
     ):
         """Test DagFileProcessorManager._refresh_dag_dir method"""
         dagbag = DagBag(dag_folder=tmp_path, include_examples=False)
-        zipped_dag_path = os.path.join(TEST_DAGS_FOLDER, "test_zip.zip")
-        dagbag.process_file(zipped_dag_path)
+        dagbag.process_file(test_zip_path)
         dag = dagbag.get_dag("test_zip_dag")
         DAG.bulk_write_to_db("testing", None, [dag])
         SerializedDagModel.write_dag(dag, bundle_name="testing")
 
-        with configure_testing_dag_bundle(zipped_dag_path):
+        with configure_testing_dag_bundle(test_zip_path):
             manager = DagFileProcessorManager(max_runs=1)
             manager.run()
 
@@ -646,12 +645,12 @@ class TestDagFileProcessorManager:
 
     @pytest.mark.usefixtures("testing_dag_bundle")
     def test_refresh_dags_dir_deactivates_deleted_zipped_dags(
-        self, session, tmp_path, configure_testing_dag_bundle
+        self, session, tmp_path, configure_testing_dag_bundle, test_zip_path
     ):
         """Test DagFileProcessorManager._refresh_dag_dir method"""
         dag_id = "test_zip_dag"
         filename = "test_zip.zip"
-        source_location = os.path.join(TEST_DAGS_FOLDER, filename)
+        source_location = test_zip_path
         bundle_path = Path(tmp_path, 
"test_refresh_dags_dir_deactivates_deleted_zipped_dags")
         bundle_path.mkdir(exist_ok=True)
         zip_dag_path = bundle_path / filename
diff --git a/tests/dags/test_dag_warnings.zip b/tests/dags/test_dag_warnings.zip
deleted file mode 100644
index faba823451b..00000000000
Binary files a/tests/dags/test_dag_warnings.zip and /dev/null differ
diff --git a/tests/dags/test_zip.zip b/tests/dags/test_zip.zip
deleted file mode 100644
index 9b10cca2257..00000000000
Binary files a/tests/dags/test_zip.zip and /dev/null differ
diff --git a/tests/dags/test_zip/file_no_airflow_dag.py 
b/tests/dags/test_zip/file_no_airflow_dag.py
new file mode 100644
index 00000000000..13a83393a91
--- /dev/null
+++ b/tests/dags/test_zip/file_no_airflow_dag.py
@@ -0,0 +1,16 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
diff --git a/tests/dags/test_zip/test_zip.py b/tests/dags/test_zip/test_zip.py
new file mode 100644
index 00000000000..27111006d9c
--- /dev/null
+++ b/tests/dags/test_zip/test_zip.py
@@ -0,0 +1,33 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+from __future__ import annotations
+
+from datetime import datetime
+
+from airflow.models import DAG
+from airflow.providers.standard.operators.empty import EmptyOperator
+
+DEFAULT_DATE = datetime(2030, 1, 1)
+
+# DAG tests backfill with pooled tasks
+# Previously backfill would queue the task but never run it
+dag1 = DAG(dag_id="test_zip_dag", start_date=DEFAULT_DATE, schedule="@daily")
+dag1_task1 = EmptyOperator(task_id="dummy", dag=dag1, owner="airflow")
+
+with DAG(dag_id="test_zip_autoregister", schedule=None, 
start_date=DEFAULT_DATE):
+    EmptyOperator(task_id="noop")
diff --git a/tests/dags/test_zip/test_zip_module/__init__.py 
b/tests/dags/test_zip/test_zip_module/__init__.py
new file mode 100644
index 00000000000..13a83393a91
--- /dev/null
+++ b/tests/dags/test_zip/test_zip_module/__init__.py
@@ -0,0 +1,16 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
diff --git a/tests/dags/test_zip/test_zip_module/test.py 
b/tests/dags/test_zip/test_zip_module/test.py
new file mode 100644
index 00000000000..460164d51d0
--- /dev/null
+++ b/tests/dags/test_zip/test_zip_module/test.py
@@ -0,0 +1,21 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+from __future__ import annotations
+
+
+def say_hello():
+    print("Hello")
diff --git a/tests/models/test_dagbag.py b/tests/models/test_dagbag.py
index 62f5e65037a..b3946546424 100644
--- a/tests/models/test_dagbag.py
+++ b/tests/models/test_dagbag.py
@@ -191,13 +191,12 @@ class TestDagBag:
         )
         assert dagbag.dags == dags_in_bag  # Should not change.
 
-    def test_zip_skip_log(self, caplog):
+    def test_zip_skip_log(self, caplog, test_zip_path):
         """
         test the loading of a DAG from within a zip file that skips another 
file because
         it doesn't have "airflow" and "DAG"
         """
         caplog.set_level(logging.INFO)
-        test_zip_path = os.path.join(TEST_DAGS_FOLDER, "test_zip.zip")
         dagbag = DagBag(dag_folder=test_zip_path, include_examples=False)
 
         assert dagbag.has_logged
@@ -206,13 +205,13 @@ class TestDagBag:
             "assumed to contain no DAGs. Skipping." in caplog.text
         )
 
-    def test_zip(self, tmp_path):
+    def test_zip(self, tmp_path, test_zip_path):
         """
         test the loading of a DAG within a zip file that includes dependencies
         """
         syspath_before = deepcopy(sys.path)
         dagbag = DagBag(dag_folder=os.fspath(tmp_path), include_examples=False)
-        dagbag.process_file(os.path.join(TEST_DAGS_FOLDER, "test_zip.zip"))
+        dagbag.process_file(test_zip_path)
         assert dagbag.get_dag("test_zip_dag")
         assert sys.path == syspath_before  # sys.path doesn't change
         assert not dagbag.import_errors
@@ -357,14 +356,6 @@ class TestDagBag:
     @pytest.mark.parametrize(
         ("file_to_load", "expected"),
         (
-            pytest.param(
-                TEST_DAGS_FOLDER / "test_zip.zip",
-                {
-                    "test_zip_dag": "dags/test_zip.zip/test_zip.py",
-                    "test_zip_autoregister": "dags/test_zip.zip/test_zip.py",
-                },
-                id="test_zip.zip",
-            ),
             pytest.param(
                 pathlib.Path(example_dags_folder) / "example_bash_operator.py",
                 {"example_bash_operator": 
"airflow/example_dags/example_bash_operator.py"},
@@ -380,6 +371,26 @@ class TestDagBag:
             assert dag, f"{dag_id} was bagged"
             assert dag.fileloc.endswith(path)
 
+    @pytest.mark.parametrize(
+        ("expected"),
+        (
+            pytest.param(
+                {
+                    "test_zip_dag": "test_zip.zip/test_zip.py",
+                    "test_zip_autoregister": "test_zip.zip/test_zip.py",
+                },
+                id="test_zip.zip",
+            ),
+        ),
+    )
+    def test_get_zip_dag_registration(self, test_zip_path, expected):
+        dagbag = DagBag(dag_folder=os.devnull, include_examples=False)
+        dagbag.process_file(test_zip_path)
+        for dag_id, path in expected.items():
+            dag = dagbag.get_dag(dag_id)
+            assert dag, f"{dag_id} was bagged"
+            assert 
dag.fileloc.endswith(f"{pathlib.Path(test_zip_path).parent}/{path}")
+
     def test_dag_registration_with_failure(self):
         dagbag = DagBag(dag_folder=os.devnull, include_examples=False)
         found = dagbag.process_file(str(TEST_DAGS_FOLDER / 
"test_invalid_dup_task.py"))
@@ -431,12 +442,12 @@ class TestDagBag:
         assert dagbag.process_file_calls == 2
 
     @patch.object(DagModel, "get_current")
-    def test_refresh_packaged_dag(self, mock_dagmodel):
+    def test_refresh_packaged_dag(self, mock_dagmodel, test_zip_path):
         """
         Test that we can refresh a packaged DAG
         """
         dag_id = "test_zip_dag"
-        fileloc = os.path.realpath(os.path.join(TEST_DAGS_FOLDER, 
"test_zip.zip/test_zip.py"))
+        fileloc = os.path.realpath(os.path.join(test_zip_path, "test_zip.py"))
 
         mock_dagmodel.return_value = DagModel()
         mock_dagmodel.return_value.last_expired = 
datetime.max.replace(tzinfo=timezone.utc)
@@ -450,7 +461,7 @@ class TestDagBag:
                     _TestDagBag.process_file_calls += 1
                 return super().process_file(filepath, only_if_updated, 
safe_mode)
 
-        dagbag = _TestDagBag(dag_folder=os.path.realpath(TEST_DAGS_FOLDER), 
include_examples=False)
+        dagbag = _TestDagBag(dag_folder=os.path.realpath(test_zip_path), 
include_examples=False)
 
         assert dagbag.process_file_calls == 1
         dag = dagbag.get_dag(dag_id)
@@ -877,13 +888,20 @@ with airflow.DAG(
             assert dag_file not in dagbag.captured_warnings
             assert dagbag.dagbag_stats[0].warning_num == 0
 
-    def test_dabgag_captured_warnings_zip(self):
-        dag_file = os.path.join(TEST_DAGS_FOLDER, "test_dag_warnings.zip")
-        in_zip_dag_file = f"{dag_file}/test_dag_warnings.py"
-        dagbag = DagBag(dag_folder=dag_file, include_examples=False)
+    @pytest.fixture
+    def warning_zipped_dag_path(self, tmp_path: pathlib.Path) -> str:
+        warnings_dag_file = TEST_DAGS_FOLDER / "test_dag_warnings.py"
+        zipped = tmp_path / "test_dag_warnings.zip"
+        with zipfile.ZipFile(zipped, "w") as zf:
+            zf.write(warnings_dag_file, warnings_dag_file.name)
+        return os.fspath(zipped)
+
+    def test_dabgag_captured_warnings_zip(self, warning_zipped_dag_path: str):
+        in_zip_dag_file = f"{warning_zipped_dag_path}/test_dag_warnings.py"
+        dagbag = DagBag(dag_folder=warning_zipped_dag_path, 
include_examples=False)
         assert len(dagbag.dag_ids) == 1
-        assert dag_file in dagbag.captured_warnings
-        captured_warnings = dagbag.captured_warnings[dag_file]
+        assert warning_zipped_dag_path in dagbag.captured_warnings
+        captured_warnings = dagbag.captured_warnings[warning_zipped_dag_path]
         assert len(captured_warnings) == 2
         assert captured_warnings[0] == (f"{in_zip_dag_file}:47: 
DeprecationWarning: Deprecated Parameter")
         assert captured_warnings[1] == f"{in_zip_dag_file}:49: UserWarning: 
Some Warning"
diff --git a/tests/utils/test_file.py b/tests/utils/test_file.py
index 6b5b5b55004..411ced27dda 100644
--- a/tests/utils/test_file.py
+++ b/tests/utils/test_file.py
@@ -88,8 +88,8 @@ class TestOpenMaybeZipped:
             open_maybe_zipped(path)
             mock_file.assert_called_once_with(path, mode="r")
 
-    def test_open_maybe_zipped_archive(self):
-        test_file_path = os.path.join(TEST_DAGS_FOLDER, "test_zip.zip", 
"test_zip.py")
+    def test_open_maybe_zipped_archive(self, test_zip_path):
+        test_file_path = os.path.join(test_zip_path, "test_zip.py")
         with open_maybe_zipped(test_file_path, "r") as test_file:
             content = test_file.read()
         assert isinstance(content, str)
@@ -219,7 +219,7 @@ class TestListPyFilesPath:
 
         assert len(modules) == 0
 
-    def test_list_py_file_paths(self):
+    def test_list_py_file_paths(self, test_zip_path):
         detected_files = set()
         expected_files = set()
         # No_dags is empty, _invalid_ is ignored by .airflowignore
@@ -234,6 +234,8 @@ class TestListPyFilesPath:
             "test_invalid_param4.py",
             "test_nested_dag.py",
             "test_imports.py",
+            "file_no_airflow_dag.py",  # no_dag test case in test_zip folder
+            "test.py",  # no_dag test case in test_zip_module folder
             "__init__.py",
         }
         for root, _, files in os.walk(TEST_DAG_FOLDER):

Reply via email to