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 5af83ce736 Add better diagnostics capabilities for pre-commits run via
CI image (#23980)
5af83ce736 is described below
commit 5af83ce736b92f651f75d5d00c2043be59ab91f5
Author: Jarek Potiuk <[email protected]>
AuthorDate: Sun May 29 10:33:40 2022 +0200
Add better diagnostics capabilities for pre-commits run via CI image
(#23980)
The pre-commits that require CI image run docker command under
the hood that is highly optimized for performance (only mounts
files that are necessary to be mounted) - in order to improve
performance on Mac OS and make sure that artifacts are not left
in the source code of Airflow.
However that makes the command slightly more difficult to debug
because they generate dynamically the docker command used,
including the volumens that should be mounted when the docker
command is run.
This PR adds better diagnostics to the pre-commit scripts
allowing VERBOSE="true" and DRY_RUN="true" variables that can
help with diagnosing problems such as running the scripts on
WSL2.
It also fixes a few documentation bugs that have been missed
after changing names of the image-related static checks and
thanks to separating the common code to utility function
it allows to set SKIP_IMAGE_PRE_COMMITS variable to true
which will skip running all pre-commit checks that require
breeze image to be available locally.
---
.github/workflows/ci.yml | 11 +-
STATIC_CODE_CHECKS.rst | 52 ++++++---
.../airflow_breeze/commands/developer_commands.py | 2 +-
dev/breeze/src/airflow_breeze/utils/path_utils.py | 8 +-
dev/breeze/src/airflow_breeze/utils/run_utils.py | 30 ++++++
images/breeze/output-commands-hash.txt | 2 +-
images/breeze/output-static-checks.svg | 120 ++++++++++-----------
.../pre_commit_check_pre_commit_hooks.py | 2 +-
scripts/ci/pre_commit/pre_commit_flake8.py | 28 +++--
.../pre_commit/pre_commit_migration_reference.py | 34 +++---
scripts/ci/pre_commit/pre_commit_mypy.py | 28 +++--
scripts/ci/pre_commit/pre_commit_ui_lint.py | 36 +++----
scripts/ci/pre_commit/pre_commit_www_lint.py | 35 +++---
13 files changed, 215 insertions(+), 173 deletions(-)
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 551681633e..d935c78ae0 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -637,9 +637,9 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
- name: "Static checks"
run: breeze static-checks --all-files --show-diff-on-failure --color
always
env:
- VERBOSE: false
+ VERBOSE: "false"
SKIP: "identity"
- COLUMNS: 250
+ COLUMNS: "250"
- name: "Fix ownership"
run: breeze fix-ownership
if: always()
@@ -654,8 +654,6 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
needs: [build-info]
env:
RUNS_ON: ${{ fromJson(needs.build-info.outputs.runsOn) }}
- SKIP:
"build,run-mypy,run-flake8,lint-javascript,update-migration-references,identity"
- MOUNT_SELECTED_LOCAL_SOURCES: "true"
if: needs.build-info.outputs.basic-checks-only == 'true'
steps:
- name: Cleanup repo
@@ -695,7 +693,10 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
breeze static-checks --all-files --show-diff-on-failure --color
always
--commit-ref "${{ github.sha }}"
env:
- VERBOSE: false
+ VERBOSE: "false"
+ SKIP_IMAGE_PRE_COMMITS: "true"
+ SKIP: "identity"
+ COLUMNS: "250"
- name: "Fix ownership"
run: breeze fix-ownership
if: always()
diff --git a/STATIC_CODE_CHECKS.rst b/STATIC_CODE_CHECKS.rst
index 71f132e7d5..e2b57eae6c 100644
--- a/STATIC_CODE_CHECKS.rst
+++ b/STATIC_CODE_CHECKS.rst
@@ -111,8 +111,8 @@ For details on advanced usage of the install method, use:
Available pre-commit checks
...........................
-This table lists pre-commit hooks used by Airflow. The ``Breeze`` column
indicates which hooks
-require Breeze Docker images to be installed locally.
+This table lists pre-commit hooks used by Airflow. The ``Image`` column
indicates which hooks
+require Breeze Docker image to be build locally.
.. note:: Disabling particular checks
@@ -123,6 +123,10 @@ require Breeze Docker images to be installed locally.
``export SKIP=run-flake8,run-mypy``. You can also add this to your
``.bashrc`` or ``.zshrc`` if you
do not want to set it manually every time you enter the terminal.
+ In case you do not have breeze image configured locally, you can also
disable all checks that require
+ the image by setting ``SKIP_IMAGE_PRE_COMMITS`` to "true". This will mark
the tests as "green" automatically
+ when run locally (note that those checks will anyway run in CI).
+
.. BEGIN AUTO-GENERATED STATIC CHECK LIST
+--------------------------------------------------------+------------------------------------------------------------------+---------+
@@ -242,7 +246,7 @@ require Breeze Docker images to be installed locally.
+--------------------------------------------------------+------------------------------------------------------------------+---------+
| lint-helm-chart | Lint Helm Chart
| |
+--------------------------------------------------------+------------------------------------------------------------------+---------+
-| lint-javascript | * ESLint against
airflow/ui | |
+| lint-javascript | * ESLint against
airflow/ui | * |
| | * ESLint against
current UI JavaScript files | |
+--------------------------------------------------------+------------------------------------------------------------------+---------+
| lint-json-schema | * Lint JSON Schema
files with JSON Schema | |
@@ -269,9 +273,9 @@ require Breeze Docker images to be installed locally.
+--------------------------------------------------------+------------------------------------------------------------------+---------+
| rst-backticks | Check if RST files
use double backticks for code | |
+--------------------------------------------------------+------------------------------------------------------------------+---------+
-| run-flake8 | Run flake8
| |
+| run-flake8 | Run flake8
| * |
+--------------------------------------------------------+------------------------------------------------------------------+---------+
-| run-mypy | * Run mypy for dev
| |
+| run-mypy | * Run mypy for dev
| * |
| | * Run mypy for core
| |
| | * Run mypy for
providers | |
| | * Run mypy for
/docs/ folder | |
@@ -294,7 +298,7 @@ require Breeze Docker images to be installed locally.
+--------------------------------------------------------+------------------------------------------------------------------+---------+
| update-local-yml-file | Update mounts in
the local yml file | |
+--------------------------------------------------------+------------------------------------------------------------------+---------+
-| update-migration-references | Update migration
ref doc | |
+| update-migration-references | Update migration
ref doc | * |
+--------------------------------------------------------+------------------------------------------------------------------+---------+
| update-providers-dependencies | Update
cross-dependencies for providers packages | |
+--------------------------------------------------------+------------------------------------------------------------------+---------+
@@ -387,49 +391,63 @@ Run the ``mypy`` check for the currently staged changes:
.. code-block:: bash
- breeze static-check --type run-mypy
+ breeze static-checks --type run-mypy
Run the ``mypy`` check for all files:
.. code-block:: bash
- breeze static-check --type run-mypy --all-files
+ breeze static-checks --type run-mypy --all-files
Run the ``flake8`` check for the ``tests.core.py`` file with verbose output:
.. code-block:: bash
- breeze static-check --type run-flake8 --file tests/core.py --verbose
+ breeze static-checks --type run-flake8 --file tests/core.py --verbose
Run the ``flake8`` check for the ``tests.core`` package with verbose output:
.. code-block:: bash
- breeze static-check --type run-flake8 --file tests/core/* --verbose
+ breeze static-checks --type run-flake8 --file tests/core/* --verbose
Run all tests for the currently staged files:
.. code-block:: bash
- breeze static-check --type all
+ breeze static-checks --type all
Run all tests for all files:
.. code-block:: bash
- breeze static-check --type all --all-files
+ breeze static-checks --type all --all-files
Run all tests for last commit :
.. code-block:: bash
- breeze static-check --type all --last-commit
+ breeze static-checks -type all --last-commit
+
+Debugging pre-commit check scripts requiring image
+--------------------------------------------------
+
+Those commits that use Breeze docker image might sometimes fail, depending on
your operating system and
+docker setup, so sometimes it might be required to run debugging with the
commands. This is done via
+two environment variables ``VERBOSE`` and ``DRY_RUN``. Setting them to "true"
will respectively show the
+commands to run before running them or skip running the commands.
+
+Note that you need to run pre-commit with --verbose command to get the output
regardless of the status
+of the static check (normally it will only show output on failure).
+
+Printing the commands while executing:
+
+.. code-block:: bash
+ VERBOSE="true" pre-commit run --verbose run-flake8
-The ``license`` check is run via a separate script and a separate Docker image
containing the
-Apache RAT verification tool that checks for Apache-compatibility of licenses
within the codebase.
-It does not take pre-commit parameters as extra arguments.
+Just performing dry run:
.. code-block:: bash
- breeze static-check licenses
+ DRY_RUN="true" pre-commit run --verbose run-flake8
diff --git a/dev/breeze/src/airflow_breeze/commands/developer_commands.py
b/dev/breeze/src/airflow_breeze/commands/developer_commands.py
index bb1d974e7c..1719bab5fc 100644
--- a/dev/breeze/src/airflow_breeze/commands/developer_commands.py
+++ b/dev/breeze/src/airflow_breeze/commands/developer_commands.py
@@ -438,7 +438,7 @@ def build_docs(
type=BetterChoice(PRE_COMMIT_LIST),
multiple=True,
)
[email protected]('-a', '--all-files', help="Run checks on all files.")
[email protected]('-a', '--all-files', help="Run checks on all files.",
is_flag=True)
@click.option('-f', '--file', help="List of files to run the checks on.",
type=click.Path(), multiple=True)
@click.option(
'-s', '--show-diff-on-failure', help="Show diff for files modified by the
checks.", is_flag=True
diff --git a/dev/breeze/src/airflow_breeze/utils/path_utils.py
b/dev/breeze/src/airflow_breeze/utils/path_utils.py
index 49d9d3bf9c..759c3e09a7 100644
--- a/dev/breeze/src/airflow_breeze/utils/path_utils.py
+++ b/dev/breeze/src/airflow_breeze/utils/path_utils.py
@@ -62,13 +62,7 @@ def in_help() -> bool:
def skip_upgrade_check():
- return (
- in_self_upgrade()
- or in_autocomplete()
- or in_help()
- or hasattr(sys, '_called_from_test')
- or os.environ.get('SKIP_BREEZE_UPGRADE_CHECK')
- )
+ return in_self_upgrade() or in_autocomplete() or in_help() or hasattr(sys,
'_called_from_test')
def get_package_setup_metadata_hash() -> str:
diff --git a/dev/breeze/src/airflow_breeze/utils/run_utils.py
b/dev/breeze/src/airflow_breeze/utils/run_utils.py
index bbfdfcb432..86b84be4c0 100644
--- a/dev/breeze/src/airflow_breeze/utils/run_utils.py
+++ b/dev/breeze/src/airflow_breeze/utils/run_utils.py
@@ -27,6 +27,7 @@ from pathlib import Path
from re import match
from typing import Dict, List, Mapping, Optional, Union
+from airflow_breeze.branch_defaults import AIRFLOW_BRANCH
from airflow_breeze.params._common_build_params import _CommonBuildParams
from airflow_breeze.utils.ci_group import ci_group
from airflow_breeze.utils.console import get_console
@@ -375,3 +376,32 @@ def filter_out_none(**kwargs) -> dict:
if kwargs[key] is None:
kwargs.pop(key)
return kwargs
+
+
+def fail_if_image_missing(image: str, verbose: bool, dry_run: bool,
instruction: str) -> None:
+ skip_image_pre_commits = os.environ.get('SKIP_IMAGE_PRE_COMMITS', "false")
+ if skip_image_pre_commits[0].lower() == "t":
+ get_console().print(
+ f"[info]Skipping image check as SKIP_IMAGE_PRE_COMMITS is set to
{skip_image_pre_commits}[/]"
+ )
+ sys.exit(0)
+ cmd_result = run_command(
+ ["docker", "inspect", image], stdout=subprocess.DEVNULL, check=False,
verbose=verbose, dry_run=dry_run
+ )
+ if cmd_result.returncode != 0:
+ print(f'[red]The image {image} is not available.[/]\n')
+ print(f"\n[yellow]Please run at the earliest
convenience:[/]\n\n{instruction}\n\n")
+ sys.exit(1)
+
+
+def get_runnable_ci_image(verbose: bool, dry_run: bool) -> str:
+ github_repository = os.environ.get('GITHUB_REPOSITORY', "apache/airflow")
+ python_version = "3.7"
+ airflow_image =
f"ghcr.io/{github_repository}/{AIRFLOW_BRANCH}/ci/python{python_version}"
+ fail_if_image_missing(
+ image=airflow_image,
+ verbose=verbose,
+ dry_run=dry_run,
+ instruction=f"breeze build-image --python {python_version}",
+ )
+ return airflow_image
diff --git a/images/breeze/output-commands-hash.txt
b/images/breeze/output-commands-hash.txt
index 4e134adeef..4d58a2969e 100644
--- a/images/breeze/output-commands-hash.txt
+++ b/images/breeze/output-commands-hash.txt
@@ -1 +1 @@
-5b79e317c30d2dc10bc28f425557af1b
+969f1b4101773456e832c03b8d4e89ef
diff --git a/images/breeze/output-static-checks.svg
b/images/breeze/output-static-checks.svg
index d9188e5fe8..e76f1a3f27 100644
--- a/images/breeze/output-static-checks.svg
+++ b/images/breeze/output-static-checks.svg
@@ -19,85 +19,85 @@
font-weight: 700;
}
- .terminal-2026671122-matrix {
+ .terminal-158108476-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 26.400000000000002px;
font-variant-east-asian: full-width;
}
- .terminal-2026671122-title {
+ .terminal-158108476-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-2026671122-r1 { fill: #c5c8c6;font-weight: bold }
-.terminal-2026671122-r2 { fill: #c5c8c6 }
-.terminal-2026671122-r3 { fill: #d0b344;font-weight: bold }
-.terminal-2026671122-r4 { fill: #868887 }
-.terminal-2026671122-r5 { fill: #68a0b3;font-weight: bold }
-.terminal-2026671122-r6 { fill: #98a84b;font-weight: bold }
-.terminal-2026671122-r7 { fill: #8d7b39 }
+ .terminal-158108476-r1 { fill: #c5c8c6;font-weight: bold }
+.terminal-158108476-r2 { fill: #c5c8c6 }
+.terminal-158108476-r3 { fill: #d0b344;font-weight: bold }
+.terminal-158108476-r4 { fill: #868887 }
+.terminal-158108476-r5 { fill: #68a0b3;font-weight: bold }
+.terminal-158108476-r6 { fill: #98a84b;font-weight: bold }
+.terminal-158108476-r7 { fill: #8d7b39 }
</style>
- <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1"
x="16" y="20" width="1512" height="1372" rx="12"/><text
class="terminal-2026671122-title" fill="#c5c8c6" text-anchor="middle" x="756"
y="46">Command: static-checks</text>
+ <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1"
x="16" y="20" width="1512" height="1372" rx="12"/><text
class="terminal-158108476-title" fill="#c5c8c6" text-anchor="middle" x="756"
y="46">Command: static-checks</text>
<circle cx="40" cy="40" r="7" fill="#ff5f57"/>
<circle cx="62" cy="40" r="7" fill="#febc2e"/>
<circle cx="84" cy="40" r="7" fill="#28c840"/>
<g transform="translate(28, 60)">
- <text alignment-baseline="baseline" class="terminal-2026671122-matrix"
font-variant="east-asian-width-values"><tspan class="terminal-2026671122-r1"
x="0" y="20"
textLength="1488">                                                   
[...]
-</tspan><tspan class="terminal-2026671122-r1" x="0" y="46.4"
textLength="12.4"> </tspan><tspan class="terminal-2026671122-r3" x="12.4"
y="46.4" textLength="86.8">Usage: </tspan><tspan
class="terminal-2026671122-r1" x="99.2" y="46.4"
textLength="1388.8">breeze static-checks [OPTIONS] [PRECOMMIT_ARGS]...                           &#
[...]
-</tspan><tspan class="terminal-2026671122-r1" x="0" y="72.8"
textLength="1488">                                                                     
[...]
-</tspan><tspan class="terminal-2026671122-r2" x="0" y="99.2"
textLength="12.4"> </tspan><tspan class="terminal-2026671122-r2" x="12.4"
y="99.2"
textLength="1463.2">Run static checks.                                                 &
[...]
-</tspan><tspan class="terminal-2026671122-r2" x="0" y="125.6"
textLength="1488">                                                                    
[...]
-</tspan><tspan class="terminal-2026671122-r4" x="0" y="152"
textLength="1488">╭─ Pre-commit flags ───────────────────────────────────────────────────────────────────────────────────────────────────╮</tspan><tspan
class="terminal-2026671122-r2" x="1488" y="152" textLength="12.4">
-</tspan><tspan class="terminal-2026671122-r4" x="0" y="178.4"
textLength="12.4">│</tspan><tspan class="terminal-2026671122-r2" x="12.4"
y="178.4" textLength="24.8">  </tspan><tspan
class="terminal-2026671122-r5" x="37.2" y="178.4"
textLength="74.4">--type</tspan><tspan class="terminal-2026671122-r2" x="111.6"
y="178.4"
textLength="223.2">                  </tspan><tspan
class="terminal-202 [...]
-</tspan><tspan class="terminal-2026671122-r4" x="0" y="204.8"
textLength="12.4">│</tspan><tspan class="terminal-2026671122-r2" x="12.4"
y="204.8"
textLength="372">                              </tspan><tspan
class="terminal-2026671122-r7" x="384.4" y="204.8"
textLength="1066.4">(all | black | blacken-docs | che
[...]
-</tspan><tspan class="terminal-2026671122-r4" x="0" y="231.2"
textLength="12.4">│</tspan><tspan class="terminal-2026671122-r2" x="12.4"
y="231.2"
textLength="372">                              </tspan><tspan
class="terminal-2026671122-r7" x="384.4" y="231.2"
textLength="1066.4">check-airflow-config-yaml-consistent | check-airflow-
[...]
-</tspan><tspan class="terminal-2026671122-r4" x="0" y="257.6"
textLength="12.4">│</tspan><tspan class="terminal-2026671122-r2" x="12.4"
y="257.6"
textLength="372">                              </tspan><tspan
class="terminal-2026671122-r7" x="384.4" y="257.6"
textLength="1066.4">check-apache-license-rat | check-base-operator-usage&
[...]
-</tspan><tspan class="terminal-2026671122-r4" x="0" y="284"
textLength="12.4">│</tspan><tspan class="terminal-2026671122-r2" x="12.4"
y="284"
textLength="372">                              </tspan><tspan
class="terminal-2026671122-r7" x="384.4" y="284"
textLength="1066.4">check-boring-cyborg-configuration | check-breeze-top-depend
[...]
-</tspan><tspan class="terminal-2026671122-r4" x="0" y="310.4"
textLength="12.4">│</tspan><tspan class="terminal-2026671122-r2" x="12.4"
y="310.4"
textLength="372">                              </tspan><tspan
class="terminal-2026671122-r7" x="384.4" y="310.4"
textLength="1066.4">check-builtin-literals | check-changelog-has-no-dupli
[...]
-</tspan><tspan class="terminal-2026671122-r4" x="0" y="336.8"
textLength="12.4">│</tspan><tspan class="terminal-2026671122-r2" x="12.4"
y="336.8"
textLength="372">                              </tspan><tspan
class="terminal-2026671122-r7" x="384.4" y="336.8"
textLength="1066.4">check-daysago-import-from-utils | check-docstring-par
[...]
-</tspan><tspan class="terminal-2026671122-r4" x="0" y="363.2"
textLength="12.4">│</tspan><tspan class="terminal-2026671122-r2" x="12.4"
y="363.2"
textLength="372">                              </tspan><tspan
class="terminal-2026671122-r7" x="384.4" y="363.2"
textLength="1066.4">check-executables-have-shebangs | check-extra-package
[...]
-</tspan><tspan class="terminal-2026671122-r4" x="0" y="389.6"
textLength="12.4">│</tspan><tspan class="terminal-2026671122-r2" x="12.4"
y="389.6"
textLength="372">                              </tspan><tspan
class="terminal-2026671122-r7" x="384.4" y="389.6"
textLength="1066.4">| check-for-inclusive-language | check-hooks-app
[...]
-</tspan><tspan class="terminal-2026671122-r4" x="0" y="416"
textLength="12.4">│</tspan><tspan class="terminal-2026671122-r2" x="12.4"
y="416"
textLength="372">                              </tspan><tspan
class="terminal-2026671122-r7" x="384.4" y="416"
textLength="1066.4">check-incorrect-use-of-LoggingMixin | check-integrations-ar
[...]
-</tspan><tspan class="terminal-2026671122-r4" x="0" y="442.4"
textLength="12.4">│</tspan><tspan class="terminal-2026671122-r2" x="12.4"
y="442.4"
textLength="372">                              </tspan><tspan
class="terminal-2026671122-r7" x="384.4" y="442.4"
textLength="1066.4">check-merge-conflict | check-newsfragments-are-valid&
[...]
-</tspan><tspan class="terminal-2026671122-r4" x="0" y="468.8"
textLength="12.4">│</tspan><tspan class="terminal-2026671122-r2" x="12.4"
y="468.8"
textLength="372">                              </tspan><tspan
class="terminal-2026671122-r7" x="384.4" y="468.8"
textLength="1066.4">check-no-providers-in-core-examples | check-no-relati
[...]
-</tspan><tspan class="terminal-2026671122-r4" x="0" y="495.2"
textLength="12.4">│</tspan><tspan class="terminal-2026671122-r2" x="12.4"
y="495.2"
textLength="372">                              </tspan><tspan
class="terminal-2026671122-r7" x="384.4" y="495.2"
textLength="1066.4">check-persist-credentials-disabled-in-github-workflows |&#
[...]
-</tspan><tspan class="terminal-2026671122-r4" x="0" y="521.6"
textLength="12.4">│</tspan><tspan class="terminal-2026671122-r2" x="12.4"
y="521.6"
textLength="372">                              </tspan><tspan
class="terminal-2026671122-r7" x="384.4" y="521.6"
textLength="1066.4">check-pre-commit-information-consistent | check-provi
[...]
-</tspan><tspan class="terminal-2026671122-r4" x="0" y="548"
textLength="12.4">│</tspan><tspan class="terminal-2026671122-r2" x="12.4"
y="548"
textLength="372">                              </tspan><tspan
class="terminal-2026671122-r7" x="384.4" y="548"
textLength="1066.4">check-provider-yaml-valid | check-providers-init-file-missi
[...]
-</tspan><tspan class="terminal-2026671122-r4" x="0" y="574.4"
textLength="12.4">│</tspan><tspan class="terminal-2026671122-r2" x="12.4"
y="574.4"
textLength="372">                              </tspan><tspan
class="terminal-2026671122-r7" x="384.4" y="574.4"
textLength="1066.4">check-providers-subpackages-init-file-exist | check-p
[...]
-</tspan><tspan class="terminal-2026671122-r4" x="0" y="600.8"
textLength="12.4">│</tspan><tspan class="terminal-2026671122-r2" x="12.4"
y="600.8"
textLength="372">                              </tspan><tspan
class="terminal-2026671122-r7" x="384.4" y="600.8"
textLength="1066.4">check-revision-heads-map | check-safe-filter-usage-in
[...]
-</tspan><tspan class="terminal-2026671122-r4" x="0" y="627.2"
textLength="12.4">│</tspan><tspan class="terminal-2026671122-r2" x="12.4"
y="627.2"
textLength="372">                              </tspan><tspan
class="terminal-2026671122-r7" x="384.4" y="627.2"
textLength="1066.4">check-start-date-not-used-in-defaults | check-system-
[...]
-</tspan><tspan class="terminal-2026671122-r4" x="0" y="653.6"
textLength="12.4">│</tspan><tspan class="terminal-2026671122-r2" x="12.4"
y="653.6"
textLength="372">                              </tspan><tspan
class="terminal-2026671122-r7" x="384.4" y="653.6"
textLength="1066.4">codespell | debug-statements | detect-priva
[...]
-</tspan><tspan class="terminal-2026671122-r4" x="0" y="680"
textLength="12.4">│</tspan><tspan class="terminal-2026671122-r2" x="12.4"
y="680"
textLength="372">                              </tspan><tspan
class="terminal-2026671122-r7" x="384.4" y="680"
textLength="1066.4">fix-encoding-pragma | flynt | forbid-tabs |&
[...]
-</tspan><tspan class="terminal-2026671122-r4" x="0" y="706.4"
textLength="12.4">│</tspan><tspan class="terminal-2026671122-r2" x="12.4"
y="706.4"
textLength="372">                              </tspan><tspan
class="terminal-2026671122-r7" x="384.4" y="706.4"
textLength="1066.4">lint-chart-schema | lint-css | lint-dockerf
[...]
-</tspan><tspan class="terminal-2026671122-r4" x="0" y="732.8"
textLength="12.4">│</tspan><tspan class="terminal-2026671122-r2" x="12.4"
y="732.8"
textLength="372">                              </tspan><tspan
class="terminal-2026671122-r7" x="384.4" y="732.8"
textLength="1066.4">lint-json-schema | lint-markdown | lint-ope
[...]
-</tspan><tspan class="terminal-2026671122-r4" x="0" y="759.2"
textLength="12.4">│</tspan><tspan class="terminal-2026671122-r2" x="12.4"
y="759.2"
textLength="372">                              </tspan><tspan
class="terminal-2026671122-r7" x="384.4" y="759.2"
textLength="1066.4">pretty-format-json | pydocstyle | python-no
[...]
-</tspan><tspan class="terminal-2026671122-r4" x="0" y="785.6"
textLength="12.4">│</tspan><tspan class="terminal-2026671122-r2" x="12.4"
y="785.6"
textLength="372">                              </tspan><tspan
class="terminal-2026671122-r7" x="384.4" y="785.6"
textLength="1066.4">run-flake8 | run-mypy | run-shellcheck 
[...]
-</tspan><tspan class="terminal-2026671122-r4" x="0" y="812"
textLength="12.4">│</tspan><tspan class="terminal-2026671122-r2" x="12.4"
y="812"
textLength="372">                              </tspan><tspan
class="terminal-2026671122-r7" x="384.4" y="812"
textLength="1066.4">| update-breeze-file | update-breeze-readme-config-has
[...]
-</tspan><tspan class="terminal-2026671122-r4" x="0" y="838.4"
textLength="12.4">│</tspan><tspan class="terminal-2026671122-r2" x="12.4"
y="838.4"
textLength="372">                              </tspan><tspan
class="terminal-2026671122-r7" x="384.4" y="838.4"
textLength="1066.4">update-in-the-wild-to-be-sorted | update-inlined-dock
[...]
-</tspan><tspan class="terminal-2026671122-r4" x="0" y="864.8"
textLength="12.4">│</tspan><tspan class="terminal-2026671122-r2" x="12.4"
y="864.8"
textLength="372">                              </tspan><tspan
class="terminal-2026671122-r7" x="384.4" y="864.8"
textLength="1066.4">update-local-yml-file | update-migration-references&#
[...]
-</tspan><tspan class="terminal-2026671122-r4" x="0" y="891.2"
textLength="12.4">│</tspan><tspan class="terminal-2026671122-r2" x="12.4"
y="891.2"
textLength="372">                              </tspan><tspan
class="terminal-2026671122-r7" x="384.4" y="891.2"
textLength="1066.4">update-setup-cfg-file | update-spelling-wordlist-to-b
[...]
-</tspan><tspan class="terminal-2026671122-r4" x="0" y="917.6"
textLength="12.4">│</tspan><tspan class="terminal-2026671122-r2" x="12.4"
y="917.6"
textLength="372">                              </tspan><tspan
class="terminal-2026671122-r7" x="384.4" y="917.6"
textLength="1066.4">update-supported-versions | update-vendored-in-k8s-js
[...]
-</tspan><tspan class="terminal-2026671122-r4" x="0" y="944"
textLength="12.4">│</tspan><tspan class="terminal-2026671122-r2" x="12.4"
y="944"
textLength="372">                              </tspan><tspan
class="terminal-2026671122-r7" x="384.4" y="944"
textLength="1066.4">yamllint | yesqa)       
[...]
-</tspan><tspan class="terminal-2026671122-r4" x="0" y="970.4"
textLength="12.4">│</tspan><tspan class="terminal-2026671122-r2" x="12.4"
y="970.4" textLength="24.8">  </tspan><tspan
class="terminal-2026671122-r5" x="37.2" y="970.4"
textLength="74.4">--file</tspan><tspan class="terminal-2026671122-r2" x="111.6"
y="970.4"
textLength="223.2">                  </tspan><tspan
class="terminal-202 [...]
-</tspan><tspan class="terminal-2026671122-r4" x="0" y="996.8"
textLength="12.4">│</tspan><tspan class="terminal-2026671122-r2" x="12.4"
y="996.8" textLength="24.8">  </tspan><tspan
class="terminal-2026671122-r5" x="37.2" y="996.8"
textLength="136.4">--all-files</tspan><tspan class="terminal-2026671122-r2"
x="173.6" y="996.8"
textLength="161.2">             </tspan><tspan
class="terminal-2026671122-r6" x="334.8" y= [...]
-</tspan><tspan class="terminal-2026671122-r4" x="0" y="1023.2"
textLength="12.4">│</tspan><tspan class="terminal-2026671122-r2" x="12.4"
y="1023.2" textLength="24.8">  </tspan><tspan
class="terminal-2026671122-r5" x="37.2" y="1023.2"
textLength="272.8">--show-diff-on-failure</tspan><tspan
class="terminal-2026671122-r2" x="310" y="1023.2"
textLength="24.8">  </tspan><tspan class="terminal-2026671122-r6"
x="334.8" y="1023.2" textLength="24.8">-s</tspan><tspan class="ter [...]
-</tspan><tspan class="terminal-2026671122-r4" x="0" y="1049.6"
textLength="12.4">│</tspan><tspan class="terminal-2026671122-r2" x="12.4"
y="1049.6" textLength="24.8">  </tspan><tspan
class="terminal-2026671122-r5" x="37.2" y="1049.6"
textLength="161.2">--last-commit</tspan><tspan class="terminal-2026671122-r2"
x="198.4" y="1049.6"
textLength="136.4">           </tspan><tspan
class="terminal-2026671122-r6" x="334.8" y="1049. [...]
-</tspan><tspan class="terminal-2026671122-r4" x="0" y="1076"
textLength="1488">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</tspan><tspan
class="terminal-2026671122-r2" x="1488" y="1076" textLength="12.4">
-</tspan><tspan class="terminal-2026671122-r4" x="0" y="1102.4"
textLength="1488">╭─ Options ────────────────────────────────────────────────────────────────────────────────────────────────────────────╮</tspan><tspan
class="terminal-2026671122-r2" x="1488" y="1102.4" textLength="12.4">
-</tspan><tspan class="terminal-2026671122-r4" x="0" y="1128.8"
textLength="12.4">│</tspan><tspan class="terminal-2026671122-r2" x="12.4"
y="1128.8" textLength="24.8">  </tspan><tspan
class="terminal-2026671122-r5" x="37.2" y="1128.8"
textLength="148.8">--commit-ref</tspan><tspan class="terminal-2026671122-r2"
x="186" y="1128.8"
textLength="111.6">         </tspan><tspan
class="terminal-2026671122-r6" x="297.6" y="1128.8" textLength=" [...]
-</tspan><tspan class="terminal-2026671122-r4" x="0" y="1155.2"
textLength="12.4">│</tspan><tspan class="terminal-2026671122-r2" x="12.4"
y="1155.2"
textLength="520.8">                           exclusive with </tspan><tspan
class="terminal-2026671122-r5" x="533.2" y="1155.2"
textLength="161.2">--last-commit</tspan><tspan class="terminal-20266711 [...]
-</tspan><tspan class="terminal-2026671122-r4" x="0" y="1181.6"
textLength="12.4">│</tspan><tspan class="terminal-2026671122-r2" x="12.4"
y="1181.6"
textLength="334.8">                           </tspan><tspan
class="terminal-2026671122-r7" x="347.2" y="1181.6"
textLength="1103.6">(TEXT)           
[...]
-</tspan><tspan class="terminal-2026671122-r4" x="0" y="1208"
textLength="12.4">│</tspan><tspan class="terminal-2026671122-r2" x="12.4"
y="1208" textLength="24.8">  </tspan><tspan
class="terminal-2026671122-r5" x="37.2" y="1208"
textLength="111.6">--verbose</tspan><tspan class="terminal-2026671122-r2"
x="148.8" y="1208"
textLength="148.8">            </tspan><tspan
class="terminal-2026671122-r6" x="297.6" y="1208" textL [...]
-</tspan><tspan class="terminal-2026671122-r4" x="0" y="1234.4"
textLength="12.4">│</tspan><tspan class="terminal-2026671122-r2" x="12.4"
y="1234.4" textLength="24.8">  </tspan><tspan
class="terminal-2026671122-r5" x="37.2" y="1234.4"
textLength="111.6">--dry-run</tspan><tspan class="terminal-2026671122-r2"
x="148.8" y="1234.4"
textLength="148.8">            </tspan><tspan
class="terminal-2026671122-r6" x="297.6" y="123 [...]
-</tspan><tspan class="terminal-2026671122-r4" x="0" y="1260.8"
textLength="12.4">│</tspan><tspan class="terminal-2026671122-r2" x="12.4"
y="1260.8" textLength="24.8">  </tspan><tspan
class="terminal-2026671122-r5" x="37.2" y="1260.8"
textLength="235.6">--github-repository</tspan><tspan
class="terminal-2026671122-r2" x="272.8" y="1260.8"
textLength="24.8">  </tspan><tspan class="terminal-2026671122-r6"
x="297.6" y="1260.8" textLength="24.8">-g</tspan><tspan class="term [...]
-</tspan><tspan class="terminal-2026671122-r4" x="0" y="1287.2"
textLength="12.4">│</tspan><tspan class="terminal-2026671122-r2" x="12.4"
y="1287.2" textLength="24.8">  </tspan><tspan
class="terminal-2026671122-r5" x="37.2" y="1287.2"
textLength="74.4">--help</tspan><tspan class="terminal-2026671122-r2" x="111.6"
y="1287.2"
textLength="186">               </tspan><tspan
class="terminal-2026671122-r6" x="2 [...]
-</tspan><tspan class="terminal-2026671122-r4" x="0" y="1313.6"
textLength="1488">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</tspan><tspan
class="terminal-2026671122-r2" x="1488" y="1313.6" textLength="12.4">
+ <text alignment-baseline="baseline" class="terminal-158108476-matrix"
font-variant="east-asian-width-values"><tspan class="terminal-158108476-r1"
x="0" y="20"
textLength="1488">                                                    
[...]
+</tspan><tspan class="terminal-158108476-r1" x="0" y="46.4"
textLength="12.4"> </tspan><tspan class="terminal-158108476-r3" x="12.4"
y="46.4" textLength="86.8">Usage: </tspan><tspan
class="terminal-158108476-r1" x="99.2" y="46.4"
textLength="1388.8">breeze static-checks [OPTIONS] [PRECOMMIT_ARGS]...                            
[...]
+</tspan><tspan class="terminal-158108476-r1" x="0" y="72.8"
textLength="1488">                                                                     
[...]
+</tspan><tspan class="terminal-158108476-r2" x="0" y="99.2"
textLength="12.4"> </tspan><tspan class="terminal-158108476-r2" x="12.4"
y="99.2"
textLength="1463.2">Run static checks.                                                 
[...]
+</tspan><tspan class="terminal-158108476-r2" x="0" y="125.6"
textLength="1488">                                                                     
[...]
+</tspan><tspan class="terminal-158108476-r4" x="0" y="152"
textLength="1488">╭─ Pre-commit flags ───────────────────────────────────────────────────────────────────────────────────────────────────╮</tspan><tspan
class="terminal-158108476-r2" x="1488" y="152" textLength="12.4">
+</tspan><tspan class="terminal-158108476-r4" x="0" y="178.4"
textLength="12.4">│</tspan><tspan class="terminal-158108476-r2" x="12.4"
y="178.4" textLength="24.8">  </tspan><tspan
class="terminal-158108476-r5" x="37.2" y="178.4"
textLength="74.4">--type</tspan><tspan class="terminal-158108476-r2" x="111.6"
y="178.4"
textLength="223.2">                  </tspan><tspan
class="terminal-1581084 [...]
+</tspan><tspan class="terminal-158108476-r4" x="0" y="204.8"
textLength="12.4">│</tspan><tspan class="terminal-158108476-r2" x="12.4"
y="204.8"
textLength="372">                              </tspan><tspan
class="terminal-158108476-r7" x="384.4" y="204.8"
textLength="1066.4">(all | black | blacken-docs | check-
[...]
+</tspan><tspan class="terminal-158108476-r4" x="0" y="231.2"
textLength="12.4">│</tspan><tspan class="terminal-158108476-r2" x="12.4"
y="231.2"
textLength="372">                              </tspan><tspan
class="terminal-158108476-r7" x="384.4" y="231.2"
textLength="1066.4">check-airflow-config-yaml-consistent | check-airflow-pro
[...]
+</tspan><tspan class="terminal-158108476-r4" x="0" y="257.6"
textLength="12.4">│</tspan><tspan class="terminal-158108476-r2" x="12.4"
y="257.6"
textLength="372">                              </tspan><tspan
class="terminal-158108476-r7" x="384.4" y="257.6"
textLength="1066.4">check-apache-license-rat | check-base-operator-usage
[...]
+</tspan><tspan class="terminal-158108476-r4" x="0" y="284"
textLength="12.4">│</tspan><tspan class="terminal-158108476-r2" x="12.4"
y="284"
textLength="372">                              </tspan><tspan
class="terminal-158108476-r7" x="384.4" y="284"
textLength="1066.4">check-boring-cyborg-configuration | check-breeze-top-dependenc
[...]
+</tspan><tspan class="terminal-158108476-r4" x="0" y="310.4"
textLength="12.4">│</tspan><tspan class="terminal-158108476-r2" x="12.4"
y="310.4"
textLength="372">                              </tspan><tspan
class="terminal-158108476-r7" x="384.4" y="310.4"
textLength="1066.4">check-builtin-literals | check-changelog-has-no-duplicat
[...]
+</tspan><tspan class="terminal-158108476-r4" x="0" y="336.8"
textLength="12.4">│</tspan><tspan class="terminal-158108476-r2" x="12.4"
y="336.8"
textLength="372">                              </tspan><tspan
class="terminal-158108476-r7" x="384.4" y="336.8"
textLength="1066.4">check-daysago-import-from-utils | check-docstring-param-
[...]
+</tspan><tspan class="terminal-158108476-r4" x="0" y="363.2"
textLength="12.4">│</tspan><tspan class="terminal-158108476-r2" x="12.4"
y="363.2"
textLength="372">                              </tspan><tspan
class="terminal-158108476-r7" x="384.4" y="363.2"
textLength="1066.4">check-executables-have-shebangs | check-extra-packages-r
[...]
+</tspan><tspan class="terminal-158108476-r4" x="0" y="389.6"
textLength="12.4">│</tspan><tspan class="terminal-158108476-r2" x="12.4"
y="389.6"
textLength="372">                              </tspan><tspan
class="terminal-158108476-r7" x="384.4" y="389.6"
textLength="1066.4">| check-for-inclusive-language | check-hooks-apply&
[...]
+</tspan><tspan class="terminal-158108476-r4" x="0" y="416"
textLength="12.4">│</tspan><tspan class="terminal-158108476-r2" x="12.4"
y="416"
textLength="372">                              </tspan><tspan
class="terminal-158108476-r7" x="384.4" y="416"
textLength="1066.4">check-incorrect-use-of-LoggingMixin | check-integrations-are-c
[...]
+</tspan><tspan class="terminal-158108476-r4" x="0" y="442.4"
textLength="12.4">│</tspan><tspan class="terminal-158108476-r2" x="12.4"
y="442.4"
textLength="372">                              </tspan><tspan
class="terminal-158108476-r7" x="384.4" y="442.4"
textLength="1066.4">check-merge-conflict | check-newsfragments-are-valid
[...]
+</tspan><tspan class="terminal-158108476-r4" x="0" y="468.8"
textLength="12.4">│</tspan><tspan class="terminal-158108476-r2" x="12.4"
y="468.8"
textLength="372">                              </tspan><tspan
class="terminal-158108476-r7" x="384.4" y="468.8"
textLength="1066.4">check-no-providers-in-core-examples | check-no-relative-
[...]
+</tspan><tspan class="terminal-158108476-r4" x="0" y="495.2"
textLength="12.4">│</tspan><tspan class="terminal-158108476-r2" x="12.4"
y="495.2"
textLength="372">                              </tspan><tspan
class="terminal-158108476-r7" x="384.4" y="495.2"
textLength="1066.4">check-persist-credentials-disabled-in-github-workflows | 
[...]
+</tspan><tspan class="terminal-158108476-r4" x="0" y="521.6"
textLength="12.4">│</tspan><tspan class="terminal-158108476-r2" x="12.4"
y="521.6"
textLength="372">                              </tspan><tspan
class="terminal-158108476-r7" x="384.4" y="521.6"
textLength="1066.4">check-pre-commit-information-consistent | check-provide-
[...]
+</tspan><tspan class="terminal-158108476-r4" x="0" y="548"
textLength="12.4">│</tspan><tspan class="terminal-158108476-r2" x="12.4"
y="548"
textLength="372">                              </tspan><tspan
class="terminal-158108476-r7" x="384.4" y="548"
textLength="1066.4">check-provider-yaml-valid | check-providers-init-file-missing&
[...]
+</tspan><tspan class="terminal-158108476-r4" x="0" y="574.4"
textLength="12.4">│</tspan><tspan class="terminal-158108476-r2" x="12.4"
y="574.4"
textLength="372">                              </tspan><tspan
class="terminal-158108476-r7" x="384.4" y="574.4"
textLength="1066.4">check-providers-subpackages-init-file-exist | check-pyde
[...]
+</tspan><tspan class="terminal-158108476-r4" x="0" y="600.8"
textLength="12.4">│</tspan><tspan class="terminal-158108476-r2" x="12.4"
y="600.8"
textLength="372">                              </tspan><tspan
class="terminal-158108476-r7" x="384.4" y="600.8"
textLength="1066.4">check-revision-heads-map | check-safe-filter-usage-in-ht
[...]
+</tspan><tspan class="terminal-158108476-r4" x="0" y="627.2"
textLength="12.4">│</tspan><tspan class="terminal-158108476-r2" x="12.4"
y="627.2"
textLength="372">                              </tspan><tspan
class="terminal-158108476-r7" x="384.4" y="627.2"
textLength="1066.4">check-start-date-not-used-in-defaults | check-system-tes
[...]
+</tspan><tspan class="terminal-158108476-r4" x="0" y="653.6"
textLength="12.4">│</tspan><tspan class="terminal-158108476-r2" x="12.4"
y="653.6"
textLength="372">                              </tspan><tspan
class="terminal-158108476-r7" x="384.4" y="653.6"
textLength="1066.4">codespell | debug-statements | detect-private-
[...]
+</tspan><tspan class="terminal-158108476-r4" x="0" y="680"
textLength="12.4">│</tspan><tspan class="terminal-158108476-r2" x="12.4"
y="680"
textLength="372">                              </tspan><tspan
class="terminal-158108476-r7" x="384.4" y="680"
textLength="1066.4">fix-encoding-pragma | flynt | forbid-tabs |
[...]
+</tspan><tspan class="terminal-158108476-r4" x="0" y="706.4"
textLength="12.4">│</tspan><tspan class="terminal-158108476-r2" x="12.4"
y="706.4"
textLength="372">                              </tspan><tspan
class="terminal-158108476-r7" x="384.4" y="706.4"
textLength="1066.4">lint-chart-schema | lint-css | lint-dockerfile
[...]
+</tspan><tspan class="terminal-158108476-r4" x="0" y="732.8"
textLength="12.4">│</tspan><tspan class="terminal-158108476-r2" x="12.4"
y="732.8"
textLength="372">                              </tspan><tspan
class="terminal-158108476-r7" x="384.4" y="732.8"
textLength="1066.4">lint-json-schema | lint-markdown | lint-openap
[...]
+</tspan><tspan class="terminal-158108476-r4" x="0" y="759.2"
textLength="12.4">│</tspan><tspan class="terminal-158108476-r2" x="12.4"
y="759.2"
textLength="372">                              </tspan><tspan
class="terminal-158108476-r7" x="384.4" y="759.2"
textLength="1066.4">pretty-format-json | pydocstyle | python-no-lo
[...]
+</tspan><tspan class="terminal-158108476-r4" x="0" y="785.6"
textLength="12.4">│</tspan><tspan class="terminal-158108476-r2" x="12.4"
y="785.6"
textLength="372">                              </tspan><tspan
class="terminal-158108476-r7" x="384.4" y="785.6"
textLength="1066.4">run-flake8 | run-mypy | run-shellcheck |&
[...]
+</tspan><tspan class="terminal-158108476-r4" x="0" y="812"
textLength="12.4">│</tspan><tspan class="terminal-158108476-r2" x="12.4"
y="812"
textLength="372">                              </tspan><tspan
class="terminal-158108476-r7" x="384.4" y="812"
textLength="1066.4">| update-breeze-file | update-breeze-readme-config-hash&#
[...]
+</tspan><tspan class="terminal-158108476-r4" x="0" y="838.4"
textLength="12.4">│</tspan><tspan class="terminal-158108476-r2" x="12.4"
y="838.4"
textLength="372">                              </tspan><tspan
class="terminal-158108476-r7" x="384.4" y="838.4"
textLength="1066.4">update-in-the-wild-to-be-sorted | update-inlined-dockerf
[...]
+</tspan><tspan class="terminal-158108476-r4" x="0" y="864.8"
textLength="12.4">│</tspan><tspan class="terminal-158108476-r2" x="12.4"
y="864.8"
textLength="372">                              </tspan><tspan
class="terminal-158108476-r7" x="384.4" y="864.8"
textLength="1066.4">update-local-yml-file | update-migration-references 
[...]
+</tspan><tspan class="terminal-158108476-r4" x="0" y="891.2"
textLength="12.4">│</tspan><tspan class="terminal-158108476-r2" x="12.4"
y="891.2"
textLength="372">                              </tspan><tspan
class="terminal-158108476-r7" x="384.4" y="891.2"
textLength="1066.4">update-setup-cfg-file | update-spelling-wordlist-to-be-s
[...]
+</tspan><tspan class="terminal-158108476-r4" x="0" y="917.6"
textLength="12.4">│</tspan><tspan class="terminal-158108476-r2" x="12.4"
y="917.6"
textLength="372">                              </tspan><tspan
class="terminal-158108476-r7" x="384.4" y="917.6"
textLength="1066.4">update-supported-versions | update-vendored-in-k8s-json-
[...]
+</tspan><tspan class="terminal-158108476-r4" x="0" y="944"
textLength="12.4">│</tspan><tspan class="terminal-158108476-r2" x="12.4"
y="944"
textLength="372">                              </tspan><tspan
class="terminal-158108476-r7" x="384.4" y="944"
textLength="1066.4">yamllint | yesqa)       
[...]
+</tspan><tspan class="terminal-158108476-r4" x="0" y="970.4"
textLength="12.4">│</tspan><tspan class="terminal-158108476-r2" x="12.4"
y="970.4" textLength="24.8">  </tspan><tspan
class="terminal-158108476-r5" x="37.2" y="970.4"
textLength="74.4">--file</tspan><tspan class="terminal-158108476-r2" x="111.6"
y="970.4"
textLength="223.2">                  </tspan><tspan
class="terminal-1581084 [...]
+</tspan><tspan class="terminal-158108476-r4" x="0" y="996.8"
textLength="12.4">│</tspan><tspan class="terminal-158108476-r2" x="12.4"
y="996.8" textLength="24.8">  </tspan><tspan
class="terminal-158108476-r5" x="37.2" y="996.8"
textLength="136.4">--all-files</tspan><tspan class="terminal-158108476-r2"
x="173.6" y="996.8"
textLength="161.2">             </tspan><tspan
class="terminal-158108476-r6" x="334.8" y="996. [...]
+</tspan><tspan class="terminal-158108476-r4" x="0" y="1023.2"
textLength="12.4">│</tspan><tspan class="terminal-158108476-r2" x="12.4"
y="1023.2" textLength="24.8">  </tspan><tspan
class="terminal-158108476-r5" x="37.2" y="1023.2"
textLength="272.8">--show-diff-on-failure</tspan><tspan
class="terminal-158108476-r2" x="310" y="1023.2"
textLength="24.8">  </tspan><tspan class="terminal-158108476-r6"
x="334.8" y="1023.2" textLength="24.8">-s</tspan><tspan class="terminal [...]
+</tspan><tspan class="terminal-158108476-r4" x="0" y="1049.6"
textLength="12.4">│</tspan><tspan class="terminal-158108476-r2" x="12.4"
y="1049.6" textLength="24.8">  </tspan><tspan
class="terminal-158108476-r5" x="37.2" y="1049.6"
textLength="161.2">--last-commit</tspan><tspan class="terminal-158108476-r2"
x="198.4" y="1049.6"
textLength="136.4">           </tspan><tspan
class="terminal-158108476-r6" x="334.8" y="1049.6" te [...]
+</tspan><tspan class="terminal-158108476-r4" x="0" y="1076"
textLength="1488">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</tspan><tspan
class="terminal-158108476-r2" x="1488" y="1076" textLength="12.4">
+</tspan><tspan class="terminal-158108476-r4" x="0" y="1102.4"
textLength="1488">╭─ Options ────────────────────────────────────────────────────────────────────────────────────────────────────────────╮</tspan><tspan
class="terminal-158108476-r2" x="1488" y="1102.4" textLength="12.4">
+</tspan><tspan class="terminal-158108476-r4" x="0" y="1128.8"
textLength="12.4">│</tspan><tspan class="terminal-158108476-r2" x="12.4"
y="1128.8" textLength="24.8">  </tspan><tspan
class="terminal-158108476-r5" x="37.2" y="1128.8"
textLength="148.8">--commit-ref</tspan><tspan class="terminal-158108476-r2"
x="186" y="1128.8"
textLength="111.6">         </tspan><tspan
class="terminal-158108476-r6" x="297.6" y="1128.8" textLength="24.8" [...]
+</tspan><tspan class="terminal-158108476-r4" x="0" y="1155.2"
textLength="12.4">│</tspan><tspan class="terminal-158108476-r2" x="12.4"
y="1155.2"
textLength="520.8">                           exclusive with </tspan><tspan
class="terminal-158108476-r5" x="533.2" y="1155.2"
textLength="161.2">--last-commit</tspan><tspan class="terminal-158108476-r [...]
+</tspan><tspan class="terminal-158108476-r4" x="0" y="1181.6"
textLength="12.4">│</tspan><tspan class="terminal-158108476-r2" x="12.4"
y="1181.6"
textLength="334.8">                           </tspan><tspan
class="terminal-158108476-r7" x="347.2" y="1181.6"
textLength="1103.6">(TEXT)            &
[...]
+</tspan><tspan class="terminal-158108476-r4" x="0" y="1208"
textLength="12.4">│</tspan><tspan class="terminal-158108476-r2" x="12.4"
y="1208" textLength="24.8">  </tspan><tspan
class="terminal-158108476-r5" x="37.2" y="1208"
textLength="111.6">--verbose</tspan><tspan class="terminal-158108476-r2"
x="148.8" y="1208"
textLength="148.8">            </tspan><tspan
class="terminal-158108476-r6" x="297.6" y="1208" textLength [...]
+</tspan><tspan class="terminal-158108476-r4" x="0" y="1234.4"
textLength="12.4">│</tspan><tspan class="terminal-158108476-r2" x="12.4"
y="1234.4" textLength="24.8">  </tspan><tspan
class="terminal-158108476-r5" x="37.2" y="1234.4"
textLength="111.6">--dry-run</tspan><tspan class="terminal-158108476-r2"
x="148.8" y="1234.4"
textLength="148.8">            </tspan><tspan
class="terminal-158108476-r6" x="297.6" y="1234.4" [...]
+</tspan><tspan class="terminal-158108476-r4" x="0" y="1260.8"
textLength="12.4">│</tspan><tspan class="terminal-158108476-r2" x="12.4"
y="1260.8" textLength="24.8">  </tspan><tspan
class="terminal-158108476-r5" x="37.2" y="1260.8"
textLength="235.6">--github-repository</tspan><tspan
class="terminal-158108476-r2" x="272.8" y="1260.8"
textLength="24.8">  </tspan><tspan class="terminal-158108476-r6"
x="297.6" y="1260.8" textLength="24.8">-g</tspan><tspan class="terminal- [...]
+</tspan><tspan class="terminal-158108476-r4" x="0" y="1287.2"
textLength="12.4">│</tspan><tspan class="terminal-158108476-r2" x="12.4"
y="1287.2" textLength="24.8">  </tspan><tspan
class="terminal-158108476-r5" x="37.2" y="1287.2"
textLength="74.4">--help</tspan><tspan class="terminal-158108476-r2" x="111.6"
y="1287.2"
textLength="186">               </tspan><tspan
class="terminal-158108476-r6" x="297.6" [...]
+</tspan><tspan class="terminal-158108476-r4" x="0" y="1313.6"
textLength="1488">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</tspan><tspan
class="terminal-158108476-r2" x="1488" y="1313.6" textLength="12.4">
</tspan></text>
</g>
</svg>
diff --git a/scripts/ci/pre_commit/pre_commit_check_pre_commit_hooks.py
b/scripts/ci/pre_commit/pre_commit_check_pre_commit_hooks.py
index 9855091ba8..2a5a25639b 100755
--- a/scripts/ci/pre_commit/pre_commit_check_pre_commit_hooks.py
+++ b/scripts/ci/pre_commit/pre_commit_check_pre_commit_hooks.py
@@ -56,7 +56,7 @@ def get_errors_and_hooks(content: Any, max_length: int) ->
Tuple[List[str], Dict
else:
errors.append(f"The id is missing in {hook}")
continue
- if hook_id == 'mypy':
+ if hook_id == 'run-mypy':
needs_image = True
if 'name' not in hook:
errors.append(
diff --git a/scripts/ci/pre_commit/pre_commit_flake8.py
b/scripts/ci/pre_commit/pre_commit_flake8.py
index 7adba2ffc6..59bd356d24 100755
--- a/scripts/ci/pre_commit/pre_commit_flake8.py
+++ b/scripts/ci/pre_commit/pre_commit_flake8.py
@@ -16,12 +16,9 @@
# specific language governing permissions and limitations
# under the License.
import os
-import subprocess
import sys
from pathlib import Path
-from rich import print
-
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."
@@ -30,22 +27,20 @@ if __name__ not in ("__main__", "__mp_main__"):
AIRFLOW_SOURCES = Path(__file__).parents[3].resolve()
GITHUB_REPOSITORY = os.environ.get('GITHUB_REPOSITORY', "apache/airflow")
+# allow "False", "false", "True", "true", "f", "F", "t", "T" and the like
+VERBOSE = os.environ.get('VERBOSE', "false")[0].lower() == "t"
+DRY_RUN = os.environ.get('DRY_RUN', "false")[0].lower() == "t"
if __name__ == '__main__':
- sys.path.insert(0, str(Path(__file__).parents[3].resolve() / "dev" /
"breeze" / "src"))
- from airflow_breeze.branch_defaults import AIRFLOW_BRANCH
+ sys.path.insert(0, str(AIRFLOW_SOURCES / "dev" / "breeze" / "src"))
from airflow_breeze.global_constants import MOUNT_SELECTED
from airflow_breeze.utils.docker_command_utils import
create_static_check_volumes, get_extra_docker_flags
+ from airflow_breeze.utils.run_utils import get_runnable_ci_image,
run_command
- AIRFLOW_CI_IMAGE =
f"ghcr.io/{GITHUB_REPOSITORY}/{AIRFLOW_BRANCH}/ci/python3.7"
-
- if subprocess.call(args=["docker", "inspect", AIRFLOW_CI_IMAGE],
stdout=subprocess.DEVNULL) != 0:
- print(f'[red]The image {AIRFLOW_CI_IMAGE} is not available.[/]\n')
- print("\n[yellow]Please run at the earliest convenience:[/]\n\nbreeze
build-image --python 3.7\n\n")
- sys.exit(1)
+ airflow_image = get_runnable_ci_image(verbose=VERBOSE, dry_run=DRY_RUN)
create_static_check_volumes()
- return_code = subprocess.call(
- args=[
+ cmd_result = run_command(
+ [
"docker",
"run",
"-t",
@@ -58,9 +53,12 @@ if __name__ == '__main__':
"BACKEND=sqlite",
"--pull",
"never",
- AIRFLOW_CI_IMAGE,
+ airflow_image,
"/opt/airflow/scripts/in_container/run_flake8.sh",
*sys.argv[1:],
],
+ check=False,
+ verbose=VERBOSE,
+ dry_run=DRY_RUN,
)
- sys.exit(return_code)
+ sys.exit(cmd_result.returncode)
diff --git a/scripts/ci/pre_commit/pre_commit_migration_reference.py
b/scripts/ci/pre_commit/pre_commit_migration_reference.py
index e72a7a3326..154a795f3e 100755
--- a/scripts/ci/pre_commit/pre_commit_migration_reference.py
+++ b/scripts/ci/pre_commit/pre_commit_migration_reference.py
@@ -16,12 +16,9 @@
# specific language governing permissions and limitations
# under the License.
import os
-import subprocess
import sys
from pathlib import Path
-from rich import print
-
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."
@@ -30,31 +27,36 @@ if __name__ not in ("__main__", "__mp_main__"):
AIRFLOW_SOURCES = Path(__file__).parents[3].resolve()
GITHUB_REPOSITORY = os.environ.get('GITHUB_REPOSITORY', "apache/airflow")
+# allow "False", "false", "True", "true", "f", "F", "t", "T" and the like
+VERBOSE = os.environ.get('VERBOSE', "false")[0].lower() == "t"
+DRY_RUN = os.environ.get('DRY_RUN', "false")[0].lower() == "t"
if __name__ == '__main__':
- sys.path.insert(0, str(Path(__file__).parents[3].resolve() / "dev" /
"breeze" / "src"))
- from airflow_breeze.branch_defaults import AIRFLOW_BRANCH
+ sys.path.insert(0, str(AIRFLOW_SOURCES / "dev" / "breeze" / "src"))
+ from airflow_breeze.global_constants import MOUNT_SELECTED
+ from airflow_breeze.utils.docker_command_utils import
create_static_check_volumes, get_extra_docker_flags
+ from airflow_breeze.utils.run_utils import get_runnable_ci_image,
run_command
- AIRFLOW_CI_IMAGE =
f"ghcr.io/{GITHUB_REPOSITORY}/{AIRFLOW_BRANCH}/ci/python3.7"
- if subprocess.call(args=["docker", "inspect", AIRFLOW_CI_IMAGE],
stdout=subprocess.DEVNULL) != 0:
- print(f'[red]The image {AIRFLOW_CI_IMAGE} is not available.[/]\n')
- print("\n[yellow]Please run at the earliest convenience:[/]\n\nbreeze
build-image --python 3.7\n\n")
- sys.exit(1)
- return_code = subprocess.call(
- args=[
+ airflow_image = get_runnable_ci_image(verbose=VERBOSE, dry_run=DRY_RUN)
+ create_static_check_volumes()
+ cmd_result = run_command(
+ [
"docker",
"run",
- "-v",
- f"{AIRFLOW_SOURCES}:/opt/airflow/",
+ "-t",
+ *get_extra_docker_flags(MOUNT_SELECTED),
"-e",
"SKIP_ENVIRONMENT_INITIALIZATION=true",
"-e",
"PRINT_INFO_FROM_SCRIPTS=false",
"--pull",
"never",
- AIRFLOW_CI_IMAGE,
+ airflow_image,
"-c",
"python3
/opt/airflow/scripts/in_container/run_migration_reference.py",
],
+ check=False,
+ verbose=VERBOSE,
+ dry_run=DRY_RUN,
)
- sys.exit(return_code)
+ sys.exit(cmd_result.returncode)
diff --git a/scripts/ci/pre_commit/pre_commit_mypy.py
b/scripts/ci/pre_commit/pre_commit_mypy.py
index 9d92b99e80..74d511a65b 100755
--- a/scripts/ci/pre_commit/pre_commit_mypy.py
+++ b/scripts/ci/pre_commit/pre_commit_mypy.py
@@ -16,12 +16,9 @@
# specific language governing permissions and limitations
# under the License.
import os
-import subprocess
import sys
from pathlib import Path
-from rich import print
-
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."
@@ -31,22 +28,20 @@ if __name__ not in ("__main__", "__mp_main__"):
AIRFLOW_SOURCES = Path(__file__).parents[3].resolve()
GITHUB_REPOSITORY = os.environ.get('GITHUB_REPOSITORY', "apache/airflow")
+# allow "False", "false", "True", "true", "f", "F", "t", "T" and the like
+VERBOSE = os.environ.get('VERBOSE', "false")[0].lower() == "t"
+DRY_RUN = os.environ.get('DRY_RUN', "false")[0].lower() == "t"
if __name__ == '__main__':
- sys.path.insert(0, str(Path(__file__).parents[3].resolve() / "dev" /
"breeze" / "src"))
- from airflow_breeze.branch_defaults import AIRFLOW_BRANCH
+ sys.path.insert(0, str(AIRFLOW_SOURCES / "dev" / "breeze" / "src"))
from airflow_breeze.global_constants import MOUNT_SELECTED
from airflow_breeze.utils.docker_command_utils import
create_static_check_volumes, get_extra_docker_flags
+ from airflow_breeze.utils.run_utils import get_runnable_ci_image,
run_command
- AIRFLOW_CI_IMAGE =
f"ghcr.io/{GITHUB_REPOSITORY}/{AIRFLOW_BRANCH}/ci/python3.7"
-
- if subprocess.call(args=["docker", "inspect", AIRFLOW_CI_IMAGE],
stdout=subprocess.DEVNULL) != 0:
- print(f'[red]The image {AIRFLOW_CI_IMAGE} is not available.[/]\n')
- print("\n[yellow]Please run at the earliest convenience:[/]\n\nbreeze
build-image --python 3.7\n\n")
- sys.exit(1)
+ airflow_image = get_runnable_ci_image(verbose=VERBOSE, dry_run=DRY_RUN)
create_static_check_volumes()
- return_code = subprocess.call(
- args=[
+ cmd_result = run_command(
+ [
"docker",
"run",
"-t",
@@ -59,9 +54,12 @@ if __name__ == '__main__':
"BACKEND=sqlite",
"--pull",
"never",
- AIRFLOW_CI_IMAGE,
+ airflow_image,
"/opt/airflow/scripts/in_container/run_mypy.sh",
*sys.argv[1:],
],
+ check=False,
+ verbose=VERBOSE,
+ dry_run=DRY_RUN,
)
- sys.exit(return_code)
+ sys.exit(cmd_result.returncode)
diff --git a/scripts/ci/pre_commit/pre_commit_ui_lint.py
b/scripts/ci/pre_commit/pre_commit_ui_lint.py
index 93a5c3bf72..7755e3d204 100755
--- a/scripts/ci/pre_commit/pre_commit_ui_lint.py
+++ b/scripts/ci/pre_commit/pre_commit_ui_lint.py
@@ -16,12 +16,9 @@
# specific language governing permissions and limitations
# under the License.
import os
-import subprocess
import sys
from pathlib import Path
-from rich import print
-
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."
@@ -29,33 +26,36 @@ if __name__ not in ("__main__", "__mp_main__"):
)
AIRFLOW_SOURCES = Path(__file__).parents[3].resolve()
-GITHUB_REPOSITORY = os.environ.get('GITHUB_REPOSITORY', "apache/airflow")
-AIRFLOW_CI_IMAGE = f"ghcr.io/{GITHUB_REPOSITORY}/main/ci/python3.7"
+# allow "False", "false", "True", "true", "f", "F", "t", "T" and the like
+VERBOSE = os.environ.get('VERBOSE', "false")[0].lower() == "t"
+DRY_RUN = os.environ.get('DRY_RUN', "false")[0].lower() == "t"
if __name__ == '__main__':
- sys.path.insert(0, str(Path(__file__).parents[3].resolve() / "dev" /
"breeze" / "src"))
- from airflow_breeze.branch_defaults import AIRFLOW_BRANCH
+ sys.path.insert(0, str(AIRFLOW_SOURCES / "dev" / "breeze" / "src"))
+ from airflow_breeze.global_constants import MOUNT_SELECTED
+ from airflow_breeze.utils.docker_command_utils import
create_static_check_volumes, get_extra_docker_flags
+ from airflow_breeze.utils.run_utils import get_runnable_ci_image,
run_command
- AIRFLOW_CI_IMAGE =
f"ghcr.io/{GITHUB_REPOSITORY}/{AIRFLOW_BRANCH}/ci/python3.7"
- if subprocess.call(args=["docker", "inspect", AIRFLOW_CI_IMAGE],
stdout=subprocess.DEVNULL) != 0:
- print(f'[red]The image {AIRFLOW_CI_IMAGE} is not available.[/]\n')
- print("\n[yellow]Please run at the earliest convenience:[/]\n\nbreeze
build-image --python 3.7\n\n")
- sys.exit(1)
- return_code = subprocess.call(
- args=[
+ airflow_image = get_runnable_ci_image(verbose=VERBOSE, dry_run=DRY_RUN)
+ create_static_check_volumes()
+ cmd_result = run_command(
+ [
"docker",
"run",
- "-v",
- f"{AIRFLOW_SOURCES}:/opt/airflow/",
+ "-t",
+ *get_extra_docker_flags(MOUNT_SELECTED),
"-e",
"SKIP_ENVIRONMENT_INITIALIZATION=true",
"-e",
"PRINT_INFO_FROM_SCRIPTS=false",
"--pull",
"never",
- AIRFLOW_CI_IMAGE,
+ airflow_image,
"-c",
'cd airflow/ui && yarn --frozen-lockfile --non-interactive && yarn
run lint',
],
+ check=False,
+ verbose=VERBOSE,
+ dry_run=DRY_RUN,
)
- sys.exit(return_code)
+ sys.exit(cmd_result.returncode)
diff --git a/scripts/ci/pre_commit/pre_commit_www_lint.py
b/scripts/ci/pre_commit/pre_commit_www_lint.py
index c2807d4082..65553c3d81 100755
--- a/scripts/ci/pre_commit/pre_commit_www_lint.py
+++ b/scripts/ci/pre_commit/pre_commit_www_lint.py
@@ -16,12 +16,9 @@
# specific language governing permissions and limitations
# under the License.
import os
-import subprocess
import sys
from pathlib import Path
-from rich import print
-
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."
@@ -30,32 +27,36 @@ if __name__ not in ("__main__", "__mp_main__"):
AIRFLOW_SOURCES = Path(__file__).parents[3].resolve()
GITHUB_REPOSITORY = os.environ.get('GITHUB_REPOSITORY', "apache/airflow")
-AIRFLOW_CI_IMAGE = f"ghcr.io/{GITHUB_REPOSITORY}/main/ci/python3.7"
+# allow "False", "false", "True", "true", "f", "F", "t", "T" and the like
+VERBOSE = os.environ.get('VERBOSE', "false")[0].lower() == "t"
+DRY_RUN = os.environ.get('DRY_RUN', "false")[0].lower() == "t"
if __name__ == '__main__':
- sys.path.insert(0, str(Path(__file__).parents[3].resolve() / "dev" /
"breeze" / "src"))
- from airflow_breeze.branch_defaults import AIRFLOW_BRANCH
+ sys.path.insert(0, str(AIRFLOW_SOURCES / "dev" / "breeze" / "src"))
+ from airflow_breeze.global_constants import MOUNT_SELECTED
+ from airflow_breeze.utils.docker_command_utils import
create_static_check_volumes, get_extra_docker_flags
+ from airflow_breeze.utils.run_utils import get_runnable_ci_image,
run_command
- AIRFLOW_CI_IMAGE =
f"ghcr.io/{GITHUB_REPOSITORY}/{AIRFLOW_BRANCH}/ci/python3.7"
- if subprocess.call(args=["docker", "inspect", AIRFLOW_CI_IMAGE],
stdout=subprocess.DEVNULL) != 0:
- print(f'[red]The image {AIRFLOW_CI_IMAGE} is not available.[/]\n')
- print("\n[yellow]Please run at the earliest convenience:[/]\n\nbreeze
build-image --python 3.7\n\n")
- sys.exit(1)
- return_code = subprocess.call(
- args=[
+ airflow_image = get_runnable_ci_image(verbose=VERBOSE, dry_run=DRY_RUN)
+ create_static_check_volumes()
+ cmd_result = run_command(
+ [
"docker",
"run",
- "-v",
- f"{AIRFLOW_SOURCES}:/opt/airflow/",
+ "-t",
+ *get_extra_docker_flags(MOUNT_SELECTED),
"-e",
"SKIP_ENVIRONMENT_INITIALIZATION=true",
"-e",
"PRINT_INFO_FROM_SCRIPTS=false",
"--pull",
"never",
- AIRFLOW_CI_IMAGE,
+ airflow_image,
"-c",
'cd airflow/www && yarn --frozen-lockfile --non-interactive &&
yarn run lint',
],
+ check=False,
+ verbose=VERBOSE,
+ dry_run=DRY_RUN,
)
- sys.exit(return_code)
+ sys.exit(cmd_result.returncode)