JFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3RbrJFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbrў f}%c@sdZddlZddlZddlmZdddgZiZdZdd dZ d d Z d d Z GdddZ dddZ ee ddZddZddZedkrendS(uUtilities for comparing files and directories. Classes: dircmp Functions: cmp(f1, f2, shallow=True) -> int cmpfiles(a, b, common) -> ([], [], []) iN(u filterfalseucmpudircmpucmpfilesiicCsttj|}ttj|}|dtjksP|dtjkrTdS|rj||krjdS|d|dkrdStj||||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(NuRCSuCVSutags(ulefturightuNoneuosucurdirupardiruhideuignore(uselfuaubuignoreuhide((u,/opt/alt/python33/lib64/python3.3/filecmp.pyu__init__os     udircmp.__init__cCsnttj|j|j|j|_ttj|j|j|j|_|jj |jj dS(N( u_filteruosulistdiruleftuhideuignoreu left_listurightu right_listusort(uself((u,/opt/alt/python33/lib64/python3.3/filecmp.pyuphase0{s  u dircmp.phase0cCsttttjj|j|j}ttttjj|j|j}tt|j t |j ||_ tt|j t |j ||_tt|j t |j ||_dS(N(udictuzipumapuosupathunormcaseu left_listu right_listulistu __getitem__ufilteru __contains__ucommonu filterfalseu left_onlyu right_only(uselfuaub((u,/opt/alt/python33/lib64/python3.3/filecmp.pyuphase1s **''u dircmp.phase1c Csg|_g|_g|_x|jD]t}tjj|j|}tjj|j|}d}ytj |}Wn.tj k r}z d}WYdd}~XnXytj |}Wn.tj k r}z d}WYdd}~XnX|rt j |j }t j |j } || kr2|jj |qt j|rT|jj |qt j|rv|jj |q|jj |q%|jj |q%WdS(Nii(u common_dirsu common_filesu common_funnyucommonuosupathujoinulefturightustatuerroruS_IFMTust_modeuappenduS_ISDIRuS_ISREG( uselfuxua_pathub_pathuokua_statuwhyub_statua_typeub_type((u,/opt/alt/python33/lib64/python3.3/filecmp.pyuphase2s4    u dircmp.phase2cCs7t|j|j|j}|\|_|_|_dS(N(ucmpfilesulefturightu common_filesu same_filesu diff_filesu funny_files(uselfuxx((u,/opt/alt/python33/lib64/python3.3/filecmp.pyuphase3su dircmp.phase3cCssi|_xc|jD]X}tjj|j|}tjj|j|}t|||j|j |j| s   &