fSQ ddlmZddlmZddlmZddlmZGddZGddZGd d e Z d Z Gd d Z Gdde Z GddZGddeZGddZGddeZGddeZGddeZGddZGddZGd d!eZGd"d#eZGd$d%ZGd&d'Zid(e d)ed*ed+ed,ed-ed.ed/ed0ed1ed2ed3ed4ed5ed6ed7ed8eeeed9ZGd:d;Zd>TV^^WXX X   96 9!8999,Y77IC 5 "==CV$'>4>4555 )oa((~HZF)! c|jSNrrs r!rzAddress.display_name8 !!r#c|jSr%)rr's r!rzAddress.username< ~r#c|jSr%)rr's r!rzAddress.domain@ |r#c |j}tj|stj|}|jr |dz|jzS|sdS|S)N@<>)rr DOT_ATOM_ENDS isdisjoint quote_stringr)rlps r!rzAddress.addr_specDsf ]#..r22 )$R((B ; *8dk) ) 4 r#cdd|jj|j|j|jS)Nz1{}(display_name={!r}, username={!r}, domain={!r}))r __class____name__rrrr's r!__repr__zAddress.__repr__Rs3BII/)4=$+GG Gr#c|j}tj|stj|}|r*|jdkrdn|j}d||S|jS)Nr/r z{} <{}>)rrSPECIALSr1r2rr)rdisprs r!__str__zAddress.__str__Wso ))$// -&t,,D  5"nd22I##D)44 4~r#ct|tstS|j|jko|j|jko|j|jkSr%) isinstancerNotImplementedrrrrothers r!__eq__zAddress.__eq__`sO%)) "! !!U%77, /, u|+ -r#)r r r N) r6 __module__ __qualname__r"propertyrrrrr7r;rAr#r!rr s((((T""X"XX  X GGG -----r#rcTeZdZddZedZedZdZdZdZ dS) GroupNc^ ||_|rt|n t|_dSr%)rtuple _addresses)rr addressess r!r"zGroup.__init__js2 *.7D% ***UWWr#c|jSr%r&r's r!rzGroup.display_name|r(r#c|jSr%)rJr's r!rKzGroup.addressess r#cXd|jj|j|jS)Nz${}(display_name={!r}, addresses={!r})rr5r6rrKr's r!r7zGroup.__repr__s,5<<("DN44 4r#cr|j2t|jdkrt|jdS|j}|3tj|st j|}dd|jD}|rd|zn|}d ||S)Nr, c34K|]}t|VdSr%str).0xs r! z Group.__str__..s(::a3q66::::::r# z{}:{};) rlenrKrTrr9r1r2r r)rr:adrstrs r!r;z Group.__str__s   $T^)<)$>t$D$D &t,,D::4>:::::!'3vVtV,,,r#czt|tstS|j|jko|j|jkSr%)r=rGr>rrKr?s r!rAz Group.__eq__s>%'' "! !!U%772%/1 3r#)NN) r6rBrCr"rDrrKr7r;rArEr#r!rGrGhsEEEE$""X"X444 ---33333r#rGcjeZdZ dZdZedZedZdZe dZ dZ dS) BaseHeaderc dgi}|||tj|drtj|d|d<t||d}|d=|j|fi||S)Ndefectsdecoded)parser_has_surrogates _sanitizerT__new__init)clsnamevaluekwdsrs r!rdzBaseHeader.__new__s2 %  i 1 1 ?#od9o>>DO{{3Y00 O $$ r#c0||_||_||_dSr%)_name _parse_tree_defects)rrg parse_treer_s r!rezBaseHeader.inits % r#c|jSr%)rkr's r!rgzBaseHeader.names zr#c*t|jSr%)rIrmr's r!r_zBaseHeader.defectssT]###r#ct|jj|jjt |f|fSr%)_reconstruct_headerr5r6 __bases__rT __getstate__r's r! __reduce__zBaseHeader.__reduce__s> '(D       ! !r#c8t||Sr%)rTrd)rfrhs r! _reconstructzBaseHeader._reconstructs{{3&&&r#c  tjtjtj|jdtjddgg}|jr;|tjtjddg||j| |S)Nz header-name:z header-seprXfws)policy) rHeader HeaderLabel ValueTerminalrgrlappendCFWSListWhiteSpaceTerminalfold)rr{headers r!rzBaseHeader.folds   $TY >>$S,77 9 : :    J MM!:3!F!F GHH J J J d&'''{{&{)))r#N) r6rBrCrdrerDrgr_ru classmethodrwrrEr#r!r]r]s@   X$$X$!!!''['*****r#r]cJt||i|Sr%)typerw)cls_namebasesrhs r!rrrrs" % $ $ 1 1% 8 88r#cHeZdZdZeejZedZ dS)UnstructuredHeaderNcf|||d<t|d|d<dS)Nrnr`) value_parserrTrfrhris r!razUnstructuredHeader.parse s4 --e44\d<011Yr#) r6rBrC max_count staticmethodrget_unstructuredrrrarEr#r!rrsDI< 788L22[222r#rceZdZdZdS)UniqueUnstructuredHeaderrPNr6rBrCrrEr#r!rrIIIr#rcpeZdZ dZeejZedZ fdZ e dZ xZ S) DateHeaderNc8|sN|dtjd|d<d|d<tj|d<dSt |t rt||d< tj|}nY#t$rL|dtj dd|d<tj|d<YdSwxYw||d<tj |d|d<| |d|d<dS)Nr_datetimer r`rnzInvalid date value or format) rrHeaderMissingRequiredValuer TokenListr=rTrparsedate_to_datetimerInvalidDateDefectformat_datetimerrs r!razDateHeader.parse$s2  O " "6#D#F#F G G G#D  DO!'!1!3!3D  F eS ! ! #DO 3E::   Y&&v'?@^'_'_```#'Z %+%5%7%7\"   !Z/Z0@AAY --d9o>>\s,BACCcn|d|_tj|i|dS)Nr)pop _datetimesuperrerargskwr5s r!rezDateHeader.init9s7 ++ d!b!!!!!r#c|jSr%)rr's r!rzDateHeader.datetime=r*r#)r6rBrCrrrrrrrarerDr __classcell__r5s@r!rrsI < 788L??[?("""""Xr#rceZdZdZdS)UniqueDateHeaderrPNrrEr#r!rrBrr#rczeZdZdZedZedZfdZe dZ e dZ xZ S) AddressHeaderNc4tj|\}}|Sr%)rget_address_list)rh address_lists r!rzAddressHeader.value_parserKs$5e<< er#ct|trr||x|d<}g}|jD]9}|t |jd|jD:t|j }n!t|ds|g}d|D}g}||d<||d<d d|D|d <d|vr ||d |d<dSdS) NrncZg|](}t|jpd|jpd|jpd)S)r )rrrr)rUmbs r! z'AddressHeader.parse..ZsV%C%C%C*,&-R_-B-/]-@b-/Y_"&>&>%C%C%Cr#__iter__cTg|]%}t|dstd|gn|&S)rKN)hasattrrGrUitems r!rz'AddressHeader.parse..csK777(,29{1K1K4eD4&)))/3777r#groupsr_rQc,g|]}t|SrErSrs r!rz'AddressHeader.parse..is$B$B$B4SYY$B$B$Br#r`) r=rTrrKrrGr all_mailboxeslistrrr )rfrhrirraddrr_s r!razAddressHeader.parseQsc eS ! ! 140@0@0G0G GD F$. E E eD$5%C%C04/A%C%C%CDDEEEE <344GG5*-- 7705777FGX!Y))$B$B6$B$B$BCCY t # #!$!1!1$y/!B!BD    $ #r#ct|d|_d|_t j|i|dS)Nr)rIr_groupsrJrrers r!rezAddressHeader.initmsFRVVH--..  d!b!!!!!r#c|jSr%)rr's r!rzAddressHeader.groupsrr,r#cd|j#td|jD|_|jS)Nc3.K|]}|jD]}|VdSr%)rK)rUgroupaddresss r!rWz*AddressHeader.addresses..ysW$L$L;@?$L$L07%,$L$L$L$L$L$L$Lr#)rJrIrr's r!rKzAddressHeader.addressesvsG ? "#$L$L$L$L$LLLDOr#) r6rBrCrrrrrarerDrrKrrs@r!rrGsI\ CC[C6""""" XXr#rceZdZdZdS)UniqueAddressHeaderrPNrrEr#r!rr~rr#rc$eZdZedZdS)SingleAddressHeaderct|jdkr'td|j|jdS)NrPz9value of single address header {} is not a single addressr)rYrKrrrgr's r!rzSingleAddressHeader.addresssJ t~   ! !#$*F49$5$577 7~a  r#N)r6rBrCrDrrEr#r!rrs- !!X!!!r#rceZdZdZdS)UniqueSingleAddressHeaderrPNrrEr#r!rrrr#rceZdZdZeejZedZ fdZ e dZ e dZ e dZxZS)MIMEVersionHeaderrPc>||x|d<}t||d<|d|j|jdn|j|d<|j|d<|j'd|d|d|d<dSd|d<dS)Nrnr`r_majorminorz{}.{}version)rrTextendrrrrrfrhrirns r!razMIMEVersionHeader.parses*-*:*:5*A*AA\Zj//Y Yz5666 * 0 8j>NW "(W   '%nnT']DMJJDOOO"DOOOr#c|d|_|d|_|d|_t j|i|dS)Nrrr)r_version_major_minorrrers r!rezMIMEVersionHeader.initsYy)) ffWoo ffWoo  d!b!!!!!r#c|jSr%)rr's r!rzMIMEVersionHeader.major {r#c|jSr%)rr's r!rzMIMEVersionHeader.minorrr#c|jSr%)rr's r!rzMIMEVersionHeader.version }r#)r6rBrCrrrparse_mime_versionrrrarerDrrrrrs@r!rrsI< 9::L # #[ #""""" XXXr#rcNeZdZdZedZfdZedZxZ S)ParameterizedMIMEHeaderrPc||x|d<}t||d<|d|j|ji|d<dSd|jD|d<dS)Nrnr`r_paramsci|]>\}}tj|tj|?SrE)rrclower)rUrgrhs r! z1ParameterizedMIMEHeader.parse..sUEEE#.4$od3399;;$)OE$:$:EEEr#)rrTrrrrs r!razParameterizedMIMEHeader.parses*-*:*:5*A*AA\Zj//Y Yz5666   $DNNNEE2<2CEEEDNNNr#cn|d|_tj|i|dS)Nr)r_paramsrrers r!rezParameterizedMIMEHeader.inits7vvh''  d!b!!!!!r#c*t|jSr%)rrr's r!rzParameterizedMIMEHeader.paramss ---r#) r6rBrCrrrarerDrrrs@r!rrsv I E E[ E"""""..X.....r#rceZdZeejZfdZedZ edZ edZ xZ S)ContentTypeHeaderctj|i|tj|jj|_tj|jj|_dSr%) rrerrcrlmaintype _maintypesubtype_subtypers r!rezContentTypeHeader.initsP d!b!!!)9)BCC(8(@AA r#c|jSr%)rr's r!rzContentTypeHeader.maintyper*r#c|jSr%)rr's r!rzContentTypeHeader.subtyperr#c&|jdz|jzS)N/)rrr's r! content_typezContentTypeHeader.content_types}s"T\11r#) r6rBrCrrparse_content_type_headerrrerDrrrrrs@r!rrs< @AALBBBBB XX22X22222r#rcTeZdZeejZfdZedZ xZ S)ContentDispositionHeaderctj|i||jj}||nt j||_dSr%)rrerlcontent_dispositionrrc_content_disposition)rrrcdr5s r!rezContentDispositionHeader.initsI d!b!!!   1*,*BB%/":M:M!!!r#c|jSr%)rr's r!rz,ContentDispositionHeader.content_dispositions ((r#) r6rBrCrr parse_content_disposition_headerrrerDrrrs@r!rrsj< GHHLNNNNN ))X)))))r#rcneZdZdZeejZedZ fdZ e dZ xZ S)ContentTransferEncodingHeaderrPc||x|d<}t||d<|d|jdSNrnr`r_rrTrrrs r!raz#ContentTransferEncodingHeader.parseO*-*:*:5*A*AA\Zj//Y Yz566666r#ctj|i|tj|jj|_dSr%)rrerrcrlcte_cters r!rez"ContentTransferEncodingHeader.inits9 d!b!!!OD$4$899 r#c|jSr%)rr's r!rz!ContentTransferEncodingHeader.ctes yr#)r6rBrCrrr&parse_content_transfer_encoding_headerrrrarerDrrrs@r!rrsI< MNNL77[7 :::::Xr#rcHeZdZdZeejZedZ dS)MessageIDHeaderrPc||x|d<}t||d<|d|jdSrrrs r!razMessageIDHeader.parserr#N) r6rBrCrrrparse_message_idrrrarEr#r!rr sDI< 788L77[777r#rsubjectdatez resent-datez orig-datesenderz resent-sendertoz resent-toccz resent-ccbccz resent-bccfromz resent-fromzreply-toz mime-versionz content-type)zcontent-dispositionzcontent-transfer-encodingz message-idc0eZdZ eedfdZdZdZdZdS)HeaderRegistryTcx i|_||_||_|r!|jtdSdSr%)registry base_class default_classupdate_default_header_map)rrruse_default_maps r!r"zHeaderRegistry.__init__6sN  $*  6 M !4 5 5 5 5 5 6 6r#c@ ||j|<dSr%)rrrrgrfs r! map_to_typezHeaderRegistry.map_to_typeHs# '* djjll###r#c|j||j}t d|jz||jfiS)N_)rgetrrrr6rrs r! __getitem__zHeaderRegistry.__getitem__NsDm d.@AAC $sDO&r&s] #"""""000000Y-Y-Y-Y-Y-Y-Y-Y-x/3/3/3/3/3/3/3/3ha*a*a*a*a*a*a*a*H999222222221 ++++++++\z 44444444n- !!!!!-!!! 3 """"""""J........:22222/222, ) ) ) ) )6 ) ) )* 7 7 7 7 7 7 7 7 $< $4J$4   $=  $7  $7M $7M $7M $7M$7 $5!"$5#$%=$A$3).*'*'*'*'*'*'*'*'*'*'r#