.DEFAULT_GOAL := test

.PHONY: clean html_coverage quality requirements test upgrade

clean: ## remove generated byte code, coverage reports, and build artifacts
	find . -name '*.pyc' -exec rm -f {} +
	find . -name '*.pyo' -exec rm -f {} +
	find . -name '*~' -exec rm -f {} +
	coverage erase
	rm -fr build/
	rm -fr dist/
	rm -fr *.egg-info

html_coverage:
	coverage html && open htmlcov/index.html


requirements: ## install development environment requirements
	uv sync --group dev

test: ## run tests
	uv sync --group django42
	pytest -v --disable-pytest-warnings --nomigrations

upgrade: ## update the uv.lock to use the latest releases satisfying our constraints
	uv run --with edx-lint edx_lint write_uv_constraints pyproject.toml
	uv lock --upgrade
