add-determinism 0.7.3

RPM buildroot helper to strip nondeterministic bits in files
Documentation
a

Z��^�&c@s�ddlZddlZddlmZddlmZgd�ZiZdZgd�Z	dd�Z
dd
d�Zdd
�Zdd�Z
Gdd�d�Zddd�Zeefdd�Zdd�Zdd�Zedkr�e�dS)�N)�filterfalse)�GenericAlias)�clear_cache�cmp�dircmp�cmpfiles�DEFAULT_IGNORESi )ZRCSZCVSZtagsz.gitz.hgz.bzrZ_darcsZ__pycache__cCst��dS�N)�_cacheZclear�r
r
�/usr/lib64/python3.9/filecmp.pyrsrTcCs�tt�|��}tt�|��}|dtjks8|dtjkr<dS|rL||krLdS|d|dkr`dSt�||||f�}|dur�t||�}tt�dkr�t�|t||||f<|S)NrFT�id)	�_sig�os�statZS_IFREGr	Zget�_do_cmp�lenr)�f1�f2�shallowZs1Zs2Zoutcomer
r
rrs
rcCst�|j�|j|jfSr)r�S_IFMT�st_modeZst_sizeZst_mtime)Zstr
r
rr
Es
�r
c	Cs�t}t|d���}t|d��j}|�|�}|�|�}||krTWd�Wd�dS|sWd�Wd�dSqWd�n1s�0YWd�n1s�0YdS)NZrbFT)�BUFSIZEZopenZread)rrZbufsizeZfp1Zfp2Zb1Zb2r
r
rrJs

rc@s�eZdZddd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Zdd�Z	dd�Z
dd�Zdd�Ze
eeeeeeeeeeeed�Zdd�Zee�ZdS)rNcCsD||_||_|dur$tjtjg|_n||_|dur:t|_n||_dSr)�left�rightrZcurdirZpardir�hider�ignore)�self�a�brrr
r
r�__init__yszdircmp.__init__cCsPtt�|j�|j|j�|_tt�|j�|j|j�|_|j�	�|j�	�dSr)
�_filterrZlistdirrrr�	left_listr�
right_list�sort�rr
r
r�phase0�s
�
�
z
dircmp.phase0cCs�ttttjj|j�|j��}ttttjj|j�|j��}tt|j	t
|j|���|_tt|j	t
|j|���|_tt|j	t
|j|���|_dSr)�dictZzipZmapr�pathZnormcaser!r"�listZ__getitem__Zfilter�__contains__�commonr�	left_only�
right_only)rrrr
r
r�phase1�s
z
dircmp.phase1c		Csg|_g|_g|_|jD]�}tj�|j|�}tj�|j|�}d}zt�	|�}Wnt
ydd}Yn0zt�	|�}Wnt
y�d}Yn0|r�t	�|j�}t	�|j�}||kr�|j�
|�n<t	�|�r�|j�
|�n$t	�|�r�|j�
|�n|j�
|�q|j�
|�qdS)Nrr)�common_dirs�common_files�common_funnyr*rr'�joinrrr�OSErrorrr�appendZS_ISDIRZS_ISREG)	r�xZa_pathZb_pathZokZa_statZb_statZa_typeZb_typer
r
r�phase2�s4




z
dircmp.phase2cCs&t|j|j|j�}|\|_|_|_dSr)rrrr/�
same_files�
diff_files�funny_files)rZxxr
r
r�phase3�sz
dircmp.phase3cCsNi|_|jD]<}tj�|j|�}tj�|j|�}t|||j|j	�|j|<qdSr)
�subdirsr.rr'r1rrrrr)rr4Za_xZb_xr
r
r�phase4�s

z
dircmp.phase4cCs$|��|j��D]}|��qdSr)r;r:�values�phase4_closure�rZsdr
r
rr=�szdircmp.phase4_closurecCs�td|j|j�|jr2|j��td|jd|j�|jrT|j��td|jd|j�|jrp|j��td|j�|jr�|j��td|j�|jr�|j��td|j�|j	r�|j	��td|j	�|j
r�|j
��td|j
�dS)	NZdiffzOnly inz:zIdentical files :zDiffering files :zTrouble with common files :zCommon subdirectories :zCommon funny cases :)�printrrr+r#r,r6r7r8r.r0r$r
r
r�report�s,






z
dircmp.reportcCs*|��|j��D]}t�|��qdSr)r@r:r<r?r>r
r
r�report_partial_closure��zdircmp.report_partial_closurecCs*|��|j��D]}t�|��qdSr)r@r:r<r?�report_full_closurer>r
r
rrC�rBzdircmp.report_full_closure)r:r6r7r8r.r/r0r*r+r,r!r"cCs*||jvrt|��|j||�t||�Sr)�	methodmapZAttributeErrorZgetattr)rZattrr
r
r�__getattr__�s
zdircmp.__getattr__)NN)�__name__Z
__module__Z__qualname__rr%r-r5r9r;r=r@rArCr&rDrEZclassmethodrZ__class_getitem__r
r
r
rrWs$"
#
�rcCsJgggf}|D]6}tj�||�}tj�||�}|t|||��|�q|Sr)rr'r1�_cmpr3)rrr*rZresr4ZaxZbxr
r
rr�s
rcCs.z|||||��WSty(YdS0dS)N�)r2)rrZsh�absrr
r
rrGsrGcCstt|j|��Sr)r(rr))ZflistZskipr
r
rr "sr cCsrddl}ddl}|�|jdd�d�\}}t|�dkrB|�dd��t|d|d�}d|vrf|��n|��dS)NrrZrrHzneed exactly two args)z-rZ)�sys�getoptZargvrZGetoptErrorrrCr@)rJrKZoptionsZargsZddr
r
r�demo(s
rLZ__main__�TrM)rrZ	itertoolsrZtypesrZ__all__r	rrrrr
rrrrIrGr rLrFr
r
r
rZ<module>
s&
'
(