add-determinism 0.7.3

RPM buildroot helper to strip nondeterministic bits in files
Documentation
U

�AT^&�c
@sjddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlm
Zddddddd	d
ddd
ddg
ZdZdZdZdZdZe�dej�ZGdd�de�ZGdd�de�ZGdd�de�ZGdd�de�ZGdd�de�ZGdd�de�ZGdd	�d	e�ZGdd
�d
e�Z Gdd�de�Z!Gdd�de�Z"d d
�Z#d!d"�Z$d#d�Z%d$d%�Z&d&d'�Z'zddl(Z(Wne)k
�r�d(Z*YnXd)Z*Gd*d�d�Z+e*�r�Gd+d,�d,e+�Z,e�-d,�d-Z.Gd.d/�d/e+�Z/e0d0k�rfd1d2�Z1e1d3�Z2e1d4��3d5�Z4e5d6�d7Z6ej7�8�Z9e9�s"�q.e6e9Z6�qe5d8e:e6��e+d9�Z;e;�<d:�e;�=e2e4e6�e;�>�dS);�N)�body_encode�
SMTPException�SMTPNotSupportedError�SMTPServerDisconnected�SMTPResponseException�SMTPSenderRefused�SMTPRecipientsRefused�
SMTPDataError�SMTPConnectError�
SMTPHeloError�SMTPAuthenticationError�	quoteaddr�	quotedata�SMTPii��
s
i z	auth=(.*)c@�eZdZdS)rN��__name__�
__module__�__qualname__�rr�/usr/lib64/python3.8/smtplib.pyrG�c@r)rNrrrrrrJrc@r)rNrrrrrrQrc@�eZdZdd�ZdS)rcCs||_||_||f|_dS�N)�	smtp_code�
smtp_error�args)�self�code�msgrrr�__init__bszSMTPResponseException.__init__N�rrrr rrrrrYs	c@r)rcCs"||_||_||_|||f|_dSr)rr�senderr)rrrr"rrrr nszSMTPSenderRefused.__init__Nr!rrrrrgsc@r)rcCs||_|f|_dSr)�
recipientsr)rr#rrrr |szSMTPRecipientsRefused.__init__Nr!rrrrrtsc@r)rNrrrrrr�rc@r)r	Nrrrrrr	�rc@r)r
Nrrrrrr
�rc@r)rNrrrrrr�rcCs>tj�|�\}}||fdkr6|���d�r.|Sd|Sd|S)N��r%z<z<%s>)�email�utils�	parseaddr�stripZ
startswith�Z
addrstringZdisplayname�addrrrrr�scCs$tj�|�\}}||fdkr |S|S)Nr$)r&r'r(r*rrr�
_addr_only�sr,c	Cst�ddt�dt|��S)Nz(?m)^\.z..�(?:\r\n|\n|\r(?!\n))��re�sub�CRLF��datarrrr
�s�cCst�dd|�S)Ns(?m)^\.s..)r/r0)Zbindatarrr�_quote_periods��r4cCst�dt|�S)Nr-r.r2rrr�	_fix_eols�r5r6FTc@sveZdZdZdZdZdZdZdZdZ	e
Zdddej
dfdd�Zdd�Zd	d
�Zdd�Zd
d�Zdd�ZdMdd�Zdd�ZdNdd�Zdd�ZdOdd�ZdPdd�ZdQdd�Zd d!�ZdRd"d#�Zd$d%�Zd&d'�Zd(d)�ZdSd+d,�Z dTd-d.�Z!d/d0�Z"d1d2�Z#e#Z$d3d4�Z%d5d6�Z&d7d8�d9d:�Z'dUd;d<�Z(dVd=d>�Z)dWd?d@�Z*d7d8�dAdB�Z+dXdCdD�Z,dYdEdF�Z-dZdGdH�Z.dIdJ�Z/dKdL�Z0dS)[rrN�ehlor%c
Cs�||_||_i|_d|_||_|rL|�||�\}}|dkrL|��t||��|dk	r\||_nPt	�
�}d|krt||_n8d}	zt	�t	���}	Wnt	j
k
r�YnXd|	|_dS)N�ascii��Z.z	127.0.0.1z[%s])�_host�timeout�esmtp_features�command_encoding�source_address�connect�closer	�local_hostname�socketZgetfqdnZ
gethostbynameZgethostnameZgaierror)
r�host�portrAr;r>rrZfqdnr+rrrr �s*
z
SMTP.__init__cCs|Srr�rrrr�	__enter__r5zSMTP.__enter__cGsNz>z$|�d�\}}|dkr$t||��Wntk
r:YnXW5|��XdS)NZQUITi�)r@�docmdrr)rrrZmessagerrr�__exit__s
z
SMTP.__exit__cCs
||_dSr)�
debuglevel)rrIrrr�set_debuglevel szSMTP.set_debuglevelcGs@|jdkr,ttj����f|�dtji�nt|dtji�dS)N��file)rI�print�datetimeZnowZtime�sysZstderr�rrrrr�_print_debug)s
"zSMTP._print_debugcCs2|jdkr|�d||f|j�t�||f||j�S)Nrzconnect: to)rIrQr>rB�create_connection)rrCrDr;rrr�_get_socket/s

�zSMTP._get_socket�	localhostcCs�|r
||_|s||�d�|�d�kr||�d�}|dkr||d|�||dd�}}zt|�}Wntk
rztd��YnX|s�|j}|jdkr�|�d||f�t	�
d|||�|�|||j�|_
d|_|��\}}|jdkr�|�dt|��||fS)Nz:rrKznonnumeric port�connect:zsmtplib.connect)r>ZfindZrfind�int�
ValueError�OSError�default_portrIrQrO�auditrSr;�sockrL�getreply�repr)rrCrDr>Zirrrrrr?7s*


zSMTP.connectcCs�|jdkr|�dt|��|jr|t|t�r6|�|j�}t�	d||�z|j�
|�Wq�tk
rx|��t
d��Yq�Xnt
d��dS)Nrzsend:zsmtplib.send�Server not connectedzplease run connect() first)rIrQr]r[�
isinstance�str�encoder=rOrZZsendallrXr@r)rZsrrr�sendZs

z	SMTP.sendcCs2|dkrd|tf}nd||tf}|�|�dS)Nr%z%s%sz%s %s%s)r1rb)r�cmdrr`rrr�putcmdmszSMTP.putcmdc
CsPg}|jdkr|j�d�|_z|j�td�}Wn:tk
rj}z|��tdt|���W5d}~XYnX|s�|��td��|j	dkr�|�
dt|��t|�tkr�|��t
dd��|�|d	d��d
��|dd�}zt|�}Wn tk
�rd}Y�q YnX|dd	�d
kr�q qd�|�}|j	dk�rH|�
d||f�||fS)NZrbrKz Connection unexpectedly closed: zConnection unexpectedly closedrzreply:i�zLine too long.is 	
i�����s-s
zreply: retcode (%s); Msg: %a)rLr[Zmakefile�readline�_MAXLINErXr@rr`rIrQr]�lenr�appendr)rVrW�join)r�resp�line�erZerrcodeZerrmsgrrrr\us>

�


z
SMTP.getreplycCs|�||�|��Sr�rdr\)rrcrrrrrG�sz
SMTP.docmdcCs,|�d|p|j�|��\}}||_||fS)N�helo)rdrAr\�	helo_resp)r�namerrrrrro�sz	SMTP.heloc
Cs.i|_|�|j|p|j�|��\}}|dkrJt|�dkrJ|��td��||_|dkr`||fSd|_	|j�
d��d�}|d=|D]�}t�
|�}|r�|j�dd	�d
|�d�d|jd<q�t�
d|�}|r�|�d���}|j|�d�d���}	|dk�r|j�|d	�d
|	|j|<q�|	|j|<q�||fS)
Nrerr^��rKzlatin-1Z
�authr%� z((?P<feature>[A-Za-z0-9][A-Za-z0-9\-]*) ?�feature)r<rd�ehlo_msgrAr\rhr@r�	ehlo_resp�
does_esmtpZdecode�split�
OLDSTYLE_AUTHZmatchZgetZgroupsr/Zgroup�lowerZstringZendr))
rrqrrrk�eachZ
auth_matchZmruZparamsrrrr7�sB
��

��z	SMTP.ehlocCs|��|jkSr)r{r<)rZoptrrr�has_extn��z
SMTP.has_extncCs|�d|�|��dS)N�helprKrnrPrrrr�sz	SMTP.helpcCsd|_|�d�S)Nr8�rset)r=rGrErrrr��sz	SMTP.rsetcCs&z|��Wntk
r YnXdSr)r�rrErrr�_rset�sz
SMTP._rsetcCs
|�d�S)N�noop)rGrErrrr�r~z	SMTP.nooprcCshd}|rH|jrHtdd�|D��r:|�d�r2d|_ntd��dd�|�}|�dd	t|�|f�|��S)
Nr%css|]}|��dkVqdS)�smtputf8N)r{)�.0ZxrrrZ	<genexpr>szSMTP.mail.<locals>.<genexpr>r�zutf-8z SMTPUTF8 not supported by serverrt�mailz	FROM:%s%s)	rxZanyr}r=rrjrdrr\)rr"�options�
optionlistrrrr�s	

�z	SMTP.mailcCs<d}|r|jrdd�|�}|�ddt|�|f�|��S)Nr%rt�rcptzTO:%s%s)rxrjrdrr\)rZrecipr�r�rrrr�s

z	SMTP.rcptcCs�|�d�|��\}}|jdkr0|�d||f�|dkrDt||��n|t|t�r\t|��d�}t	|�}|dd�t
kr||t
}|dt
}|�|�|��\}}|jdkr�|�d||f�||fSdS)Nr3rzdata:ibr8i����s.)rdr\rIrQrr_r`r6rar4�bCRLFrb)rrrZreplZqrrrr3%s"





z	SMTP.datacC�|�dt|��|��S)N�vrfy�rdr,r\�rZaddressrrr�verifyB�zSMTP.verifycCr�)N�expnr�r�rrrr�Ir�z	SMTP.expncCsb|jdkr^|jdkr^d|��dkr0dks^n|��\}}d|krRdks^nt||��dS)Ni�ri+)rprwr7ror
)rrrkrrr�ehlo_or_helo_if_neededPs
zSMTP.ehlo_or_helo_if_neededT��initial_response_okc	Cs�|��}|r|�nd}|dk	rJt|�d�dd�}|�d|d|�\}}n|�d|�\}}|dkr�t�|�}t||��d�dd�}|�|�\}}|dkr�||fSt||��dS)Nr8r%)ZeolZAUTHrtiN�i�i�)Zupper�
encode_base64rarG�base64Zdecodebytesr)	rZ	mechanismZ
authobjectr�Zinitial_responseZresponserrk�	challengerrrrsas 
�z	SMTP.authcCs0|dkrdS|jdt�|j�d�|d���S)Nrtr8Zmd5)�user�hmacZHMAC�passwordraZ	hexdigest�rr�rrr�
auth_cram_md5�s
�zSMTP.auth_cram_md5cCsd|j|jfS)Nz%s%s�r�r�r�rrr�
auth_plain�szSMTP.auth_plaincCs|dkr|jS|jSdSrr�r�rrr�
auth_login�szSMTP.auth_logincs�|��|�d�std��|jd���dddg}�fdd�|D�}|sPtd��|||_|_|D]t}d	|���	d
d�}z4|j
|t||�|d�\}}	|d
kr�||	fWSWqbtk
r�}
z|
}W5d}
~
XYqbXqb|�dS)Nrsz,SMTP AUTH extension not supported by server.zCRAM-MD5ZPLAINZLOGINcsg|]}|�kr|�qSrr)r�rs�Zadvertised_authlistrr�
<listcomp>�s�zSMTP.login.<locals>.<listcomp>z(No suitable authentication method found.Zauth_z-Z_r�r�)
r�r}rr<ryrr�r�r{ZreplacersZgetattrr)rr�r�r�Zpreferred_authsZauthlistZ
authmethodZmethod_namerrkrmZlast_exceptionrr�r�login�s0
�
�
z
SMTP.logincCs�|��|�d�std��|�d�\}}|dkr�ts<td��|dk	rT|dk	rTtd��|dk	rl|dk	rltd��|dk	s||dk	r�ddl}|�d	t	d
�|dkr�t
j||d�}|j|j
|jd�|_
d|_d|_d|_i|_d|_n
t||��||fS)
N�starttlsz+STARTTLS extension not supported by server.ZSTARTTLSr9z&No SSL support included in this Python�4context and keyfile arguments are mutually exclusive�5context and certfile arguments are mutually exclusiver�Akeyfile and certfile are deprecated, use a custom context instead���certfile�keyfile�Zserver_hostname)r�r}rrG�	_have_sslZRuntimeErrorrW�warnings�warn�DeprecationWarning�ssl�_create_stdlib_context�wrap_socketr[r:rLrprwr<rxr)rr�r��contextrkZreplyr�rrrr��sB
����
z
SMTP.starttlscCs^|��g}t|t�r$t|��d�}|jrZ|�d�rF|�dt|��|D]}|�|�qJ|�	||�\}}	|dkr�|dkr�|�
�n|��t||	|��i}
t|t�r�|g}|D]H}|�
||�\}}	|dkr�|dkr�||	f|
|<|dkr�|�
�t|
��q�t|
�t|�k�r|��t|
��|�|�\}}	|dk�rZ|dk�rH|�
�n|��t||	��|
S)Nr8Zsizezsize=%drri�i�)r�r_r`r6rarxr}rirhr�r@r�rr�rr3r)r�	from_addr�to_addrsr�mail_options�rcpt_optionsZ
esmtp_optsZoptionrrkZsenderrsr|rrr�sendmailsF@








z
SMTP.sendmailc	Cs�|��|�d�}|dkr d}nt|�dkr2d}ntd��|dkr||d|krZ||dn
||d}tj�|g�dd}|dkr�d	d
�||d||d||d
fD�}dd
�tj�|�D�}t�|�}	|	d=|	d=d}
zd�|f|���	d�Wn.t
k
�r(|�d��s td��d}
YnXt
���R}|
�r^tjj||jjdd�d�}|d�}ntj�|�}|j|	dd�|��}
W5QRX|�|||
||�S)NzResent-Dater%rKzResent-z0message has more than one 'Resent-' header blockZSender�FromrcSsg|]}|dk	r|�qSrr)r�Zfrrrr��s�z%SMTP.send_message.<locals>.<listcomp>�ToZBccZCccSsg|]}|d�qS)rKr)r�Zarrrr��sz
Resent-BccFr8r�z�One or more source or delivery addresses require internationalized email support, but the server does not advertise the required SMTPUTF8 capabilityT)Zutf8)�policy�SMTPUTF8�
BODY=8BITMIMEr)Zlinesep)r�r�)r�Zget_allrhrWr&r'Zgetaddresses�copyrjraZUnicodeEncodeErrorr}r�ioZBytesIOZ	generatorZBytesGeneratorr�ZcloneZflattenZgetvaluer�)rrr�r�r�r�ZresentZ
header_prefixZaddr_fieldsZmsg_copyZ
internationalZbytesmsgZgZflatmsgrrr�send_message�sX

�
�

�
�

�
�zSMTP.send_messagecCs<z|j}d|_|r|��W5|j}d|_|r6|��XdSr)r[r@rL)rr[rLrrrr@�sz
SMTP.closecCs.|�d�}d|_|_i|_d|_|��|S)N�quitF)rGrwrpr<rxr@)rZresrrrr��s
z	SMTP.quit�rTrN�r%r�r�r�r��rr�rrr)NNN)rr)NNrr)1rrrrIr[rLrprvrwrx�	SMTP_PORTrYrB�_GLOBAL_DEFAULT_TIMEOUTr rFrHrJrQrSr?rbrdr\rGror7r}rr�r�r�r�r�r3r�r�r�r�rsr�r�r�r�r�r�r�r@r�rrrrr�sf�
/
	
#
1



3


'
	

B
8�
h�
M
c@s4eZdZeZdddddejddfdd�Zdd�ZdS)�SMTP_SSLr%rNc	
Cs�|dk	r|dk	rtd��|dk	r0|dk	r0td��|dk	s@|dk	rVddl}	|	�dtd�||_||_|dkrxtj||d�}||_t	�
||||||�dS)Nr�r�rr�r�r�)rWr�r�r�r�r�r�r�r�rr )
rrCrDrAr�r�r;r>r�r�rrrr �s(���zSMTP_SSL.__init__cCsD|jdkr|�d||f�t�||f||j�}|jj||jd�}|S)NrrUr�)rIrQrBrRr>r�r�r:)rrCrDr;Z
new_socketrrrrS
s
��zSMTP_SSL._get_socket)	rrr�
SMTP_SSL_PORTrYrBr�r rSrrrrr��s�
r�i�c@s,eZdZdZdeddfdd�Zd
dd	�ZdS)�LMTPZlhlor%NcCstj|||||d�dS)N)rAr>)rr )rrCrDrAr>rrrr -s�z
LMTP.__init__rTrcCs�|ddkrtj||||d�Sz(t�tjtj�|_d|_|j�|�WnBtk
r�|jdkrl|�	d|�|jr||j�
�d|_�YnX|��\}}|jdkr�|�	d|�||fS)Nrz/)r>z
connect fail:rU)rr?rBZAF_UNIXZSOCK_STREAMr[rLrXrIrQr@r\)rrCrDr>rrrrrr?3s"


zLMTP.connectr�)rrrrv�	LMTP_PORTr r?rrrrr�s
�
r�Z__main__cCs(tj�|d�tj��tj����S)Nz: )rOZstdoutZwriteZflush�stdinrfr))�promptrrrr�Ms
r�r�r�z,zEnter message, end with ^D:r%zMessage length is %drTrK)?rBr�r/Zemail.utilsr&Z
email.messageZemail.generatorr�r�r�rNrOZemail.base64mimerr�Z__all__r�r�r1r�rgZcompileZIrzrXrrrrrrrr	r
rrr,r
r4r6r�ZImportErrorr�rr�rir�r�rr�ZfromaddrryZtoaddrsrMrr�rfrlrhZserverrJr�r�rrrrZ<module>,s��


	
-0
/