mirror of
https://github.com/pybind/pybind11.git
synced 2026-04-19 22:39:09 +00:00
* Fix ambiguous `str(handle)` constructor for object-derived types Templatize `str(handle h)` with SFINAE to exclude types derived from `object`, resolving ambiguity with `str(const object&)` when calling `py::str()` on types like `kwargs`, `dict`, etc. The template now only accepts `handle` or `PyObject*`, while all `object`-derived types use the `str(const object&)` overload. * fix(tests): CIBW test fixes from b-pass→vectorcall branch - Install multiple-interpreter test modules into wheel (CMakeLists.txt) The mod_per_interpreter_gil, mod_shared_interpreter_gil, and mod_per_interpreter_gil_with_singleton modules were being built but not installed into the wheel when using scikit-build-core. - Pin numpy 2.4.0 for Python 3.14 CI tests (requirements.txt) NumPy 2.4.0 is the first version with official Python 3.14 wheels. - Add IOS platform constant to tests/env.py - Skip subinterpreter tests on iOS (test_multiple_interpreters.py) Subinterpreters are not supported in the iOS simulator environment. - Enable pytest timeout of 120s for CIBW tests (pyproject.toml) Provides a safety net to catch hanging tests before CI job timeout. - Disable pytest-timeout for Pyodide (no signal.setitimer) Pyodide runs in WebAssembly without POSIX signals. - Add -v flag for verbose pytest output in CIBW tests
32 lines
1.1 KiB
Python
32 lines
1.1 KiB
Python
from __future__ import annotations
|
|
|
|
import platform
|
|
import sys
|
|
import sysconfig
|
|
|
|
ANDROID = sys.platform.startswith("android")
|
|
IOS = sys.platform.startswith("ios")
|
|
LINUX = sys.platform.startswith("linux")
|
|
MACOS = sys.platform.startswith("darwin")
|
|
WIN = sys.platform.startswith("win32") or sys.platform.startswith("cygwin")
|
|
FREEBSD = sys.platform.startswith("freebsd")
|
|
|
|
CPYTHON = platform.python_implementation() == "CPython"
|
|
PYPY = platform.python_implementation() == "PyPy"
|
|
GRAALPY = sys.implementation.name == "graalpy"
|
|
_graalpy_version = (
|
|
sys.modules["__graalpython__"].get_graalvm_version() if GRAALPY else "0.0.0"
|
|
)
|
|
GRAALPY_VERSION = tuple(int(t) for t in _graalpy_version.split("-")[0].split(".")[:3])
|
|
|
|
# Compile-time config (what the binary was built for)
|
|
PY_GIL_DISABLED = bool(sysconfig.get_config_var("Py_GIL_DISABLED"))
|
|
# Runtime state (what's actually happening now)
|
|
sys_is_gil_enabled = getattr(sys, "_is_gil_enabled", lambda: True)
|
|
|
|
TYPES_ARE_IMMORTAL = (
|
|
PYPY
|
|
or GRAALPY
|
|
or (CPYTHON and PY_GIL_DISABLED and (3, 13) <= sys.version_info < (3, 14))
|
|
)
|