#!/bin/bash # Setup script for DFlash-MLX-Universal using `uv` # Works on macOS with Apple Silicon (M1/M2/M3/M4) set -euo pipefail echo "==========================================" echo "DFlash-MLX-Universal UV Setup" echo "==========================================" # ── 1. Check if uv is installed ───────────────────────────────────────────── if ! command -v uv &> /dev/null; then echo "❌ uv is not installed. Install it first:" echo " brew install uv" echo " # or: curl -LsSf https://astral.sh/uv/install.sh | sh" exit 1 fi echo "✅ uv found: $(uv --version)" # ── 2. Create virtual environment ─────────────────────────────────────────── echo "" echo "📦 Creating virtual environment..." uv venv # ── 3. Install package with all extras ──────────────────────────────────── echo "" echo "📥 Installing dflash-mlx-universal with dev + server extras..." uv pip install -e ".[dev,server]" # ── 4. Lock dependencies ──────────────────────────────────────────────────── echo "" echo "🔒 Locking dependencies (this may take a moment)..." uv lock # ── 5. Quick verification ─────────────────────────────────────────────────── echo "" echo "🧪 Running quick verification..." uv run python -c "import dflash_mlx; print(f'✅ dflash_mlx version: {dflash_mlx.__version__}')" uv run python -c "import mlx; print(f'✅ mlx version: {mlx.__version__}')" uv run python -c "import mlx_lm; print(f'✅ mlx-lm installed')" # ── 6. Print usage summary ────────────────────────────────────────────────── echo "" echo "==========================================" echo "✅ Setup complete!" echo "==========================================" echo "" echo "Quick start:" echo " uv run python examples/qwen3_4b_demo.py" echo "" echo "Convert a drafter:" echo " uv run python -m dflash_mlx.convert --model z-lab/Qwen3-4B-DFlash-b16 --output ./drafter" echo "" echo "Run tests:" echo " uv run pytest tests/ -v" echo "" echo "Start server:" echo " uv run python -m dflash_mlx.serve --target mlx-community/Qwen3-4B-bf16 --draft ./drafter --port 8000" echo "" echo "For full docs see USAGE_GUIDE.md"