name: Full Test
on:
workflow_dispatch: # Manual trigger only
jobs:
test:
name: ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.12"
cache: "pip"
- name: System deps (Linux)
if: runner.os == 'Linux'
run: sudo apt-get update && sudo apt-get install -y libopenblas-dev liblapack-dev gfortran
- name: System deps (macOS)
if: runner.os == 'macOS'
run: |
brew install openblas lapack gcc
echo "LDFLAGS=-L/opt/homebrew/opt/openblas/lib" >> $GITHUB_ENV
echo "CPPFLAGS=-I/opt/homebrew/opt/openblas/include" >> $GITHUB_ENV
echo "CFLAGS=-Wno-error=deprecated -Wno-error=strict-prototypes" >> $GITHUB_ENV
- uses: r-lib/actions/setup-r@v2
with:
r-version: "4.4"
- name: Install
run: pip install -e ".[full]"
timeout-minutes: 30
continue-on-error: true # louvain may fail on macOS/Windows
- name: Verify
run: |
python -c "import chatspatial; print(f'v{chatspatial.__version__}')"
python -c "from chatspatial.server import mcp; print('MCP OK')"
python -c "import scanpy, squidpy, leidenalg; print('Core OK')"
python -m chatspatial --help