Skip to content

Conversation

@rwgk
Copy link
Collaborator

@rwgk rwgk commented Dec 30, 2025

Description

Fixes #5938

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.


Piggy-backed: CIBW fixes (failing on master) commit 0e062f2

Suggested changelog entry:

  • Fix ambiguous str(handle) constructor when called with object-derived types like kwargs or dict. The constructor is now templatized with SFINAE to exclude object-derived types, which use the str(const object&) overload instead.

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.
- 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
@rwgk rwgk requested a review from henryiii as a code owner December 30, 2025 09:16
@rwgk rwgk requested review from b-pass and removed request for henryiii December 30, 2025 11:27
Copy link
Collaborator

@b-pass b-pass left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good to me.

@rwgk rwgk merged commit b93c0f7 into pybind:master Dec 30, 2025
87 checks passed
@github-actions github-actions bot added the needs changelog Possibly needs a changelog entry label Dec 30, 2025
@rwgk rwgk deleted the str_handle_ctor branch December 30, 2025 12:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

needs changelog Possibly needs a changelog entry

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[BUG]: call of overloaded ‘str(const pybind11::kwargs&)’ is ambiguous

2 participants