git.net

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Python-Dev] Fixing the ctypes implementation of the PEP3118 buffer interface


On 4/14/2019 2:54 AM, Eric Wieser wrote:
> I've recently been adding better support to Numpy 1.16 for
> interoperability with ctypes.
> 
> In doing so, I came across two bugs in the implementation of the
> PEP3118 buffer interface within ctypes, affecting `Structure`s and
> arrays. Rather than repeating the issue summaries here, I've linked
> their tracker issues below, and the patches I filed to fix them.

>   * https://bugs.python.org/issue32782 (patch:
> https://github.com/python/cpython/pull/5576)

memoryview(object).itemsize is 0 when object is ctypes structure and 
format.  C expert needed to review 30-line patch, most of which is error 
handling.  Patch includes new tests and blurb.

>   * https://bugs.python.org/issue32780 (patch:
> https://github.com/python/cpython/pull/5561)

A partial fix for a more complicated memoryview, ctypes structure and 
format, and itemsize situation.

> I've seen little to no response on either the bug tracker or the
> github PRs regarding these, so at the recommendation of the "Lifecycle
> of a Pull Request" am emailing this list.

The problem is that the currently listed ctypes and memoryview experts 
are not currently active.

> Without these fixes, numpy has no choice but to ignore the broken
> buffer interface that ctypes provides, and instead try to parse the
> ctypes types manually. The sooner this makes a CPython release, the
> sooner numpy can remove those workarounds.

-- 
Terry Jan Reedy