.PHONY: all clean results paper install dev lint format typecheck test test-all docs docs-serve extended vulture bandit pydoclint lint-all

all: results paper

install:
	uv sync

dev:
	uv sync --all-extras

lint:
	uv run ruff check setjoin tests ms/scripts
	uv run ruff format --check setjoin tests ms/scripts

format:
	uv run ruff format setjoin tests ms/scripts
	uv run ruff check --fix setjoin tests ms/scripts

typecheck:
	uv run mypy setjoin

vulture:
	uv run vulture setjoin

bandit:
	uv run bandit -r setjoin

pydoclint:
	uv run pydoclint setjoin

lint-all: lint typecheck vulture bandit pydoclint

test:
	uv run pytest tests/ -v

test-all:
	uv run pytest tests/ ms/scripts/test_generate_results.py -v

results:
	uv run python ms/scripts/generate_results.py --project-root ms

extended:
	uv run python ms/scripts/extended_simulations.py --output-dir ms/results/extended

paper: results
	cd ms && latexmk -pdf main.tex

docs:
	uv run sphinx-build docs docs/_build/html

docs-serve: docs
	python -m http.server -d docs/_build/html 8000

clean:
	cd ms && latexmk -C
	rm -f ms/results/*.csv ms/tables/*.tex ms/figures/*.pdf
	rm -rf docs/_build
	rm -rf .pytest_cache .mypy_cache .ruff_cache
	rm -rf *.egg-info dist build
