Metadata-Version: 2.4
Name: chefe
Version: 0.0.9
Summary: One manifest for every package manager | conda, PyPI, npm, cargo & more, behind a single file.
Project-URL: Homepage, https://phvv.me/chefe
Project-URL: Documentation, https://phvv.me/chefe
Project-URL: Repository, https://github.com/phvv-me/chefe
Project-URL: Issues, https://github.com/phvv-me/chefe/issues
Author-email: Pedro Valois <contact@phvv.me>
License-Expression: Apache-2.0
License-File: LICENSE
Keywords: cargo,conda,monorepo,npm,package-manager,pixi,polyglot,pypi
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Topic :: Software Development :: Build Tools
Classifier: Topic :: System :: Software Distribution
Requires-Python: >=3.11
Requires-Dist: cyclopts>=4
Requires-Dist: packaging>=24
Requires-Dist: plumbum>=1.8
Requires-Dist: pydantic>=2.7
Requires-Dist: rich>=13
Requires-Dist: tomlkit>=0.13
Requires-Dist: typing-extensions>=4.6
Provides-Extra: dev
Requires-Dist: dirty-equals>=0.8; extra == 'dev'
Requires-Dist: faker>=30; extra == 'dev'
Requires-Dist: hypothesis>=6.100; extra == 'dev'
Requires-Dist: mypy>=1.11; extra == 'dev'
Requires-Dist: pyrefly>=1; extra == 'dev'
Requires-Dist: pytest-cov>=5; extra == 'dev'
Requires-Dist: pytest-mock>=3.14; extra == 'dev'
Requires-Dist: pytest-subprocess>=1.5; extra == 'dev'
Requires-Dist: pytest>=8; extra == 'dev'
Requires-Dist: ruff>=0.6; extra == 'dev'
Requires-Dist: syrupy>=4; extra == 'dev'
Provides-Extra: docs
Requires-Dist: mkdocs-llmstxt>=0.2; extra == 'docs'
Requires-Dist: mkdocs-material>=9.5; extra == 'docs'
Requires-Dist: mkdocs-static-i18n>=1.2; extra == 'docs'
Description-Content-Type: text/markdown

<div align="center">

[![chefe banner](https://raw.githubusercontent.com/phvv-me/chefe/main/docs/assets/banner.png)](https://phvv.me/chefe)

[![CI](https://github.com/phvv-me/chefe/actions/workflows/ci.yml/badge.svg)](https://github.com/phvv-me/chefe/actions/workflows/ci.yml)
[![Publish](https://github.com/phvv-me/chefe/actions/workflows/publish.yml/badge.svg)](https://github.com/phvv-me/chefe/actions/workflows/publish.yml)
[![PyPI](https://img.shields.io/pypi/v/chefe)](https://pypi.org/project/chefe/)
[![Python](https://img.shields.io/pypi/pyversions/chefe)](https://pypi.org/project/chefe/)
[![Docs](https://img.shields.io/badge/docs-phvv.me%2Fchefe-EAB308)](https://phvv.me/chefe)
[![Coverage](https://img.shields.io/badge/coverage-100%25-brightgreen)](https://github.com/phvv-me/chefe/actions/workflows/ci.yml)

</div>

> **Warning** chefe is early (`0.0.x`). The manifest and commands may still change.

## Installation

```sh
pip install chefe      # or: uv tool install chefe
```

chefe installs [pixi](https://pixi.sh), the engine it compiles to, on first run, so a single
`pip install` is all you need.

## What it is

Conda, PyPI, npm, cargo. Real projects need several at once, scattered across `pixi.toml`, `package.json`, and `Cargo.toml`. chefe is the head chef. You write **one `chefe.toml`** recipe, chefe runs the line (pixi, npm, cargo) and plates a single environment. It never re-implements a solver. It runs the cooks.

```toml
[workspace]
name     = "my-project"
channels = ["conda-forge"]

[deps]                      # bare table is conda, the default source
python  = ">=3.11"
ripgrep = "*"

[pypi.deps]                 # resolved by pixi-via-uv, in the same env
torch = ">=2.6"

[cargo.deps]                # other ecosystems are explicit via [<eco>.deps]
bookokrat = "*"

[npm.deps]
prettier = ">=3"
```

## Usage

```sh
chefe init                 # scaffold a chefe.toml
chefe add ripgrep          # add deps, use --pypi / --cargo / --npm for others
chefe install              # provision every ecosystem at once
chefe x ruff check .       # run a tool in a throwaway env, like uvx
chefe tree                 # what's declared vs installed, per ecosystem
```

> **Tip** run `chefe tree` anytime to see declared vs installed across every ecosystem at a glance.

## Lore

A head chef never cooks every dish alone. They write the recipe and run the line, and the cooks each work their station. `chefe` does the same for your dependencies.
