B Sf@sddlZddlZddlmZdddddgZiZdZd d d d d dddgZddZd!ddZ ddZ ddZ GdddZ d"ddZ ee fddZddZddZed kredS)#N) filterfalse clear_cachecmpdircmpcmpfilesDEFAULT_IGNORESi ZRCSZCVSZtagsz.gitz.hgz.bzrZ_darcs __pycache__cCs tdS)N)_cacheclearr r */opt/alt/python37/lib/python3.7/filecmp.pyrsTcCstt|}tt|}|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__cCsPtt|j|j|j|_tt|j|j|j|_|j |j 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)dictzipmaprpathnormcaser3r4list __getitem__filter __contains__commonr left_only right_only)r-r.r/r r r phase1s z dircmp.phase1c Cs:g|_g|_g|_x |jD]}tj|j|}tj|j|}d}yt |}Wn&t k rz}zd}Wdd}~XYnXyt |}Wn&t k r}zd}Wdd}~XYnX|r&t |j }t |j } || kr|j |n>t |r|j |n&t |r|j |n |j |q|j |qWdS)Nr r) common_dirs common_files common_funnyr@rr: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(rE same_files diff_files funny_files)r-Zxxr r r phase3sz dircmp.phase3cCsRi|_xF|jD]<}tj|j|}tj|j|}t|||j|j |j|<qWdS)N) subdirsrDrr:rGr'r(rr,r+)r-rLZa_xZb_xr r r phase4s  z dircmp.phase4cCs(|x|jD] }|qWdS)N)rTrSvaluesphase4_closure)r-sdr r r rVszdircmp.phase4_closurecCstd|j|j|jr2|jtd|jd|j|jrT|jtd|jd|j|jrp|jtd|j|jr|jtd|j|jr|jtd|j|j r|j td|j |j r|j td|j dS) NZdiffzOnly in:zIdentical files :zDiffering files :zTrouble with common files :zCommon subdirectories :zCommon funny cases :) printr'r(rAr5rBrOrPrQrDrF)r-r r r reports,           z dircmp.reportcCs.|x |jD]}t|qWdS)N)rZrSrUrY)r-rWr r r report_partial_closureszdircmp.report_partial_closurecCs.|x |jD]}t|qWdS)N)rZrSrUrYreport_full_closure)r-rWr r r r\szdircmp.report_full_closure) rSrOrPrQrDrErFr@rArBr3r4cCs*||jkrt||j||t||S)N) methodmapAttributeErrorgetattr)r-attrr r r __getattr__s zdircmp.__getattr__)NN)__name__ __module__ __qualname__r0r6rCrNrRrTrVrZr[r\r7r]rar r r r rVs " #  cCsNgggf}x>|D]6}tj||}tj||}|t||||qW|S)N)rr:rG_cmprI)r.r/r@rZresrLZaxZbxr r r rs  cCs,y||||| Stk r&dSXdS)N)rH)r.r/shabsrr r r resrecCstt|j|S)N)r<rr?)flistskipr r r r1sr1cCsrddl}ddl}||jddd\}}t|dkrB|ddt|d|d}d|krf|n|dS)Nrr rrfzneed exactly two args)z-r)sysgetoptargvrZ GetoptErrorrr\rZ)rmrnoptionsargsddr r r demo$s   rs__main__)T)T)rr itertoolsr__all__r r!rrrrrrrrhrer1rsrbr r r r  s$  ' %