3 \f&@sddlZddlZddlmZdddddgZiZd"Zd d d d ddddgZddZd#ddZ ddZ ddZ GdddZ d$ddZ ee fddZddZdd Zed!kredS)%N) filterfalse clear_cachecmpdircmpcmpfilesDEFAULT_IGNORESiZRCSZCVSZtagsz.gitz.hgz.bzrZ_darcs __pycache__cCs tjdS)N)_cacheclearr r /usr/lib64/python3.6/filecmp.pyrsTcCsttj|}ttj|}|dtjks8|dtjkrdS|sdSqWWdQRXWdQRXdS)NrbFT)BUFSIZEopenread)rrbufsizefp1fp2Zb1Zb2r r r rIs  rc@seZdZdddZddZddZdd Zd d Zd d ZddZ ddZ ddZ ddZ e eeeeeeeeeeeed ZddZdS)rNcCsD||_||_|dkr$tjtjg|_n||_|dkr:t|_n||_dS)N)leftrightrcurdirpardirhiderignore)selfabr-r,r r r __init__xszdircmp.__init__cCsPttj|j|j|j|_ttj|j|j|j|_|jj |jj dS)N) _filterrlistdirr(r,r- left_listr) right_listsort)r.r r r phase0s    z dircmp.phase0cCsttttjj|j|j}ttttjj|j|j}tt|j t |j ||_ tt|j t |j ||_tt|j t |j ||_dS)N)dictzipmaprpathnormcaser4r5list __getitem__filter __contains__commonr left_only right_only)r.r/r0r r r phase1s z dircmp.phase1c Cs:g|_g|_g|_x |jD]}tjj|j|}tjj|j|}d}ytj |}Wn&t k rz}z d}WYdd}~XnXytj |}Wn&t k r}z d}WYdd}~XnX|r&t j |j }t j |j } || kr|jj |n>t j|r|jj |n&t j|r|jj |n |jj |q|jj |qWdS)Nrr) common_dirs common_files common_funnyrArr;joinr(r)rOSErrorrrappendS_ISDIRS_ISREG) r.xZa_pathZb_pathokZa_statZwhyZb_statZa_typeZb_typer r r phase2s4    z dircmp.phase2cCs&t|j|j|j}|\|_|_|_dS)N)rr(r)rF same_files diff_files funny_files)r.Zxxr r r phase3sz dircmp.phase3cCsRi|_xF|jD]<}tjj|j|}tjj|j|}t|||j|j |j|<qWdS)N) subdirsrErr;rHr(r)rr-r,)r.rMZa_xZb_xr r r phase4s  z dircmp.phase4cCs(|jx|jjD] }|jqWdS)N)rUrTvaluesphase4_closure)r.sdr r r rWszdircmp.phase4_closurecCstd|j|j|jr2|jjtd|jd|j|jrT|jjtd|jd|j|jrp|jjtd|j|jr|jjtd|j|jr|jjtd|j|j r|j jtd|j |j r|j jtd|j dS) NZdiffzOnly in:zIdentical files :zDiffering files :zTrouble with common files :zCommon subdirectories :zCommon funny cases :) printr(r)rBr6rCrPrQrRrErG)r.r r r reports,           z dircmp.reportcCs.|jx |jjD]}t|jqWdS)N)r[rTrVrZ)r.rXr r r report_partial_closureszdircmp.report_partial_closurecCs.|jx |jjD]}t|jqWdS)N)r[rTrVrZreport_full_closure)r.rXr r r r]szdircmp.report_full_closure) rTrPrQrRrErFrGrArBrCr4r5cCs*||jkrt||j||t||S)N) methodmapAttributeErrorgetattr)r.attrr r r __getattr__s zdircmp.__getattr__)NN)__name__ __module__ __qualname__r1r7rDrOrSrUrWr[r\r]r8r^rbr r r r rVs " #  cCsNgggf}x>|D]6}tjj||}tjj||}|t|||j|qW|S)N)rr;rH_cmprJ)r/r0rArresrMZaxZbxr r r rs  c Cs,y||||| Stk r&dSXdS)N)rI)r/r0Zshabsrr r r rfsrfcCstt|j|S)N)r=rr@)Zflistskipr r r r2sr2cCsrddl}ddl}|j|jddd\}}t|dkrB|jddt|d|d}d|krf|jn|jdS) Nrrrrhzneed exactly two args-r)rlrm)sysgetoptargvrZ GetoptErrorrr]r[)rnroZoptionsargsZddr r r demo$s   rr__main__i )T)T)rr itertoolsr__all__r r"rrrrrrrrirfr2rrrcr r r r  s$  ' %