Skip to content

Update black formatter (#773) #646

Update black formatter (#773)

Update black formatter (#773) #646

Workflow file for this run

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 -r isort-requirements.txt
- 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 -r black-requirements.txt
- 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.4
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@v4
with:
path: ./wheelhouse/*.whl
name: built-${{ matrix.os }}
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@v4
with:
path: dist/*.tar.gz
name: built-sdist
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@v4
with:
# unpacks default artifact into dist/
# if `name: wheels` is omitted, the action will create extra parent dir
pattern: built-*
merge-multiple: true
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@v4
with:
pattern: built-*
merge-multiple: true
path: dist
- name: Publish package distributions to PyPI
uses: pypa/gh-action-pypi-publish@release/v1