Terry J. Reedy <tjre...@udel.edu> added the comment:

This issue is about the itemsize attribute of instances of the built-in 
memoryview class.  Ctypes in only involved in providing format information.  
Hence the nosy additions.

On Win10 with 3.8, ctypes has no uint attributes.  Using 'c_int32' instead, I 
see the same behavior (itemsize 0 for empty structure).

About itemsize, https://www.python.org/dev/peps/pep-3118/ says

"This is a storage for the itemsize (in bytes) of each element of the shared 
memory. It is technically un-necessary as it can be obtained using 
PyBuffer_SizeFromFormat, however an exporter may know this information without 
parsing the format string and it is necessary to know the itemsize for proper 
interpretation of striding. Therefore, storing it is more convenient and 
faster."

The first line could be seen as implying that itemsize is undefined if there 
are no items (and as justifying numbytes/numitems otherwise).  The 0 return 
could be seen as equivalent to a None return from a python-coded function.  If 
so, it is not a bug, and there might be code that would break if it is changed.

On the other hand, the next lines imply that itemsize is *usually*, though not 
necessarily, a cache for PyBuffer_SizeFromFormat.  This could be seen as 
implying that in the absence of other information, the itemsize should be 
calculated from the format, making 0 a bug.

----------
components: +Interpreter Core -ctypes
nosy: +skrah, teoliphant, terry.reedy
versions: +Python 3.8 -Python 3.6

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue32782>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to