Skip to content

Restore pyup config: do not pin #49

Restore pyup config: do not pin

Restore pyup config: do not pin #49

Workflow file for this run

name: Python package
on:
push:
branches-ignore:
- 'dependabot/**'
tags-ignore:
- '*.[0-9][ab][0-9]'
pull_request: {}
jobs:
PEP8:
name: Check with Ruff
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.x'
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install --upgrade ruff
- name: Lint with ruff
run: |
ruff . --output-format github
PyLint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.11'
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install --upgrade -r CI_REQUIREMENTS.txt
pip install --upgrade "pylint >= 3.0.0"
- name: Install develop
run: |
pip install -e .
- name: Lint with PyLint
run: |
pylint threaded
MyPy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.x'
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install --upgrade -r CI_REQUIREMENTS.txt
pip install --upgrade "mypy>=1.7.0"
- name: Install develop
run: |
pip install -e .
- name: Lint with MyPy
run: |
mypy --strict threaded
Black:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.x'
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install --upgrade black regex
- name: Check code style with black
run: |
black --check threaded
Refurb:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.x'
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install --upgrade refurb
- name: Lint with refurb
run: |
refurb threaded
TestScript:
needs: [PEP8, PyLint, MyPy, Black, Refurb] # isort is broken
runs-on: ${{ matrix.os }}
strategy:
max-parallel: 8
matrix:
os: [ubuntu-latest, windows-latest]
python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"]
name: "Script based python ${{ matrix.python-version }} on ${{ matrix.os }}"
steps:
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
run: |
python -m pip install --upgrade pip wheel
pip install --upgrade -r CI_REQUIREMENTS.txt
pip install --upgrade -r pytest_requirements.txt
- name: Install develop
run: |
pip install -e .
- name: Test with pytest
run: |
py.test --cov-report= --cov=threaded test
coverage report -m --fail-under 85
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: [ TestScript ]
if: ${{ always() }}
runs-on: ubuntu-latest
steps:
- name: Coveralls Finished
uses: coverallsapp/github-action@v2
with:
parallel-finished: true
TestLinux:
needs: [TestScript]
runs-on: ubuntu-latest
strategy:
max-parallel: 4
matrix:
python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"]
name: "Cython based python ${{ matrix.python-version }} on linux"
steps:
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
run: |
python -m pip install --upgrade pip wheel
pip install --upgrade -r CI_REQUIREMENTS.txt
pip install --upgrade Cython build
pip install --upgrade -r pytest_requirements.txt
- name: Build package and install
run: |
python -m build --no-isolation
pip install threaded --no-index -f dist
- name: Test with pytest
run: |
py.test
TestWindows:
needs: [TestScript]
runs-on: windows-latest
strategy:
max-parallel: 8
matrix:
WINDOWS:
- {ARCH: 'x86', WINDOWS: 'win32'}
- {ARCH: 'x64', WINDOWS: 'win64'}
python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"]
name: "Cython based python ${{ matrix.python-version }} on ${{ matrix.WINDOWS.WINDOWS }}"
steps:
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
architecture: ${{ matrix.WINDOWS.ARCH }}
- name: Install dependencies
run: |
python -m pip install --upgrade pip wheel
pip install --upgrade -r CI_REQUIREMENTS.txt
pip install --upgrade Cython build
pip install --upgrade -r pytest_requirements.txt
- name: Build package and install
run: |
python -m build --no-isolation
pip install threaded --no-index -f dist
- name: Test with pytest
run: |
py.test
Build:
name: Build non-compiled sdist and bdist
needs: [TestScript]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0 # need for setuptools_scm
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.x'
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install --upgrade twine build
- name: Build package
run: |
python -m build
- uses: actions/upload-artifact@v3
with:
path: dist/*
name: wheels
Metadata:
name: Validate metadata
runs-on: ubuntu-latest
needs: [ Build ]
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v4
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/*
build_wheels:
name: Build wheels on ${{ matrix.os }}
needs: [ TestScript, TestLinux, TestWindows ]
# build only on push: heavy job
if: github.event_name == 'push'
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ "ubuntu-latest", "macos-latest" ]
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0 # need for setuptools_scm
# Used to host cibuildwheel
- uses: actions/setup-python@v4.7.0
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
- uses: actions/upload-artifact@v3
with:
path: ./wheelhouse/*.whl
name: wheels
retention-days: 3
upload_pypi:
needs: [ Build, build_wheels, Metadata ]
# upload to PyPI on every tag
if: github.event_name == 'push' && github.ref_type == 'tag'
# 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/threaded
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