Skip to content

Merge pull request #224 from bgilbert/py3.12 #182

Merge pull request #224 from bgilbert/py3.12

Merge pull request #224 from bgilbert/py3.12 #182

Workflow file for this run

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.12'
- 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", "3.12"]
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 setuptools
- 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", "3.12"]
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 setuptools 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.12'
- 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