bpo-39573: Add Py_SET_TYPE() function (GH-18394)

Add Py_SET_TYPE() function to set the type of an object.
This commit is contained in:
Victor Stinner 2020-02-07 09:17:07 +01:00 committed by GitHub
parent daa9756cb6
commit d2ec81a8c9
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
24 changed files with 77 additions and 48 deletions

View file

@ -62,7 +62,7 @@ PyInit__blake2(void)
return NULL;
/* BLAKE2b */
Py_TYPE(&PyBlake2_BLAKE2bType) = &PyType_Type;
Py_SET_TYPE(&PyBlake2_BLAKE2bType, &PyType_Type);
if (PyType_Ready(&PyBlake2_BLAKE2bType) < 0) {
return NULL;
}
@ -82,7 +82,7 @@ PyInit__blake2(void)
PyModule_AddIntConstant(m, "BLAKE2B_MAX_DIGEST_SIZE", BLAKE2B_OUTBYTES);
/* BLAKE2s */
Py_TYPE(&PyBlake2_BLAKE2sType) = &PyType_Type;
Py_SET_TYPE(&PyBlake2_BLAKE2sType, &PyType_Type);
if (PyType_Ready(&PyBlake2_BLAKE2sType) < 0) {
return NULL;
}

View file

@ -5758,42 +5758,42 @@ PyInit__ctypes(void)
if (PyType_Ready(&PyCData_Type) < 0)
return NULL;
Py_TYPE(&Struct_Type) = &PyCStructType_Type;
Py_SET_TYPE(&Struct_Type, &PyCStructType_Type);
Struct_Type.tp_base = &PyCData_Type;
if (PyType_Ready(&Struct_Type) < 0)
return NULL;
Py_INCREF(&Struct_Type);
PyModule_AddObject(m, "Structure", (PyObject *)&Struct_Type);
Py_TYPE(&Union_Type) = &UnionType_Type;
Py_SET_TYPE(&Union_Type, &UnionType_Type);
Union_Type.tp_base = &PyCData_Type;
if (PyType_Ready(&Union_Type) < 0)
return NULL;
Py_INCREF(&Union_Type);
PyModule_AddObject(m, "Union", (PyObject *)&Union_Type);
Py_TYPE(&PyCPointer_Type) = &PyCPointerType_Type;
Py_SET_TYPE(&PyCPointer_Type, &PyCPointerType_Type);
PyCPointer_Type.tp_base = &PyCData_Type;
if (PyType_Ready(&PyCPointer_Type) < 0)
return NULL;
Py_INCREF(&PyCPointer_Type);
PyModule_AddObject(m, "_Pointer", (PyObject *)&PyCPointer_Type);
Py_TYPE(&PyCArray_Type) = &PyCArrayType_Type;
Py_SET_TYPE(&PyCArray_Type, &PyCArrayType_Type);
PyCArray_Type.tp_base = &PyCData_Type;
if (PyType_Ready(&PyCArray_Type) < 0)
return NULL;
Py_INCREF(&PyCArray_Type);
PyModule_AddObject(m, "Array", (PyObject *)&PyCArray_Type);
Py_TYPE(&Simple_Type) = &PyCSimpleType_Type;
Py_SET_TYPE(&Simple_Type, &PyCSimpleType_Type);
Simple_Type.tp_base = &PyCData_Type;
if (PyType_Ready(&Simple_Type) < 0)
return NULL;
Py_INCREF(&Simple_Type);
PyModule_AddObject(m, "_SimpleCData", (PyObject *)&Simple_Type);
Py_TYPE(&PyCFuncPtr_Type) = &PyCFuncPtrType_Type;
Py_SET_TYPE(&PyCFuncPtr_Type, &PyCFuncPtrType_Type);
PyCFuncPtr_Type.tp_base = &PyCData_Type;
if (PyType_Ready(&PyCFuncPtr_Type) < 0)
return NULL;

View file

@ -68,7 +68,7 @@ typedef struct {
ffi_type *atypes[1];
} CThunkObject;
extern PyTypeObject PyCThunk_Type;
#define CThunk_CheckExact(v) ((v)->ob_type == &PyCThunk_Type)
#define CThunk_CheckExact(v) (Py_TYPE(v) == &PyCThunk_Type)
typedef struct {
/* First part identical to tagCDataObject */

View file

@ -713,7 +713,7 @@ PyInit__sha3(void)
#define init_sha3type(name, type) \
do { \
Py_TYPE(type) = &PyType_Type; \
Py_SET_TYPE(type, &PyType_Type); \
if (PyType_Ready(type) < 0) { \
goto error; \
} \

View file

@ -78,6 +78,6 @@ PyTypeObject pysqlite_PrepareProtocolType= {
extern int pysqlite_prepare_protocol_setup_types(void)
{
pysqlite_PrepareProtocolType.tp_new = PyType_GenericNew;
Py_TYPE(&pysqlite_PrepareProtocolType)= &PyType_Type;
Py_SET_TYPE(&pysqlite_PrepareProtocolType, &PyType_Type);
return PyType_Ready(&pysqlite_PrepareProtocolType);
}

View file

@ -2835,11 +2835,11 @@ PyInit__testbuffer(void)
if (m == NULL)
return NULL;
Py_TYPE(&NDArray_Type) = &PyType_Type;
Py_SET_TYPE(&NDArray_Type, &PyType_Type);
Py_INCREF(&NDArray_Type);
PyModule_AddObject(m, "ndarray", (PyObject *)&NDArray_Type);
Py_TYPE(&StaticArray_Type) = &PyType_Type;
Py_SET_TYPE(&StaticArray_Type, &PyType_Type);
Py_INCREF(&StaticArray_Type);
PyModule_AddObject(m, "staticarray", (PyObject *)&StaticArray_Type);

View file

@ -6605,9 +6605,9 @@ PyInit__testcapi(void)
if (m == NULL)
return NULL;
Py_TYPE(&_HashInheritanceTester_Type)=&PyType_Type;
Py_SET_TYPE(&_HashInheritanceTester_Type, &PyType_Type);
Py_TYPE(&test_structmembersType)=&PyType_Type;
Py_SET_TYPE(&test_structmembersType, &PyType_Type);
Py_INCREF(&test_structmembersType);
/* don't use a name starting with "test", since we don't want
test_capi to automatically call this */

View file

@ -2996,7 +2996,7 @@ array_modexec(PyObject *m)
if (PyType_Ready(&Arraytype) < 0)
return -1;
Py_TYPE(&PyArrayIter_Type) = &PyType_Type;
Py_SET_TYPE(&PyArrayIter_Type, &PyType_Type);
Py_INCREF((PyObject *)&Arraytype);
if (PyModule_AddObject(m, "ArrayType", (PyObject *)&Arraytype) < 0) {

View file

@ -4750,14 +4750,16 @@ PyInit_itertools(void)
NULL
};
Py_TYPE(&teedataobject_type) = &PyType_Type;
Py_SET_TYPE(&teedataobject_type, &PyType_Type);
m = PyModule_Create(&itertoolsmodule);
if (m == NULL)
if (m == NULL) {
return NULL;
}
for (i=0 ; typelist[i] != NULL ; i++) {
if (PyType_Ready(typelist[i]) < 0)
if (PyType_Ready(typelist[i]) < 0) {
return NULL;
}
name = _PyType_Name(typelist[i]);
Py_INCREF(typelist[i]);
PyModule_AddObject(m, name, (PyObject *)typelist[i]);

View file

@ -572,13 +572,15 @@ PyInit__md5(void)
{
PyObject *m;
Py_TYPE(&MD5type) = &PyType_Type;
if (PyType_Ready(&MD5type) < 0)
Py_SET_TYPE(&MD5type, &PyType_Type);
if (PyType_Ready(&MD5type) < 0) {
return NULL;
}
m = PyModule_Create(&_md5module);
if (m == NULL)
if (m == NULL) {
return NULL;
}
Py_INCREF((PyObject *)&MD5type);
PyModule_AddObject(m, "MD5Type", (PyObject *)&MD5type);

View file

@ -549,13 +549,15 @@ PyInit__sha1(void)
{
PyObject *m;
Py_TYPE(&SHA1type) = &PyType_Type;
if (PyType_Ready(&SHA1type) < 0)
Py_SET_TYPE(&SHA1type, &PyType_Type);
if (PyType_Ready(&SHA1type) < 0) {
return NULL;
}
m = PyModule_Create(&_sha1module);
if (m == NULL)
if (m == NULL) {
return NULL;
}
Py_INCREF((PyObject *)&SHA1type);
PyModule_AddObject(m, "SHA1Type", (PyObject *)&SHA1type);

View file

@ -713,12 +713,14 @@ PyInit__sha256(void)
{
PyObject *m;
Py_TYPE(&SHA224type) = &PyType_Type;
if (PyType_Ready(&SHA224type) < 0)
Py_SET_TYPE(&SHA224type, &PyType_Type);
if (PyType_Ready(&SHA224type) < 0) {
return NULL;
Py_TYPE(&SHA256type) = &PyType_Type;
if (PyType_Ready(&SHA256type) < 0)
}
Py_SET_TYPE(&SHA256type, &PyType_Type);
if (PyType_Ready(&SHA256type) < 0) {
return NULL;
}
m = PyModule_Create(&_sha256module);
if (m == NULL)

View file

@ -778,16 +778,19 @@ PyInit__sha512(void)
{
PyObject *m;
Py_TYPE(&SHA384type) = &PyType_Type;
if (PyType_Ready(&SHA384type) < 0)
Py_SET_TYPE(&SHA384type, &PyType_Type);
if (PyType_Ready(&SHA384type) < 0) {
return NULL;
Py_TYPE(&SHA512type) = &PyType_Type;
if (PyType_Ready(&SHA512type) < 0)
}
Py_SET_TYPE(&SHA512type, &PyType_Type);
if (PyType_Ready(&SHA512type) < 0) {
return NULL;
}
m = PyModule_Create(&_sha512module);
if (m == NULL)
if (m == NULL) {
return NULL;
}
Py_INCREF((PyObject *)&SHA384type);
PyModule_AddObject(m, "SHA384Type", (PyObject *)&SHA384type);

View file

@ -7100,7 +7100,7 @@ PyInit__socket(void)
}
#endif
Py_TYPE(&sock_type) = &PyType_Type;
Py_SET_TYPE(&sock_type, &PyType_Type);
m = PyModule_Create(&socketmodule);
if (m == NULL)
return NULL;

View file

@ -1455,7 +1455,7 @@ PyInit_unicodedata(void)
{
PyObject *m, *v;
Py_TYPE(&UCD_Type) = &PyType_Type;
Py_SET_TYPE(&UCD_Type, &PyType_Type);
m = PyModule_Create(&unicodedatamodule);
if (!m)