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/__pycache__/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

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

�+�b�q�@s|ddlmZddlZddlmZddlmZddlmZddl	m
Z
mZmZmZm
Z
ddlmZd	d
ddd
ddddddddddddddddddddd�Zhd�ZiZddhZee�d��Zee�e�ej�e�ej�d ��eeeje�d!d"���BZeee�d#��BZdqd$d%�Ze �Z!d&d'�Z"d(d)�Z#e!fd*d+�Z$d,d-�Z%d.d/�Z&d0d1�Z'e!e!fd2d3�Z(d4d5�Z)d6d7�Z*iZ+d8d9�Z,d:d;�Z-d<d=�Z.d>d?�Z/d@dA�Z0dBdC�Z1dDdE�Z2dFdG�Z3dHdI�Z4edJhBZ5drdKdL�Z6GdMdN�dNej7�Z8dsdOdP�Z9dQdR�Z:dtdSdT�Z;dUdV�Z<dWdX�Z=dYdZ�Z>d[d\�Z?d]d^�Z@e>e@d_�ZAd`da�ZBdbdc�ZCddde�ZDdfdg�ZEdhdi�ZFdjdk�ZGe
jH�Idl�ZJdmdn�ZKdodp�ZLdS)u�)�absolute_importN�)�_)�getattr��hex)�error�parser�pycompat�smartset�util)�
stringutil)�N)�groupr�))�funcrrN)rNN)�	subscriptr�]N)rNN)�relationrN)�NN)�_concatrN)�NN)�ancestorrN)rNN)�parentr�
parentpost)�N)�negate�)�minusrN)��dagrangeall)�dagrangeprer)�dagranger�dagrangepost)��rangeall)�rangeprer$)�ranger$�	rangepost)�
N)�notr)NN)rNN)�andrN)rNN)�onlyr�onlypost)�NN)�orr.N)�NN)�keyvaluer0N)�NN)�listr2N)rNNNN)r�symbolNNN)r�stringNNN)�(�[�#�##�~�^�-�::�..�:r*�!r+�&�%r/�|�+�=�,rrr4r5�end>r/r+r*�"�'s()[]#:=,-|&+!~^%s._@��s-/c
#s�t|t�st�d|��t�|�}|dur.t}|dur:t}|rЈr�|�dd�}t	�fdd�|D��r�|dr|d|ddfVt
|�dkr�t
|d�}dd|fV|dr�d|d|dfVd	dt
|�fVdSdt
|�}}||k�r�||}|��r��n�|dk�r4|||d
�dk�r4dd|fV|d7}�n�|dk�rl|||d
�d
k�rld
d|fV|d7}�nl|dk�r�|||d
�dk�r�dd|fV|d7}�n4|tv�r�|d|fV�n|t
v�s�|dk�r�|||d
�dv�r�|dk�r|d7}||}dd�}	ntj}	|d7}|}||k�rx||}
|
dk�rF|d
7}�q|
|k�rld|	|||��|fV�q�|d7}�qt�td�|���nL||v�r�|}|d7}||k�r�||}
|
|v�rq�|
dk�r�||ddk�r�|d8}�q�|d7}�q�|||�}|tv�r|d|fVn�d|v�r���rB�|��rBd||fVnj|�d�}|dd�D]8}|�rnd||fV|t
|�7}dd|fV|d7}�qX|d�r�d|d|fVnd||fV|d8}nt�td�||��|d7}q�d	d|fVdS)a�
    Parse a revset statement into a stream of tokens

    ``syminitletters`` is the set of valid characters for the initial
    letter of symbols.

    By default, character ``c`` is recognized as valid for initial
    letter of symbols, if ``c.isalnum() or c in '._@' or ord(c) > 127``.

    ``symletters`` is the set of valid characters for non-initial
    letters of symbols.

    By default, character ``c`` is recognized as valid for non-initial
    letters of symbols, if ``c.isalnum() or c in '-._/@' or ord(c) > 127``.

    Check that @ is a valid unquoted token character (issue3686):
    >>> list(tokenize(b"@::"))
    [('symbol', '@', 0), ('::', None, 1), ('end', None, 3)]

    s&revset statement must be bytes, got %rNr?rc3s|]}|r�|�VqdS�N�)�.0�sym��lookuprM�:/usr/lib64/python3.9/site-packages/mercurial/revsetlang.py�	<genexpr>x�ztokenize.<locals>.<genexpr>rr4rGr2r=�.r>r8r9�r)sr'sr"cSs|SrLrM��xrMrMrR�<lambda>�rTztokenize.<locals>.<lambda>�\r5sunterminated stringr<���ssyntax error in revset '%s')�
isinstance�bytesr�ProgrammingErrorr
�bytestr�_syminitletters�_symletters�split�all�len�isspace�_simpleopletters�
_quotelettersr	Zunescapestr�
ParseErrorr�keywords)
ZprogramrQ�syminitlettersZ
symletters�parts�s�pos�l�c�decode�drO�prMrPrR�tokenizeUs�
�

������
���







��




�
rscCs*|r|ddkr|dSt�td���dS)Nrr4rsnot a symbol)rrhrrWrMrMrR�	getsymbol�srtcCs2|r$|ddks|ddkr$|dSt�|��dS)Nrr5r4r�rrh)rX�errrMrMrR�	getstring�srwcCsB|s|tur|Sztt||��WSty<t�|��Yn0dSrL)�_notset�intrw�
ValueErrorrrh)rXrv�defaultrMrMrR�
getinteger�sr|cCs(t�t|��}|dur|St�|��dSrL)r
Z	parseboolrtrrh)rXrv�valuerMrMrR�
getboolean�sr~cCs*|sgS|ddkr$t|dd��S|gS)Nrr3r)�listrWrMrMrR�getlist�s
r�cCsp|st�|��|d}|dkr.|d|dfS|dkrBd|dfS|dkrV|ddfS|dkrbdSt�|��dS)	Nrr'rr2r&r(r%)NNru)rXrv�oprMrMrR�getranges
r�cCsT|r.|ddks|ddkr.t||�}||fSt||�\}}t|||�t|||�fS)z�Get [first, last] integer range (both inclusive) from a parsed tree

    If any of the sides omitted, and if no default provided, ParseError will
    be raised.
    rr5r4)r|r�)rXZerr1Zerr2ZdeffirstZdeflast�n�a�brMrMrR�getintranges

r�cCs6t|�}t|�|ks(|dkr2t|�|kr2t�|��|S)Nr)r�rdrrh)rX�min�maxrvrnrMrMrR�getargs"s 
r�cCstjt|�|t�|�ddd�S)Nr1r4)ZkeyvaluenodeZkeynode)r	Z
buildargsdictr�Zsplitargspec)rX�funcname�keysrMrMrR�getargsdict)s�r�cCs&t�|�}|dur"t|�t|<}|SrL)�
_treecache�get�parse)�spec�treerMrMrR�_cachedtree7s
r�cGst|�}tj|dg|�R�S)z�Create raw parsed tree from a template revset statement

    >>> _build(b'f(_) and _', (b'string', b'1'), (b'symbol', b'2'))
    ('and', ('func', ('symbol', 'f'), ('string', '1')), ('symbol', '2'))
    �r4�_)r�r	�	buildtree)ZtmplspecZrepls�templaterMrMrR�_build?sr�cCst|�}t�||dddh�S)aTest if a tree matches the given pattern statement; return the matches

    >>> _match(b'f(_)', parse(b'f()'))
    >>> _match(b'f(_)', parse(b'f(1)'))
    [('func', ('symbol', 'f'), ('symbol', '1')), ('symbol', '1')]
    >>> _match(b'f(_)', parse(b'f(1, 2)'))
    r�r1r3)r�r	Z	matchtree)Zpatspecr��patternrMrMrR�_matchIs�r�cCstdd||f�S)Ns!ancestors(_) and not ancestors(_)r+)r�)Zrevs�basesrMrMrR�
_matchonlyWsr�cCs0t|t�s|S|d}|dkr�d|df}|dddkrPtd||ddf�S|dddkrltd	|f�S|ddd
kr�td||ddf�S|dddkr�td
|f�Sn`|dkr�|td|dd��fS|dk�r|dddk�rtd|dd|dd|df�S|ftdd�|dd�D��S)zrRewrite raw parsed tree to resolve ambiguous syntax which cannot be
    handled well by our simple top-down parserrrrrr2r!r"r r#r&r'r%r(r/�r3Nrr�relsubscriptcss|]}t|�VqdSrL)�_fixops�rN�yrMrMrRrSvrTz_fixops.<locals>.<genexpr>)r\�tupler�)rXr�ZpostrMrMrRr�[s$
$r�cCs |dur|S|d}|dkr8ttdg|dd��R��S|dkr\ttdg|dd��R��S|dkrvttd|d��S|d	kr�t�td
����n�|dkr�ttd|d��S|d
kr�ttd|d��S|dk�r�t|dtd��}tdd|f�S|dv�r�|S|dk�r|dfS|dv�r*|t|d�fS|dk�r@t|d�S|dv�rlt|d�}t|d�}|||fS|dk�r�t|d�}t|d�}t|d�}||||fS|dk�r�|ftdd�|dd�D��S|dk�r�||dt|d�fS|dk�r||dt|d�fStd |��dS)!Nrrs_ and not _rr,�
only(_, _)r-sonly(_)r scan't use '::' in this contextr!sancestors(_)r#sdescendants(_)rscan't negate thatr5r<�r5r4�smartsetr%>rr&r*r(r/r>r'rrrrr+r"r2r�r0r3css|]}t|�VqdSrL��_analyzer�rMrMrRrS�rTz_analyze.<locals>.<genexpr>r1r�invalid operator %r)r�r�rrhrrwr�rz)rXr�rl�ta�tbZtcrMrMrRr�ysT





	


 

r�cCst|�S)z�Transform raw parsed tree to evaluatable tree which can be fed to
    optimize() or getset()

    All pseudo operations should be mapped to real operations or functions
    defined in methods or symbols table respectively.
    r�rWrMrMrR�analyze�sr�c
s|durd|fS|d}|dvr(d|fS|dk�rt|d�\}}t|d�\}}t||�}tdd||f�}|r�t|d�dvr�|td	|d|d�fSt||�p�t||�}|r�|td
g|dd��R�fStd|�}|r�|d||dffS||kr�d
}||||ffS|dk�r�ggg������fdd�}t|d�D]d}	t|	�\}}
|
du�r�|
ddk�sr|
ddk�r���||
f��q<|���|���|
��q<|�t��dk�rƈd�dfSt	��|dt
��ffS|dk�r8td|d��rttd��}|d|dfSt|d�}|d||dffS�n�|dk�rJd|fS|dv�rtt|d�}|d||dffS|dv�r�t|d�\}}t|d�\}}|||||ffS|dv�r�t|d�\}}
|||
|dffS|dk�rt|d�\}}
|||
|d|dffS|dk�rHtdd�|dd�D��\��t��|f�fS|d k�rtt|d�\}}
|||d|
ffS|d!k�r�t|d�}t|d�\}}t
t�|�d"d�}td#|�}|d$k�r�|�r�||td%|d�fS||||d|ffStd&|��dS)'Nrr�g�?r+rr2s_() & ancestors(_)>ssecrets
_notpublicsdrafts_phaseandancestors(_, _)r�snot _s
differences	andsmallyr/csr�sdSt��dkr"�d\}}n.d�dd��D��}tdd|f�}t|�\}}��|���|��dd�=dS)Nrr�css|]\}}|dVqdS)rNrM)rN�w�trMrMrRrS�rTz-_optimize.<locals>.flushss.<locals>.<genexpr>s_list(_)r5)rd�joinr��	_optimize�append)r�r�rlr���ss�ts�wsrMrR�flushss�s

z_optimize.<locals>.flushssr5r4r�r*spublic()s_notpublic()r%)r&r(r)r"r')rrrrr�r0r3css|]}t|�VqdSrL�r�r�rMrMrRrSrTz_optimize.<locals>.<genexpr>r1r�_weightscommonancestors(_)sheadss_commonancestorheads(_)r�)r�r�r�rtr�r�r�r�rdr�r��zip�sumr�symbolsr�rz)
rXr��war��wbr�r��mr�r�r��o�frMr�rRr��s�




&










r�cCst|�\}}|S)z[Optimize evaluatable tree

    All pseudo operations should be transformed beforehand.
    r�)r�r��newtreerMrMrR�optimizesr��$cCsj|r|�d�r|�d�rd}t�t�}|�t|||d��\}}|t|�krZt�t	d�|��t
t�|d��S)aQGenerate a parse tree of given spec with given tokenizing options

    >>> _parsewith(b'foo($1)', syminitletters=_aliassyminitletters)
    ('func', ('symbol', 'foo'), ('symbol', '$1'))
    >>> from . import error
    >>> from . import pycompat
    >>> try:
    ...   _parsewith(b'$1')
    ... except error.ParseError as e:
    ...   pycompat.sysstr(e.message)
    ...   e.location
    "syntax error in revset '$1'"
    0
    >>> try:
    ...   _parsewith(b'foo bar')
    ... except error.ParseError as e:
    ...   pycompat.sysstr(e.message)
    ...   e.location
    'invalid token'
    4
    srevset(rN)rQrjs
invalid token)r3r/)�
startswith�endswithr	�elementsr�rsrdrrhrr�Zsimplifyinfixops)r�rQrjrrr�rmrMrMrR�
_parsewith,s
�r�c@s0eZdZdZed�Zedd��Zedd��ZdS)�_aliasrulesz0Parsing and expansion rule set of revset aliasessrevset aliascCst|td�S)aParse alias declaration/definition ``spec``

        This allows symbol names to use also ``$`` as an initial letter
        (for backward compatibility), and callers of this function should
        examine whether ``$`` is used also for unexpected symbols or not.
        �rj)r��_aliassyminitletters)r�rMrMrR�_parseRsz_aliasrules._parsecCs8|ddkr4|dddkr4|ddt|d�fSdS)Nrrrr4r2)r��r�rMrMrR�_trygetfunc\sz_aliasrules._trygetfuncN)	�__name__�
__module__�__qualname__�__doc__rZ_section�staticmethodr�r�rMrMrMrRr�Ms
	r�cCs^t�|�}t�||�}|durZtt�|��D],\}}|jr,|js,|td�|j�d|_q,|S)zCExpand aliases in a tree, aliases is a list of (name, value) tuplesNswarning: %s
T)	r�Zbuildmap�expand�sortedr
Z	iteritemsrZwarnedr)r��aliases�warn�name�aliasrMrMrR�
expandaliasesbs
r�cCs�t|t�r|ddvr|S|ddkr�|g}g}|r�|��}|ddkr`|�t|dd���q0|ddvr||�|d�q0td�|d}t�|��q0dd	�	|�fStd
d�|D��SdS)z(Fold elements to be concatenated by `##`rr�rrN�r5r4s#"##" can't concatenate "%s" elementr5rTcss|]}t|�VqdSrL)�
foldconcat)rNr�rMrMrRrS�rTzfoldconcat.<locals>.<genexpr>)
r\r��pop�extend�reversedr�rrrhr�)r��pendingrn�e�msgrMrMrRr�osr�c
Cszzt||d�WStjyt}zL|jdur^|j}|�dd�}|dd|ddtd�|_�WYd}~n
d}~00dS)NrP�
� rs^ shere)r�rrh�location�replacer�hint)r�rQ�inst�locrMrMrRr��s
"r�cCsdt�t�|��S)z�Quote a value in order to make it safe for the revset engine.

    >>> _quote(b'asdf')
    "'asdf'"
    >>> _quote(b"asdf'\"")
    '\'asdf\\\'"\''
    >>> _quote(b'asdf\'')
    "'asdf\\''"
    >>> _quote(1)
    "'1'"
    s'%s')r
Z	escapestrr
r_)rlrMrMrR�_quote�sr�cCs�|dkrdt|�S|dkr$t|�S|dkrJt|t�s:t�t|�d|S|dkr^tt|��S|dkr�zt|���WSty�t�Yn0t	�
td�|��dS)	N�ds_rev(%d)�srVs(%s)�n�bs&unexpected revspec format character %s)ryr�r\r]�	TypeErrorr�r�branch�AttributeErrorrrhr)ro�argrMrMrR�_formatargtype�s"

r�cCs�t|�}|dkrdS|dkr*t||d�S|dkr:t|�S|dkrTdtd�|��S|dkrtd	d�d
d�|D��S|dkr�zd
d�dd�|D��WSty�t�Yn0|d}dt|d|�|�t||d�|�fS)Nr�	_list('')rr�r�s	_list(%s)r�r�s_hexlist('%s')css|]}t|�VqdSrLr�rNr�rMrMrRrS�rTz!_formatlistexp.<locals>.<genexpr>r�s_list('%s')css|]}|��VqdSrL)r�r�rMrMrRrS�rTr2s
(%s or %s))rdr��_formatintlistr�r�r�r��_formatlistexp)rlr�rnr�rMrMrRr��s$
r�c	CsrzHt|�}|dkrWdS|dkr0td|d�WSdd�dd�|D��WSttfylt�td	���Yn0dS)
Nrr�rr�s_intlist('%s')r�css|]}dt|�VqdS)s%dN)ryr�rMrMrRrS�rTz!_formatintlist.<locals>.<genexpr>�invalid argument for revspec)rdr�r�r�rzrrhr)�datarnrMrMrRr��sr�csd��fdd�|D��S)Ns, c3s|]}t�|�VqdSrL)r�r��r�rMrRrS�rTz"_formatparamexp.<locals>.<genexpr>)r�)�argsr�rMr�rR�_formatparamexp�sr�)�l�pcGsvt||�}g}|D]X\}}|dur.|�|�q|dkr\t|t�rHt|�}|�tt|���qt�d|��qd�	|�S)a;
    This is a convenience function for using revsets internally, and
    escapes arguments appropriately. Aliases are intentionally ignored
    so that intended expression behavior isn't accidentally subverted.

    Supported arguments:

    %r = revset expression, parenthesized
    %d = rev(int(arg)), no quoting
    %s = string(arg), escaped and single-quoted
    %b = arg.branch(), escaped and single-quoted
    %n = hex(arg), single-quoted
    %% = a literal '%'

    Prefixing the type with 'l' specifies a parenthesized list of that type,
    and 'p' specifies a list of function parameters of that type.

    >>> formatspec(b'%r:: and %lr', b'10 or 11', (b"this()", b"that()"))
    '(10 or 11):: and ((this()) or (that()))'
    >>> formatspec(b'%d:: and not %d::', 10, 20)
    '_rev(10):: and not _rev(20)::'
    >>> formatspec(b'%ld or %ld', [], [1])
    "_list('') or _rev(1)"
    >>> formatspec(b'keyword(%s)', b'foo\xe9')
    "keyword('foo\\xe9')"
    >>> b = lambda: b'default'
    >>> b.branch = b
    >>> formatspec(b'branch(%b)', b)
    "branch('default')"
    >>> formatspec(b'root(%ls)', [b'a', b'b', b'c', b'd'])
    "root(_list('a\\x00b\\x00c\\x00d'))"
    >>> formatspec(b'sort(%r, %ps)', b':', [b'desc', b'user'])
    "sort((:), 'desc', 'user')"
    >>> formatspec(b'%ls', [b'a', b"'"])
    "_list('a\\x00\\'')"
    N�baseset�unknown revspec item type: %rrT)
�
_parseargsr�r\�setr�r�rrr^r�)�exprr��parsed�retr�r�rMrMrR�
formatspec�s%

rc	Gs�t||�}g}g}|D]V\}}|dur2|�|�q|dkr^dt�|�f}|�|�|�d�qt�d|��qd�|�}t|td�}t	j
|dg|�R�}t|�}t|�}t
|�}|S)	z<similar to formatspec but return a parsed and optimized treeNr�r�r�r�rTr�)r4r�)r�r�rZbasesetrr^r�r�r�r	r�r�r�r�)	rr�rrZinputsr�r�r�r�rMrMrR�spectrees$


rc
	Cs2t�|�}t|�}g}d}|t|�k�r�|�d|�}|dkrV|�d||d�f��q�|�d|||�f�|d}z||}Wn ty�t�t	d���Yn0|dkr�|�d|f�|d7}qzt
|�}Wn ty�t�t	d���Yn0t�
|�}|�r�|d7}|dk}	z||}Wn"t�y>t�t	d���Yn0|	�rn|dk�rn|�rn|�d	|f�|d7}qz|�d|t|�|�f�Wn&ttf�y�t�t	d
���Yn0n@z|�dt||�f�Wn&ttf�y�t�t	d
���Yn0|d7}qzt
|�t�t	d���Wnt�y,Yn0|S)z�parse the expression and replace all inexpensive args

    return a list of tuple [(arg-type, arg-value)]

    Arg-type can be:
    * None:      a string ready to be concatenated into a final spec
    * 'baseset': an iterable of revisions
    rrBNrs#incomplete revspec format charactersmissing argument for revspecr�r�r�r�s$too many revspec arguments specified)r
r_�iterrd�findr��
IndexErrorrrhr�next�
StopIteration�_formatlistfuncsr�rr�rzr�)
rr�Zargiterrrm�qrqr�r�ZislistrMrMrRr�1sh	

�

r�cCst�|d�S)Nr�)r	�prettyformatr�rMrMrRr
xsr
cCs$t|t�rttt|��dSdSdS)Nrr)r\r�r��map�depthr�rMrMrRr|s
rcCsft|t�r|ddvrt�St�}|dd�D]}|t|�O}q.|ddkr^|�|dd�|SdS)Nrr�rr)r\r�r�	funcsused�add)r�ZfuncsrlrMrMrRr�srs[0-9a-fA-F]{1,40}$cCs
t�|�S)z,returns true if the symbol looks like a hash)�_hashre�match)�symbolrMrMrR�_ishashlikesymbol�srcCsb|sgS|ddkr,t|d�r^|dgSn2t|�dkr^g}|dd�D]}|t|�7}qH|SgS)a7returns the list of symbols of the tree that look like hashes

    >>> gethashlikesymbols(parse(b'3::abe3ff'))
    ['3', 'abe3ff']
    >>> gethashlikesymbols(parse(b'precursors(.)'))
    []
    >>> gethashlikesymbols(parse(b'precursors(34)'))
    ['34']
    >>> gethashlikesymbols(parse(b'abe3ffZ'))
    []
    rr4rr0N)rrd�gethashlikesymbols)r��resultsZsubtreerMrMrRr�sr)NNN)NN)N)N)MZ
__future__r�stringZi18nrr
rZnoder�rr	rrZutilsr
r�rir�rgrZiterbytestrrfZsysbytes�
ascii_letters�digitsrZbytechrZxranger`rars�objectrxrtrwr|r~r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�Zbasealiasrulesr�r�r�r�r�r�r�r�r�rrrr�r
rr�re�compilerrrrMrMrMrR�<module>s��)

�����	
	

6
e

!


�3G

Youez - 2016 - github.com/yon3zu
LinuXploit