From ce8c26e2d1d7995c5776d123222d8f8a7cca4f5d Mon Sep 17 00:00:00 2001 From: Marco Edoardo Santimaria Date: Sat, 31 Jan 2026 19:16:23 +0000 Subject: [PATCH 1/4] Added github workflow for wheel build --- .github/workflows/release-wheels.yml | 51 ++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 .github/workflows/release-wheels.yml diff --git a/.github/workflows/release-wheels.yml b/.github/workflows/release-wheels.yml new file mode 100644 index 0000000..0bc55b2 --- /dev/null +++ b/.github/workflows/release-wheels.yml @@ -0,0 +1,51 @@ +name: "Upload wheels to PyPI" +on: + push: + branches: + - main + pull_request: + branches: + - main + +jobs: + build: + name: Build wheels on ${{ matrix.os }} + runs-on: ${{ matrix.os }} + + strategy: + fail-fast: false + matrix: + os: ['ubuntu-latest', 'macos-15-intel', 'macos-26'] + + steps: + - uses: actions/checkout@v4 + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: "3.x" + + - name: Install cibuildwheel + run: python -m pip install --upgrade cibuildwheel + + - name: Build wheels + env: + CIBW_BUILD: "cp310-* cp311-* cp312-* cp313-* cp314-*" + CIBW_ARCHS_MACOS: "x86_64 arm64" + CIBW_ARCHS_LINUX: "x86_64 aarch64" + + CIBW_SKIP: "pp*" + + CIBW_MANYLINUX_X86_64_IMAGE: manylinux_2_28 + CIBW_MANYLINUX_AARCH64_IMAGE: manylinux_2_28 + + # Speed + sanity + CIBW_BUILD_VERBOSITY: 1 + + run: | + cibuildwheel --output-dir wheelhouse + + - uses: actions/upload-artifact@v4 + with: + name: wheels-${{ matrix.os }} + path: wheelhouse/*.whl From 3163c42a7630d9f665ba65fa38ed870aae63ad41 Mon Sep 17 00:00:00 2001 From: Marco Edoardo Santimaria Date: Sat, 31 Jan 2026 19:23:52 +0000 Subject: [PATCH 2/4] fix --- .github/workflows/release-wheels.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/release-wheels.yml b/.github/workflows/release-wheels.yml index 0bc55b2..9003723 100644 --- a/.github/workflows/release-wheels.yml +++ b/.github/workflows/release-wheels.yml @@ -15,7 +15,7 @@ jobs: strategy: fail-fast: false matrix: - os: ['ubuntu-latest', 'macos-15-intel', 'macos-26'] + os: ['ubuntu-latest', 'ubuntu-24.04-arm', 'macos-15-intel', 'macos-latest'] steps: - uses: actions/checkout@v4 @@ -31,13 +31,12 @@ jobs: - name: Build wheels env: CIBW_BUILD: "cp310-* cp311-* cp312-* cp313-* cp314-*" - CIBW_ARCHS_MACOS: "x86_64 arm64" - CIBW_ARCHS_LINUX: "x86_64 aarch64" CIBW_SKIP: "pp*" CIBW_MANYLINUX_X86_64_IMAGE: manylinux_2_28 CIBW_MANYLINUX_AARCH64_IMAGE: manylinux_2_28 + MACOSX_DEPLOYMENT_TARGET: "15.0" # Speed + sanity CIBW_BUILD_VERBOSITY: 1 From d69ecdaa5709c5ce609a4a3aa1cc3efedcf1fe44 Mon Sep 17 00:00:00 2001 From: Marco Edoardo Santimaria Date: Sat, 31 Jan 2026 21:28:38 +0000 Subject: [PATCH 3/4] Added deploy step workflow --- .github/workflows/release-wheels.yml | 67 +++++++++++++++++++++++++--- 1 file changed, 62 insertions(+), 5 deletions(-) diff --git a/.github/workflows/release-wheels.yml b/.github/workflows/release-wheels.yml index 9003723..a9821fd 100644 --- a/.github/workflows/release-wheels.yml +++ b/.github/workflows/release-wheels.yml @@ -31,14 +31,9 @@ jobs: - name: Build wheels env: CIBW_BUILD: "cp310-* cp311-* cp312-* cp313-* cp314-*" - - CIBW_SKIP: "pp*" - CIBW_MANYLINUX_X86_64_IMAGE: manylinux_2_28 CIBW_MANYLINUX_AARCH64_IMAGE: manylinux_2_28 MACOSX_DEPLOYMENT_TARGET: "15.0" - - # Speed + sanity CIBW_BUILD_VERBOSITY: 1 run: | @@ -48,3 +43,65 @@ jobs: with: name: wheels-${{ matrix.os }} path: wheelhouse/*.whl + + sdist: + name: Build sdist + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - uses: actions/setup-python@v5 + with: + python-version: "3.x" + + - run: | + python -m pip install --upgrade build + python -m build --sdist + + - uses: actions/upload-artifact@v4 + with: + name: sdist + path: dist/*.tar.gz + + publish: + name: Publish to PyPI + runs-on: ubuntu-latest + needs: [ build, sdist ] + + steps: + - uses: actions/checkout@v4 + + - uses: actions/download-artifact@v4 + with: + path: dist_all + name: wheels-ubuntu-latest + - uses: actions/download-artifact@v4 + with: + path: dist_all + name: wheels-ubuntu-24.04-arm + - uses: actions/download-artifact@v4 + with: + path: dist_all + name: wheels-macos-15-intel + - uses: actions/download-artifact@v4 + with: + path: dist_all + name: wheels-macos-latest + - uses: actions/download-artifact@v4 + with: + path: dist_all + name: sdist + + - run: | + shopt -s nullglob + for f in dist_all/*.zip; do + unzip -o "$f" -d dist_all/ + done + + - run: | + python -m pip install --upgrade twine + twine check dist_all/* + twine upload dist_all/* + env: + TWINE_USERNAME: __token__ + TWINE_PASSWORD: ${{ secrets.PYPI_DEPLOY_KEY }} \ No newline at end of file From f9ae3fb961f25f07ecefa3de0afae75d3b330b50 Mon Sep 17 00:00:00 2001 From: Marco Edoardo Santimaria Date: Sat, 31 Jan 2026 22:17:33 +0000 Subject: [PATCH 4/4] Updated workflow and readme --- .github/workflows/release-wheels.yml | 9 +++++---- README.md | 8 +++++++- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/.github/workflows/release-wheels.yml b/.github/workflows/release-wheels.yml index a9821fd..ccaa891 100644 --- a/.github/workflows/release-wheels.yml +++ b/.github/workflows/release-wheels.yml @@ -1,11 +1,12 @@ name: "Upload wheels to PyPI" on: - push: - branches: - - main - pull_request: + workflow_run: + workflows: + - "Release new version" branches: - main + types: + - completed jobs: build: diff --git a/README.md b/README.md index 1bfabc2..412738c 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -![CAPIO-CL Logo](media/capiocl.png) +![CAPIO-CL Logo](https://raw.githubusercontent.com/High-Performance-IO/CAPIO-CL/main/media/capiocl.png) # CAPIO-CL — Cross-Application Programmable I/O Coordination Language @@ -127,6 +127,12 @@ CAPIO-CL now provides native **Python bindings** built using [pybind11](https:// These bindings expose the core C++ APIs (`Engine`, `Parser` and `Serializer`), directly to Python, allowing the CAPIO-CL logic to be used within python projects. +### Install from PyPI +CAPIO-CL is available on PyPI! Simply run +```bash +pip install py_capio_cl +``` + ### Building the Bindings You can build and install the Python bindings directly from the CAPIO-CL source tree using: