.PHONY: sync
sync:
	uv sync --all-packages --extra cu128 --group dev

.PHONY: sync-cpu
sync-cpu:
	uv sync --all-packages --extra cpu --group dev

.PHONY: format
format:
	uv run ruff format
	uv run ruff check --fix

.PHONY: type
type:
	uv run ty check
	uv run pyright

.PHONY: check
check: format type

.PHONY: test
test:
	uv run pytest

.PHONY: test-fast
test-fast:
	uv run pytest -m "not slow"

.PHONY: test-cpu
test-cpu:
	FORCE_CPU=1 uv run pytest

.PHONY: test-cpu-fast
test-cpu-fast:
	FORCE_CPU=1 uv run pytest -m "not slow"

.PHONY: test-all
test-all: check test

.PHONY: build
build:
	uv build
	uv run --isolated --no-project --with dist/*.whl tests/smoke_test.py
	uv run --isolated --no-project --with dist/*.tar.gz tests/smoke_test.py
	@echo "Build and import test successful"

.PHONY: docs
docs:
	uv run --group docs sphinx-build -j auto docs docs/_build

.PHONY: docs-multiversion
docs-multiversion:
	uv run --group docs sphinx-multiversion docs docs/_build

.PHONY: docs-watch
docs-watch:
	uv run --group docs sphinx-autobuild -j auto docs docs/_build

.PHONY: publish-test
publish-test: build
	uv publish --publish-url https://test.pypi.org/legacy/

.PHONY: publish
publish: build
	uv publish

.PHONY: docker-build
docker-build:
	docker build -t mjlab:latest .
