mirror of
https://github.com/python/cpython.git
synced 2025-10-09 16:34:44 +00:00

testcleanup directive is new as of 1.1, and we are currently running 1.0.7. But using testsetup works just as well, and avoids the unknown directive error when building the docs.
77 lines
2.6 KiB
ReStructuredText
77 lines
2.6 KiB
ReStructuredText
:mod:`email.iterators`: Iterators
|
|
---------------------------------
|
|
|
|
.. module:: email.iterators
|
|
:synopsis: Iterate over a message object tree.
|
|
|
|
|
|
Iterating over a message object tree is fairly easy with the
|
|
:meth:`Message.walk` method. The :mod:`email.iterators` module provides some
|
|
useful higher level iterations over message object trees.
|
|
|
|
|
|
.. function:: body_line_iterator(msg, decode=False)
|
|
|
|
This iterates over all the payloads in all the subparts of *msg*, returning the
|
|
string payloads line-by-line. It skips over all the subpart headers, and it
|
|
skips over any subpart with a payload that isn't a Python string. This is
|
|
somewhat equivalent to reading the flat text representation of the message from
|
|
a file using :meth:`readline`, skipping over all the intervening headers.
|
|
|
|
Optional *decode* is passed through to :meth:`Message.get_payload`.
|
|
|
|
|
|
.. function:: typed_subpart_iterator(msg, maintype='text', subtype=None)
|
|
|
|
This iterates over all the subparts of *msg*, returning only those subparts that
|
|
match the MIME type specified by *maintype* and *subtype*.
|
|
|
|
Note that *subtype* is optional; if omitted, then subpart MIME type matching is
|
|
done only with the main type. *maintype* is optional too; it defaults to
|
|
:mimetype:`text`.
|
|
|
|
Thus, by default :func:`typed_subpart_iterator` returns each subpart that has a
|
|
MIME type of :mimetype:`text/\*`.
|
|
|
|
|
|
The following function has been added as a useful debugging tool. It should
|
|
*not* be considered part of the supported public interface for the package.
|
|
|
|
.. function:: _structure(msg, fp=None, level=0, include_default=False)
|
|
|
|
Prints an indented representation of the content types of the message object
|
|
structure. For example:
|
|
|
|
.. testsetup::
|
|
|
|
>>> import email
|
|
>>> from email.iterators import _structure
|
|
>>> somefile = open('Lib/test/test_email/data/msg_02.txt')
|
|
|
|
.. doctest::
|
|
|
|
>>> msg = email.message_from_file(somefile)
|
|
>>> _structure(msg)
|
|
multipart/mixed
|
|
text/plain
|
|
text/plain
|
|
multipart/digest
|
|
message/rfc822
|
|
text/plain
|
|
message/rfc822
|
|
text/plain
|
|
message/rfc822
|
|
text/plain
|
|
message/rfc822
|
|
text/plain
|
|
message/rfc822
|
|
text/plain
|
|
text/plain
|
|
|
|
.. testsetup::
|
|
|
|
>>> somefile.close()
|
|
|
|
Optional *fp* is a file-like object to print the output to. It must be
|
|
suitable for Python's :func:`print` function. *level* is used internally.
|
|
*include_default*, if true, prints the default type as well.
|