403Webshell
Server IP : 80.87.202.40  /  Your IP : 216.73.216.169
Web Server : Apache
System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64
User : bitrix ( 600)
PHP Version : 8.2.27
Disable Function : NONE
MySQL : OFF |  cURL : ON |  WGET : ON |  Perl : ON |  Python : OFF |  Sudo : ON |  Pkexec : ON
Directory :  /lib64/python3.9/site-packages/mercurial/revlogutils/__pycache__/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /lib64/python3.9/site-packages/mercurial/revlogutils/__pycache__/nodemap.cpython-39.opt-1.pyc
a

�+�bQV�@s�ddlmZddlZddlZddlZddlmZddlmZm	Z	m
Z
ddlmZGdd	�d	e
�Zd
d�Zdd
�Zdd�Zdd�ZGdd�de�Zdd�Zdd�ZdGdd�ZdZe�d�Ze�d�ZGdd�de�Zdd �Zd!d"�Zd#d$�Zd%d&�Z e�d'�Z!d(Z"dZ#d)d*�Z$d+d,�Z%Gd-d.�d.e
�Z&d/d0�Z'd1d2�Z(d3d4�Z)dHd5d6�Z*d7d8�Z+d9d:�Z,d;d<�Z-d=d>�Z.d?d@�Z/dAdB�Z0dCdD�Z1dEdF�Z2dS)I�)�absolute_importN�)�hex)�error�requirements�util�)�docketc@seZdZdd�ZdS)�NodeMapcCst�d|��dS)Nsunknown node: %s)rZRevlogError)�self�x�r
�C/usr/lib64/python3.9/site-packages/mercurial/revlogutils/nodemap.py�__missing__szNodeMap.__missing__N)�__name__�
__module__�__qualname__rr
r
r
rr
sr
cCsdS)zrhook point for test

    This let tests to have things happens between the docket reading and the
    data readingNr
r
r
r
r�test_race_hook_1srcCsLtj|jvrdStj|jvr dS|��}td||j�td||jjj�dS)zoThe stream clone might needs to remove some file if persisten nodemap
    was dropped while stream cloning
    N)	rZREVLOGV1_REQUIREMENTZNODEMAP_REQUIREMENTZ
unfiltered�delete_nodemapZ	changelogZmanifestlogZ
_rootstoreZ_revlog)�repoZunfir
r
r�post_stream_cleanup&src
Cs�|jdurdS|j�|j�}|s$dSd}t�|||tj��\}|tkrNdS|tj7}t�|||tj��}|\}}}}}	|tj7}t||||��}
||7}||
_	||||	�|
_
||
_||
_t
||
�}|jj�d�}t�zr|�|��R}
|�r,zt�t�|
|��}Wnt�y(d}Yn0n
|
�|�}Wd�n1�sL0YWnHttf�y�}z*|jtjk�r�WYd}~dS�WYd}~n
d}~00t|�|k�r�dS|
|fS)z'read the nodemap for a revlog from diskNr�persistent-nodemap.mmap�)�
_nodemap_file�openerZtryread�	S_VERSION�unpack�size�ONDISK_VERSION�S_HEADER�
NodeMapDocket�tip_rev�tip_node�data_length�data_unused�_rawdata_filepath�options�getrr�buffer�mmapread�
ValueError�read�IOError�OSError�errno�ENOENT�len)�revlogZpdata�offset�version�headersZuid_sizer!r#r$Z
tip_node_sizer	�filename�use_mmap�fd�data�er
r
r�persisted_data3sJ



.r:cs\�jr
dS�jdurdSd�j}|�|�r0dS|�|�fdd��|�|�fdd��dS)z�Install whatever is needed transaction side to persist a nodemap on disk

    (only actually persist the nodemap if this is relevant for this revlog)
    Nsnm-revlog-persistent-nodemap-%scst|�dd�S)NT)�pending��persist_nodemap��tr�r1r
r�<lambda>prz*setup_persistent_nodemap.<locals>.<lambda>cs
t|��S�Nr<r>r@r
rrArr)�_inlinerZhasfinalizeZ
addpendingZaddfinalize)r?r1�callback_idr
r@r�setup_persistent_nodemapas


�rEc@sHeZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dS)�_NoTransactionzCtransaction like object to update the nodemap outside a transactioncCs
i|_dSrB��
_postclose�rr
r
r�__init__xsz_NoTransaction.__init__cCs||j|<dSrBrG)rrDZ
callback_funcr
r
r�addpostclose{sz_NoTransaction.addpostclosecOsdSrBr
�r�args�kwargsr
r
r�registertmp~sz_NoTransaction.registertmpcOsdSrBr
rLr
r
r�	addbackup�sz_NoTransaction.addbackupcOsdSrBr
rLr
r
r�add�sz_NoTransaction.addcOsdSrBr
rLr
r
r�addabort�sz_NoTransaction.addabortcGsdSrBr
)rrMr
r
r�_report�sz_NoTransaction._reportN)rrr�__doc__rJrKrOrPrQrRrSr
r
r
rrFusrFcCsJ|jr
dS|jdurdSt�}t||�t|j�D]}|j|d�q2dS)z�update the persistent nodemap right now

    To be used for updating the nodemap on disk outside of a normal transaction
    setup (eg, `debugupdatecache`).
    N)rCrrFr=�sortedrH)r1Znotr�kr
r
r�update_persistent_nodemap�s

rWcCsN|j}t�d|�}|j�|j�}|j�|�D]}|�|�r.|j�	|�q.dS)z.Delete nodemap data on disk for a given revlogs"(^|/)%s(-[0-9a-f]+\.nd|\.n(\.a)?)$N)
�radix�re�compiler�dirnameZ
_indexfile�listdir�matchZsvfs�	tryunlink)r?rr1�prefix�pattern�dirpath�fr
r
rr�s
rFcs6t|dd�rt�d��|jdur>|r0t|�|_nd}t�|��t�|jd�}|j}t�|jd�}|j	j
�d�}d}	|�rx|du�rx|j��}
|j�
�\}}}	|
jt|	�}
|
j|}||
kr�d}	n�|
|d	kr�d}	n�t||
��|��|
j�|�	�d
��b}|�|
j�|�|	�|�rL|�r2|�d�|�|
�}n|��t�t�||
��}Wd�n1�sb0Y|
|
_||
_|	du�rTt�}
t||
��t�|jd��r�|j��}	n
t|j�}	|j	j���fd
d�}d�}|�||�|�	�d��J}|�|	�|�r*|�r|	}n|��t�t�|t|	���}Wd�n1�s@0Yt|	�|
_|��|
_|� |
j�|
_!|j}|�r�|d7}|�"|�n
|�#|�|j	|ddd��}|�|
�$��Wd�n1�s�0Y|
|_|�r�|j�%|
|�t&||
����r2t|d|j	����fdd�}d|j}|�'||�dS)z-Write nodemap data on disk for a given revlogZfilteredrevsr
z.cannot persist nodemap of a filtered changelogNz?calling persist nodemap on a revlog without the feature enabled�nodemap_data_incremental�update_nodemap_datar�
sr+r�nodemap_data_allcs���dSrBr
r>)�datafiler^r
r�abortck�sz persist_nodemap.<locals>.abortcks	delete-%ssw+s.a�wT)Z
atomictempZ_realopenercs�D]}��|�qdSrB)r^)r?Zoldfile)�olds�realvfsr
r�cleanupsz persist_nodemap.<locals>.cleanupsrevlog-cleanup-nodemap-%s)(�getattrrZProgrammingErrorr�get_nodemap_filerZsafehasattr�indexZ_nodemap_docketrr&r'�copyrcr#r0r$r%rQ�seek�writer+�flushr(r)r rf�persistent_datar^rRZtiprevr!�noder"rOrP�	serializerd�_other_rawdata_filepathrK)r?r1r;�force�msgZcan_incrementalZ
ondisk_docketZ	feed_datar6r8Z
target_docketZ
src_docketZdata_changed_countZ
new_lengthZ
new_unusedr7Znew_datarhrDZ	file_path�fprlr
)rgrjrkr^rr=�s��


�



2



6


.

r=z>Bz>BQQQQc@s:eZdZdZd
dd�Zdd�Zdd�Zd	d
�Zdd�ZdS)r z}metadata associated with persistent nodemap data

    The persistent data may come from disk or be on their way to disk.
    NcCs2|durt��}||_d|_d|_d|_d|_dS)Nr)�
docket_modZmake_uid�uidr!r"r#r$)rr|r
r
rrJ:s	zNodeMapDocket.__init__cCs0t|jd�}|j|_|j|_|j|_|j|_|S)N)r|)r r|r!r"r#r$)r�newr
r
rrpVszNodeMapDocket.copycCsD|j|jkrdS|j|jkr dS|j|jkr0dS|j|jkr@dSdS)N���rr�r|r#�r�otherr
r
r�__cmp__^szNodeMapDocket.__cmp__cCs|j|jko|j|jkSrBrr�r
r
r�__eq__iszNodeMapDocket.__eq__cCsfg}|�t�t��t|j�|j|j|jt|j	�f}|�t
j|��|�|j�|�|j	�d�|�S)z9return serialized bytes for a docket using the passed uidr)�appendr�packrr0r|r!r#r$r"r�join)rr8r4r
r
rrvls�zNodeMapDocket.serialize)N)	rrrrTrJrpr�r�rvr
r
r
rr 4s
r cCs|j}d||jfS)z9The (vfs relative) nodemap's rawdata file for a given uids%s-%s.nd)rXr|)r1r	r_r
r
rr%}sr%c	Csl|j}t�d|�}t||�}|j�|�}|j�|�}g}|j�|�D] }|�|�rF||krF|�	|�qF|S)Ns(^|/)%s-[0-9a-f]+\.nd$)
rXrYrZr%r�basenamer[r\r]r�)	r1r	r_r`Z
new_file_pathZ
new_file_nameraZothersrbr
r
rrw�s
rwcCst|�}t|�S)zAreturn the persistent binary form for a nodemap for a given index)�_build_trie�
_persist_trie)ro�trier
r
rrt�srtcCs&t|||�\}}|tjt||d�fS)zGreturn the incremental update for persistent nodemap from a given index)�existing_idx)�_update_trie�S_BLOCKrr�)ro�rootZmax_idx�last_revZ
changed_blockr�r
r
r�update_persistent_data�s
�r�z>llllllllllllllllr~cCs
|tS)z�Return the number used to represent the rev in the tree.

    (or retrieve a rev number from such representation)

    Note that this is an involution, a function equal to its inverse (i.e.
    which gives the identity when applied to itself).
    )�
REV_OFFSET)�revr
r
r�_transform_rev�sr�cCs
t|d�S)z/turn an hexadecimal digit into a proper integer�)�int)�	hex_digitr
r
r�_to_int�sr�cs(eZdZdZ�fdd�Zdd�Z�ZS)�BlockzOrepresent a block of the Trie

    contains up to 16 entry indexed from 0 to 15cstt|���d|_dSrB)�superr�rJ�	ondisk_idrI��	__class__r
rrJ�szBlock.__init__cst�fdd�td�D��S)Nc3s|]}��|�VqdSrB)r')�.0�irIr
r�	<genexpr>�rz!Block.__iter__.<locals>.<genexpr>r�)�iter�rangerIr
rIr�__iter__�szBlock.__iter__)rrrrTrJr��
__classcell__r
r
r�rr��sr�cCs<t�}tt|��D]$}t||d�}t|d|||�q|S)z�build a nodemap trie

    The nodemap stores revision number for each unique prefix.

    Each block is a dictionary with keys in `[0, 15]`. Values are either
    another block or a revision number.
    �r)r�r�r0r�_insert_into_block)ror�r��current_hexr
r
rr��s
r�cCsHd}t|dt|��D](}t||d�}|t|d|||�7}q||fS)Zconsumerrr�)r�r0rr�)ror�r��changedr�r�r
r
rr��s
r�cCs�d}|jdurd|_t|||d��}|�|�}|durD|||<nnt|t�rh|t||d|||�7}nJt||d�}|}	t�}
|
||<t||d|
|	|�t||d|
||�|S)a7insert a new revision in a block

    index: the index we are adding revision for
    level: the depth of the current block in the trie
    block: the block currently being considered
    current_rev: the revision number we are adding
    current_hex: the hexadecimal representation of the of that revision
    rNr�)r�r�r'�
isinstance�dictr�rr�)ro�level�blockZcurrent_revr�r�r��entryZ	other_hexZ	other_revr}r
r
rr��s$	



�r�cCsti}|dur|d}nd}g}t|�D]B}|jdurD|j|t|�<q&t|�||t|�<|�t||��q&d�|�S)zaturn a nodemap trie into persistent binary data

    See `_build_trie` for nodemap trie structureNrrr)�
_walk_trier��idr0r��_persist_blockr�)r�r��	block_mapZbase_idx�chunks�tnr
r
rr�s

r�ccs>t|���D]&\}}t|t�rt|�D]
}|Vq&q|VdS)zcyield all the block in a trie

    Children blocks are always yield before their parent block.
    N)rU�itemsr�r�r�)r��__�itemZ	sub_blockr
r
rr�*s


r�cs t�fdd�|D��}tj|�S)z�produce persistent binary data for a single block

    Children block are assumed to be already persisted and present in
    block_map.
    c3s|]}t|��VqdSrB)�	_to_value)r��v�r�r
rr�<rz!_persist_block.<locals>.<genexpr>)�tupler�r�)Z
block_noder�r8r
r�rr�6sr�cCs.|durtSt|t�r"|t|�St|�SdS)zpersist any value as an integerN)�NO_ENTRYr�r�r�r�)r�r�r
r
rr�@s

r�cCs�t|�tjdkr.d}t�|tjt|�f��|s<t�dfSi}g}tdt|�tj�D]H}t�}t|�|_|||j<|||tj�}t�|�}|�	||f�qV|D]H\}}t
|�D]6\}	}
|
tkr�q�q�|
dkr�||
||	<q�t|
�||	<q�q�||tjfS)z,parse parse nodemap data into a nodemap Triers:nodemap data size is not a multiple of block size (%d): %dN)
r0r�rrZAbortr�r�r�rr��	enumerater�r�)r8ryr�Z
new_blocksr�r�Z
block_data�values�b�idxr�r
r
r�
parse_dataJs,



r�c
Csd}|�dt|��t|�\}}tt|��}|�dt|��tt|��D]�}||vrpd|}|�|�d}n
|�|�t|t	||d��}	|	dur�d|}|�|�d}qL|	|krLd	||	f}|�|�d}qL|r�t
|�D]}d
|}|�|�q�d}|S)zBverify that the provided nodemap data are valid for the given idexrsrevision in index:   %d
srevision in nodemap: %d
s$  revision missing from nodemap: %d
rr�Ns/  revision node does not match any entries: %d
s?  revision node does not match the expected revision: %d != %d
s!  extra revision in  nodemap: %d
)�statusr0r��set�_all_revisionsr�Z	write_err�remove�
_find_noderrU)
Zuiror8�retr�r�Zall_revs�rryZnm_revr
r
r�
check_datahs:


��
r�ccs6t|�D](}|D]}|dust|t�r(q|VqqdS)z%return all revisions stored in a TrieN)r�r�r�)r�r�r�r
r
rr��s
r�cCs6|�t|dd���}t|t�r2t||dd��S|S)z.find the revision associated with a given noderrN)r'r�r�r�r�)r�rur�r
r
rr��s
r�cCs*|jr |jd}|j�|�r |S|jdS)Ns.n.as.n)Z_trypendingrXr�exists)r1Zpending_pathr
r
rrn�s

rn)FF)N)3Z
__future__rr.rY�structrur�rrrr	r{r�r
rrr:rE�objectrFrWrr=r�Structrrr r%rwrtr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rnr
r
r
r�<module>	sT
.



I&	
	"


#	

Youez - 2016 - github.com/yon3zu
LinuXploit