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: Test uses: pyapp-kit/workflows/.github/workflows/test-pyrepo.yml@v1 with: os: ${{ matrix.platform }} python-version: ${{ matrix.python-version }} qt: ${{ matrix.backend }} pip-install-pre-release: ${{ github.event_name == 'schedule' }} report-failures: ${{ github.event_name == 'schedule' }} secrets: codecov-token: ${{ secrets.CODECOV_TOKEN }} strategy: fail-fast: false matrix: platform: [ubuntu-latest, windows-latest, macos-latest] python-version: ["3.8", "3.9", "3.10", "3.11"] backend: [pyqt5, pyside2, pyqt6] exclude: # Abort (core dumped) on linux pyqt6, unknown reason - platform: ubuntu-latest backend: pyqt6 # lack of wheels for pyside2/py3.11 - python-version: "3.11" backend: pyside2 include: # https://bugreports.qt.io/browse/PYSIDE-2627 - python-version: "3.10" platform: macos-latest backend: "'pyside6!=6.6.2'" - python-version: "3.11" platform: macos-latest backend: "'pyside6!=6.6.2'" - python-version: "3.10" platform: windows-latest backend: "'pyside6!=6.6.2'" - python-version: "3.11" platform: windows-latest backend: "'pyside6!=6.6.2'" - python-version: "3.12" platform: macos-latest backend: pyqt6 # legacy Qt - python-version: 3.8 platform: ubuntu-latest backend: "pyqt5==5.12.*" - python-version: 3.8 platform: ubuntu-latest backend: "pyqt5==5.13.*" - python-version: 3.8 platform: ubuntu-latest backend: "pyqt5==5.14.*" test-qt-minreqs: uses: pyapp-kit/workflows/.github/workflows/test-pyrepo.yml@v1 with: python-version: "3.8" qt: pyqt5 pip-post-installs: 'qtpy==1.1.0 typing-extensions==3.7.4.3' test_napari: uses: pyapp-kit/workflows/.github/workflows/test-dependents.yml@v1 with: dependency-repo: napari/napari dependency-ref: ${{ matrix.napari-version }} dependency-extras: 'testing' qt: ${{ matrix.qt }} pytest-args: 'napari/_qt -k "not async and not qt_dims_2"' python-version: "3.10" strategy: fail-fast: false matrix: napari-version: ["", "v0.4.18"] qt: ["pyqt5", "pyside2"] check-manifest: name: Check Manifest runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - run: pipx run check-manifest 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, check-manifest] if: ${{ github.repository == 'pyapp-kit/superqt' && contains(github.ref, 'tags') }} runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: fetch-depth: 0 - 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 build twine - name: Build and publish env: TWINE_USERNAME: __token__ TWINE_PASSWORD: ${{ secrets.TWINE_API_KEY }} run: | git tag python -m build twine check dist/* twine upload dist/* - uses: softprops/action-gh-release@v2 with: generate_release_notes: true