fix(gui): update screen geometry retrieval to use primaryScreen for Q… #13
This file contains hidden or 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 install Python dependencies, run tests and lint with a variety of Python versions | |
| # For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python | |
| # Inspired from https://pytest-qt.readthedocs.io/en/latest/troubleshooting.html#github-actions | |
| name: Install and Test on Ubuntu (latest) with PyQt6 | |
| on: | |
| push: | |
| branches: [ "main", "develop", "release" ] | |
| pull_request: | |
| branches: [ "main", "develop", "release" ] | |
| workflow_dispatch: | |
| inputs: | |
| job_to_run: | |
| description: 'Which job to run' | |
| required: true | |
| type: choice | |
| options: | |
| - 'all' | |
| - 'build' | |
| - 'build_latest' | |
| default: 'all' | |
| schedule: | |
| # Only the "build_latest" job runs on schedule (see execution conditions below) | |
| - cron: "0 5 * * 1" | |
| jobs: | |
| build: | |
| if: ${{ (github.event_name == 'push' || github.event_name == 'pull_request') || (github.event_name == 'workflow_dispatch' && (github.event.inputs.job_to_run == 'all' || github.event.inputs.job_to_run == 'build')) }} | |
| env: | |
| DISPLAY: ':99.0' | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| python-version: ["3.9", "3.13"] | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Set up Python ${{ matrix.python-version }} | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| - name: Install dependencies | |
| run: | | |
| sudo apt install libxkbcommon-x11-0 libxcb-icccm4 libxcb-image0 libxcb-keysyms1 libxcb-randr0 libxcb-render-util0 libxcb-xinerama0 libxcb-xfixes0 x11-utils libegl1 | |
| /sbin/start-stop-daemon --start --quiet --pidfile /tmp/custom_xvfb_99.pid --make-pidfile --background --exec /usr/bin/Xvfb -- :99 -screen 0 1920x1200x24 -ac +extension GLX | |
| python -m pip install --upgrade pip | |
| python -m pip install ruff pytest | |
| pip install PyQt6 | |
| if [ "${{ github.ref_name }}" = "develop" ]; then | |
| # Clone and install development versions of key dependencies with editable install | |
| cd .. | |
| git clone --depth 1 https://github.com/PlotPyStack/PythonQwt.git | |
| git clone --depth 1 --branch develop https://github.com/PlotPyStack/guidata.git | |
| git clone --depth 1 --branch develop https://github.com/PlotPyStack/plotpy.git | |
| git clone --depth 1 --branch develop https://github.com/DataLab-Platform/sigima.git | |
| cd DataLab | |
| pip install -e ../guidata | |
| pip install -e ../PythonQwt | |
| pip install -e ../plotpy | |
| pip install -e ../sigima | |
| # Install tomli for TOML parsing (safe if already present) | |
| pip install tomli | |
| # Extract dependencies and save to file, then install | |
| python -c "import tomli; f=open('pyproject.toml','rb'); data=tomli.load(f); deps=[d for d in data['project']['dependencies'] if not any(p in d for p in ['guidata','PlotPy','Sigima'])]; open('deps.txt','w').write('\n'.join(deps))" | |
| pip install -r deps.txt | |
| # Install DataLab without dependencies | |
| pip install --no-deps . | |
| elif [ "${{ github.ref_name }}" = "release" ]; then | |
| # Clone dependencies from release branches (with fallback to main/master) | |
| cd .. | |
| # Try cloning PythonQwt from main or master | |
| git clone --depth 1 https://github.com/PlotPyStack/PythonQwt.git || git clone --depth 1 --branch master https://github.com/PlotPyStack/PythonQwt.git | |
| # Try cloning guidata from release, fallback to main or master | |
| git clone --depth 1 --branch release https://github.com/PlotPyStack/guidata.git || git clone --depth 1 https://github.com/PlotPyStack/guidata.git || git clone --depth 1 --branch master https://github.com/PlotPyStack/guidata.git | |
| # Try cloning plotpy from release, fallback to main or master | |
| git clone --depth 1 --branch release https://github.com/PlotPyStack/plotpy.git || git clone --depth 1 https://github.com/PlotPyStack/plotpy.git || git clone --depth 1 --branch master https://github.com/PlotPyStack/plotpy.git | |
| # Try cloning sigima from release, fallback to main | |
| git clone --depth 1 --branch release https://github.com/DataLab-Platform/sigima.git || git clone --depth 1 https://github.com/DataLab-Platform/sigima.git | |
| cd DataLab | |
| pip install -e ../guidata | |
| pip install -e ../PythonQwt | |
| pip install -e ../plotpy | |
| pip install -e ../sigima | |
| # Install tomli for TOML parsing (safe if already present) | |
| pip install tomli | |
| # Extract dependencies and save to file, then install | |
| python -c "import tomli; f=open('pyproject.toml','rb'); data=tomli.load(f); deps=[d for d in data['project']['dependencies'] if not any(p in d for p in ['guidata','PlotPy','Sigima'])]; open('deps.txt','w').write('\n'.join(deps))" | |
| pip install -r deps.txt | |
| # Install DataLab without dependencies | |
| pip install --no-deps . | |
| else | |
| # Install from PyPI normally for main branch | |
| pip install . | |
| fi | |
| - name: Lint with Ruff | |
| run: ruff check --output-format=github datalab | |
| - name: Test with pytest | |
| run: pytest -v --tb=long | |
| build_latest: | |
| if: ${{ github.event_name == 'schedule' || (github.event_name == 'workflow_dispatch' && (github.event.inputs.job_to_run == 'all' || github.event.inputs.job_to_run == 'build_latest')) }} | |
| env: | |
| DISPLAY: ':99.0' | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Set up Python 3.13 | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.13" | |
| - name: Install dependencies (latest) | |
| run: | | |
| set -euxo pipefail | |
| sudo apt-get update | |
| sudo apt-get install -y \ | |
| libxkbcommon-x11-0 libxcb-icccm4 libxcb-image0 libxcb-keysyms1 \ | |
| libxcb-randr0 libxcb-render-util0 libxcb-xinerama0 libxcb-xfixes0 x11-utils libegl1 | |
| /sbin/start-stop-daemon --start --quiet \ | |
| --pidfile /tmp/custom_xvfb_99.pid --make-pidfile --background \ | |
| --exec /usr/bin/Xvfb -- :99 -screen 0 1920x1200x24 -ac +extension GLX | |
| python -m pip install --upgrade pip | |
| python -m pip install ruff pytest | |
| python -m pip install PyQt6 | |
| # Clone and install Sigima from the same branch as DataLab | |
| cd .. | |
| git clone --depth 1 --branch ${{ github.ref_name }} https://github.com/DataLab-Platform/sigima.git || git clone --depth 1 https://github.com/DataLab-Platform/sigima.git | |
| cd DataLab | |
| # Install DataLab itself, but do NOT install its pinned deps | |
| python -m pip install -e . --no-deps | |
| # Install Sigima from local clone | |
| python -m pip install -e ../sigima | |
| # Extract dependency names from pyproject.toml (excluding Sigima) and install latest versions | |
| python -m pip install -U --upgrade-strategy eager $(python -c "import tomllib, re; print(' '.join(re.sub(r'[\[\]<>=!~,.\s].*$', '', d).strip() for d in tomllib.loads(open('pyproject.toml', 'rb').read().decode())['project']['dependencies'] if 'Sigima' not in d))") | |
| - name: Lint with Ruff (latest) | |
| run: ruff check --output-format=github datalab | |
| - name: Test with pytest (latest) | |
| run: pytest -v --tb=long |