o ?OgMQ@s ddlmZddlmZddlmZddlmZGdddZGdddZGd d d e Z d d Z Gd ddZ Gddde Z GdddZGdddeZGdddZGdddeZGdddeZGdddeZGdddZGdd d ZGd!d"d"eZGd#d$d$eZGd%d&d&ZGd'd(d(Zid)e d*ed+ed,ed-ed.ed/ed0ed1ed2ed3ed4ed5ed6ed7ed8ed9eeeed:ZGd;d<d<Zd=S)>)MappingProxyType)utils)errors)_header_value_parserc@s^eZdZdddZeddZeddZed d Zed d Zd dZ ddZ ddZ dS)AddressNcCs dtd||||f}d|vsd|vrtd|durD|s!|r%tdt|\}}|r6td|||jr>|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) joinfilter ValueError TypeErrorparserZ get_addr_specformat all_defects local_partdomain _display_name _username_domain)self display_nameusernamer addr_specZinputsZa_srestr;/opt/alt/python310/lib64/python3.10/email/headerregistry.py__init__s*  zAddress.__init__cC|jSNrrrrrr8zAddress.display_namecCrr)rr!rrrr<r"zAddress.usernamecCrr)rr!rrrr@r"zAddress.domaincCs> |j}tj|st|}|jr|d|jS|sdS|S)N@<>)rrZ DOT_ATOM_ENDS isdisjoint quote_stringr)rZlprrrrDs  zAddress.addr_speccCsd|jj|j|j|jS)Nz1{}(display_name={!r}, username={!r}, domain={!r}))r __class____name__rrrr!rrr__repr__Rs zAddress.__repr__cCsF|j}tj|st|}|r |jdkrdn|j}d||S|jS)Nr$rz{} <{}>)rrSPECIALSr%r&rr)rdisprrrr__str__Ws   zAddress.__str__cCs2t|tstS|j|jko|j|jko|j|jkSr) isinstancerNotImplementedrrrrotherrrr__eq__`s    zAddress.__eq__)rrrN) r( __module__ __qualname__rpropertyrrrrr)r,r1rrrrr s *      rc@sFeZdZdddZeddZeddZdd Zd d Zd d Z dS)GroupNcCs& ||_|r t||_dSt|_dSr)rtuple _addresses)rr addressesrrrrjszGroup.__init__cCrrr r!rrrr|r"zGroup.display_namecCrr)r7r!rrrr8r"zGroup.addressescCsd|jj|j|jS)Nz${}(display_name={!r}, addresses={!r})rr'r(rr8r!rrrr)szGroup.__repr__cCs||jdurt|jdkrt|jdS|j}|dur%tj|s%t|}ddd|jD}|r6d|n|}d ||S)Nr, css|]}t|VqdSrstr).0xrrr sz Group.__str__.. z{}:{};) rlenr8r<rr*r%r&r r)rr+Zadrstrrrrr,s  z Group.__str__cCs&t|tstS|j|jko|j|jkSr)r-r5r.rr8r/rrrr1s   z Group.__eq__)NN) r(r2r3rr4rr8r)r,r1rrrrr5hs    r5c@sReZdZ ddZddZeddZeddZd d Ze d d Z d dZ dS) BaseHeadercCs`dgi}|||t|drt|d|d<t||d}|d=|j|fi||S)Ndefectsdecoded)parserZ_has_surrogates _sanitizer<__new__init)clsnamevaluekwdsrrrrrGs zBaseHeader.__new__cCs||_||_||_dSr)_name _parse_tree_defects)rrJ parse_treerCrrrrHs zBaseHeader.initcCrr)rMr!rrrrJr"zBaseHeader.namecC t|jSr)r6rOr!rrrrC zBaseHeader.defectscCst|jj|jjt|f|jfSr)_reconstruct_headerr'r( __bases__r<__dict__r!rrr __reduce__szBaseHeader.__reduce__cCs t||Sr)r<rG)rIrKrrr _reconstructs zBaseHeader._reconstructc Csb ttt|jdtddgg}|jr%|ttddg||j|j |dS)Nz header-name:z header-sepr@Zfws)policy) rZHeaderZ HeaderLabelZ ValueTerminalrJrNappendZCFWSListZWhiteSpaceTerminalfold)rrYheaderrrrr[s    zBaseHeader.foldN) r(r2r3rGrHr4rJrCrV classmethodrWr[rrrrrBs      rBcCst||i|Sr)typerW)cls_namebasesrKrrrrSsrSc@s&eZdZdZeejZeddZ dS)UnstructuredHeaderNcCs"|||d<t|d|d<dS)NrPrD) value_parserr<rIrKrLrrrrE szUnstructuredHeader.parse) r(r2r3 max_count staticmethodrget_unstructuredrbr]rErrrrra  rac@eZdZdZdS)UniqueUnstructuredHeaderr9Nr(r2r3rdrrrrriricsDeZdZ dZeejZeddZ fddZ e ddZ Z S) DateHeaderNcCs|s|dtd|d<d|d<t|d<dSt|trJ||d<zt|}Wnt yI|dt dd|d<t|d<YdSw||d<t |d|d<| |d|d<dS)NrCdatetimerrDrPzInvalid date value or format) rZrZHeaderMissingRequiredValuerZ TokenListr-r<rZparsedate_to_datetimer ZInvalidDateDefectZformat_datetimerbrcrrrrE$s&    zDateHeader.parsec"|d|_tj|i|dS)Nrm)pop _datetimesuperrHrargskwr'rrrH9 zDateHeader.initcCrr)rpr!rrrrm=r"zDateHeader.datetime)r(r2r3rdrerrfrbr]rErHr4rm __classcell__rrrurrls   rlc@rh)UniqueDateHeaderr9NrjrrrrrxBrkrxcsPeZdZdZeddZeddZfddZe dd Z e d d Z Z S) AddressHeaderNcCst|\}}|Sr)rZget_address_list)rK address_listrrrrbKszAddressHeader.value_parsercCst|tr+|||d<}g}|jD]}|t|jdd|jDqt|j }nt |ds3|g}dd|D}g}||d<||d<d d d|D|d <d|vr_||d |d<dSdS) NrPcSs*g|]}t|jp d|jp d|jpdqS)r)rrrr)r=Zmbrrr Zs  z'AddressHeader.parse..__iter__cSs&g|]}t|dstd|gn|qS)r8N)hasattrr5r=itemrrrr{cs groupsrCr:cSsg|]}t|qSrr;r~rrrr{isrD) r-r<rbr8rZr5rZ all_mailboxeslistrr}r )rIrKrLrzrZaddrrCrrrrEQs,     zAddressHeader.parsecs,t|d|_d|_tj|i|dS)Nr)r6ro_groupsr7rqrHrrrurrrHmszAddressHeader.initcCrr)rr!rrrrrr"zAddressHeader.groupscCs&|jdurtdd|jD|_|jS)Ncss |] }|jD]}|VqqdSr)r8)r=groupaddressrrrr?ys z*AddressHeader.addresses..)r7r6rr!rrrr8vs zAddressHeader.addresses) r(r2r3rdrerbr]rErHr4rr8rwrrrurryGs    ryc@rh)UniqueAddressHeaderr9Nrjrrrrr~rkrc@seZdZeddZdS)SingleAddressHeadercCs(t|jdkrtd|j|jdS)Nr9z9value of single address header {} is not a single addressr)rAr8r rrJr!rrrrs  zSingleAddressHeader.addressN)r(r2r3r4rrrrrrsrc@rh)UniqueSingleAddressHeaderr9NrjrrrrrrkrcsZeZdZdZeejZeddZ fddZ e ddZ e dd Z e d d ZZS) MIMEVersionHeaderr9cCs|||d<}t||d<|d|j|jdurdn|j|d<|j|d<|jdur;d|d|d|d<dSd|d<dS)NrPrDrCmajorminorz{}.{}version)rbr<extendrrrrrIrKrLrPrrrrEs    zMIMEVersionHeader.parsecs:|d|_|d|_|d|_tj|i|dS)Nrrr)ro_version_major_minorrqrHrrrurrrHs   zMIMEVersionHeader.initcCrr)rr!rrrrr"zMIMEVersionHeader.majorcCrr)rr!rrrrr"zMIMEVersionHeader.minorcCrr)rr!rrrrr"zMIMEVersionHeader.version)r(r2r3rdrerZparse_mime_versionrbr]rErHr4rrrrwrrrurrs     rcs8eZdZdZeddZfddZeddZZ S)ParameterizedMIMEHeaderr9cCs\|||d<}t||d<|d|j|jdur"i|d<dSdd|jD|d<dS)NrPrDrCparamscSs&i|]\}}t|t|qSr)rrFlower)r=rJrKrrr s  z1ParameterizedMIMEHeader.parse..)rbr<rrrrrrrrEs   zParameterizedMIMEHeader.parsecrn)Nr)ro_paramsrqrHrrrurrrHrvzParameterizedMIMEHeader.initcCrQr)rrr!rrrrrRzParameterizedMIMEHeader.params) r(r2r3rdr]rErHr4rrwrrrurrs  rcsJeZdZeejZfddZeddZ eddZ eddZ Z S) ContentTypeHeadercs6tj|i|t|jj|_t|jj|_dSr) rqrHrrFrNmaintype _maintypesubtype_subtyperrrurrrHszContentTypeHeader.initcCrr)rr!rrrrr"zContentTypeHeader.maintypecCrr)rr!rrrrr"zContentTypeHeader.subtypecCs|jd|jS)N/)rrr!rrr content_typeszContentTypeHeader.content_type) r(r2r3rerZparse_content_type_headerrbrHr4rrrrwrrrurrs    rcs2eZdZeejZfddZeddZ Z S)ContentDispositionHeadercs<tj|i||jj}|dur||_dSt||_dSr)rqrHrNcontent_dispositionrrF_content_disposition)rrsrtZcdrurrrHs"zContentDispositionHeader.initcCrr)rr!rrrrr"z,ContentDispositionHeader.content_disposition) r(r2r3rerZ parse_content_disposition_headerrbrHr4rrwrrrurrs   rcsBeZdZdZeejZeddZ fddZ e ddZ Z S)ContentTransferEncodingHeaderr9cC2|||d<}t||d<|d|jdSNrPrDrCrbr<rrrrrrrE z#ContentTransferEncodingHeader.parsecs&tj|i|t|jj|_dSr)rqrHrrFrNcte_cterrrurrrHsz"ContentTransferEncodingHeader.initcCrr)rr!rrrrr"z!ContentTransferEncodingHeader.cte)r(r2r3rdrerZ&parse_content_transfer_encoding_headerrbr]rErHr4rrwrrrurrs   rc@s&eZdZdZeejZeddZ dS)MessageIDHeaderr9cCrrrrrrrrErzMessageIDHeader.parseN) r(r2r3rdrerZparse_message_idrbr]rErrrrr rgrsubjectdatez resent-datez orig-dateZsenderz resent-sendertoz resent-toZccz resent-ccZbccz resent-bccfromz resent-fromzreply-toz mime-versionz content-type)zcontent-dispositionzcontent-transfer-encodingz message-idc@s6eZdZ eedfddZddZddZdd Zd S) HeaderRegistryTcCs, i|_||_||_|r|jtdSdSr)registry base_class default_classupdate_default_header_map)rrrZuse_default_maprrrr6s zHeaderRegistry.__init__cCs ||j|<dSr)rrrrJrIrrr map_to_typeHszHeaderRegistry.map_to_typecCs,|j||j}td|j||jfiS)N_)rgetrrr^r(rrrrr __getitem__NszHeaderRegistry.__getitem__cCs ||||Srr)rrJrKrrr__call__Rs zHeaderRegistry.__call__N) r(r2r3rBrarrrrrrrrr2s  rN)typesrZemailrrrrrr5r<rBrSrarirlrxryrrrrrrrrrrrrrrrs~    \4d .7 %