ó
    6°h°8  ã                  ó0  • S SK Jr  S SKrS SKrS SKrSSKJrJrJrJ	r	  SSKJ
r
  SS jr\R                  R                  S5      r\(       a  SS	 jr\R                  " \
R                   S
-   5      r\R                  " S5      r " S S5      rS rS rSS jrg)é    )ÚannotationsNé   )ÚencodingÚerrorÚnodeÚutilé   )Ú	constantsc                ó\   • [         R                  " [        R                  " U S-  5      5      $ )z[return a new unique identifier.

The identifier is random and composed of ascii characters.r   )r   ÚhexÚosÚurandom)Úid_sizes    Ú>/usr/lib/python3/dist-packages/mercurial/revlogutils/docket.pyÚmake_uidr   $   s    € ô �8Š8”B—J’J˜w¨!™|Ó,Ó-Ð-ó    s   HGTEST_UUIDFILEc                óv  •  [        [        SS9 nUR                  5       R                  5       nS S S 5        [        W5      nSn[        SS5      nU H  nUS-	  nXE-  S-  nXx-   U-   nM     [        R                  " 5       n	U	R                  US	S
9  U	R                  U S-  5      n
U S:X  d   e[        R                  " SU
5      n[        R                  " U5      n[        [        S5       nUR                  U5        S S S 5        U$ ! , (       d  f       NÝ= f! [         a    Sn Nîf = f! , (       d  f       U$ = f)NÚrb)Úmodes   04r   Ú#11111111111111111111111111111111111r   é#   é   r	   )Úversioné   é   z>LÚwb)ÚopenÚstable_docket_fileÚreadÚstripÚFileNotFoundErrorÚiterÚintÚrandomÚRandomÚseedÚgetrandbitsÚstructÚpackr   r   Úwrite)r   Úfr&   Ú	iter_seedÚint_seedÚlow_maskÚiÚ	high_partÚlow_partÚrÚrawÚpÚnews                r   r   r   2   s  € ð	ÜÔ(¨tÒ4¸Ø—v‘v“x—~‘~Ó'�÷ 5ô ˜“Jˆ	àˆÜ�x Ó#ˆÛˆAØ  B™ˆIØ Ñ+°Ñ2ˆHØ Ñ+¨aÑ/ŠHñ ô �MŠM‹OˆØ	�‰ˆx ˆÑ#à�m‰m˜G a™KÓ(ˆØ˜!‹|Ðˆ|Ü�KŠK˜˜cÓ"ˆÜ�hŠh�q‹kˆÜÔ$ dÔ+¨qØ�G‰G�CŒL÷ ,àˆ
÷+ 5Õ4ûä ó 	ØŠDð	ú÷" ,Ô+àˆ
ús9   ‚D �D¯D Ã*D)Ä
DÄD ÄD ÄD&Ä%D&Ä)
D8s   BBBBBBQQQQQQcz>BLc                  ó2  • \ rS rSrSr               SS jrS rS rSS jrS r	S	 r
SS
 jrS rS rSS jr\S 5       r\R"                  S 5       r\S 5       r\R"                  S 5       r\S 5       r\R"                  S 5       rSS jrSS jrSrg)ÚRevlogDocketéd   zmetadata associated with revlogNc                óü  • X0l         [        U5      U l        SU l        UR                  U l        UR                  U l        UR                  U l	        X@l
        XPl        X`l        Xpl        X€l        X�l        [!        U5      [!        U5      -  (       a   e[!        U5      [!        U	5      -  (       a   e[!        U5      [!        U	5      -  (       a   eX«::  d   eXÍ::  d   eXï::  d   eX l        X°l        XÀl        XÐl        Xàl        Xðl        U(       a4  U R$                  U l        U R(                  U l        U R,                  U l        O3U R"                  U l        U R&                  U l        U R*                  U l        UU l        g )NF)Ú_version_headerÚboolÚ
_read_onlyÚ_dirtyÚradixÚ_radixÚ_docket_fileÚ_pathÚopenerÚ_openerÚ_index_uuidÚ_older_index_uuidsÚ
_data_uuidÚ_older_data_uuidsÚ_sidedata_uuidÚ_older_sidedata_uuidsÚsetÚ_initial_index_endÚ_pending_index_endÚ_initial_data_endÚ_pending_data_endÚ_initial_sidedata_endÚ_pending_sidedata_endÚ
_index_endÚ	_data_endÚ_sidedata_endÚdefault_compression_header)ÚselfÚrevlogÚuse_pendingÚversion_headerÚ
index_uuidÚolder_index_uuidsÚ	data_uuidÚolder_data_uuidsÚsidedata_uuidÚolder_sidedata_uuidsÚ	index_endÚpending_index_endÚdata_endÚpending_data_endÚsidedata_endÚpending_sidedata_endrT   s                    r   Ú__init__ÚRevlogDocket.__init__g   sT  € ð&  .ÔÜ˜{Ó+ˆŒØˆŒØ—l‘lˆŒØ×(Ñ(ˆŒ
Ø—}‘}ˆŒØ%ÔØ"3ÔØ#ŒØ!1ÔØ+ÔØ%9Ô"ÜÐ(Ó)¬CÐ0@Ó,A×AÐAÐAÜÐ'Ó(¬3Ð/CÓ+D×DÐDÐDÜÐ(Ó)¬CÐ0DÓ,E×EÐEÐEàÓ-Ð-Ð-ØÓ+Ð+Ð+ØÓ3Ð3Ð3Ø"+ÔØ"3ÔØ!)ÔØ!1ÔØ%1Ô"Ø%9Ô"ÞØ"×5Ñ5ˆDŒOØ!×3Ñ3ˆDŒNØ!%×!;Ñ!;ˆDÕà"×5Ñ5ˆDŒOØ!×3Ñ3ˆDŒNØ!%×!;Ñ!;ˆDÔØ*DˆÕ'r   c                óp   • U R                   c  [        5       U l         SU R                  U R                   4-  $ )z=file path to the current index file associated to this docketó	   %s-%s.idx)rD   r   r?   ©rU   s    r   Úindex_filepathÚRevlogDocket.index_filepath�   s4   € ð ×ÑÑ#Ü'›zˆDÔØ˜tŸ{™{¨D×,<Ñ,<Ð=Ñ=Ð=r   c                ó¨   • U R                   U R                  4nU R                  R                  SU5        [	        5       U l         U R                  5       $ )zTswitch index file to a new UID

The previous index UID is moved to the "older" list.r   )rD   rQ   rE   Úinsertr   rj   ©rU   Úolds     r   Únew_index_fileÚRevlogDocket.new_index_file¤   sG   € ð ×Ñ §¡Ð1ˆØ×Ñ×&Ñ& q¨#Ô.Ü#›:ˆÔØ×"Ñ"Ó$Ð$r   c              #  óz   #   • U R                    H'  u  p#U(       d  US:”  d  M  SU R                  U4-  v •  M)     g7f)z>yield file path to older index files associated to this docketr   rh   N)rE   r?   ©rU   Úinclude_emptyÚuuidÚsizes       r   Úold_index_filepathsÚ RevlogDocket.old_index_filepaths­   s6   é € ð ×1Ô1‰JˆDÞ  q¥Ø" d§k¡k°4Ð%8Ñ8Ô8ò 2ùó   ‚;£;c                óp   • U R                   c  [        5       U l         SU R                  U R                   4-  $ )z<file path to the current data file associated to this docketó	   %s-%s.dat)rF   r   r?   ri   s    r   Údata_filepathÚRevlogDocket.data_filepath´   s/   € ð �?‰?Ñ"Ü&›jˆDŒOØ˜tŸ{™{¨D¯O©OÐ<Ñ<Ð<r   c                ó¨   • U R                   U R                  4nU R                  R                  SU5        [	        5       U l         U R                  5       $ )zRswitch data file to a new UID

The previous data UID is moved to the "older" list.r   )rF   rR   rG   rm   r   r|   rn   s     r   Únew_data_fileÚRevlogDocket.new_data_file»   sD   € ð �‰ §¡Ð/ˆØ×Ñ×%Ñ% a¨Ô-Ü"›*ˆŒØ×!Ñ!Ó#Ð#r   c              #  óz   #   • U R                    H'  u  p#U(       d  US:”  d  M  SU R                  U4-  v •  M)     g7f)z=yield file path to older data files associated to this docketr   r{   N)rG   r?   rs   s       r   Úold_data_filepathsÚRevlogDocket.old_data_filepathsÄ   s6   é € ð ×0Ô0‰JˆDÞ  q¥Ø" d§k¡k°4Ð%8Ñ8Ô8ò 1ùry   c                óp   • U R                   c  [        5       U l         SU R                  U R                   4-  $ )z@file path to the current sidedata file associated to this docketó	   %s-%s.sda)rH   r   r?   ri   s    r   Úsidedata_filepathÚRevlogDocket.sidedata_filepathË   s4   € ð ×ÑÑ&Ü"*£*ˆDÔØ˜tŸ{™{¨D×,?Ñ,?Ð@Ñ@Ð@r   c                ó¨   • U R                   U R                  4nU R                  R                  SU5        [	        5       U l         U R                  5       $ )zZswitch sidedata file to a new UID

The previous sidedata UID is moved to the "older" list.r   )rH   rS   rI   rm   r   r†   rn   s     r   Únew_sidedata_fileÚRevlogDocket.new_sidedata_fileÒ   sI   € ð ×"Ñ" D×$6Ñ$6Ð7ˆØ×"Ñ"×)Ñ)¨!¨SÔ1Ü&›jˆÔØ×%Ñ%Ó'Ð'r   c              #  óz   #   • U R                    H'  u  p#U(       d  US:”  d  M  SU R                  U4-  v •  M)     g7f)zAyield file path to older sidedata files associated to this docketr   r…   N)rI   r?   rs   s       r   Úold_sidedata_filepathsÚ#RevlogDocket.old_sidedata_filepathsÛ   s6   é € ð ×4Ô4‰JˆDÞ  q¥Ø" d§k¡k°4Ð%8Ñ8Ô8ò 5ùry   c                ó   • U R                   $ ©N)rQ   ri   s    r   r_   ÚRevlogDocket.index_endâ   s   € à�‰Ðr   c                ó>   • XR                   :w  a  Xl         SU l        g g ©NT)rQ   r=   ©rU   Únew_sizes     r   r_   r�   æ   s   € à—‘Ó&Ø&ŒOØˆD�Kð 'r   c                ó   • U R                   $ r�   )rR   ri   s    r   ra   ÚRevlogDocket.data_endì   s   € à�~‰~Ðr   c                ó>   • XR                   :w  a  Xl         SU l        g g r’   )rR   r=   r“   s     r   ra   r–   ð   s   € à—~‘~Ó%Ø%ŒNØˆD�Kð &r   c                ó   • U R                   $ r�   )rS   ri   s    r   rc   ÚRevlogDocket.sidedata_endö   s   € à×!Ñ!Ð!r   c                ó>   • XR                   :w  a  Xl         SU l        g g r’   )rS   r=   r“   s     r   rc   r™   ú   s    € à×)Ñ)Ó)Ø!)ÔØˆD�Kð *r   c                óŠ  • U R                   (       d  gU R                  (       a&  SnX@R                  -  n[        R                  " U5      eU(       d  UR                  U R                  SS9  U R                  U R                  SSS9 nUR                  U R                  US95        S	S	S	5        X l         g! , (       d  f       N= f)
zWwrite the modification of disk if any

This make the new content visible to all processFs   writing read-only docket: %ss   store)Úlocationó   wT)r   Ú
atomictemp)ÚpendingN)	r=   r<   rA   r   ÚProgrammingErrorÚ	addbackuprC   r*   Ú
_serialize)rU   ÚtransactionrŸ   Ú	strippingÚmsgr+   s         r   r*   ÚRevlogDocket.write   sœ   € ð �{�{Øà��Ø5�Ø—z‘zÑ!�Ü×,Ò,¨SÓ1Ð1Þð ×%Ñ% d§j¡j¸8Ð%ÑDØ—‘˜dŸj™j¨tÀ�ÑEÈØ—‘˜Ÿ™°˜Ð8Ô9÷ Fð "ŒKØ÷	 FÕEús   ÂB4Â4
Cc                óÐ  • U(       a%  U R                   nU R                  nU R                  nO$U R                  nU R                  nU R
                  nX0R                  ::  d   eX@R
                  ::  d   eU R                  [        U R                  5      [        U R                  5      [        U R                  5      [        U R                  5      [        U R                  5      [        U R                  5      UU R                  UU R                  UU R
                  U R                  4n/ nUR                  [         R"                  " U6 5        UR                  U R                  5        U R                   H3  u  pxUR                  [$        R#                  [        U5      U5      5        M5     U R                   H  u  pxUR                  U5        M     UR                  U R                  5        U R                   H3  u  pxUR                  [$        R#                  [        U5      U5      5        M5     U R                   H  u  pxUR                  U5        M     UR                  U R                  5        U R                   H3  u  pxUR                  [$        R#                  [        U5      U5      5        M5     U R                   H  u  pxUR                  U5        M     SR'                  U5      $ )Nr   )rK   rM   rO   rQ   rR   rS   r:   ÚlenrD   rE   rF   rG   rH   rI   rT   ÚappendÚS_HEADERr)   Ú	S_OLD_UIDÚjoin)	rU   rŸ   Úofficial_index_endÚofficial_data_endÚofficial_sidedata_endÚdataÚsÚurv   s	            r   r¢   ÚRevlogDocket._serialize  s8  € ÞØ!%×!8Ñ!8ÐØ $× 6Ñ 6ÐØ$(×$>Ñ$>Ñ!à!%§¡ÐØ $§¡ÐØ$(×$6Ñ$6Ð!ð !§N¡NÓ2Ð2Ð2Ø$×(:Ñ(:Ó:Ð:Ð:à× Ñ Ü�× Ñ Ó!Ü�×'Ñ'Ó(Ü�—‘Ó Ü�×&Ñ&Ó'Ü�×#Ñ#Ó$Ü�×*Ñ*Ó+ØØ�O‰OØØ�N‰NØ!Ø×ÑØ×+Ñ+ð
ˆð  ˆØ	�‰”—’ Ð%Ô&à	�‰�×!Ñ!Ô"Ø×.Ô.‰GˆAØ�H‰H”Y—^‘^¤C¨£F¨DÓ1Ö2ñ /à×.Ô.‰GˆAØ�H‰H�QŽKñ /ð 	
�‰�—‘Ô!Ø×-Ô-‰GˆAØ�H‰H”Y—^‘^¤C¨£F¨DÓ1Ö2ñ .à×-Ô-‰GˆAØ�H‰H�QŽKñ .ð 	
�‰�×$Ñ$Ô%Ø×1Ô1‰GˆAØ�H‰H”Y—^‘^¤C¨£F¨DÓ1Ö2ñ 2à×1Ô1‰GˆAØ�H‰H�QŽKñ 2à�x‰x˜‹{Ðr   )rR   rF   r=   rQ   rD   rM   rK   rO   rG   rE   rI   rC   rA   rN   rL   rP   r?   r<   rS   rH   r:   rT   )FNN© Nr´   Nr´   r   r   r   r   r   r   N)T)FF©F)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__re   rj   rp   rw   r|   r   r‚   r†   r‰   rŒ   Úpropertyr_   Úsetterra   rc   r*   r¢   Ú__static_attributes__r´   r   r   r7   r7   d   sû   † Ù)ð
 ØØØØØØØØØØØØØØ#'ô#4Eòl>ò%ô9ò=ò$ô9òAò(ô9ð ñó ðð ×Ññó ðð
 ñó ðð ‡_�_ñó ðð
 ñ"ó ð"ð ×Ññó ðô
÷*1r   r7   c                óè   • US-  nU[         R                  [         R                  4;  a  g[        R                  U R
                  R                     R                  5       n[        U UUS9nSUl	        U$ )z?given a revlog version a new docket object for the given revlogiÿÿ  N)rX   rT   T)
r
   ÚREVLOGV2ÚCHANGELOGV2r   ÚcompenginesÚfeature_configÚcompression_engineÚrevlogheaderr7   r=   )rV   rX   Ú
rl_versionÚcompÚdockets        r   Údefault_docketrÈ   I  st   € à &Ñ(€JØœ)×,Ñ,¬i×.CÑ.CÐDÓDØÜ×ÑØ×Ñ×0Ñ0ñç�lƒnð 	ô ØØ%Ø#'ñ€Fð
 €F„MØ€Mr   c                óò   • / n/ n[        SU5       H=  nU " [        R                  5      nUR                  [        R	                  U5      5        M?     U H  u  pgU " U5      nUR                  X‡45        M!     U$ )Nr   )Úranger«   rv   r©   Úunpack)	Úget_dataÚcountÚ	all_sizesÚall_uidsr/   r3   Úuid_sizeÚ	file_sizeÚuids	            r   Ú_parse_old_uidsrÓ   Z  sr   € Ø€IØ€HÜ�1�eŽ_ˆÙ”y—~‘~Ó&ˆØ×Ñœ×)Ñ)¨#Ó.Ö/ñ ó  )ÑˆÙ�xÓ ˆØ�‰˜Ð(Ö)ñ  )ð €Or   c                óx  ^^• [         R                  TS[         R                   5      n[         R                  /mUU4S jn[        U5      n[	        U5      n[	        U5      nU" U5      n[	        U5      n	[        XI5      n
[	        U5      nU" U5      n[	        U5      n[        XM5      n[	        U5      nU" U5      n[	        U5      n[        UU5      n[	        U5      n[	        U5      n[	        U5      n[	        U5      n[	        U5      n[	        U5      n[	        U5      n[        U 4UUUU
UUUUUUUUUUUS.6nU$ )zBgiven some docket data return a docket object for the given revlogNc                óÄ   >• TS   U -   [        T5      :”  a.  SnUTS   U -   [        T5      4-  n[        R                  " U5      eTTS   TS   U -    nTS==   U -  ss'   U$ )z/utility closure to access the `size` next bytesr   s'   docket is too short, expected %d got %d)r¨   r   ÚAbort)rv   r¥   r3   r°   Úoffsets      €€r   rÌ   Úparse_docket.<locals>.get_datan  st   ø€ à�!‰9�tÑœc $›iÓ'à<ˆCØ�F˜1‘I Ñ$¤c¨$£iÐ0Ñ0ˆCÜ—+’+˜cÓ"Ð"Ø�6˜!‘9˜v a™y¨4Ñ/Ð0ˆØˆq‹	�TÑ‹	Øˆ
r   )rW   rX   rY   rZ   r[   r\   r]   r^   r_   r`   ra   rb   rc   rd   rT   )rª   rË   rv   r"   ÚnextrÓ   r7   )rV   r°   rW   ÚheaderrÌ   ÚiheaderrX   Úindex_uuid_sizerY   Úolder_index_uuid_countrZ   Údata_uuid_sizer[   Úolder_data_uuid_countr\   Úsidedata_uuid_sizer]   Úolder_sidedata_uuid_countr^   Ú
index_sizeÚpending_index_sizeÚ	data_sizeÚpending_data_sizeÚsidedata_sizeÚpending_sidedata_sizerT   rÇ   r×   s    `                         @r   Úparse_docketrè   g  sH  ù€ ä�_‰_˜T /¤H§M¡MÐ2Ó3€Fô �m‰mˆ_€Fö	ô �6‹l€Gä˜'“]€Nä˜7“m€OÙ˜/Ó*€Jä! '›]ÐÜ'¨ÓIÐä˜'“]€NÙ˜Ó(€Iä  ›MÐÜ& xÓGÐä˜g›ÐÙÐ/Ó0€Mä $ W£ÐÜ*¨8Ð5NÓOÐä�g“€Jä˜g›Ðä�W“€Iä˜W›Ðä˜“M€Mä  ›MÐä!% g£ÐäØðàØ%ØØ+ØØ)Ø#Ø1ØØ,ØØ*Ø"Ø2Ø#=ò!€Fð$ €Mr   )r   rµ   )Ú
__future__r   r   r$   r(   Ú r   r   r   r   r
   r   ÚenvironÚgetr   ÚStructÚINDEX_HEADER_FMTrª   r«   r7   rÈ   rÓ   rè   r´   r   r   Ú<module>rï      s“   ðõ$ #ã 	Û Û ÷ó õô
.ð ×%Ñ%×)Ñ)Ð*<Ó=Ð æôðX �=Š=˜×3Ñ3Ð6FÑFÓG€ð �MŠM˜%Ó €	÷bñ bòJò"
õHr   