python (3.12.0)

(root)/
lib/
python3.12/
__pycache__/
filecmp.cpython-312.pyc

ˑe'dZddlZddlZddlmZddlmZgdZiZdZ	gdZ
dZdd	Zd
Z
dZGdd
ZddZeefdZdZdZedk(reyy)zUtilities for comparing files and directories.

Classes:
    dircmp

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

N)filterfalse)GenericAlias)clear_cachecmpdircmpcmpfilesDEFAULT_IGNORESi )RCSCVStagsz.gitz.hgz.bzr_darcs__pycache__c,tjy)zClear the filecmp cache.N)_cacheclear;/BuggyBox/python/3.12.0/bootstrap/lib/python3.12/filecmp.pyrrs
LLNrcttj|}ttj|}|dtjk7s|dtjk7ry|r||k(ry|d|dk7rytj||||f}|5t
||}ttdkDr
t|t||||f<|S)aMCompare two files.

    Arguments:

    f1 -- First file name

    f2 -- Second file name

    shallow -- treat files as identical if their stat signatures (type, size,
               mtime) are identical. Otherwise, files are considered different
               if their sizes or contents differ.  [default: 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().

    rFTd)	_sigosstatS_IFREGrget_do_cmplenr)f1f2shallows1s2outcomes      rrrs.
bggbk	B	
bggbk	B	!u1 528	!u1~jj"b"b)*G"b/v;M!(r2r2~Nrcntj|j|j|jfSN)rS_IFMTst_modest_sizest_mtime)sts rrrFs*KK

#JJKKrc"t}t|d5}t|d5}	|j|}|j|}||k7r	ddddddy|s	ddddddyN#1swYnxYwdddy#1swYyxYw)NrbTF)BUFSIZEopenread)rr bufsizefp1fp2b1b2s       rrrKsG	
b$3R#'"B'"BRxs4
B*A0
BA0B/A00A9	5BBceZdZdZddZdZdZdZdZdZ	d	Z
d
ZdZdZ
ee	eeeeeeeeeee
ZdZeeZy)raA 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 instances (or MyDirCmp instances if this
       object is of type MyDirCmp, a subclass of dircmp), keyed by names
       in common_dirs.
     Nc||_||_|&tjtjg|_n||_|t|_y||_yr&)leftrightrcurdirpardirhider	ignore)selfabr=r<s     r__init__zdircmp.__init__|sC	
<BII.DIDI>)DK DKrcttj|j|j|j
z|_ttj|j|j|j
z|_|jj|jjyr&)
_filterrlistdirr8r<r=	left_listr9
right_listsortr>s rphase0z
dircmp.phase0sx DII!6!%4;;!68!"**TZZ"8"&))DKK"79rc	ttttjj
|j|j}ttttjj
|j|j}tt|jt|j||_tt|jt|j||_tt|jt|j||_yr&)dictzipmaprpathnormcaserErFlist__getitem__filter__contains__commonr	left_only
right_only)r>r?r@s   rphase1z
dircmp.phase1sS))4>>:DNNKLS))4??;T__MN3q}}fQ^^Q.GHIc!--Q^^Q1OPQs1==+anna2PQRrcg|_g|_g|_|jD]}tj
j
|j|}tj
j
|j|}d}	t	j|}	t	j|}|rtjj}tjj}||k7r|jj|tj|r|jj|tj|r|jj|K|jj|h|jj|y#t$rd}Y%wxYw#t$rd}Y!wxYw)NTF)common_dirscommon_filescommon_funnyrTrrNjoinr8r9rOSErrorr'r(appendS_ISDIRS_ISREG)	r>xa_pathb_pathoka_statb_stata_typeb_types	         rphase2z
dircmp.phase2s^	,AWW\\$))Q/FWW\\$**a0FB


V^^4V^^4V#%%,,Q/\\&)$$++A.\\&)%%,,Q/%%,,Q/!!((+9	,




s$=F)F;)F87F8;G
	G
ct|j|j|j}|\|_|_|_yr&)rr8r9rZ
same_files
diff_filesfunny_files)r>xxs  rphase3z
dircmp.phase3s1
diiT->->
?=?:$*:rcFi|_|jD]}tjj	|j
|}tjj	|j|}|j|||j|j|j|<yr&)
subdirsrYrrNr\r8r9	__class__r=r<)r>raa_xb_xs    rphase4z
dircmp.phase4sv
!!	PA'',,tyy!,C'',,tzz1-C#~~c3TYYODLLO	Prc|j|jjD]}|jyr&)rurqvaluesphase4_closurer>sds  rrxzdircmp.phase4_closures3
,,%%'	 B	 rctd|j|j|jr<|jj	td|jd|j|j
r<|j
j	td|jd|j
|jr0|jj	td|j|jr0|jj	td|j|jr0|jj	td|j|jr0|jj	td|j|jr1|jj	td|jyy)	NdiffzOnly in:zIdentical files :zDiffering files :zTrouble with common files :zCommon subdirectories :zCommon funny cases :)printr8r9rUrGrVrkrlrmrYr[rHs rreportz
dircmp.reportsE
fdii,>>NN!)TYYT^^<??OO  ")TZZdoo>??OO  "%t7??OO  "%t7!!#/1A1AB!!#+T-=-=>""$($*;*;<rc|j|jjD]}t|jyr&)rrqrwr~rys  rreport_partial_closurezdircmp.report_partial_closures5
,,%%'	BGIIK	rc|j|jjD]}t|j	yr&)rrqrwr~report_full_closurerys  rrzdircmp.report_full_closures8
,,%%'	%BG""$	%r)rqrkrlrmrYrZr[rTrUrVrErFcv||jvrt||j||t||Sr&)	methodmapAttributeErrorgetattr)r>attrs  r__getattr__zdircmp.__getattr__s9t~~% &&tT"tT""r)NN)__name__
__module____qualname____doc__rArIrWrirorurxrrrrKrrclassmethodr__class_getitem__rrrrrXsx!	F
!S!,F@	P 
=2%V &6v!'f6"f%&	:I#$L1rrcgggf}|D]a}tjj||}tjj||}|t|||j	|c|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.

    )rrNr\_cmpr^)r?r@rTr!resraaxbxs        rrrsir2,C
-
WW\\!Q

WW\\!Q
DR!"))!,-JrcD	|||||S#t$rYywxYw)N)r])r?r@shabsrs     rrrs/s1a}%%%s	c@tt|j|Sr&)rPrrS)flistskips  rrCrC&sD--u566rcddl}ddl}|j|jddd\}}t|dk7r|j	ddt|d|d}d|vr|j
y|jy)Nrrrrzneed exactly two args)z-r)sysgetoptargvrGetoptErrorrrr)rroptionsargsdds     rdemor,svMM#((12,4MGT
4yA~  !8$??	Qa	!BW
 
		r__main__)T)rrr	itertoolsrtypesr__all__rr.r	rrrrrrrrrCrrrrr<module>rs

!
I	
J&P
	g2g2T67
zFr