Initial napari specific classes for package installer related logic #439
Workflow file for this run
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
# This workflow will upload a Python Package using Twine when a release is created | |
# For more information see: https://help.github.com/en/actions/language-and-framework-guides/using-python-with-github-actions#publishing-to-package-registries | |
name: test and deploy | |
on: | |
push: | |
branches: | |
- main | |
tags: | |
- "v*" # Push events to matching v*, i.e. v1.0, v20.15.10 | |
pull_request: | |
branches: | |
- main | |
workflow_dispatch: | |
concurrency: | |
# Concurrency group that uses the workflow name and PR number if available | |
# or commit SHA as a fallback. If a new build is triggered under that | |
# concurrency group while a previous build is running it will be canceled. | |
# Repeated pushes to a PR will cancel all previous builds, while multiple | |
# merges to main will not cancel. | |
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }} | |
cancel-in-progress: true | |
jobs: | |
test: | |
name: ${{ matrix.platform }}, py${{ matrix.python-version }}, napari ${{ matrix.napari }}, ${{ matrix.tool }} | |
runs-on: ${{ matrix.platform }} | |
strategy: | |
fail-fast: false | |
matrix: | |
platform: [ubuntu-latest, windows-latest, macos-13] | |
python-version: ["3.9", "3.10", "3.11"] | |
napari: ["latest", "repo"] | |
tool: ["pip", "conda"] | |
exclude: | |
# TODO: Remove when we have a napari release with the plugin manager changes | |
- napari: "latest" | |
# TODO: PyQt / PySide wheels missing | |
- python-version: "3.11" | |
platform: "windows-latest" | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up Python ${{ matrix.python-version }} - pip | |
if: matrix.tool == 'pip' | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Set up Python ${{ matrix.python-version }} - conda | |
if: matrix.tool == 'conda' | |
uses: conda-incubator/setup-miniconda@v3 | |
with: | |
miniforge-version: latest | |
python-version: ${{ matrix.python-version }} | |
- uses: tlambert03/setup-qt-libs@v1 | |
# strategy borrowed from vispy for installing opengl libs on windows | |
- name: Install Windows OpenGL | |
if: runner.os == 'Windows' | |
run: | | |
git clone --depth 1 https://github.com/pyvista/gl-ci-helpers.git | |
powershell gl-ci-helpers/appveyor/install_opengl.ps1 | |
if (Test-Path -Path "C:\Windows\system32\opengl32.dll" -PathType Leaf) {Exit 0} else {Exit 1} | |
- name: Install dependencies without tox-conda | |
if: matrix.tool == 'pip' | |
run: | | |
python -m pip install --upgrade pip | |
python -m pip install setuptools tox tox-gh-actions | |
- name: Install dependencies including tox-conda | |
if: matrix.tool == 'conda' | |
shell: bash -el {0} | |
run: | | |
python -m pip install --upgrade pip | |
python -m pip install setuptools 'tox<4' tox-gh-actions tox-conda | |
- name: Test with tox | |
uses: aganders3/headless-gui@v2 | |
with: | |
shell: bash -el {0} | |
run: python -m tox -vv | |
env: | |
PYVISTA_OFF_SCREEN: True # required for opengl on windows | |
NAPARI: ${{ matrix.napari }} | |
FORCE_COLOR: 1 | |
# PySide6 only functional with Python 3.10+ | |
TOX_SKIP_ENV: ".*py39-PySide6.*" | |
- name: Coverage | |
uses: codecov/codecov-action@v4 | |
env: | |
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | |
deploy: | |
# this will run when you have tagged a commit, starting with "v*" | |
# and requires that you have put your twine API key in your | |
# github secrets (see readme for details) | |
needs: [test] | |
runs-on: ubuntu-latest | |
if: contains(github.ref, 'tags') | |
permissions: | |
id-token: write | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: "3.x" | |
- name: Install dependencies | |
run: | | |
python -m pip install --upgrade pip | |
pip install -U setuptools build | |
- name: Build | |
run: | | |
git tag | |
python -m build | |
- name: Publish package distributions to PyPI | |
uses: pypa/gh-action-pypi-publish@release/v1 |