default:
    @just --lists

setup:
    uv sync --all-groups
    uv run pre-commit install
    uv run pre-commit install --hook-type pre-push

clean:
    rm -rf .pytest_cache .ruff_cache .venv
    find . -type d -name '__pycache__' -prune -exec rm -rf -- {} +

hooks:
    uv run pre-commit run --all-files

format *paths:
    uv run ruff format {{ paths }}
    uv run ruff check --select I --fix {{ paths }}

lint *paths:
    uv run ruff check {{ paths }} --fix

lintcheck *paths:
    uv run ruff check {{ paths }}

formatcheck *paths:
    uv run ruff format --check {{ paths }}

typecheck *paths:
    uv run basedpyright {{ paths }}

test *args:
    uv run pytest {{ args }}

docs-serve:
    uv run sphinx-autobuild docs docs/_build/html

docs-build:
    uv run sphinx-build -W --keep-going -b html docs docs/_build/html

docs-clean:
    rm -rf docs/_build docs/_api

check *paths:
    set -o pipefail
    @just formatcheck {{ paths }} | tail -n 1
    @just lintcheck {{ paths }} | tail -n 1
    @just typecheck {{ paths }} | tail -n 1
    @just test -q {{ paths }} | tail -n 1
