U e5dKQã@svddlmZddlmZddlmZddlmZGdd„dƒZGdd„dƒZGd d „d e ƒZ d d „Z Gd d„dƒZ Gdd„de ƒZ Gdd„dƒZGdd„deƒZGdd„dƒZGdd„deƒZGdd„deƒZGdd„deƒZGdd„dƒZGdd „d ƒZGd!d"„d"eƒZGd#d$„d$eƒZGd%d&„d&ƒZGd'd(„d(ƒZe eeeeeeeeeeeeeeeeeeed)œZGd*d+„d+ƒZd,S)-é)ÚMappingProxyType)Úutils)Úerrors)Ú_header_value_parserc@s^eZdZddd„Zedd„ƒZedd„ƒZed d „ƒZed d „ƒZd d„Z dd„Z dd„Z dS)ÚAddressÚNcCsœd td||||fƒ¡}d|ks(d|kr0tdƒ‚|dk r†|s@|rHtdƒ‚t |¡\}}|rjtd ||¡ƒ‚|jrz|jd‚|j}|j }||_ ||_ ||_ dS)Nrú Ú z8invalid arguments; address parts cannot contain CR or LFz=addrspec specified when username and/or domain also specifiedz6Invalid addr_spec; only '{}' could be parsed from '{}'r) ÚjoinÚfilterÚ ValueErrorÚ TypeErrorÚparserZ get_addr_specÚformatÚ all_defectsÚ local_partÚdomainÚ _display_nameÚ _usernameÚ_domain)ÚselfÚ display_nameÚusernamerÚ addr_specZinputsZa_sÚrest©rú,/usr/lib64/python3.8/email/headerregistry.pyÚ__init__s&þ zAddress.__init__cCs|jS©N©r©rrrrr<szAddress.display_namecCs|jSr)rr rrrr@szAddress.usernamecCs|jSr)rr rrrrDszAddress.domaincCsTt|jƒ}t|ƒt|tjƒkr.t |j¡}n|j}|jrH|d|jS|sPdS|S)Nú@ú<>)ÚsetrÚlenrZ DOT_ATOM_ENDSÚ quote_stringr)rÚnamesetZlprrrrHs zAddress.addr_speccCsd |jj|j|j|j¡S)Nz1{}(display_name={!r}, username={!r}, domain={!r}))rÚ __class__Ú__name__rrrr rrrÚ__repr__Xs þzAddress.__repr__cCs^t|jƒ}t|ƒt|tjƒkr.t |j¡}n|j}|rX|jdkrFdn|j}d ||¡S|jS)Nr"rz{} <{}>)r#rr$rÚSPECIALSr%rr)rr&ÚdisprrrrÚ__str__]s  zAddress.__str__cCs8t|ƒt|ƒkrdS|j|jko6|j|jko6|j|jkS©NF)Útyperrr©rÚotherrrrÚ__eq__hs  ÿ þzAddress.__eq__)rrrN) r(Ú __module__Ú __qualname__rÚpropertyrrrrr)r,r1rrrrrs *     rc@sFeZdZddd„Zedd„ƒZedd„ƒZdd „Zd d „Zd d „Z dS)ÚGroupNcCs||_|rt|ƒntƒ|_dSr)rÚtupleÚ _addresses)rrÚ addressesrrrrrszGroup.__init__cCs|jSrrr rrrr„szGroup.display_namecCs|jSr)r7r rrrr8ˆszGroup.addressescCsd |jj|j|j¡S)Nz${}(display_name={!r}, addresses={!r})rr'r(rr8r rrrr)Œs þzGroup.__repr__cCsŽ|jdkr&t|jƒdkr&t|jdƒS|j}|dk r\t|ƒ}t|ƒt|tjƒkr\t |¡}d dd„|jDƒ¡}|r~d|n|}d  ||¡S)Nérú, css|]}t|ƒVqdSr©Ústr)Ú.0ÚxrrrÚ ™sz Group.__str__..ú z{}:{};) rr$r8r<r#rr*r%r r)rr+r&Zadrstrrrrr,‘s z Group.__str__cCs,t|ƒt|ƒkrdS|j|jko*|j|jkSr-)r.rr8r/rrrr1�s   ÿz Group.__eq__)NN) r(r2r3rr4rr8r)r,r1rrrrr5ps    r5c@sPeZdZdd„Zdd„Zedd„ƒZedd„ƒZd d „Ze d d „ƒZ d d„Z dS)Ú BaseHeadercCs\dgi}| ||¡t |d¡r4t |d¡|d<t ||d¡}|d=|j|f|Ž|S)NÚdefectsÚdecoded)ÚparserZ_has_surrogatesÚ _sanitizer<Ú__new__Úinit)ÚclsÚnameÚvalueÚkwdsrrrrrFÈs zBaseHeader.__new__cCs||_||_||_dSr)Ú_nameÚ _parse_treeÚ_defects)rrIÚ parse_treerBrrrrGÒszBaseHeader.initcCs|jSr)rLr rrrrI×szBaseHeader.namecCs t|jƒSr)r6rNr rrrrBÛszBaseHeader.defectscCst|jj|jjt|ƒf|jfSr)Ú_reconstruct_headerr'r(Ú __bases__r<Ú__dict__r rrrÚ __reduce__ßsýùzBaseHeader.__reduce__cCs t ||¡Sr)r<rF)rHrJrrrÚ _reconstructészBaseHeader._reconstructc Cs`t t t |jd¡t dd¡g¡g¡}|jrH| t t dd¡g¡¡| |j¡|j |d�S)Nz header-nameú:z header-sepr@Zfws)Úpolicy) rZHeaderZ HeaderLabelZ ValueTerminalrIrMÚappendZCFWSListZWhiteSpaceTerminalÚfold)rrVÚheaderrrrrXís  þÿÿ zBaseHeader.foldN) r(r2r3rFrGr4rIrBrSÚ classmethodrTrXrrrrrA¦s"     rAcCst||iƒ |¡Sr)r.rT)Zcls_nameÚbasesrJrrrrP srPc@s&eZdZdZeejƒZedd„ƒZ dS)ÚUnstructuredHeaderNcCs"| |¡|d<t|dƒ|d<dS)NrOrC)Ú value_parserr<©rHrJrKrrrrDszUnstructuredHeader.parse) r(r2r3Ú max_countÚ staticmethodrÚget_unstructuredr]rZrDrrrrr\s r\c@seZdZdZdS)ÚUniqueUnstructuredHeaderr9N©r(r2r3r_rrrrrbsrbcsBeZdZdZeejƒZedd„ƒZ ‡fdd„Z e dd„ƒZ ‡Z S)Ú DateHeaderNcCsz|s6|d t ¡¡d|d<d|d<t ¡|d<dSt|tƒrJt |¡}||d<t  |d¡|d<|  |d¡|d<dS)NrBÚdatetimerrCrO) rWrZHeaderMissingRequiredValuerZ TokenListÚ isinstancer<rZparsedate_to_datetimeZformat_datetimer]r^rrrrD.s   zDateHeader.parsecs| d¡|_tƒj||ŽdS)Nre)ÚpopÚ _datetimeÚsuperrG©rÚargsÚkw©r'rrrG<s zDateHeader.initcCs|jSr)rhr rrrre@szDateHeader.datetime)r(r2r3r_r`rrar]rZrDrGr4reÚ __classcell__rrrmrrds   rdc@seZdZdZdS)ÚUniqueDateHeaderr9NrcrrrrroEsrocsPeZdZdZedd„ƒZedd„ƒZ‡fdd„Ze dd „ƒZ e d d „ƒZ ‡Z S) Ú AddressHeaderNcCst |¡\}}|Sr)rZget_address_list)rJÚ address_listrrrr]NszAddressHeader.value_parsercCs¾t|tƒrV| |¡|d<}g}|jD]"}| t|jdd„|jDƒƒ¡q&t|j ƒ}n"t |dƒsf|g}dd„|Dƒ}g}||d<||d<d  d d„|Dƒ¡|d <d|krº| |d ¡|d<dS) NrOcSs*g|]"}t|jpd|jpd|jp"dƒ‘qS)r)rrrr)r=ZmbrrrÚ ]s ý þz'AddressHeader.parse..Ú__iter__cSs&g|]}t|dƒstd|gƒn|‘qS)r8N)Úhasattrr5©r=ÚitemrrrrrfsþÚgroupsrBr:cSsg|] }t|ƒ‘qSrr;rurrrrrlsrC) rfr<r]r8rWr5rZ all_mailboxesÚlistrrtr )rHrJrKrqrwZaddrrBrrrrDTs*   ýÿ  þzAddressHeader.parsecs(t| d¡ƒ|_d|_tƒj||ŽdS)Nrw)r6rgÚ_groupsr7rirGrjrmrrrGpszAddressHeader.initcCs|jSr)ryr rrrrwuszAddressHeader.groupscCs&|jdkr tdd„|jDƒƒ|_|jS)Ncss|]}|jD] }|Vq qdSr)r8)r=ÚgroupÚaddressrrrr?|sÿz*AddressHeader.addresses..)r7r6ryr rrrr8ys zAddressHeader.addresses) r(r2r3r_r`r]rZrDrGr4rwr8rnrrrmrrpJs    rpc@seZdZdZdS)ÚUniqueAddressHeaderr9Nrcrrrrr|�sr|c@seZdZedd„ƒZdS)ÚSingleAddressHeadercCs(t|jƒdkrtd |j¡ƒ‚|jdS)Nr9z9value of single address header {} is not a single addressr)r$r8r rrIr rrrr{ˆs ÿzSingleAddressHeader.addressN)r(r2r3r4r{rrrrr}†sr}c@seZdZdZdS)ÚUniqueSingleAddressHeaderr9Nrcrrrrr~�sr~csZeZdZdZeejƒZedd„ƒZ ‡fdd„Z e dd„ƒZ e dd „ƒZ e d d „ƒZ‡ZS) ÚMIMEVersionHeaderr9cCs€| |¡|d<}t|ƒ|d<|d |j¡|jdkrÊsþ z1ParameterizedMIMEHeader.parse..)r]r<rƒrr‰r„rrrrDÁs   þzParameterizedMIMEHeader.parsecs| d¡|_tƒj||ŽdS)Nr‰)rgÚ_paramsrirGrjrmrrrGÎs zParameterizedMIMEHeader.initcCs t|jƒSr)rrŒr rrrr‰ÒszParameterizedMIMEHeader.params) r(r2r3r_rZrDrGr4r‰rnrrrmrrˆºs  rˆcsJeZdZeejƒZ‡fdd„Zedd„ƒZ edd„ƒZ edd„ƒZ ‡Z S) ÚContentTypeHeadercs2tƒj||Žt |jj¡|_t |jj¡|_dSr) rirGrrErMÚmaintypeÚ _maintypeÚsubtypeÚ_subtyperjrmrrrGÛszContentTypeHeader.initcCs|jSr)r�r rrrrŽàszContentTypeHeader.maintypecCs|jSr)r‘r rrrr�äszContentTypeHeader.subtypecCs|jd|jS)Nú/)rŽr�r rrrÚ content_typeèszContentTypeHeader.content_type) r(r2r3r`rZparse_content_type_headerr]rGr4rŽr�r“rnrrrmrr�×s    r�cs2eZdZeejƒZ‡fdd„Zedd„ƒZ ‡Z S)ÚContentDispositionHeadercs2tƒj||Ž|jj}|dkr"|nt |¡|_dSr)rirGrMÚcontent_dispositionrrEÚ_content_disposition)rrkrlZcdrmrrrGñszContentDispositionHeader.initcCs|jSr)r–r rrrr•ösz,ContentDispositionHeader.content_disposition) r(r2r3r`rZ parse_content_disposition_headerr]rGr4r•rnrrrmrr”ís  r”csBeZdZdZeejƒZedd„ƒZ ‡fdd„Z e dd„ƒZ ‡Z S)ÚContentTransferEncodingHeaderr9cCs2| |¡|d<}t|ƒ|d<|d |j¡dS©NrOrCrB©r]r<rƒrr„rrrrDs z#ContentTransferEncodingHeader.parsecs"tƒj||Žt |jj¡|_dSr)rirGrrErMÚcteÚ_cterjrmrrrGsz"ContentTransferEncodingHeader.initcCs|jSr)r›r rrrrš sz!ContentTransferEncodingHeader.cte)r(r2r3r_r`rZ&parse_content_transfer_encoding_headerr]rZrDrGr4ršrnrrrmrr—ûs   r—c@s&eZdZdZeejƒZedd„ƒZ dS)ÚMessageIDHeaderr9cCs2| |¡|d<}t|ƒ|d<|d |j¡dSr˜r™r„rrrrDs zMessageIDHeader.parseN) r(r2r3r_r`rZparse_message_idr]rZrDrrrrrœs rœ)ZsubjectÚdatez resent-datez orig-dateZsenderz resent-senderÚtoz resent-toZccz resent-ccZbccz resent-bccÚfromz resent-fromzreply-toz mime-versionz content-typezcontent-dispositionzcontent-transfer-encodingz message-idc@s4eZdZeedfdd„Zdd„Zdd„Zdd „Zd S) ÚHeaderRegistryTcCs&i|_||_||_|r"|j t¡dSr)ÚregistryÚ base_classÚ default_classÚupdateÚ_default_header_map)rr¢r£Zuse_default_maprrrr9s zHeaderRegistry.__init__cCs||j| ¡<dSr)r¡rŠ©rrIrHrrrÚ map_to_typeKszHeaderRegistry.map_to_typecCs,|j | ¡|j¡}td|j||jfiƒS)NÚ_)r¡ÚgetrŠr£r.r(r¢r¦rrrÚ __getitem__QszHeaderRegistry.__getitem__cCs||||ƒSrr)rrIrJrrrÚ__call__Us zHeaderRegistry.__call__N) r(r2r3rAr\rr§rªr«rrrrr 5s ÿ r N)ÚtypesrZemailrrrrrr5r<rArPr\rbrdrorpr|r}r~rrˆr�r”r—rœr¥r rrrrÚ sV    `6d '7 %ì