I am on Python 3.10.4 here and using a .pre-commit-config.yaml file in my Poetry 1.1.13 project that uses pyproject.toml
Here is what my .pre-commit-config.yaml looks like
# See https://pre-commit.com for more information
# See https://pre-commit.com/hooks.html for more hooks
# https://stackoverflow.com/questions/64935598/git-pre-commit-get-all-python-files
default_language_version:
python: python3.10
default_stages: [commit, push]
repos:
- repo: local
hooks:
# https://github.com/pre-commit/pre-commit-hooks#check-ast
- id: check-ast
description: Simply checks whether the files parse as valid python.
entry: check-ast
name: Check python syntax
language: system
types: [python]
# https://github.com/pre-commit/pre-commit-hooks#check-added-large-files
- id: check-added-large-files
description: prevents giant files from being committed.
entry: check-added-large-files
name: Check added large files
language: system
# https://github.com/pre-commit/pre-commit-hooks#check-json
- id: check-json
description: Checks json files for parseable syntax.
entry: check-json
name: Check JSON
language: system
types: [json]
# https://github.com/pre-commit/pre-commit-hooks#check-toml
- id: check-toml
description: Checks toml files for parseable syntax.
entry: check-toml
name: Check TOML
language: system
types: [toml]
# https://github.com/pre-commit/pre-commit-hooks#check-yaml
- id: check-yaml
description: Checks yaml files for parseable syntax.
entry: check-yaml
name: Check YAML
language: system
types: [yaml]
# https://github.com/pre-commit/pre-commit-hooks#end-of-file-fixer
- id: end-of-file-fixer
description: Ensures that a file is either empty, or ends with one newline.
entry: end-of-file-fixer
name: End of file fixer
language: system
# https://github.com/pre-commit/pre-commit-hooks#trailing-whitespace
- id: trailing-whitespace
description: Trims trailing whitespace.
entry: trailing-whitespace-fixer
name: Trailing whitespace
language: system
- repo: local
hooks:
- args: ["--verbose"]
id: flake8
description: Command-line utility for enforcing style consistency across Python projects.
entry: flake8
name: flake8
language: python
require_serial: true
types: [python]
- args: ["--verbose"]
id: black
description: The uncompromising Python code formatter
entry: black
name: black
language: python
require_serial: true
types: [python]
- args: ["--verbose"]
id: isort
name: isort
entry: isort
require_serial: true
language: python
types: [python]
- args: ["--verbose"]
exclude: tests/.*$
id: bandit
name: bandit
entry: bandit
language: python
types: [python]
- args: ["--verbose"]
id: mypy
name: mypy
entry: mypy
language: python
require_serial: true
types: [python]
When I run a git commit -m "test" it fails with the following error
Check python syntax......................................................Failed
- hook id: check-ast
- exit code: 1
Executable `check-ast` not found
Check added large files..................................................Failed
- hook id: check-added-large-files
- exit code: 1
Executable `check-added-large-files` not found
Check JSON...........................................(no files to check)Skipped
Check TOML...............................................................Failed
- hook id: check-toml
- exit code: 1
Executable `check-toml` not found
Check YAML...........................................(no files to check)Skipped
End of file fixer........................................................Failed
- hook id: end-of-file-fixer
- exit code: 1
Executable `end-of-file-fixer` not found
Trailing whitespace......................................................Failed
- hook id: trailing-whitespace
- exit code: 1
Executable `trailing-whitespace-fixer` not found
flake8...................................................................Failed
- hook id: flake8
- exit code: 1
Executable `flake8` not found
black....................................................................Failed
- hook id: black
- exit code: 1
Executable `black` not found
isort....................................................................Failed
- hook id: isort
- exit code: 1
Executable `isort` not found
bandit...................................................................Failed
- hook id: bandit
- exit code: 1
Executable `bandit` not found
mypy.....................................................................Failed
- hook id: mypy
- exit code: 1
Executable `mypy` not found
How do I make pre-commit use the virtual environment created by poetry and use all its dependencies locally?