(self, buffer, value)
| 858 | |
| 859 | class NDArraySerializer(Serializer): |
| 860 | def write(self, buffer, value): |
| 861 | # Write concrete 1D primitive ndarray using type id + bytes payload. |
| 862 | dtype_info = _np_dtypes_dict.get(value.dtype) |
| 863 | if dtype_info is None or value.ndim != 1: |
| 864 | raise NotImplementedError(f"Unsupported ndarray: dtype={value.dtype}, ndim={value.ndim}") |
| 865 | itemsize, _typecode, _ftype, type_id = dtype_info |
| 866 | view = memoryview(value) |
| 867 | nbytes = len(value) * itemsize |
| 868 | buffer.write_uint8(type_id) |
| 869 | buffer.write_var_uint32(nbytes) |
| 870 | if value.dtype == np.dtype("bool") or not view.c_contiguous: |
| 871 | if not is_little_endian and itemsize > 1: |
| 872 | buffer.write_bytes(value.astype(value.dtype.newbyteorder("<")).tobytes()) |
| 873 | else: |
| 874 | buffer.write_bytes(value.tobytes()) |
| 875 | elif is_little_endian or itemsize == 1: |
| 876 | buffer.write_buffer(value) |
| 877 | else: |
| 878 | buffer.write_bytes(value.astype(value.dtype.newbyteorder("<")).tobytes()) |
| 879 | |
| 880 | def read(self, buffer): |
| 881 | type_id = buffer.read_uint8() |
nothing calls this directly
no test coverage detected