MCPcopy Index your code
hub / github.com/apache/fory / write

Method write

python/pyfory/serializer.py:734–759  ·  view source on GitHub ↗
(self, buffer, value)

Source from the content-addressed store, hash-verified

732 super().__init__(type_resolver, cls)
733
734 def write(self, buffer, value):
735 try:
736 itemsize, ftype, type_id = typecode_dict[value.typecode]
737 except KeyError as exc:
738 raise TypeError(f"Unsupported array.array typecode {value.typecode!r}") from exc
739 if value.itemsize != itemsize:
740 raise TypeError(f"array.array typecode {value.typecode!r} has itemsize {value.itemsize}, expected {itemsize}")
741 view = memoryview(value)
742 nbytes = len(value) * itemsize
743 buffer.write_uint8(type_id)
744 buffer.write_var_uint32(nbytes)
745 if not view.c_contiguous:
746 data = value.tobytes()
747 if not is_little_endian and itemsize > 1:
748 swapped = array.array(value.typecode, [])
749 swapped.frombytes(data)
750 swapped.byteswap()
751 data = swapped.tobytes()
752 buffer.write_bytes(data)
753 elif is_little_endian or itemsize == 1:
754 buffer.write_buffer(value)
755 else:
756 # Swap bytes on big-endian machines for multi-byte types
757 swapped = array.array(value.typecode, value)
758 swapped.byteswap()
759 buffer.write_buffer(swapped)
760
761 def read(self, buffer):
762 type_id = buffer.read_uint8()

Callers

nothing calls this directly

Calls 4

write_uint8Method · 0.45
write_var_uint32Method · 0.45
arrayMethod · 0.45
write_bytesMethod · 0.45

Tested by

no test coverage detected