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

Method _install_message

tools/python-3.11.9-amd64/Lib/mailbox.py:1382–1487  ·  view source on GitHub ↗

Write message contents and return (start, stop).

(self, message)

Source from the content-addressed store, hash-verified

1380 f.write(linesep + b'\037')
1381
1382 def _install_message(self, message):
1383 """Write message contents and return (start, stop)."""
1384 start = self._file.tell()
1385 if isinstance(message, BabylMessage):
1386 special_labels = []
1387 labels = []
1388 for label in message.get_labels():
1389 if label in self._special_labels:
1390 special_labels.append(label)
1391 else:
1392 labels.append(label)
1393 self._file.write(b'1')
1394 for label in special_labels:
1395 self._file.write(b', ' + label.encode())
1396 self._file.write(b',,')
1397 for label in labels:
1398 self._file.write(b' ' + label.encode() + b',')
1399 self._file.write(linesep)
1400 else:
1401 self._file.write(b'1,,' + linesep)
1402 if isinstance(message, email.message.Message):
1403 orig_buffer = io.BytesIO()
1404 orig_generator = email.generator.BytesGenerator(orig_buffer, False, 0)
1405 orig_generator.flatten(message)
1406 orig_buffer.seek(0)
1407 while True:
1408 line = orig_buffer.readline()
1409 self._file.write(line.replace(b'\n', linesep))
1410 if line == b'\n' or not line:
1411 break
1412 self._file.write(b'*** EOOH ***' + linesep)
1413 if isinstance(message, BabylMessage):
1414 vis_buffer = io.BytesIO()
1415 vis_generator = email.generator.BytesGenerator(vis_buffer, False, 0)
1416 vis_generator.flatten(message.get_visible())
1417 while True:
1418 line = vis_buffer.readline()
1419 self._file.write(line.replace(b'\n', linesep))
1420 if line == b'\n' or not line:
1421 break
1422 else:
1423 orig_buffer.seek(0)
1424 while True:
1425 line = orig_buffer.readline()
1426 self._file.write(line.replace(b'\n', linesep))
1427 if line == b'\n' or not line:
1428 break
1429 while True:
1430 buffer = orig_buffer.read(4096) # Buffer size is arbitrary.
1431 if not buffer:
1432 break
1433 self._file.write(buffer.replace(b'\n', linesep))
1434 elif isinstance(message, (bytes, str, io.StringIO)):
1435 if isinstance(message, io.StringIO):
1436 warnings.warn("Use of StringIO input is deprecated, "
1437 "use BytesIO instead", DeprecationWarning, 3)
1438 message = message.getvalue()
1439 if isinstance(message, str):

Callers 1

_append_messageMethod · 0.45

Calls 15

seekMethod · 0.95
readMethod · 0.95
flattenMethod · 0.80
get_visibleMethod · 0.80
_string_to_bytesMethod · 0.80
endswithMethod · 0.80
typeClass · 0.50
tellMethod · 0.45
get_labelsMethod · 0.45
appendMethod · 0.45
writeMethod · 0.45
encodeMethod · 0.45

Tested by

no test coverage detected