???<!-- GIF89;a -->
123123123123
.....................................................................................................................................???<!-- GIF89;a -->
123123123123
.....................................................................................................................................U
    e5df&                     @   s   d dl Z d dlZd dlmZ dddddgZi ZdZd	d
ddddddgZdd Zd!ddZ	dd Z
dd ZG dd dZd"ddZee	fddZdd Zdd Zed kre  dS )#    N)filterfalseclear_cachecmpdircmpcmpfilesDEFAULT_IGNORESi    ZRCSZCVSZtagsz.gitz.hgz.bzrZ_darcs__pycache__c                   C   s   t   d S N)_cacheclear r   r   /usr/lib64/python3.8/filecmp.pyr      s    Tc                 C   s   t t| }t t|}|d tjks8|d tjkr<dS |rL||krLdS |d |d kr`dS t| |||f}|d krt| |}ttdkrt  |t| |||f< |S )Nr   FT   d   )	_sigosstatS_IFREGr
   get_do_cmplenr   )f1f2shallows1s2Zoutcomer   r   r   r      s    
c                 C   s   t | j| j| jfS r	   )r   S_IFMTst_modest_sizest_mtime)str   r   r   r   D   s    
r   c              
   C   s   t }t| dn}t|dX}||}||}||krPW 5 Q R  W 5 Q R  dS |sW 5 Q R  W 5 Q R  dS qW 5 Q R X W 5 Q R X d S )NrbFT)BUFSIZEopenread)r   r   bufsizefp1fp2Zb1Zb2r   r   r   r   I   s    

r   c                   @   s   e Zd ZdddZdd Zdd Zdd	 Zd
d Zdd Zdd Z	dd Z
dd Zdd ZeeeeeeeeeeeeedZdd ZdS )r   Nc                 C   sD   || _ || _|d kr$tjtjg| _n|| _|d kr:t| _n|| _d S r	   )leftrightr   curdirpardirhider   ignore)selfabr-   r,   r   r   r   __init__x   s    zdircmp.__init__c                 C   sP   t t| j| j| j | _t t| j| j| j | _| j	  | j	  d S r	   )
_filterr   listdirr(   r,   r-   	left_listr)   
right_listsortr.   r   r   r   phase0   s    


zdircmp.phase0c                 C   s   t tttjj| j| j}t tttjj| j| j}tt|j	t
|j|| _tt|j	t|j|| _tt|j	t|j|| _d S r	   )dictzipmapr   pathnormcaser4   r5   list__getitem__filter__contains__commonr   	left_only
right_only)r.   r/   r0   r   r   r   phase1   s
    zdircmp.phase1c           
      C   s4  g | _ g | _g | _| jD ]}tj| j|}tj| j|}d}zt	|}W n& t
k
rv } zd}W 5 d }~X Y nX zt	|}W n& t
k
r } zd}W 5 d }~X Y nX |r"t	|j}t	|j}	||	kr| j| n>t	|r| j | n&t	|r| j| n| j| q| j| qd S )Nr   r   )common_dirscommon_filescommon_funnyrB   r   r<   joinr(   r)   r   OSErrorr   r   appendS_ISDIRS_ISREG)
r.   xZa_pathZb_pathokZa_statZwhyZb_statZa_typeZb_typer   r   r   phase2   s4    
zdircmp.phase2c                 C   s&   t | j| j| j}|\| _| _| _d S r	   )r   r(   r)   rG   
same_files
diff_filesfunny_files)r.   Zxxr   r   r   phase3   s    zdircmp.phase3c                 C   sN   i | _ | jD ]<}tj| j|}tj| j|}t||| j| j	| j |< qd S r	   )
subdirsrF   r   r<   rI   r(   r)   r   r-   r,   )r.   rN   Za_xZb_xr   r   r   phase4   s
    
zdircmp.phase4c                 C   s$   |    | j D ]}|  qd S r	   )rV   rU   valuesphase4_closurer.   Zsdr   r   r   rX      s    zdircmp.phase4_closurec                 C   s   t d| j| j | jr2| j  t d| jd| j | jrT| j  t d| jd| j | jrp| j  t d| j | jr| j  t d| j | jr| j  t d| j | j	r| j	  t d| j	 | j
r| j
  t d| j
 d S )	NZdiffzOnly in:zIdentical files :zDiffering files :zTrouble with common files :zCommon subdirectories :zCommon funny cases :)printr(   r)   rC   r6   rD   rQ   rR   rS   rF   rH   r7   r   r   r   report   s,    






zdircmp.reportc                 C   s*   |    | j D ]}t  |   qd S r	   )r\   rU   rW   r[   rY   r   r   r   report_partial_closure   s    zdircmp.report_partial_closurec                 C   s*   |    | j D ]}t  |  qd S r	   )r\   rU   rW   r[   report_full_closurerY   r   r   r   r^      s    zdircmp.report_full_closure)rU   rQ   rR   rS   rF   rG   rH   rB   rC   rD   r4   r5   c                 C   s*   || j krt|| j | |  t| |S r	   )	methodmapAttributeErrorgetattr)r.   attrr   r   r   __getattr__   s    
zdircmp.__getattr__)NN)__name__
__module____qualname__r1   r8   rE   rP   rT   rV   rX   r\   r]   r^   r9   r_   rc   r   r   r   r   r   V   s0   "
#
       c                 C   sJ   g g g f}|D ]6}t j| |}t j||}|t||| | q|S r	   )r   r<   rI   _cmprK   )r/   r0   rB   r   resrN   ZaxZbxr   r   r   r      s    
c                 C   s0   z||| || W S  t k
r*   Y dS X d S )N   )rJ   )r/   r0   Zshabsr   r   r   r   rg     s    rg   c                 C   s   t t|j| S r	   )r>   r   rA   )Zflistskipr   r   r   r2     s    r2   c                  C   sr   dd l } dd l}|| jdd  d\}}t|dkrB|dd t|d |d }d|krf|  n|  d S )Nr   r   rri   zneed exactly two args)z-r )sysgetoptargvr   ZGetoptErrorr   r^   r\   )rn   ro   ZoptionsargsZddr   r   r   demo$  s    
rr   __main__)T)T)r   r   	itertoolsr   __all__r
   r"   r   r   r   r   r   r   r   rj   rg   r2   rr   rd   r   r   r   r   <module>   s4          
' %
	