o ,]@sdZddlmZddlmZddlmZgdZddlZddlmZm Z ddl m Z m Z dd l mZdd lmZGd d d eZGd ddeZGdddeZGdddeZdS)z-A parser of RFC 2822 and MIME email messages.)unicode_literals)division)absolute_import)Parser HeaderParser BytesParserBytesHeaderParserN)StringIO TextIOWrapper) FeedParserBytesFeedParser)Message)compat32c@s,eZdZefddZd ddZd ddZdS) rcKs,d|vr |d}|d=nt}||_||_dS)aParser 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 preceeded 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. policyN)r_classr)selfr _3to2kwargsrr?/usr/lib/python3/dist-packages/future/backports/email/parser.py__init__s zParser.__init__FcCsBt|j|jd}|r| |d}|s |S||q)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. )rTi )r rr_set_headersonlyreadfeedclose)rfp headersonly feedparserdatarrrparse/s  z Parser.parsecCs|jt||dS)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 rtextrrrrparsestrAszParser.parsestrNF)__name__ __module__ __qualname__r rrr"rrrrrs  rc@ eZdZdddZdddZdS)rTcCt||dSNT)rrrrrrrrrNzHeaderParser.parsecCr(r))rr"r rrrr"Qr+zHeaderParser.parsestrNT)r$r%r&rr"rrrrrM rc@s(eZdZddZd ddZd ddZdS) rcOst|i||_dS)aParser 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 preceeded 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)rparser)rargskwrrrrWszBytesParser.__init__FcCsDt|ddd}||j||WdS1swYdS)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. asciisurrogateescape)encodingerrorsN)r r.rr*rrrris $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. ASCIIr2)r4)decoder.r"r rrr parsebytesvszBytesParser.parsebytesNr#)r$r%r&rrr7rrrrrUs  rc@r')rTcCtj||ddSNTr)rrr*rrrrzBytesHeaderParser.parsecCr8r9)rr7r rrrr7r:zBytesHeaderParser.parsebytesNr,)r$r%r&rr7rrrrrr-r)__doc__ __future__rrr__all__warningsior r !future.backports.email.feedparserr r future.backports.email.messager "future.backports.email._policybaserobjectrrrrrrrrs     9-