| 1018 | |
| 1019 | |
| 1020 | class NDArrayBufferObject(BufferObject): |
| 1021 | __slots__ = ("array", "dtype", "shape") |
| 1022 | |
| 1023 | def __init__(self, array): |
| 1024 | self.array = array |
| 1025 | self.dtype = array.dtype |
| 1026 | self.shape = array.shape |
| 1027 | |
| 1028 | def total_bytes(self) -> int: |
| 1029 | return self.array.nbytes |
| 1030 | |
| 1031 | def write_to(self, stream): |
| 1032 | data = self.array.tobytes() |
| 1033 | if hasattr(stream, "write_buffer"): |
| 1034 | stream.write_buffer(data) |
| 1035 | else: |
| 1036 | stream.write(data) |
| 1037 | |
| 1038 | def getbuffer(self) -> memoryview: |
| 1039 | if self.array.flags.c_contiguous: |
| 1040 | return memoryview(self.array.data) |
| 1041 | return memoryview(self.array.tobytes()) |
| 1042 | |
| 1043 | |
| 1044 | class StatefulSerializer(Serializer): |