HEX
Server: Apache
System: Linux p102.lithium.hosting 4.18.0-553.141.1.el8_10.x86_64 #1 SMP Fri Jul 10 17:48:02 UTC 2026 x86_64
User: bvzmoamr (9955)
PHP: 8.1.34
Disabled: syslog
Upload Files
File: //proc/self/root/usr/lib64/python2.7/site-packages/mercurial/mail.pyc
�
1�3\c@@s�ddlmZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlm
Z
ddlmZmZmZmZmZddlmZmZde	jfd��YZd	e	jfd
��YZd�Zd�Zd
�Zd�Zdd�Zdd�Z d�Z!d�Z"de#d�Z$d�Z%d�Z&d�Z'de#d�Z(dd�Z)de#d�Z*de#d�Z+de#d�Z,ej-r�d�Z.n	d�Z.d�Z/dS( i(tabsolute_importNi(t_(tencodingterrortpycompattsslutiltutil(tprocutilt
stringutiltSTARTTLScB@s)eZdZdd�Zddd�ZRS(s�Derived class to verify the peer certificate for STARTTLS.

    This class allows to pass any keyword arguments to SSL socket creation.
    cK@s)tjj||�||_||_dS(N(tsmtplibtSMTPt__init__t_uit_host(tselftuithosttkwargs((s4/usr/lib64/python2.7/site-packages/mercurial/mail.pyR's	cC@s�|jd�s'd}tj|��n|jd�\}}|dkr�tj|j||d|jd|j�|_tj	|j�|_
d|_d|_
i|_d|_n||fS(Ntstarttlss*STARTTLS extension not supported by serverR	i�Rtserverhostnamei(thas_extnR
t
SMTPExceptiontdocmdRt
wrapsockettsockR
RtSSLFakeFiletfiletNonet	helo_respt	ehlo_resptesmtp_featurest
does_esmtp(Rtkeyfiletcertfiletmsgtresptreply((s4/usr/lib64/python2.7/site-packages/mercurial/mail.pyR,s				N(t__name__t
__module__t__doc__RRR(((s4/usr/lib64/python2.7/site-packages/mercurial/mail.pyR	"stSMTPScB@s)eZdZdddd�Zd�ZRS(s�Derived class to verify the peer certificate for SMTPS.

    This class allows to pass any keyword arguments to SSL socket creation.
    cK@sG||_||_tjj||�||_tj|_||_dS(N(	R!R"R
RRRt
SMTP_SSL_PORTtdefault_portR
(RRR!R"RR((s4/usr/lib64/python2.7/site-packages/mercurial/mail.pyRAs			cC@s�|jdkr/|jjd||ff�ntj||f|�}tj||j|jd|jd|j	�}|j
d�|_|S(Nisconnect: %r
RRtrb(t
debuglevelR
tdebugtsockettcreate_connectionRRR!R"RtmakefileR(RRtportttimeoutt
new_socket((s4/usr/lib64/python2.7/site-packages/mercurial/mail.pyt_get_socketJs 		N(R&R'R(RRR5(((s4/usr/lib64/python2.7/site-packages/mercurial/mail.pyR)<s	cC@s=y$ddl}t|dt�tSWntk
r8tSXdS(s9Returns true iff Python has TLS support, false otherwise.iNtHAS_TLS(tssltgetattrtFalsetTruetImportError(R7((s4/usr/lib64/python2.7/site-packages/mercurial/mail.pyt	_pyhastlsUs
c@s�|jdd�}|jdd�}|dkp<tj|�}|dk}|sW|ryt�rytjtd���n|jdd�}|s�tjtd���n|r�|jtd	��t|d|d|��n3|r�t	|d|d|��nt
jd|��|rd
}nd}tj
|jdd|��}|jtd
�||f��jd|d|�|r�|jtd���j��j��j�n|s�|r�|jtd��tj�j�n|jdd�}|jdd�}	|r"|	r"|j�}	n|r�|	r�|jtd�|�y�j||	�Wq�t
jk
r�}
tj|
��q�Xn�fd�}|S(s;build an smtp connection and return a function to send mailtsmtptlocal_hostnamettlsRtsmtpss/can't use TLS: Python SSL support not installedRs+smtp.host not configured - cannot send mails(using smtps)
i�iR2s$sending mail: smtp host %s, port %d
s(using starttls)
s(verifying remote certificate)
tusernametpasswords&(authenticating to mail server as %s)
c@s�y�j|||�SWn|tjk
rq}g|jj�D]}|d^q<}tjddj|���n%tjk
r�}tj|��nXdS(Nis
(	tsendmailR
tSMTPRecipientsRefusedt
recipientstvaluesRtAborttjoinR(tsenderRER#tinsttr(ts(s4/usr/lib64/python2.7/site-packages/mercurial/mail.pytsend�s&(tconfigRt	parseboolR<RRGRtnoteR)R	R
RRtgetporttconnecttehloRRtvalidatesocketRtgetpasstloginR(RR>R?RR@tmailhosttdefaultporttmailportRARBRJRM((RLs4/usr/lib64/python2.7/site-packages/mercurial/mail.pyt_smtp^sV	



	c	C@s�|jdd�}d�}d|||�djt||��f}|jtd�|�tj|d�}|jtj	|��|j
�}|r�tjdt
jj|jdd	�d
�tj|�f��ndS(ssend mail using sendmail.temailtmethodcS@stjtj|��S(N(RR[Rt
strtolocal(tx((s4/usr/lib64/python2.7/site-packages/mercurial/mail.pyt<lambda>�ts%s -f %s %st ssending mail: %s
twbs%s %siiN(RNRHtmapRPRRtpopentwriteRttonativeeoltcloseRRGtostpathtbasenametsplitRtexplainexit(	RRIRER#tprogramtstremailtcmdlinetfptret((s4/usr/lib64/python2.7/site-packages/mercurial/mail.pyt	_sendmail�s		cC@sxt|d�}tjdtj��}|jdtj|�tj|�f�|j|�|jd�|j�dS(swrite mails to mboxsab+s%a %b %d %H:%M:%S %YsFrom %s %s
s

N(topenttimetstrftimet	localtimeReRR]Rg(tmboxRIRER#Rptdate((s4/usr/lib64/python2.7/site-packages/mercurial/mail.pyt_mbox�s

c@sU�r&t�d�j��fd�S�jdd�dkrHt��S�fd�S(snmake a mail connection. return a function to send mail.
    call as sendmail(sender, list-of-recipients, msg).Rbc@st�|||�S(N(Ry(RLRKtm(Rw(s4/usr/lib64/python2.7/site-packages/mercurial/mail.pyR_�R`R[R\R=c@st�|||�S(N(Rr(RLRKRz(R(s4/usr/lib64/python2.7/site-packages/mercurial/mail.pyR_�R`(RsRgRNRZ(RRw((RwRs4/usr/lib64/python2.7/site-packages/mercurial/mail.pyRR�s

cC@s"t|d|�}||||�S(NRw(RR(RRIRER#RwRM((s4/usr/lib64/python2.7/site-packages/mercurial/mail.pyRC�scC@sz|jdd�}|dkrK|jdd�svtjtd���qvn+tj|�svtjtd�|��ndS(s=determine if we have enough config data to try sending email.R[R\R=Rs>smtp specified as email transport, but no smtp host configureds0%r specified as email transport, but not in PATHN(RNRRGRRtfindexe(RR\((s4/usr/lib64/python2.7/site-packages/mercurial/mail.pytvalidateconfig�scC@sStjtjj|�jj��}|jd�rO|jd�rOd|dS|S(R`tisosiso-i(RtsysbytesR[tcharsettCharsett
input_charsettlowert
startswith(tcs((s4/usr/lib64/python2.7/site-packages/mercurial/mail.pyt
codec2iana�s$tplaincC@s�ddtjtjg}|r*dg}nxR|D]J}y0|jtj|��t||t|��SWq1tk
rzq1Xq1Wt||d�S(s2Return MIME message suitable for a patch.
    Charset will be detected by first trying to decode as us-ascii, then utf-8,
    and finally the global encodings. If all those fail, fall back to
    ISO-8859-1, an encoding with that allows all byte sequences.
    Transfer encodings will be used if necessary.sus-asciisutf-8s
iso-8859-1(RtfallbackencodingtdecodeRtsysstrt
mimetextqpR�tUnicodeDecodeError(RLtsubtypetdisplayR�R((s4/usr/lib64/python2.7/site-packages/mercurial/mail.pyt
mimetextpatch�s

cC@s�tjj|�}tjj�}|jtjd|��x9|j�D]+}t	|�dkrHtjj
|_PqHqHW|j||�|S(s[Return MIME message.
    Quoted-printable transfer encoding will be used if necessary.
    stext/i�(
R[RR�tmessagetMessagetset_typeRR�t
splitlinestlentQPt
body_encodingtset_payload(tbodyR�RR�R#tline((s4/usr/lib64/python2.7/site-packages/mercurial/mail.pyR��scC@s�g|jdd�D]}|j�^q}tjj�tjj�dg}x*|D]"}||krS|j|�qSqSWg|D]}|jd�s�|^q�S(s;Obtains charsets to send mail parts not containing patches.R[tcharsetssutf-8tascii(t
configlistR�RR�tappendtendswith(RR�R�t	fallbacks((s4/usr/lib64/python2.7/site-packages/mercurial/mail.pyt	_charsets�s+
cC@s�|pt|�}t|t�s�x||D]a}y |jtj|��|fSWq(tk
raq(tk
r�|jt	d�|�q(Xq(W|jdd�Sny|j
d�Wn�tk
rwx�tjtj
fD]�}y|j
|�}Wntk
rq�nXxi|D]a}y |jtj|��|fSWqtk
rDqtk
rk|jt	d�|�qXqWq�WnX|dfS(sReturns (converted) string, charset tuple.
    Finds out best charset by cycling through sendcharsets in descending
    order. Tries both encoding and fallbackencoding for input. Only as
    last resort send as is in fake ascii.
    Caveat: Do not use for mail parts containing patches!s!ignoring invalid sendcharset: %s
R�tbackslashreplacesus-ascii(R�t
isinstancetbytestencodeRR�tUnicodeEncodeErrortLookupErrortwarnRR�R�RR�(RRLR�tsendcharsetstocsticstu((s4/usr/lib64/python2.7/site-packages/mercurial/mail.pyt_encodes4
 




 

'cC@s;|s7t|||�\}}ttjj||��S|S(s4Returns RFC-2047 compliant header from given string.(R�tstrR[theadertHeader(RRLR�R�R�((s4/usr/lib64/python2.7/site-packages/mercurial/mail.pyt
headencode.scC@s$t|t�st�t|||�}yZ|jd�\}}|jd�|jtjtj��j	d�}d||f}Wnxt
k
r�tjt
d�|��nOtk
r�y|jd�Wq�t
k
r�tjt
d�|��q�XnXtjtjj|tj|�f��S(Nt@R�tidnas%s@%ssinvalid email address: %ssinvalid local address: %s(R�R�tAssertionErrorR�RkR�RR�RR�R�RRGRt
ValueErrortbytesurlR[tutilst
formataddrtstrfromlocal(RtnametaddrR�tacctdom((s4/usr/lib64/python2.7/site-packages/mercurial/mail.pyt_addressencode6s 
$


!cC@sT|s
|r|pdStjjtj|��\}}t||tj|�|�S(s-Turns address into RFC-2047 compliant header.R`(R[R�t	parseaddrRR�R�R](RtaddressR�R�R�R�((s4/usr/lib64/python2.7/site-packages/mercurial/mail.pyt
addressencodeIs

!c	C@s�x-|D]%}t|t�std|��qW|r_g|D]}|j�r=|j�^q=Sg}xvtjjg|D]}tj|�^qx�D]F\}}|s�|r�t	||tj
|�|�}|j|�q�q�W|S(s�Turns a list of addresses into a list of RFC-2047 compliant headers.
    A single element of input list may contain multiple addresses, but output
    always has one address per items%r unexpectedly not a bytestr(R�R�R�tstripR[R�tgetaddressesRR�R�R]R�(	RtaddrsR�R�tatresultR�R�RK((s4/usr/lib64/python2.7/site-packages/mercurial/mail.pytaddrlistencodePs
#)/cC@s7d}|s't|||�\}}nt|d|�S(sgcreates mime text object, encodes it if needed, and sets
    charset and transfer-encoding accordingly.sus-asciiR�(R�R�(RRLR�R�R�((s4/usr/lib64/python2.7/site-packages/mercurial/mail.pyt
mimeencodeasc	C@sYtjj�}tj|dddddtd��}z|j|�SWd|j�XdS(NRR�terrorstsurrogateescapetnewlinei
(R[tparsertParsertiot
TextIOWrappertchrtparsetdetach(Rptep((s4/usr/lib64/python2.7/site-packages/mercurial/mail.pyR�jscC@stjj�}|j|�S(N(R[R�R�R�(RpR�((s4/usr/lib64/python2.7/site-packages/mercurial/mail.pyR�vscC@s�g}x�tjj|�D]�\}}|dk	rey|j|j|��wWqetk
raqeXnt|td��r�|j|�qny|j|jd��wWntk
r�nX|j|jd��qWt	j
dj|��S(sDecodes RFC-2047 headerusUTF-8s
ISO-8859-1u N(R[R�t
decode_headerRR�R�R�R�ttypeRt
unitolocalRH(RLtupartstpartR((s4/usr/lib64/python2.7/site-packages/mercurial/mail.pyt
headdecodezs$


(0t
__future__RR[t
email.charsettemail.headert
email.messagetemail.parserR�RhR
R/Rtti18nRR`RRRRRR�RRRR	R)R<RZRrRyRRRRCR|R�R9R�R�R�R�R�R�R�R�R�tispy3R�R�(((s4/usr/lib64/python2.7/site-packages/mercurial/mail.pyt<module>sH(			:		
					
	*