[Python-checkins] python/dist/src/Lib/email Iterators.py,1.12,1.13 (original) (raw)

bwarsaw at users.sourceforge.net bwarsaw at users.sourceforge.net
Sat May 8 23:42:39 EDT 2004


Update of /cvsroot/python/python/dist/src/Lib/email In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv13144

Modified Files: Iterators.py Log Message: Update to Python 2.3, getting rid of backward compatiblity crud. We don't need the _compat21 or _compat22 modules either.

Index: Iterators.py

RCS file: /cvsroot/python/python/dist/src/Lib/email/Iterators.py,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -d -r1.12 -r1.13 *** Iterators.py 1 Oct 2002 00:51:47 -0000 1.12 --- Iterators.py 9 May 2004 03:42:37 -0000 1.13


*** 1,4 **** ! # Copyright (C) 2001,2002 Python Software Foundation ! # Author: barry at zope.com (Barry Warsaw)

"""Various types of useful iterators and generators. --- 1,4 ---- ! # Copyright (C) 2001-2004 Python Software Foundation ! # Author: Barry Warsaw <barry at python.org>

"""Various types of useful iterators and generators.


*** 6,25 ****

import sys

! try: ! from email._compat22 import body_line_iterator, typed_subpart_iterator ! except SyntaxError: ! # Python 2.1 doesn't have generators ! from email._compat21 import body_line_iterator, typed_subpart_iterator

! def _structure(msg, fp=None, level=0): """A handy debugging aid""" if fp is None: fp = sys.stdout tab = ' ' * (level * 4) ! print >> fp, tab + msg.get_content_type() if msg.is_multipart(): for subpart in msg.get_payload(): ! _structure(subpart, fp, level+1) --- 6,67 ----

import sys

! ! ! # 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. ! # The Python 2.2 version uses generators for efficiency. ! 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 '[%s]' % msg.get_default_type() ! else: ! print if msg.is_multipart(): for subpart in msg.get_payload(): ! _structure(subpart, fp, level+1, include_default)



More information about the Python-checkins mailing list