Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
faf7f67
fix(mypy): remove default args in pre-commit, i.e ignore-missing-imports
RFCreate Dec 3, 2025
7d69180
fix(coveralls): bump version
RFCreate Dec 8, 2025
2deac73
feat(pre-commit): bump versions
RFCreate Jul 28, 2026
cf4cd68
fix(MANIFEST): clean *.txt
RFCreate Jul 30, 2026
1322a43
docs: reorganize install to prevent ImportError
RFCreate Jul 30, 2026
6280e04
fix: comply with PEP 621 metadata
RFCreate Jul 30, 2026
5bfb487
feat: simplify workflows
RFCreate Jul 30, 2026
2efd76c
feat: bump wayland and protocols versions
RFCreate Jul 30, 2026
72fb94b
feat: generate protocols on install
RFCreate Jul 30, 2026
52d8d17
fix: include cffi module in packaging
RFCreate Jul 30, 2026
d33213f
fix: sdist without *.so file
RFCreate Jul 31, 2026
e48e2ab
feat(workflows): use ubuntu-26.04 image
RFCreate Aug 1, 2026
cb7e62a
fix(ci): remove sheduler to prevent automatic disable
RFCreate Aug 1, 2026
439a5a3
fix(workflows): use meson from pip
RFCreate Aug 1, 2026
8670847
fix(packaging): install dependencies without package
RFCreate Aug 1, 2026
7163de2
fix(unit-test): require setuptools in test deps group
RFCreate Aug 1, 2026
8711e48
fix(workflows): move to node 24 actions
RFCreate Aug 1, 2026
b73851f
feat: rewrite stubs for improved readability
RFCreate Aug 1, 2026
b6f9812
feat: check that wheel includes protocols
RFCreate Aug 2, 2026
0b84f71
fix(resource): id attribute overlap with protocols attr name
RFCreate Aug 7, 2026
1b9a2db
feat: annotate Callable types
RFCreate Aug 8, 2026
5a3e72a
feat: improve eventloop func annotations
RFCreate Aug 8, 2026
a959186
feat(scanner): annotate wl_proxy class as return type
RFCreate Aug 8, 2026
ff68f4c
feat(scanner): annotate wl_proxy class as argument type
RFCreate Aug 8, 2026
9389a8d
feat(scanner): wl_registry.bind type return as Any
RFCreate Aug 8, 2026
23ff101
feat(stubs): type check ffi closer to typeshed
RFCreate Aug 13, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
95 changes: 41 additions & 54 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,27 +3,24 @@ on:
pull_request:
push:
workflow_dispatch:
schedule:
# Run at 17:29 every Saturday
- cron: '29 17 * * 6'

jobs:
build-wayland:
name: Build Wayland libraries
runs-on: ubuntu-24.04
runs-on: ubuntu-26.04
strategy:
fail-fast: false
matrix:
wayland-version: ["1.24.0"]
wayland-protocols-version: ["1.45"]
wayland-version: ["1.26.0"]
wayland-protocols-version: ["1.49"]
steps:
- name: Setup environment
run: |
echo "CPATH=${HOME}/wayland/usr/include" >> $GITHUB_ENV
echo "LD_LIBRARY_PATH=${HOME}/wayland/usr/lib" >> $GITHUB_ENV
echo "LIBRARY_PATH=${HOME}/wayland/usr/lib" >> $GITHUB_ENV
echo "PKG_CONFIG_PATH=${HOME}/wayland/usr/share/pkgconfig:${HOME}/wayland/usr/lib/pkgconfig" >> $GITHUB_ENV
- name: Install meson
- name: Install dependencies
run: |
sudo apt-get install -y --no-install-recommends \
ninja-build
Expand All @@ -41,26 +38,25 @@ jobs:
working-directory: wayland-${{ matrix.wayland-version }}
run: |
meson setup build --prefix=/usr -Ddocumentation=false
ninja -C build
DESTDIR=~/wayland ninja -C build install
sudo ninja -C build install
- name: Build wayland-protocols
working-directory: wayland-protocols-${{ matrix.wayland-protocols-version }}
run: |
meson setup build --prefix=/usr
ninja -C build
DESTDIR=~/wayland ninja -C build install
sudo ninja -C build install
- name: Create artifact
run: tar czf ~/wayland.tar.gz -C ${HOME}/wayland/ .
- name: Upload built libraries
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v7
with:
name: wayland-${{ matrix.wayland-version }}_${{ matrix.wayland-protocols-version }}
path: ~/wayland.tar.gz
if-no-files-found: error
unit-test:
name: Python ${{ matrix.python-version}} unit tests
runs-on: ubuntu-24.04
runs-on: ubuntu-26.04
needs: build-wayland
strategy:
fail-fast: false
Expand All @@ -72,31 +68,28 @@ jobs:
- "3.13"
- "3.14"
- "pypy-3.11"
wayland-version: ["1.24.0"]
wayland-protocols-version: ["1.45"]
wayland-version: ["1.26.0"]
wayland-protocols-version: ["1.49"]
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v7
- name: Download wayland libraries
uses: actions/download-artifact@v4
uses: actions/download-artifact@v7
with:
name: wayland-${{ matrix.wayland-version }}_${{ matrix.wayland-protocols-version }}
- name: Unpack wayland artifact
run: sudo tar xf wayland.tar.gz -C /
- name: Setup Python
uses: actions/setup-python@v5
uses: actions/setup-python@v7
with:
python-version: ${{ matrix.python-version }}
- name: Set environment variables
run: |
echo "XDG_RUNTIME_DIR=/tmp" >> $GITHUB_ENV
- name: Install Python dependencies
run: |
pip install .[ci]
python pywayland/ffi_build.py
python -m pywayland.scanner --with-protocols
pip install -e .[test]
- name: Run unit tests
run: |
pip install .[test]
pytest --cov pywayland --cov-report term-missing
- name: Push coverage
run: coveralls --service=github
Expand All @@ -107,107 +100,101 @@ jobs:
coverage:
name: Finalize Coverage
needs: unit-test
runs-on: ubuntu-24.04
runs-on: ubuntu-26.04
steps:
- name: Coveralls Finished
uses: coverallsapp/github-action@master
uses: coverallsapp/github-action@v2
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
parallel-finished: true
docs-test:
name: docs check
runs-on: ubuntu-24.04
runs-on: ubuntu-26.04
needs: build-wayland
env:
python-version: "3.14"
wayland-version: "1.24.0"
wayland-protocols-version: "1.45"
wayland-version: "1.26.0"
wayland-protocols-version: "1.49"
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v7
- name: Download wayland libraries
uses: actions/download-artifact@v4
uses: actions/download-artifact@v7
with:
name: wayland-${{ env.wayland-version }}_${{ env.wayland-protocols-version }}
- name: Unpack wayland artifact
run: sudo tar xf wayland.tar.gz -C /
- name: Setup Python
uses: actions/setup-python@v5
uses: actions/setup-python@v7
with:
python-version: ${{ env.python-version }}
- name: Set environment variables
run: |
echo "XDG_RUNTIME_DIR=/tmp" >> $GITHUB_ENV
- name: Install Python dependencies
run: |
pip install .[ci]
python pywayland/ffi_build.py
python -m pywayland.scanner --with-protocols
pip install -e .[docs]
- name: Build docs
run: |
pip install .[docs]
sphinx-build -W -b html doc doc/_build/html
pre-commit-test:
name: pre-commit test
runs-on: ubuntu-24.04
runs-on: ubuntu-26.04
needs: build-wayland
env:
python-version: "3.14"
wayland-version: "1.24.0"
wayland-protocols-version: "1.45"
wayland-version: "1.26.0"
wayland-protocols-version: "1.49"
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v7
- name: Download wayland libraries
uses: actions/download-artifact@v4
uses: actions/download-artifact@v7
with:
name: wayland-${{ env.wayland-version }}_${{ env.wayland-protocols-version }}
- name: Unpack wayland artifact
run: sudo tar xf wayland.tar.gz -C /
- name: Setup Python
uses: actions/setup-python@v5
uses: actions/setup-python@v7
with:
python-version: ${{ env.python-version }}
- name: Set environment variables
run: |
echo "XDG_RUNTIME_DIR=/tmp" >> $GITHUB_ENV
- name: Install Python dependencies
- name: Generate protocol files
working-directory: pywayland
run: |
pip install .[ci]
python pywayland/ffi_build.py
python -m pywayland.scanner --with-protocols
python -m scanner --with-protocols
- name: Run pre-commit test
uses: pre-commit/action@v3.0.1
run: |
pip install pre-commit
pre-commit run --show-diff-on-failure --color=always --all-files
packaging-test:
name: packaging test
runs-on: ubuntu-24.04
runs-on: ubuntu-26.04
needs: build-wayland
env:
python-version: "3.14"
wayland-version: "1.24.0"
wayland-protocols-version: "1.45"
wayland-version: "1.26.0"
wayland-protocols-version: "1.49"
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v7
- name: Download wayland libraries
uses: actions/download-artifact@v4
uses: actions/download-artifact@v7
with:
name: wayland-${{ env.wayland-version }}_${{ env.wayland-protocols-version }}
- name: Unpack wayland artifact
run: sudo tar xf wayland.tar.gz -C /
- name: Setup Python
uses: actions/setup-python@v5
uses: actions/setup-python@v7
with:
python-version: ${{ env.python-version }}
- name: Set environment variables
run: |
echo "XDG_RUNTIME_DIR=/tmp" >> $GITHUB_ENV
- name: Install Python dependencies
run: |
pip install .[ci]
python pywayland/ffi_build.py
python -m pywayland.scanner --with-protocols
pip install build check-manifest twine
- name: Run packaging test
run: |
pip install .[packaging]
check-manifest
python setup.py check -m -s
python -m build --sdist
twine check dist/*
Loading