-
Notifications
You must be signed in to change notification settings - Fork 2.2k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Feature: Add poetry as pre-commit hook (#2511)
* add pre-commit hooks for check & lock * add pre-commit hook for export requirements.txt * add pre-commit hooks to docs * add pre-commit hook to check pre-commit-hooks.yaml file Thanks @graingert and @asottile for pointing out the `files` constraint. See discussion on #2511. Co-authored-by: Thomas Grainger <tagrain@gmail.com> Co-authored-by: Bjorn Neergaard <bjorn@neersighted.com>
- Loading branch information
1 parent
dc440cd
commit 2fa6c17
Showing
4 changed files
with
138 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
- id: poetry-check | ||
name: poetry-check | ||
description: run poetry check to validate config | ||
entry: poetry check | ||
language: python | ||
language_version: python3 | ||
pass_filenames: false | ||
files: '^.*/pyproject\.toml$' | ||
|
||
- id: poetry-lock | ||
name: poetry-lock | ||
description: run poetry lock to update lock file | ||
entry: poetry lock | ||
language: python | ||
language_version: python3 | ||
pass_filenames: false | ||
|
||
- id: poetry-export | ||
name: poetry-export | ||
description: run poetry export to sync lock file with requirements.txt | ||
entry: poetry export | ||
language: python | ||
language_version: python3 | ||
pass_filenames: false | ||
files: '^.*/poetry\.lock$' | ||
args: ["-f", "requirements.txt", "-o", "requirements.txt"] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,101 @@ | ||
--- | ||
title: "pre-commit hooks" | ||
draft: false | ||
type: docs | ||
layout: single | ||
|
||
menu: | ||
docs: | ||
weight: 120 | ||
--- | ||
|
||
# pre-commit hooks | ||
|
||
pre-commit is a framework for building and running | ||
[git hooks](https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks). | ||
See the official documentation for more information: [pre-commit.com](https://pre-commit.com/) | ||
|
||
This document provides a list of available pre-commit hooks provided by Poetry. | ||
|
||
|
||
{{% note %}} | ||
If you specify the `args:` for a hook in your `.pre-commit-config.yaml`, | ||
the defaults are overwritten. You must fully specify all arguments for | ||
your hook if you make use of `args:`. | ||
{{% /note %}} | ||
|
||
|
||
## poetry-check | ||
|
||
The `poetry-check` hook calls the `poetry check` command | ||
to make sure the poetry configuration does not get committed in a broken state. | ||
|
||
### Arguments | ||
|
||
The hook takes the same arguments as the poetry command. | ||
For more information see the [check command](/docs/cli#check). | ||
|
||
|
||
## poetry-lock | ||
|
||
The `poetry-lock` hook calls the `poetry lock` command | ||
to make sure the lock file is up-to-date when committing changes. | ||
|
||
### Arguments | ||
|
||
The hook takes the same arguments as the poetry command. | ||
For more information see the [lock command](/docs/cli#lock). | ||
|
||
|
||
## poetry-export | ||
|
||
The `poetry-export` hook calls the `poetry export` command | ||
to sync your `requirements.txt` file with your current dependencies. | ||
|
||
{{% note %}} | ||
It is recommended to run the [`poetry-lock`](#poetry-lock) hook prior to this one. | ||
{{% /note %}} | ||
|
||
### Arguments | ||
|
||
The hook takes the same arguments as the poetry command. | ||
For more information see the [export command](/docs/cli#export). | ||
|
||
The default arguments are `args: ["-f", "requirements.txt", "-o", "requirements.txt"]`, | ||
which will create/update the requirements.txt file in the current working directory. | ||
|
||
You may add `verbose: true` in your `.pre-commit-config.yaml` in order to output to the | ||
console: | ||
|
||
```yaml | ||
hooks: | ||
- id: poetry-export | ||
args: ["-f", "requirements.txt"] | ||
verbose: true | ||
``` | ||
|
||
Also, `--dev` can be added to `args` to write dev-dependencies to `requirements.txt`: | ||
|
||
```yaml | ||
hooks: | ||
- id: poetry-export | ||
args: ["--dev", "-f", "requirements.txt", "-o", "requirements.txt"] | ||
``` | ||
|
||
|
||
## Usage | ||
|
||
For more information on how to use pre-commit please see the [official documentation](https://pre-commit.com/). | ||
|
||
A full `.pre-commit-config.yaml` example: | ||
|
||
```yaml | ||
repos: | ||
- repo: https://github.com/python-poetry/poetry | ||
rev: '' # add version here | ||
hooks: | ||
- id: poetry-check | ||
- id: poetry-lock | ||
- id: poetry-export | ||
args: ["-f", "requirements.txt", "-o", "requirements.txt"] | ||
``` |