Core and Builtins
-----------------
-- Issue #16197: Update winreg docstrings and documentation to match code.
+- Fix segfaults on setting __qualname__ on builtin types and attempting to
+ delete it on any type.
+
+ - Issue #16345: Fix an infinite loop when ``fromkeys`` on a dict subclass
+ recieved a nonempty dict from the constructor.
+
+- Issue #16271: Fix strange bugs that resulted from __qualname__ appearing in a
+ class's __dict__ and on type.
+
+- Issue #16197: Update winreg docstrings and documentation to match code.
Patch by Zachary Ware.
-- Issue #14700: Fix buggy overflow checks when handling large precisions and
- widths in old-style and new-style formatting.
+- Issue #16241: Document -X faulthandler command line option.
+ Patch by Marek Ć uppa.
- Issue #6074: Ensure cached bytecode files can always be updated by the
user that created them, even when the source file is read-only.
Py_DECREF(d);
return NULL;
}
- }
- return d;
- }
-
- if (PyDict_CheckExact(d) && PyAnySet_CheckExact(seq)) {
- PyDictObject *mp = (PyDictObject *)d;
- Py_ssize_t pos = 0;
- PyObject *key;
- Py_hash_t hash;
- if (dictresize(mp, PySet_GET_SIZE(seq))) {
- Py_DECREF(d);
- return NULL;
+ while (_PyDict_Next(seq, &pos, &key, &oldvalue, &hash)) {
- Py_INCREF(key);
- Py_INCREF(value);
+ if (insertdict(mp, key, hash, value)) {
+ Py_DECREF(d);
+ return NULL;
+ }
+ }
+ return d;
}
+ if (PyAnySet_CheckExact(seq)) {
+ PyDictObject *mp = (PyDictObject *)d;
+ Py_ssize_t pos = 0;
+ PyObject *key;
+ Py_hash_t hash;
- while (_PySet_NextEntry(seq, &pos, &key, &hash)) {
- if (insertdict(mp, key, hash, value)) {
+ if (dictresize(mp, PySet_GET_SIZE(seq))) {
Py_DECREF(d);
return NULL;
}
- Py_INCREF(key);
- Py_INCREF(value);
+
+ while (_PySet_NextEntry(seq, &pos, &key, &hash)) {
+ if (insertdict(mp, key, hash, value)) {
+ Py_DECREF(d);
+ return NULL;
+ }
+ }
+ return d;
}
- return d;
}
it = PyObject_GetIter(seq);