Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/juftin/hatch-pip-compile
hatch plugin to use pip-compile (or uv) to manage project dependencies and lockfiles
https://github.com/juftin/hatch-pip-compile
hatch lock-file lockfile pip-compile pip-tools plugin python uv
Last synced: about 12 hours ago
JSON representation
hatch plugin to use pip-compile (or uv) to manage project dependencies and lockfiles
- Host: GitHub
- URL: https://github.com/juftin/hatch-pip-compile
- Owner: juftin
- License: mit
- Created: 2023-11-10T00:34:00.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2024-09-05T23:02:01.000Z (4 months ago)
- Last Synced: 2024-12-20T23:06:43.584Z (8 days ago)
- Topics: hatch, lock-file, lockfile, pip-compile, pip-tools, plugin, python, uv
- Language: Python
- Homepage: http://juftin.com/hatch-pip-compile/
- Size: 676 KB
- Stars: 84
- Watchers: 2
- Forks: 3
- Open Issues: 13
-
Metadata Files:
- Readme: README.md
- Contributing: docs/contributing.md
- License: LICENSE
Awesome Lists containing this project
README
hatch-pip-compile
hatch plugin to use pip-compile (or uv) to manage project dependencies and lockfiles.## Usage
The `hatch-pip-compile` plugin will automatically run `pip-compile` whenever your
environment needs to be updated. Behind the scenes, this plugin creates a lockfile
at `requirements.txt` (non-default lockfiles are located at
`requirements/requirements-{env_name}.txt`). Once the dependencies are resolved
the plugin will install the lockfile into your virtual environment and keep it
up-to-date.## Installation
Declare `hatch-pip-compile` as a dependency in your `pyproject.toml` file under the
`[tool.hatch.env]` table and hatch will automatically install it. You must also have
your environment type set to `pip-compile` (see [Configuration](#configuration)).- **_pyproject.toml_**
```toml
[tool.hatch.env]
requires = [
"hatch-pip-compile"
][tool.hatch.envs.default]
type = "pip-compile"
```- **_hatch.toml_**
```toml
[env]
requires = [
"hatch-pip-compile"
][envs.default]
type = "pip-compile"
```## Configuration
Set your environment type to `pip-compile` to use this plugin for the respective environment:
- **_pyproject.toml_**
```toml
[tool.hatch.envs.default]
type = "pip-compile"
```- **_hatch.toml_**
```toml
[envs.default]
type = "pip-compile"
```### Common Scenarios
- [lock-filename](docs/examples.md#lock-filename) - changing the default lockfile path
- [pip-compile-constraint](docs/examples.md#pip-compile-constraint) - syncing dependency versions across environments
- [Upgrading Dependencies](docs/examples.md#upgrading-dependencies) - how to upgrade dependencies
- [Using Hashes](docs/examples.md#pip-compile-hashes) - how to include hashes in your lockfile
- [Using uv instead of pip-compile](docs/examples.md#pip-compile-resolver) - how to use `uv` instead of `pip-compile`### Configuration Options
The plugin gives you options to configure how lockfiles are generated and how they are installed
into your environment.The following example shows how to specify the `pip-compile-hashes` option
on your environment in your `pyproject.toml` file:```toml
[tool.hatch.envs.default]
type = "pip-compile"
pip-compile-hashes = true
```#### Generating Lockfiles
| name | type | description |
| ----------------------------------------------------------------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------------- |
| [lock-filename](docs/examples.md#lock-filename) | `str` | The filename of the ultimate lockfile. `default` env is `requirements.txt`, non-default is `requirements/requirements-{env_name}.txt` |
| [pip-compile-constraint](docs/examples.md#pip-compile-constraint) | `str` | An environment to use as a constraint file, ensuring that all shared dependencies are pinned to the same versions. |
| [pip-compile-hashes](docs/examples.md#pip-compile-hashes) | `bool` | Whether to generate hashes in the lockfile. Defaults to `false`. |
| [pip-compile-resolver](docs/examples.md#pip-compile-resolver) | `str` | Whether to use `pip-compile` or `uv` to resolve dependencies into the project. Defaults to `pip-compile` |
| [pip-compile-args](docs/examples.md#pip-compile-args) | `list[str]` | Additional command-line arguments to pass to `pip-compile-resolver` |
| [pip-compile-verbose](docs/examples.md#pip-compile-verbose) | `bool` | Set to `true` to run `pip-compile` in verbose mode instead of quiet mode, set to `false` to silence warnings |#### Installing Lockfiles
| name | type | description |
| --------------------------------------------------------------------- | ----------- | ----------------------------------------------------------------------------------------------------- |
| [pip-compile-installer](docs/examples.md#pip-compile-installer) | `str` | Whether to use `pip`, `pip-sync`, or `uv` to install dependencies into the project. Defaults to `pip` |
| [pip-compile-install-args](docs/examples.md#pip-compile-install-args) | `list[str]` | Additional command-line arguments to pass to `pip-compile-installer` |---
---
#### Check Out the [Docs]
- [Examples 📚](docs/examples.md)
- [Upgrading 🚀](docs/upgrading.md)
- [Command Line Usage 📦](docs/cli_usage.md)
- [Notes 📝](docs/notes.md)#### Looking to contribute? See the [Contributing Guide]
#### See the [Changelog]
[Docs]: https://juftin.github.io/hatch-pip-compile/
[Contributing Guide]: https://juftin.github.io/hatch-pip-compile/contributing
[Changelog]: https://github.com/juftin/hatch-pip-compile/releases