add-determinism 0.7.3

RPM buildroot helper to strip nondeterministic bits in files
Documentation
B

�/g^�)c@s:ddlZddlZddlZddlZddlmZGdd�d�Ze�Zd%dd�Ze�	de�d	d
�Z
xd��D]Ze�	ee
�qhWdd
�Z
x d��D]Ze�	dee
�q�Wdd�Ze�	de�dd�Zdd�Zdd�Zdd�Zd&dd�Ze�ee�d'd d!�Ze�ejje�d(d#d$�Zx eeefD]Ze�ee��q WdS))�N)�
quoprimimec@s<eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
S)�ContentManagercCsi|_i|_dS�N)�get_handlers�set_handlers)�self�r�,/usr/lib64/python3.7/email/contentmanager.py�__init__	szContentManager.__init__cC�||j|<dSr)r)r�key�handlerrrr�add_get_handler
�zContentManager.add_get_handlercOs||��}||jkr(|j||f|�|�S|��}||jkrP|j||f|�|�Sd|jkrp|jd|f|�|�St|��dS)N�)Zget_content_typer�get_content_maintype�KeyError)r�msg�args�kwZcontent_type�maintyperrr�get_contents


zContentManager.get_contentcCr
r)r)rZtypekeyrrrr�add_set_handlerrzContentManager.add_set_handlercOs>|��dkrtd��|�||�}|��|||f|�|�dS)NZ	multipartz"set_content not valid on multipart)rZ	TypeError�_find_set_handlerZ
clear_content)rr�objrrrrrr�set_contents
zContentManager.set_contentc	Cs�d}x�t|�jD]�}||jkr(|j|S|j}t|dd�}|rLd�||f�n|}|dkr\|}||jkrp|j|S||jkr�|j|S|j}||jkr|j|SqWd|jkr�|jdSt|��dS)N�
__module__rZ.)ZtypeZ__mro__r�__qualname__Zgetattr�join�__name__r)	rrrZfull_path_for_error�typZqnameZmodnameZ	full_path�namerrrr's&








z ContentManager._find_set_handlerN)	rrrr	r
rrrrrrrrrs	r�replacecCs&|jdd�}|�dd�}|j||d�S)NT��decode�charsetZASCII)�errors)�get_payloadZ	get_paramr#)rr%Zcontentr$rrr�get_text_content@sr'�textcCs|jdd�S)NTr"�r&�rrrr�get_non_text_contentGrr+zaudio image video applicationcCs
|�d�S�Nrr)r*rrr�get_message_contentMrr-zrfc822 external-bodyzmessage/cCst|�d��Sr,)�bytesr&r*rrr�%get_and_fixup_unknown_message_contentSsr/�messagec
s�d�||f�|d<|r�t|dd�s<|j��fdd�|D�}y,x&|D]}|jrX|jd�|||j<qDWWn@tjjk
r�}ztd�	|j
|jd���|�Wdd}~XYnXdS)	Nz/zContent-Typerr csg|]}�j��|g���qSr)Zheader_factoryZheader_source_parse)�.0�header�Zmprrz
<listcomp>dsz _prepare_set.<locals>.<listcomp>zInvalid header: {})�policy)rZhasattrr4Zdefectsr �emailr%ZHeaderDefect�
ValueError�formatZfold)rr�subtype�headersr2Zexcrr3r�_prepare_set_s


r:cCs||dkr|dk	rd}|dk	r$||d<|dk	r>|jd|ddd�|dk	rN||d<|dk	rxx |��D]\}}|�||�q`WdS)NZ
attachmentzContent-Disposition�filenameT)r2r!z
Content-ID)�	set_paramZitems)r�dispositionr;�cid�paramsrZvaluerrr�
_finalize_setpsr@cCsZg}|dd}x>tdt|�|�D]*}||||�}|�t�|��d��q"Wd�|�S)Niir�asciir)Zrange�lenZappend�binascii�
b2a_base64r#r)�data�max_line_lengthZ
encoded_linesZunencoded_bytes_per_lineZiZthislinerrr�_encode_base64�srGcs||�|���}|j�d���fdd�}dd�}|dkr�yd||��d�fStk
r\YnX|jdkr�tdd	�|D��|jkr�d||��dd
�fS||dd��}t�	|�d�|j�}t
�|�}	t|�t|	�kr�d
}nd}t|�dkr�||fS|dk�r
||��d�}
nj|dk�r&||��dd
�}
nN|dk�rJt�	||��d�|j�}
n*|d
k�rft
||�|j�}
ntd�|���||
fS)NrAcs��|��Sr�r��lines��lineseprr�
embedded_body��z#_encode_text.<locals>.embedded_bodycSsd�|�dS)Ns
rHrIrrr�normal_body�rNz!_encode_text.<locals>.normal_body�7bit�8bitcss|]}t|�VqdSr)rB)r1Zxrrrz	<genexpr>�sz_encode_text.<locals>.<genexpr>�surrogateescapei
zlatin-1�base64�quoted-printablez$Unknown content transfer encoding {})�encodeZ
splitlinesrLr#ZUnicodeDecodeErrorZcte_typeZmaxrFrZbody_encoderCrDrBrGr6r7)�stringr$�cter4rJrMrOZsniffZsniff_qpZsniff_base64rErrKr�_encode_text�s@






rX�plain�utf-8c
Csdt|d||	�t||||j�\}}
|�|
�|jdtjj�||�dd�||d<t	|||||�dS)Nr(r$T�r!�Content-Transfer-Encoding)
r:rXr4�set_payloadr<r5r$ZALIASESZgetr@)rrVr8r$rWr=r;r>r?r9Zpayloadrrr�set_text_content�s
r^�rfc822c		Cs�|dkrtd��|dkr@|dkr.td�|���|dkr:dn|}n0|dkrd|dkr^td	�|���d
}n|dkrpd
}t|d||�|�|g�||d<t|||||�dS)
NZpartialz4message/partial is not supported for Message objectsr_)NrPrQ�binaryz*message/rfc822 parts do not support cte={}rQz
external-body)NrPz1message/external-body parts do not support cte={}rPr0r\)r6r7r:r]r@)	rr0r8rWr=r;r>r?r9rrr�set_message_content�s$rarSc

Cs�t||||	�|dkr(t||jjd�}nN|dkrNtj|dddd�}|�d�}n(|dkrb|�d�n|d	krv|�dd
�}|�|�||d<t	|||||�dS)NrS)rFrTFT)Zistextr2Z	quotetabsrArP)rQr`rRr\)
r:rGr4rFrCZb2a_qpr#rUr]r@)
rrErr8rWr=r;r>r?r9rrr�set_bytes_content�s
rbr[)rYrZNNNNNN)r_NNNNNN)rSNNNNN)rCZ
email.charsetr5Z
email.messageZemail.errorsrrZraw_data_managerr'r
r+Zsplitrr-r8r/r:r@rGrXr^rZstrrar0ZMessagerbr.Z	bytearrayZ
memoryviewrrrrrZ<module>sD6
	'