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

Method write

python/pyfory/struct.py:597–643  ·  view source on GitHub ↗
(self, write_context: Buffer, value)

Source from the content-addressed store, hash-verified

595 setattr(obj, interned_name, field_value)
596
597 def write(self, write_context: Buffer, value):
598 if not self.type_resolver.compatible:
599 write_context.write_int32(self._hash)
600 value_dict = value.__dict__ if not self._has_slots else None
601 if value_dict is not None:
602 if self.type_resolver.compatible:
603 for index, field_name in enumerate(self._field_names):
604 interned_name = self._field_name_interned[field_name]
605 field_value = value_dict.get(interned_name)
606 serializer = self._serializers[index]
607 is_nullable = self._nullable_fields.get(field_name, False)
608 is_dynamic = self._dynamic_fields.get(field_name, False)
609 is_tracking_ref = self._ref_fields.get(field_name, False)
610 is_basic = self._basic_field_flags[index]
611 self._write_field_value(write_context, serializer, field_value, is_nullable, is_dynamic, is_basic, is_tracking_ref)
612 else:
613 for index, field_name in enumerate(self._field_names):
614 interned_name = self._field_name_interned[field_name]
615 field_value = value_dict[interned_name]
616 serializer = self._serializers[index]
617 is_nullable = self._nullable_fields.get(field_name, False)
618 is_dynamic = self._dynamic_fields.get(field_name, False)
619 is_tracking_ref = self._ref_fields.get(field_name, False)
620 is_basic = self._basic_field_flags[index]
621 self._write_field_value(write_context, serializer, field_value, is_nullable, is_dynamic, is_basic, is_tracking_ref)
622 else:
623 if self.type_resolver.compatible:
624 for index, field_name in enumerate(self._field_names):
625 interned_name = self._field_name_interned[field_name]
626 field_value = getattr(value, interned_name, None)
627 serializer = self._serializers[index]
628 is_nullable = self._nullable_fields.get(field_name, False)
629 is_dynamic = self._dynamic_fields.get(field_name, False)
630 is_tracking_ref = self._ref_fields.get(field_name, False)
631 is_basic = self._basic_field_flags[index]
632 self._write_field_value(write_context, serializer, field_value, is_nullable, is_dynamic, is_basic, is_tracking_ref)
633 else:
634 for index, field_name in enumerate(self._field_names):
635 interned_name = self._field_name_interned[field_name]
636 field_value = getattr(value, interned_name)
637 serializer = self._serializers[index]
638 is_nullable = self._nullable_fields.get(field_name, False)
639 is_dynamic = self._dynamic_fields.get(field_name, False)
640 is_tracking_ref = self._ref_fields.get(field_name, False)
641 is_basic = self._basic_field_flags[index]
642 self._write_field_value(write_context, serializer, field_value, is_nullable, is_dynamic, is_basic, is_tracking_ref)
643 write_context.try_flush()
644
645 def read(self, read_context):
646 if read_context.policy is not DEFAULT_POLICY:

Callers

nothing calls this directly

Calls 4

_write_field_valueMethod · 0.95
getMethod · 0.65
write_int32Method · 0.45
try_flushMethod · 0.45

Tested by

no test coverage detected