grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026ó Á!nfJ ˆãó¸•SrSSKrSSKrSSKJr SSKJr /SQr0rSr /SQr Sr SS jr S r S r"S S 5rSSjr\\ 4SjrSrSr\S:Xa\"5 gg)z³Utilities for comparing files and directories. Classes: dircmp Functions: cmp(f1, f2, shallow=True) -> int cmpfiles(a, b, common) -> ([], [], []) clear_cache() éN)Ú filterfalse)Ú GenericAlias)Ú clear_cacheÚcmpÚdircmpÚcmpfilesÚDEFAULT_IGNORESi )ÚRCSÚCVSÚtagsz.gitz.hgz.bzrÚ_darcsÚ __pycache__có,•[R5 g)zClear the filecmp cache.N)Ú_cacheÚclear©óÚ./opt/alt/python313/lib64/python3.13/filecmp.pyrrs €ä ‡L�L…Nrcó®•[[R"U55n[[R"U55nUS[R:wdUS[R:wagU(aX4:XagUSUS:wag[R XX445nUc3[ X5n[[5S:”a [5 U[XX44'U$)aCompare two files. Arguments: f1 -- First file name f2 -- Second file name shallow -- treat files as identical if their stat signatures (type, size, mtime) are identical. Otherwise, files are considered different if their sizes or contents differ. [default: True] Return value: True if the files are the same, False otherwise. This function uses a cache for past comparisons and the results, with cache entries invalidated if their stat information changes. The cache may be cleared by calling clear_cache(). rFTééd) Ú_sigÚosÚstatÚS_IFREGrÚgetÚ_do_cmpÚlenr)Úf1Úf2ÚshallowÚs1Ús2Úoutcomes rrrs«€ô. Œb�gŠg�b‹kÓ €BÜ Œb�gŠg�b‹kÓ €BØ ˆ!�u”— ‘ Ó  1¡¬¯©Ó 5ØÞ�2“8ØØ ˆ!�u��1‘ƒ~Øä�j‰j˜" "Ð)Ó*€GØ�ܘ"“/ˆÜ Œv‹;˜Ó Ü ŒMØ!(Œˆr�rˆ~ÑØ €Nrcóp•[R"UR5URUR4$©N)rÚS_IFMTÚst_modeÚst_sizeÚst_mtime)Ústs rrrFs*€Ü �KŠK˜Ÿ ™ Ó #Ø �J‰JØ �K‰Kð ðrcóB•[n[US5n[US5nURU5nURU5nXV:waSSS5 SSS5 gU(dSSS5 SSS5 gMT!,(df  O=fSSS5 g!,(df  g=f)NÚrbTF)ÚBUFSIZEÚopenÚread)rr ÚbufsizeÚfp1Úfp2Úb1Úb2s rrrKso€Ü€GÜ ˆb�$Œ˜3¤ R¨¤°#ØØ—‘˜'Ó"ˆBØ—‘˜'Ó"ˆBØ‹xØ÷ !/�ˆö Ø÷!/�ˆÙ÷!/¥ú��Žús4“ B *A6Á BÁA6Á#BÁ4A6Á6 B ÂB Bcó˜•\rSrSrSrSSS.SjjrSrSrS rS r S r S r S r Sr Sr\"\ \ \ \ \\\\\\\\S9 rSr\"\5rSrg)réXa·A class that manages the comparison of 2 directories. dircmp(a, b, ignore=None, hide=None, *, shallow=True) A and B are directories. IGNORE is a list of names to ignore, defaults to DEFAULT_IGNORES. HIDE is a list of names to hide, defaults to [os.curdir, os.pardir]. SHALLOW specifies whether to just check the stat signature (do not read the files). defaults to True. High level usage: x = dircmp(dir1, dir2) x.report() -> 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 instances (or MyDirCmp instances if this object is of type MyDirCmp, a subclass of dircmp), keyed by names in common_dirs. NT©r!có°•XlX lUc&[R[R/UlOX@lUc [ UlOX0lXPlgr&) ÚleftÚrightrÚcurdirÚpardirÚhider Úignorer!)ÚselfÚaÚbr?r>r!s rÚ__init__Údircmp.__init__s@€ØŒ ØŒ Ø ‰<ÜŸ™¤B§I¡IÐ.ˆD�IàŒIØ ‰>Ü)ˆD�Kà ŒKØ� rcó„•[[R"UR5URUR -5Ul[[R"UR5URUR -5UlUR R5 URR5 gr&) Ú_filterrÚlistdirr:r>r?Ú left_listr;Ú right_listÚsort©r@s rÚphase0Ú dircmp.phase0Œsx€Ü ¤§¢¨D¯I©IÓ!6Ø!%§¡¨4¯;©;Ñ!6ó8ˆŒä!¤"§*¢*¨T¯Z©ZÓ"8Ø"&§)¡)¨D¯K©KÑ"7ó9ˆŒà �‰×ÑÔØ �‰×ÑÕrc ó€•[[[[RR UR 5UR 55n[[[[RR UR5UR55n[[UR[URU555Ul [[UR[URU555Ul[[UR[URU555Ulgr&)ÚdictÚzipÚmaprÚpathÚnormcaserHrIÚlistÚ __getitem__ÚfilterÚ __contains__ÚcommonrÚ left_onlyÚ right_only)r@rArBs rÚphase1Ú dircmp.phase1”s¼€Ü ””SœŸ™×)Ñ)¨4¯>©>Ó:¸D¿N¹NÓKÓ LˆÜ ””SœŸ™×)Ñ)¨4¯?©?Ó;¸T¿_¹_ÓMÓ NˆÜœ3˜qŸ}™}¬f°Q·^±^ÀQÓ.GÓHÓIˆŒ Üœc !§-¡-´¸Q¿^¹^ÈQÓ1OÓPÓQˆŒÜœs 1§=¡=´+¸a¿n¹nÈaÓ2PÓQÓRˆ�rcóì•/Ul/Ul/UlURGHœn[R R URU5n[R R URU5nSn[R"U5n[R"U5nU(aò[R"WR5n[R"WR5nXx:waURRU5 Mñ[R"U5(aURRU5 GM*[R "U5(aURRU5 GMcURRU5 GM�URRU5 GMŸ g![[4a SnGNFf=f![[4a SnGNHf=f)NTF)Ú common_dirsÚ common_filesÚ common_funnyrXrrRÚjoinr:r;rÚOSErrorÚ ValueErrorr'r(ÚappendÚS_ISDIRÚS_ISREG) r@ÚxÚa_pathÚb_pathÚokÚa_statÚb_statÚa_typeÚb_types rÚphase2Ú dircmp.phase2›si€ØˆÔØˆÔØˆÔà—•ˆAÜ—W‘W—\‘\ $§)¡)¨QÓ/ˆFÜ—W‘W—\‘\ $§*¡*¨aÓ0ˆFàˆBð ÜŸš ›�ð  ÜŸš ›�ö ÜŸš V§^¡^Ó4�ÜŸš V§^¡^Ó4�ØÓ#Ø×%Ñ%×,Ñ,¨QÖ/Ü—\’\ &×)Ñ)Ø×$Ñ$×+Ñ+¨A×.Ü—\’\ &×)Ñ)Ø×%Ñ%×,Ñ,¨Q×/à×%Ñ%×,Ñ,¨Q×/à×!Ñ!×(Ñ(¨×+ò=øôœZÐ(ó ð“ð  ûôœZÐ(ó à“ð ús$Á=GÂGÇGÇGÇG3Ç2G3cóš•[URURURUR5nUuUlUlUlgr&)rr:r;r_r!Ú same_filesÚ diff_filesÚ funny_files)r@Úxxs rÚphase3Ú dircmp.phase3Às7€Ü �d—i‘i §¡¨T×->Ñ->ÀÇ Á Ó MˆØ=?Ñ:ˆŒ˜œ¨$Õ*:rc óZ•0UlURH”n[RR UR U5n[RR UR U5nURX#URURURS9URU'M– g)Nr8) Úsubdirsr^rrRrar:r;Ú __class__r?r>r!)r@rgÚa_xÚb_xs rÚphase4Ú dircmp.phase4Äs|€ð ˆŒ Ø×!Ô!ˆAÜ—'‘'—,‘,˜tŸy™y¨!Ó,ˆCÜ—'‘'—,‘,˜tŸz™z¨1Ó-ˆCØ#Ÿ~™~¨c¸¿ ¹ ÀTÇYÁYØ6:·l±lð .ð DˆD�L‰L˜‹Oò"rcó†•UR5 URR5HnUR5 M gr&)r}ryÚvaluesÚphase4_closure©r@Úsds rr�Údircmp.phase4_closureÐs.€Ø � ‰ Œ Ø—,‘,×%Ñ%Ö'ˆBØ × Ñ Ö ò(rcó•[SURUR5 UR(a<URR 5 [SURSUR5 UR (a<UR R 5 [SURSUR 5 UR (a0UR R 5 [SUR 5 UR(a0URR 5 [SUR5 UR(a0URR 5 [SUR5 UR(a0URR 5 [SUR5 UR(a1URR 5 [SUR5 gg) NÚdiffzOnly inÚ:zIdentical files :zDiffering files :zTrouble with common files :zCommon subdirectories :zCommon funny cases :) Úprintr:r;rYrJrZrrrsrtr^r`rKs rÚreportÚ dircmp.reportÕsE€ä ˆf�d—i‘i §¡Ô,Ø �>�>Ø �N‰N× Ñ Ô !Ü �)˜TŸY™Y¨¨T¯^©^Ô <Ø �?�?Ø �O‰O× Ñ Ô "Ü �)˜TŸZ™Z¨¨d¯o©oÔ >Ø �?�?Ø �O‰O× Ñ Ô "Ü Ð% t§¡Ô 7Ø �?�?Ø �O‰O× Ñ Ô "Ü Ð% t§¡Ô 7Ø × × Ø × Ñ × !Ñ !Ô #Ü Ð/°×1AÑ1AÔ BØ × × Ø × Ñ × !Ñ !Ô #Ü Ð+¨T×-=Ñ-=Ô >Ø × × Ø × Ñ × "Ñ "Ô $Ü Ð(¨$×*;Ñ*;Õ <ð rcóš•UR5 URR5Hn[5 UR5 M gr&)r‰ryr€rˆr‚s rÚreport_partial_closureÚdircmp.report_partial_closureîs0€Ø � ‰ Œ Ø—,‘,×%Ñ%Ö'ˆBÜ ŒGØ �I‰IŽKò(rcóš•UR5 URR5Hn[5 UR 5 M gr&)r‰ryr€rˆÚreport_full_closurer‚s rr�Údircmp.report_full_closureôs3€Ø � ‰ Œ Ø—,‘,×%Ñ%Ö'ˆBÜ ŒGØ × "Ñ "Ö $ò(r) ryrrrsrtr^r_r`rXrYrZrHrIcóv•XR;a [U5eURU"U5 [X5$r&)Ú methodmapÚAttributeErrorÚgetattr)r@Úattrs rÚ __getattr__Údircmp.__getattr__s3€Ø —~‘~Ó %Ü  Ó&Ð &Ø �‰�tÒ˜TÔ"Ü�tÓ"Ð"r)rXr^r_r`rsrtr>r?r:rHrYr;rIrZrrr!ry)NN)Ú__name__Ú __module__Ú __qualname__Ú__firstlineno__Ú__doc__rCrLr[rorvr}r�r‰rŒr�rOr’r–Ú classmethodrÚ__class_getitem__Ú__static_attributes__rrrrrXs†ñ$ ðL Àö òòSò#,òJ@ò Dò ò =ò2ò %ñ ˜VØ &°6ÀvØ!'°fÈ6Ø"¨fÀØ%°&ñ :€Iò #ñ $ LÓ1ÓrrcóÚ•///4nUH_n[RRX5n[RRX5nU[XgU5R U5 Ma U$)a=Compare common files in two directories. a, b -- directory names common -- list of file names found in both directories shallow -- if true, do comparison based solely on stat() information Returns a tuple of three lists: files that compare equal files that are different filenames that aren't regular files. )rrRraÚ_cmprd)rArBrXr!ÚresrgÚaxÚbxs rrr s^€ð ˆr�2ˆ,€CÛ ˆÜ �W‰W�\‰\˜!Ó ˆÜ �W‰W�\‰\˜!Ó ˆØ ŒD�˜Ó !Ñ"×)Ñ)¨!Ö,ñð €JrcóX•U"U"XU55(+$![[4a gf=f)Né)rbrc)rArBÚshÚabsrs rr¡r¡$s2€ðÙ‘s˜1 “}Ó%Ô%Ð%øÜ ”ZÐ óÙðús ‚–)¨)có@•[[URU55$r&)rTrrW)ÚflistÚskips rrFrF-s€Ü ” ˜D×-Ñ-¨uÓ5Ó 6Ð6rcó •SSKnSSKnURURSSS5up#[U5S:waUR SS5e[ USUS5nSU;aUR 5 gUR5 g)NrrÚrr¦zneed exactly two args)z-rÚ)ÚsysÚgetoptÚargvrÚ GetoptErrorrr�r‰)r¯r°ÚoptionsÚargsÚdds rÚdemor¶3st€ÛÛØ—M‘M #§(¡(¨1¨2 ,°Ó4�M€GÜ ˆ4ƒy�Aƒ~Ø× Ñ Ð!8¸$Ó?Ð?Ü ��Q‘˜˜a™Ó !€BØ�WÓØ ×ÑÕ à � ‰ � rÚ__main__)T)rœrrÚ itertoolsrÚtypesrÚ__all__rr.r rrrrrrr¨r¡rFr¶r˜rrrÚr»s€ðñ ó Û Ý!Ýâ I€à €Ø €òJ€òô&òPò ÷n2ñn2ôbð6 ôò7ò ð ˆzÓÙ…Fðr