--- ci: # format compatible with commitlint autoupdate_commit_msg: "chore: pre-commit autoupdate" autoupdate_schedule: monthly autofix_commit_msg: | chore: auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci skip: # https://github.com/pre-commit-ci/issues/issues/55 - pip-compile - schemas submodules: true exclude: > (?x)^( .config/requirements.*| .vscode/extensions.json| .vscode/settings.json| examples/broken/encoding.yml| examples/broken/encoding.j2| examples/broken/yaml-with-tabs/invalid-due-tabs.yaml| examples/playbooks/collections/.*| examples/playbooks/vars/empty.transformed.yml| examples/playbooks/vars/empty.yml| src/ansiblelint/schemas/rulebook.json| test/schemas/data/licenses.json| test/schemas/negative_test| test/schemas/package-lock.json )$ repos: - repo: meta hooks: - id: check-useless-excludes - repo: https://github.com/pre-commit/mirrors-prettier # keep it before yamllint rev: v3.0.0-alpha.9-for-vscode hooks: - id: prettier # Temporary excludes so we can gradually normalize the formatting exclude: > (?x)^( .*\.md$| examples/other/some.j2.yaml| examples/playbooks/collections/.*| examples/playbooks/example.yml| examples/playbooks/multiline-brackets.*| examples/playbooks/templates/not-valid.yaml| examples/playbooks/vars/empty.transformed.yml| examples/playbooks/vars/empty.yml| examples/playbooks/with-skip-tag-id.yml| examples/playbooks/with-umlaut-.*| examples/yamllint/.*| src/ansiblelint/schemas/(molecule|tasks|playbook|rulebook).json| test/fixtures/formatting-before/.*| test/schemas/(negative_test|test)/.*\.md| test/schemas/data/.*| src/ansiblelint/schemas/ansible-navigator-config.json )$ always_run: true additional_dependencies: - prettier - prettier-plugin-toml - prettier-plugin-sort-json - repo: https://github.com/streetsidesoftware/cspell-cli rev: v6.31.0 hooks: - id: cspell # entry: codespell --relative args: [--relative, --no-progress, --no-summary] name: Spell check with cspell - repo: https://github.com/python-jsonschema/check-jsonschema rev: 0.23.2 hooks: - id: check-github-workflows - repo: https://github.com/pre-commit/pre-commit-hooks.git rev: v4.4.0 hooks: - id: end-of-file-fixer # ignore formatting-prettier to have an accurate prettier comparison exclude: > (?x)^( test/eco/.*.result| examples/yamllint/.*| test/fixtures/formatting-before/.*| test/fixtures/formatting-prettier/.* )$ - id: trailing-whitespace exclude: > (?x)^( examples/playbooks/(with-skip-tag-id|unicode).yml| examples/playbooks/example.yml| examples/yamllint/.*| test/eco/.*.result| test/fixtures/formatting-before/.* )$ - id: mixed-line-ending - id: fix-byte-order-marker - id: check-executables-have-shebangs - id: check-merge-conflict - id: debug-statements language_version: python3 - repo: https://github.com/codespell-project/codespell rev: v2.2.5 hooks: - id: codespell exclude: > (?x)^( .config/dictionary.txt| examples/broken/encoding.j2| test/schemas/negative_test/.*| test/schemas/test/.*| src/ansiblelint/schemas/.*\.json )$ additional_dependencies: - tomli - repo: https://github.com/adrienverge/yamllint.git rev: v1.32.0 hooks: - id: yamllint exclude: > (?x)^( examples/playbooks/templates/.*| examples/yamllint/.*| examples/other/some.j2.yaml| examples/playbooks/collections/.*| test/fixtures/formatting-before/.* )$ files: \.(yaml|yml)$ types: [file, yaml] entry: yamllint --strict - repo: https://github.com/charliermarsh/ruff-pre-commit rev: "v0.0.274" hooks: - id: ruff args: [--fix, --exit-non-zero-on-fix] - repo: https://github.com/psf/black rev: 23.3.0 hooks: - id: black language_version: python3 - repo: https://github.com/pre-commit/mirrors-mypy rev: v1.4.0 hooks: - id: mypy # empty args needed in order to match mypy cli behavior args: [--strict] additional_dependencies: - ansible-compat>=4.1.2 - black>=22.10.0 - cryptography>=39.0.1 - filelock>=3.12.2 - jinja2 - pytest-mock - pytest>=7.2.2 - rich>=13.2.0 - ruamel-yaml>=0.17.31 - ruamel-yaml-clib>=0.2.7 - spdx-tools>=0.7.1 - subprocess-tee - types-PyYAML - types-jsonschema>=4.4.2 - types-pkg_resources - types-setuptools - wcmatch exclude: > (?x)^( test/local-content/.*| plugins/.* )$ - repo: https://github.com/pycqa/pylint rev: v3.0.0a6 hooks: - id: pylint args: - --output-format=colorized additional_dependencies: - ansible-compat>=4.1.2 - ansible-core>=2.14.0 - black>=22.10.0 - docutils - filelock>=3.12.2 - jsonschema>=4.9.0 - pytest-mock - pytest>=7.2.2 - pyyaml - rich>=13.2.0 - ruamel-yaml>=0.17.31 - ruamel-yaml-clib>=0.2.7 - spdx-tools>=0.7.1 - typing_extensions - wcmatch - yamllint - repo: https://github.com/jazzband/pip-tools rev: 6.13.0 hooks: - id: pip-compile name: lock alias: lock always_run: true entry: pip-compile --upgrade --resolver=backtracking -q --no-annotate --output-file=.config/requirements-lock.txt pyproject.toml --strip-extras --unsafe-package ruamel-yaml-clib --unsafe-package resolvelib files: ^.config\/requirements.*$ language: python language_version: "3.9" # minimal we support officially pass_filenames: false stages: [manual] additional_dependencies: - pip>=22.3.1 - id: pip-compile name: deps alias: deps always_run: true entry: pip-compile --resolver=backtracking -q --no-annotate --output-file=.config/requirements.txt pyproject.toml --extra docs --extra test --strip-extras --unsafe-package ruamel-yaml-clib --unsafe-package resolvelib files: ^.config\/requirements.*$ language: python language_version: "3.9" # minimal we support officially pass_filenames: false additional_dependencies: - pip>=22.3.1 - id: pip-compile entry: pip-compile --resolver=backtracking -q --no-annotate --output-file=.config/requirements.txt pyproject.toml --extra docs --extra test --strip-extras --unsafe-package ruamel-yaml-clib --unsafe-package resolvelib --upgrade language: python always_run: true pass_filenames: false files: ^.config\/requirements.*$ alias: up stages: [manual] language_version: "3.9" # minimal we support officially additional_dependencies: - pip>=22.3.1 - # keep at bottom as these are slower repo: local hooks: - id: schemas name: update json schemas entry: python3 src/ansiblelint/schemas/__main__.py language: python pass_filenames: false always_run: true # stages: [manual]