GeezerVisonThe World Wide Web, restored to 800 pixels of glory. | |||||||||||||||||
| Home|About|Gaming cabinet|Archives|How it works|Starter sites | |||||||||||||||||
GeezerVison is showing github.com — gh-139852: Add PyObject_GetDictPtr() function by vstinner · Pull Request #139854 · python/cpython Conversation
| |||||||||||||||||
The job fails with: I don't understand this error. Let me try to close/reopen the PR to try to repair the CI. |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
I added the |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
Can those users switch to |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
It seems like SWIG generates code which writes into the #if !defined(SWIG_PYTHON_SLOW_GETSET_THIS) PyObject **dictptr = _PyObject_GetDictPtr(inst); if (dictptr != NULL) { PyObject *dict = *dictptr; if (dict == NULL) { dict = PyDict_New(); *dictptr = dict; } if (dict) { PyDict_SetItem(dict, SWIG_This(), swig_this); } else{ Py_DECREF(inst); inst = 0; } } #else if (PyObject_SetAttr(inst, SWIG_This(), swig_this) == -1) { Py_DECREF(inst); inst = 0; } #endif pybind11 also writes into the PyObject **dict_ptr = _PyObject_GetDictPtr(self);
if (dict_ptr) {
Py_CLEAR(*dict_ptr);
}Obviously, there are other usages which only read the dictionary. Example from pybind11: PyObject *&dict = *_PyObject_GetDictPtr(self); Py_VISIT(dict); |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
That comes up because of the |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
| @@ -1550,18 +1571,12 @@ _PyObject_ComputedDictPointer(PyObject *obj) | |||
| PyObject ** | |||
| _PyObject_GetDictPtr(PyObject *obj) | |||
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
Should this be deprecated?
Sorry, something went wrong.
There was an error while loading. Please reload this page.
I don't think Swig uses that code path for Python 3: |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
Making this API a public function seems to be a bad idea: #139852 (comment). I prefer to close this PR for now. I proposed #139968 to add |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
Successfully merging this pull request may close these issues.
There was an error while loading. Please reload this page.