---
ci:
  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
    - codecov
repos:
  - repo: https://github.com/pre-commit/mirrors-prettier
    # keep it before yamllint
    rev: v4.0.0-alpha.8
    hooks:
      - id: prettier
        # Temporary excludes so we can gradually normalize the formatting
        exclude: >
          (?x)^(
            tests/.*.html
          )$
        always_run: true
        additional_dependencies:
          - prettier
          - prettier-plugin-toml
          - prettier-plugin-sort-json
  - repo: local
    hooks:
      - id: codecov
        name: Check codecov.yml
        # https://superuser.com/a/1587813/3004
        entry: >
          bash -c '[ $(
          curl --silent -o /dev/stderr -w "%{http_code}" -X POST --data-binary @codecov.yml https://codecov.io/validate
          ) -eq 200 ]'
        language: system
        files: "codecov.yml"
        pass_filenames: false
  - repo: https://github.com/PyCQA/isort
    rev: 5.13.2
    hooks:
      - id: isort
  - repo: https://github.com/psf/black.git
    rev: 24.4.2
    hooks:
      - id: black
        language_version: python3
  - repo: https://github.com/pre-commit/pre-commit-hooks.git
    rev: v4.6.0
    hooks:
      - id: end-of-file-fixer
      - id: trailing-whitespace
      - 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/PyCQA/flake8
    rev: 7.0.0
    hooks:
      - id: flake8
        additional_dependencies:
          - pydocstyle>=6.1.1
          - flake8-docstrings>=1.6.0
          - flake8-absolute-import>=1.0
          - flake8-black>=0.2.3
          - flake8-pytest-style>=1.5.0
        language_version: python3
  - repo: https://github.com/pycqa/pylint
    rev: v3.2.2
    hooks:
      - id: pylint
  - repo: https://github.com/pre-commit/mirrors-mypy
    rev: v1.10.0
    hooks:
      - id: mypy
        # empty args needed in order to match mypy cli behavior
        args: ["--strict"]
        additional_dependencies:
          - pytest
          - types-setuptools
          - types-pkg_resources
          - types-mock
        exclude: >
          (?x)^(
            docs/.*|
            setup.py
          )$
