# See https://pre-commit.com for more information
# See https://pre-commit.com/hooks.html for more hooks
ci:
  skip: [pylint]
  autofix_prs: true
  autofix_commit_msg: "fix: [pre-commit.ci] auto fixes [...]"
  autoupdate_commit_msg: "chore(pre-commit): [pre-commit.ci] autoupdate"
default_stages: [commit, push, manual]
repos:
  - repo: https://github.com/pre-commit/pre-commit-hooks
    rev: v4.5.0
    hooks:
      - id: check-symlinks
      - id: destroyed-symlinks
      - id: trailing-whitespace
      - id: end-of-file-fixer
      - id: check-yaml
      - id: check-toml
      - id: check-ast
      - id: check-added-large-files
        exclude: |
          (?x)(
            ^images/
          )
      - id: check-merge-conflict
      - id: check-executables-have-shebangs
      - id: check-shebang-scripts-are-executable
      - id: detect-private-key
      - id: debug-statements
      - id: double-quote-string-fixer
  - repo: https://github.com/astral-sh/ruff-pre-commit
    rev: v0.1.14
    hooks:
      - id: ruff
        args: [--fix, --exit-non-zero-on-fix]
  - repo: https://github.com/PyCQA/isort
    rev: 5.13.2
    hooks:
      - id: isort
  - repo: https://github.com/psf/black
    rev: 23.12.1
    hooks:
      - id: black-jupyter
  - repo: https://github.com/asottile/pyupgrade
    rev: v3.15.0
    hooks:
      - id: pyupgrade
        args: [--py38-plus] # sync with requires-python
  - repo: https://github.com/pycqa/flake8
    rev: 7.0.0
    hooks:
      - id: flake8
        additional_dependencies:
          - flake8-bugbear
          - flake8-comprehensions
          - flake8-docstrings
          - flake8-pyi
          - flake8-simplify
  - repo: https://github.com/codespell-project/codespell
    rev: v2.2.6
    hooks:
      - id: codespell
        additional_dependencies: [".[toml]"]
        exclude: |
          (?x)(
            ^docs/source/spelling_wordlist.txt$
          )
  - repo: local
    hooks:
      - id: pylint
        name: pylint
        entry: pylint
        language: system
        types: [python]
        require_serial: true
        exclude: |
          (?x)(
            ^examples/|
            ^tests/|
            ^setup.py$|
            ^docs/source/conf.py$
          )
