Skip to content

Merge pull request #97 from eclipseo/fix_py313 #57

Merge pull request #97 from eclipseo/fix_py313

Merge pull request #97 from eclipseo/fix_py313 #57

# Derived in part from https://github.com/google/brotli-wheels
#
# Copyright (c) 2009, 2010, 2013-2016 by the Brotli Authors.
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
name: Run tests and build wheel and sdist on all supported OS and Python
on: [push, pull_request, workflow_dispatch]
jobs:
build_wheels:
name: Build wheels ${{ matrix.type }} ${{ matrix.arch }} on ${{ matrix.os }}
runs-on: ${{ matrix.os }}
defaults:
run:
shell: bash
strategy:
fail-fast: false
matrix:
#os: [macos-latest, windows-latest]
#arch: [auto64]
#build: ["cp{38,39,310,311,312}-*"]
include:
- os: ubuntu-latest
arch: auto64
type: manylinux1
build: "cp{38,39}-*"
CIBW_MANYLINUX_X86_64_IMAGE: manylinux1
- os: ubuntu-latest
arch: auto64
type: manylinux2010
build: "cp310-*"
CIBW_MANYLINUX_X86_64_IMAGE: manylinux2010
# the manylinux2014 image also contains python 3.11 and 3.12
- os: ubuntu-latest
arch: auto64
type: manylinux2014
build: "cp311-* cp312-*"
CIBW_MANYLINUX_X86_64_IMAGE: manylinux2014
- os: macos-latest
arch: universal2
build: "cp{38,39,310,311,312}-*"
- os: windows-latest
arch: auto64
build: "cp{38,39,310,311,312}-*"
steps:
- uses: actions/checkout@v4
- name: Build wheels and run tests
uses: pypa/cibuildwheel@v2.16.5
env:
CIBW_BUILD: ${{ matrix.build }}
CIBW_MANYLINUX_X86_64_IMAGE: ${{ matrix.CIBW_MANYLINUX_X86_64_IMAGE }}
CIBW_ARCHS: ${{ matrix.arch }}
CIBW_TEST_REQUIRES: pytest pytest-xdist
CIBW_TEST_COMMAND: pytest {package}/tests -n4
- name: Collect built wheels
uses: actions/upload-artifact@v4
with:
name: intbitset-wheels-${{ matrix.os }}-${{ matrix.ach }}-${{ matrix.type }}
path: wheelhouse/*.whl
build_sdist:
name: Build source distribution
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- name: Checkout and install reqs
run: |
pip install --upgrade --user build twine pip setuptools
- name: Build sdist
run: |
python setup.py sdist
twine check dist/*
- name: Collect built sdist
uses: actions/upload-artifact@v4
with:
name: intbitset-sdist
path: dist/*.tar.gz
merge:
runs-on: ubuntu-latest
needs: [build_sdist, build_wheels]
steps:
- name: Merge created wheels and sdist in a single zip
uses: actions/upload-artifact/merge@v4
with:
name: intbitset-build
pattern: intbitset-*
check_dist:
name: Check distributions are PyPi-correct
needs: merge
runs-on: ubuntu-22.04
steps:
- uses: actions/download-artifact@v4
with:
path: intbitset-build
- run: find . -ls
- run: pipx run twine check --strict intbitset-build/*/*
test_on_many_oses:
name: Run tests ${{ matrix.python }} on ${{ matrix.os }}
runs-on: ${{ matrix.os }}
defaults:
run:
shell: bash
strategy:
fail-fast: false
matrix:
os: [ubuntu-20.04, ubuntu-22.04, macos-11, macos-12, macos-13, windows-2019, windows-2022]
python: ["3.8", "3.9", "3.10", "3.11", "3.12"]
include:
- os: macos-14
python: "3.10"
- os: macos-14
python: "3.11"
- os: macos-14
python: "3.12"
steps:
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "${{ matrix.python }}"
- uses: actions/checkout@v4
- name: Install
run: pip install -e .[tests]
- name: Run tests
run: pytest -vs tests -n4