mirror of
https://github.com/pyapp-kit/superqt.git
synced 2025-12-15 18:50:05 +01:00
* ci: [pre-commit.ci] autoupdate updates: - [github.com/astral-sh/ruff-pre-commit: v0.11.12 → v0.12.2](https://github.com/astral-sh/ruff-pre-commit/compare/v0.11.12...v0.12.2) - [github.com/pre-commit/mirrors-mypy: v1.16.0 → v1.16.1](https://github.com/pre-commit/mirrors-mypy/compare/v1.16.0...v1.16.1) * style: [pre-commit.ci] auto fixes [...] * pin pytestqt * refactor: setup for uv * fix workflow * update deploy too * pin pyside2 to numpy 2 * try uv-managed * bump min qtpy * change authors * change pyside2 * change pyside2 spec * update pyside2 * more pins * update numpy version constraints for pyside2 and test dependencies * pin pytest-qt for napari --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
160 lines
4.9 KiB
YAML
160 lines
4.9 KiB
YAML
name: Test
|
|
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
on:
|
|
push:
|
|
branches: [main]
|
|
tags: [v*]
|
|
pull_request:
|
|
workflow_dispatch:
|
|
schedule:
|
|
- cron: "0 0 * * 0" # run weekly
|
|
|
|
jobs:
|
|
test:
|
|
name: ${{ matrix.os }} (${{ matrix.python-version }}) ${{ matrix.add-extra || '' }} ${{ matrix.resolution || ''}}
|
|
runs-on: ${{ matrix.os }}
|
|
env:
|
|
UV_PRERELEASE: ${{ github.event_name == 'schedule' && 'allow' || 'if-necessary-or-explicit' }}
|
|
UV_NO_SYNC: 1
|
|
UV_MANAGED_PYTHON: 1
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
python-version: ["3.9", "3.13"]
|
|
os: [ubuntu-latest, macos-latest, windows-latest]
|
|
add-extra: [pyqt6, pyside6]
|
|
include:
|
|
- os: windows-latest
|
|
python-version: "3.11"
|
|
resolution: "lowest-direct"
|
|
add-extra: pyside6
|
|
- os: macos-latest
|
|
python-version: "3.12"
|
|
resolution: "lowest-direct"
|
|
add-extra: pyqt6
|
|
- python-version: "3.9"
|
|
os: ubuntu-latest
|
|
add-extra: pyqt5
|
|
- python-version: "3.9"
|
|
os: ubuntu-latest
|
|
add-extra: pyside2
|
|
- python-version: "3.11"
|
|
os: windows-latest
|
|
add-extra: pyqt5
|
|
- python-version: "3.10"
|
|
os: ubuntu-latest
|
|
add-extra: pyside2
|
|
- python-version: "3.12"
|
|
os: ubuntu-latest
|
|
add-extra: pyqt6
|
|
- python-version: "3.12"
|
|
os: ubuntu-latest
|
|
add-extra: pyside6
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 0
|
|
fetch-tags: true
|
|
|
|
- name: 🐍 Set up Python ${{ matrix.python-version }}
|
|
uses: astral-sh/setup-uv@v6
|
|
with:
|
|
python-version: ${{ matrix.python-version }}
|
|
enable-cache: true
|
|
cache-dependency-glob: "**/pyproject.toml"
|
|
|
|
- uses: pyvista/setup-headless-display-action@v4
|
|
with:
|
|
qt: true
|
|
|
|
- name: Install Dependencies
|
|
run: uv sync --no-dev --group test --extra ${{ matrix.add-extra }} --resolution ${{ matrix.resolution || 'highest'}}
|
|
|
|
- name: 🧪 Run Tests
|
|
run: uv run coverage run -p -m pytest -v
|
|
|
|
# If something goes wrong with --pre tests, we can open an issue in the repo
|
|
- name: 📝 Report --pre Failures
|
|
if: failure() && github.event_name == 'schedule'
|
|
uses: JasonEtco/create-an-issue@v2
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
PLATFORM: ${{ matrix.os }}
|
|
PYTHON: ${{ matrix.python-version }}
|
|
RUN_ID: ${{ github.run_id }}
|
|
TITLE: "[test-bot] pip install --pre is failing"
|
|
with:
|
|
filename: .github/TEST_FAIL_TEMPLATE.md
|
|
update_existing: true
|
|
|
|
- name: Upload coverage
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: covreport-${{ matrix.os }}-py${{ matrix.python-version }}-${{ matrix.add-extra }}-${{ matrix.resolution }}
|
|
path: ./.coverage*
|
|
include-hidden-files: true
|
|
|
|
upload_coverage:
|
|
if: always()
|
|
needs: [test]
|
|
uses: pyapp-kit/workflows/.github/workflows/upload-coverage.yml@v2
|
|
secrets: inherit
|
|
|
|
test_napari:
|
|
uses: pyapp-kit/workflows/.github/workflows/test-dependents.yml@v2
|
|
with:
|
|
dependency-repo: napari/napari
|
|
dependency-extras: "testing"
|
|
qt: ${{ matrix.qt }}
|
|
pytest-args: 'src/napari/_qt --import-mode=importlib -k "not async and not qt_dims_2 and not qt_viewer_console_focus and not keybinding_editor and not preferences_dialog_not_dismissed"'
|
|
python-version: "3.10"
|
|
# napari hasn't pinned pytest-qt, but still requires pyside2 tests
|
|
post-install-cmd: "pip install lxml_html_clean pytest-qt==4.4.0"
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
qt: ["pyqt5", "pyside2"]
|
|
|
|
check-manifest:
|
|
name: Check Manifest
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- run: pipx run check-manifest
|
|
|
|
build-and-inspect-package:
|
|
name: Build & inspect package.
|
|
needs: test
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 0
|
|
- uses: hynek/build-and-inspect-python-package@v2
|
|
|
|
upload-to-pypi:
|
|
if: success() && startsWith(github.ref, 'refs/tags/') && github.event_name != 'schedule' && github.repository == 'pyapp-kit/superqt'
|
|
name: Upload package to PyPI
|
|
needs: build-and-inspect-package
|
|
runs-on: ubuntu-latest
|
|
permissions:
|
|
id-token: write
|
|
contents: write
|
|
steps:
|
|
- name: Download built artifact to dist/
|
|
uses: actions/download-artifact@v4
|
|
with:
|
|
name: Packages
|
|
path: dist
|
|
- name: 🚢 Publish to PyPI
|
|
uses: pypa/gh-action-pypi-publish@release/v1
|
|
- uses: softprops/action-gh-release@v2
|
|
with:
|
|
generate_release_notes: true
|
|
files: "./dist/*"
|