3 2aO@sfddlmZddlmZddlmZddlmZGdddZGdddZGd d d e Z d d Z Gd ddZ Gddde Z GdddZGdddeZGdddZGdddeZGdddeZGdddeZGdddZGdd d ZGd!d"d"eZGd#d$d$eZGd%d&d&Ze eeeeeeeeeeeeeeeeeed'ZGd(d)d)Zd*S)+)MappingProxyType)utils)errors)_header_value_parserc@s^eZdZdddZeddZeddZed d Zed d Zd dZ ddZ ddZ dS)AddressNcCsdjtd||||f}d|ks(d|kr0td|dk r|s@|rHtdtj|\}}|rjtdj|||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) joinfilter ValueError TypeErrorparserZ get_addr_specformat all_defects local_partdomain _display_name _username_domain)self display_nameusernamer addr_specZinputsZa_srestr3/opt/alt/python36/lib64/python3.6/headerregistry.py__init__s"  zAddress.__init__cCs|jS)N)r)rrrrr<szAddress.display_namecCs|jS)N)r)rrrrr@szAddress.usernamecCs|jS)N)r)rrrrrDszAddress.domaincCsTt|j}t|t|tjkr.tj|j}n|j}|jrH|d|jS|sPdS|S)N@z<>)setrlenrZ DOT_ATOM_ENDS quote_stringr)rnamesetZlprrrrHs zAddress.addr_speccCsdj|jj|j|j|jS)Nz1{}(display_name={!r}, username={!r}, domain={!r}))r __class____name__rrr)rrrr__repr__XszAddress.__repr__cCs^t|j}t|t|tjkr.tj|j}n|j}|rX|jdkrFdn|j}dj||S|jS)Nz<>rz{} <{}>)rrr rSPECIALSr!rr)rr"disprrrr__str__]s  zAddress.__str__cCs8t|t|krdS|j|jko6|j|jko6|j|jkS)NF)typerrr)rotherrrr__eq__hs   zAddress.__eq__)rrrN) r$ __module__ __qualname__rpropertyrrrrr%r(r+rrrrrs *     rc@sFeZdZdddZeddZeddZdd Zd d Zd d Z dS)GroupNcCs||_|rt|nt|_dS)N)rtuple _addresses)rr addressesrrrrrszGroup.__init__cCs|jS)N)r)rrrrrszGroup.display_namecCs|jS)N)r1)rrrrr2szGroup.addressescCsdj|jj|j|jS)Nz${}(display_name={!r}, addresses={!r})rr#r$rr2)rrrrr%szGroup.__repr__cCs|jdkr&t|jdkr&t|jdS|j}|dk r\t|}t|t|tjkr\tj|}djdd|jD}|r~d|n|}dj ||S)Nrz, css|]}t|VqdS)N)str).0xrrr sz Group.__str__.. z{}:{};) rr r2r4rrr&r!r r)rr'r"Zadrstrrrrr(s z Group.__str__cCs,t|t|krdS|j|jko*|j|jkS)NF)r)rr2)rr*rrrr+s z Group.__eq__)NN) r$r,r-rr.rr2r%r(r+rrrrr/ps     r/c@sPeZdZddZddZeddZeddZd d Ze d d Z d dZ dS) BaseHeadercCs\dgi}|j||tj|dr4tj|d|d<tj||d}|d=|j|f||S)Ndefectsdecoded)parserZ_has_surrogates _sanitizer4__new__init)clsnamevaluekwdsrrrrr>s zBaseHeader.__new__cCs||_||_||_dS)N)_name _parse_tree_defects)rrA parse_treer:rrrr?szBaseHeader.initcCs|jS)N)rD)rrrrrAszBaseHeader.namecCs t|jS)N)r0rF)rrrrr:szBaseHeader.defectscCst|jj|jjt|f|jfS)N)_reconstruct_headerr#r$ __bases__r4__dict__)rrrr __reduce__s zBaseHeader.__reduce__cCs tj||S)N)r4r>)r@rBrrr _reconstructszBaseHeader._reconstructcCs`tjtjtj|jdtjddgg}|jrH|jtjtjddg|j|j|j |dS)Nz header-name:z header-sepr8Zfws)policy) rZHeaderZ HeaderLabelZ ValueTerminalrArEappendZCFWSListZWhiteSpaceTerminalfold)rrNheaderrrrrPs  zBaseHeader.foldN) r$r,r-r>r?r.rAr:rK classmethodrLrPrrrrr9s"    r9cCst||ij|S)N)r)rL)Zcls_namebasesrBrrrrH srHc@s&eZdZdZeejZeddZ dS)UnstructuredHeaderNcCs"|j||d<t|d|d<dS)NrGr;) value_parserr4)r@rBrCrrrr<szUnstructuredHeader.parse) r$r,r- max_count staticmethodrget_unstructuredrUrRr<rrrrrTs rTc@seZdZdZdS)UniqueUnstructuredHeaderr3N)r$r,r-rVrrrrrYsrYcsBeZdZdZeejZeddZ fddZ e ddZ Z S) DateHeaderNcCsz|s6|djtjd|d<d|d<tj|d<dSt|trJtj|}||d<tj |d|d<|j |d|d<dS)Nr:datetimerr;rG) rOrZHeaderMissingRequiredValuerZ TokenList isinstancer4rZparsedate_to_datetimeZformat_datetimerU)r@rBrCrrrr<.s   zDateHeader.parsecs|jd|_tj||dS)Nr[)pop _datetimesuperr?)rargskw)r#rrr?<s zDateHeader.initcCs|jS)N)r^)rrrrr[@szDateHeader.datetime)r$r,r-rVrWrrXrUrRr<r?r.r[ __classcell__rr)r#rrZs     rZc@seZdZdZdS)UniqueDateHeaderr3N)r$r,r-rVrrrrrcEsrccsPeZdZdZeddZeddZfddZe dd Z e d d Z Z S) AddressHeaderNcCstj|\}}|S)N)rZget_address_list)rB address_listrrrrUNszAddressHeader.value_parsercCst|trZ|j||d<}g}x,|jD]"}|jt|jdd|jDq(Wt|j }n"t |dsj|g}dd|D}g}||d<||d<dj d d|D|d <d|kr|j|d |d<dS) NrGcSs*g|]"}t|jpd|jpd|jp"dqS)r)rrrr)r5Zmbrrr ]sz'AddressHeader.parse..__iter__cSs&g|]}t|dstd|gn|qS)r2N)hasattrr/)r5itemrrrrffsgroupsr:z, cSsg|] }t|qSr)r4)r5rirrrrflsr;) r\r4rUr2rOr/rZ all_mailboxeslistrrhr )r@rBrCrerjZaddrr:rrrr<Ts$     zAddressHeader.parsecs(t|jd|_d|_tj||dS)Nrj)r0r]_groupsr1r_r?)rr`ra)r#rrr?pszAddressHeader.initcCs|jS)N)rl)rrrrrjuszAddressHeader.groupscCs&|jdkr tdd|jD|_|jS)NcSsg|]}|jD]}|qqSr)r2)r5groupaddressrrrrf|sz+AddressHeader.addresses..)r1r0rl)rrrrr2ys zAddressHeader.addresses) r$r,r-rVrWrUrRr<r?r.rjr2rbrr)r#rrdJs     rdc@seZdZdZdS)UniqueAddressHeaderr3N)r$r,r-rVrrrrrosroc@seZdZeddZdS)SingleAddressHeadercCs(t|jdkrtdj|j|jdS)Nr3z9value of single address header {} is not a single addressr)r r2r rrA)rrrrrns zSingleAddressHeader.addressN)r$r,r-r.rnrrrrrpsrpc@seZdZdZdS)UniqueSingleAddressHeaderr3N)r$r,r-rVrrrrrqsrqcsZeZdZdZeejZeddZ fddZ e ddZ e dd Z e d d ZZS) MIMEVersionHeaderr3cCs|j||d<}t||d<|dj|j|jdkrsz1ParameterizedMIMEHeader.parse..)rUr4rvrr{)r@rBrCrGrrrr<s   zParameterizedMIMEHeader.parsecs|jd|_tj||dS)Nr{)r]_paramsr_r?)rr`ra)r#rrr?s zParameterizedMIMEHeader.initcCs t|jS)N)rr~)rrrrr{szParameterizedMIMEHeader.params) r$r,r-rVrRr<r?r.r{rbrr)r#rrzs rzcsJeZdZeejZfddZeddZ eddZ eddZ Z S) ContentTypeHeadercs2tj||tj|jj|_tj|jj|_dS)N) r_r?rr=rEmaintype _maintypesubtype_subtype)rr`ra)r#rrr?szContentTypeHeader.initcCs|jS)N)r)rrrrrszContentTypeHeader.maintypecCs|jS)N)r)rrrrrszContentTypeHeader.subtypecCs|jd|jS)N/)rr)rrrr content_typeszContentTypeHeader.content_type) r$r,r-rWrZparse_content_type_headerrUr?r.rrrrbrr)r#rrs     rcs2eZdZeejZfddZeddZ Z S)ContentDispositionHeadercs2tj|||jj}|dkr"|ntj||_dS)N)r_r?rEcontent_dispositionrr=_content_disposition)rr`raZcd)r#rrr?szContentDispositionHeader.initcCs|jS)N)r)rrrrrsz,ContentDispositionHeader.content_disposition) r$r,r-rWrZ parse_content_disposition_headerrUr?r.rrbrr)r#rrs  rcsBeZdZdZeejZeddZ fddZ e ddZ Z S)ContentTransferEncodingHeaderr3cCs2|j||d<}t||d<|dj|jdS)NrGr;r:)rUr4rvr)r@rBrCrGrrrr<s z#ContentTransferEncodingHeader.parsecs"tj||tj|jj|_dS)N)r_r?rr=rEcte_cte)rr`ra)r#rrr?sz"ContentTransferEncodingHeader.initcCs|jS)N)r)rrrrr sz!ContentTransferEncodingHeader.cte)r$r,r-rVrWrZ&parse_content_transfer_encoding_headerrUrRr<r?r.rrbrr)r#rrs    r)ZsubjectZdatez resent-datez orig-dateZsenderz resent-senderZtoz resent-toZccz resent-ccZbccz resent-bccfromz resent-fromzreply-toz mime-versionz content-typezcontent-dispositionzcontent-transfer-encodingc@s4eZdZeedfddZddZddZdd Zd S) HeaderRegistryTcCs&i|_||_||_|r"|jjtdS)N)registry base_class default_classupdate_default_header_map)rrrZuse_default_maprrrr,s zHeaderRegistry.__init__cCs||j|j<dS)N)rr|)rrAr@rrr map_to_type>szHeaderRegistry.map_to_typecCs,|jj|j|j}td|j||jfiS)N_)rgetr|rr)r$r)rrAr@rrr __getitem__DszHeaderRegistry.__getitem__cCs||||S)Nr)rrArBrrr__call__Hs zHeaderRegistry.__call__N) r$r,r-r9rTrrrrrrrrr(s  rN)typesrZemailrrrrrr/r4r9rHrTrYrZrcrdrorprqrrrzrrrrrrrrr sP    `6d '7 %