Keep minimum weight edge when merging parallel boundary edges in conv… #279
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: | |
workflow_dispatch: | |
pull_request: | |
push: | |
branches: | |
- master | |
jobs: | |
build_sdist: | |
name: Build SDist | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
submodules: true | |
- name: Build SDist | |
run: pipx run build --sdist | |
- name: Check metadata | |
run: pipx run twine check dist/* | |
- uses: actions/upload-artifact@v3 | |
with: | |
path: dist/*.tar.gz | |
build_wheels: | |
runs-on: ${{ matrix.os_dist.os }} | |
env: | |
MACOSX_DEPLOYMENT_TARGET: "10.15" | |
CIBW_BUILD: "${{ matrix.os_dist.dist }}" | |
CIBW_ARCHS_MACOS: "x86_64 universal2 arm64" | |
CIBW_BEFORE_BUILD: pip install --upgrade ninja | |
CIBW_TEST_REQUIRES: pytest stim | |
CIBW_TEST_COMMAND: pytest {project}/tests | |
strategy: | |
fail-fast: false | |
matrix: | |
os_dist: [ | |
# macosx x86_64 | |
# {os: macos-latest, dist: cp36-macosx_x86_64}, | |
{os: macos-latest, dist: cp37-macosx_x86_64}, | |
{os: macos-latest, dist: cp38-macosx_x86_64}, | |
{os: macos-latest, dist: cp39-macosx_x86_64}, | |
{os: macos-latest, dist: cp310-macosx_x86_64}, | |
{os: macos-latest, dist: cp311-macosx_x86_64}, | |
{os: macos-latest, dist: cp312-macosx_x86_64}, | |
# macosx arm64 | |
{os: macos-latest, dist: cp38-macosx_arm64}, | |
{os: macos-latest, dist: cp39-macosx_arm64}, | |
{os: macos-latest, dist: cp310-macosx_arm64}, | |
{os: macos-latest, dist: cp311-macosx_arm64}, | |
{os: macos-latest, dist: cp312-macosx_arm64}, | |
# macosx universal2 | |
{os: macos-latest, dist: cp38-macosx_universal2}, | |
{os: macos-latest, dist: cp39-macosx_universal2}, | |
{os: macos-latest, dist: cp310-macosx_universal2}, | |
{os: macos-latest, dist: cp311-macosx_universal2}, | |
{os: macos-latest, dist: cp312-macosx_universal2}, | |
# windows amd64 | |
# {os: windows-latest, dist: cp36-win_amd64}, | |
{os: windows-latest, dist: cp37-win_amd64}, | |
{os: windows-latest, dist: cp38-win_amd64}, | |
{os: windows-latest, dist: cp39-win_amd64}, | |
{os: windows-latest, dist: cp310-win_amd64}, | |
{os: windows-latest, dist: cp311-win_amd64}, | |
{os: windows-latest, dist: cp312-win_amd64}, | |
# windows win32 | |
# {os: windows-latest, dist: cp36-win32}, | |
{os: windows-latest, dist: cp37-win32}, | |
# scipy install fails | |
# {os: windows-latest, dist: cp38-win32}, | |
# {os: windows-latest, dist: cp39-win32}, | |
# {os: windows-latest, dist: cp310-win32}, | |
# {os: windows-latest, dist: cp311-win32}, | |
# For arm64, get error "cibuildwheel: No build identifiers selected" | |
# {os: windows-latest, dist: cp39-win_arm64}, | |
# {os: windows-latest, dist: cp310-win_arm64}, | |
# {os: windows-latest, dist: cp311-win_arm64}, | |
# ubuntu x86_64 | |
# {os: ubuntu-latest, dist: cp36-manylinux_x86_64}, | |
{os: ubuntu-latest, dist: cp37-manylinux_x86_64}, | |
{os: ubuntu-latest, dist: cp38-manylinux_x86_64}, | |
{os: ubuntu-latest, dist: cp39-manylinux_x86_64}, | |
{os: ubuntu-latest, dist: cp310-manylinux_x86_64}, | |
{os: ubuntu-latest, dist: cp311-manylinux_x86_64}, | |
{os: ubuntu-latest, dist: cp312-manylinux_x86_64}, | |
# ubuntu i686 | |
# {os: ubuntu-latest, dist: cp36-manylinux_i686}, | |
{os: ubuntu-latest, dist: cp37-manylinux_i686}, | |
# scipy built distribution not available and build fails on manylinux_i686 for python 3.8 up | |
# {os: ubuntu-latest, dist: cp38-manylinux_i686}, | |
# {os: ubuntu-latest, dist: cp39-manylinux_i686}, | |
# {os: ubuntu-latest, dist: cp310-manylinux_i686}, | |
# {os: ubuntu-latest, dist: cp311-manylinux_i686}, | |
# Don't include musllinux as it has g++-9 (need g++-10 for <bits>) | |
# {os: ubuntu-latest, dist: cp36-musllinux_x86_64}, | |
# {os: ubuntu-latest, dist: cp37-musllinux_x86_64}, | |
# {os: ubuntu-latest, dist: cp38-musllinux_x86_64}, | |
# {os: ubuntu-latest, dist: cp39-musllinux_x86_64}, | |
# {os: ubuntu-latest, dist: cp310-musllinux_x86_64}, | |
# {os: ubuntu-latest, dist: cp311-musllinux_x86_64}, | |
# {os: ubuntu-latest, dist: cp36-musllinux_i686}, | |
# {os: ubuntu-latest, dist: cp37-musllinux_i686}, | |
# {os: ubuntu-latest, dist: cp38-musllinux_i686}, | |
# {os: ubuntu-latest, dist: cp39-musllinux_i686}, | |
# {os: ubuntu-latest, dist: cp310-musllinux_i686}, | |
# {os: ubuntu-latest, dist: cp311-musllinux_i686}, | |
] | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
submodules: true | |
- uses: actions/setup-python@v4 | |
- name: Install g++ | |
if: runner.os == 'Linux' | |
run: | | |
sudo apt update | |
sudo apt install gcc-10 g++-10 | |
- uses: pypa/[email protected] | |
- name: Verify clean directory | |
run: git diff --exit-code | |
shell: bash | |
- name: Upload wheels | |
uses: actions/upload-artifact@v3 | |
with: | |
path: wheelhouse/*.whl | |
benchmark_windows: | |
runs-on: windows-latest | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
submodules: true | |
- run: cmake . | |
- run: cmake --build . --target pymatching_perf --config Release | |
- run: Release\pymatching_perf.exe | |
benchmark: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [macos-latest, ubuntu-latest] | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
submodules: true | |
- run: CC=gcc-10 CXX=g++-10 cmake . | |
if: matrix.os == 'ubuntu-latest' | |
- run: cmake . | |
if: matrix.os == 'macos-latest' | |
- run: make pymatching_perf | |
- run: ./pymatching_perf | |
gtest: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [macos-latest, ubuntu-latest] | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
submodules: true | |
- run: CC=gcc-10 CXX=g++-10 cmake . | |
if: matrix.os == 'ubuntu-latest' | |
- run: cmake . | |
if: matrix.os == 'macos-latest' | |
- run: make pymatching_tests | |
- run: ./pymatching_tests | |
pip_install: | |
strategy: | |
fail-fast: false | |
matrix: | |
platform: [windows-latest, macos-latest, ubuntu-latest] | |
python-version: ["3.11"] | |
runs-on: ${{ matrix.platform }} | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
submodules: true | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Add requirements | |
run: python -m pip install --upgrade cmake>=3.12 ninja pytest flake8 pytest-cov setuptools | |
- name: Build and install | |
run: python -m pip install --verbose -e . | |
- name: Test without stim | |
run: python -m pytest tests | |
- name: Add stim | |
run: python -m pip install stim | |
- name: Test with stim using coverage | |
run: python -m pytest tests --cov=./src/pymatching --cov-report term | |
- name: flake8 | |
run: flake8 ./src ./tests | |
build_docs: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
submodules: true | |
- uses: actions/setup-python@v4 | |
- name: Install pandoc | |
run: | | |
sudo apt install pandoc | |
python -m pip install pandoc | |
- name: Add sphinx requirements | |
run: python -m pip install -r ./docs/sphinx_docs/requirements.txt | |
- name: Build and install PyMatching | |
run: pip install --verbose . | |
- name: Build docs | |
run: cd docs/sphinx_docs && make html | |
codecov: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
submodules: true | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: '3.10' | |
- name: Add requirements | |
run: python -m pip install --upgrade cmake>=3.12 ninja pytest flake8 pytest-cov stim | |
- name: Build and install | |
run: pip install --verbose -e . | |
- name: Run tests and collect coverage | |
run: pytest tests --cov=./src/pymatching --cov-report=xml | |
- name: Upload coverage reports to Codecov | |
uses: codecov/codecov-action@v3 | |
# upload_all: | |
# name: Upload to pypi | |
# needs: [build_wheels, build_sdist] | |
# runs-on: ubuntu-latest | |
# if: github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags/v') | |
# steps: | |
# - uses: actions/setup-python@v4 | |
# with: | |
# python-version: "3.9" | |
# | |
# - uses: actions/download-artifact@v3 | |
# with: | |
# name: artifact | |
# path: dist | |
# | |
# - uses: pypa/[email protected] | |
# with: | |
# password: ${{ secrets.pypi_password }} |