Fix: Phantom NULL keys codes from modifier keys on Win32 RawDisplay #338
Workflow file for this run
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: Python package | |
on: | |
push: | |
branches-ignore: | |
- 'dependabot/**' | |
- 'gh-pages' | |
tags: | |
- "[0-9]+.[0-9]+.[0-9]+" # Canonical versioned tags | |
- "[0-9]+.[0-9]+.[0-9]+.post[0-9]+" # Canonical rebuild tags | |
pull_request: | |
paths: | |
- "urwid/**" | |
- "source/**" | |
- "setup.py" | |
- "pyproject.toml" | |
- "MANIFEST.in" | |
- "README.rst" | |
- "COPYING" | |
- "tests/**" | |
- "examples/**" | |
- ".coveralls.yml" | |
- ".github/workflows/pythonpackage.yml" | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} | |
cancel-in-progress: true | |
jobs: | |
Test: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
max-parallel: 6 | |
matrix: | |
os: [ "ubuntu-latest", "windows-latest" ] | |
# , "macos-latest" | |
# enable macOS only if OS specific branch will be added | |
python-version: [ "3.7", "3.8", "3.9", "3.10", "3.11", "3.12" ] | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 # need for setuptools_scm | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
allow-prereleases: true | |
cache: 'pip' | |
- name: Install Ubuntu dependencies | |
if: runner.os == 'Linux' | |
run: | | |
sudo apt-get -qq update | |
sudo apt-get install -y python3-gi gobject-introspection libgirepository1.0-dev | |
- name: Install Mac OS X dependencies | |
if: runner.os == 'macOS' | |
run: | | |
brew install gtk+3 gobject-introspection gtk-mac-integration | |
- name: Install dependencies | |
run: | | |
python -m pip install --upgrade pip wheel | |
pip install -r test_requirements.txt | |
- name: Install PyGObject | |
if: runner.os == 'Linux' || runner.os == 'macOS' | |
run: pip install PyGObject | |
- name: Install package for test | |
run: pip install -e . | |
- name: Test | |
run: | | |
coverage run -m unittest discover -s tests -v | |
coverage report | |
coverage xml | |
- name: Coveralls Parallel | |
uses: coverallsapp/github-action@v2 | |
with: | |
flag-name: run-${{ matrix.python-version }}-${{ matrix.os }}" | |
parallel: true | |
file: coverage.xml | |
UploadCoverage: | |
name: Upload coverage to Coveralls | |
needs: [ Test ] | |
if: ${{ always() }} | |
runs-on: ubuntu-latest | |
steps: | |
- name: Coveralls Finished | |
uses: coverallsapp/github-action@v2 | |
with: | |
parallel-finished: true | |
Isort: | |
name: Validate import sorting | |
runs-on: ubuntu-latest | |
needs: [ Test ] | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: '3.x' | |
cache: 'pip' | |
- name: Install dependencies | |
run: | | |
python -m pip install --upgrade pip | |
pip install --upgrade isort | |
- name: Check imports with isort | |
run: | | |
isort --check --diff urwid tests examples | |
Black: | |
name: Validate black formatting | |
runs-on: ubuntu-latest | |
needs: [ Test ] | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: '3.x' | |
cache: 'pip' | |
- name: Install dependencies | |
run: | | |
python -m pip install --upgrade pip | |
pip install --upgrade black regex | |
- name: Check code style with black | |
run: | | |
black --check urwid examples | |
Ruff: | |
name: Check with Ruff | |
runs-on: ubuntu-latest | |
needs: [ Test ] | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: '3.x' | |
cache: 'pip' | |
- name: Install dependencies | |
run: | | |
python -m pip install --upgrade pip | |
pip install --upgrade -r ruff-requirements.txt | |
- name: Lint with ruff | |
run: | | |
ruff check --output-format github urwid examples | |
build_wheels: | |
name: Build wheels on ${{ matrix.os }} | |
needs: [ Test, Isort, Black, Ruff ] | |
# build only on push: heavy job | |
if: github.event_name == 'push' && github.repository == 'urwid/urwid' | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: | |
- ubuntu-latest | |
- macos-latest | |
- windows-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 # need for setuptools_scm | |
# Used to host cibuildwheel | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: "3.11" | |
- name: Set up QEMU | |
if: runner.os == 'Linux' | |
uses: docker/setup-qemu-action@v3 | |
with: | |
platforms: all | |
- name: Build wheels | |
uses: pypa/cibuildwheel@v2.16.2 | |
env: | |
# configure cibuildwheel to build native archs ('auto'), and some | |
# emulated ones | |
CIBW_ARCHS_LINUX: auto aarch64 | |
CIBW_ARCHS_MACOS: x86_64 universal2 arm64 | |
CIBW_ARCHS_WINDOWS: auto | |
- uses: actions/upload-artifact@v3 | |
with: | |
path: ./wheelhouse/*.whl | |
name: wheels | |
retention-days: 3 | |
build_sdist: | |
name: Build source distribution | |
needs: [ Test, Isort, Black, Ruff ] | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 # need for setuptools_scm | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: "3.11" | |
- name: Install dependencies | |
run: pip install -U build | |
- name: Build sdist | |
run: python -m build -s | |
- uses: actions/upload-artifact@v3 | |
with: | |
path: dist/*.tar.gz | |
name: wheels | |
retention-days: 3 | |
Metadata: | |
name: Validate metadata | |
runs-on: ubuntu-latest | |
needs: [ build_sdist ] | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: '3.x' | |
cache: 'pip' | |
- name: Install dependencies | |
run: | | |
python -m pip install --upgrade pip | |
pip install --upgrade twine | |
- uses: actions/download-artifact@v3 | |
with: | |
# unpacks default artifact into dist/ | |
# if `name: wheels` is omitted, the action will create extra parent dir | |
name: wheels | |
path: dist | |
- name: Validate metadata | |
run: | | |
twine check dist/* | |
upload_pypi: | |
needs: [ build_wheels, build_sdist, Metadata ] | |
# upload to PyPI on every tag | |
if: github.event_name == 'push' && github.ref_type == 'tag' && github.repository == 'urwid/urwid' | |
# alternatively, to publish when a GitHub Release is created, use the following rule: | |
# if: github.event_name == 'release' && github.event.action == 'published' | |
runs-on: ubuntu-latest | |
environment: | |
name: pypi | |
url: https://pypi.org/p/urwid | |
permissions: | |
id-token: write # IMPORTANT: this permission is mandatory for trusted publishing | |
steps: | |
- uses: actions/download-artifact@v3 | |
with: | |
# unpacks default artifact into dist/ | |
# if `name: wheels` is omitted, the action will create extra parent dir | |
name: wheels | |
path: dist | |
- name: Publish package distributions to PyPI | |
uses: pypa/gh-action-pypi-publish@release/v1 |