New submission from Antoine Pitrou <pit...@free.fr>:

The struct module has support for half-floats (the "e" format code) but support 
is not fully enabled in the memoryview object.

Let's contrast float32 (the "f" format code), which you can cast to, and read 
as Python objects:

>>> a = np.array([0.0, -1.5], np.float32())
>>> list(memoryview(a))
[0.0, -1.5]
>>> memoryview(a.tobytes()).cast('f').tolist()
[0.0, -1.5]

and float16, where support is minimal (casting forbidden, reading as Python 
objects unimplemented):

>>> a = np.array([0.0, -1.5], np.float16())
>>> list(memoryview(a))
Traceback (most recent call last):
  File "<ipython-input-15-102982f8ac8e>", line 1, in <module>
    list(memoryview(a))
NotImplementedError: memoryview: format e not supported

>>> memoryview(a.tobytes()).cast('e').tolist()
Traceback (most recent call last):
  File "<ipython-input-25-78df215a7360>", line 1, in <module>
    memoryview(a.tobytes()).cast('e').tolist()
ValueError: memoryview: destination format must be a native single character 
format prefixed with an optional '@'

----------
components: Interpreter Core
messages: 412205
nosy: mark.dickinson, meador.inge, pitrou
priority: normal
severity: normal
stage: needs patch
status: open
title: memoryview lacks support for half floats
type: enhancement
versions: Python 3.11

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

Reply via email to