repos: # Code formatting - repo: https://github.com/psf/black rev: 23.12.1 hooks: - id: black language_version: python3 args: ["--line-length=88"] # Import sorting - repo: https://github.com/pycqa/isort rev: 5.13.2 hooks: - id: isort args: ["--profile", "black", "--multi-line", "3"] # Linting - repo: https://github.com/pycqa/flake8 rev: 7.0.0 hooks: - id: flake8 args: - "--max-line-length=88" - "--extend-ignore=E203,W503,F401" - "--exclude=build,dist,.eggs" # Type checking - repo: https://github.com/pre-commit/mirrors-mypy rev: v1.8.0 hooks: - id: mypy additional_dependencies: [types-PyYAML] args: ["--ignore-missing-imports", "--scripts-are-modules"] exclude: "^(tests/|examples/)" # General pre-commit hooks - repo: https://github.com/pre-commit/pre-commit-hooks rev: v4.5.0 hooks: # File checks - id: trailing-whitespace args: [--markdown-linebreak-ext=md] - id: end-of-file-fixer - id: check-yaml - id: check-json - id: check-toml - id: check-xml # Security - id: check-merge-conflict - id: check-case-conflict - id: check-symlinks - id: check-added-large-files args: ["--maxkb=1000"] # Python specific - id: check-ast - id: check-builtin-literals - id: check-docstring-first - id: debug-statements - id: name-tests-test args: ["--django"] # Security scanning - repo: https://github.com/PyCQA/bandit rev: 1.7.5 hooks: - id: bandit args: ["-c", "pyproject.toml"] additional_dependencies: ["bandit[toml]"] exclude: "^tests/" # Documentation - repo: https://github.com/pycqa/pydocstyle rev: 6.3.0 hooks: - id: pydocstyle args: ["--convention=google"] exclude: "^(tests/|examples/)" # YAML/JSON formatting - repo: https://github.com/pre-commit/mirrors-prettier rev: v4.0.0-alpha.8 hooks: - id: prettier types_or: [yaml, json, markdown] exclude: "^(.github/)" # Spell checking (optional) - repo: https://github.com/codespell-project/codespell rev: v2.2.6 hooks: - id: codespell args: ["--write-changes"] exclude: "^(.*\\.po|.*\\.pot|CHANGELOG\\.md)$" # Global settings default_stages: [commit, push] fail_fast: false # CI settings ci: autofix_commit_msg: | [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci autofix_prs: true autoupdate_branch: '' autoupdate_commit_msg: '[pre-commit.ci] pre-commit autoupdate' autoupdate_schedule: weekly skip: [] submodules: false