Skip to content

More typing fixes. #102

More typing fixes.

More typing fixes. #102

Workflow file for this run

name: build
on:
push:
branches: [ develop ]
tags: ['**']
pull_request:
branches: [ develop ]
env:
VCPKG_HASH: 'b4624c3a701b11248d88aab08744a37ee7aea1cc'
jobs:
build-sdist:
runs-on: 'ubuntu-latest'
steps:
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.x'
- uses: actions/checkout@v4
- name: Create sdist
run: |
python -m pip install build
python -m build -s
- name: Check sdist
run: |
python -m pip install twine
twine check dist/*
- name: Upload sdist
uses: actions/upload-artifact@v4
with:
name: sdist
path: dist/*
if-no-files-found: error
test-ubuntu-macos:
runs-on: ${{ matrix.os }}
needs: build-sdist
strategy:
fail-fast: false
matrix:
os: ['ubuntu-latest', 'macos-latest']
python-version: ['3.9', '3.10', '3.11', '3.12']
steps:
- uses: actions/checkout@v4
- name: Download sdist
uses: actions/download-artifact@v4
with:
name: sdist
path: dist
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Install cddlib (Ubuntu)
if: matrix.os == 'ubuntu-latest'
run: sudo apt-get install -y libcdd-dev libgmp-dev
- name: Install cddlib (MacOS)
if: matrix.os == 'macos-latest'
run: brew install cddlib gmp
- name: Install Python dependencies
run: python -m pip install setuptools Cython Sphinx pytest wheel numpy mypy
- name: Install tarball (Ubuntu)
if: matrix.os == 'ubuntu-latest'
run: python -m pip install $(ls dist/*.tar.gz| head -1)
- name: Install tarball (MacOS)
if: matrix.os == 'macos-latest'
run: env "CFLAGS=-I$(brew --prefix)/include -L$(brew --prefix)/lib" python -m pip install $(ls dist/*.tar.gz| head -1)
- name: Run test suite
run: |
mypy
pytest
cd docs
make doctest
build-vcpkg:
runs-on: 'windows-latest'
steps:
- uses: actions/cache@v4
id: vcpkg-installed-cache
with:
path: installed/x64-windows-static-md-release
key: vcpkg-0-${{ env.VCPKG_HASH }}
- uses: actions/checkout@v4
if: steps.vcpkg-installed-cache.outputs.cache-hit != 'true'
with:
repository: microsoft/vcpkg
ref: ${{ env.VCPKG_HASH }}
- name: Install cddlib
if: steps.vcpkg-installed-cache.outputs.cache-hit != 'true'
run: |
./bootstrap-vcpkg.bat -disableMetrics
./vcpkg.exe install cddlib:x64-windows-static-md-release
ls installed/x64-windows-static-md-release/include/ -r
ls installed/x64-windows-static-md-release/lib/ -r
- name: Upload vcpkg
uses: actions/upload-artifact@v4
with:
name: vcpkg-x64
path: installed/x64-windows-static-md-release/
if-no-files-found: error
build-test-windows:
runs-on: 'windows-latest'
needs: build-vcpkg
strategy:
fail-fast: false
matrix:
python-version: ['3.9', '3.10', '3.11', '3.12']
steps:
- uses: actions/checkout@v4
- name: Download vcpkg
uses: actions/download-artifact@v4
with:
name: vcpkg-x64
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
architecture: x64
- name: Check Python environment
run: |
ls include/ -r
ls lib/ -r
python --version
python -c "import struct; print(struct.calcsize('P') * 8)"
- name: Install Python dependencies
run: python -m pip install Sphinx pytest numpy twine wheel build mypy
- name: Create wheel
run: |
python -m build -w -C="--global-option=build_ext" -C="--global-option=-Iinclude/" -C="--global-option=-Llib/"
- name: Check wheel
run: |
twine check dist/*
wheel unpack ((Get-ChildItem -Path dist/ -Filter *.whl)[0].FullName) --dest wheel
ls -r wheel/
If (((Get-ChildItem -Path wheel/ -Recurse -Include ("*.pyx", "*.pxi", "*.c"))).Length -Ne 0) {
throw "Wheel contains .pyx, .pxi, or .c files."
}
- name: Upload wheel
uses: actions/upload-artifact@v4
with:
name: windows-wheels-${{ matrix.python-version }}
path: dist/*
if-no-files-found: error
- name: Install wheel
run: pip install ((Get-ChildItem -Path dist/ -Filter *.whl)[0].FullName)
- name: Run test suite
run: |
mypy
pytest
cd docs
make doctest
release:
if: github.repository == 'mcmtroffaes/pycddlib'
runs-on: 'ubuntu-latest'
needs: [ build-sdist, test-ubuntu-macos, build-test-windows ]
steps:
- name: Download sdist
uses: actions/download-artifact@v4
with:
name: sdist
path: dist/
- name: Download wheels
uses: actions/download-artifact@v4
with:
pattern: windows-wheels-*
path: dist/
merge-multiple: true
- name: List files
run: ls -r dist/
- name: Publish to Test PyPI
uses: pypa/gh-action-pypi-publish@release/v1
with:
password: ${{ secrets.TEST_PYPI_API_TOKEN }}
repository-url: https://test.pypi.org/legacy/
skip-existing: true
- name: Publish to PyPI
if: startsWith(github.ref, 'refs/tags')
uses: pypa/gh-action-pypi-publish@release/v1
with:
password: ${{ secrets.PYPI_API_TOKEN }}