From ee4d594db286f7dd97b1885a7e57cf693ddd29e3 Mon Sep 17 00:00:00 2001 From: "Ryan M. Richard" Date: Thu, 17 Sep 2026 13:33:47 -0500 Subject: [PATCH] Pin pybind11 to 3.1.0 to match the wheel build pybind11 keys its type registry on PYBIND11_INTERNALS_VERSION, baked into each extension as __pybind11_internals_v____. Modules built against different N get separate registries and cannot exchange types even though importing one from the other succeeds. An unpinned "pybind11" let pip resolve 3.1.0 (internals v12) for local CMake builds, while NWXCMake FetchContent pinned v3.0.2 (internals v11) for the wheels. SCF test_cmake_build installs the ecosystem then builds from source, mixing the two, and died with: TypeError: Unregistered type : parallelzone::runtime::RuntimeView Wheel-only and source-only builds both worked, which is why this hid. Paired with the NWXCMake bump of its FetchContent tag to v3.1.0; the two pins must stay in sync. Co-Authored-By: Claude Opus 5 --- pyproject.toml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index d7413948..c05ce5b7 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -26,7 +26,10 @@ description = "Integral evaluation modules for the NWChemEx ecosystem" license = { text = "Apache-2.0" } requires-python = ">=3.8" dependencies = [ - "pybind11", + # Must match NWXCMake cmake/dependencies/pybind11.cmake GIT_TAG: a + # different PYBIND11_INTERNALS_VERSION gives extensions separate type + # registries and breaks cross-module type exchange. + "pybind11==3.1.0", "nwchemex-nwxcmake>=0.1.0", "nwchemex-simde>=0.0.77", ]