Estoy investigando esta plantilla de proyecto de Python. Usan poetry para definir dependencias de desarrollo
[tool.poetry.dev-dependencies] black = {version = "*", allow-prereleases = true} flake8 = "*" isort = "^5.6" mypy = ">0.900,<1" ... También usan pre-commit para verificar las cosas de limpieza (por ejemplo, formato, linting, issorting, ...), tanto para git como para flujos de trabajo de CI:
minimum_pre_commit_version: 2.8.0 default_stages: [commit, push, manual] repos: - repo: https://github.com/psf/black rev: 21.11b1 hooks: - id: black - repo: https://github.com/pycqa/flake8 rev: 4.0.1 hooks: - id: flake8 args: [--max-line-length=88] - repo: https://github.com/pycqa/isort rev: 5.10.1 hooks: - id: isort args: [--filter-files] - ... En mi caso, definitivamente quiero una versión local de los paquetes de desarrollo administrados por poesía para mi IDE, y también me gustaría aprovechar el marco de confirmación previa "tal cual" , sin cambiar a language: system . Trabajando de esta manera, necesito administrar cada versión del paquete en dos lugares diferentes.
¿Existe una forma no manual de mantener las versiones de los paquetes de desarrollo (es decir, black , flake8 , isort , mypy , ...) alineadas con una única fuente de verdad? Una plantilla Coockiecutter podría ser una opción, pero parece exagerada.
Recomendaría mantener las cosas de linter solo en la configuración de pre-commit .
pre-commit no se ejecuta necesariamente como un gancho de confirmación previa. Puede ejecutar las comprobaciones cada vez mediante pre-commit run --all-files o si desea ejecutarla solo en archivos determinados con pre-commit run --files path/to/file .
Incluso puede decir qué verificación debe ejecutarse, por ejemplo, pre-commit run black --all-files
Finalmente, creé un gancho de compromiso previo para hacer el trabajo: https://github.com/floatingpurr/sync_with_poetry
Este enlace simplemente mantiene sincronizados los repos rev en .pre-commit-config.yaml con la versión de los paquetes bloqueada en poetry.lock .
Si utiliza:
este meta-gancho puede ser útil para (des) aumentar las revoluciones de los repositorios por usted.