https://t.me/RX1948
Server : Apache
System : Linux iad1-shared-b8-43 6.6.49-grsec-jammy+ #10 SMP Thu Sep 12 23:23:08 UTC 2024 x86_64
User : dh_edsupp ( 6597262)
PHP Version : 8.2.26
Disable Function : NONE
Directory :  /lib/python3/dist-packages/hgext/remotefilelog/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : //lib/python3/dist-packages/hgext/remotefilelog/__pycache__/shallowutil.cpython-310.pyc
o

�]Lb�<�@s�ddlmZddlZddlZddlZddlZddlZddlZddlm	Z	ddl
mZddlm
Z
ddlmZmZmZmZddlmZmZmZdd	lmZejsSddlZd
d�Zdd
�Zdd�ZdSdd�Zdd�Zdd�Z dTdd�Z!dd�Z"dd�Z#dd�Z$dd �Z%d!d"�Z&d#d$�Z'ej(e)ej*fej+e)ej*fiZ,d%d&�Z-d'd(�Z.d)d*�Z/d+d,�Z0Gd-d.�d.ej1�Z2d/d0�Z3dUd1d2�Z4d3d4�Z5d5d6�Z6d7d8�Z7d9d:�Z8dSd;d<�Z9d=d>�Z:d?d@�Z;dAdB�Z<dCdD�Z=dEdF�Z>dGdH�Z?dIdJ�Z@dUdKdL�ZAdMdN�ZBdOdP�ZCdQdR�ZDdS)V�)�absolute_importN)�_)�open)�hex)�error�pycompat�revlog�util)�hashutil�storageutil�
stringutil�)�	constantscCstj|jvS)z>returns whether the repository is remotefilelog enabled or not)r�SHALLOWREPO_REQUIREMENT�requirements)�repo�r�A/usr/lib/python3/dist-packages/hgext/remotefilelog/shallowutil.py�	isenabled$srcCs4tt�|����}tj�||dd�|dd�|�S)N��rr
�sha1�digest�os�path�join)�reponame�file�id�pathhashrrr�getcachekey)s"r cCs tt�|����}tj�||�S�Nr)rrrrrr�getlocalkey.sr"FcCs0|�dd�}|s|rdSt�td���t�|�S)N�
remotefilelogs	cachepaths4could not find config option remotefilelog.cachepath)�configr�Abortrr	�
expandpath)�ui�
allowempty�	cachepathrrr�getcachepath3s�
r*cCs:t|j�}|tjkrtj�||jd|�Stj�||jd�S�Nspacks)r*r'r�FILEPACK_CATEGORYrrr�name)r�categoryr)rrr�getcachepackpath?s

r/cCstj�|d|�Sr+)rrr)�baser.rrr�getlocalpackpathGsr1cCs6i}|s	|�d�r|r||d<||d<t�||�}|S)zRreturns a string that matches the revlog contents in a
    traditional revlog
    �
scopyscopyrev)�
startswithr�packmeta)�text�copyfrom�copyrev�metarrr�createrevlogtextKsr9cCs@t�|�\}}|�d�r|�dd�}||dd�}|pi|fS)z parse mercurial filelog metadatar2rN)r�	parsemetar3�index)r5r8�size�srrrr:Ys

r:cGs@t�dd��}|D]}t�|�D]\}}|||7<qq	|S)z�Adds all the values of *dicts together into one dictionary. This assumes
    the values in *dicts are all summable.

    e.g. [{'a': 4', 'b': 2}, {'b': 3, 'c': 1}] -> {'a': 4, 'b': 5, 'c': 1}
    cSsdS�Nrrrrrr�<lambda>hszsumdicts.<locals>.<lambda>)�collections�defaultdictr�	iteritems)�dicts�result�dict�k�vrrr�sumdictsbs�rHcCs(i}t�|�D]
\}}||||<q|S)z;Returns ``dict`` with ``prefix`` prepended to all its keys.)rrB)rE�prefixrDrFrGrrr�
prefixkeysosrJcGsBdd�|D�}tt|�|d�}|j|ddfit�|���dS)NcSsg|]}|���qSr)�
getmetrics)�.0r=rrr�
<listcomp>xsz%reportpackmetrics.<locals>.<listcomp>�_s
_packsizes�
)rJrH�logr�	strkwargs)r'rI�storesrCrErrr�reportpackmetricsws"rScCs�i}d}t|�}||dkrG|||d�}|d7}t�d||�d}|d7}|||kr1td��||||�}|||<||7}||dks||krOtd��|S)aparse datapack meta, bytes (<metadata-list>) -> dict

    The dict contains raw content - both keys and values are strings.
    Upper-level business may want to convert some of them to other types like
    integers, on their own.

    raise ValueError if the data is corrupted
    r�r
�!Hrs%corrupted metadata: incomplete buffers"corrupted metadata: redundant data)�len�struct�unpack_from�
ValueError)�metabuf�metadict�offset�buflen�key�metalen�valuerrr�_parsepackmeta}s"	�
racCs~d}tt�|pi��D]1\}}t|�dkrt�d|��t|�dkr*tdt|���||7}|t�dt|��7}||7}q|S)anreverse of _parsepackmeta, dict -> bytes (<metadata-list>)

    The dict contains raw content - both keys and values are strings.
    Upper-level business may want to serialize some of other types (like
    integers) to strings before calling this function.

    raise ProgrammingError when metadata key is illegal, or ValueError if
    length limit is exceeded
    �r
spackmeta: illegal key: %si��s)metadata value is too long: 0x%x > 0xffferU)	�sortedrrBrVr�ProgrammingErrorrYrW�pack)r[rZrFrGrrr�_buildpackmeta�s

�
rfcCsvi}t�|pi�D]-\}}t�|tf�}t||�s t�d|��t|vr2|t	j
kr.|dkr.q	t|�}|||<q	t|�S)z�like _buildpackmeta, but typechecks metadict and normalize it.

    This means, METAKEYSIZE and METAKEYSIZE should have integers as values,
    and METAKEYFLAG will be dropped if its value is 0.
    spackmeta: wrong type of key %sr)
rrB�_metaitemtypes�get�bytes�
isinstancerrd�intr�METAKEYFLAG�int2binrf)r[�newmetarFrG�expectedtyperrr�
buildpackmeta�s

rpcCs@t|�}t�|�D]\}}|tvrtt|vrt|�||<q	|S)z�like _parsepackmeta, but convert fields to desired types automatically.

    This means, METAKEYFLAG and METAKEYSIZE fields will be converted to
    integers.
    )rarrBrgrk�bin2int)rZr[rFrGrrr�
parsepackmeta�s�rrcCs6t�}|dkr|�d|d@�|dL}|dkst|�S)z3convert a non-negative integer to raw binary bufferr��)�	bytearray�insertri)�n�bufrrrrm�s�rmcCs&d}t|�D]
}|dK}||O}q|S)z=the reverse of int2bin, convert a binary buffer to an integerrrt)ru)rx�x�brrrrq�s

rqc@seZdZdZdS)�BadRemotefilelogHeaderz@Exception raised when parsing a remotefilelog blob header fails.N)�__name__�
__module__�__qualname__�__doc__rrrrr{�sr{cCs�tj}d}z|�d�}Wntytd��w|d|�}|�d�rZ|�d�rT|�d�D]%}|�tj�rAt	|t
tj�d��}q-|�tj�rRt	|t
tj�d��}q-n
td|��t	|�}|durftd��|d	||fS)
z�given a remotefilelog blob, return (headersize, rawtextsize, flags)

    see remotefilelogserver.createfileblob for the format.
    raise RuntimeError if the content is illformed.
    N�z/unexpected remotefilelog header: illegal format�vsv1
rOs$unsupported remotefilelog header: %sz.unexpected remotefilelog header: no size foundr
)r�REVIDX_DEFAULT_FLAGSr;rYr{r3�splitr�METAKEYSIZErkrVrl)�raw�flagsr<r;�headerr=rrr�parsesizeflags�s8��

����r�cCsd|dur
tt|��}|dkrdtj|tj|f}|S|dkr+|r%t�d��d|}|St�d|��)z�return the header of a remotefilelog blob.

    see remotefilelogserver.createfileblob for the format.
    approximately the reverse of parsesizeflags.

    version could be 0 or 1, or None (auto decide).
    Nr
sv1
%s%d
%s%drs!fileblob v0 does not support flags%dsunknown fileblob version %d)rk�boolrr�rlrrd)r<r��versionr�rrr�buildfileblobheaders 	��
�r�cCs�t|�\}}}||}i}|t|�kr[|�d|d�}|||d�}||d|d�}||d|d�}	||d|d�}
||d|�}||	|
|f||<|d}|t|�ks|S)Nr��P��(�<r
)r�rVr;)r�r\r<r��start�mapping�divider�currentnode�p1�p2�linknoder6rrr�ancestormap0s�r�cCsFt|d�}z|��}|st�|�td|��|W|��S|��w)Nsrbsempty file: %s)r�readr�remove�IOError�close)r�frDrrr�readfileDs

r�cCs"tjr
t�|tj�t�|�dSr!)r�	iswindowsr�chmod�stat�S_IWUSR�unlink)�filepathrrr�
unlinkfileSsr�cCsHtjrt�|tj�tj�|�rt�|tj�t�|�t�	||�dSr!)
rr�rr�r�r�r�isfiler��rename)�source�destinationrrr�
renamefileZs
r�cCstj�|�\}}tj�|�s/zt�|�Wnty.}z
|jtjkr$�WYd}~nd}~wwtj	d||d�\}}t�
|�z/t�|d�}|�
|�|�
�|rTd}	n
t�d�}
t�|
�|
}	t||�t�||	�WdSty�zt|�W�ty�Y�ww)Ns.%s-)rI�dirswbi$r)rrr��exists�makedirs�OSError�errno�EEXIST�tempfile�mkstempr�r	�	posixfile�write�umaskr�r��	Exceptionr�)r�content�readonly�dirname�filename�ex�fd�tempr��mode�oldumaskrrr�	writefilefs@���





���r�cs�t���i}i}g}�D])}�fdd�||�D�}t|�||<|D]}|�|t���|�q!|s5|�|�q|��g}|rl|�d�}|�|�||vrj||}	|	D]}
||
}|�|�t|�dkri|�d|
�qR|s>|S)zUTopologically sorts the nodes, using the parentfunc to find
    the parents of nodes.csg|]}|�vr|�qSrr)rL�p��nodesrrrM�szsortnodes.<locals>.<listcomp>r)	�set�
setdefault�add�append�sort�popr�rVrv)r��
parentfunc�childmap�	parentmap�rootsrw�parentsr��results�children�c�childparentsrr�r�	sortnodes�s6
�


��r�cCs4|�|�}t|�|krt�td�t|�|f��|S)z=read n bytes from stream.read and abort if less was availables5stream ended unexpectedly (got %d bytes, expected %d))r�rVrr%r)�streamrwr=rrr�readexactly�s

��r�cCst|t�|��}t�||�Sr!)r�rW�calcsize�unpack)r��fmt�datarrr�
readunpack�sr�cCs(t|tj�}t�tj|�d}t||�Sr>)r�r�FILENAMESIZErWr��FILENAMESTRUCT)r��rawlen�pathlenrrr�readpath�s
r�ccsB�t|tj�}t�tj|�d}t�|�D]	}t|tj�VqdSr>)	r�r�
NODECOUNTSIZErWr��NODECOUNTSTRUCTr�xrange�NODESIZE)r�r��	nodecount�irrr�readnodelist�s��r�ccs>�t|tj�}t�tj|�d}t�|�D]}t|�VqdSr>)	r�r�
PATHCOUNTSIZErWr��PATHCOUNTSTRUCTrr�r�)r�r��	pathcountr�rrr�readpathlist�s��r�cCs.zt�t�|��j}|WStyYdSwr!)�grp�getgrnamr�fsdecode�gr_gid�KeyError)�	groupname�gidrrr�getgid�s�r�c
Cs~|durdSzt�|d|�t�|d�WdSttfy>}z|r3|td�||f�WYd}~dSWYd}~dSd}~ww)N����s unable to chown/chmod on %s: %s
)r�chownr�r�r�r)rr��warnr�rrr�setstickygroupdir�s"���r�cCs`d}|�dd�}|rt|�}|dur|�td�|�d}zt�|�}Wn	ty-Ynw|rE|jd@dks<|j|krCt	|||j�dSt�
d�}z_|g}tj�|�}|rotj�
|�so|�|�tj�|�}|rotj�
|�r\t|�D]"}zt�|�Wqsty�}z
|jtjkr��WYd}~qsd}~ww|D]	}t	|||j�q�Wt�
|�dSt�
|�w)ziCreates the given directory (if it doesn't exist) and give it a
    particular group with setgid enabled.Nr#s
cachegroups!unable to resolve group name: %s
r�r)r$r�r�rrr�r��st_mode�st_gidr�r�rr�r�r��reversed�mkdirr�r�)r'rr�r��str��missingdirsr�rrr�mkstickygroupdir�sJ�

�����r�cCs&zt�|���WStyYdSw)N�unknown)r�	shortuser�usernamer�)r'rrr�getusernames
�rcCs |�dd�}|rtj�|�SdS)Nspathssdefaultr�)r$rr�basename)r'rrrr�getreponamesr)F)NNr!)E�
__future__rr@r�rr�rWr��mercurial.i18nr�mercurial.pycompatr�mercurial.noder�	mercurialrrrr	�mercurial.utilsr
rr�rr�r�rr r"r*r/r1r9r:rHrJrSrarfrlrk�longr�rgrprrrmrq�StorageErrorr{r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrrr�<module>sl

	
�
		
%
&%
-

https://t.me/RX1948 - 2025