django-layout
django-layout copied to clipboard
Switch to `uv`
Maybe something like this in the Makefile:
BASE_PIP_COMPILE_ARGS=--python-version 3.12 --generate-hashes pyproject.toml
PIP_COMPILE_ARGS=--output-file=requirements.txt $(BASE_PIP_COMPILE_ARGS)
DEV_PIP_COMPILE_ARGS=--output-file=requirements-dev.txt --extra dev $(BASE_PIP_COMPILE_ARGS)
.venv/bin/activate: ## Create a new virtual environment
uv venv --python 3.12 --seed
requirements.txt: pyproject.toml ## Generate requirements.txt from pyproject.toml
uv pip compile $(PIP_COMPILE_ARGS)
requirements-dev.txt: requirements.txt pyproject.toml ## Generate requirements-dev.txt from pyproject.toml
uv pip compile $(DEV_PIP_COMPILE_ARGS)
.PHONY: lock
lock: requirements.txt requirements-dev.txt ## Lock dependencies
.PHONY: install
install: .venv/bin/activate ## Install dev dependencies
uv pip sync --require-hashes requirements-dev.txt
.PHONY: upgrade-requirements
upgrade-requirements: ## Upgrade all dependencies in requirements.txt and requirements-dev.txt
uv pip compile --upgrade $(PIP_COMPILE_ARGS)
uv pip compile --upgrade $(DEV_PIP_COMPILE_ARGS)