3 \W�@sLdZdddgZddlZddlmZdd�Zdd d�Zdd d�Zdd d �ZdS)z1Various types of useful iterators and generators.�body_line_iterator�typed_subpart_iterator�walk�N)�StringIOccs2|V|j�r.x|j�D]}|j�EdHqWdS)z�Walk over the message tree, yielding each subpart. The walk is performed in depth-first order. This method is a generator. N)� is_multipart� get_payloadr)�self�subpart�r �'/usr/lib64/python3.6/email/iterators.pyrsFccs:x4|j�D](}|j|d�}t|t�r t|�EdHq WdS)z�Iterate over the parts, returning string payloads line-by-line. Optional decode (default False) is passed through to .get_payload(). )�decodeN)rr� isinstance�strr)�msgr r Zpayloadr r r r"s  �textccs<x6|j�D]*}|j�|kr |dks.|j�|kr |Vq WdS)z�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)rZget_content_maintypeZget_content_subtype)rZmaintype�subtyper r r r r-s cCs�|dkrtj}d|d}t||j�d|d�|rJtd|j�|d�n t|d�|j�r�x"|j�D]}t|||d|�qfWdS) zA handy debugging aidN� ��)�end�filez [%s])r�)�sys�stdout�printZget_content_typeZget_default_typerr� _structure)r�fp�levelZinclude_defaultZtabr r r r r;s  r)F)rN)NrF) �__doc__�__all__r�iorrrrrr r r r �s