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

Method write

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

Source from the content-addressed store, hash-verified

556 return type_id
557
558 def write(self, buffer, value):
559 actual_type_id = self._array_type_id(value)
560 if actual_type_id != self.type_id:
561 raise TypeError(f"array.array typecode {value.typecode!r} maps to type id {actual_type_id}, expected {self.type_id}")
562 view = memoryview(value)
563 assert view.itemsize == self.itemsize
564 assert view.c_contiguous # TODO handle contiguous
565 nbytes = len(value) * self.itemsize
566 buffer.write_var_uint32(nbytes)
567 if is_little_endian or self.itemsize == 1:
568 buffer.write_buffer(value)
569 else:
570 # Swap bytes on big-endian machines for multi-byte types
571 swapped = array.array(self.typecode, value)
572 swapped.byteswap()
573 buffer.write_buffer(swapped)
574
575 def read(self, buffer):
576 data = buffer.read_bytes_and_size()

Callers

nothing calls this directly

Calls 3

_array_type_idMethod · 0.95
write_var_uint32Method · 0.45
arrayMethod · 0.45

Tested by

no test coverage detected