MCPcopy Create free account
hub / github.com/RT-Thread/env-windows / write

Method write

tools/python-3.11.9-amd64/Lib/plistlib.py:637–680  ·  view source on GitHub ↗
(self, value)

Source from the content-addressed store, hash-verified

635 self._skipkeys = skipkeys
636
637 def write(self, value):
638
639 # Flattened object list:
640 self._objlist = []
641
642 # Mappings from object->objectid
643 # First dict has (type(object), object) as the key,
644 # second dict is used when object is not hashable and
645 # has id(object) as the key.
646 self._objtable = {}
647 self._objidtable = {}
648
649 # Create list of all objects in the plist
650 self._flatten(value)
651
652 # Size of object references in serialized containers
653 # depends on the number of objects in the plist.
654 num_objects = len(self._objlist)
655 self._object_offsets = [0]*num_objects
656 self._ref_size = _count_to_size(num_objects)
657
658 self._ref_format = _BINARY_FORMAT[self._ref_size]
659
660 # Write file header
661 self._fp.write(b'bplist00')
662
663 # Write object list
664 for obj in self._objlist:
665 self._write_object(obj)
666
667 # Write refnum->object offset table
668 top_object = self._getrefnum(value)
669 offset_table_offset = self._fp.tell()
670 offset_size = _count_to_size(offset_table_offset)
671 offset_format = '>' + _BINARY_FORMAT[offset_size] * num_objects
672 self._fp.write(struct.pack(offset_format, *self._object_offsets))
673
674 # Write trailer
675 sort_version = 0
676 trailer = (
677 sort_version, offset_size, self._ref_size, num_objects,
678 top_object, offset_table_offset
679 )
680 self._fp.write(struct.pack('>5xBBBQQQ', *trailer))
681
682 def _flatten(self, value):
683 # First check if the object is in the object table, not used for

Callers

nothing calls this directly

Calls 7

_flattenMethod · 0.95
_write_objectMethod · 0.95
_getrefnumMethod · 0.95
_count_to_sizeFunction · 0.85
writeMethod · 0.45
tellMethod · 0.45
packMethod · 0.45

Tested by

no test coverage detected