bpo-43770: Refactor type_new() function (GH-25325)

* Split type_new() into into many small functions.
* Add type_new_ctx structure to pass variables between subfunctions.
* Initialize some PyTypeObject and PyHeapTypeObject members earlier
  in type_new_alloc().
* Rename variables to more specific names.
* Add "__weakref__" identifier for type_new_visit_slots().
* Factorize code to convert a method to a classmethod
  (__init_subclass__ and __class_getitem__).
* Add braces to respect PEP 7.
* Move variable declarations where the variables are initialized.
This commit is contained in:
Victor Stinner 2021-04-10 23:15:32 +02:00 committed by GitHub
parent 75a06f067b
commit ecf14e6557
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 753 additions and 414 deletions

View File

@ -4972,10 +4972,12 @@ PyDictKeysObject *
_PyDict_NewKeysForClass(void) _PyDict_NewKeysForClass(void)
{ {
PyDictKeysObject *keys = new_keys_object(PyDict_MINSIZE); PyDictKeysObject *keys = new_keys_object(PyDict_MINSIZE);
if (keys == NULL) if (keys == NULL) {
PyErr_Clear(); PyErr_Clear();
else }
else {
keys->dk_lookup = lookdict_split; keys->dk_lookup = lookdict_split;
}
return keys; return keys;
} }

File diff suppressed because it is too large Load Diff