| # 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. |
| --- |
| default_stages: [commit, push] |
| default_language_version: |
| # force all unspecified python hooks to run python3 |
| python: python3 |
| minimum_pre_commit_version: "1.20.0" |
| repos: |
| - repo: meta |
| hooks: |
| - id: identity |
| - id: check-hooks-apply |
| - repo: https://github.com/Lucas-C/pre-commit-hooks |
| rev: v1.1.9 |
| hooks: |
| - id: forbid-tabs |
| exclude: ^docs/Makefile$|^clients/gen/go.sh|\.gitmodules$ |
| - id: insert-license |
| name: Add license for all SQL files |
| files: \.sql$ |
| exclude: ^\.github/.*$ |
| args: |
| - --comment-style |
| - "/*||*/" |
| - --license-filepath |
| - license-templates/LICENSE.txt |
| - --fuzzy-match-generates-todo |
| - id: insert-license |
| name: Add license for all other files |
| exclude: ^\.github/.*$ |
| args: |
| - --comment-style |
| - "|#|" |
| - --license-filepath |
| - license-templates/LICENSE.txt |
| - --fuzzy-match-generates-todo |
| files: > |
| \.properties$|\.cfg$|\.conf$|\.ini$|\.ldif$|\.readthedocs$|\.service$|\.tf$|Dockerfile.*$ |
| - id: insert-license |
| name: Add license for all rst files |
| exclude: ^\.github/.*$ |
| args: |
| - --comment-style |
| - "||" |
| - --license-filepath |
| - license-templates/LICENSE.rst |
| - --fuzzy-match-generates-todo |
| files: \.rst$ |
| - id: insert-license |
| name: Add license for all JS/TS/TSX/CSS/PUML files |
| files: \.(js|ts|tsx|css|puml)$ |
| exclude: ^\.github/.*$ |
| args: |
| - --comment-style |
| - "/*!| *| */" |
| - --license-filepath |
| - license-templates/LICENSE.txt |
| - --fuzzy-match-generates-todo |
| - id: insert-license |
| name: Add license for all JINJA template files |
| files: "^airflow/www/templates/.*\\.html$|^docs/templates/.*\\.html$.*\\.jinja2" |
| exclude: ^\.github/.*$ |
| args: |
| - --comment-style |
| - "{#||#}" |
| - --license-filepath |
| - license-templates/LICENSE.txt |
| - --fuzzy-match-generates-todo |
| - id: insert-license |
| name: Add license for all shell files |
| exclude: ^\.github/.*$ |
| files: ^breeze$|^breeze-complete$|\.sh$|\.bash$|\.bats$ |
| args: |
| - --comment-style |
| - "|#|" |
| - --license-filepath |
| - license-templates/LICENSE.txt |
| - --fuzzy-match-generates-todo |
| - id: insert-license |
| name: Add license for all python files |
| exclude: ^\.github/.*$ |
| types: [python] |
| args: |
| - --comment-style |
| - "|#|" |
| - --license-filepath |
| - license-templates/LICENSE.txt |
| - --fuzzy-match-generates-todo |
| - id: insert-license |
| name: Add license for all XML files |
| exclude: ^\.github/.*$ |
| files: \.xml$ |
| args: |
| - --comment-style |
| - "<!--||-->" |
| - --license-filepath |
| - license-templates/LICENSE.txt |
| - --fuzzy-match-generates-todo |
| - id: insert-license |
| name: Add license for all yaml files |
| exclude: ^\.github/.*$ |
| types: [yaml] |
| files: \.yml$|\.yaml$ |
| args: |
| - --comment-style |
| - "|#|" |
| - --license-filepath |
| - license-templates/LICENSE.txt |
| - --fuzzy-match-generates-todo |
| - id: insert-license |
| name: Add license for all md files |
| files: \.md$ |
| exclude: ^\.github/.*$|PROVIDER_CHANGES.*\.md |
| args: |
| - --comment-style |
| - "<!--|| -->" |
| - --license-filepath |
| - license-templates/LICENSE.txt |
| - --fuzzy-match-generates-todo |
| - id: insert-license |
| name: Add license for all mermaid files |
| args: |
| - --comment-style |
| - "|%%|" |
| - --license-filepath |
| - license-templates/LICENSE.txt |
| - --fuzzy-match-generates-todo |
| files: \.mermaid$ |
| - repo: https://github.com/thlorenz/doctoc.git |
| rev: v2.0.0 |
| hooks: |
| - id: doctoc |
| name: Add TOC for md files |
| files: ^README\.md$|^CONTRIBUTING\.md$|^UPDATING.*.md$|^dev/.*.md$|^dev/.*.rst |
| args: |
| - "--maxlevel" |
| - "2" |
| - repo: https://github.com/psf/black |
| rev: 20.8b1 |
| hooks: |
| - id: black |
| args: [--config=./pyproject.toml] |
| - repo: https://github.com/pre-commit/pre-commit-hooks |
| rev: v3.4.0 |
| hooks: |
| - id: check-merge-conflict |
| - id: debug-statements |
| - id: check-builtin-literals |
| - id: detect-private-key |
| - id: end-of-file-fixer |
| - id: mixed-line-ending |
| - id: check-executables-have-shebangs |
| - id: check-xml |
| - id: trailing-whitespace |
| - id: fix-encoding-pragma |
| args: |
| - --remove |
| - repo: https://github.com/asottile/pyupgrade |
| rev: v2.10.0 |
| hooks: |
| - id: pyupgrade |
| args: ["--py36-plus"] |
| - repo: https://github.com/pre-commit/pygrep-hooks |
| rev: v1.8.0 |
| hooks: |
| - id: rst-backticks |
| - id: python-no-log-warn |
| - repo: https://github.com/adrienverge/yamllint |
| rev: v1.26.0 |
| hooks: |
| - id: yamllint |
| name: Check yaml files with yamllint |
| entry: yamllint -c yamllint-config.yml --strict |
| types: [yaml] |
| exclude: |
| ^.*init_git_sync\.template\.yaml$|^.*airflow\.template\.yaml$|^chart/(?:templates|files)/.*\.yaml |
| - repo: https://github.com/timothycrosley/isort |
| rev: 5.6.4 |
| hooks: |
| - id: isort |
| name: Run isort to sort imports |
| files: \.py$ |
| # To keep consistent with the global isort skip config defined in setup.cfg |
| exclude: ^build/.*$|^.tox/.*$|^venv/.*$ |
| - repo: https://github.com/pycqa/pydocstyle |
| rev: 5.1.1 |
| hooks: |
| - id: pydocstyle |
| name: Run pydocstyle |
| args: |
| - --convention=pep257 |
| - --add-ignore=D100,D102,D104,D105,D107,D205,D400,D401 |
| exclude: | |
| (?x) |
| ^tests/.*\.py$| |
| ^scripts/.*\.py$| |
| ^dev| |
| ^provider_packages| |
| ^kubernetes_tests| |
| .*example_dags/.*| |
| ^chart/.*\.py$ |
| - repo: local |
| hooks: |
| - id: lint-openapi |
| name: Lint OpenAPI using spectral |
| language: docker_image |
| entry: stoplight/spectral lint -r ./scripts/ci/spectral_rules/connexion.yml |
| files: ^airflow/api_connexion/openapi/ |
| - id: lint-openapi |
| name: Lint OpenAPI using openapi-spec-validator |
| entry: openapi-spec-validator --schema 3.0.0 |
| language: python |
| additional_dependencies: ['openapi-spec-validator'] |
| files: ^airflow/api_connexion/openapi/ |
| - id: lint-dockerfile |
| name: Lint dockerfile |
| language: system |
| entry: "./scripts/ci/pre_commit/pre_commit_lint_dockerfile.sh" |
| files: Dockerfile.*$ |
| pass_filenames: true |
| require_serial: true |
| - id: setup-order |
| name: Check order of dependencies in setup.py and setup.cfg |
| language: python |
| files: ^setup.py$|^setup.cfg$ |
| pass_filenames: false |
| entry: ./scripts/ci/pre_commit/pre_commit_check_order_setup.py |
| additional_dependencies: ['rich'] |
| - id: setup-extra-packages |
| name: Checks setup extra packages |
| description: Checks if all the libraries in setup.py are listed in extra-packages-ref.rst file |
| language: python |
| files: ^setup.py$|^docs/apache-airflow/extra-packages-ref.rst$ |
| pass_filenames: false |
| entry: ./scripts/ci/pre_commit/pre_commit_check_setup_extra_packages_ref.py |
| additional_dependencies: ['rich==9.2.0'] |
| - id: update-breeze-file |
| name: Update output of breeze command in BREEZE.rst |
| entry: "./scripts/ci/pre_commit/pre_commit_breeze_cmd_line.sh" |
| language: system |
| files: ^BREEZE.rst$|^breeze$|^breeze-complete$ |
| pass_filenames: false |
| - id: update-local-yml-file |
| name: Update mounts in the local yml file |
| entry: "./scripts/ci/pre_commit/pre_commit_local_yml_mounts.sh" |
| language: system |
| files: ^scripts/ci/libraries/_local_mounts.sh$|s^scripts/ci/docker_compose/local.yml" |
| pass_filenames: false |
| - id: update-setup-cfg-file |
| name: Update setup.cfg file with all licenses |
| entry: "./scripts/ci/pre_commit/pre_commit_setup_cfg_file.sh" |
| language: system |
| files: ^setup.cfg$ |
| pass_filenames: false |
| - id: build-providers-dependencies |
| name: Build cross-dependencies for providers packages |
| entry: "./scripts/ci/pre_commit/pre_commit_build_providers_dependencies.sh" |
| language: system |
| files: ^airflow/providers/.*\.py$|^tests/providers/.*\.py$ |
| pass_filenames: false |
| - id: update-extras |
| name: Update extras in documentation |
| entry: ./scripts/ci/pre_commit/pre_commit_insert_extras.py |
| language: python |
| files: ^setup.py$|^INSTALL$|^CONTRIBUTING.rst$ |
| pass_filenames: false |
| - id: pydevd |
| language: pygrep |
| name: Check for pydevd debug statements accidentally left |
| entry: "pydevd.*settrace\\(" |
| pass_filenames: true |
| files: \.py$ |
| - id: dont-use-safe-filter |
| language: pygrep |
| name: Don't use safe in templates |
| description: the Safe filter is error-prone, use Markup() in code instead |
| entry: "\\|\\s*safe" |
| files: \.html$ |
| pass_filenames: true |
| - id: no-providers-in-core-examples |
| language: pygrep |
| name: No providers imports in core example DAGs |
| description: The core example DAGs have no dependencies other than core Airflow |
| entry: "^\\s*from airflow\\.providers.*" |
| pass_filenames: true |
| files: ^airflow/example_dags/.*\.py$ |
| - id: no-relative-imports |
| language: pygrep |
| name: No relative imports |
| description: Airflow style is to use absolute imports only |
| entry: "^\\s*from\\s+\\." |
| pass_filenames: true |
| files: \.py$ |
| exclude: ^tests/ |
| - id: language-matters |
| language: pygrep |
| name: Check for language that we do not accept as community |
| description: Please use "deny_list" or "allow_list" instead. |
| entry: "(?i)(black|white)[_-]?list" |
| pass_filenames: true |
| exclude: > |
| (?x) |
| ^airflow/providers/apache/cassandra/hooks/cassandra.py$| |
| ^airflow/providers/apache/hive/operators/hive_stats.py$| |
| ^airflow/providers/apache/hive/.*PROVIDER_CHANGES_*| |
| ^airflow/providers/apache/hive/.*README.md$| |
| ^tests/providers/apache/cassandra/hooks/test_cassandra.py$| |
| ^docs/apache-airflow-providers-apache-cassandra/connections/cassandra.rst$| |
| ^docs/apache-airflow-providers-apache-hive/commits.rst$| |
| git| |
| ^pylintrc | |
| ^CHANGELOG.txt$ |
| - id: consistent-pylint |
| language: pygrep |
| name: Check for inconsistent pylint disable/enable without space |
| entry: "pylint:disable|pylint:enable" |
| pass_filenames: true |
| files: \.py$ |
| - id: base-operator |
| language: pygrep |
| name: Check BaseOperator[Link] core imports |
| description: Make sure BaseOperator[Link] is imported from airflow.models.baseoperator in core |
| entry: "from airflow\\.models import.* BaseOperator" |
| files: \.py$ |
| pass_filenames: true |
| exclude: > |
| (?x) |
| ^airflow/decorators/.*$| |
| ^airflow/gcp/.*$| |
| ^airflow/hooks/.*$| |
| ^airflow/operators/.*$| |
| ^airflow/sensors/.*$| |
| ^airflow/providers/.*$| |
| ^dev/provider_packages/.*$ |
| - id: base-operator |
| language: pygrep |
| name: Check BaseOperator[Link] other imports |
| description: Make sure BaseOperator[Link] is imported from airflow.models outside of core |
| entry: "from airflow\\.models\\.baseoperator import.* BaseOperator" |
| pass_filenames: true |
| files: > |
| (?x) |
| ^airflow/gcp/.*$| |
| ^airflow/hooks/.*$| |
| ^airflow/operators/.*$| |
| ^airflow/sensors/.*$| |
| ^airflow/providers/.*\.py$ |
| - id: provide-create-sessions |
| language: pygrep |
| name: Check provide_session and create_session imports |
| description: provide_session and create_session should be imported from airflow.utils.session |
| to avoid import cycles. |
| entry: "from airflow\\.utils\\.db import.* (provide_session|create_session)" |
| files: \.py$ |
| pass_filenames: true |
| - id: incorrect-use-of-LoggingMixin |
| language: pygrep |
| name: Make sure LoggingMixin is not used alone |
| entry: "LoggingMixin\\(\\)" |
| files: \.py$ |
| pass_filenames: true |
| - id: daysago-import-check |
| language: pygrep |
| name: Make sure days_ago is imported from airflow.utils.dates |
| entry: "(airflow\\.){0,1}utils\\.dates\\.days_ago" |
| files: \.py$ |
| pass_filenames: true |
| - id: restrict-start_date |
| language: pygrep |
| name: "'start_date' should not be defined in default_args in example_dags" |
| entry: "default_args\\s*=\\s*{\\s*(\"|')start_date(\"|')|(\"|')start_date(\"|'):" |
| files: \.*example_dags.*.py$ |
| pass_filenames: true |
| - id: check-integrations |
| name: Check if integration list is aligned |
| entry: ./scripts/ci/pre_commit/pre_commit_check_integrations.sh |
| language: system |
| pass_filenames: false |
| files: ^common/_common_values.sh$|^breeze-complete$ |
| - id: check-apache-license |
| name: Check if licenses are OK for Apache |
| entry: "./scripts/ci/pre_commit/pre_commit_check_license.sh" |
| language: system |
| files: ^.*LICENSE.*$|^.*LICENCE.*$ |
| pass_filenames: false |
| - id: airflow-config-yaml |
| name: Checks for consistency between config.yml and default_config.cfg |
| language: python |
| entry: ./scripts/ci/pre_commit/pre_commit_yaml_to_cfg.py |
| files: "config.yml$|default_airflow.cfg$|default.cfg$" |
| pass_filenames: false |
| require_serial: true |
| additional_dependencies: ['pyyaml'] |
| - id: sort-in-the-wild |
| name: Sort INTHEWILD.md alphabetically |
| entry: ./scripts/ci/pre_commit/pre_commit_sort_in_the_wild.sh |
| language: system |
| files: ^.pre-commit-config.yaml$|^INTHEWILD.md$ |
| require_serial: true |
| - id: sort-spelling-wordlist |
| name: Sort alphabetically and uniquify spelling_wordlist.txt |
| entry: ./scripts/ci/pre_commit/pre_commit_sort_spelling_wordlist.sh |
| language: system |
| files: ^.pre-commit-config.yaml$|^docs/spelling_wordlist.txt$ |
| require_serial: true |
| - id: helm-lint |
| name: Lint Helm Chart |
| entry: ./scripts/ci/pre_commit/pre_commit_helm_lint.sh |
| language: system |
| pass_filenames: false |
| files: ^chart |
| require_serial: true |
| - id: shellcheck |
| name: Check Shell scripts syntax correctness |
| language: docker_image |
| entry: koalaman/shellcheck:stable -x -a |
| files: ^breeze$|^breeze-complete$|\.sh$|^hooks/build$|^hooks/push$|\.bash$|\.bats$ |
| - id: bats-tests |
| name: Run BATS bash tests for changed Breeze bash files |
| language: system |
| entry: "./scripts/ci/pre_commit/pre_commit_bat_tests.sh tests/bats/breeze/" |
| files: ^breeze$|^breeze-complete$|^tests/bats/breeze |
| pass_filenames: false |
| - id: bats-tests |
| name: Run BATS bash tests for changed bash files |
| language: system |
| entry: "./scripts/ci/pre_commit/pre_commit_bat_tests.sh" |
| files: \.sh$|\.bash$|\.bats$ |
| exclude: ^tests/bats/in_container|^scripts/in_container|^tests/bats/breeze |
| pass_filenames: true |
| require_serial: true |
| - id: stylelint |
| name: stylelint |
| entry: "stylelint" |
| language: node |
| files: ^airflow/www/.*\.(css|scss|sass)$ |
| # Keep dependency versions in sync w/ airflow/www/package.json |
| additional_dependencies: ['stylelint@13.3.1', 'stylelint-config-standard@20.0.0'] |
| - id: providers-init-file |
| name: Provider init file |
| pass_filenames: false |
| always_run: true |
| entry: ./scripts/ci/pre_commit/pre_commit_check_providers_init.sh |
| language: system |
| - id: provider-yamls |
| name: Validate providers.yaml files |
| pass_filenames: false |
| entry: ./scripts/ci/pre_commit/pre_commit_check_provider_yaml_files.py |
| language: python |
| require_serial: true |
| files: provider.yaml$|scripts/ci/pre_commit/pre_commit_check_provider_yaml_files.py$|^docs/ |
| additional_dependencies: ['PyYAML==5.3.1', 'jsonschema==3.2.0', 'tabulate==0.8.7'] |
| - id: mermaid |
| name: Generate mermaid images |
| entry: ./scripts/ci/pre_commit/pre_commit_mermaid.sh |
| language: system |
| files: \.mermaid$ |
| require_serial: true |
| - id: pre-commit-descriptions |
| name: Check if pre-commits are described |
| entry: ./scripts/ci/pre_commit/pre_commit_check_pre_commits.sh |
| language: system |
| files: ^.pre-commit-config.yaml$|^STATIC_CODE_CHECKS.rst|^breeze-complete$ |
| require_serial: true |
| - id: pre-commit-hook-names |
| name: Ensure hook ids are not overly long |
| entry: ./scripts/ci/pre_commit/pre_commit_check_pre_commit_hook_names.py |
| args: |
| - --max-length=70 |
| language: python |
| files: ^.pre-commit-config.yaml$ |
| additional_dependencies: ['pyyaml'] |
| require_serial: true |
| pass_filenames: false |
| - id: airflow-providers-available |
| name: Checks providers available when declared by extras in setup.py |
| language: python |
| entry: ./scripts/ci/pre_commit/pre_commit_check_extras_have_providers.py |
| files: "setup.py|^airflow/providers/.*.py" |
| pass_filenames: false |
| require_serial: true |
| additional_dependencies: ['rich'] |
| - id: markdownlint |
| name: Run markdownlint |
| description: "Checks the style of Markdown files." |
| entry: markdownlint |
| language: node |
| types: [markdown] |
| files: \.(md|mdown|markdown)$ |
| additional_dependencies: ['markdownlint-cli'] |
| - id: json-schema |
| name: Lint JSON Schema files with JSON Schema |
| entry: ./scripts/ci/pre_commit/pre_commit_json_schema.py |
| args: |
| - --spec-url |
| - https://json-schema.org/draft-07/schema |
| language: python |
| pass_filenames: true |
| files: .*\.schema\.json$ |
| require_serial: true |
| additional_dependencies: ['jsonschema==3.2.0', 'PyYAML==5.3.1', 'requests==2.25.0'] |
| - id: json-schema |
| name: Lint JSON Schema files with JSON Schema |
| entry: ./scripts/ci/pre_commit/pre_commit_json_schema.py |
| args: |
| - --spec-url |
| - https://raw.githubusercontent.com/instrumenta/kubernetes-json-schema/master/v1.14.9/service-v1.json |
| language: python |
| pass_filenames: true |
| files: scripts/ci/kubernetes/nodeport.yaml |
| require_serial: true |
| additional_dependencies: ['jsonschema==3.2.0', 'PyYAML==5.3.1', 'requests==2.25.0'] |
| - id: json-schema |
| name: Lint Docker compose files with JSON Schema |
| entry: ./scripts/ci/pre_commit/pre_commit_json_schema.py |
| args: |
| - --spec-url |
| - https://raw.githubusercontent.com/compose-spec/compose-spec/master/schema/compose-spec.json |
| language: python |
| pass_filenames: true |
| files: ^scripts/ci/docker-compose/.+\.ya?ml$|docker-compose.ya?ml$ |
| require_serial: true |
| additional_dependencies: ['jsonschema==3.2.0', 'PyYAML==5.3.1', 'requests==2.25.0'] |
| - id: json-schema |
| name: Lint chart/values.yaml file with JSON Schema |
| entry: ./scripts/ci/pre_commit/pre_commit_json_schema.py |
| args: |
| - --spec-file |
| - chart/values.schema.json |
| language: python |
| pass_filenames: true |
| files: chart/values.yaml$ |
| require_serial: true |
| additional_dependencies: ['jsonschema==3.2.0', 'PyYAML==5.3.1', 'requests==2.25.0'] |
| - id: json-schema |
| name: Lint airflow/config_templates/config.yml file with JSON Schema |
| entry: ./scripts/ci/pre_commit/pre_commit_json_schema.py |
| args: |
| - --spec-file |
| - airflow/config_templates/config.yml.schema.json |
| language: python |
| pass_filenames: true |
| files: airflow/config_templates/config.yml$ |
| require_serial: true |
| additional_dependencies: ['jsonschema==3.2.0', 'PyYAML==5.3.1', 'requests==2.25.0'] |
| - id: flynt |
| name: Convert to f-strings with flynt |
| entry: flynt |
| language: python |
| language_version: python3 |
| additional_dependencies: ['flynt==0.63'] |
| files: \.py$ |
| ## ADD MOST PRE-COMMITS ABOVE THAT LINE |
| # The below pre-commits are those requiring CI image to be built |
| - id: build |
| name: Check if image build is needed |
| entry: ./scripts/ci/pre_commit/pre_commit_ci_build.sh 3.6 false |
| language: system |
| always_run: true |
| pass_filenames: false |
| - id: mypy |
| name: Run mypy |
| language: system |
| entry: "./scripts/ci/pre_commit/pre_commit_mypy.sh" |
| files: \.py$ |
| exclude: ^dev|^provider_packages|^chart|^docs |
| - id: mypy |
| name: Run mypy for helm chart tests |
| language: system |
| entry: "./scripts/ci/pre_commit/pre_commit_mypy.sh" |
| files: ^chart/.*\.py$ |
| require_serial: false |
| - id: mypy |
| name: Run mypy for /docs/ folder |
| language: system |
| entry: "./scripts/ci/pre_commit/pre_commit_mypy.sh" |
| files: ^docs/.*\.py$ |
| exclude: rtd-deprecation |
| require_serial: false |
| - id: pylint |
| name: Run pylint for main code |
| language: system |
| entry: "./scripts/ci/pre_commit/pre_commit_pylint.sh" |
| files: \.py$ |
| exclude: ^scripts/.*\.py$|^dev|^provider_packages|^chart|^tests|^kubernetes_tests |
| pass_filenames: true |
| require_serial: true |
| - id: pylint |
| name: Run pylint for tests |
| language: system |
| entry: "env PYLINTRC=pylintrc-tests ./scripts/ci/pre_commit/pre_commit_pylint.sh" |
| files: ^tests/.*\.py$ |
| pass_filenames: true |
| require_serial: true |
| - id: pylint |
| name: Run pylint for helm chart tests |
| language: system |
| entry: "env PYLINTRC=pylintrc-tests ./scripts/ci/pre_commit/pre_commit_pylint.sh" |
| files: ^chart/.*\.py$ |
| pass_filenames: true |
| require_serial: true |
| - id: flake8 |
| name: Run flake8 |
| language: system |
| entry: "./scripts/ci/pre_commit/pre_commit_flake8.sh" |
| files: \.py$ |
| pass_filenames: true |
| - id: ui-lint |
| name: ESLint against airflow/ui |
| language: node |
| 'types_or': [javascript, tsx, ts] |
| files: ^airflow/ui/ |
| entry: "scripts/ci/static_checks/eslint.sh" |
| pass_filenames: false |
| - id: bats-in-container-tests |
| name: Run in container bats tests |
| language: system |
| entry: "./scripts/ci/pre_commit/pre_commit_in_container_bats_test.sh" |
| files: ^tests/bats/in_container/.*.bats$|^scripts/in_container/.*sh |
| pass_filenames: false |
| ## ONLY ADD PRE-COMMITS HERE THAT REQUIRE CI IMAGE |