Ë Õ‡¾9ü1j°ãóH—ddlZddlZddlZddlZddlZddlZddlmZddlm Z m Z ddl m Z ddl mZmZmZddlmZddlmZej,d «ZdZd ZeZd ZdZd Zd Zd ZGd„d«Z Gd„d«Z!Gd„d«Z"Gd„de"«Z#Gd„de"«Z$Gd„d«Z%y)éN)Ú_)ÚgetattrÚopen)Úhex)ÚpolicyÚutilÚvfs)Úhashutilé)Ú shallowutilÚosutilééÿÿÿÿi gš™™™™™¹?có*—eZdZd„Zd„Zd„Zd„Zd„Zy)Ú_cachebackedpacksc óæ—t|«|_tj|«|_d|_t tt|t|««««D]}|j||«Œy©N) ÚsetÚ_packsrÚ lrucachedictÚ _lrucacheÚ _lastpackÚreversedÚrangeÚminÚlenÚ _movetofront)ÚselfÚpacksÚ cachesizeÚis ú@usr/lib/python3.12/site-packages/hgext/remotefilelog/basepack.pyÚ__init__z_cachebackedpacks.__init__:sY€Ü˜%“jˆŒ Ü×*Ñ*¨9Ó5ˆŒØˆŒôœ%¤ I¬s°5«zÓ :Ó;Ö<ˆAØ × Ñ ˜e A™hÕ 'ñ=ócó"—d|j|<y)NT)r©rÚpacks r"rz_cachebackedpacks._movetofrontDs€à#ˆ�‰�tÒr$cób—|j�#|j|j«d|_yyr)rr©rs r"Ú_registerlastpackusagez(_cachebackedpacks._registerlastpackusageHs*€Ø �>‰>Ð %Ø × Ñ ˜dŸn™nÔ -Ø!ˆD�Nð &r$có|—|j«|j|«|jj|«yr)r*rrÚaddr&s r"r,z_cachebackedpacks.addMs.€Ø ×#Ñ#Ô%ð ×ј$ÔØ � ‰ �‰˜Õr$c#óìK—|j«|jD] }||_|–—Œ|jD�chc]}|’Œ}}|j|z D] }||_|–—Œd|_ycc}w­wr)r*rrr)rr'Ú cachedpackss r"Ú__iter__z_cachebackedpacks.__iter__Usuèø€Ø ×#Ñ#Ô%ð—N”NˆDØ!ˆDŒNØ‹Jð#ð)-¯ªÓ7© ’t¨ˆ Ð7à—K‘K +Ô-ˆDØ!ˆDŒNØ‹Jð.ð ˆ�ùò8ùs‚;A4½ A/Á.A4N)Ú__name__Ú __module__Ú __qualname__r#rr*r,r/©r$r"rr9s„ò(ò$ò"ò ór$rcóN—eZdZdZd„Zd„Zd„Zd„Zd„Zd„Z d„Z d d „Z d „Z d „Z y )Ú basepackstoreédcó†—||_||_d|_g}|j«D])\}}} |j |«}|j|«Œ+t||j«|_y#t $rG}t |dd«tjk7r|jtd«||fz«Yd}~Œ“d}~wwxYw)NrÚerrnosunable to load pack %s: %s )ÚuiÚpathÚ lastrefreshÚ_getavailablepackfilessortedÚgetpackÚ Exceptionrr8ÚENOENTÚwarnrÚappendrÚDEFAULTCACHESIZEr)rr9r:rÚfilepathÚ__r'Úexs r"r#zbasepackstore.__init__ks¸€ØˆŒØˆŒ ðˆÔàˆØ $× AÑ AÖ CÑ ˆH�b˜"ð Ø—|‘| HÓ-�ð �L‰L˜Õ ð!Dô ' u¨d×.CÑ.CÓDˆ� øôò ô˜2˜w¨Ó-´·±Ò=Ø—G‘GœAÐ=Ó>À(ÈBÀÑOÔPÜûð ús°A0Á0 CÁ9=B;Â;Cc#óÂK—t|j«}t|j«}t«}t j d„«}t j d„«} t j|jd¬«D]Ç\}}}d} || d|jk(r|d| } n|| d|jk(r|d| } | sŒ?|| xx|jz cc<|| j|j«| |vr?tjj|j| «t|| «|| f–—Œ·|j| «ŒÉy#t $rYywxYw­w)zõFor each pack file (a index/data file combo), yields: (full path without extension, mtime, size) mtime will be the mtime of the index/data file (whichever is newer) size is the combined size of index/data file có—y)Nrr3r3r$r"Úz6basepackstore._getavailablepackfiles..‘s€°r$có—gSrr3r3r$r"rHz6basepackstore._getavailablepackfiles..’s€±r$T)ÚstatN)rÚ INDEXSUFFIXÚ PACKSUFFIXrÚ collectionsÚ defaultdictr Úlistdirr:Úst_sizerAÚst_mtimeÚosÚjoinÚmaxr,ÚFileNotFoundError) rÚindexsuffixlenÚ packsuffixlenÚidsÚsizesÚmtimesÚfilenameÚtyperJÚids r"Ú_getavailablepackfilesz$basepackstore._getavailablepackfiles†sJèø€ô˜T×-Ñ-Ó.ˆÜ˜DŸO™OÓ,ˆ ä‹eˆÜ×'Ñ'© Ó2ˆÜ×(Ñ(©Ó4ˆð Ü(.¯©°t·y±yÀt¨Ö(LÑ$�˜$ Ø�ؘ^˜OÐ,Ð-°×1AÑ1AÒAØ!Ð"2 N ?Ð3‘Bؘ}˜n˜oÐ.°$·/±/ÒAØ! / M >Ð2�Bò ؘ"“I §¡Ñ-“Iؘ2‘J×%Ñ% d§m¡mÔ4ؘS‘yäŸG™GŸL™L¨¯©°BÓ7Ü  r¡ ›OØ! "™Iðóð Ÿ™ � ñ))Møô*!ò Ù ð üs2‚A!EÁ$AEÃB EÅEÅ EÅEÅEÅEc#ó¨K—g}|j«D]\}}}|j|||f«Œt|d¬«}|D] \}}}|||f–—Œy­w)zÕLike `_getavailablepackfiles`, but also sorts the files by mtime, yielding newest files first. This is desirable, since it is more likely newer packfiles have more desirable data. T)ÚreverseN)r^rAÚsorted)rÚfilesr:ÚmtimeÚsizes r"r<z*basepackstore._getavailablepackfilessorted¬sdèø€ðˆØ!%×!<Ñ!<Ö!>Ñ ˆD�%˜Ø �L‰L˜%  tÐ,Õ -ð"?ä�u dÔ+ˆÛ!&Ñ ˆE�4˜Ø˜˜tÐ#Ó #ñ"'ùs‚AAcóX—d}d}|j«D]\}}}||z }|dz }Œ||fS)aLReturns the total disk size (in bytes) of all the pack files in this store, and the count of pack files. (This might be smaller than the total size of the ``self.path`` directory, since this only considers fuly-writen pack files, and not temporary files or other detritus on the directory.) rr )r^)rÚ totalsizeÚcountrDrds r"Úgettotalsizeandcountz"basepackstore.gettotalsizeandcountºsG€ðˆ ØˆØ ×7Ñ7Ö9‰LˆB��DØ ˜Ñ ˆIØ �Q‰J‰Eð:ð˜%ÐÐr$có2—|j«\}}||dœS)z+Returns metrics on the state of this store.)snumpackss totalpacksize)rh)rrdrgs r"Ú getmetricszbasepackstore.getmetricsÉs$€à×/Ñ/Ó1‰ ˆˆeàØ"ñ ð r$có—t«‚r©ÚNotImplementedError)rr:s r"r=zbasepackstore.getpackÑó €Ü!Ó#Ð#r$cóª—|}|jD]}|j|«}|rŒ|cS|r&|j«D]}|j|«}Œ|Sr)rÚ getmissingÚrefresh)rÚkeysÚmissingr's r"rpzbasepackstore.getmissingÔsW€ØˆØ—J”JˆDØ—o‘o gÓ.ˆGòØ’ð ñ ØŸ ™ ž�ØŸ/™/¨'Ó2‘ð'ðˆr$NcóH—|jD]}|j|«Œyr)rÚ markledger)rÚledgerÚoptionsr's r"ruzbasepackstore.markledgeräs€Ø—J”JˆDØ �O‰O˜FÕ #ñr$có—d|_y)z~Tells the store that there may be new pack files, so the next time it has a lookup miss it should check for new files.rN)r;r)s r"Úmarkforrefreshzbasepackstore.markforrefreshès €ðˆÕr$cór—tj«}g}||jtzkDr…||_|jD�chc]}|j’Œ}}|j «D]H\}}}||vsŒ |j |«}|j|«|jj|«ŒJ|Scc}w)ztChecks for any new packs on disk, adds them to the main pack list, and returns a list of just the new packs.) Útimer;Ú REFRESHRATErr:r<r=rAr,)rÚnowÚnewpacksÚpÚpreviousrCrDÚnewpacks r"rqzbasepackstore.refreshís¦€ô�i‰i‹kˆðˆØ �×!Ñ!¤KÑ/Ò /Ø"ˆDÔ Ø(,¯ ª Ó3©  1˜Ÿ›¨ ˆHÐ3Ø$(×$EÑ$EÖ$GÑ �˜"˜bØ 8Ò+Ø"Ÿl™l¨8Ó4�GØ—O‘O GÔ,Ø—J‘J—N‘N 7Õ+ð %Hð ˆùò4sÁB4r)r0r1r2rBr#r^r<rhrjr=rpruryrqr3r$r"r5r5gs<„àÐòEò6$òL $ò  ò ò$òó $òó r$r5có—eZdZdZdgZd„Zy)Ú versionmixinNrcóž—||jvr2|j€||_y|j|k7rtd|z«‚ytd|z«‚)Nsinconsistent version: %dsunsupported version: %d)ÚSUPPORTED_VERSIONSÚVERSIONÚ RuntimeError)rÚversions r"Ú _checkversionzversionmixin._checkversion sV€Ø �d×-Ñ-Ñ -Ø�|‰|Ð#à&�• Ø—‘ Ò(Ü"Ð#>ÀÑ#HÓIÐIð)ôÐ9¸GÑCÓDÐ Dr$)r0r1r2r†r…r‰r3r$r"rƒrƒs„à€GؘÐóEr$rƒcóŠ—eZdZdZdgZd„Zejd„«Zejd„«Z d„Z d„Z d d „Z d „Z d „Zd „Zy)Úbasepacki@rcó¢—||_||jz|_||jz|_t j |j«j|_t j |j«j|_ d|_ d|_ |j«tjd|jdt«d}|j!|«tjd|jdt"«\}}|j!|«d|zrt%t&|«|_yt%t*|«|_y)Nó!Bró!BBé€)r:rLÚpackpathrKÚ indexpathrRrJrPÚ indexsizeÚdatasizeÚ_indexÚ_dataÚ freememoryÚstructÚunpackÚPACKVERSIONSIZEr‰ÚINDEXVERSIONSIZEÚ indexparamsÚLARGEFANOUTPREFIXÚparamsÚSMALLFANOUTPREFIX)rr:rˆÚconfigs r"r#zbasepack.__init__sû€ØˆŒ ؘtŸ™Ñ.ˆŒ Ø × 0Ñ 0Ñ0ˆŒäŸ™ §¡Ó0×8Ñ8ˆŒÜŸ™ § ¡ Ó.×6Ñ6ˆŒ àˆŒ ؈Œ Ø �‰Ôä—-‘-  t§z¡zÐ2B´?Ð'CÓDÀQÑGˆØ ×ј7Ô#ä Ÿ-™-¨°· ± ÐNÑ>NÔOˆDŒJ÷(ðˆŒ Ø÷)Ð (ú÷ (ðˆŒ ØúsÁ1:Dà :DÄDÄD/có—t«‚rrl)rrrs r"rpzbasepack.getmissing[rnr$Ncó—t«‚rrl)rrvrws r"ruzbasepack.markledger^rnr$có—t«‚rrl)rrvs r"Úcleanupzbasepack.cleanuparnr$có—t«‚rrlr)s r"r/zbasepack.__iter__drnr$có—t«‚rrlr)s r"Ú iterentrieszbasepack.iterentriesgrnr$r)r0r1r2r¶r…r#rÚ propertycacherªr²r–rprurÀr/rÃr3r$r"r‹r‹sk„ð!€Jà˜ÐòBð. ×Ññóðð ×ÑñJóðJò ò.$ó$ò$ò$ó$r$r‹cóL—eZdZd d„Zd„Zd„Zd„Zd„Zd d„Zd„Z d „Z d „Z d „Z y)ÚmutablebasepackcóB—|j|«d|_tj|«}d|_||_i|_tj||«|j|jdz¬«\|_ |_ |j|jdz¬«\|_|_t!j"|jd«|_ t!j"|jd«|_t%j&«|_d|_|j-|j/|j««|j-|j/|j««t1j2d|j4«}|j7|«y)NsGZi$s-tmp)Úsuffixzwb+Fr�)r‰Ú _compressorÚvfsmodr Ú createmodeÚopenerÚentriesr ÚmkstickygroupdirÚmkstemprLÚpackfpr�rKÚidxfpÚidxpathrRÚfdopenr Úsha1ÚshaÚ_closedÚ _fixfilemoderSr—r'r†Úwriteraw)rr9ÚpackdirrˆrÌÚ versionbufs r"r#zmutablebasepack.__init__ls<€Ø ×ј7Ô#à ˆÔÜ—‘˜GÓ$ˆØ!ˆÔ؈Œ àˆŒ ä×$Ñ$ R¨Ô1Ø%+§^¡^Ø—?‘? WÑ,ð&4ó& Ñ"ˆŒ �T”]ð$*§>¡>Ø×#Ñ# gÑ-ð$2ó$ Ñ ˆŒ �D”Lô—i‘i § ¡ ¨UÓ3ˆŒ Ü—Y‘Y˜tŸz™z¨5Ó1ˆŒ Ü—=‘=“?ˆŒØˆŒ ð ×јFŸK™K¨¯ © Ó6Ô7Ø×јFŸK™K¨¯ © Ó5Ô6ô —[‘[ ¨¯ © Ó5ˆ Ø � ‰ �jÕ!r$có—|Srr3r)s r"Ú __enter__zmutablebasepack.__enter__Žs€Øˆ r$cóJ—|€|j«y|j«yr)r·Úabort)rÚexc_typeÚ exc_valueÚ tracebacks r"Ú__exit__zmutablebasepack.__exit__‘s€Ø Ð Ø �J‰J�Là �J‰J�Lr$có$—|j«yr)Ú_cleantemppacksr)s r"rÞzmutablebasepack.abort—s€à ×ÑÕr$cóp—|jj|«|jj|«yr)rÐÚwriterÕÚupdate)rÚdatas r"rØzmutablebasepack.writeraw›s$€Ø � ‰ ×ј$ÔØ �‰�‰˜Õr$Ncó*—|jry t|jj««}|jj «|j «t|j«dk(r|j«d|_y|jj|j||jz« |jj|j||jz« d|_|jj%|«}|r|j'|«|S#t $r@} |jj#||jz«|‚#t $rY|‚wxYwd}~wwxYw#t $r|j«‚wxYw)NrT)rÖrrÕÚdigestrÐr·Ú writeindexrrÍrärÌÚrenamer�rLrÒrKr>ÚunlinkrSÚ addcreated)rrvrÕrEÚresults r"r·zmutablebasepack.closeŸsU€Ø �<Š<Ø ð Ü�d—h‘h—o‘oÓ'Ó(ˆCØ �K‰K× Ñ Ô Ø �O‰OÔ ä�4—<‘<Ó  AÒ%à×$Ñ$Ô&Ø#�” Øà �K‰K× Ñ ˜tŸ}™}¨c°D·O±OÑ.CÔ Dð Ø— ‘ ×"Ñ" 4§<¡<°°t×7GÑ7GÑ1GÕHðˆŒ Ø—‘×!Ñ! #Ó&ˆÙ Ø × Ñ ˜fÔ %؈ øô#ò ðØ—K‘K×&Ñ& s¨T¯_©_Ñ'<Ô=ð �øô !òØð�ð þð ûôò à × Ñ Ô "Ø ð úsN�ArÒr)s r"räzmutablebasepack._cleantemppacksÄs_€ð Ø �K‰K× Ñ ˜tŸ}™}Ô -ð Ø �K‰K× Ñ ˜tŸ|™|Õ ,øôò Ù ð ûôò Ù ð ús"‚%A¨%AÁ AÁAÁ A)Á(A)có°—t|j«tkD}|rtt|j «}ntt |j «}tg|jz}i}d}t|j«D]]}||jz}|||<|dz }tj|j|d|j«d}||tk(sŒY|||<Œ_d} d} |D]*} | tk7r| n| } | } | tjd| «z } Œ,tjdt|j««} |j!|dt| «z«} |j#|«|j$j'| «|j$j'| «|j$j'| «|j$j)«y)Nrr r$r¢r¬r)rrÍÚSMALLFANOUTCUTOFFr›rœr†ržÚ EMPTYFANOUTr¥rar°r—r˜Ú fanoutstructÚ fanoutprefixr'Ú createindexÚ _writeheaderrÑrær·)rÚ largefanoutr�r§Ú locationsrgÚnodeÚlocationÚ fanoutkeyÚrawfanouttableÚlastÚoffsetÚrawentrieslengthÚrawindexs r"rëzmutablebasepack.writeindexÎs¥€Ü˜$Ÿ,™,Ó'Ô*;Ñ;ˆ Ù Ü Ô!2°D·L±LÓA‰Fä Ô!2°D·L±LÓAˆFä"�m f×&8Ñ&8Ñ8ˆ ðˆ ØˆÜ˜4Ÿ<™<Ö(ˆDؘt×4Ñ4Ñ4ˆHØ&ˆI�d‰OØ �Q‰JˆEôŸ ™ Ø×#Ñ# TÐ*?¨F×,?Ñ,?Ð%@óàñˆIð˜9Ñ%¬Ó4Ø)1� ˜IÒ&ð)ðˆØˆÛ!ˆFØ%¬Ò4‘V¸$ˆF؈DØ œfŸk™k¨%°Ó8Ñ 8‰Nð"ô "Ÿ;™; u¬c°$·,±,Ó.?Ó@Ðð×#Ñ# I¨q´3°~Ó3FÑ/FÓGˆà ×ј&Ô!Ø � ‰ ×јÔ(Ø � ‰ ×ÑÐ)Ô*Ø � ‰ ×јÔ"Ø � ‰ ×ÑÕr$có—t«‚rrl)rÚ nodelocationss r"rözmutablebasepack.createindexùrnr$có¦—d}|jtk(rd}|jjt j d|j |««y)Nrr�rŽ)rõrœrÑrær—r'r†)rr›rŸs r"r÷zmutablebasepack._writeheaderüs@€ð ˆØ × #Ñ #Ô'8Ò 8؈FØ � ‰ ×ÑœŸ™ V¨T¯\©\¸6ÓBÕCr$)rr) r0r1r2r#rÜrârÞrØr·rärërör÷r3r$r"rÆrÆks8„ó "òDòò òó#òJò)òV$óDr$rÆcó—eZdZdZd„Zy)r›)rõrôr¥r¤r¯có—||_|tk(rd|_n|tk(rd|_nt d|z«‚d|dzz|_|j dz|_t|j z|_|xjdz c_y)Nr�s!Hsinvalid fanout prefix size: %srr­r¡) rõržrôrœÚ ValueErrorr¥r¤r£r¯)rÚ prefixsizerˆs r"r#zindexparams.__init__s„€Ø&ˆÔð Ô*Ò *Ø %ˆDÕ Ø Ô,Ò ,Ø %ˆDÕ äÐ>ÀÑKÓLÐ Lð ¨a¡Ñ0ˆÔð×*Ñ*¨QÑ.ˆŒä%¨¯©Ñ7ˆŒà �Š˜1ÑŽr$N)r0r1r2Ú __slots__r#r3r$r"r›r›s„ð€Iór$r›)&rMr8r¸rRr—r{Úmercurial.i18nrÚmercurial.pycompatrrÚmercurial.noderÚ mercurialrrr rÊÚmercurial.utilsr Úr Ú importmodr r™ršr£róržrœròr|rr5rƒr‹rÆr›r3r$r"ÚrsÌðÛÛ Û Û Û Û å÷õ÷ñõ %Ýà ˆ× Ñ ˜(Ó #€ð €ØÐà€ ð€ ð ÐØÐð!Ðð € ÷+ñ+÷\ZñZ÷z Eñ Eô T$ˆ|ôT$ônYD�lôYD÷xòr$