From 560fdfb1fb615a5b304ff375caf0288228114080 Mon Sep 17 00:00:00 2001 From: Andreas Fehlner Date: Sat, 10 Jan 2026 22:22:58 +0100 Subject: [PATCH 01/12] Update build-and-test.yml Signed-off-by: Andreas Fehlner --- .github/workflows/build-and-test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-and-test.yml b/.github/workflows/build-and-test.yml index 450b247e9..650f40974 100644 --- a/.github/workflows/build-and-test.yml +++ b/.github/workflows/build-and-test.yml @@ -41,7 +41,7 @@ jobs: fail-fast: false matrix: os: [ubuntu-24.04, windows-2022, macos-15] - python: ["cp312", "cp311", "cp310"] # because of abi3 we don't need to build separate whls for python 3.13, 3.14 + python: ["cp314t", "cp313t", "cp312", "cp311", "cp310"] # because of abi3 we don't need to build separate whls for python 3.13, 3.14 steps: - uses: actions/checkout@v6.0.1 with: From 5ecc82871bf300861d09cd911f9c2d18f1c9c4a9 Mon Sep 17 00:00:00 2001 From: Andreas Fehlner Date: Sun, 11 Jan 2026 09:37:40 +0100 Subject: [PATCH 02/12] Update setup.py Signed-off-by: Andreas Fehlner --- setup.py | 52 ++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 44 insertions(+), 8 deletions(-) diff --git a/setup.py b/setup.py index e05cee21b..21d55ba6e 100644 --- a/setup.py +++ b/setup.py @@ -293,20 +293,48 @@ def run(self): # Extensions ################################################################################ -py_limited_api = sys.version_info >= (3, 12) -if py_limited_api: - setup_opts = { - "bdist_wheel": {"py_limited_api": "cp312"}, - } -else: - setup_opts = {} +################################################################################ +# Extensions +################################################################################ + +# Enable limited ABI build +# nanobind supports limited ABI for Python 3.12 and later. +# https://blog.trailofbits.com/2022/11/15/python-wheels-abi-abi3audit/ +# 1. The Py_LIMITED_API macro is defined in the extension +# 2. py_limited_api in Extension tags the extension as abi3 +# 3. bdist_wheel options tag the wheel as abi3 +NO_GIL = hasattr(sys, "_is_gil_enabled") and not sys._is_gil_enabled() +PY_312_OR_NEWER = sys.version_info >= (3, 12) +USE_LIMITED_API = not NO_GIL and PY_312_OR_NEWER and platform.system() != "FreeBSD" + +macros = [] +if USE_LIMITED_API: + macros.append(("Py_LIMITED_API", "0x030C0000")) ext_modules = [ setuptools.Extension( - name="onnxoptimizer.onnx_opt_cpp2py_export", sources=[], py_limited_api=py_limited_api + name="onnxoptimizer.onnx_opt_cpp2py_export", + sources=[], + py_limited_api=USE_LIMITED_API, + define_macros=macros, ) ] + +#py_limited_api = sys.version_info >= (3, 12) +#if py_limited_api: +# setup_opts = { +# "bdist_wheel": {"py_limited_api": "cp312"}, +# } +#else: +# setup_opts = {}# +# +#ext_modules = [ +# setuptools.Extension( +# name="onnxoptimizer.onnx_opt_cpp2py_export", sources=[], py_limited_api=py_limited_api +# ) +#] + ################################################################################ # Packages ################################################################################ @@ -318,6 +346,14 @@ def run(self): # Test ################################################################################ +bdist_wheel_options = {} +if USE_LIMITED_API: + bdist_wheel_options["py_limited_api"] = "cp312" + +setup_opts = {} +if bdist_wheel_options: + setup_opts["bdist_wheel"] = bdist_wheel_options + setuptools.setup( version=version_info.version, ext_modules=ext_modules, From 5696ee02e0e49fb0e9c0e17f48ae7de873629363 Mon Sep 17 00:00:00 2001 From: Andreas Fehlner Date: Sun, 11 Jan 2026 09:40:58 +0100 Subject: [PATCH 03/12] Update build-and-test.yml Signed-off-by: Andreas Fehlner --- .github/workflows/build-and-test.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build-and-test.yml b/.github/workflows/build-and-test.yml index 650f40974..387d88be4 100644 --- a/.github/workflows/build-and-test.yml +++ b/.github/workflows/build-and-test.yml @@ -2,7 +2,7 @@ # # SPDX-License-Identifier: Apache-2.0 -name: Build and Test, (Release) +name: Build and Test, Release on: push: @@ -24,6 +24,7 @@ jobs: CIBW_BEFORE_BUILD_LINUX: pip install protobuf CIBW_BEFORE_BUILD_WINDOWS: python -m pip install protobuf CIBW_BEFORE_BUILD_MACOS: pip install protobuf + CIBW_ENABLE: "cpython_freethreading" CIBW_TEST_REQUIRES_LINUX: pytest pytest-xdist ruff mypy onnxruntime CIBW_TEST_REQUIRES_MACOS: pytest pytest-xdist CIBW_TEST_REQUIRES_WINDOWS: pytest pytest-xdist From bd6268bb28a8cb028847830e7c7812d51c50b2b6 Mon Sep 17 00:00:00 2001 From: Andreas Fehlner Date: Sun, 11 Jan 2026 09:42:33 +0100 Subject: [PATCH 04/12] Update build-and-test.yml Signed-off-by: Andreas Fehlner --- .github/workflows/build-and-test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-and-test.yml b/.github/workflows/build-and-test.yml index 387d88be4..d2c526f4f 100644 --- a/.github/workflows/build-and-test.yml +++ b/.github/workflows/build-and-test.yml @@ -24,7 +24,7 @@ jobs: CIBW_BEFORE_BUILD_LINUX: pip install protobuf CIBW_BEFORE_BUILD_WINDOWS: python -m pip install protobuf CIBW_BEFORE_BUILD_MACOS: pip install protobuf - CIBW_ENABLE: "cpython_freethreading" + CIBW_ENABLE: "cpython-freethreading" CIBW_TEST_REQUIRES_LINUX: pytest pytest-xdist ruff mypy onnxruntime CIBW_TEST_REQUIRES_MACOS: pytest pytest-xdist CIBW_TEST_REQUIRES_WINDOWS: pytest pytest-xdist From d2aa4c910e3e4adaff235c9210c5ccae016a5ac3 Mon Sep 17 00:00:00 2001 From: Andreas Fehlner Date: Sun, 11 Jan 2026 10:51:43 +0100 Subject: [PATCH 05/12] Update build-and-test.yml Signed-off-by: Andreas Fehlner --- .github/workflows/build-and-test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-and-test.yml b/.github/workflows/build-and-test.yml index d2c526f4f..9fe985899 100644 --- a/.github/workflows/build-and-test.yml +++ b/.github/workflows/build-and-test.yml @@ -31,7 +31,7 @@ jobs: CIBW_BEFORE_TEST_LINUX: pip install onnxscript torch==2.9.1 torchvision==0.24.1 CIBW_TEST_COMMAND: pytest {project}/onnxoptimizer/test CIBW_TEST_COMMAND_LINUX: cd {project} && pytest - CIBW_TEST_SKIP: " *_arm64" + CIBW_TEST_SKIP: " *_arm64 cp314t-manylinux*" CIBW_ENVIRONMENT: CMAKE_ARGS="-DONNX_USE_PROTOBUF_SHARED_LIBS=OFF -DProtobuf_USE_STATIC_LIBS=ON -DONNX_USE_LITE_PROTO=ON -DCMAKE_POLICY_VERSION_MINIMUM=3.5" CIBW_ENVIRONMENT_WINDOWS: USE_MSVC_STATIC_RUNTIME=0 CMAKE_ARGS="-DONNX_USE_PROTOBUF_SHARED_LIBS=OFF -DProtobuf_USE_STATIC_LIBS=ON -DONNX_USE_LITE_PROTO=ON" CIBW_BUILD: "${{ matrix.python }}-*" From fd4d1079a728fd0b350cbfa09a3df2df9b5ecd02 Mon Sep 17 00:00:00 2001 From: Andreas Fehlner Date: Wed, 14 Jan 2026 17:37:02 +0100 Subject: [PATCH 06/12] Update build-and-test.yml Signed-off-by: Andreas Fehlner --- .github/workflows/build-and-test.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/build-and-test.yml b/.github/workflows/build-and-test.yml index 9181d7bd7..88921daec 100644 --- a/.github/workflows/build-and-test.yml +++ b/.github/workflows/build-and-test.yml @@ -32,8 +32,6 @@ jobs: CIBW_TEST_COMMAND: pytest {project}/onnxoptimizer/test CIBW_TEST_COMMAND_LINUX: cd {project} && pytest CIBW_TEST_SKIP: " *_arm64 cp314t-manylinux*" - CIBW_ENVIRONMENT: CMAKE_ARGS="-DONNX_USE_PROTOBUF_SHARED_LIBS=OFF -DProtobuf_USE_STATIC_LIBS=ON -DONNX_USE_LITE_PROTO=ON -DCMAKE_POLICY_VERSION_MINIMUM=3.5" - CIBW_ENVIRONMENT_WINDOWS: USE_MSVC_STATIC_RUNTIME=0 CMAKE_ARGS="-DONNX_USE_PROTOBUF_SHARED_LIBS=OFF -DProtobuf_USE_STATIC_LIBS=ON -DONNX_USE_LITE_PROTO=ON" CIBW_ENVIRONMENT: CMAKE_ARGS="-DONNX_USE_LITE_PROTO=ON" CIBW_BUILD: "${{ matrix.python }}-*" CIBW_SKIP: "*-win32 *-manylinux_i686 *-musllinux_*" From 61890896f2f0044f5c4cc489431d21e26f3f0046 Mon Sep 17 00:00:00 2001 From: Andreas Fehlner Date: Wed, 14 Jan 2026 18:36:16 +0100 Subject: [PATCH 07/12] Update build-and-test.yml Signed-off-by: Andreas Fehlner --- .github/workflows/build-and-test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-and-test.yml b/.github/workflows/build-and-test.yml index 88921daec..dfe20550c 100644 --- a/.github/workflows/build-and-test.yml +++ b/.github/workflows/build-and-test.yml @@ -34,7 +34,7 @@ jobs: CIBW_TEST_SKIP: " *_arm64 cp314t-manylinux*" CIBW_ENVIRONMENT: CMAKE_ARGS="-DONNX_USE_LITE_PROTO=ON" CIBW_BUILD: "${{ matrix.python }}-*" - CIBW_SKIP: "*-win32 *-manylinux_i686 *-musllinux_*" + CIBW_SKIP: "*-win32 *-manylinux_i686 *-musllinux_* *cp314t-macosx_*" name: Build whls ${{ matrix.os }}${{ matrix.python }} runs-on: ${{ matrix.os }} strategy: From 3cebf730ed459267087783c38c4ecfd0568ecf1b Mon Sep 17 00:00:00 2001 From: Andreas Fehlner Date: Wed, 14 Jan 2026 18:50:20 +0100 Subject: [PATCH 08/12] Update build-and-test.yml Signed-off-by: Andreas Fehlner --- .github/workflows/build-and-test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-and-test.yml b/.github/workflows/build-and-test.yml index dfe20550c..fcdbe4e84 100644 --- a/.github/workflows/build-and-test.yml +++ b/.github/workflows/build-and-test.yml @@ -34,7 +34,7 @@ jobs: CIBW_TEST_SKIP: " *_arm64 cp314t-manylinux*" CIBW_ENVIRONMENT: CMAKE_ARGS="-DONNX_USE_LITE_PROTO=ON" CIBW_BUILD: "${{ matrix.python }}-*" - CIBW_SKIP: "*-win32 *-manylinux_i686 *-musllinux_* *cp314t-macosx_*" + CIBW_SKIP: "*-win32 *-manylinux_i686 *-musllinux_* *cp314t-macosx_universal2*" name: Build whls ${{ matrix.os }}${{ matrix.python }} runs-on: ${{ matrix.os }} strategy: From 75b078aff86c739eab54474616d97c220a29c190 Mon Sep 17 00:00:00 2001 From: Andreas Fehlner Date: Wed, 14 Jan 2026 18:53:50 +0100 Subject: [PATCH 09/12] Update build-and-test.yml Signed-off-by: Andreas Fehlner --- .github/workflows/build-and-test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-and-test.yml b/.github/workflows/build-and-test.yml index fcdbe4e84..3cba88a6e 100644 --- a/.github/workflows/build-and-test.yml +++ b/.github/workflows/build-and-test.yml @@ -34,7 +34,7 @@ jobs: CIBW_TEST_SKIP: " *_arm64 cp314t-manylinux*" CIBW_ENVIRONMENT: CMAKE_ARGS="-DONNX_USE_LITE_PROTO=ON" CIBW_BUILD: "${{ matrix.python }}-*" - CIBW_SKIP: "*-win32 *-manylinux_i686 *-musllinux_* *cp314t-macosx_universal2*" + CIBW_SKIP: "*-win32 *-manylinux_i686 *-musllinux_* cp314t-macosx_universal2*" name: Build whls ${{ matrix.os }}${{ matrix.python }} runs-on: ${{ matrix.os }} strategy: From 40c846884018155d4863623a76fce9665806d634 Mon Sep 17 00:00:00 2001 From: Andreas Fehlner Date: Wed, 14 Jan 2026 18:55:08 +0100 Subject: [PATCH 10/12] Update setup.py Signed-off-by: Andreas Fehlner --- setup.py | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/setup.py b/setup.py index c8e9176ea..f48573709 100644 --- a/setup.py +++ b/setup.py @@ -318,21 +318,6 @@ def run(self): ) ] - -#py_limited_api = sys.version_info >= (3, 12) -#if py_limited_api: -# setup_opts = { -# "bdist_wheel": {"py_limited_api": "cp312"}, -# } -#else: -# setup_opts = {}# -# -#ext_modules = [ -# setuptools.Extension( -# name="onnxoptimizer.onnx_opt_cpp2py_export", sources=[], py_limited_api=py_limited_api -# ) -#] - ################################################################################ # Packages ################################################################################ From d10badc456ed66070ab205c257bea3f79d165609 Mon Sep 17 00:00:00 2001 From: Andreas Fehlner Date: Wed, 14 Jan 2026 19:00:32 +0100 Subject: [PATCH 11/12] Update build-and-test.yml Signed-off-by: Andreas Fehlner --- .github/workflows/build-and-test.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-and-test.yml b/.github/workflows/build-and-test.yml index 3cba88a6e..0166a026d 100644 --- a/.github/workflows/build-and-test.yml +++ b/.github/workflows/build-and-test.yml @@ -31,10 +31,10 @@ jobs: CIBW_BEFORE_TEST_LINUX: pip install torch==2.9.1 torchvision==0.24.1 --index-url https://download.pytorch.org/whl/cpu CIBW_TEST_COMMAND: pytest {project}/onnxoptimizer/test CIBW_TEST_COMMAND_LINUX: cd {project} && pytest - CIBW_TEST_SKIP: " *_arm64 cp314t-manylinux*" + CIBW_TEST_SKIP: " *_arm64" CIBW_ENVIRONMENT: CMAKE_ARGS="-DONNX_USE_LITE_PROTO=ON" CIBW_BUILD: "${{ matrix.python }}-*" - CIBW_SKIP: "*-win32 *-manylinux_i686 *-musllinux_* cp314t-macosx_universal2*" + CIBW_SKIP: "*-win32 *-manylinux_i686 *-musllinux_*" name: Build whls ${{ matrix.os }}${{ matrix.python }} runs-on: ${{ matrix.os }} strategy: From f227f5f7634624916a6327678457fc787257b4a8 Mon Sep 17 00:00:00 2001 From: Andreas Fehlner Date: Wed, 14 Jan 2026 19:01:43 +0100 Subject: [PATCH 12/12] Update build-and-test.yml Signed-off-by: Andreas Fehlner --- .github/workflows/build-and-test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-and-test.yml b/.github/workflows/build-and-test.yml index 0166a026d..72cb06f35 100644 --- a/.github/workflows/build-and-test.yml +++ b/.github/workflows/build-and-test.yml @@ -41,7 +41,7 @@ jobs: fail-fast: false matrix: os: [ubuntu-24.04, windows-2022, macos-15] - python: ["cp314t", "cp313t", "cp312", "cp311", "cp310"] # because of abi3 we don't need to build separate whls for python 3.13, 3.14 + python: ["cp313t", "cp312", "cp311", "cp310"] # because of abi3 we don't need to build separate whls for python 3.13, 3.14 steps: - uses: actions/checkout@v6.0.1 with: