modernize PY3 class definition PiperOrigin-RevId: 804376079
diff --git a/python/_brotli.c b/python/_brotli.c index d037459..cfc6ba6 100644 --- a/python/_brotli.c +++ b/python/_brotli.c
@@ -578,13 +578,24 @@ {NULL} /* Sentinel */ }; -static PyTypeObject brotli_CompressorType = { #if PY_MAJOR_VERSION >= 3 - PyVarObject_HEAD_INIT(NULL, 0) +static PyType_Slot brotli_Compressor_slots[] = { + {Py_tp_dealloc, (destructor)brotli_Compressor_dealloc}, + {Py_tp_doc, (void*)brotli_Compressor_doc}, + {Py_tp_methods, brotli_Compressor_methods}, + {Py_tp_members, brotli_Compressor_members}, + {Py_tp_init, (initproc)brotli_Compressor_init}, + {Py_tp_new, brotli_Compressor_new}, + {0, 0}, +}; + +static PyType_Spec brotli_Compressor_spec = { + "brotli.Compressor", sizeof(brotli_Compressor), 0, + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, brotli_Compressor_slots}; #else - PyObject_HEAD_INIT(NULL) 0, /* ob_size*/ -#endif - "brotli.Compressor", /* tp_name */ +static PyTypeObject brotli_CompressorType = { + PyObject_HEAD_INIT(NULL) 0, /* ob_size*/ + "brotli.Compressor", /* tp_name */ sizeof(brotli_Compressor), /* tp_basicsize */ 0, /* tp_itemsize */ (destructor)brotli_Compressor_dealloc, /* tp_dealloc */ @@ -622,6 +633,7 @@ 0, /* tp_alloc */ brotli_Compressor_new, /* tp_new */ }; +#endif PyDoc_STRVAR(brotli_Decompressor_doc, "An object to decompress a byte string.\n" @@ -911,13 +923,24 @@ {NULL} /* Sentinel */ }; -static PyTypeObject brotli_DecompressorType = { #if PY_MAJOR_VERSION >= 3 - PyVarObject_HEAD_INIT(NULL, 0) +static PyType_Slot brotli_Decompressor_slots[] = { + {Py_tp_dealloc, (destructor)brotli_Decompressor_dealloc}, + {Py_tp_doc, (void*)brotli_Decompressor_doc}, + {Py_tp_methods, brotli_Decompressor_methods}, + {Py_tp_members, brotli_Decompressor_members}, + {Py_tp_init, (initproc)brotli_Decompressor_init}, + {Py_tp_new, brotli_Decompressor_new}, + {0, 0}, +}; + +static PyType_Spec brotli_Decompressor_spec = { + "brotli.Decompressor", sizeof(brotli_Decompressor), 0, + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, brotli_Decompressor_slots}; #else - PyObject_HEAD_INIT(NULL) 0, /* ob_size*/ -#endif - "brotli.Decompressor", /* tp_name */ +static PyTypeObject brotli_DecompressorType = { + PyObject_HEAD_INIT(NULL) 0, /* ob_size*/ + "brotli.Decompressor", /* tp_name */ sizeof(brotli_Decompressor), /* tp_basicsize */ 0, /* tp_itemsize */ (destructor)brotli_Decompressor_dealloc, /* tp_dealloc */ @@ -955,6 +978,7 @@ 0, /* tp_alloc */ brotli_Decompressor_new, /* tp_new */ }; +#endif PyDoc_STRVAR(brotli_decompress__doc__, "Decompress a compressed byte string.\n" @@ -1080,6 +1104,9 @@ PyMODINIT_FUNC INIT_BROTLI(void) { PyObject* m = CREATE_BROTLI; + if (m == NULL) { + RETURN_NULL; + } BrotliError = PyErr_NewException((char*)"brotli.error", NULL, NULL); if (BrotliError != NULL) { @@ -1087,6 +1114,19 @@ PyModule_AddObject(m, "error", BrotliError); } +#if PY_MAJOR_VERSION >= 3 + PyObject* compressor_type = PyType_FromSpec(&brotli_Compressor_spec); + if (compressor_type == NULL) { + RETURN_NULL; + } + PyModule_AddObject(m, "Compressor", compressor_type); + + PyObject* decompressor_type = PyType_FromSpec(&brotli_Decompressor_spec); + if (decompressor_type == NULL) { + RETURN_NULL; + } + PyModule_AddObject(m, "Decompressor", decompressor_type); +#else if (PyType_Ready(&brotli_CompressorType) < 0) { RETURN_NULL; } @@ -1098,6 +1138,7 @@ } Py_INCREF(&brotli_DecompressorType); PyModule_AddObject(m, "Decompressor", (PyObject*)&brotli_DecompressorType); +#endif PyModule_AddIntConstant(m, "MODE_GENERIC", (int)BROTLI_MODE_GENERIC); PyModule_AddIntConstant(m, "MODE_TEXT", (int)BROTLI_MODE_TEXT);