/opt/alt/python310/lib64/python3.10/email
# Copyright (C) 2001-2006 Python Software Foundation # Author: Barry Warsaw # Contact: email-sig@python.org """Various types of useful iterators and generators.""" __all__ = [ 'body_line_iterator', 'typed_subpart_iterator', 'walk', # Do not include _structure() since it's part of the debugging API. ] import sys from io import StringIO # This function will become a method of the Message class def walk(self): """Walk over the message tree, yielding each subpart. The walk is performed in depth-first order. This method is a generator. """ yield self if self.is_multipart(): for subpart in self.get_payload(): yield from subpart.walk() # These two functions are imported into the Iterators.py interface module. def body_line_iterator(msg, decode=False): """Iterate over the parts, returning string payloads line-by-line. Optional decode (default False) is passed through to .get_payload(). """ for subpart in msg.walk(): payload = subpart.get_payload(decode=decode) if isinstance(payload, str): yield from StringIO(payload) def typed_subpart_iterator(msg, maintype='text', subtype=None): """Iterate over the subparts with a given MIME type. Use `maintype' as the main MIME type to match against; this defaults to "text". Optional `subtype' is the MIME subtype to match against; if omitted, only the main type is matched. """ for subpart in msg.walk(): if subpart.get_content_maintype() == maintype: if subtype is None or subpart.get_content_subtype() == subtype: yield subpart def _structure(msg, fp=None, level=0, include_default=False): """A handy debugging aid""" if fp is None: fp = sys.stdout tab = ' ' * (level * 4) print(tab + msg.get_content_type(), end='', file=fp) if include_default: print(' [%s]' % msg.get_default_type(), file=fp) else: print(file=fp) if msg.is_multipart(): for subpart in msg.get_payload(): _structure(subpart, fp, level+1, include_default)
.
Edit
..
Edit
__init__.py
Edit
__pycache__
Edit
_encoded_words.py
Edit
_header_value_parser.py
Edit
_parseaddr.py
Edit
_policybase.py
Edit
architecture.rst
Edit
base64mime.py
Edit
charset.py
Edit
contentmanager.py
Edit
encoders.py
Edit
errors.py
Edit
feedparser.py
Edit
generator.py
Edit
header.py
Edit
headerregistry.py
Edit
iterators.py
Edit
message.py
Edit
mime
Edit
parser.py
Edit
policy.py
Edit
quoprimime.py
Edit
utils.py
Edit