HEX
Server: Apache
System: Linux p102.lithium.hosting 4.18.0-553.141.1.el8_10.x86_64 #1 SMP Fri Jul 10 17:48:02 UTC 2026 x86_64
User: bvzmoamr (9955)
PHP: 8.1.34
Disabled: syslog
Upload Files
File: //proc/self/root/usr/lib64/python2.7/site-packages/mercurial/revsetlang.pyc
�
1�3\c@@s�ddlmZddlZddlmZddlmZmZmZm	Z	m
Z
ddlmZidddodpdfd6ddddqdfd6ddddrdfd6ddddsdfd6ddddtdfd6ddddudfd6dddvdwdfd6dd dxdyd#fd$6dd dzd{d#fd%6d&d'd|d}d*fd+6d,dd~ddfd-6d,ddddfd.6dddd�dfd/6dddd�dfd06dddd�d2fd36d4ddd�dfd56d4ddd�dfd66d4ddd�dfd76d8ddd�dfd:6d;ddd�dfd=6d�d	6d�d
6d�d>6d�d?6d�d@6Zd/d5d-hZiZdAdBhZee	jdC��Zee	jejjdD�ejjdD�dE��eee	je	jdFdG���BZeee	jdH��BZddddI�Ze�ZdJ�Z dK�Z!edL�Z"dM�Z#dN�Z$dO�Z%dP�Z&dQ�Z'iZ(dR�Z)dS�Z*dT�Z+dU�Z,dV�Z-dW�Z.dX�Z/dY�Z0dZ�Z1ed[hBZ2ddd\�Z3d]ej4fd^��YZ5dd_�Z6d`�Z7dda�Z8db�Z9dc�Z:dd�Z;de�Z<ie;df6e<dg6Z=dh�Z>di�Z?dj�Z@dk�ZAe
jBjCdl�ZDdm�ZEdn�ZFdS(�i(tabsolute_importNi(t_(terrortnodetparsertpycompattutil(t
stringutilitgroupt)tfunct(t	subscriptt]t[trelationt#it_concats##itancestort~tparentt
parentpostt^itnegateitminust-itdagrangealltdagrangepretdagrangetdagrangeposts::s..itrangealltrangepretranget	rangepostt:i
tnott!tandt&tonlytonlypostt%itort|t+itkeyvaluet=itlistt,tsymboltstringtendt"t's()[]#:=,-|&+!~^%tasciis._@i�is-/c
#@s�t|t�s%tjd|��ntj|�}|dkrIt}n|dkr^t}n|r(�r(|j	dd�}t
�fd�|D��r(|dr�d|ddfVnt|�dkr
t|d�}dd|fV|dr
d|d|dfVq
nddt|�fVdSndt|�}}x�||kr�||}|j�rcnj|dkr�|||d	!d
kr�d
d|fV|d7}n,|dkr�|||d	!dkr�dd|fV|d7}n�|d
kr|||d	!dkrdd|fV|d7}n�|t
kr:|d|fVn�|tksi|dkr7|||d	!dkr7|dkr�|d7}||}d�}	n	tj}	|d7}|}x||kr||}
|
dkr�|d	7}q�n|
|krd|	|||!�|fVPn|d7}q�Wtjtd�|��n�||kr�|}|d7}xb||kr�||}
|
|kr|Pn|
dkr�||ddkr�|d8}Pn|d7}qVW|||!}|tkr�|d|fVn�d|kr��r�|�rd||fVq�|j	d�}xQ|d D]E}|rHd||fVn|t|�7}dd|fV|d7}q+W|dr�d|d|fVq�nd||fV|d8}ntjtd�||��|d7}q>Wdd|fVdS(s�
    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 %rR"ic3@s!|]}|r�|�VqdS(N((t.0tsym(tlookup(s:/usr/lib64/python2.7/site-packages/mercurial/revsetlang.pys	<genexpr>isiR1R3Nis::t.s..Rs##trsr'sr"cS@s|S(N((tx((s:/usr/lib64/python2.7/site-packages/mercurial/revsetlang.pyt<lambda>�ts\R2sunterminated stringRi����ssyntax error in revset '%s'(sr'sr"(t
isinstancetbytesRtProgrammingErrorRtbytestrtNonet_syminitletterst_symletterstsplittalltlentisspacet_simpleopletterst
_quotelettersRtunescapestrt
ParseErrorRtkeywords(
tprogramR9tsyminitletterst
symletterstpartststpostltctdecodetdR8tp((R9s:/usr/lib64/python2.7/site-packages/mercurial/revsetlang.pyttokenizeGs�	
		


#
#
#


	




 




cC@s7|r|ddkr|dStjtd���dS(NiR1isnot a symbol(RRMR(R<((s:/usr/lib64/python2.7/site-packages/mercurial/revsetlang.pyt	getsymbol�scC@sA|r.|ddks&|ddkr.|dStj|��dS(NiR2R1i(RRM(R<terr((s:/usr/lib64/python2.7/site-packages/mercurial/revsetlang.pyt	getstring�s&cC@sU|r|tk	r|Sytt||��SWn tk
rPtj|��nXdS(N(t_notsettintR]t
ValueErrorRRM(R<R\tdefault((s:/usr/lib64/python2.7/site-packages/mercurial/revsetlang.pyt
getinteger�s
cC@s8tjt|��}|dk	r%|Stj|��dS(N(Rt	parseboolR[RCRRM(R<R\tvalue((s:/usr/lib64/python2.7/site-packages/mercurial/revsetlang.pyt
getboolean�scC@s/|s
gS|ddkr(t|d�S|gS(NiR/i(R/(R<((s:/usr/lib64/python2.7/site-packages/mercurial/revsetlang.pytgetlist�s
cC@s�|stj|��n|d}|dkr@|d|dfS|dkrZd|dfS|dkrt|ddfS|dkr�dStj|��dS(	NiR iiRR!R(NN(RRMRC(R<R\top((s:/usr/lib64/python2.7/site-packages/mercurial/revsetlang.pytgetrange�s
cC@sRt|�}t|�|ks<|dkrNt|�|krNtj|��n|S(Ni(RfRHRRM(R<tmintmaxR\RU((s:/usr/lib64/python2.7/site-packages/mercurial/revsetlang.pytgetargs�s0cC@s.tjt|�|tj|�dddd�S(NtkeyvaluenodeR-tkeynodeR1(Rt
buildargsdictRftsplitargspec(R<tfuncnametkeys((s:/usr/lib64/python2.7/site-packages/mercurial/revsetlang.pytgetargsdict�s!cC@s6tj|�}|dkr2t|�t|<}n|S(N(t
_treecachetgetRCtparse(tspecttree((s:/usr/lib64/python2.7/site-packages/mercurial/revsetlang.pyt_cachedtree�scG@st|�}tj|d|�S(s�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'))
    R1R(R1R(RxRt	buildtree(ttmplspectreplsttemplate((s:/usr/lib64/python2.7/site-packages/mercurial/revsetlang.pyt_buildscC@s(t|�}tj||dddh�S(sTest 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)'))
    R1RR-R/(R1R(RxRt	matchtree(tpatspecRwtpattern((s:/usr/lib64/python2.7/site-packages/mercurial/revsetlang.pyt_matchscC@stdd||f�S(Ns!ancestors(_) and not ancestors(_)R%(R�(trevstbases((s:/usr/lib64/python2.7/site-packages/mercurial/revsetlang.pyt
_matchonlyscC@sot|t�s|S|d}|dkr�d|df}|dddkrhtd||ddf�S|dddkr�td	|f�S|ddd
kr�td||ddf�S|dddkrPtd
|f�Snn|dkr|td|d�fS|dkrP|dddkrPtd|dd|dd|df�S|ftd�|dD��S(srRewrite raw parsed tree to resolve ambiguous syntax which cannot be
    handled well by our simple top-down parseriRRiiRRRRRR RR!R*R/RRtrelsubscriptcs@s|]}t|�VqdS(N(t_fixops(R7ty((s:/usr/lib64/python2.7/site-packages/mercurial/revsetlang.pys	<genexpr>9s(R/(R?ttupleR�(R<Rgtpost((s:/usr/lib64/python2.7/site-packages/mercurial/revsetlang.pyR�s$
 *cC@s�|dkr|S|d}|dkr=ttd|d��S|dkr`ttd|d��S|dkr�ttd|d��S|d	kr�tjtd
���n|dkr�ttd|d��S|d
kr�ttd|d��S|dkr&t|dtd��}tdd|f�S|d*kr6|S|dkrL|dfS|dddddhkr{|t|d�fS|dkr�t|d�S|dddddd d!hkr�t|d�}t|d"�}|||fS|d#kr/t|d�}t|d"�}t|d$�}||||fS|d%krZ|ftd&�|dD��S|d'kr�||dt|d"�fS|d(kr�||dt|d"�fStd)|��dS(+NiRs_ and not _iR's
only(_, _)R(sonly(_)Rscan't use '::' in this contextRsancestors(_)Rsdescendants(_)Rscan't negate thatR2RR1RR*R#RR!RRR%RR RRRRiR�iR/cs@s|]}t|�VqdS(N(t_analyze(R7R�((s:/usr/lib64/python2.7/site-packages/mercurial/revsetlang.pys	<genexpr>bsR-R
sinvalid operator %r(R2R1(	RCR�R}RRMRR]R�R`(R<RgRSttattbttc((s:/usr/lib64/python2.7/site-packages/mercurial/revsetlang.pyR�;sV


cC@s
t|�S(s�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�(R<((s:/usr/lib64/python2.7/site-packages/mercurial/revsetlang.pytanalyzeisc
@s.|dkrd|fS|d}|d+kr6d|fS|dkrgt|d�\}}t|d�\}}t||�}tdd||f�}|r�t|d�d	d
dhkr�|td|d|d�fSt||�p�t||�}|r|td
|d�fStd|�}|r?|d||dffS||krTd}n||||ffS|dkrzggg������fd�}x�t|d�D]~}	t|	�\}}
|
dk	r
|
ddks�|
ddkr
�j||
f�q�n|��j|��j|
�q�W|�t	��dkrZ�d�dfSt
��|d,t��ffS|dkr�td|d�r�ttd��}|d|dfSt|d�}|d||dffSn2|dkr�d|fS|d-kr2t|d�}|d||dffS|d.kr�t|d�\}}t|d�\}}|||||ffS|d/kr�t|d�\}}
|||
|dffS|d!kr�t|d�\}}
|||
|d|d"ffS|dkr=td#�|dD��\��t
��|f�fS|d$krvt|d�\}}
|||d|
ffS|d%krt|d�}t|d�\}}ttj|�d&d�}td'|�}|d(kr�|r�||td)|d�fS||||d|ffStd*|��dS(0NiR2R1g�?R%iis_() & ancestors(_)tdrafttsecrett
_notpublics_phaseandancestors(_, _)s
only(_, _)snot _t
differencet	andsmallyR*c@s��s
dSt��dkr/�d\}}n@djd��D��}tdd|f�}t|�\}}�j|��j|��2dS(Niiscs@s|]\}}|dVqdS(iN((R7twtt((s:/usr/lib64/python2.7/site-packages/mercurial/revsetlang.pys	<genexpr>�ss_list(_)R2(RHtjoinR}t	_optimizetappend(R�R�RSR�(tssttstws(s:/usr/lib64/python2.7/site-packages/mercurial/revsetlang.pytflushss�s

R/R#spublic()s_notpublic()RRR!RRR RRRRR�ics@s|]}t|�VqdS(N(R�(R7R�((s:/usr/lib64/python2.7/site-packages/mercurial/revsetlang.pys	<genexpr>�sR-R
t_weightscommonancestors(_)theadss_commonancestorheads(_)sinvalid operator %r(R2R1(R/(RR!R(RR (RRRR(RCR�RiR�R[R}R�RfR�RHRjR�tziptsumtgetattrtsymbolsRtR`(
R<RgtwaR�twbR�R�tmR�R�R�totf((R�R�R�s:/usr/lib64/python2.7/site-packages/mercurial/revsetlang.pyR�rs�


%	,
 
 cC@st|�\}}|S(s[Optimize evaluatable tree

    All pseudo operations should be transformed beforehand.
    (R�(RwR�tnewtree((s:/usr/lib64/python2.7/site-packages/mercurial/revsetlang.pytoptimize�st$cC@s�|r-|jd�r-|jd�r-d}ntjt�}|jt|d|d|��\}}|t|�kr�tj	t
d�|��nttj|d	��S(
s�Generate a parse tree of given spec with given tokenizing options

    >>> _parsewith(b'foo($1)', syminitletters=_aliassyminitletters)
    ('func', ('symbol', 'foo'), ('symbol', '$1'))
    >>> _parsewith(b'$1')
    Traceback (most recent call last):
      ...
    ParseError: ("syntax error in revset '$1'", 0)
    >>> _parsewith(b'foo bar')
    Traceback (most recent call last):
      ...
    ParseError: ('invalid token', 4)
    srevset(R	R9RPs
invalid tokenR/R*N(R/R*(
t
startswithtendswithRCRtelementsRuRZRHRRMRR�tsimplifyinfixops(RvR9RPRYRwRT((s:/usr/lib64/python2.7/site-packages/mercurial/revsetlang.pyt
_parsewith�s$	t_aliasrulescB@s8eZdZed�Zed��Zed��ZRS(s0Parsing and expansion rule set of revset aliasessrevset aliascC@st|dt�S(sParse 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.
        RP(R�t_aliassyminitletters(Rv((s:/usr/lib64/python2.7/site-packages/mercurial/revsetlang.pyt_parse�scC@sD|ddkr@|dddkr@|ddt|d�fSdS(NiR
iR1i(Rf(Rw((s:/usr/lib64/python2.7/site-packages/mercurial/revsetlang.pyt_trygetfuncs$(t__name__t
__module__t__doc__Rt_sectiontstaticmethodR�R�(((s:/usr/lib64/python2.7/site-packages/mercurial/revsetlang.pyR��s
cC@s�tj|�}tj||�}|dk	r�xYt|j��D]B\}}|jr@|jr@|td�|j�t	|_q@q@Wn|S(sCExpand aliases in a tree, aliases is a list of (name, value) tuplesswarning: %s
N(
R�tbuildmaptexpandRCtsortedt	iteritemsRtwarnedRtTrue(Rwtaliasestwarntnametalias((s:/usr/lib64/python2.7/site-packages/mercurial/revsetlang.pyt
expandaliases
scC@s�t|t�s |dd
kr$|S|ddkr�|g}g}x�|r�|j�}|ddkr�|jt|d��qF|ddkr�|j|d�qFtd�|d}tj|��qFWddj	|�fStd�|D��Sd	S(s-Fold elements to be concatenated by `##`
    iR2R1Ris#"##" can't concatenate "%s" elementR>cs@s|]}t|�VqdS(N(t
foldconcat(R7R�((s:/usr/lib64/python2.7/site-packages/mercurial/revsetlang.pys	<genexpr>)sN(R2R1(R2R1(
R?R�tpoptextendtreversedR�RRRMR�(RwtpendingRUtetmsg((s:/usr/lib64/python2.7/site-packages/mercurial/revsetlang.pyR�s 		cC@s�yt|d|�SWnwtjk
r�}t|j�dkr�|jd}|jdd�}|dd|ddtd�|_n�nXdS(NR9is
t s^ there(R�RRMRHtargstreplaceRthint(RvR9tinsttloc((s:/usr/lib64/python2.7/site-packages/mercurial/revsetlang.pyRu+s
*cC@sdtjtj|��S(s�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'(Rt	escapestrRRB(RS((s:/usr/lib64/python2.7/site-packages/mercurial/revsetlang.pyt_quote:scC@s�|dkrdt|�S|dkr0t|�S|dkrft|t�sTt�nt|�d|S|dkr�ttj|��S|dkr�yt|j��SWq�t	k
r�t�q�Xnt
jtd�|��dS(	NRXs%dRSR;s(%s)tntbs&unexpected revspec format character %s(
R_R�R?R@t	TypeErrorRuRthextbranchtAttributeErrorRRMR(RVtarg((s:/usr/lib64/python2.7/site-packages/mercurial/revsetlang.pyt_formatargtypeHs"
	


cC@s$t|�}|dkrdS|dkr9t||d�S|dkr`ddjd�|D��S|dkr�d	tdj|��S|d
kr�ddjd�|D��S|d
kr�yddjd�|D��SWq�tk
r�t�q�Xn|d}dt|| |�t|||�fS(Nis	_list('')iRXs_intlist('%s')scs@s|]}dt|�VqdS(s%dN(R_(R7ta((s:/usr/lib64/python2.7/site-packages/mercurial/revsetlang.pys	<genexpr>bsRSs	_list(%s)R�s_hexlist('%s')cs@s|]}tj|�VqdS(N(RR�(R7R�((s:/usr/lib64/python2.7/site-packages/mercurial/revsetlang.pys	<genexpr>fsR�s_list('%s')cs@s|]}|j�VqdS(N(R�(R7R�((s:/usr/lib64/python2.7/site-packages/mercurial/revsetlang.pys	<genexpr>isis
(%s or %s)(RHR�R�R�R�R�t_formatlistexp(RSR�RUR�((s:/usr/lib64/python2.7/site-packages/mercurial/revsetlang.pyR�[s$


c@sdj�fd�|D��S(Ns, c3@s|]}t�|�VqdS(N(R�(R7R�(R�(s:/usr/lib64/python2.7/site-packages/mercurial/revsetlang.pys	<genexpr>qs(R�(R�R�((R�s:/usr/lib64/python2.7/site-packages/mercurial/revsetlang.pyt_formatparamexppsRURYc	G@sitj|�}t|�}g}d}x�|t|�kr$|jd|�}|dkro|j||�Pn|j|||!�|d}y||}Wn&tk
r�tjt	d���nX|dkr�|j|�|d7}q*nyt
|�}Wn&tk
r%tjt	d���nXtj
|�}|r�|d7}y||}Wn&tk
r{tjt	d���nXy |j|t|�|��Wqttfk
r�tjt	d���qXnIy|jt||��Wn,ttfk
rtjt	d���nX|d7}q*Wy#t
|�tjt	d���Wntk
r[nXdj|�S(	s$
    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 = 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)
    '10:: and not 20::'
    >>> formatspec(b'%ld or %ld', [], [1])
    "_list('') or 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\\'')"
    iR)is#incomplete revspec format charactersmissing argument for revspecsinvalid argument for revspecs$too many revspec arguments specifiedR>(RRBtiterRHtfindR�t
IndexErrorRRMRtnextt
StopIterationt_formatlistfuncsRtR/R�R`R�R�(	texprR�targitertretRTtqRXR�R�((s:/usr/lib64/python2.7/site-packages/mercurial/revsetlang.pyt
formatspecxsZ%






 

cC@stj|d�S(NR2R1(R2R1(Rtprettyformat(Rw((s:/usr/lib64/python2.7/site-packages/mercurial/revsetlang.pyR��scC@s.t|t�r&ttt|��dSdSdS(Nii(R?R�Rjtmaptdepth(Rw((s:/usr/lib64/python2.7/site-packages/mercurial/revsetlang.pyR��scC@s�t|t�s |ddkr't�St�}x"|dD]}|t|�O}q;W|ddkr}|j|dd�n|SdS(NiR2R1iR
(R2R1(R?R�tsett	funcsusedtadd(RwtfuncsRS((s:/usr/lib64/python2.7/site-packages/mercurial/revsetlang.pyR��s 	s[0-9a-fA-F]{1,40}$cC@s
tj|�S(s,returns true if the symbol looks like a hash(t_hashretmatch(R1((s:/usr/lib64/python2.7/site-packages/mercurial/revsetlang.pyt_ishashlikesymbol�scC@s}|s
gS|ddkr8t|d�ry|dgSnAt|�dkryg}x"|dD]}|t|�7}q[W|SgS(s7returns 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'))
    []
    iR1ii(R�RHtgethashlikesymbols(Rwtresultstsubtree((s:/usr/lib64/python2.7/site-packages/mercurial/revsetlang.pyR��s(RiR	(R
iR	(RiR
(Ri(Ri(Ri(Ri(Ri(Ri(Ri(Ri(Ri(Ri(Ri(R i(R#i
(R#i
(R%i(R%i(R'i(R*i(R*i(R*i(R-i(R/i(iNNNN(iNNNN(iR1NNN(iR2NNN(iNNNN(Gt
__future__RR2ti18nRR>RRRRRtutilsRRCR�RNR�RKR�titerbytestrRJt
ascii_letterstencodetdigitsR�tbytechrtxrangeRDRERZtobjectR^R[R]RbReRfRhRkRrRsRxR}R�R�R�R�R�R�R�R�R�tbasealiasrulesR�R�R�RuR�R�R�R�R�R�R�R�R�tretcompileR�R�R�(((s:/usr/lib64/python2.7/site-packages/mercurial/revsetlang.pyt<module>s�(


	/|															.			b	

					
	W