ó ù^‚Rc@skdZdddgZddlZddlmZd„Zed„Zd dd „Z dd ed „Z dS( s1Various types of useful iterators and generators.tbody_line_iteratorttyped_subpart_iteratortwalkiÿÿÿÿN(tStringIOccsK|V|jƒrGx3|jƒD]"}x|jƒD] }|Vq1WqWndS(s‰Walk over the message tree, yielding each subpart. The walk is performed in depth-first order. This method is a generator. N(t is_multipartt get_payloadR(tselftsubpartt subsubpart((s%/usr/lib/python2.7/email/iterators.pyRs  ccs[xT|jƒD]F}|jd|ƒ}t|tƒr xt|ƒD] }|VqAWq q WdS(sŽIterate over the parts, returning string payloads line-by-line. Optional decode (default False) is passed through to .get_payload(). tdecodeN(RRt isinstancet basestringR(tmsgR Rtpayloadtline((s%/usr/lib/python2.7/email/iterators.pyR#s ttextccsVxO|jƒD]A}|jƒ|kr |dksC|jƒ|krN|VqNq q WdS(sø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. N(Rtget_content_maintypetNonetget_content_subtype(R tmaintypetsubtypeR((s%/usr/lib/python2.7/email/iterators.pyR/sicCsœ|dkrtj}nd|d}|||jƒI|rW|d|jƒIJn|J|jƒr˜x.|jƒD]}t|||d|ƒqtWndS(sA handy debugging aidt is[%s]iN(Rtsyststdouttget_content_typetget_default_typeRRt _structure(R tfptleveltinclude_defaultttabR((s%/usr/lib/python2.7/email/iterators.pyR=s   ( t__doc__t__all__Rt cStringIORRtFalseRRRR(((s%/usr/lib/python2.7/email/iterators.pyts