/usr/lib/python2.6/email
NameSizeModeActions
mime/-0755rm
base64mime.py57920644editdlrm
base64mime.pyc53360644editdlrm
base64mime.pyo53360644editdlrm
charset.py157910644editdlrm
charset.pyc134140644editdlrm
charset.pyo133650644editdlrm
encoders.py23020644editdlrm
encoders.pyc24080644editdlrm
encoders.pyo24080644editdlrm
errors.py16280644editdlrm
errors.pyc34990644editdlrm
errors.pyo34990644editdlrm
feedparser.py206060644editdlrm
feedparser.pyc112680644editdlrm
feedparser.pyo111710644editdlrm
generator.py140620644editdlrm
generator.pyc103460644editdlrm
generator.pyo103460644editdlrm
header.py217380644editdlrm
header.pyc134900644editdlrm
header.pyo134210644editdlrm
iterators.py22020644editdlrm
iterators.pyc23830644editdlrm
iterators.pyo23830644editdlrm
message.py304460644editdlrm
message.pyc285610644editdlrm
message.pyo285610644editdlrm
parser.py33000644editdlrm
parser.pyc38370644editdlrm
parser.pyo38370644editdlrm
quoprimime.py108390644editdlrm
quoprimime.pyc89090644editdlrm
quoprimime.pyo89090644editdlrm
utils.py98190644editdlrm
utils.pyc90360644editdlrm
utils.pyo90360644editdlrm
_parseaddr.py149810644editdlrm
_parseaddr.pyc136490644editdlrm
_parseaddr.pyo136490644editdlrm
__init__.py28560644editdlrm
__init__.pyc28640644editdlrm
__init__.pyo28640644editdlrm
Edit: /usr/lib/python2.6/email/iterators.py (2202B)
# 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 cStringIO 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(): for subsubpart in subpart.walk(): yield subsubpart # 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, basestring): for line in StringIO(payload): yield line 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 >> fp, tab + msg.get_content_type(), if include_default: print >> fp, '[%s]' % msg.get_default_type() else: print >> fp if msg.is_multipart(): for subpart in msg.get_payload(): _structure(subpart, fp, level+1, include_default)