diff --git a/pyproject.toml b/pyproject.toml index e39015f..be4350e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -27,6 +27,7 @@ classifiers = [ "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", + "Programming Language :: Python :: 3.14", "Topic :: Scientific/Engineering", "Operating System :: POSIX :: Linux", "Operating System :: MacOS :: MacOS X", @@ -82,7 +83,13 @@ regex = '''ff_version\s*=\s*"v?(?P\d+\.\d+\.\d+)"''' [tool.cibuildwheel] # 32-bit and musl targets have no usable NetCDF C++4 story, and PyPy cannot # load the pybind11 module built here. -skip = ["pp*", "*-musllinux_*", "*_i686", "*-win32"] +# cp314t is the free-threaded build. An extension that does not declare +# `py::mod_gil_not_used()` makes the interpreter re-enable the GIL on import, +# so such a wheel advertises free-threading while silently switching it off. +# _pyforefire makes no such declaration, and the C++ core keeps mutable global +# state (see FireDomain's model registries and SimulationParameters), so it is +# not safe to run without the GIL. Revisit only once that is addressed. +skip = ["pp*", "*-musllinux_*", "*_i686", "*-win32", "cp314t-*"] test-command = [ "python {project}/tests/python/test_wheel.py", "forefire -v",