Issue 46593: memoryview lacks support for half floats (original) (raw)

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 "", line 1, in list(memoryview(a)) NotImplementedError: memoryview: format e not supported

memoryview(a.tobytes()).cast('e').tolist() Traceback (most recent call last): File "", line 1, in memoryview(a.tobytes()).cast('e').tolist() ValueError: memoryview: destination format must be a native single character format prefixed with an optional '@'