File tree Expand file tree Collapse file tree 1 file changed +18
-3
lines changed Expand file tree Collapse file tree 1 file changed +18
-3
lines changed Original file line number Diff line number Diff line change @@ -774,14 +774,29 @@ PyObject *JSObjectProxyMethodDefinitions::JSObjectProxy_update_method(JSObjectPr
774
774
Py_RETURN_NONE;
775
775
}
776
776
777
+ /* *
778
+ * @brief Shim for `_PyDictView_New`.
779
+ * Since Python 3.13, `_PyDictView_New` function became an internal API.
780
+ * @see Modified from https://github.com/python/cpython/blob/v3.13.0rc1/Objects/dictobject.c#L5806-L5827
781
+ */
782
+ PyObject *newPyDictViewObject (PyObject *dict, PyTypeObject *type) {
783
+ _PyDictViewObject *dv;
784
+ dv = PyObject_GC_New (_PyDictViewObject, type);
785
+ if (dv == NULL )
786
+ return NULL ;
787
+ dv->dv_dict = (PyDictObject *)Py_NewRef (dict);
788
+ PyObject_GC_Track (dv);
789
+ return (PyObject *)dv;
790
+ }
791
+
777
792
PyObject *JSObjectProxyMethodDefinitions::JSObjectProxy_keys_method (JSObjectProxy *self) {
778
- return _PyDictView_New ((PyObject *)self, &JSObjectKeysProxyType);
793
+ return newPyDictViewObject ((PyObject *)self, &JSObjectKeysProxyType);
779
794
}
780
795
781
796
PyObject *JSObjectProxyMethodDefinitions::JSObjectProxy_values_method (JSObjectProxy *self) {
782
- return _PyDictView_New ((PyObject *)self, &JSObjectValuesProxyType);
797
+ return newPyDictViewObject ((PyObject *)self, &JSObjectValuesProxyType);
783
798
}
784
799
785
800
PyObject *JSObjectProxyMethodDefinitions::JSObjectProxy_items_method (JSObjectProxy *self) {
786
- return _PyDictView_New ((PyObject *)self, &JSObjectItemsProxyType);
801
+ return newPyDictViewObject ((PyObject *)self, &JSObjectItemsProxyType);
787
802
}
You can’t perform that action at this time.
0 commit comments