diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index f176df8c131..7e9bf02ba49 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -82,3 +82,8 @@ repos: additional_dependencies: - types-dataclasses - types-requests + + - repo: https://github.com/pre-commit/pre-commit + rev: v2.13.0 + hooks: + - id: validate_manifest diff --git a/.pre-commit-hooks.yaml b/.pre-commit-hooks.yaml new file mode 100644 index 00000000000..b1b45312627 --- /dev/null +++ b/.pre-commit-hooks.yaml @@ -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"] diff --git a/docs/cli.md b/docs/cli.md index ffb9b1b7a70..3aba477d20e 100644 --- a/docs/cli.md +++ b/docs/cli.md @@ -529,6 +529,10 @@ As such, `exit` should be used to properly exit the shell and the virtual enviro The `check` command validates the structure of the `pyproject.toml` file and returns a detailed report if there are any errors. +{{% note %}} +This command is also available as a pre-commit hook. See [pre-commit hooks](/docs/pre-commit-hooks#poetry-check) for more information. +{{% /note %}} + ```bash poetry check ``` @@ -547,6 +551,7 @@ This command locks (without installing) the dependencies specified in `pyproject {{% note %}} By default, this will lock all dependencies to the latest available compatible versions. To only refresh the lock file, use the `--no-update` option. +This command is also available as a pre-commit hook. See [pre-commit hooks](/docs/pre-commit-hooks#poetry-lock) for more information. {{% /note %}} ```bash @@ -595,6 +600,7 @@ poetry export -f requirements.txt --output requirements.txt {{% note %}} Only the `requirements.txt` format is currently supported. +This command is also available as a pre-commit hook. See [pre-commit hooks](/docs/pre-commit-hooks#poetry-export) for more information. {{% /note %}} ### Options diff --git a/docs/pre-commit-hooks.md b/docs/pre-commit-hooks.md new file mode 100644 index 00000000000..c5de4f0c4fb --- /dev/null +++ b/docs/pre-commit-hooks.md @@ -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"] +```