MCPcopy Index your code
hub / github.com/RustPython/RustPython / _write_object

Method _write_object

Lib/plistlib.py:769–868  ·  view source on GitHub ↗
(self, value)

Source from the content-addressed store, hash-verified

767 self._fp.write(struct.pack('>BBQ', token | 0xF, 0x13, size))
768
769 def _write_object(self, value):
770 ref = self._getrefnum(value)
771 self._object_offsets[ref] = self._fp.tell()
772 if value is None:
773 self._fp.write(b'\x00')
774
775 elif value is False:
776 self._fp.write(b'\x08')
777
778 elif value is True:
779 self._fp.write(b'\x09')
780
781 elif isinstance(value, int):
782 if value < 0:
783 try:
784 self._fp.write(struct.pack('>Bq', 0x13, value))
785 except struct.error:
786 raise OverflowError(value) from None
787 elif value < 1 << 8:
788 self._fp.write(struct.pack('>BB', 0x10, value))
789 elif value < 1 << 16:
790 self._fp.write(struct.pack('>BH', 0x11, value))
791 elif value < 1 << 32:
792 self._fp.write(struct.pack('>BL', 0x12, value))
793 elif value < 1 << 63:
794 self._fp.write(struct.pack('>BQ', 0x13, value))
795 elif value < 1 << 64:
796 self._fp.write(b'\x14' + value.to_bytes(16, 'big', signed=True))
797 else:
798 raise OverflowError(value)
799
800 elif isinstance(value, float):
801 self._fp.write(struct.pack('>Bd', 0x23, value))
802
803 elif isinstance(value, datetime.datetime):
804 if self._aware_datetime:
805 dt = value.astimezone(datetime.UTC)
806 offset = dt - datetime.datetime(2001, 1, 1, tzinfo=datetime.UTC)
807 f = offset.total_seconds()
808 else:
809 f = (value - datetime.datetime(2001, 1, 1)).total_seconds()
810 self._fp.write(struct.pack('>Bd', 0x33, f))
811
812 elif isinstance(value, (bytes, bytearray)):
813 self._write_size(0x40, len(value))
814 self._fp.write(value)
815
816 elif isinstance(value, str):
817 try:
818 t = value.encode('ascii')
819 self._write_size(0x50, len(value))
820 except UnicodeEncodeError:
821 t = value.encode('utf-16be')
822 self._write_size(0x60, len(t) // 2)
823
824 self._fp.write(t)
825
826 elif isinstance(value, UID):

Callers 1

writeMethod · 0.95

Calls 15

_getrefnumMethod · 0.95
_write_sizeMethod · 0.95
isinstanceFunction · 0.85
lenFunction · 0.85
sortedFunction · 0.85
to_bytesMethod · 0.80
astimezoneMethod · 0.80
datetimeMethod · 0.80
total_secondsMethod · 0.80
tellMethod · 0.45
writeMethod · 0.45
packMethod · 0.45

Tested by

no test coverage detected