mfc@sdZddlZddlZddlmZmZmZmZdddgZiZ dZ d d Z d Z d Z ddd YZd dZee dZdZdZedkrendS(sUtilities for comparing files and directories. Classes: dircmp Functions: cmp(f1, f2, shallow=1) -> int cmpfiles(a, b, common) -> ([], [], []) iN(tifiltert ifilterfalsetimaptiziptcmptdircmptcmpfilesiiicCsttj|}ttj|}|dtjksP|dtjkrTtS|rj||krjtS|d|dkrtStj||||f}|dkrt ||}t tdkrtj n|t||||f 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. cCsm||_||_|dkr6tjtjg|_n ||_|dkr`dddg|_n ||_dS(NtRCStCVSttags(tlefttrightRRtcurdirtpardirthidetignore(tselftatbR/R.((s/usr/lib64/python2.7/filecmp.pyt__init__os     cCsnttj|j|j|j|_ttj|j|j|j|_|jj |jj dS(N( t_filterRtlistdirR*R.R/t left_listR+t right_listtsort(R0((s/usr/lib64/python2.7/filecmp.pytphase0{s  cCsttttjj|j|j}ttttjj|j|j}t|j t |j ||_ t|j t |j ||_t|j t |j ||_dS(N(tdictRRRtpathtnormcaseR6R7tmapt __getitem__Rt __contains__tcommonRt left_onlyt right_only(R0R1R2((s/usr/lib64/python2.7/filecmp.pytphase1s **!!c Cs}g|_g|_g|_x[|jD]P}tjj|j|}tjj|j|}d}ytj |}Wntj k r}d}nXytj |}Wntj k r}d}nX|ret j |j }t j |j } || kr|jj |qut j|r0|jj |qut j|rR|jj |qu|jj |q%|jj |q%WdS(Nii(t common_dirst common_filest common_funnyR@RR;tjoinR*R+R terrorRRtappendtS_ISDIRtS_ISREG( R0txta_pathtb_pathtokta_stattwhytb_statta_typetb_type((s/usr/lib64/python2.7/filecmp.pytphase2s4      cCs7t|j|j|j}|\|_|_|_dS(N(RR*R+REt same_filest diff_filest funny_files(R0txx((s/usr/lib64/python2.7/filecmp.pytphase3scCssi|_xc|jD]X}tjj|j|}tjj|j|}t|||j|j |j| s   " &