Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
e5ec764
Removed submodule pybind11
fcooper8472 Sep 25, 2025
a43300f
Replace setup.py with pyproject.toml
fcooper8472 Sep 25, 2025
6652250
Get pybind either from build system or from fetch content
fcooper8472 Sep 25, 2025
db1ab97
Add standard python .gitignores
fcooper8472 Sep 25, 2025
893ec52
Commit WIP
fcooper8472 Sep 25, 2025
f4dd2a9
Update workflows, remove caching and windows
fcooper8472 Sep 25, 2025
11c33ba
Update vcpkg
fcooper8472 Sep 25, 2025
dd7f294
Upgrade deps
fcooper8472 Sep 25, 2025
78251d6
Roll back cmake version
fcooper8472 Sep 26, 2025
efb1b64
Roll back fmt version
fcooper8472 Sep 26, 2025
448f030
Only build vcpkg release binaries for wheels
fcooper8472 Sep 26, 2025
e3baeda
Upgrade runner to newer ubuntu
fcooper8472 Sep 26, 2025
d85db01
Ignore errors with coverage command
fcooper8472 Sep 26, 2025
28d4335
Bump zlib
fcooper8472 Sep 26, 2025
b4f239d
Add openmp, needed for clang compilation
fcooper8472 Sep 26, 2025
cc2074d
Beef up system packages needed for bootstrapping vcpkg
fcooper8472 Sep 26, 2025
12b2e79
Treat clang tidy as warnings for time being
fcooper8472 Sep 26, 2025
8e666b3
Specify clang compiler
fcooper8472 Sep 26, 2025
b5418a1
Explicitly specify omp location and install dev tools
fcooper8472 Sep 26, 2025
8d7cdab
Add mac deployment target 11 (Big Sur) and build py 3.14 wheels
fcooper8472 Sep 26, 2025
8afec91
Bump pybind version
fcooper8472 Sep 26, 2025
e757912
Remove openmp completely
fcooper8472 Sep 26, 2025
828148e
Begin preparing 2.2.4
fcooper8472 Sep 26, 2025
534adde
Add 3.14 to pyproject
fcooper8472 Sep 26, 2025
6fc8136
Add output of notebook cells
fcooper8472 Sep 26, 2025
0e08b30
Generic link to notebook with output
fcooper8472 Sep 26, 2025
9b138cb
Update README badges
fcooper8472 Sep 26, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 0 additions & 21 deletions .bettercodehub.yml

This file was deleted.

2 changes: 1 addition & 1 deletion .clang-tidy
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
Checks: '*,-android-*,-bugprone-bool-pointer-implicit-conversion,-bugprone-exception-escape,-bugprone-infinite-loop,-bugprone-signed-char-misuse,-cert-dcl16-c,-cert-dcl37-c,-cert-dcl50-cpp,-cert-dcl51-cpp,-cert-dcl54-cpp,-cert-dcl59-cpp,-cert-env33-c,-cert-err09-cpp,-cert-err61-cpp,-cert-fio38-c,-cert-flp30-c,-cert-mem57-cpp,-cert-msc30-c,-cert-msc32-c,-cert-oop11-cpp,-cert-oop57-cpp,-cert-oop58-cpp,-cert-pos44-c,-clang-analyzer-*,-cppcoreguidelines-avoid-magic-numbers,-cppcoreguidelines-pro-bounds-array-to-pointer-decay,-cppcoreguidelines-pro-type-vararg,-darwin-*,-fuchsia-*,-google-*,google-default-arguments,google-explicit-constructor,google-runtime-operator,-hicpp-*,hicpp-exception-baseclass,hicpp-multiway-paths-covered,hicpp-signed-bitwise,-linuxkernel-*,-llvm-*,-llvmlibc-*,-misc-definitions-in-headers,-misc-non-private-member-variables-in-classes,-misc-unused-alias-decls,-misc-unused-parameters,-misc-unused-using-decls,-modernize-use-trailing-return-type,-objc-*,-openmp-exception-escape,-readability-braces-around-statements,-readability-else-after-return,-readability-function-size,-readability-identifier-naming,-readability-implicit-bool-conversion,-readability-isolate-declaration,-readability-magic-numbers,-readability-named-parameter,-readability-qualified-auto,-readability-redundant-access-specifiers,-readability-redundant-member-init,-readability-redundant-preprocessor,-readability-simplify-boolean-expr,-readability-uppercase-literal-suffix,-zircon-*'
WarningsAsErrors: '*'
WarningsAsErrors: ''
HeaderFilterRegex: ''
FormatStyle: none
27 changes: 8 additions & 19 deletions .github/workflows/coverage.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,47 +12,36 @@ jobs:

build-and-test:
name: Unit test coverage
runs-on: ubuntu-20.04
runs-on: ubuntu-24.04
env:
CXX: g++-10
CXX: g++-13

steps:

- name: checkout repo & vcpkg submodule
uses: actions/checkout@v3
- name: checkout repo & submodules
uses: actions/checkout@v5
with:
submodules: true
fetch-depth: 0

- name: cache vcpkg installed packages
uses: actions/cache@v2
id: cache
with:
path: |
vcpkg/
build_dir/vcpkg_installed/
key: ${{ runner.os }}-${{ env.CXX }}-${{ hashFiles('vcpkg.json', 'vcpkg/CHANGELOG.md') }}

- name: install tools
run: |
sudo apt -y update
sudo apt -y install g++-10 lcov libcurl4-openssl-dev
sudo apt -y install lcov libcurl4-openssl-dev

- name: make build directory
run: mkdir build_dir
if: steps.cache.outputs.cache-hit != 'true'

- name: run unit tests with coverage
run: |
cmake .. -DCMAKE_TOOLCHAIN_FILE=../vcpkg/scripts/buildsystems/vcpkg.cmake -DCMAKE_BUILD_TYPE=Debug -DENABLE_COVERAGE=ON
cmake --build . --parallel 2 --target unit_tests
ctest -j2 --output-on-failure
cmake --build . --parallel 4 --target unit_tests
ctest -j4 --output-on-failure
working-directory: build_dir

- name: upload coverage results
run: |
lcov --directory . --capture --output-file coverage.info
lcov --remove coverage.info '/usr/*' '*/vcpkg/*' '*/test/*' --output-file coverage.info
lcov --remove coverage.info '/usr/*' '*/vcpkg/*' '*/test/*' --output-file coverage.info --ignore-errors unused
lcov --list coverage.info
bash <(curl https://codecov.io/bash) -f coverage.info
env:
Expand Down
79 changes: 47 additions & 32 deletions .github/workflows/python-wheels.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,66 +11,81 @@ on:
types:
- published

env:
CIBW_BUILD: cp38-* cp39-* cp310-* cp311-*
CIBW_SKIP: cp3*-musllinux_*
CIBW_ARCHS_MACOS: x86_64
CIBW_ARCHS_LINUX: auto64
CIBW_MANYLINUX_X86_64_IMAGE: manylinux2014
CIBW_BEFORE_ALL_LINUX: "yum -y groupinstall 'Development Tools' && yum -y install git"
CIBW_BEFORE_ALL_MACOS: brew install libomp pkg-config automake autoconf autoconf-archive libtool
CIBW_BEFORE_BUILD: pip install --upgrade pip setuptools wheel ninja numpy cython
CIBW_ENVIRONMENT_MACOS: CXX="$(brew --prefix llvm@15)/bin/clang++"
MACOSX_DEPLOYMENT_TARGET: 10.15

jobs:
build_wheels:
build_wheels_cloud:
name: Build wheels on ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-22.04, macos-12]
include:
- os: ubuntu-24.04
arch: x86_64
py-vers: cp39-* cp310-* cp311-* cp312-* cp313-* cp314-*
before-all: yum groupinstall -y "Development Tools" && dnf -y install ninja-build pkgconf openssl-devel zlib-devel bzip2-devel xz-devel
extra-env: ""
mdt: ""
- os: ubuntu-24.04-arm
arch: aarch64
py-vers: cp39-* cp310-* cp311-* cp312-* cp313-* cp314-*
before-all: yum groupinstall -y "Development Tools" && dnf -y install ninja-build pkgconf openssl-devel zlib-devel bzip2-devel xz-devel
extra-env: ""
mdt: ""
- os: macos-15-intel
arch: x86_64
py-vers: cp39-* cp310-* cp311-* cp312-* cp313-* cp314-*
before-all: brew install pkg-config automake autoconf autoconf-archive libtool ninja openssl zlib bzip2 xz
extra-env: CC=clang CXX=clang++
mdt: 11
- os: macos-15
arch: arm64
py-vers: cp39-* cp310-* cp311-* cp312-* cp313-* cp314-*
before-all: brew install pkg-config automake autoconf autoconf-archive libtool ninja openssl zlib bzip2 xz
extra-env: CC=clang CXX=clang++
mdt: 11

env:
CIBW_BUILD: ${{ matrix.py-vers }}
CIBW_SKIP: cp3*-musllinux_*
CIBW_ARCHS: ${{ matrix.arch }}
CIBW_MANYLINUX_X86_64_IMAGE: manylinux_2_28
CIBW_BEFORE_ALL: ${{ matrix.before-all }}
CIBW_BEFORE_BUILD: pip install --upgrade pip setuptools wheel ninja numpy cython
CIBW_ENVIRONMENT: VCPKG_BUILD_TYPE=release ${{ matrix.extra-env }}
MACOSX_DEPLOYMENT_TARGET: ${{ matrix.mdt }}

steps:

- name: checkout repo & submodules
uses: actions/checkout@v3
uses: actions/checkout@v5
with:
submodules: true
fetch-depth: 0

- name: Set up Python
uses: actions/setup-python@v3

- name: Install cibuildwheel
run: python -m pip install cibuildwheel==2.12.0

- name: Build wheels
run: python -m cibuildwheel --output-dir wheelhouse
uses: pypa/cibuildwheel@v3.2.0

- uses: actions/upload-artifact@v3
- uses: actions/upload-artifact@v4
with:
name: wheels
name: wheels-cloud-${{ matrix.os }}
path: ./wheelhouse/*.whl
retention-days: 1

upload_all:
name: Upload to PyPI
needs: build_wheels
needs: [build_wheels_cloud]
runs-on: ubuntu-latest
if: github.event_name == 'release' && github.event.action == 'published'
if: ${{ github.event_name == 'release' && github.event.action == 'published' }}

steps:
- uses: actions/setup-python@v3

- name: Download wheels
uses: actions/download-artifact@v3
- name: Download wheels from cloud runners
uses: actions/download-artifact@v4
with:
name: wheels
pattern: wheels-cloud-*
merge-multiple: true
path: wheels

- uses: pypa/gh-action-pypi-publish@v1.6.4
- uses: pypa/gh-action-pypi-publish@v1.13.0
with:
user: __token__
password: ${{ secrets.PYPI_TOKEN }}
Expand Down
27 changes: 8 additions & 19 deletions .github/workflows/regression.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,48 +12,37 @@ jobs:

build-and-test:
name: Test decoding quantities can be generated
runs-on: ubuntu-20.04
runs-on: ubuntu-24.04
env:
CXX: g++-10
CXX: g++-13

steps:
- uses: actions/checkout@v3
- name: checkout repo & submodules
uses: actions/checkout@v5
with:
submodules: true
fetch-depth: 0

- name: cache vcpkg installed packages
uses: actions/cache@v2
id: cache
- name: Set up Python
uses: actions/setup-python@v6
with:
path: |
vcpkg/
build_dir/vcpkg_installed/
key: ${{ runner.os }}-${{ env.CXX }}-${{ hashFiles('vcpkg.json', 'vcpkg/CHANGELOG.md') }}

- name: Set up Python 3.8
uses: actions/setup-python@v2
with:
python-version: 3.8
architecture: x64
python-version: 3.13

- name: install python dependencies
run: |
python -m pip install --upgrade pip setuptools wheel
python -m pip install ninja numpy cython

- name: install python bindings
run: |
python -m pip install .

- name: make build directory
run: mkdir build_dir
if: steps.cache.outputs.cache-hit != 'true'

- name: compile prepare decoding
run: |
cmake .. -DCMAKE_TOOLCHAIN_FILE=../vcpkg/scripts/buildsystems/vcpkg.cmake -DCMAKE_BUILD_TYPE=Release
cmake --build . --parallel 2 --target prepare_decoding_exe
cmake --build . --parallel 4 --target prepare_decoding_exe
working-directory: build_dir

- name: generate & check decoding quantities (executable)
Expand Down
24 changes: 7 additions & 17 deletions .github/workflows/sanitisers.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,59 +12,49 @@ jobs:

build-and-test:
name: Sanitiser checks
runs-on: ubuntu-20.04
runs-on: ubuntu-24.04
env:
CXX: clang++-10
CXX: clang++-18

steps:

- name: checkout repo & submodules
uses: actions/checkout@v3
uses: actions/checkout@v5
with:
submodules: true
fetch-depth: 0

- name: cache vcpkg installed packages
uses: actions/cache@v2
id: cache
with:
path: |
vcpkg/
build_dir/vcpkg_installed/
key: ${{ runner.os }}-${{ env.CXX }}-${{ hashFiles('vcpkg.json', 'vcpkg/CHANGELOG.md') }}

- name: make build directory
run: mkdir build_dir
if: steps.cache.outputs.cache-hit != 'true'

- name: address sanitiser
run: |
mv vcpkg_installed .. && rm -rf * && mv ../vcpkg_installed .
cmake .. -DCMAKE_TOOLCHAIN_FILE=../vcpkg/scripts/buildsystems/vcpkg.cmake -DCMAKE_BUILD_TYPE=Debug -DENABLE_SANITISER_ADDRESS=ON
cmake --build . --parallel 2 --target unit_tests
cmake --build . --parallel 4 --target unit_tests
./test/unit_tests ~"Test prepare decoding"
working-directory: build_dir

- name: leak sanitiser
run: |
mv vcpkg_installed .. && rm -rf * && mv ../vcpkg_installed .
cmake .. -DCMAKE_TOOLCHAIN_FILE=../vcpkg/scripts/buildsystems/vcpkg.cmake -DCMAKE_BUILD_TYPE=Debug -DENABLE_SANITISER_LEAK=ON
cmake --build . --parallel 2 --target unit_tests
cmake --build . --parallel 4 --target unit_tests
./test/unit_tests
working-directory: build_dir

- name: undefined behaviour sanitiser
run: |
mv vcpkg_installed .. && rm -rf * && mv ../vcpkg_installed .
cmake .. -DCMAKE_TOOLCHAIN_FILE=../vcpkg/scripts/buildsystems/vcpkg.cmake -DCMAKE_BUILD_TYPE=Debug -DENABLE_SANITISER_UNDEFINED_BEHAVIOUR=ON
cmake --build . --parallel 2 --target unit_tests
cmake --build . --parallel 4 --target unit_tests
./test/unit_tests
working-directory: build_dir

- name: thread sanitiser
run: |
mv vcpkg_installed .. && rm -rf * && mv ../vcpkg_installed .
cmake .. -DCMAKE_TOOLCHAIN_FILE=../vcpkg/scripts/buildsystems/vcpkg.cmake -DCMAKE_BUILD_TYPE=Debug -DENABLE_SANITISER_THREAD=ON
cmake --build . --parallel 2 --target unit_tests
cmake --build . --parallel 4 --target unit_tests
./test/unit_tests ~"Test prepare decoding"
working-directory: build_dir
19 changes: 4 additions & 15 deletions .github/workflows/static-analysis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,35 +12,24 @@ jobs:

build-and-test:
name: Static analysis checks
runs-on: ubuntu-20.04
runs-on: ubuntu-24.04
env:
CXX: clang++-10
CXX: clang++-18

steps:

- name: checkout repo & submodules
uses: actions/checkout@v3
uses: actions/checkout@v5
with:
submodules: true
fetch-depth: 0

- name: cache vcpkg installed packages
uses: actions/cache@v2
id: cache
with:
path: |
vcpkg/
build_dir/vcpkg_installed/
key: ${{ runner.os }}-${{ env.CXX }}-${{ hashFiles('vcpkg.json', 'vcpkg/CHANGELOG.md') }}

- name: make build directory
run: mkdir build_dir
if: steps.cache.outputs.cache-hit != 'true'

- name: install analysers
run: |
sudo apt -y update
sudo apt -y install cppcheck clang-tidy-10
sudo apt -y install cppcheck

- name: compile with cppcheck
run: |
Expand Down
Loading
Loading