U e5df&�@s�ddlZddlZddlmZdddddgZiZdZd d d d d dddgZdd�Zd!dd�Z dd�Z dd�Z Gdd�d�Z d"dd�Z ee fdd�Zdd�Zdd�Zed kr�e�dS)#�N)� filterfalse� clear_cache�cmp�dircmp�cmpfiles�DEFAULT_IGNORESi ZRCSZCVSZtagsz.gitz.hgz.bzrZ_darcs� __pycache__cCs t��dS�N)�_cache�clear�r r �/usr/lib64/python3.8/filecmp.pyrsTcCs�tt�|��}tt�|��}|dtjks8|dtjkrt �|�r�|j� |�n&t �|��r|j� |�n |j� |�q|j� |�qdS)Nrr)� common_dirs� common_files� common_funnyrBrr<�joinr(r)r�OSErrorrr�append�S_ISDIR�S_ISREG) r.�xZa_pathZb_path�okZa_statZwhyZb_statZa_typeZb_typer r r �phase2�s4     z dircmp.phase2cCs&t|j|j|j�}|\|_|_|_dSr )rr(r)rG� same_files� diff_files� funny_files)r.Zxxr r r �phase3�sz dircmp.phase3cCsNi|_|jD]<}tj�|j|�}tj�|j|�}t|||j|j �|j|<q dSr ) �subdirsrFrr<rIr(r)rr-r,)r.rNZa_xZb_xr r r �phase4�s  z dircmp.phase4cCs$|��|j��D] }|��qdSr )rVrU�values�phase4_closure�r.Zsdr r r rX�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 in�:zIdentical files :zDiffering files :zTrouble with common files :zCommon subdirectories :zCommon funny cases :) �printr(r)rCr6rDrQrRrSrFrHr7r r r �report�s,           z dircmp.reportcCs*|��|j��D]}t�|��qdSr )r\rUrWr[rYr r r �report_partial_closure�szdircmp.report_partial_closurecCs*|��|j��D]}t�|��qdSr )r\rUrWr[�report_full_closurerYr r r r^�szdircmp.report_full_closure) rUrQrRrSrFrGrHrBrCrDr4r5cCs*||jkrt|��|j||�t||�Sr )� methodmap�AttributeError�getattr)r.�attrr r r � __getattr__�s zdircmp.__getattr__)NN)�__name__� __module__� __qualname__r1r8rErPrTrVrXr\r]r^r9r_rcr r r r rVs0" # �cCsJgggf}|D]6}tj�||�}tj�||�}|t|||��|�q|Sr )rr<rI�_cmprK)r/r0rBr�resrNZaxZbxr r r r�s cCs0z|||||�� WStk r*YdSXdS)N�)rJ)r/r0Zsh�absrr r r rgsrgcCstt|j|��Sr )r>rrA)Zflist�skipr r r r2sr2cCsrddl}ddl}|�|jdd�d�\}}t|�dkrB|�dd��t|d|d�}d|krf|��n|��dS)Nrr�rrizneed exactly two args)z-r�)�sys�getopt�argvrZ GetoptErrorrr^r\)rnroZoptions�argsZddr r r �demo$s   rr�__main__)T)T)rr� itertoolsr�__all__r r"rrrrrrrrjrgr2rrrdr r r r � s4 � ' %