Merge pull request #3046 from pyqtgraph/dependabot/pip/dot-github/wor… #43
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: main | |
on: | |
push: | |
branches-ignore: "dependabot/**" | |
pull_request: | |
paths-ignore: | |
- '**.md' | |
env: | |
PIP_DISABLE_PIP_VERSION_CHECK: 1 | |
concurrency: | |
group: ${{ github.head_ref || github.run_id }} | |
cancel-in-progress: true | |
jobs: | |
make_dash_docset: | |
runs-on: macos-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Setup Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: '3.x' | |
cache: pip | |
- name: Install Build Dependencies | |
run: | | |
python -m pip install --upgrade doc2dash setuptools -r doc/requirements.txt | |
- name: Build docset | |
run: | | |
make -C doc dash | |
- run: tar --exclude='.DS_Store' -cvzf pyqtgraph.tgz doc/pyqtgraph.docset | |
- name: Upload docset | |
uses: actions/upload-artifact@v4 | |
with: | |
name: pyqtgraph.docset | |
path: pyqtgraph.tgz | |
run-mypy: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Setup Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: "3.12" | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Install mypy | |
run: pip install mypy | |
- name: Run mypy | |
run: mypy | |
test-pip: | |
runs-on: ${{ matrix.os }} | |
timeout-minutes: 30 | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-latest, windows-latest, macos-latest] | |
qt-lib: [pyqt, pyside] | |
python-version: ["3.10", "3.11", "3.12"] | |
include: | |
- python-version: "3.10" | |
qt-lib: "pyqt" | |
qt-version: "PyQt5~=5.15.0" | |
- python-version: "3.10" | |
qt-lib: "pyside" | |
qt-version: "PySide2~=5.15.0" | |
- python-version: "3.11" | |
qt-lib: "pyqt" | |
qt-version: "PyQt6~=6.2.0 PyQt6-Qt6~=6.2.0" | |
- python-version: "3.11" | |
qt-lib: "pyside" | |
qt-version: "PySide6-Essentials~=6.4.0" | |
- python-version: "3.12" | |
qt-lib: "pyqt" | |
qt-version: "PyQt6" | |
- python-version: "3.12" | |
qt-lib: "pyside" | |
qt-version: "PySide6-Essentials" | |
exclude: | |
- os: macos-latest | |
python-version: "3.10" | |
qt-lib: "pyside" | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Setup Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
cache: pip | |
- name: "Install Windows-Mesa OpenGL DLL" | |
if: runner.os == 'Windows' | |
run: | | |
curl -L --output mesa.7z --url https://github.com/pal1000/mesa-dist-win/releases/download/24.0.6/mesa3d-24.0.6-release-msvc.7z | |
7z x mesa.7z -o* | |
powershell.exe mesa\systemwidedeploy.cmd 1 | |
- name: Install Dependencies | |
run: | | |
python -m pip install -r .github/workflows/etc/requirements.txt ${{ matrix.qt-version }} . | |
- name: "Install Linux VirtualDisplay" | |
if: runner.os == 'Linux' | |
run: | | |
sudo apt-get update -y --allow-releaseinfo-change | |
sudo apt-get install --no-install-recommends -y \ | |
libxkbcommon-x11-0 \ | |
x11-utils \ | |
libyaml-dev \ | |
libegl1-mesa \ | |
libxcb-icccm4 \ | |
libxcb-image0 \ | |
libxcb-keysyms1 \ | |
libxcb-randr0 \ | |
libxcb-render-util0 \ | |
libxcb-xinerama0 \ | |
libopengl0 \ | |
libxcb-cursor0 | |
- name: 'Debug Info' | |
run: | | |
echo python location: `which python` | |
echo python version: `python --version` | |
echo pytest location: `which pytest` | |
echo installed packages | |
python -m pip list | |
echo pyqtgraph system info | |
python -c "import pyqtgraph as pg; pg.systemInfo()" | |
shell: bash | |
env: | |
QT_DEBUG_PLUGINS: 1 | |
- name: 'XVFB Display Info' | |
run: | | |
xvfb-run --server-args="-screen 0, 1920x1200x24 -ac +extension GLX +render -noreset" python -m pyqtgraph.util.glinfo | |
xvfb-run --server-args="-screen 0, 1920x1200x24 -ac +extension GLX +render -noreset" python -m pyqtgraph.util.get_resolution | |
if: runner.os == 'Linux' | |
- name: 'Display Info' | |
run: | | |
python -m pyqtgraph.util.glinfo | |
python -m pyqtgraph.util.get_resolution | |
if: runner.os != 'Linux' | |
- name: Run Tests | |
run: | | |
mkdir "$SCREENSHOT_DIR" | |
pytest tests -v | |
pytest pyqtgraph/examples -v -n 2 | |
shell: bash | |
- name: Upload Screenshots | |
if: failure() | |
uses: actions/upload-artifact@v4 | |
with: | |
name: Screenshots (Python ${{ matrix.python-version }} - Qt-Bindings ${{ matrix.qt-lib }} - OS ${{ matrix.os }}) | |
path: ${{ env.SCREENSHOT_DIR }} | |
if-no-files-found: ignore | |
env: | |
SCREENSHOT_DIR: screenshots | |
test-conda: | |
runs-on: ${{ matrix.os }} | |
timeout-minutes: 30 | |
defaults: | |
run: | |
shell: bash -l {0} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-latest, windows-latest, macos-latest] | |
qt-lib: [pyqt, pyside] | |
include: | |
- qt-lib: pyqt | |
environment-file: .github/workflows/etc/environment-pyqt.yml | |
- qt-lib: pyside | |
environment-file: .github/workflows/etc/environment-pyside.yml | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- uses: conda-incubator/setup-miniconda@v3 | |
with: | |
miniforge-version: latest | |
miniforge-variant: Mambaforge | |
environment-file: ${{ matrix.environment-file }} | |
auto-update-conda: false | |
python-version: "3.12" | |
use-mamba: true | |
- name: "Install Test Framework" | |
run: pip install pytest pytest-xdist | |
- name: "Install Windows-Mesa OpenGL DLL" | |
if: runner.os == 'Windows' | |
run: | | |
curl -L --output mesa.7z --url https://github.com/pal1000/mesa-dist-win/releases/download/24.0.6/mesa3d-24.0.6-release-msvc.7z | |
7z x mesa.7z -o* | |
powershell.exe mesa\systemwidedeploy.cmd 1 | |
shell: pwsh | |
- name: "Install Linux VirtualDisplay" | |
if: runner.os == 'Linux' | |
run: | | |
sudo apt-get update -y --allow-releaseinfo-change | |
sudo apt-get install -y --no-install-recommends \ | |
libxkbcommon-x11-0 \ | |
x11-utils \ | |
libyaml-dev \ | |
libegl1-mesa \ | |
libxcb-icccm4 \ | |
libxcb-image0 \ | |
libxcb-keysyms1 \ | |
libxcb-randr0 \ | |
libxcb-render-util0 \ | |
libxcb-xinerama0 \ | |
libopengl0 \ | |
libxcb-cursor0 | |
pip install pytest-xvfb | |
- name: 'Debug Info' | |
run: | | |
echo python location: `which python` | |
echo python version: `python --version` | |
echo pytest location: `which pytest` | |
echo installed packages | |
conda list | |
pip list | |
echo pyqtgraph system info | |
python -c "import pyqtgraph as pg; pg.systemInfo()" | |
env: | |
QT_DEBUG_PLUGINS: 1 | |
- name: 'XVFB Display Info' | |
run: | | |
xvfb-run --server-args="-screen 0, 1920x1200x24 -ac +extension GLX +render -noreset" python -m pyqtgraph.util.glinfo | |
xvfb-run --server-args="-screen 0, 1920x1200x24 -ac +extension GLX +render -noreset" python -m pyqtgraph.util.get_resolution | |
if: runner.os == 'Linux' | |
- name: 'Display Info' | |
run: | | |
python -m pyqtgraph.util.glinfo | |
python -m pyqtgraph.util.get_resolution | |
if: runner.os != 'Linux' | |
- name: Run Tests | |
run: | | |
mkdir "$SCREENSHOT_DIR" | |
pytest tests -v | |
pytest pyqtgraph/examples -v -n 2 | |
- name: Upload Screenshots | |
if: failure() | |
uses: actions/upload-artifact@v4 | |
with: | |
name: Screenshots (Conda - Qt-Bindings ${{ matrix.qt-lib }} - OS ${{ matrix.os }}) | |
path: ${{ env.SCREENSHOT_DIR }} | |
if-no-files-found: ignore | |
env: | |
SCREENSHOT_DIR: screenshots | |
build-wheel: | |
name: build wheel | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Setup Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: '3.12' | |
cache: pip | |
- name: Build Wheel | |
run: | | |
pip install build | |
python -m build --wheel | |
- name: Upload Wheel | |
uses: actions/upload-artifact@v4 | |
with: | |
name: wheel | |
path: dist/*.whl | |
analyze: | |
name: analyze | |
runs-on: ubuntu-latest | |
permissions: | |
actions: read | |
contents: read | |
security-events: write | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 2 | |
- name: Setup Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: '3.12' | |
cache: pip | |
- name: Install Dependencies | |
run: | | |
python -m pip install PyQt5 numpy scipy | |
- name: Initialize CodeQL | |
uses: github/codeql-action/init@v3 | |
with: | |
languages: 'python' | |
queries: +security-and-quality | |
- name: Autobuild | |
uses: github/codeql-action/autobuild@v3 | |
- name: Perform CodeQL Analysis | |
uses: github/codeql-action/analyze@v3 |