<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>

]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 Gd d   d  Z d d d  Z e e	 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   ,/opt/alt/python35/lib64/python3.5/filecmp.pyr      s    Tc             C   s   t  t j |    } t  t j |   } | d t j k sP | d t j k rT d S| rj | | k rj d S| d | d k r d St 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   s{   t  } t |  d  _ } t | d  F } x< | j |  } | j |  } | | k r[ d S| s- d Sq- WWd  QRXWd  QRXd  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 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 d e d e d e d e d e d e d e d e d e d e d  e d! e  Z d" d#   Z d S)$r   Nc             C   sd   | |  _  | |  _ | d  k r6 t j t j g |  _ n	 | |  _ | d  k rW 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   sn   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  |  _ xy|  j D]n} t j j |  j |  } t j j |  j |  } d } y t j	 |  } Wn+ t
 k
 r } z d } WYd  d  } ~ Xn Xy t j	 |  } Wn+ t
 k
 r } z d } WYd  d  } ~ Xn X| rt	 j | j  } t	 j | j  }	 | |	 k r,|  j j |  qt	 j |  rN|  j  j |  qt	 j |  rp|  j j |  q|  j j |  q% |  j j |  q% Wd  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_statwhyZb_statZa_typeZb_typer   r   r   phase2   s4    			zdircmp.phase2c             C   s7   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   ss   i  |  _  xc |  j D]X } t j j |  j |  } t j j |  j |  } t | | |  j |  j	  |  j  | <q Wd  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   s2   |  j    x! |  j j   D] } | j   q Wd  S)N)rV   rU   valuesphase4_closure)r.   sdr   r   r   rX      s    
zdircmp.phase4_closurec             C   s6  t  d |  j |  j  |  j rE |  j j   t  d |  j d |  j  |  j rt |  j j   t  d |  j 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	  |  j
 r2|  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   rQ   rR   rS   rE   rG   )r.   r   r   r   report   s,    							zdircmp.reportc             C   s9   |  j    x( |  j j   D] } t   | j    q Wd  S)N)r\   rU   rW   r[   )r.   rY   r   r   r   report_partial_closure   s    
zdircmp.report_partial_closurec             C   s9   |  j    x( |  j j   D] } t   | j   q Wd  S)N)r\   rU   rW   r[   report_full_closure)r.   rY   r   r   r   r^      s    
zdircmp.report_full_closurerU   rQ   rR   rS   rE   rF   rG   rA   rB   rC   r4   r5   c             C   s9   | |  j  k r t |   |  j  | |   t |  |  S)N)	methodmapAttributeErrorgetattr)r.   attrr   r   r   __getattr__   s    zdircmp.__getattr__)__name__
__module____qualname__r1   r7   rD   rP   rT   rV   rX   r\   r]   r^   r8   r_   rc   r   r   r   r   r   V   s    "#
c             C   sk   g  g  g  f } xU | D]M } 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   s8   y | | |  | |   SWn t  k
 r3 d SYn Xd  S)N   )rI   )r/   r0   shabsr   r   r   r   rg     s    rg   c             C   s   t  t | j |    S)N)r=   r   r@   )flistskipr   r   r   r2     s    r2   c              C   s   d d  l  }  d d  l } | j |  j d d   d  \ } } t |  d k ra | j d d    t | d | d  } d | k r | j   n
 | j   d  S)	Nr   r   rri   zneed exactly two args-r )ro   rp   )sysgetoptargvr   ZGetoptErrorr   r^   r\   )rq   rr   optionsargsddr   r   r   demo$  s    %rw   __main__i    )r   r   	itertoolsr   __all__r
   r"   r   r   r   r   r   r   r   rk   rg   r2   rw   rd   r   r   r   r   <module>   s"   '	