Your IP : 18.188.233.69


Current Path : /opt/alt/python35/lib64/python3.5/__pycache__/
Upload File :
Current File : //opt/alt/python35/lib64/python3.5/__pycache__/filecmp.cpython-35.pyc



��Yff&�@sdZddlZddlZddlmZdddddgZiZd#Zddd
dddddgZdd�Z	ddd�Z
dd�Zdd�ZGdd�d�Z
ddd�Zee
dd�Zdd�Zd d!�Zed"kr�e�dS)$z�Utilities for comparing files and directories.

Classes:
    dircmp

Functions:
    cmp(f1, f2, shallow=True) -> int
    cmpfiles(a, b, common) -> ([], [], [])
    clear_cache()

�N)�filterfalse�clear_cache�cmp�dircmp�cmpfiles�DEFAULT_IGNORES�iZRCSZCVSZtagsz.gitz.hgz.bzrZ_darcs�__pycache__cCstj�dS)zClear the filecmp cache.N)�_cache�clear�rr�,/opt/alt/python35/lib64/python3.5/filecmp.pyrsTcCs�ttj|��}ttj|��}|dtjksP|dtjkrTdS|rj||krjdS|d|dkr�dStj||||f�}|dkr�t||�}tt�dkr�t�|t||||f<|S)a�Compare two files.

    Arguments:

    f1 -- First file name

    f2 -- Second file name

    shallow -- Just check stat signature (do not read the files).
               defaults to True.

    Return value:

    True if the files are the same, False otherwise.

    This function uses a cache for past comparisons and the results,
    with cache entries invalidated if their stat information
    changes.  The cache may be cleared by calling clear_cache().

    rFT�N�d)	�_sig�os�stat�S_IFREGr
�get�_do_cmp�lenr)�f1�f2�shallow�s1�s2Zoutcomerrr
rs&cCstj|j�|j|jfS)N)r�S_IFMT�st_mode�st_size�st_mtime)�strrr
rDsrcCs{t}t|d��_}t|d��F}x<|j|�}|j|�}||kr[dS|s-dSq-WWdQRXWdQRXdS)N�rbFT)�BUFSIZE�open�read)rr�bufsize�fp1�fp2Zb1Zb2rrr
rIs$rc@s�eZdZdZdddd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
ede	dedededededededed ed!ed"e�Zd#d$�ZdS)%raMA class that manages the comparison of 2 directories.

    dircmp(a, b, ignore=None, hide=None)
      A and B are directories.
      IGNORE is a list of names to ignore,
        defaults to DEFAULT_IGNORES.
      HIDE is a list of names to hide,
        defaults to [os.curdir, os.pardir].

    High level usage:
      x = dircmp(dir1, dir2)
      x.report() -> prints a report on the differences between dir1 and dir2
       or
      x.report_partial_closure() -> prints report on differences between dir1
            and dir2, and reports on common immediate subdirectories.
      x.report_full_closure() -> like report_partial_closure,
            but fully recursive.

    Attributes:
     left_list, right_list: The files in dir1 and dir2,
        filtered by hide and ignore.
     common: a list of names in both dir1 and dir2.
     left_only, right_only: names only in dir1, dir2.
     common_dirs: subdirectories in both dir1 and dir2.
     common_files: files in both dir1 and dir2.
     common_funny: names in both dir1 and dir2 where the type differs between
        dir1 and dir2, or the name is not stat-able.
     same_files: list of identical files.
     diff_files: list of filenames which differ.
     funny_files: list of files which could not be compared.
     subdirs: a dictionary of dircmp objects, keyed by names in common_dirs.
     NcCsd||_||_|dkr6tjtjg|_n	||_|dkrWt|_n	||_dS)N)�left�rightr�curdir�pardir�hider�ignore)�self�a�br-r,rrr
�__init__xs			zdircmp.__init__cCsnttj|j�|j|j�|_ttj|j�|j|j�|_|jj	�|jj	�dS)N)
�_filterr�listdirr(r,r-�	left_listr)�
right_list�sort)r.r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|���|_dS)N)�dict�zip�mapr�path�normcaser4r5�list�__getitem__�filter�__contains__�commonr�	left_only�
right_only)r.r/r0rrr
�phase1�s
**''z
dircmp.phase1c
Cs�g|_g|_g|_xy|jD]n}tjj|j|�}tjj|j|�}d}ytj	|�}Wn+t
k
r�}zd}WYdd}~XnXytj	|�}Wn+t
k
r�}zd}WYdd}~XnX|r�t	j|j�}t	j|j�}	||	kr,|jj
|�q�t	j|�rN|jj
|�q�t	j|�rp|jj
|�q�|jj
|�q%|jj
|�q%WdS)Nrr)�common_dirs�common_files�common_funnyrArr;�joinr(r)r�OSErrorrr�append�S_ISDIR�S_ISREG)
r.�xZa_pathZb_path�okZa_statZwhyZb_statZa_typeZb_typerrr
�phase2�s4			z
dircmp.phase2cCs7t|j|j|j�}|\|_|_|_dS)N)rr(r)rF�
same_files�
diff_files�funny_files)r.Zxxrrr
�phase3�sz
dircmp.phase3cCssi|_xc|jD]X}tjj|j|�}tjj|j|�}t|||j|j	�|j|<qWdS)N)
�subdirsrErr;rHr(r)rr-r,)r.rMZa_xZb_xrrr
�phase4�s
	z
dircmp.phase4cCs2|j�x!|jj�D]}|j�qWdS)N)rUrT�values�phase4_closure)r.�sdrrr
rW�s
zdircmp.phase4_closurecCs6td|j|j�|jrE|jj�td|jd|j�|jrt|jj�td|jd|j�|jr�|jj�td|j�|jr�|jj�td|j�|jr�|jj�td|j�|j	r|j	j�td|j	�|j
r2|j
j�td|j
�dS)	NZdiffzOnly in�:zIdentical files :zDiffering files :zTrouble with common files :zCommon subdirectories :zCommon funny cases :)�printr(r)rBr6rCrPrQrRrErG)r.rrr
�report�s,	
	
	
	
	
	
	
z
dircmp.reportcCs9|j�x(|jj�D]}t�|j�qWdS)N)r[rTrVrZ)r.rXrrr
�report_partial_closure�s
zdircmp.report_partial_closurecCs9|j�x(|jj�D]}t�|j�qWdS)N)r[rTrVrZ�report_full_closure)r.rXrrr
r]�s
zdircmp.report_full_closurerTrPrQrRrErFrGrArBrCr4r5cCs9||jkrt|��|j||�t||�S)N)�	methodmap�AttributeError�getattr)r.�attrrrr
�__getattr__�szdircmp.__getattr__)�__name__�
__module__�__qualname__�__doc__r1r7rDrOrSrUrWr[r\r]r8r^rbrrrr
rVs" #
cCskgggf}xU|D]M}tjj||�}tjj||�}|t|||�j|�qW|S)a]Compare common files in two directories.

    a, b -- directory names
    common -- list of file names found in both directories
    shallow -- if true, do comparison based solely on stat() information

    Returns a tuple of three lists:
      files that compare equal
      files that are different
      filenames that aren't regular files.

    )rr;rH�_cmprJ)r/r0rAr�resrMZaxZbxrrr
r�s

!cCs8y|||||��SWntk
r3dSYnXdS)N�)rI)r/r0Zsh�absrrrr
rgs
rgcCstt|j|��S)N)r=rr@)Zflist�skiprrr
r2sr2cCs�ddl}ddl}|j|jdd�d�\}}t|�dkra|jdd��t|d|d�}d|kr�|j�n
|j�dS)	Nrr�rrizneed exactly two args�-r�)rmrn)�sys�getopt�argvrZGetoptErrorrr]r[)rorpZoptions�argsZddrrr
�demo$s%
rs�__main__i )rfrr�	itertoolsr�__all__r
r"rrrrrrrrjrgr2rsrcrrrr
�<module>s$'
�	

?>