From 1b55f6de16e5bb102bf12af8268210d388e2833e Mon Sep 17 00:00:00 2001 From: Vincenzo Eduardo Padulano Date: Mon, 18 May 2026 09:08:32 +0200 Subject: [PATCH 1/5] [build] Add Python 3.14 wheel builds (cherry picked from commit b56fee3eaa5827d33916f9017303a7e5738cdb40) --- .github/workflows/python_wheel_build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/python_wheel_build.yml b/.github/workflows/python_wheel_build.yml index 62c29eed29a2b..15f9497bde972 100644 --- a/.github/workflows/python_wheel_build.yml +++ b/.github/workflows/python_wheel_build.yml @@ -28,7 +28,7 @@ jobs: strategy: fail-fast: false matrix: - target: [cp310-manylinux_x86_64, cp311-manylinux_x86_64, cp312-manylinux_x86_64, cp313-manylinux_x86_64] + target: [cp310-manylinux_x86_64, cp311-manylinux_x86_64, cp312-manylinux_x86_64, cp313-manylinux_x86_64, cp314-manylinux_x86_64] name: ${{ matrix.target }} steps: - uses: actions/checkout@v6 @@ -42,7 +42,7 @@ jobs: strategy: fail-fast: false matrix: - python-version: ["3.10", "3.11", "3.12", "3.13"] + python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"] name: test-wheel-cp${{ matrix.python-version }} steps: - uses: actions/checkout@v6 From 9553dea0e55c7bd2ebffdbbb201274ae9f3ab516 Mon Sep 17 00:00:00 2001 From: Vincenzo Eduardo Padulano Date: Mon, 18 May 2026 09:12:04 +0200 Subject: [PATCH 2/5] [build] Reflect Python version requirement in wheels (cherry picked from commit 11abdbc8031bce1a5d7541e768867bcab987a4dc) --- pyproject.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 45753dd4ad054..e9496420d645b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -3,8 +3,8 @@ requires = ["cmake", "setuptools<72", "wheel", "numpy"] [project] name = "ROOT" -version = "0.1a9" -requires-python = ">=3.9" +version = "0.1a12" +requires-python = ">=3.10" maintainers = [ {name = "Vincenzo Eduardo Padulano", email = "vincenzo.eduardo.padulano@cern.ch"} ] From 1578887c00b77c63664584d38a44f641712bbe8f Mon Sep 17 00:00:00 2001 From: Vincenzo Eduardo Padulano Date: Mon, 18 May 2026 09:12:41 +0200 Subject: [PATCH 3/5] [build] Update project description (cherry picked from commit 84ffc90a8489e9f2f54b8bb6ac867906da659b82) --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index e9496420d645b..8fde443741696 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -8,7 +8,7 @@ requires-python = ">=3.10" maintainers = [ {name = "Vincenzo Eduardo Padulano", email = "vincenzo.eduardo.padulano@cern.ch"} ] -description = "An open-source data analysis framework used by high energy physics and others." +description = "Analyzing petabytes of data, scientifically." readme = "README.md" license = {file = "LICENSE"} dependencies = [ From 90f87ac53ae23bfb3e81f19bb65bf1313cf144ac Mon Sep 17 00:00:00 2001 From: Vincenzo Eduardo Padulano Date: Mon, 18 May 2026 09:14:10 +0200 Subject: [PATCH 4/5] [build] Update to latest cibuildwheel version (cherry picked from commit f0f6246ab8ed0e4dee846b2a0755c0052ebb26f5) --- .github/workflows/cibuildwheel-impl/action.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/cibuildwheel-impl/action.yml b/.github/workflows/cibuildwheel-impl/action.yml index 6494189c928a8..deebfaed7d72a 100644 --- a/.github/workflows/cibuildwheel-impl/action.yml +++ b/.github/workflows/cibuildwheel-impl/action.yml @@ -9,7 +9,7 @@ runs: using: "composite" steps: - name: Build wheel - uses: pypa/cibuildwheel@v3.0.1 + uses: pypa/cibuildwheel@v3.4.1 env: CIBW_BUILD: ${{ inputs.build-tag }} From a92e62b6f1fdb5f99705b648f2782794d6d1481a Mon Sep 17 00:00:00 2001 From: Vincenzo Eduardo Padulano Date: Wed, 13 May 2026 10:29:35 +0200 Subject: [PATCH 5/5] [build] Add workflow steps for PyPI publishing (cherry picked from commit c719f239ded57d16f28fe776228406236ab8ff21) --- .github/workflows/python_wheel_build.yml | 31 +++++++++++++++++++++--- 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/.github/workflows/python_wheel_build.yml b/.github/workflows/python_wheel_build.yml index 15f9497bde972..bfa6db5eacd91 100644 --- a/.github/workflows/python_wheel_build.yml +++ b/.github/workflows/python_wheel_build.yml @@ -3,11 +3,11 @@ name: 'ROOT Python wheels' on: workflow_dispatch: inputs: - branch: - description: 'The branch for which the Python wheel has to be generated' + ref: + description: 'The git ref to build the wheel from (branch, tag, or commit SHA).' type: string required: true - default: "master" + default: '' schedule: - cron: '01 1 * * *' pull_request: @@ -32,6 +32,8 @@ jobs: name: ${{ matrix.target }} steps: - uses: actions/checkout@v6 + with: + ref: ${{ github.event.inputs.ref }} - uses: ./.github/workflows/cibuildwheel-impl with: build-tag: ${{ matrix.target }} @@ -46,7 +48,8 @@ jobs: name: test-wheel-cp${{ matrix.python-version }} steps: - uses: actions/checkout@v6 - + with: + ref: ${{ github.event.inputs.ref }} - name: Download produced wheels uses: actions/download-artifact@v4 with: @@ -121,3 +124,23 @@ jobs: kinit -p ${{ secrets.KRB5USER }}@${{ secrets.KRB5REALM }} -kt ${KT_FILE_NAME} echo +++ Running the copy xrdcp --parallel ${NFILES} -rf wheelhouse/* ${EOS_ENDPOINT}/${EOS_PATH}/ + + publish-to-pypi: + if: github.event_name == 'workflow_dispatch' + needs: build-wheels + runs-on: ubuntu-latest + name: >- + Publish Python distribution to PyPI + environment: + name: pypi + url: https://pypi.org/p/root + permissions: + id-token: write + steps: + - name: Download produced wheels + uses: actions/download-artifact@v4 + with: + merge-multiple: true + path: dist/ + - name: Publish distribution to PyPI + uses: pypa/gh-action-pypi-publish@release/v1