repos: - repo: https://github.com/pre-commit/pre-commit-hooks rev: v4.5.0 hooks: - id: check-added-large-files - id: check-case-conflict - id: check-toml - id: check-json - id: check-yaml exclude: template.yaml - id: debug-statements - id: end-of-file-fixer exclude: WHEEL exclude_types: [json] - id: forbid-new-submodules - id: trailing-whitespace exclude: .patch exclude_types: [json] - repo: https://github.com/astral-sh/ruff-pre-commit # Ruff version. rev: v0.1.3 hooks: - id: ruff args: ["--fix", "--show-fixes"] - id: ruff-format - repo: local hooks: - id: synchro name: synchro entry: bash ./tools/synchro.sh language: python require_serial: true fail_fast: true additional_dependencies: - ruff==0.1.3 - unasync - repo: https://github.com/adamchainz/blacken-docs rev: "1.16.0" hooks: - id: blacken-docs additional_dependencies: - black==22.3.0 - repo: https://github.com/pre-commit/pygrep-hooks rev: "v1.10.0" hooks: - id: rst-backticks - id: rst-directive-colons - id: rst-inline-touching-normal - repo: https://github.com/rstcheck/rstcheck rev: v6.2.0 hooks: - id: rstcheck additional_dependencies: [sphinx] args: ["--ignore-directives=doctest,testsetup,todo,automodule","--ignore-substitutions=release", "--report-level=error"] # We use the Python version instead of the original version which seems to require Docker # https://github.com/koalaman/shellcheck-precommit - repo: https://github.com/shellcheck-py/shellcheck-py rev: v0.9.0.6 hooks: - id: shellcheck name: shellcheck args: ["--severity=warning"] stages: [manual] - repo: https://github.com/PyCQA/doc8 rev: v1.1.1 hooks: - id: doc8 args: ["--ignore=D001"] # ignore line length stages: [manual] - repo: https://github.com/sirosen/check-jsonschema rev: 0.29.0 hooks: - id: check-github-workflows - id: check-github-actions - id: check-dependabot - repo: https://github.com/ariebovenberg/slotscheck rev: v0.19.0 hooks: - id: slotscheck files: \.py$ exclude: "^(test|tools)/" stages: [manual] args: ["--no-strict-imports"] - repo: https://github.com/codespell-project/codespell rev: "v2.2.6" hooks: - id: codespell # Examples of errors or updates to justify the exceptions: # - test/test_on_demand_csfle.py:44: FLE ==> FILE # - test/test_bson.py:1043: fo ==> of, for, to, do, go # - test/bson_corpus/decimal128-4.json:98: Infinit ==> Infinite # - test/test_bson.py:267: isnt ==> isn't # - test/versioned-api/crud-api-version-1-strict.json:514: nin ==> inn, min, bin, nine # - test/test_client.py:188: te ==> the, be, we, to args: ["-L", "fle,fo,infinit,isnt,nin,te,aks"] - repo: local hooks: - id: executable-shell name: executable-shell entry: chmod +x language: system types: [shell] exclude: | (?x)( .evergreen/retry-with-backoff.sh ) - id: generate-config name: generate-config entry: .evergreen/scripts/generate-config.sh language: python require_serial: true additional_dependencies: ["shrub.py>=3.10.0", "pyyaml>=6.0.2"] - id: uv-lock name: uv-lock entry: uv lock language: python require_serial: true files: ^(uv\.lock|pyproject\.toml|requirements.txt|requirements/.*\.txt)$ pass_filenames: false fail_fast: true additional_dependencies: - "uv>=0.8.4"