Edit File: filecmp.cpython-37.opt-1.pyc
B ����q}�cf&������������������@���s����d�Z�ddlZddlZddlmZ�dddddgZi�Zd Zd ddd ddddgZdd��Z d"dd�Z dd��Zdd��ZG�dd��d�Z d#dd�Zee fdd�Zdd��Zdd ��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_IGNORESi� ��ZRCSZCVSZtagsz.gitz.hgz.bzrZ_darcs�__pycache__c���������������C���s���t�����dS�)zClear the filecmp cache.N)�_cache�clear��r���r����,/opt/alt/python37/lib64/python3.7/filecmp.pyr������s����Tc�������������C���s����t�t�|���}t�t�|��}|d�tjks8|d�tjkr<dS�|rL||krLdS�|d�|d�kr`dS�t�|�|||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(). r���FT����N�d���) �_sig�os�stat�S_IFREGr ����get�_do_cmp�lenr���)�f1�f2�shallow�s1�s2Zoutcomer���r���r���r������s���� c�������������C���s���t��|�j�|�j|�jfS�)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,|�|�}|�|�}||kr>dS�|sdS�qW�W�d�Q�R�X�W�d�Q�R�X�d�S�)N�rbFT)�BUFSIZE�open�read)r���r����bufsize�fp1�fp2Zb1Zb2r���r���r���r���I���s���� r���c���������������@���s����e�Zd�ZdZddd�Zdd��Zdd��Zd d ��Zdd��Zd d��Z dd��Z dd��Zdd��Zdd��Z ee eeeeeeeeeeed�Zdd��ZdS�)r���aM��A 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. Nc�������������C���sD���||�_�||�_|d�kr$tjtjg|�_n||�_|d�kr:t|�_n||�_d�S�)N)�left�rightr����curdir�pardir�hider����ignore)�self�a�br,���r+���r���r���r����__init__x���s����zdircmp.__init__c�������������C���sP���t�t�|�j�|�j|�j��|�_t�t�|�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�tttjj|�j�|�j��}t�tttjj|�j�|�j��}tt|j t |j|���|�_tt|j t |j|���|�_tt|j t |j|���|�_d�S�)N)�dict�zip�mapr����path�normcaser3���r4����list�__getitem__�filter�__contains__�commonr���� left_only� right_only)r-���r.���r/���r���r���r����phase1����s ����z dircmp.phase1c������� ������C���s:��g�|�_�g�|�_g�|�_�x |�jD��]}tj�|�j|�}tj�|�j|�}d}yt� |�}W�n&�t k rz�}�zd}W�d�d�}~X�Y�nX�yt� |�}W�n&�t k r��}�zd}W�d�d�}~X�Y�nX�|�r&t �|j�}t �|j�} || kr�|�j� |��n>t �|�r�|�j�� |��n&t �|��r|�j� |��n|�j� |��q|�j� |��qW�d�S�)Nr ���r���)�common_dirs�common_files�common_funnyr@���r���r:����joinr'���r(���r����OSErrorr���r����append�S_ISDIR�S_ISREG) r-����xZa_pathZb_path�okZa_statZwhyZb_statZa_typeZb_typer���r���r����phase2����s4���� z dircmp.phase2c�������������C���s&���t�|�j|�j|�j�}|\|�_|�_|�_d�S�)N)r���r'���r(���rE���� same_files� diff_files�funny_files)r-���Zxxr���r���r����phase3����s����z dircmp.phase3c�������������C���sR���i�|�_�xF|�jD�]<}tj�|�j|�}tj�|�j|�}t|||�j|�j �|�j�|<�qW�d�S�)N) �subdirsrD���r���r:���rG���r'���r(���r���r,���r+���)r-���rL���Za_xZb_xr���r���r����phase4����s ����z dircmp.phase4c�������������C���s(���|������x|�j���D�]}|����qW�d�S�)N)rT���rS����values�phase4_closure)r-����sdr���r���r���rV�������s����zdircmp.phase4_closurec�������������C���s����t�d|�j|�j��|�jr2|�j����t�d|�jd|�j��|�jrT|�j����t�d|�jd|�j��|�jrp|�j����t�d|�j��|�jr�|�j����t�d|�j��|�jr�|�j����t�d|�j��|�j r�|�j ����t�d|�j ��|�j r�|�j ����t�d|�j ��d�S�) NZdiffzOnly in�:zIdentical files :zDiffering files :zTrouble with common files :zCommon subdirectories :zCommon funny cases :)�printr'���r(���rA���r5���rB���rO���rP���rQ���rD���rF���)r-���r���r���r����report����s,���� z dircmp.reportc�������������C���s.���|������x |�j���D�]}t���|�����qW�d�S�)N)rZ���rS���rU���rY���)r-���rW���r���r���r����report_partial_closure����s����zdircmp.report_partial_closurec�������������C���s.���|������x |�j���D�]}t���|����qW�d�S�)N)rZ���rS���rU���rY����report_full_closure)r-���rW���r���r���r���r\�������s����zdircmp.report_full_closure)rS���rO���rP���rQ���rD���rE���rF���r@���rA���rB���r3���r4���c�������������C���s*���||�j�krt|��|�j�|�|���t|�|�S�)N)� methodmap�AttributeError�getattr)r-����attrr���r���r����__getattr__����s���� zdircmp.__getattr__)NN)�__name__� __module__�__qualname__�__doc__r0���r6���rC���rN���rR���rT���rV���rZ���r[���r\���r7���r]���ra���r���r���r���r���r���V���s"��� # c�������������C���sN���g�g�g�f}x>|D�]6}t�j�|�|�}t�j�||�}|t|||���|��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. )r���r:���rG����_cmprI���)r.���r/���r@���r���ZresrL���ZaxZbxr���r���r���r�������s���� c�������������C���s,���y|||�||���S��t�k r&���dS�X�d�S�)N����)rH���)r.���r/���Zsh�absr���r���r���r���rf�����s����rf���c�������������C���s���t�t|j|���S�)N)r<���r���r?���)Zflist�skipr���r���r���r1�����s����r1���c��������������C���sr���dd�l�}�dd�l}|�|�jdd���d�\}}t|�dkrB|�dd���t|d�|d��}d|krf|����n|����d�S�)Nr���r ����rrg���zneed exactly two args)z-r��)�sys�getopt�argvr���ZGetoptErrorr���r\���rZ���)rl���rm���Zoptions�argsZddr���r���r����demo$��s���� rp����__main__)T)T)re���r���r���� itertoolsr����__all__r ���r!���r���r���r���r���r���r���r���rh���rf���r1���rp���rb���r���r���r���r����<module>���s&��� ' �%