;ò ›A?c@s&dZdkZdkZdkZdkZdkZdkZdklZdk l Z dk l Z dk l Zdk lZdk lZdk lZyeefWnej od Zd ZnXyd klZWnej od „ZnXdkZd klZlZdZdZ dZ!dZ"ei#dƒZ$ei#dƒZ%d„Z&d„Z'd„Z(d„Z)d„Z*d„Z+ei#dei,ei-BƒZ.d„Z/ddd„Z0e1ed„Z2e1d „Z3d!„Zd"„Zd#„Z4d$„Z5d%„Z6e1e1d&„Z7ei#d'ƒZ8d(„Z9dS()sMiscellaneous utilities. N(sStringIO(sListType(squote(s AddressList(s mktime_tz(s parsedate(s parsedate_tzii(s decodestringcCsdk}| o|Snt|ƒ}tƒ}|i||ƒ|iƒ}|i dƒ o |i dƒo |d Sn|SdS(Ns iÿÿÿÿ( squopris_quoprisssStringIOsinfpsoutfpsdecodesgetvaluesvaluesendswith(sssoutfpsvalues_quoprisinfp((s-/usr/pkg/lib/mailman/pythonlib/email/Utils.pys_qdecode"s    ! (s_bencodes_qencodes, sus s[][\\()<>@,:;".]s [][\\()"]cCs|SdS(N(ss(ss((s-/usr/pkg/lib/mailman/pythonlib/email/Utils.pys _identity@scCsT| o|Snti|ƒ}|idƒ o |idƒo |d Sn|SdS(Ns iÿÿÿÿ(sssbase64s decodestringsvaluesendswith(sssvalue((s-/usr/pkg/lib/mailman/pythonlib/email/Utils.pys_bdecodeDs ! cCs2tidt|ƒ}tidt|ƒ}|SdS(s+Replace all line-ending characters with .s (?s %s%s%s <%s>N(spairsnamesaddresssquotess specialsressearchs escapesressub(spairsnamesquotessaddress((s-/usr/pkg/lib/mailman/pythonlib/email/Utils.pys formataddrZs  cCs!tidtdƒt|ƒSdS(Ns$Use email.Utils.formataddr() insteadi(swarningsswarnsDeprecationWarnings formataddrspair(spair((s-/usr/pkg/lib/mailman/pythonlib/email/Utils.pysdump_address_pairls  cCs&ti|ƒ}t|ƒ}|iSdS(s7Return a list of (REALNAME, EMAIL) for each fieldvalue.N(s COMMASPACEsjoins fieldvaluessalls _AddressListsas addresslist(s fieldvaluessasall((s-/usr/pkg/lib/mailman/pythonlib/email/Utils.pys getaddressesss s_ =\? # literal =? (?P[^?]*?) # non-greedy up to the next ? is the charset \? # literal ? (?P[qb]) # either a "q" or a "b", case insensitive \? # literal ? (?P.*?) # non-greedy up to the next ?= is the atom \?= # literal ?= cCs§tidtdƒdkl}||ƒ}t|tƒ o|Sng}xH|D]@\}}|t jo|i |ƒqR|i t||ƒƒqRWti|ƒSdS(s•Return a decoded string according to RFC 2047, as a unicode string. NOTE: This function is deprecated. Use Header.decode_header() instead. s#Use Header.decode_header() instead.i(s decode_headerN(swarningsswarnsDeprecationWarnings email.Headers decode_headersssLs isinstancesListTypesrtnsatomscharsetsNonesappendsunicodes UEMPTYSTRINGsjoin(sssatomscharsetsrtnsLs decode_header((s-/usr/pkg/lib/mailman/pythonlib/email/Utils.pysdecode†s    s iso-8859-1sqcCstidtdƒ|iƒ}|djot|ƒ}n+|djot|ƒ}nt d|‚d|iƒ||fSdS(s&Encode a string according to RFC 2047.s#Use Header.Header.encode() instead.isqsbsIllegal encoding code: s =?%s?%s?%s?=N( swarningsswarnsDeprecationWarningsencodingslowers_qencodesssestrs_bencodes ValueErrorscharset(ssscharsetsencodingsestr((s-/usr/pkg/lib/mailman/pythonlib/email/Utils.pysencode¡s    cCsK|tjotiƒ}n|oti|ƒ}tio|do ti}n ti}t t |ƒdƒ\}}|djo d}nd}d|||df}nti|ƒ}d}d d d d d dddg|d|dddddddddddddg |dd|d|d |d!|d"|fSd#S($s²Returns a date string as specified by RFC 2822, e.g.: Fri, 09 Nov 2001 01:08:47 -0000 Optional timeval if given is a floating point time value as accepted by gmtime() and localtime(), otherwise the current time is used. Optional localtime is a flag that when True, interprets timeval, and returns a date relative to the local timezone instead of UTC, properly taking daylight savings time into account. iÿÿÿÿiis-s+s %s%02d%02di<s-0000s"%s, %02d %s %04d %02d:%02d:%02d %ssMonsTuesWedsThusFrisSatsSuniisJansFebsMarsAprsMaysJunsJulsAugsSepsOctsNovsDeciiiiN(stimevalsNonestimes localtimesnowsdaylightsaltzonesoffsetstimezonesdivmodsabsshourssminutesssignszonesgmtime(stimevals localtimeszonessignshourssoffsetsnowsminutes((s-/usr/pkg/lib/mailman/pythonlib/email/Utils.pys formatdate¯s      cCstiƒ}tidti|ƒƒ}tiƒ}ti dƒ}|t jo d}n d|}t iƒ}d|||||f}|SdS(sèReturns a string suitable for RFC 2822 compliant Message-ID, e.g: <20020201195627.33539.96671@nightshade.la.mastaler.com> Optional idstring if given is a string used to strengthen the uniqueness of the message id. s %Y%m%d%H%M%Si †ss.s<%s.%s.%s%s@%s>N(stimestimevalsstrftimesgmtimesutcdatesossgetpidspidsrandoms randrangesrandintsidstringsNonessocketsgetfqdnsidhostsmsgid(sidstringsutcdatesrandintsmsgidspidstimevalsidhost((s-/usr/pkg/lib/mailman/pythonlib/email/Utils.pys make_msgidÝs      cCs| otSnt|ƒSdS(N(sdatasNones _parsedate(sdata((s-/usr/pkg/lib/mailman/pythonlib/email/Utils.pys parsedateöscCs| otSnt|ƒSdS(N(sdatasNones _parsedate_tz(sdata((s-/usr/pkg/lib/mailman/pythonlib/email/Utils.pys parsedate_tzüscCs1t|ƒi}| oddfSn|dSdS(Nsi(s _AddressListsaddrs addresslistsaddrs(saddrsaddrs((s-/usr/pkg/lib/mailman/pythonlib/email/Utils.pys parseaddrscCs•t|ƒdjoz|idƒo |idƒo'|dd!iddƒiddƒSn|idƒo |idƒo|dd!Sqn|Sd S( sRemove quotes from a string.is"iÿÿÿÿs\\s\s\"sN(slensstrs startswithsendswithsreplace(sstr((s-/usr/pkg/lib/mailman/pythonlib/email/Utils.pysunquote s ' cCsqdk}|iddƒ}t|ƒdjott|i|ƒfSn|\}}}|||i|ƒfSdS(s#Decode string according to RFC 2231Ns'ii( surllibssssplitspartsslensNonesunquotescharsetslanguage(ssslanguagescharsetspartssurllib((s-/usr/pkg/lib/mailman/pythonlib/email/Utils.pysdecode_rfc2231s cCsldk}|i|ddƒ}|tjo |tjo|Sn|tjo d}nd|||fSdS(sÜEncode string according to RFC 2231. If neither charset nor language is given, then s is returned as-is. If charset is given but not language, the string is encoded using the empty string for language. Nssafess%s'%s'%s(surllibsquotessscharsetsNoneslanguage(ssscharsetslanguagesurllib((s-/usr/pkg/lib/mailman/pythonlib/email/Utils.pysencode_rfc2231 s   s&^(?P\w+)\*((?P[0-9]+)\*?)?$c Csg}h} |d\}}|i||fƒxµ|dD]©\}}t|ƒ}ti|ƒ}|o^|i ddƒ\}}|t j ot |ƒ}n| i|gƒ} | i||fƒq:|i|dt|ƒfƒq:W| o™x–| iƒD]„\}}g}|iƒx!|D]\}} |i| ƒqWtti|ƒƒ\}}}|i|||dt|ƒffƒqûWn|SdS(sDecode parameters list according to RFC 2231. params is a sequence of 2-tuples containing (content type, string value). iisnamesnums"%s"N(s new_paramssrfc2231_paramssparamssnamesvaluesappendsunquotesrfc2231_continuationsmatchsmosgroupsnumsNonesints setdefaultsrfc2231_param1squotesitemss continuationsssorts continuationsdecode_rfc2231s EMPTYSTRINGsjoinscharsetslanguage( sparamssnameslanguages new_paramssmoscharsetsvalues continuationssnumsrfc2231_param1srfc2231_paramss continuation((s-/usr/pkg/lib/mailman/pythonlib/email/Utils.pys decode_params2s6   !   .(:s__doc__stimessocketsresrandomsosswarningss cStringIOsStringIOstypessListTypesemail._parseaddrsquotes AddressLists _AddressLists mktime_tzs parsedates _parsedates parsedate_tzs _parsedate_tzsTruesFalses NameErrorsquopris decodestrings_qdecodes ImportErrorsbase64semail.Encoderss_bencodes_qencodes COMMASPACEs EMPTYSTRINGs UEMPTYSTRINGsCRLFscompiles specialsres escapesres _identitys_bdecodesfix_eolss formataddrsdump_address_pairs getaddressessVERBOSEs IGNORECASEsecresdecodesencodesNones formatdates make_msgids parseaddrsunquotesdecode_rfc2231sencode_rfc2231srfc2231_continuations decode_params(,s parsedatesunquotes UEMPTYSTRINGs_qencodesrandoms EMPTYSTRINGs _AddressLists formataddrsdecodes specialsres_bdecodesbase64s make_msgidsres parsedate_tzs formatdates _identitys escapesresrfc2231_continuationsTruesdecode_rfc2231s_qdecodes getaddressesswarningssquotesencodesencode_rfc2231sCRLFsListTypes decode_paramssdump_address_pairs parseaddrsecresFalsessocketsStringIOsossfix_eolss_bencodestimes _parsedates _parsedate_tzs mktime_tzs COMMASPACE((s-/usr/pkg/lib/mailman/pythonlib/email/Utils.pys?sb                    .