Add Python 3.12 job and wheels #128
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: CI | |
on: | |
push: | |
pull_request: | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
tests: | |
name: ${{ matrix.name }} [ ${{ matrix.os }} ] | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: true | |
matrix: | |
os: [ubuntu-latest, macos-latest, windows-latest] | |
python: [3.9] | |
toxenv: [test] | |
toxargs: [-v] | |
include: | |
- name: Test with oldest supported versions of our dependencies | |
os: ubuntu-20.04 | |
python: 3.9 | |
toxenv: test-oldestdeps | |
toxargs: -v | |
- name: Test with medium old supported versions of our dependencies | |
# Test that we do not have a problem with some specific version (gh-101). | |
# Comment out if not needed. | |
os: ubuntu-22.04 | |
python: 3.9 | |
toxenv: test-olddeps | |
toxargs: -v | |
- name: Test with development versions of our dependencies | |
os: ubuntu-latest | |
python: '3.12-dev' | |
toxenv: test-devdeps | |
toxargs: -v | |
- name: Code style checks | |
os: ubuntu-latest | |
python: 3.x | |
toxenv: codestyle | |
toxargs: -v | |
- name: Documentation build | |
os: ubuntu-latest | |
python: 3.x | |
toxenv: build_docs | |
toxargs: -v | |
apt_packages: graphviz | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
submodules: true | |
- name: Set up Python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ matrix.python }} | |
- name: Install APT packages | |
if: matrix.apt_packages | |
run: sudo apt-get install ${{ matrix.apt_packages }} | |
- name: Install packages for macOS | |
if: matrix.os == 'macos-latest' | |
run: brew install autoconf automake | |
- name: Install Python dependencies | |
run: python -m pip install --upgrade tox | |
- name: Run tests | |
run: | | |
pip freeze | |
tox ${{ matrix.toxargs }} -e ${{ matrix.toxenv }} -- ${{ matrix.toxposargs }} | |
tests_external_liberfa: | |
name: ${{ matrix.name }} | |
runs-on: ${{ matrix.os }} | |
env: | |
PYERFA_USE_SYSTEM_LIBERFA: 1 | |
strategy: | |
fail-fast: true | |
matrix: | |
include: | |
- name: Tests with external liberfa | |
os: ubuntu-latest | |
python: 3.9 | |
toxenv: test | |
toxargs: -v | |
apt_packages: python3-venv python3-pip liberfa-dev python3-numpy | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
submodules: true | |
- name: Set up Python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ matrix.python }} | |
- name: Install APT packages | |
if: matrix.apt_packages | |
run: sudo apt-get install ${{ matrix.apt_packages }} | |
- name: Run tests | |
run: | | |
python -m venv --system-site-packages tests | |
source tests/bin/activate | |
python -m pip install --editable .[test] | |
(nm -u erfa/ufunc.cpython-*.so | grep eraA2af) || exit 1 | |
(python -c 'import erfa' 2>&1 | grep -n 'too old') > /dev/null && (echo 'liberfa too old, skipping tests'; exit 0) || python -m pytest | |
build_and_publish: | |
uses: OpenAstronomy/github-actions-workflows/.github/workflows/publish.yml@v1 | |
with: | |
upload_to_pypi: ${{ startsWith(github.ref, 'refs/tags/v') && !endsWith(github.ref, '.dev') }} | |
test_extras: test | |
test_command: pytest --pyargs erfa | |
targets: | | |
# Linux wheels | |
- cp39-manylinux_x86_64 | |
- cp310-manylinux_x86_64 | |
- cp311-manylinux_x86_64 | |
- cp312-manylinux_x86_64 | |
- cp39-musllinux_x86_64 | |
- cp310-musllinux_x86_64 | |
- cp311-musllinux_x86_64 | |
- cp312-musllinux_x86_64 | |
- cp39-manylinux_aarch64 | |
- cp310-manylinux_aarch64 | |
- cp311-manylinux_aarch64 | |
- cp312-manylinux_aarch64 | |
# MacOS X wheels - we deliberately do not build universal2 wheels. | |
# Note that the arm64 wheels are not actually tested so we | |
# rely on local manual testing of these to make sure they are ok. | |
- cp39*macosx_x86_64 | |
- cp310*macosx_x86_64 | |
- cp311*macosx_x86_64 | |
- cp312*macosx_x86_64 | |
- cp39*macosx_arm64 | |
- cp310*macosx_arm64 | |
- cp311*macosx_arm64 | |
- cp312*macosx_arm64 | |
# Windows wheels | |
- cp39*win_amd64 | |
- cp310*win_amd64 | |
- cp311*win_amd64 | |
- cp312*win_amd64 | |
# Required so that cp312 can grab a pre-release numpy. | |
# Can remove when cp312 is released. | |
env: | | |
CIBW_ENVIRONMENT: 'PIP_PRE=$( if [ "${CIBW_BUILD:0:5}" = "cp312" ]; then echo 1; else echo 0; fi )' | |
secrets: | |
pypi_token: ${{ secrets.pypi_token }} |