diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 883816f901e60..0692904ce58fd 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -341,7 +341,7 @@ repos: pass_filenames: true files: ^airflow/providers/.*\.py$ additional_dependencies: ['rich>=12.4.4'] - - id: update-breeze-file + - id: update-breeze-cmd-output name: Update output of breeze commands in BREEZE.rst entry: ./scripts/ci/pre_commit/pre_commit_breeze_cmd_line.py language: python diff --git a/STATIC_CODE_CHECKS.rst b/STATIC_CODE_CHECKS.rst index 53b526fdfcd8d..27338c3f9d367 100644 --- a/STATIC_CODE_CHECKS.rst +++ b/STATIC_CODE_CHECKS.rst @@ -294,7 +294,7 @@ require Breeze Docker image to be build locally. +--------------------------------------------------------+------------------------------------------------------------------+---------+ | trailing-whitespace | Remove trailing whitespace at end of line | | +--------------------------------------------------------+------------------------------------------------------------------+---------+ -| update-breeze-file | Update output of breeze commands in BREEZE.rst | | +| update-breeze-cmd-output | Update output of breeze commands in BREEZE.rst | | +--------------------------------------------------------+------------------------------------------------------------------+---------+ | update-breeze-readme-config-hash | Update Breeze README.md with config files hash | | +--------------------------------------------------------+------------------------------------------------------------------+---------+ diff --git a/dev/breeze/src/airflow_breeze/pre_commit_ids.py b/dev/breeze/src/airflow_breeze/pre_commit_ids.py index 541707045661f..29427fea48cfb 100644 --- a/dev/breeze/src/airflow_breeze/pre_commit_ids.py +++ b/dev/breeze/src/airflow_breeze/pre_commit_ids.py @@ -94,7 +94,7 @@ 'run-shellcheck', 'static-check-autoflake', 'trailing-whitespace', - 'update-breeze-file', + 'update-breeze-cmd-output', 'update-breeze-readme-config-hash', 'update-extras', 'update-in-the-wild-to-be-sorted', diff --git a/images/breeze/output-commands-hash.txt b/images/breeze/output-commands-hash.txt index 70ac9b305de2f..ef6122b57ad37 100644 --- a/images/breeze/output-commands-hash.txt +++ b/images/breeze/output-commands-hash.txt @@ -1 +1,5 @@ -8b4116c1808c84d491961283a4ddbec2 + +# This file is automatically generated by pre-commit. If you have a conflict with this file +# Please do not solve it but run `breeze regenerate-command-images`. +# This command should fix the conflict and regenerate help images that you have conflict with. +82cd0f28c2c53f699a5b571275f8f674 diff --git a/images/breeze/output-static-checks.svg b/images/breeze/output-static-checks.svg index 695266c06fd3b..49cf642d99ad6 100644 --- a/images/breeze/output-static-checks.svg +++ b/images/breeze/output-static-checks.svg @@ -19,241 +19,241 @@ font-weight: 700; } - .terminal-2504633254-matrix { + .terminal-749841752-matrix { font-family: Fira Code, monospace; font-size: 20px; line-height: 24.4px; font-variant-east-asian: full-width; } - .terminal-2504633254-title { + .terminal-749841752-title { font-size: 18px; font-weight: bold; font-family: arial; } - .terminal-2504633254-r1 { fill: #c5c8c6;font-weight: bold } -.terminal-2504633254-r2 { fill: #c5c8c6 } -.terminal-2504633254-r3 { fill: #d0b344;font-weight: bold } -.terminal-2504633254-r4 { fill: #868887 } -.terminal-2504633254-r5 { fill: #68a0b3;font-weight: bold } -.terminal-2504633254-r6 { fill: #98a84b;font-weight: bold } -.terminal-2504633254-r7 { fill: #8d7b39 } + .terminal-749841752-r1 { fill: #c5c8c6;font-weight: bold } +.terminal-749841752-r2 { fill: #c5c8c6 } +.terminal-749841752-r3 { fill: #d0b344;font-weight: bold } +.terminal-749841752-r4 { fill: #868887 } +.terminal-749841752-r5 { fill: #68a0b3;font-weight: bold } +.terminal-749841752-r6 { fill: #98a84b;font-weight: bold } +.terminal-749841752-r7 { fill: #8d7b39 } - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - Command: static-checks + Command: static-checks - + - - -Usage: breeze static-checks [OPTIONS] [PRECOMMIT_ARGS]... - -Run static checks. - -╭─ Pre-commit flags ───────────────────────────────────────────────────────────────────────────────────────────────────╮ ---type-tType(s) of the static checks to run (multiple can be added).                             -(all | black | blacken-docs | check-airflow-2-1-compatibility |                          -check-airflow-config-yaml-consistent | check-airflow-providers-have-extras |             -check-apache-license-rat | check-base-operator-partial-arguments |                       -check-base-operator-usage | check-boring-cyborg-configuration |                          -check-breeze-top-dependencies-limited | check-builtin-literals |                         -check-changelog-has-no-duplicates | check-daysago-import-from-utils |                    -check-docstring-param-types | check-example-dags-urls | check-executables-have-shebangs  -| check-extra-packages-references | check-extras-order | check-for-inclusive-language |  -check-hooks-apply | check-incorrect-use-of-LoggingMixin |                                -check-integrations-are-consistent | check-merge-conflict | check-newsfragments-are-valid -| check-no-providers-in-core-examples | check-no-relative-imports |                      -check-persist-credentials-disabled-in-github-workflows |                                 -check-pre-commit-information-consistent | check-provide-create-sessions-imports |        -check-provider-yaml-valid | check-providers-init-file-missing |                          -check-providers-subpackages-init-file-exist | check-pydevd-left-in-code |                -check-revision-heads-map | check-safe-filter-usage-in-html | check-setup-order |         -check-start-date-not-used-in-defaults | check-system-tests-present |                     -check-system-tests-tocs | check-xml | codespell | create-missing-init-py-files-tests |   -debug-statements | detect-private-key | doctoc | end-of-file-fixer | fix-encoding-pragma -| flynt | forbid-tabs | identity | insert-license | isort | lint-chart-schema | lint-css -| lint-dockerfile | lint-helm-chart | lint-javascript | lint-json-schema | lint-markdown -| lint-openapi | mixed-line-ending | pretty-format-json | pydocstyle |                   -python-no-log-warn | pyupgrade | rst-backticks | run-flake8 | run-mypy | run-shellcheck  -| static-check-autoflake | trailing-whitespace | update-breeze-file |                    -update-breeze-readme-config-hash | update-extras | update-in-the-wild-to-be-sorted |     -update-inlined-dockerfile-scripts | update-local-yml-file | update-migration-references  -| update-providers-dependencies | update-setup-cfg-file |                                -update-spelling-wordlist-to-be-sorted | update-supported-versions |                      -update-vendored-in-k8s-json-schema | update-version | yamllint | yesqa)                  ---file-fList of files to run the checks on.(PATH) ---all-files-aRun checks on all files. ---show-diff-on-failure-sShow diff for files modified by the checks. ---last-commit-cRun checks for all files in last commit. Mutually exclusive with --commit-ref. -╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ -╭─ Options ────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ ---commit-ref-rRun checks for this commit reference only (can be any git commit-ish reference). Mutually   -exclusive with --last-commit.                                                               -(TEXT)                                                                                      ---verbose-vPrint verbose information about performed steps. ---dry-run-DIf dry-run is set, commands are only printed, not executed. ---github-repository-gGitHub repository used to pull, push run images.(TEXT)[default: apache/airflow] ---help-hShow this message and exit. -╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ + + +Usage: breeze static-checks [OPTIONS] [PRECOMMIT_ARGS]... + +Run static checks. + +╭─ Pre-commit flags ───────────────────────────────────────────────────────────────────────────────────────────────────╮ +--type-tType(s) of the static checks to run (multiple can be added).                             +(all | black | blacken-docs | check-airflow-2-1-compatibility |                          +check-airflow-config-yaml-consistent | check-airflow-providers-have-extras |             +check-apache-license-rat | check-base-operator-partial-arguments |                       +check-base-operator-usage | check-boring-cyborg-configuration |                          +check-breeze-top-dependencies-limited | check-builtin-literals |                         +check-changelog-has-no-duplicates | check-daysago-import-from-utils |                    +check-docstring-param-types | check-example-dags-urls | check-executables-have-shebangs  +| check-extra-packages-references | check-extras-order | check-for-inclusive-language |  +check-hooks-apply | check-incorrect-use-of-LoggingMixin |                                +check-integrations-are-consistent | check-merge-conflict | check-newsfragments-are-valid +| check-no-providers-in-core-examples | check-no-relative-imports |                      +check-persist-credentials-disabled-in-github-workflows |                                 +check-pre-commit-information-consistent | check-provide-create-sessions-imports |        +check-provider-yaml-valid | check-providers-init-file-missing |                          +check-providers-subpackages-init-file-exist | check-pydevd-left-in-code |                +check-revision-heads-map | check-safe-filter-usage-in-html | check-setup-order |         +check-start-date-not-used-in-defaults | check-system-tests-present |                     +check-system-tests-tocs | check-xml | codespell | create-missing-init-py-files-tests |   +debug-statements | detect-private-key | doctoc | end-of-file-fixer | fix-encoding-pragma +| flynt | forbid-tabs | identity | insert-license | isort | lint-chart-schema | lint-css +| lint-dockerfile | lint-helm-chart | lint-javascript | lint-json-schema | lint-markdown +| lint-openapi | mixed-line-ending | pretty-format-json | pydocstyle |                   +python-no-log-warn | pyupgrade | rst-backticks | run-flake8 | run-mypy | run-shellcheck  +| static-check-autoflake | trailing-whitespace | update-breeze-cmd-output |              +update-breeze-readme-config-hash | update-extras | update-in-the-wild-to-be-sorted |     +update-inlined-dockerfile-scripts | update-local-yml-file | update-migration-references  +| update-providers-dependencies | update-setup-cfg-file |                                +update-spelling-wordlist-to-be-sorted | update-supported-versions |                      +update-vendored-in-k8s-json-schema | update-version | yamllint | yesqa)                  +--file-fList of files to run the checks on.(PATH) +--all-files-aRun checks on all files. +--show-diff-on-failure-sShow diff for files modified by the checks. +--last-commit-cRun checks for all files in last commit. Mutually exclusive with --commit-ref. +╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ +╭─ Options ────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ +--commit-ref-rRun checks for this commit reference only (can be any git commit-ish reference). Mutually   +exclusive with --last-commit.                                                               +(TEXT)                                                                                      +--verbose-vPrint verbose information about performed steps. +--dry-run-DIf dry-run is set, commands are only printed, not executed. +--github-repository-gGitHub repository used to pull, push run images.(TEXT)[default: apache/airflow] +--help-hShow this message and exit. +╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ diff --git a/scripts/ci/pre_commit/pre_commit_breeze_cmd_line.py b/scripts/ci/pre_commit/pre_commit_breeze_cmd_line.py index c01c6bfbf6b17..81b9fedf52f0e 100755 --- a/scripts/ci/pre_commit/pre_commit_breeze_cmd_line.py +++ b/scripts/ci/pre_commit/pre_commit_breeze_cmd_line.py @@ -30,6 +30,12 @@ SCREENSHOT_WIDTH = "120" +PREAMBLE = """ +# This file is automatically generated by pre-commit. If you have a conflict with this file +# Please do not solve it but run `breeze regenerate-command-images`. +# This command should fix the conflict and regenerate help images that you have conflict with. +""" + def get_command_list(): comp_env = os.environ.copy() @@ -61,7 +67,7 @@ def print_help_for_all_commands(): ) hash_file_path = BREEZE_IMAGES_DIR / "output-commands-hash.txt" try: - old_hash = hash_file_path.read_text() + old_hash = hash_file_path.read_text()[len(PREAMBLE) :] except FileNotFoundError: old_hash = "" if old_hash == new_hash: @@ -83,7 +89,7 @@ def print_help_for_all_commands(): env['RECORD_BREEZE_OUTPUT_FILE'] = str(BREEZE_IMAGES_DIR / f"output-{command}.svg") env['TERM'] = "xterm-256color" check_call(["breeze", command, "--help"], env=env) - hash_file_path.write_text(new_hash) + hash_file_path.write_text(PREAMBLE + new_hash) def verify_all_commands_described_in_docs(): @@ -114,3 +120,9 @@ def verify_all_commands_described_in_docs(): if __name__ == '__main__': print_help_for_all_commands() verify_all_commands_described_in_docs() + console = Console(width=int(SCREENSHOT_WIDTH), color_system="standard") + if os.environ.get('CI'): + console.print( + "\n\n[yellow] If you see that images got re-generatead in CI, please run:[/]" + "\n\n breeze regenerate-command-images\n\n\n" + )