[Python-checkins] python/dist/src/Lib/email Iterators.py,1.12,1.13
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
+ 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.
! # 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