a
XC?hW � @ sJ d Z g d�ZddlZddlmZ dd� Zddd �Zddd�Zdd
d�ZdS )z1Various types of useful iterators and generators.)�body_line_iterator�typed_subpart_iterator�walk� N)�StringIOc c s. | V | � � r*| �� D ]}|�� E dH qdS )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
�4/opt/alt/python39/lib64/python3.9/email/iterators.pyr s r Fc c s6 | � � D ](}|j|d�}t|t�rt|�E dH qdS )z�Iterate over the parts, returning string payloads line-by-line.
Optional decode (default False) is passed through to .get_payload().
)�decodeN)r r �
isinstance�strr )�msgr r Zpayloadr
r
r r " s
r �textc c s8 | � � D ]*}|�� |kr|du s,|�� |kr|V qdS )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)r Zget_content_maintypeZget_content_subtype)r ZmaintypeZsubtyper r
r
r r - s r c C s� |du rt j}d|d }t|| �� d|d� |rJtd| �� |d� n
t|d� | �� r|| �� D ]}t|||d |� qddS ) zA handy debugging aidN� � � )�end�filez [%s])r � )�sys�stdout�printZget_content_typeZget_default_typer r �
_structure)r �fp�levelZinclude_defaultZtabr r
r
r r ; s
r )F)r N)Nr F) �__doc__�__all__r �ior r r r r r
r
r
r �