a XC?h��@sxdZgd�ZddlmZmZddlmZmZddlm Z Gdd�d�Z Gdd �d e �Z Gd d �d �Z Gd d �d e �Z dS)z-A parser of RFC 2822 and MIME email messages.)�Parser� HeaderParser� BytesParser�BytesHeaderParser� FeedParser�BytesFeedParser�)�StringIO� TextIOWrapper)rr)�compat32c@s0eZdZd ed�dd�Zd dd�Zd dd �ZdS) rN��policycCs||_||_dS)a�Parser of RFC 2822 and MIME email messages. Creates an in-memory object tree representing the email message, which can then be manipulated and turned over to a Generator to return the textual representation of the message. The string must be formatted as a block of RFC 2822 headers and header continuation lines, optionally preceded by a `Unix-from' header. The header block is terminated either by the end of the string or by a blank line. _class is the class to instantiate for new message objects when they must be created. This class must have a constructor that can take zero arguments. Default is Message.Message. The policy keyword specifies a policy object that controls a number of aspects of the parser's operation. The default policy maintains backward compatibility. N)�_classr )�selfr r �r�1/opt/alt/python39/lib64/python3.9/email/parser.py�__init__szParser.__init__FcCs@t|j|jd�}|r|��|�d�}|s,q8|�|�q|��S)a\Create a message structure from the data in a file. Reads all the data from the file and returns the root of the message structure. Optional headersonly is a flag specifying whether to stop parsing after reading the headers or not. The default is False, meaning it parses the entire contents of the file. r i )rr r Z_set_headersonly�readZfeed�close)r�fp� headersonlyZ feedparser�datarrr�parse)s  z Parser.parsecCs|jt|�|d�S)a-Create a message structure from a string. Returns the root of the message structure. Optional headersonly is a flag specifying whether to stop parsing after reading the headers or not. The default is False, meaning it parses the entire contents of the file. �r)rr�r�textrrrr�parsestr;szParser.parsestr)N)F)F)�__name__� __module__� __qualname__r rrrrrrrrs rc@s eZdZddd�Zddd�ZdS) rTcCst�||d�S�NT)rr�rrrrrrrHszHeaderParser.parsecCst�||d�Sr)rrrrrrrKszHeaderParser.parsestrN)T)T)rrrrrrrrrrGs rc@s(eZdZdd�Zd dd�Zd dd�ZdS) rcOst|i|��|_dS)a�Parser of binary RFC 2822 and MIME email messages. Creates an in-memory object tree representing the email message, which can then be manipulated and turned over to a Generator to return the textual representation of the message. The input must be formatted as a block of RFC 2822 headers and header continuation lines, optionally preceded by a `Unix-from' header. The header block is terminated either by the end of the input or by a blank line. _class is the class to instantiate for new message objects when they must be created. This class must have a constructor that can take zero arguments. Default is Message.Message. N)r�parser)r�args�kwrrrrQszBytesParser.__init__FcCs6t|ddd�}z|j�||�W|��S|��0dS)acCreate a message structure from the data in a binary file. Reads all the data from the file and returns the root of the message structure. Optional headersonly is a flag specifying whether to stop parsing after reading the headers or not. The default is False, meaning it parses the entire contents of the file. �ascii�surrogateescape)�encoding�errorsN)r r!r�detachr rrrrcs �zBytesParser.parsecCs|jddd�}|j�||�S)a2Create a message structure from a byte string. Returns the root of the message structure. Optional headersonly is a flag specifying whether to stop parsing after reading the headers or not. The default is False, meaning it parses the entire contents of the file. �ASCIIr%)r')�decoder!rrrrr� parsebytesrszBytesParser.parsebytesN)F)F)rrrrrr+rrrrrOs rc@s eZdZddd�Zddd�ZdS) rTcCstj||dd�S�NTr)rrr rrrrszBytesHeaderParser.parsecCstj||dd�Sr,)rr+rrrrr+�szBytesHeaderParser.parsebytesN)T)T)rrrrr+rrrrr~s rN)�__doc__�__all__�iorr Zemail.feedparserrrZemail._policybaser rrrrrrrr�s 7/