MCPcopy
hub / github.com/corpnewt/gibMacOS / write

Method write

Scripts/plist.py:476–519  ·  view source on GitHub ↗
(self, value)

Source from the content-addressed store, hash-verified

474 self._skipkeys = skipkeys
475
476 def write(self, value):
477
478 # Flattened object list:
479 self._objlist = []
480
481 # Mappings from object->objectid
482 # First dict has (type(object), object) as the key,
483 # second dict is used when object is not hashable and
484 # has id(object) as the key.
485 self._objtable = {}
486 self._objidtable = {}
487
488 # Create list of all objects in the plist
489 self._flatten(value)
490
491 # Size of object references in serialized containers
492 # depends on the number of objects in the plist.
493 num_objects = len(self._objlist)
494 self._object_offsets = [0]*num_objects
495 self._ref_size = _count_to_size(num_objects)
496
497 self._ref_format = _BINARY_FORMAT[self._ref_size]
498
499 # Write file header
500 self._fp.write(b'bplist00')
501
502 # Write object list
503 for obj in self._objlist:
504 self._write_object(obj)
505
506 # Write refnum->object offset table
507 top_object = self._getrefnum(value)
508 offset_table_offset = self._fp.tell()
509 offset_size = _count_to_size(offset_table_offset)
510 offset_format = '>' + _BINARY_FORMAT[offset_size] * num_objects
511 self._fp.write(struct.pack(offset_format, *self._object_offsets))
512
513 # Write trailer
514 sort_version = 0
515 trailer = (
516 sort_version, offset_size, self._ref_size, num_objects,
517 top_object, offset_table_offset
518 )
519 self._fp.write(struct.pack('>5xBBBQQQ', *trailer))
520
521 def _flatten(self, value):
522 # First check if the object is in the object table, not used for

Callers 12

diskpart_flagMethod · 0.80
diskpart_eraseMethod · 0.80
_stream_outputMethod · 0.80
dumpFunction · 0.80
_write_sizeMethod · 0.80
_write_objectMethod · 0.80
grabMethod · 0.80
cprintMethod · 0.80
headMethod · 0.80
infoMethod · 0.80
_process_hookFunction · 0.80
stream_to_fileMethod · 0.80

Calls 4

_flattenMethod · 0.95
_write_objectMethod · 0.95
_getrefnumMethod · 0.95
_count_to_sizeFunction · 0.85

Tested by

no test coverage detected