
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
3

  \f&  ã               @   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r¬eƒ  dS )%é    N)ÚfilterfalseÚclear_cacheÚcmpÚdircmpÚcmpfilesÚDEFAULT_IGNORESé   i   ZRCSZCVSZtagsz.gitz.hgz.bzrZ_darcsÚ__pycache__c               C   s   t jƒ  d S )N)Ú_cacheÚclear© r   r   ú/usr/lib64/python3.6/filecmp.pyr      s    Tc             C   sª   t tj| ƒƒ}t tj|ƒƒ}|d tjks8|d tjkr<dS |rL||krLdS |d |d kr`dS tj| |||fƒ}|d kr¦t| |ƒ}ttƒdkr–tƒ  |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| jfS )N)r   ÚS_IFMTÚst_modeÚst_sizeÚst_mtime)Ústr   r   r   r   D   s    
r   c             C   sb   t }t| dƒ�J}t|dƒ�4}x,|j|ƒ}|j|ƒ}||kr>dS |sdS qW W d Q R X W d 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 )N)Ú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| j ƒ| _t tj| jƒ| j| j ƒ| _| jj	ƒ  | jj	ƒ  d S )N)
Ú_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 )N)Ú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   s:  g | _ g | _g | _�x | jD �]}tjj| j|ƒ}tjj| j|ƒ}d}ytj	|ƒ}W n& t
k
rz } z
d}W Y d d }~X nX ytj	|ƒ}W n& t
k
r° } z
d}W Y d d }~X nX |�r&t	j|jƒ}t	j|jƒ}	||	kræ| jj|ƒ n>t	j|ƒrþ| j j|ƒ n&t	j|ƒ�r| jj|ƒ n| jj|ƒ q| jj|ƒ qW d S )Nr   r   )Úcommon_dirsÚcommon_filesÚcommon_funnyrA   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 )N)r   r(   r)   rF   Ú
same_filesÚ
diff_filesÚfunny_files)r.   Zxxr   r   r   Úphase3¶   s    zdircmp.phase3c             C   sR   i | _ xF| jD ]<}tjj| j|ƒ}tjj| j|ƒ}t||| j| j	ƒ| j |< qW d S )N)
ÚsubdirsrE   r   r;   rH   r(   r)   r   r-   r,   )r.   rM   Za_xZb_xr   r   r   Úphase4º   s
    zdircmp.phase4c             C   s(   | j ƒ  x| jjƒ D ]}|jƒ  qW d S )N)rU   rT   ÚvaluesÚphase4_closure)r.   Úsdr   r   r   rW   Ä   s    zdircmp.phase4_closurec             C   sä   t d| j| jƒ | jr2| jjƒ  t d| jd| jƒ | jrT| jjƒ  t d| jd| jƒ | jrp| jjƒ  t d| jƒ | jrŒ| jjƒ  t d| jƒ | jr¨| jjƒ  t d| jƒ | j	rÄ| j	jƒ  t d| j	ƒ | j
rà| j
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)   rB   r6   rC   rP   rQ   rR   rE   rG   )r.   r   r   r   ÚreportÉ   s,    






zdircmp.reportc             C   s.   | j ƒ  x | jjƒ D ]}tƒ  |j ƒ  qW d S )N)r[   rT   rV   rZ   )r.   rX   r   r   r   Úreport_partial_closureâ   s    zdircmp.report_partial_closurec             C   s.   | j ƒ  x | jjƒ D ]}tƒ  |jƒ  qW d S )N)r[   rT   rV   rZ   Úreport_full_closure)r.   rX   r   r   r   r]   è   s    zdircmp.report_full_closure)rT   rP   rQ   rR   rE   rF   rG   rA   rB   rC   r4   r5   c             C   s*   || j krt|ƒ‚| j | | ƒ t| |ƒS )N)Ú	methodmapÚAttributeErrorÚgetattr)r.   Úattrr   r   r   Ú__getattr__ô   s    
zdircmp.__getattr__)NN)Ú__name__Ú
__module__Ú__qualname__r1   r7   rD   rO   rS   rU   rW   r[   r\   r]   r8   r^   rb   r   r   r   r   r   V   s    "
#

c             C   sN   g g g f}x>|D ]6}t jj| |ƒ}t jj||ƒ}|t|||ƒ j|ƒ qW |S )N)r   r;   rH   Ú_cmprJ   )r/   r0   rA   r   ÚresrM   ZaxZbxr   r   r   r   ú   s    

c             C   s,   y||| ||ƒƒ S  t k
r&   dS X d S )Né   )rI   )r/   r0   ZshÚabsr   r   r   r   rf     s    rf   c             C   s   t t|j| ƒƒS )N)r=   r   r@   )ZflistÚskipr   r   r   r2     s    r2   c              C   sr   dd l } dd l}|j| jdd … dƒ\}}t|ƒdkrB|jdd ƒ‚t|d |d ƒ}d|krf|jƒ  n|jƒ  d S )	Nr   r   Úrrh   zneed exactly two argsú-rÚ )rl   rm   )ÚsysÚgetoptÚargvr   ZGetoptErrorr   r]   r[   )rn   ro   ZoptionsÚargsZddr   r   r   Údemo$  s    
rr   Ú__main__i    )T)T)r   r   Ú	itertoolsr   Ú__all__r
   r"   r   r   r   r   r   r   r   ri   rf   r2   rr   rc   r   r   r   r   Ú<module>   s$   
' %
	