Merge pull request #222 from bgilbert/hooks #180
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Python | |
on: | |
push: | |
branches: [main] | |
tags: ["*"] | |
pull_request: | |
branches: [main] | |
permissions: | |
contents: read | |
env: | |
PYTHONUNBUFFERED: 1 | |
jobs: | |
pre-commit: | |
name: Rerun pre-commit checks | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: '3.11' | |
- uses: pre-commit/[email protected] | |
tests: | |
name: Tests | |
needs: pre-commit | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: [ubuntu-latest, macos-latest] | |
python-version: [3.8, 3.9, "3.10", "3.11"] | |
steps: | |
- name: Check out repo | |
uses: actions/checkout@v4 | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Install Python tools | |
run: | | |
python -m pip install --upgrade pip | |
pip install jinja2 pytest | |
- name: Install OpenSlide | |
run: | | |
case "${{ matrix.os }}" in | |
ubuntu-latest) | |
sudo apt-get install libopenslide0 | |
;; | |
macos-latest) | |
brew install openslide | |
;; | |
esac | |
- name: Install | |
run: pip install . | |
- name: Run tests | |
run: pytest -v | |
- name: Tile slide | |
run: python examples/deepzoom/deepzoom_tile.py --viewer -o tiled tests/fixtures/small.svs | |
windows: | |
name: Windows | |
needs: pre-commit | |
runs-on: windows-latest | |
env: | |
WINBUILD_RELEASE: 20230414 | |
defaults: | |
run: | |
shell: bash | |
strategy: | |
matrix: | |
python-version: [3.8, 3.9, "3.10", "3.11"] | |
python-arch: [x86, x64] | |
steps: | |
- name: Check out repo | |
uses: actions/checkout@v4 | |
- name: Set up Python ${{ matrix.python-version }} ${{ matrix.python-arch }} | |
uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ matrix.python-version }} | |
architecture: ${{ matrix.python-arch }} | |
- name: Install Python tools | |
run: | | |
python -m pip install --upgrade pip | |
pip install flask pytest wheel | |
# Current Pillow releases don't have 32-bit wheels | |
# https://github.com/python-pillow/Pillow/issues/7251 | |
pip install Pillow --only-binary=:all: | |
- name: Install OpenSlide | |
run: | | |
case "${{ matrix.python-arch }}" in | |
x86) zipname=openslide-win32-${WINBUILD_RELEASE} ;; | |
x64) zipname=openslide-win64-${WINBUILD_RELEASE} ;; | |
esac | |
mkdir -p c:\\openslide | |
cd c:\\openslide | |
curl -LO "https://github.com/openslide/openslide-winbuild/releases/download/v${WINBUILD_RELEASE}/${zipname}.zip" | |
7z x ${zipname}.zip | |
echo "OPENSLIDE_PATH=c:\\openslide\\${zipname}\\bin" >> $GITHUB_ENV | |
- name: Build wheel | |
run: | | |
python setup.py bdist_wheel | |
basename=openslide-python-wheels-$GITHUB_RUN_NUMBER-$(echo $GITHUB_SHA | cut -c-10) | |
mkdir -p "artifacts/${basename}" | |
mv dist/*.whl "artifacts/${basename}" | |
echo "basename=${basename}" >> $GITHUB_ENV | |
- name: Install | |
run: pip install -e . | |
- name: Run tests | |
# Reads OPENSLIDE_PATH | |
run: pytest -v | |
- name: Test library loading in examples | |
# Reads OPENSLIDE_PATH | |
run: | | |
python examples/deepzoom/deepzoom_multiserver.py -h >/dev/null | |
python examples/deepzoom/deepzoom_server.py -h >/dev/null | |
python examples/deepzoom/deepzoom_tile.py -h >/dev/null | |
- name: Tile slide | |
# Reads OPENSLIDE_PATH | |
run: python examples/deepzoom/deepzoom_tile.py --viewer -o tiled tests/fixtures/small.svs | |
- name: Archive wheel | |
uses: actions/upload-artifact@v3 | |
with: | |
name: ${{ env.basename }} | |
path: artifacts | |
docs: | |
name: Docs | |
needs: pre-commit | |
runs-on: ubuntu-latest | |
steps: | |
- name: Check out repo | |
uses: actions/checkout@v4 | |
- name: Set up Python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: '3.11' | |
- name: Install Python tools | |
run: | | |
python -m pip install --upgrade pip | |
pip install sphinx | |
- name: Build | |
run: | | |
basename=openslide-python-docs-$GITHUB_RUN_NUMBER-$(echo $GITHUB_SHA | cut -c-10) | |
sphinx-build -d doctrees doc artifact/${basename} | |
echo "basename=${basename}" >> $GITHUB_ENV | |
- name: Archive | |
uses: actions/upload-artifact@v3 | |
with: | |
name: ${{ env.basename }} | |
path: artifact |