| 995 | |
| 996 | |
| 997 | class PickleBufferObject(BufferObject): |
| 998 | __slots__ = ("pickle_buffer",) |
| 999 | |
| 1000 | def __init__(self, pickle_buffer): |
| 1001 | self.pickle_buffer = pickle_buffer |
| 1002 | |
| 1003 | def total_bytes(self) -> int: |
| 1004 | return len(self.pickle_buffer.raw()) |
| 1005 | |
| 1006 | def write_to(self, stream): |
| 1007 | raw = self.pickle_buffer.raw() |
| 1008 | if hasattr(stream, "write_buffer"): |
| 1009 | stream.write_buffer(raw) |
| 1010 | else: |
| 1011 | stream.write(bytes(raw) if isinstance(raw, memoryview) else raw) |
| 1012 | |
| 1013 | def getbuffer(self) -> memoryview: |
| 1014 | raw = self.pickle_buffer.raw() |
| 1015 | if isinstance(raw, memoryview): |
| 1016 | return raw |
| 1017 | return memoryview(bytes(raw)) |
| 1018 | |
| 1019 | |
| 1020 | class NDArrayBufferObject(BufferObject): |