MCPcopy Index your code
hub / github.com/python/cpython / _install_message

Method _install_message

Lib/mailbox.py:1463–1568  ·  view source on GitHub ↗

Write message contents and return (start, stop).

(self, message)

Source from the content-addressed store, hash-verified

1461 f.write(linesep + b'\037')
1462
1463 def _install_message(self, message):
1464 """Write message contents and return (start, stop)."""
1465 start = self._file.tell()
1466 if isinstance(message, BabylMessage):
1467 special_labels = []
1468 labels = []
1469 for label in message.get_labels():
1470 if label in self._special_labels:
1471 special_labels.append(label)
1472 else:
1473 labels.append(label)
1474 self._file.write(b'1')
1475 for label in special_labels:
1476 self._file.write(b', ' + label.encode())
1477 self._file.write(b',,')
1478 for label in labels:
1479 self._file.write(b' ' + label.encode() + b',')
1480 self._file.write(linesep)
1481 else:
1482 self._file.write(b'1,,' + linesep)
1483 if isinstance(message, email.message.Message):
1484 orig_buffer = io.BytesIO()
1485 orig_generator = email.generator.BytesGenerator(orig_buffer, False, 0)
1486 orig_generator.flatten(message)
1487 orig_buffer.seek(0)
1488 while True:
1489 line = orig_buffer.readline()
1490 self._file.write(line.replace(b'\n', linesep))
1491 if line == b'\n' or not line:
1492 break
1493 self._file.write(b'*** EOOH ***' + linesep)
1494 if isinstance(message, BabylMessage):
1495 vis_buffer = io.BytesIO()
1496 vis_generator = email.generator.BytesGenerator(vis_buffer, False, 0)
1497 vis_generator.flatten(message.get_visible())
1498 while True:
1499 line = vis_buffer.readline()
1500 self._file.write(line.replace(b'\n', linesep))
1501 if line == b'\n' or not line:
1502 break
1503 else:
1504 orig_buffer.seek(0)
1505 while True:
1506 line = orig_buffer.readline()
1507 self._file.write(line.replace(b'\n', linesep))
1508 if line == b'\n' or not line:
1509 break
1510 while True:
1511 buffer = orig_buffer.read(4096) # Buffer size is arbitrary.
1512 if not buffer:
1513 break
1514 self._file.write(buffer.replace(b'\n', linesep))
1515 elif isinstance(message, (bytes, str, io.StringIO)):
1516 if isinstance(message, io.StringIO):
1517 warnings.warn("Use of StringIO input is deprecated, "
1518 "use BytesIO instead", DeprecationWarning, 3)
1519 message = message.getvalue()
1520 if isinstance(message, str):

Callers 1

_append_messageMethod · 0.45

Calls 15

seekMethod · 0.95
readMethod · 0.95
get_visibleMethod · 0.80
_string_to_bytesMethod · 0.80
tellMethod · 0.45
get_labelsMethod · 0.45
appendMethod · 0.45
writeMethod · 0.45
encodeMethod · 0.45
flattenMethod · 0.45
readlineMethod · 0.45
replaceMethod · 0.45

Tested by

no test coverage detected