This is an automated email from the ASF dual-hosted git repository.
potiuk 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 84235a433f pre-commit: add hook to sort `installed_providers.txt`
(#29219)
84235a433f is described below
commit 84235a433f94b5b6c29af0a07cdb34c50ed773e0
Author: John Bampton <[email protected]>
AuthorDate: Mon Jan 30 02:37:50 2023 +1000
pre-commit: add hook to sort `installed_providers.txt` (#29219)
---
.pre-commit-config.yaml | 7 ++
STATIC_CODE_CHECKS.rst | 2 +
dev/breeze/src/airflow_breeze/pre_commit_ids.py | 1 +
images/breeze/output-commands-hash.txt | 2 +-
images/breeze/output_static-checks.svg | 114 +++++++++++----------
scripts/ci/installed_providers.txt | 1 -
.../pre_commit_sort_installed_providers.py | 45 ++++++++
7 files changed, 115 insertions(+), 57 deletions(-)
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index 8a14b1642a..04524d86d7 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -571,6 +571,13 @@ repos:
files: ^\.pre-commit-config\.yaml$|^INTHEWILD\.md$
pass_filenames: false
require_serial: true
+ - id: update-installed-providers-to-be-sorted
+ name: Sort alphabetically and uniquify installed_providers.txt
+ entry: ./scripts/ci/pre_commit/pre_commit_sort_installed_providers.py
+ language: python
+ files:
^\.pre-commit-config\.yaml$|^scripts/ci/installed_providers\.txt$
+ pass_filenames: false
+ require_serial: true
- id: update-spelling-wordlist-to-be-sorted
name: Sort alphabetically and uniquify spelling_wordlist.txt
entry: ./scripts/ci/pre_commit/pre_commit_sort_spelling_wordlist.py
diff --git a/STATIC_CODE_CHECKS.rst b/STATIC_CODE_CHECKS.rst
index 7bbac8ceb9..56d244495b 100644
--- a/STATIC_CODE_CHECKS.rst
+++ b/STATIC_CODE_CHECKS.rst
@@ -313,6 +313,8 @@ require Breeze Docker image to be build locally.
+-----------------------------------------------------------+------------------------------------------------------------------+---------+
| update-inlined-dockerfile-scripts | Inline
Dockerfile and Dockerfile.ci scripts | |
+-----------------------------------------------------------+------------------------------------------------------------------+---------+
+| update-installed-providers-to-be-sorted | Sort
alphabetically and uniquify installed_providers.txt | |
++-----------------------------------------------------------+------------------------------------------------------------------+---------+
| update-local-yml-file | Update mounts in
the local yml file | |
+-----------------------------------------------------------+------------------------------------------------------------------+---------+
| update-migration-references | Update migration
ref doc | * |
diff --git a/dev/breeze/src/airflow_breeze/pre_commit_ids.py
b/dev/breeze/src/airflow_breeze/pre_commit_ids.py
index 73effc9a26..6bf5931a13 100644
--- a/dev/breeze/src/airflow_breeze/pre_commit_ids.py
+++ b/dev/breeze/src/airflow_breeze/pre_commit_ids.py
@@ -105,6 +105,7 @@ PRE_COMMIT_LIST = [
"update-extras",
"update-in-the-wild-to-be-sorted",
"update-inlined-dockerfile-scripts",
+ "update-installed-providers-to-be-sorted",
"update-local-yml-file",
"update-migration-references",
"update-providers-dependencies",
diff --git a/images/breeze/output-commands-hash.txt
b/images/breeze/output-commands-hash.txt
index 7f5a635276..a8bc59f0c1 100644
--- a/images/breeze/output-commands-hash.txt
+++ b/images/breeze/output-commands-hash.txt
@@ -55,7 +55,7 @@ setup:version:123b462a421884dc2320ffc5e54b2478
setup:56a2ef337c354362760d247df5d05365
shell:76e0f530b7af514a2aad3032b6516c46
start-airflow:06d4aeb5f1b65f6b975f3f915558d0b3
-static-checks:d20293484c293d721728713350a23b00
+static-checks:fa97fa8cd4c47b291d95fdd30e44392d
stop:8969537ccdd799f692ccb8600a7bbed6
testing:docker-compose-tests:b86c044b24138af0659a05ed6331576c
testing:helm-tests:94a442e7f3f63b34c4831a84d165690a
diff --git a/images/breeze/output_static-checks.svg
b/images/breeze/output_static-checks.svg
index 1240cafa68..6a13e45622 100644
--- a/images/breeze/output_static-checks.svg
+++ b/images/breeze/output_static-checks.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 1367.6"
xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 1392.0"
xmlns="http://www.w3.org/2000/svg">
<!-- Generated with Rich https://www.textualize.io -->
<style>
@@ -35,15 +35,15 @@
.breeze-static-checks-r1 { fill: #c5c8c6;font-weight: bold }
.breeze-static-checks-r2 { fill: #c5c8c6 }
.breeze-static-checks-r3 { fill: #d0b344;font-weight: bold }
-.breeze-static-checks-r4 { fill: #868887 }
-.breeze-static-checks-r5 { fill: #68a0b3;font-weight: bold }
+.breeze-static-checks-r4 { fill: #68a0b3;font-weight: bold }
+.breeze-static-checks-r5 { fill: #868887 }
.breeze-static-checks-r6 { fill: #98a84b;font-weight: bold }
.breeze-static-checks-r7 { fill: #8d7b39 }
</style>
<defs>
<clipPath id="breeze-static-checks-clip-terminal">
- <rect x="0" y="0" width="1463.0" height="1316.6" />
+ <rect x="0" y="0" width="1463.0" height="1341.0" />
</clipPath>
<clipPath id="breeze-static-checks-line-0">
<rect x="0" y="1.5" width="1464" height="24.65"/>
@@ -204,9 +204,12 @@
<clipPath id="breeze-static-checks-line-52">
<rect x="0" y="1270.3" width="1464" height="24.65"/>
</clipPath>
+<clipPath id="breeze-static-checks-line-53">
+ <rect x="0" y="1294.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="1365.6" rx="8"/><text
class="breeze-static-checks-title" fill="#c5c8c6" text-anchor="middle" x="740"
y="27">Command: static-checks</text>
+ <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1"
x="1" y="1" width="1480" height="1390" rx="8"/><text
class="breeze-static-checks-title" fill="#c5c8c6" text-anchor="middle" x="740"
y="27">Command: 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"/>
@@ -217,59 +220,60 @@
<g class="breeze-static-checks-matrix">
<text class="breeze-static-checks-r2" x="1464" y="20" textLength="12.2"
clip-path="url(#breeze-static-checks-line-0)">
-</text><text class="breeze-static-checks-r3" x="12.2" y="44.4"
textLength="85.4"
clip-path="url(#breeze-static-checks-line-1)">Usage: </text><text
class="breeze-static-checks-r1" x="97.6" y="44.4" textLength="610"
clip-path="url(#breeze-static-checks-line-1)">breeze static-checks [OPTIONS] [PRECOMMIT_ARGS]...</text><text
class="breeze-static-checks-r2" x="1464" y="44.4" textLength="12.2"
clip-path="url(#breeze-static-checks-line-1)">
+</text><text class="breeze-static-checks-r3" x="12.2" y="44.4"
textLength="85.4"
clip-path="url(#breeze-static-checks-line-1)">Usage: </text><text
class="breeze-static-checks-r1" x="97.6" y="44.4" textLength="268.4"
clip-path="url(#breeze-static-checks-line-1)">breeze static-checks [</text><text
class="breeze-static-checks-r4" x="366" y="44.4" textLength="85.4"
clip-path="url(#breeze-static-checks-line-1)">OPTIONS</text><text
class="breeze-static-checks-r1" x="451.4" y="44 [...]
</text><text class="breeze-static-checks-r2" x="1464" y="68.8"
textLength="12.2" clip-path="url(#breeze-static-checks-line-2)">
</text><text class="breeze-static-checks-r2" x="12.2" y="93.2"
textLength="219.6"
clip-path="url(#breeze-static-checks-line-3)">Run static checks.</text><text
class="breeze-static-checks-r2" x="1464" y="93.2" textLength="12.2"
clip-path="url(#breeze-static-checks-line-3)">
</text><text class="breeze-static-checks-r2" x="1464" y="117.6"
textLength="12.2" clip-path="url(#breeze-static-checks-line-4)">
-</text><text class="breeze-static-checks-r4" x="0" y="142" textLength="24.4"
clip-path="url(#breeze-static-checks-line-5)">╭─</text><text
class="breeze-static-checks-r4" x="24.4" y="142" textLength="219.6"
clip-path="url(#breeze-static-checks-line-5)"> Pre-commit flags </text><text
class="breeze-static-checks-r4" x="244" y="142" textLength="1195.6"
clip-path="url(#breeze-static-checks-line-5)">────────────────────────────────────────────────────────────────────────────────
[...]
-</text><text class="breeze-static-checks-r4" x="0" y="166.4" textLength="12.2"
clip-path="url(#breeze-static-checks-line-6)">│</text><text
class="breeze-static-checks-r5" x="24.4" y="166.4" textLength="12.2"
clip-path="url(#breeze-static-checks-line-6)">-</text><text
class="breeze-static-checks-r5" x="36.6" y="166.4" textLength="61"
clip-path="url(#breeze-static-checks-line-6)">-type</text><text
class="breeze-static-checks-r6" x="317.2" y="166.4" textLength="24.4"
clip-path="url(#breeze- [...]
-</text><text class="breeze-static-checks-r4" x="0" y="190.8" textLength="12.2"
clip-path="url(#breeze-static-checks-line-7)">│</text><text
class="breeze-static-checks-r7" x="366" y="190.8" textLength="1073.6"
clip-path="url(#breeze-static-checks-line-7)">(all | black | blacken-docs | check-airflow-config-yaml-consistent |                    </text><text
c [...]
-</text><text class="breeze-static-checks-r4" x="0" y="215.2" textLength="12.2"
clip-path="url(#breeze-static-checks-line-8)">│</text><text
class="breeze-static-checks-r7" x="366" y="215.2" textLength="1073.6"
clip-path="url(#breeze-static-checks-line-8)">check-airflow-provider-compatibility | check-apache-license-rat |                       </text><text
class= [...]
-</text><text class="breeze-static-checks-r4" x="0" y="239.6" textLength="12.2"
clip-path="url(#breeze-static-checks-line-9)">│</text><text
class="breeze-static-checks-r7" x="366" y="239.6" textLength="1073.6"
clip-path="url(#breeze-static-checks-line-9)">check-base-operator-partial-arguments | check-base-operator-usage |                     </text><text
class="breeze-st [...]
-</text><text class="breeze-static-checks-r4" x="0" y="264" textLength="12.2"
clip-path="url(#breeze-static-checks-line-10)">│</text><text
class="breeze-static-checks-r7" x="366" y="264" textLength="1073.6"
clip-path="url(#breeze-static-checks-line-10)">check-boring-cyborg-configuration | check-breeze-top-dependencies-limited |             </text><text
class="breeze-static-checks-r4" x="1451.8" y="264" textLen [...]
-</text><text class="breeze-static-checks-r4" x="0" y="288.4" textLength="12.2"
clip-path="url(#breeze-static-checks-line-11)">│</text><text
class="breeze-static-checks-r7" x="366" y="288.4" textLength="1073.6"
clip-path="url(#breeze-static-checks-line-11)">check-builtin-literals | check-changelog-has-no-duplicates |                          
[...]
-</text><text class="breeze-static-checks-r4" x="0" y="312.8" textLength="12.2"
clip-path="url(#breeze-static-checks-line-12)">│</text><text
class="breeze-static-checks-r7" x="366" y="312.8" textLength="1073.6"
clip-path="url(#breeze-static-checks-line-12)">check-core-deprecation-classes | check-daysago-import-from-utils |                      </text><text
class="br [...]
-</text><text class="breeze-static-checks-r4" x="0" y="337.2" textLength="12.2"
clip-path="url(#breeze-static-checks-line-13)">│</text><text
class="breeze-static-checks-r7" x="366" y="337.2" textLength="1073.6"
clip-path="url(#breeze-static-checks-line-13)">check-decorated-operator-implements-custom-name | check-docstring-param-types |         </text><text
class="breeze-static-checks-r4" x="1451.8" y="337.2" textLength="12.2" cli
[...]
-</text><text class="breeze-static-checks-r4" x="0" y="361.6" textLength="12.2"
clip-path="url(#breeze-static-checks-line-14)">│</text><text
class="breeze-static-checks-r7" x="366" y="361.6" textLength="1073.6"
clip-path="url(#breeze-static-checks-line-14)">check-example-dags-urls | check-executables-have-shebangs |                           
[...]
-</text><text class="breeze-static-checks-r4" x="0" y="386" textLength="12.2"
clip-path="url(#breeze-static-checks-line-15)">│</text><text
class="breeze-static-checks-r7" x="366" y="386" textLength="1073.6"
clip-path="url(#breeze-static-checks-line-15)">check-extra-packages-references | check-extras-order | check-for-inclusive-language |   </text><text
class="breeze-static-checks-r4" x="1451.8" y="386" textLength="12.2"
clip-path="url(#breeze-static [...]
-</text><text class="breeze-static-checks-r4" x="0" y="410.4" textLength="12.2"
clip-path="url(#breeze-static-checks-line-16)">│</text><text
class="breeze-static-checks-r7" x="366" y="410.4" textLength="1073.6"
clip-path="url(#breeze-static-checks-line-16)">check-hooks-apply | check-incorrect-use-of-LoggingMixin | check-init-decorator-arguments</text><text
class="breeze-static-checks-r4" x="1451.8" y="410.4" textLength="12.2"
clip-path="url(#breeze-static-checks-line-1 [...]
-</text><text class="breeze-static-checks-r4" x="0" y="434.8" textLength="12.2"
clip-path="url(#breeze-static-checks-line-17)">│</text><text
class="breeze-static-checks-r7" x="366" y="434.8" textLength="1073.6"
clip-path="url(#breeze-static-checks-line-17)">| check-lazy-logging | check-links-to-example-dags-do-not-use-hardcoded-versions |      </text><text
class="breeze-static-checks-r4" x="1451.8" y="434.8" textLength="12.2"
clip-path="ur [...]
-</text><text class="breeze-static-checks-r4" x="0" y="459.2" textLength="12.2"
clip-path="url(#breeze-static-checks-line-18)">│</text><text
class="breeze-static-checks-r7" x="366" y="459.2" textLength="1073.6"
clip-path="url(#breeze-static-checks-line-18)">check-merge-conflict | check-newsfragments-are-valid |                           
[...]
-</text><text class="breeze-static-checks-r4" x="0" y="483.6" textLength="12.2"
clip-path="url(#breeze-static-checks-line-19)">│</text><text
class="breeze-static-checks-r7" x="366" y="483.6" textLength="1073.6"
clip-path="url(#breeze-static-checks-line-19)">check-no-providers-in-core-examples | check-no-relative-imports |                       </text><text
clas [...]
-</text><text class="breeze-static-checks-r4" x="0" y="508" textLength="12.2"
clip-path="url(#breeze-static-checks-line-20)">│</text><text
class="breeze-static-checks-r7" x="366" y="508" textLength="1073.6"
clip-path="url(#breeze-static-checks-line-20)">check-only-new-session-with-provide-session |                               
[...]
-</text><text class="breeze-static-checks-r4" x="0" y="532.4" textLength="12.2"
clip-path="url(#breeze-static-checks-line-21)">│</text><text
class="breeze-static-checks-r7" x="366" y="532.4" textLength="1073.6"
clip-path="url(#breeze-static-checks-line-21)">check-persist-credentials-disabled-in-github-workflows |                             
[...]
-</text><text class="breeze-static-checks-r4" x="0" y="556.8" textLength="12.2"
clip-path="url(#breeze-static-checks-line-22)">│</text><text
class="breeze-static-checks-r7" x="366" y="556.8" textLength="1073.6"
clip-path="url(#breeze-static-checks-line-22)">check-pre-commit-information-consistent | check-provide-create-sessions-imports |       </text><text
class="breeze-static-checks-r4" x="1451.8" y="556.8" textLength="12.2"
clip-path="ur [...]
-</text><text class="breeze-static-checks-r4" x="0" y="581.2" textLength="12.2"
clip-path="url(#breeze-static-checks-line-23)">│</text><text
class="breeze-static-checks-r7" x="366" y="581.2" textLength="1073.6"
clip-path="url(#breeze-static-checks-line-23)">check-provider-yaml-valid | check-providers-init-file-missing |                         </text>
[...]
-</text><text class="breeze-static-checks-r4" x="0" y="605.6" textLength="12.2"
clip-path="url(#breeze-static-checks-line-24)">│</text><text
class="breeze-static-checks-r7" x="366" y="605.6" textLength="1073.6"
clip-path="url(#breeze-static-checks-line-24)">check-providers-subpackages-init-file-exist | check-pydevd-left-in-code |               </text><text
class="breeze-static-checks-r4" x="1451.8" y [...]
-</text><text class="breeze-static-checks-r4" x="0" y="630" textLength="12.2"
clip-path="url(#breeze-static-checks-line-25)">│</text><text
class="breeze-static-checks-r7" x="366" y="630" textLength="1073.6"
clip-path="url(#breeze-static-checks-line-25)">check-revision-heads-map | check-safe-filter-usage-in-html | check-setup-order |        </text><text
class="breeze-static-checks-r4" x="1451.8" y="630" textLength="12.2" clip [...]
-</text><text class="breeze-static-checks-r4" x="0" y="654.4" textLength="12.2"
clip-path="url(#breeze-static-checks-line-26)">│</text><text
class="breeze-static-checks-r7" x="366" y="654.4" textLength="1073.6"
clip-path="url(#breeze-static-checks-line-26)">check-start-date-not-used-in-defaults | check-system-tests-present |                    </text><text
class="breeze-stati [...]
-</text><text class="breeze-static-checks-r4" x="0" y="678.8" textLength="12.2"
clip-path="url(#breeze-static-checks-line-27)">│</text><text
class="breeze-static-checks-r7" x="366" y="678.8" textLength="1073.6"
clip-path="url(#breeze-static-checks-line-27)">check-system-tests-tocs | check-xml | codespell | compile-www-assets |                  </text><text
class="br [...]
-</text><text class="breeze-static-checks-r4" x="0" y="703.2" textLength="12.2"
clip-path="url(#breeze-static-checks-line-28)">│</text><text
class="breeze-static-checks-r7" x="366" y="703.2" textLength="1073.6"
clip-path="url(#breeze-static-checks-line-28)">compile-www-assets-dev | create-missing-init-py-files-tests | debug-statements |        </text><text
class="breeze-static-checks-r4" x="1451.8" y="703.2" textLength="12.2 [...]
-</text><text class="breeze-static-checks-r4" x="0" y="727.6" textLength="12.2"
clip-path="url(#breeze-static-checks-line-29)">│</text><text
class="breeze-static-checks-r7" x="366" y="727.6" textLength="1073.6"
clip-path="url(#breeze-static-checks-line-29)">detect-private-key | doctoc | end-of-file-fixer | fix-encoding-pragma | flynt | identity</text><text
class="breeze-static-checks-r4" x="1451.8" y="727.6" textLength="12.2"
clip-path="ur [...]
-</text><text class="breeze-static-checks-r4" x="0" y="752" textLength="12.2"
clip-path="url(#breeze-static-checks-line-30)">│</text><text
class="breeze-static-checks-r7" x="366" y="752" textLength="1073.6"
clip-path="url(#breeze-static-checks-line-30)">| insert-license | lint-chart-schema | lint-css | lint-dockerfile | lint-helm-chart |   </text><text
class="breeze-static-checks-r4" x="1451.8" y="752" textLength="12.2" clip [...]
-</text><text class="breeze-static-checks-r4" x="0" y="776.4" textLength="12.2"
clip-path="url(#breeze-static-checks-line-31)">│</text><text
class="breeze-static-checks-r7" x="366" y="776.4" textLength="1073.6"
clip-path="url(#breeze-static-checks-line-31)">lint-json-schema | lint-markdown | lint-openapi | mixed-line-ending | pretty-format-json</text><text
class="breeze-static-checks-r4" x="1451.8" y="776.4" textLength="12.2"
clip-path="url(#breeze- [...]
-</text><text class="breeze-static-checks-r4" x="0" y="800.8" textLength="12.2"
clip-path="url(#breeze-static-checks-line-32)">│</text><text
class="breeze-static-checks-r7" x="366" y="800.8" textLength="1073.6"
clip-path="url(#breeze-static-checks-line-32)">| python-no-log-warn | replace-bad-characters | rst-backticks | ruff | run-mypy |       </text><text
class="breeze-static-checks-r4" x="1451.8" y="800 [...]
-</text><text class="breeze-static-checks-r4" x="0" y="825.2" textLength="12.2"
clip-path="url(#breeze-static-checks-line-33)">│</text><text
class="breeze-static-checks-r7" x="366" y="825.2" textLength="1073.6"
clip-path="url(#breeze-static-checks-line-33)">run-shellcheck | trailing-whitespace | ts-compile-and-lint-javascript |                 </text><text
class="breeze-static-che [...]
-</text><text class="breeze-static-checks-r4" x="0" y="849.6" textLength="12.2"
clip-path="url(#breeze-static-checks-line-34)">│</text><text
class="breeze-static-checks-r7" x="366" y="849.6" textLength="1073.6"
clip-path="url(#breeze-static-checks-line-34)">update-black-version | update-breeze-cmd-output | update-breeze-readme-config-hash |    </text><text
class="breeze-static-checks-r4" x="1451.8" y="849.6" textLength="12.2"
clip-path="url(#br [...]
-</text><text class="breeze-static-checks-r4" x="0" y="874" textLength="12.2"
clip-path="url(#breeze-static-checks-line-35)">│</text><text
class="breeze-static-checks-r7" x="366" y="874" textLength="1073.6"
clip-path="url(#breeze-static-checks-line-35)">update-common-sql-api-stubs | update-er-diagram | update-extras |                       </text><tex
[...]
-</text><text class="breeze-static-checks-r4" x="0" y="898.4" textLength="12.2"
clip-path="url(#breeze-static-checks-line-36)">│</text><text
class="breeze-static-checks-r7" x="366" y="898.4" textLength="1073.6"
clip-path="url(#breeze-static-checks-line-36)">update-in-the-wild-to-be-sorted | update-inlined-dockerfile-scripts |                   </text><text
class="breeze-static-che [...]
-</text><text class="breeze-static-checks-r4" x="0" y="922.8" textLength="12.2"
clip-path="url(#breeze-static-checks-line-37)">│</text><text
class="breeze-static-checks-r7" x="366" y="922.8" textLength="1073.6"
clip-path="url(#breeze-static-checks-line-37)">update-local-yml-file | update-migration-references | update-providers-dependencies |   </text><text
class="breeze-static-checks-r4" x="1451.8" y="922.8" textLength="12.2"
clip-path="url(#breeze- [...]
-</text><text class="breeze-static-checks-r4" x="0" y="947.2" textLength="12.2"
clip-path="url(#breeze-static-checks-line-38)">│</text><text
class="breeze-static-checks-r7" x="366" y="947.2" textLength="1073.6"
clip-path="url(#breeze-static-checks-line-38)">update-spelling-wordlist-to-be-sorted | update-supported-versions |                     </text><text
class="breeze- [...]
-</text><text class="breeze-static-checks-r4" x="0" y="971.6" textLength="12.2"
clip-path="url(#breeze-static-checks-line-39)">│</text><text
class="breeze-static-checks-r7" x="366" y="971.6" textLength="1073.6"
clip-path="url(#breeze-static-checks-line-39)">update-vendored-in-k8s-json-schema | update-version | yamllint)                         </
[...]
-</text><text class="breeze-static-checks-r4" x="0" y="996" textLength="12.2"
clip-path="url(#breeze-static-checks-line-40)">│</text><text
class="breeze-static-checks-r5" x="24.4" y="996" textLength="12.2"
clip-path="url(#breeze-static-checks-line-40)">-</text><text
class="breeze-static-checks-r5" x="36.6" y="996" textLength="61"
clip-path="url(#breeze-static-checks-line-40)">-file</text><text
class="breeze-static-checks-r6" x="317.2" y="996" textLength="24.4"
clip-path="url(#breeze-stati [...]
-</text><text class="breeze-static-checks-r4" x="0" y="1020.4"
textLength="12.2" clip-path="url(#breeze-static-checks-line-41)">│</text><text
class="breeze-static-checks-r5" x="24.4" y="1020.4" textLength="12.2"
clip-path="url(#breeze-static-checks-line-41)">-</text><text
class="breeze-static-checks-r5" x="36.6" y="1020.4" textLength="48.8"
clip-path="url(#breeze-static-checks-line-41)">-all</text><text
class="breeze-static-checks-r5" x="85.4" y="1020.4" textLength="73.2"
clip-path="url(# [...]
-</text><text class="breeze-static-checks-r4" x="0" y="1044.8"
textLength="12.2" clip-path="url(#breeze-static-checks-line-42)">│</text><text
class="breeze-static-checks-r5" x="24.4" y="1044.8" textLength="12.2"
clip-path="url(#breeze-static-checks-line-42)">-</text><text
class="breeze-static-checks-r5" x="36.6" y="1044.8" textLength="61"
clip-path="url(#breeze-static-checks-line-42)">-show</text><text
class="breeze-static-checks-r5" x="97.6" y="1044.8" textLength="195.2"
clip-path="url(# [...]
-</text><text class="breeze-static-checks-r4" x="0" y="1069.2"
textLength="12.2" clip-path="url(#breeze-static-checks-line-43)">│</text><text
class="breeze-static-checks-r5" x="24.4" y="1069.2" textLength="12.2"
clip-path="url(#breeze-static-checks-line-43)">-</text><text
class="breeze-static-checks-r5" x="36.6" y="1069.2" textLength="61"
clip-path="url(#breeze-static-checks-line-43)">-last</text><text
class="breeze-static-checks-r5" x="97.6" y="1069.2" textLength="85.4"
clip-path="url(#b [...]
-</text><text class="breeze-static-checks-r4" x="0" y="1093.6"
textLength="12.2" clip-path="url(#breeze-static-checks-line-44)">│</text><text
class="breeze-static-checks-r5" x="24.4" y="1093.6" textLength="12.2"
clip-path="url(#breeze-static-checks-line-44)">-</text><text
class="breeze-static-checks-r5" x="36.6" y="1093.6" textLength="85.4"
clip-path="url(#breeze-static-checks-line-44)">-commit</text><text
class="breeze-static-checks-r5" x="122" y="1093.6" textLength="48.8"
clip-path="url [...]
-</text><text class="breeze-static-checks-r4" x="0" y="1118" textLength="12.2"
clip-path="url(#breeze-static-checks-line-45)">│</text><text
class="breeze-static-checks-r2" x="366" y="1118" textLength="292.8"
clip-path="url(#breeze-static-checks-line-45)">Mutually exclusive with </text><text
class="breeze-static-checks-r5" x="658.8" y="1118" textLength="12.2"
clip-path="url(#breeze-static-checks-line-45)">-</text><text
class="breeze-static-checks-r5" x="671" y="1118" textLen [...]
-</text><text class="breeze-static-checks-r4" x="0" y="1142.4"
textLength="12.2" clip-path="url(#breeze-static-checks-line-46)">│</text><text
class="breeze-static-checks-r7" x="366" y="1142.4" textLength="1073.6"
clip-path="url(#breeze-static-checks-line-46)">(TEXT)                                      
[...]
-</text><text class="breeze-static-checks-r4" x="0" y="1166.8"
textLength="12.2" clip-path="url(#breeze-static-checks-line-47)">│</text><text
class="breeze-static-checks-r5" x="24.4" y="1166.8" textLength="12.2"
clip-path="url(#breeze-static-checks-line-47)">-</text><text
class="breeze-static-checks-r5" x="36.6" y="1166.8" textLength="85.4"
clip-path="url(#breeze-static-checks-line-47)">-github</text><text
class="breeze-static-checks-r5" x="122" y="1166.8" textLength="134.2"
clip-path="ur [...]
-</text><text class="breeze-static-checks-r4" x="0" y="1191.2"
textLength="1464"
clip-path="url(#breeze-static-checks-line-48)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
class="breeze-static-checks-r2" x="1464" y="1191.2" textLength="12.2"
clip-path="url(#breeze-static-checks-line-48)">
-</text><text class="breeze-static-checks-r4" x="0" y="1215.6"
textLength="24.4" clip-path="url(#breeze-static-checks-line-49)">╭─</text><text
class="breeze-static-checks-r4" x="24.4" y="1215.6" textLength="195.2"
clip-path="url(#breeze-static-checks-line-49)"> Common options </text><text
class="breeze-static-checks-r4" x="219.6" y="1215.6" textLength="1220"
clip-path="url(#breeze-static-checks-line-49)">──────────────────────────────────────────────────────────────────────
[...]
-</text><text class="breeze-static-checks-r4" x="0" y="1240" textLength="12.2"
clip-path="url(#breeze-static-checks-line-50)">│</text><text
class="breeze-static-checks-r5" x="24.4" y="1240" textLength="12.2"
clip-path="url(#breeze-static-checks-line-50)">-</text><text
class="breeze-static-checks-r5" x="36.6" y="1240" textLength="97.6"
clip-path="url(#breeze-static-checks-line-50)">-verbose</text><text
class="breeze-static-checks-r6" x="158.6" y="1240" textLength="24.4"
clip-path="url(#bre [...]
-</text><text class="breeze-static-checks-r4" x="0" y="1264.4"
textLength="12.2" clip-path="url(#breeze-static-checks-line-51)">│</text><text
class="breeze-static-checks-r5" x="24.4" y="1264.4" textLength="12.2"
clip-path="url(#breeze-static-checks-line-51)">-</text><text
class="breeze-static-checks-r5" x="36.6" y="1264.4" textLength="48.8"
clip-path="url(#breeze-static-checks-line-51)">-dry</text><text
class="breeze-static-checks-r5" x="85.4" y="1264.4" textLength="48.8"
clip-path="url(# [...]
-</text><text class="breeze-static-checks-r4" x="0" y="1288.8"
textLength="12.2" clip-path="url(#breeze-static-checks-line-52)">│</text><text
class="breeze-static-checks-r5" x="24.4" y="1288.8" textLength="12.2"
clip-path="url(#breeze-static-checks-line-52)">-</text><text
class="breeze-static-checks-r5" x="36.6" y="1288.8" textLength="61"
clip-path="url(#breeze-static-checks-line-52)">-help</text><text
class="breeze-static-checks-r6" x="158.6" y="1288.8" textLength="24.4"
clip-path="url(# [...]
-</text><text class="breeze-static-checks-r4" x="0" y="1313.2"
textLength="1464"
clip-path="url(#breeze-static-checks-line-53)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
class="breeze-static-checks-r2" x="1464" y="1313.2" textLength="12.2"
clip-path="url(#breeze-static-checks-line-53)">
+</text><text class="breeze-static-checks-r5" x="0" y="142" textLength="24.4"
clip-path="url(#breeze-static-checks-line-5)">╭─</text><text
class="breeze-static-checks-r5" x="24.4" y="142" textLength="219.6"
clip-path="url(#breeze-static-checks-line-5)"> Pre-commit flags </text><text
class="breeze-static-checks-r5" x="244" y="142" textLength="1195.6"
clip-path="url(#breeze-static-checks-line-5)">────────────────────────────────────────────────────────────────────────────────
[...]
+</text><text class="breeze-static-checks-r5" x="0" y="166.4" textLength="12.2"
clip-path="url(#breeze-static-checks-line-6)">│</text><text
class="breeze-static-checks-r4" x="24.4" y="166.4" textLength="12.2"
clip-path="url(#breeze-static-checks-line-6)">-</text><text
class="breeze-static-checks-r4" x="36.6" y="166.4" textLength="61"
clip-path="url(#breeze-static-checks-line-6)">-type</text><text
class="breeze-static-checks-r6" x="317.2" y="166.4" textLength="24.4"
clip-path="url(#breeze- [...]
+</text><text class="breeze-static-checks-r5" x="0" y="190.8" textLength="12.2"
clip-path="url(#breeze-static-checks-line-7)">│</text><text
class="breeze-static-checks-r7" x="366" y="190.8" textLength="1073.6"
clip-path="url(#breeze-static-checks-line-7)">(all | black | blacken-docs | check-airflow-config-yaml-consistent |                    </text><text
c [...]
+</text><text class="breeze-static-checks-r5" x="0" y="215.2" textLength="12.2"
clip-path="url(#breeze-static-checks-line-8)">│</text><text
class="breeze-static-checks-r7" x="366" y="215.2" textLength="1073.6"
clip-path="url(#breeze-static-checks-line-8)">check-airflow-provider-compatibility | check-apache-license-rat |                       </text><text
class= [...]
+</text><text class="breeze-static-checks-r5" x="0" y="239.6" textLength="12.2"
clip-path="url(#breeze-static-checks-line-9)">│</text><text
class="breeze-static-checks-r7" x="366" y="239.6" textLength="1073.6"
clip-path="url(#breeze-static-checks-line-9)">check-base-operator-partial-arguments | check-base-operator-usage |                     </text><text
class="breeze-st [...]
+</text><text class="breeze-static-checks-r5" x="0" y="264" textLength="12.2"
clip-path="url(#breeze-static-checks-line-10)">│</text><text
class="breeze-static-checks-r7" x="366" y="264" textLength="1073.6"
clip-path="url(#breeze-static-checks-line-10)">check-boring-cyborg-configuration | check-breeze-top-dependencies-limited |             </text><text
class="breeze-static-checks-r5" x="1451.8" y="264" textLen [...]
+</text><text class="breeze-static-checks-r5" x="0" y="288.4" textLength="12.2"
clip-path="url(#breeze-static-checks-line-11)">│</text><text
class="breeze-static-checks-r7" x="366" y="288.4" textLength="1073.6"
clip-path="url(#breeze-static-checks-line-11)">check-builtin-literals | check-changelog-has-no-duplicates |                          
[...]
+</text><text class="breeze-static-checks-r5" x="0" y="312.8" textLength="12.2"
clip-path="url(#breeze-static-checks-line-12)">│</text><text
class="breeze-static-checks-r7" x="366" y="312.8" textLength="1073.6"
clip-path="url(#breeze-static-checks-line-12)">check-core-deprecation-classes | check-daysago-import-from-utils |                      </text><text
class="br [...]
+</text><text class="breeze-static-checks-r5" x="0" y="337.2" textLength="12.2"
clip-path="url(#breeze-static-checks-line-13)">│</text><text
class="breeze-static-checks-r7" x="366" y="337.2" textLength="1073.6"
clip-path="url(#breeze-static-checks-line-13)">check-decorated-operator-implements-custom-name | check-docstring-param-types |         </text><text
class="breeze-static-checks-r5" x="1451.8" y="337.2" textLength="12.2" cli
[...]
+</text><text class="breeze-static-checks-r5" x="0" y="361.6" textLength="12.2"
clip-path="url(#breeze-static-checks-line-14)">│</text><text
class="breeze-static-checks-r7" x="366" y="361.6" textLength="1073.6"
clip-path="url(#breeze-static-checks-line-14)">check-example-dags-urls | check-executables-have-shebangs |                           
[...]
+</text><text class="breeze-static-checks-r5" x="0" y="386" textLength="12.2"
clip-path="url(#breeze-static-checks-line-15)">│</text><text
class="breeze-static-checks-r7" x="366" y="386" textLength="1073.6"
clip-path="url(#breeze-static-checks-line-15)">check-extra-packages-references | check-extras-order | check-for-inclusive-language |   </text><text
class="breeze-static-checks-r5" x="1451.8" y="386" textLength="12.2"
clip-path="url(#breeze-static [...]
+</text><text class="breeze-static-checks-r5" x="0" y="410.4" textLength="12.2"
clip-path="url(#breeze-static-checks-line-16)">│</text><text
class="breeze-static-checks-r7" x="366" y="410.4" textLength="1073.6"
clip-path="url(#breeze-static-checks-line-16)">check-hooks-apply | check-incorrect-use-of-LoggingMixin | check-init-decorator-arguments</text><text
class="breeze-static-checks-r5" x="1451.8" y="410.4" textLength="12.2"
clip-path="url(#breeze-static-checks-line-1 [...]
+</text><text class="breeze-static-checks-r5" x="0" y="434.8" textLength="12.2"
clip-path="url(#breeze-static-checks-line-17)">│</text><text
class="breeze-static-checks-r7" x="366" y="434.8" textLength="1073.6"
clip-path="url(#breeze-static-checks-line-17)">| check-lazy-logging | check-links-to-example-dags-do-not-use-hardcoded-versions |      </text><text
class="breeze-static-checks-r5" x="1451.8" y="434.8" textLength="12.2"
clip-path="ur [...]
+</text><text class="breeze-static-checks-r5" x="0" y="459.2" textLength="12.2"
clip-path="url(#breeze-static-checks-line-18)">│</text><text
class="breeze-static-checks-r7" x="366" y="459.2" textLength="1073.6"
clip-path="url(#breeze-static-checks-line-18)">check-merge-conflict | check-newsfragments-are-valid |                           
[...]
+</text><text class="breeze-static-checks-r5" x="0" y="483.6" textLength="12.2"
clip-path="url(#breeze-static-checks-line-19)">│</text><text
class="breeze-static-checks-r7" x="366" y="483.6" textLength="1073.6"
clip-path="url(#breeze-static-checks-line-19)">check-no-providers-in-core-examples | check-no-relative-imports |                       </text><text
clas [...]
+</text><text class="breeze-static-checks-r5" x="0" y="508" textLength="12.2"
clip-path="url(#breeze-static-checks-line-20)">│</text><text
class="breeze-static-checks-r7" x="366" y="508" textLength="1073.6"
clip-path="url(#breeze-static-checks-line-20)">check-only-new-session-with-provide-session |                               
[...]
+</text><text class="breeze-static-checks-r5" x="0" y="532.4" textLength="12.2"
clip-path="url(#breeze-static-checks-line-21)">│</text><text
class="breeze-static-checks-r7" x="366" y="532.4" textLength="1073.6"
clip-path="url(#breeze-static-checks-line-21)">check-persist-credentials-disabled-in-github-workflows |                             
[...]
+</text><text class="breeze-static-checks-r5" x="0" y="556.8" textLength="12.2"
clip-path="url(#breeze-static-checks-line-22)">│</text><text
class="breeze-static-checks-r7" x="366" y="556.8" textLength="1073.6"
clip-path="url(#breeze-static-checks-line-22)">check-pre-commit-information-consistent | check-provide-create-sessions-imports |       </text><text
class="breeze-static-checks-r5" x="1451.8" y="556.8" textLength="12.2"
clip-path="ur [...]
+</text><text class="breeze-static-checks-r5" x="0" y="581.2" textLength="12.2"
clip-path="url(#breeze-static-checks-line-23)">│</text><text
class="breeze-static-checks-r7" x="366" y="581.2" textLength="1073.6"
clip-path="url(#breeze-static-checks-line-23)">check-provider-yaml-valid | check-providers-init-file-missing |                         </text>
[...]
+</text><text class="breeze-static-checks-r5" x="0" y="605.6" textLength="12.2"
clip-path="url(#breeze-static-checks-line-24)">│</text><text
class="breeze-static-checks-r7" x="366" y="605.6" textLength="1073.6"
clip-path="url(#breeze-static-checks-line-24)">check-providers-subpackages-init-file-exist | check-pydevd-left-in-code |               </text><text
class="breeze-static-checks-r5" x="1451.8" y [...]
+</text><text class="breeze-static-checks-r5" x="0" y="630" textLength="12.2"
clip-path="url(#breeze-static-checks-line-25)">│</text><text
class="breeze-static-checks-r7" x="366" y="630" textLength="1073.6"
clip-path="url(#breeze-static-checks-line-25)">check-revision-heads-map | check-safe-filter-usage-in-html | check-setup-order |        </text><text
class="breeze-static-checks-r5" x="1451.8" y="630" textLength="12.2" clip [...]
+</text><text class="breeze-static-checks-r5" x="0" y="654.4" textLength="12.2"
clip-path="url(#breeze-static-checks-line-26)">│</text><text
class="breeze-static-checks-r7" x="366" y="654.4" textLength="1073.6"
clip-path="url(#breeze-static-checks-line-26)">check-start-date-not-used-in-defaults | check-system-tests-present |                    </text><text
class="breeze-stati [...]
+</text><text class="breeze-static-checks-r5" x="0" y="678.8" textLength="12.2"
clip-path="url(#breeze-static-checks-line-27)">│</text><text
class="breeze-static-checks-r7" x="366" y="678.8" textLength="1073.6"
clip-path="url(#breeze-static-checks-line-27)">check-system-tests-tocs | check-xml | codespell | compile-www-assets |                  </text><text
class="br [...]
+</text><text class="breeze-static-checks-r5" x="0" y="703.2" textLength="12.2"
clip-path="url(#breeze-static-checks-line-28)">│</text><text
class="breeze-static-checks-r7" x="366" y="703.2" textLength="1073.6"
clip-path="url(#breeze-static-checks-line-28)">compile-www-assets-dev | create-missing-init-py-files-tests | debug-statements |        </text><text
class="breeze-static-checks-r5" x="1451.8" y="703.2" textLength="12.2 [...]
+</text><text class="breeze-static-checks-r5" x="0" y="727.6" textLength="12.2"
clip-path="url(#breeze-static-checks-line-29)">│</text><text
class="breeze-static-checks-r7" x="366" y="727.6" textLength="1073.6"
clip-path="url(#breeze-static-checks-line-29)">detect-private-key | doctoc | end-of-file-fixer | fix-encoding-pragma | flynt | identity</text><text
class="breeze-static-checks-r5" x="1451.8" y="727.6" textLength="12.2"
clip-path="ur [...]
+</text><text class="breeze-static-checks-r5" x="0" y="752" textLength="12.2"
clip-path="url(#breeze-static-checks-line-30)">│</text><text
class="breeze-static-checks-r7" x="366" y="752" textLength="1073.6"
clip-path="url(#breeze-static-checks-line-30)">| insert-license | lint-chart-schema | lint-css | lint-dockerfile | lint-helm-chart |   </text><text
class="breeze-static-checks-r5" x="1451.8" y="752" textLength="12.2" clip [...]
+</text><text class="breeze-static-checks-r5" x="0" y="776.4" textLength="12.2"
clip-path="url(#breeze-static-checks-line-31)">│</text><text
class="breeze-static-checks-r7" x="366" y="776.4" textLength="1073.6"
clip-path="url(#breeze-static-checks-line-31)">lint-json-schema | lint-markdown | lint-openapi | mixed-line-ending | pretty-format-json</text><text
class="breeze-static-checks-r5" x="1451.8" y="776.4" textLength="12.2"
clip-path="url(#breeze- [...]
+</text><text class="breeze-static-checks-r5" x="0" y="800.8" textLength="12.2"
clip-path="url(#breeze-static-checks-line-32)">│</text><text
class="breeze-static-checks-r7" x="366" y="800.8" textLength="1073.6"
clip-path="url(#breeze-static-checks-line-32)">| python-no-log-warn | replace-bad-characters | rst-backticks | ruff | run-mypy |       </text><text
class="breeze-static-checks-r5" x="1451.8" y="800 [...]
+</text><text class="breeze-static-checks-r5" x="0" y="825.2" textLength="12.2"
clip-path="url(#breeze-static-checks-line-33)">│</text><text
class="breeze-static-checks-r7" x="366" y="825.2" textLength="1073.6"
clip-path="url(#breeze-static-checks-line-33)">run-shellcheck | trailing-whitespace | ts-compile-and-lint-javascript |                 </text><text
class="breeze-static-che [...]
+</text><text class="breeze-static-checks-r5" x="0" y="849.6" textLength="12.2"
clip-path="url(#breeze-static-checks-line-34)">│</text><text
class="breeze-static-checks-r7" x="366" y="849.6" textLength="1073.6"
clip-path="url(#breeze-static-checks-line-34)">update-black-version | update-breeze-cmd-output | update-breeze-readme-config-hash |    </text><text
class="breeze-static-checks-r5" x="1451.8" y="849.6" textLength="12.2"
clip-path="url(#br [...]
+</text><text class="breeze-static-checks-r5" x="0" y="874" textLength="12.2"
clip-path="url(#breeze-static-checks-line-35)">│</text><text
class="breeze-static-checks-r7" x="366" y="874" textLength="1073.6"
clip-path="url(#breeze-static-checks-line-35)">update-common-sql-api-stubs | update-er-diagram | update-extras |                       </text><tex
[...]
+</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="366" y="898.4" textLength="1073.6"
clip-path="url(#breeze-static-checks-line-36)">update-in-the-wild-to-be-sorted | update-inlined-dockerfile-scripts |                   </text><text
class="breeze-static-che [...]
+</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="366" y="922.8" textLength="1073.6"
clip-path="url(#breeze-static-checks-line-37)">update-installed-providers-to-be-sorted | update-local-yml-file |                       </text><text
clas [...]
+</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="366" y="947.2" textLength="1073.6"
clip-path="url(#breeze-static-checks-line-38)">update-migration-references | update-providers-dependencies |                          
[...]
+</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="366" y="971.6" textLength="1073.6"
clip-path="url(#breeze-static-checks-line-39)">update-spelling-wordlist-to-be-sorted | update-supported-versions |                     </text><text
class="breeze- [...]
+</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="366" y="996" textLength="1073.6"
clip-path="url(#breeze-static-checks-line-40)">update-vendored-in-k8s-json-schema | update-version | yamllint)                         </text
[...]
+</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-r4" x="24.4" y="1020.4" textLength="12.2"
clip-path="url(#breeze-static-checks-line-41)">-</text><text
class="breeze-static-checks-r4" x="36.6" y="1020.4" textLength="61"
clip-path="url(#breeze-static-checks-line-41)">-file</text><text
class="breeze-static-checks-r6" x="317.2" y="1020.4" textLength="24.4"
clip-path="url(# [...]
+</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-r4" x="24.4" y="1044.8" textLength="12.2"
clip-path="url(#breeze-static-checks-line-42)">-</text><text
class="breeze-static-checks-r4" x="36.6" y="1044.8" textLength="48.8"
clip-path="url(#breeze-static-checks-line-42)">-all</text><text
class="breeze-static-checks-r4" x="85.4" y="1044.8" textLength="73.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-r4" x="24.4" y="1069.2" textLength="12.2"
clip-path="url(#breeze-static-checks-line-43)">-</text><text
class="breeze-static-checks-r4" x="36.6" y="1069.2" textLength="61"
clip-path="url(#breeze-static-checks-line-43)">-show</text><text
class="breeze-static-checks-r4" x="97.6" y="1069.2" textLength="195.2"
clip-path="url(# [...]
+</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-r4" x="24.4" y="1093.6" textLength="12.2"
clip-path="url(#breeze-static-checks-line-44)">-</text><text
class="breeze-static-checks-r4" x="36.6" y="1093.6" textLength="61"
clip-path="url(#breeze-static-checks-line-44)">-last</text><text
class="breeze-static-checks-r4" x="97.6" y="1093.6" textLength="85.4"
clip-path="url(#b [...]
+</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-r4" x="24.4" y="1118" textLength="12.2"
clip-path="url(#breeze-static-checks-line-45)">-</text><text
class="breeze-static-checks-r4" x="36.6" y="1118" textLength="85.4"
clip-path="url(#breeze-static-checks-line-45)">-commit</text><text
class="breeze-static-checks-r4" x="122" y="1118" textLength="48.8"
clip-path="url(#breeze [...]
+</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-r2" x="366" y="1142.4" textLength="292.8"
clip-path="url(#breeze-static-checks-line-46)">Mutually exclusive with </text><text
class="breeze-static-checks-r4" x="658.8" y="1142.4" textLength="12.2"
clip-path="url(#breeze-static-checks-line-46)">-</text><text
class="breeze-static-checks-r4" x="671" y="1142.4" [...]
+</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="366" y="1166.8" textLength="1073.6"
clip-path="url(#breeze-static-checks-line-47)">(TEXT)                                      
[...]
+</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-r4" x="24.4" y="1191.2" textLength="12.2"
clip-path="url(#breeze-static-checks-line-48)">-</text><text
class="breeze-static-checks-r4" x="36.6" y="1191.2" textLength="85.4"
clip-path="url(#breeze-static-checks-line-48)">-github</text><text
class="breeze-static-checks-r4" x="122" y="1191.2" textLength="134.2"
clip-path="ur [...]
+</text><text class="breeze-static-checks-r5" x="0" y="1215.6"
textLength="1464"
clip-path="url(#breeze-static-checks-line-49)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
class="breeze-static-checks-r2" x="1464" y="1215.6" textLength="12.2"
clip-path="url(#breeze-static-checks-line-49)">
+</text><text class="breeze-static-checks-r5" x="0" y="1240" textLength="24.4"
clip-path="url(#breeze-static-checks-line-50)">╭─</text><text
class="breeze-static-checks-r5" x="24.4" y="1240" textLength="195.2"
clip-path="url(#breeze-static-checks-line-50)"> Common options </text><text
class="breeze-static-checks-r5" x="219.6" y="1240" textLength="1220"
clip-path="url(#breeze-static-checks-line-50)">────────────────────────────────────────────────────────────────────────────
[...]
+</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-r4" x="24.4" y="1264.4" textLength="12.2"
clip-path="url(#breeze-static-checks-line-51)">-</text><text
class="breeze-static-checks-r4" x="36.6" y="1264.4" textLength="97.6"
clip-path="url(#breeze-static-checks-line-51)">-verbose</text><text
class="breeze-static-checks-r6" x="158.6" y="1264.4" textLength="24.4"
clip-path=" [...]
+</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-r4" x="24.4" y="1288.8" textLength="12.2"
clip-path="url(#breeze-static-checks-line-52)">-</text><text
class="breeze-static-checks-r4" x="36.6" y="1288.8" textLength="48.8"
clip-path="url(#breeze-static-checks-line-52)">-dry</text><text
class="breeze-static-checks-r4" x="85.4" y="1288.8" textLength="48.8"
clip-path="url(# [...]
+</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-r4" x="24.4" y="1313.2" textLength="12.2"
clip-path="url(#breeze-static-checks-line-53)">-</text><text
class="breeze-static-checks-r4" x="36.6" y="1313.2" textLength="61"
clip-path="url(#breeze-static-checks-line-53)">-help</text><text
class="breeze-static-checks-r6" x="158.6" y="1313.2" textLength="24.4"
clip-path="url(# [...]
+</text><text class="breeze-static-checks-r5" x="0" y="1337.6"
textLength="1464"
clip-path="url(#breeze-static-checks-line-54)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
class="breeze-static-checks-r2" x="1464" y="1337.6" textLength="12.2"
clip-path="url(#breeze-static-checks-line-54)">
</text>
</g>
</g>
diff --git a/scripts/ci/installed_providers.txt
b/scripts/ci/installed_providers.txt
index 013fb587e3..da552c4289 100644
--- a/scripts/ci/installed_providers.txt
+++ b/scripts/ci/installed_providers.txt
@@ -19,5 +19,4 @@ sendgrid
sftp
slack
sqlite
-sqlite
ssh
diff --git a/scripts/ci/pre_commit/pre_commit_sort_installed_providers.py
b/scripts/ci/pre_commit/pre_commit_sort_installed_providers.py
new file mode 100755
index 0000000000..e2bd0e2921
--- /dev/null
+++ b/scripts/ci/pre_commit/pre_commit_sort_installed_providers.py
@@ -0,0 +1,45 @@
+#!/usr/bin/env python3
+# 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
+
+import itertools
+from pathlib import Path
+
+if __name__ not in ("__main__", "__mp_main__"):
+ raise SystemExit(
+ "This file is intended to be executed as an executable program. You
cannot use it as a module."
+ f"To run this script, run the ./{__file__} command"
+ )
+
+
+AIRFLOW_SOURCES = Path(__file__).parents[3].resolve()
+
+
+def stable_sort(x):
+ return x.casefold(), x
+
+
+def sort_uniq(sequence):
+ return (x[0] for x in itertools.groupby(sorted(sequence, key=stable_sort)))
+
+
+if __name__ == "__main__":
+ installed_providers_path = Path(AIRFLOW_SOURCES) / "scripts" / "ci" /
"installed_providers.txt"
+ content = installed_providers_path.read_text().splitlines(keepends=True)
+ sorted_content = sort_uniq(content)
+ installed_providers_path.write_text("".join(sorted_content))