Excellent! I'm rewriting the zlib module and the code becomes much cleaner with this patch.
There is one problem left -- Py_buffer doesn't support default value at all.
Such code
/*[clinic input]
zlib.compressobj
zdict: Py_buffer = unspecified
[clinic start generated code]*/
produces error:
When you specify a named constant ('unspecified') as your default value,
you MUST specify a valid c_default.
But this code
/*[clinic input]
zlib.compressobj
zdict: Py_buffer(c_default="{NULL, NULL}") = unspecified
[clinic start generated code]*/
produces error too:
The only legal default value for Py_buffer is None.
And specifying c_default=None returns first error.