ž §ÿf}%c@sÖdZddlZddlZddlmZdddgZiZdZdd d„Z d d „Z d d „Z Gdd„dƒZ ddd„Z ee dd„Zdd„Zdd„ZedkrÒeƒndS(u¡Utilities for comparing files and directories. Classes: dircmp Functions: cmp(f1, f2, shallow=True) -> int cmpfiles(a, b, common) -> ([], [], []) iN(u filterfalseucmpudircmpucmpfilesiicCsôttj|ƒƒ}ttj|ƒƒ}|dtjksP|dtjkrTdS|rj||krjdS|d|dkr‚dStj||||fƒ}|dkrðt ||ƒ}t tƒdkr×tj ƒ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.phase0cCsÍttttjj|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.pyuphase1ƒs **''u dircmp.phase1c Cs¡g|_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|r‰t j |j ƒ}t j |j ƒ} || kr2|jj |ƒq™t j|ƒrT|jj |ƒq™t 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.pyuphase2Šs4    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.pyuphase3­su dircmp.phase3cCssi|_xc|jD]X}tjj|j|ƒ}tjj|j|ƒ}t|||j|j ƒ|j| s   &  ¤