github python-developer-tooling-handbook/makefile.uv v0.3.0
v0.3.0 — simplify

latest releases: v0.4.1, v0.4.0
3 months ago

Simplification release. v0.2 accreted defensive code through two review rounds — most of it protecting against hostile user input in a Makefile the user wrote themselves. The complexity was fighting the handbook's "confused beginner" reader. This cut pulls the file back toward something readable in one pass.

Removed

  • `LOG_DIR` per-env log capture feature and its supporting machinery (SHELL conditional upgrade, dash detection, recipe branching, clean-side validation). Workaround is a shell pipe:
    ```console
    $ make test-py3.12 2>&1 | tee py3.12.log
    $ make -j4 test-all --output-sync=target
    ```
  • `clean`'s allowlist validation (refused `/`, `.`, `..`, `.venv;rm`, etc.). Replaced by a single empty-prefix check — the only real accident Makefile.uv can sensibly catch. `UV_VENV_PREFIX=/` is self-sabotage; we shouldn't try to defend against it.
  • `sq` shell-quote helper in `help`. Plain `@echo` is fine.

Kept (earning their lines)

  • `FORCE` prereq on pattern rules — real Make correctness issue.
  • `LINT` origin-check for the Make built-in — real collision.
  • Quoted path interpolation (`"$(UV_VENV_PREFIX)$*"`) and `rm -rf --`.
  • `DEP_MODE := group` for PEP 735 dependency groups.
  • Both examples, dashed-variant handling (`cut -f2-`), Windows CI on tag.

Size

  • Makefile.uv: 155 → 85 lines (−45%), fits on one screen.
  • smoke.sh: 164 → 126 lines (−23%).

Breaking

  • `LOG_DIR` is no longer recognized (silent no-op). Pipe through `tee` yourself for per-env capture.

Install

```bash
curl -sSL https://raw.githubusercontent.com/python-developer-tooling-handbook/makefile.uv/v0.3.0/Makefile.uv -o Makefile.uv
```

Tested on

Linux, macOS, Windows (via Git Bash). CI runs basic + with-matrix + with-groups on ubuntu-latest and macos-latest every push; full three-example suite on windows-latest on every tag.

Don't miss a new makefile.uv release

NewReleases is sending notifications on new releases.