-
Notifications
You must be signed in to change notification settings - Fork 2.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix: Use PyObject_VisitManagedDict() of Python 3.13 #4973
Conversation
Use PyObject_VisitManagedDict() and PyObject_ClearManagedDict() in pybind11_traverse() and pybind11_clear() on Python 3.13 and newer.
cc @rwgk |
I added Python 3.13 to |
Oh, "🐍 3.13 • ubuntu-20.04 • x64" failed with:
|
@henryiii: Oh thanks for your fix, the three CI jobs running on Python 3.13 succeeded with your change. Should I add Python 3.13 to the CI in a separated PR? Or is it ok to add it in the same PR? As you wish. |
Any breaking changes in 3.13 alphas/betas will also break our main workflow, which isn't ideal. In the past we've had an upstream job for this. Actually, it looks like it's still there, just running 3.12 still. Let me see if I can switch to that. (Making the CI change in this PR is fine, btw) |
Signed-off-by: Henry Schreiner <[email protected]>
750bd68
to
8036a30
Compare
The 🐍 3.12 • macos-latest • x64 workflow was stuck for 3+ hours. I canceled it and then triggered a rerun. |
Nice, thanks for the help with the CI change. |
FWIW — Maybe for later: upstream.yml only exercises one specific platform (ubuntu). I think adding 3.13 testing in ci.yml would be best in general, because then we'd get a lot more coverage. It would also have value to run 3.13 testing by default, with an option to disable it via a Label when we hit a time window in which 3.13 testing is broken because of a root cause that's in core Python (rather than pybind11). That way we wouldn't have to remember to test with 3.13, and we'd catch new core Python issues more-or-less immediately. The only annoyance would be that we'd have to use the Label until the issue is fixed. What I don't know: Is there an easy way to exclude a |
Use
PyObject_VisitManagedDict()
andPyObject_ClearManagedDict()
inpybind11_traverse()
andpybind11_clear()
on Python 3.13 and newer.Description
Suggested changelog entry: