Make conandeps installable with uv

Add a hatchling build backend, a `conandeps` console script and a uv.lock
so `uv tool install .` (or from a git URL) yields a `conandeps` command in
an isolated venv. Add PEP 723 inline metadata to conandeps.py so the single
file also works standalone via `uv run conandeps.py`.

Pin requires-python to <3.12: Conan 1.x imports the removed `imp` module
(the Containerfile comment wrongly blamed distutils). Add uv to the dev
image so both install paths are verified inside the container.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EYNdaGDrpaqDyT8QtrTQbM
This commit is contained in:
Ole-Morten Duesund 2026-08-25 14:51:38 +02:00
commit 45d800bacd
5 changed files with 784 additions and 3 deletions

View file

@ -15,6 +15,28 @@ Given a `conanfile.py`, `conandeps` reports:
dependency declared) shown both as a list and on the edges of the
dependency tree.
### Installing with uv
```
uv tool install git+https://<your-forge>/conan-utils # or: uv tool install . from a checkout
conandeps path/to/conanfile.py -r knor
```
This puts a `conandeps` command on your PATH in its own virtualenv with
Conan 1.66 — it does not touch or depend on the Conan you use for builds
(but it does read the same `~/.conan` config, profiles and remotes).
The script also carries PEP 723 inline metadata, so the single file works on
its own without a checkout:
```
uv run conandeps.py path/to/conanfile.py -r knor
```
Python 3.83.11 is required; Conan 1.x does not run on 3.12+.
### Usage
```
./conandeps.py path/to/conanfile.py -r knor # text report
./conandeps.py path/to/conanfile.py -r knor -pr myprofile # explicit profile