-=[ Mr. Bumblebee ]=-
_Indonesia_

Path : /usr/lib/python2.7/dist-packages/mercurial/
File Upload :
Current File : //usr/lib/python2.7/dist-packages/mercurial/revset.pyc


\,TcB@s	ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z
ddlZddl
mZddlZddlZddlZddlZdZdZdZidddfd6dddfd6ddddfd6dddfd6ddddfd6ddddfd6ddddfd!6d"dfd#6d"dfd$6dddfd%6dddfd&6d'ddfd(6d'ddfd)6d'dd	fd*6d+dd
fd-6dd	6d.ddfd/6d.d
dfd06dd16Zed%d(d#gZdd2Zd3Zd4Zd5Zd6Zd7Z d8Z!d9Z"d:Z#d;Z$d<Z%d=Z&d>Z'd?Z(d@Z)dAZ*dBZe+dCZ,dDZ-dEZ.dFZ/dGZ0dHZ1dIZ2dJZ3dKZ4dLZ5dMZ6dNZ7dOZ8dPZ9dQZ:dRZ;dSZ<dTZ=dUZ>dVZ?e+dWZ@dXZAdYZBdZZCd[ZDd\ZEd]ZFd^ZGd_ZHd`ZIe+daZJdbZKdcZLddZMdeZNdfZOdgZPdhZQdiZRdjZSdkZTdlZUdmZVdnZWdoZXdpZYdqZZdrZ[dsZ\dtZduZ]dvZ^dwZ_dxZ`dyZadzZbd{Zcd|Zdd}Zed~ZfdZgdZhdZidZjdZkdZldZmdZndZodZpdZqdZrdZsdZtdZuiDe*d6eMd6ed
6e-d6e.d6e0d6e1d6e2d6e3d6e4d6e5d6eYd6e6d6e7d6e:d6e;d6e<d6e=d6e>d6e?d6eAd6eBd6eCd6eDd6eEd6eFd6eGd6ePd6eHd6eId6eKd6eLd6eNd6eQd6eRd6eSd6e\d6eTd6eVd6eUd6eOd6eWd6eXd6eZd6e[d6ed6e]d6e^d6e_d6e`d6ead6ecd6edd6eed6efd6egd6eid6ejd6eld6ekd6ehd6eod6epd6erd6eqd6esd6etd6eud6Zveddd
ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddgAZwie#d6e$d6e!d06e"d/6e%d%6e&d(6e'd#6e(d,6e)d
6e/d
6ebd6e_d6ZxdZyd
dfZzdZ{ddZ|de}fdYZ~dZdZdZdZddZddZ	dZdZdZdZdefdYZde}fdYZde}fdYZdeefdYZdefdYZde}fdYZdefdYZdefdYZdefdYZevjZdS(iN(t_cs=|rdpd|jfd}t|S(s2Like revlog.ancestors(), but supports followfirst.ic3s!d\}}g}jtj}|rQ|j}tj||nttj	g}x|rtj
|}||krf|r||kr|r|j}tj||qn|j||VxAj| D])}|tj	krtj||qqWqfqfWdS(N(NN(
tNonet
descendingtutiltdequetpoplefttheapqtheappushtsettnodetnullrevtheappoptaddt
parentrevs(trevqueuetrevsnodethtseentcurrenttparent(tcltcuttrevs(s4/usr/lib/python2.7/dist-packages/mercurial/revset.pytiterates(
	
N(Rt	changelogt_descgeneratorset(trepoRtfollowfirstR((RRRs4/usr/lib/python2.7/dist-packages/mercurial/revset.pyt
_revancestorss	cs4|rdpdfd}t|S(s3Like revlog.descendants() but supports followfirst.ic3sj}t}tj}||krCx|D]}|Vq1Wnvt}xg|j|dD]R}xI|j| D]4}||kr}||kr}|j||VPq}q}WqcWdS(Ni(RtminR	R
RRR
R(RtfirstR
tiRtx(RRR(s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyR7s		

N(Rt_ascgeneratorset(RRRR((RRRs4/usr/lib/python2.7/dist-packages/mercurial/revset.pyt_revdescendants3scCs;|stgS|jj}t|}t}i}t|}t|}x|r|j}||kr|j|n||}	|	||<x6|	D].}
|
|kr|
|kr|j|
qqWqRW|stgSxEt|D]7}x.||D]"}
|
|kr|j|qqWqWtt|S(sNReturn all paths between roots and heads, inclusive of both endpoint
    sets.(	tbasesetRR
RRtpopRtappendtsorted(RtrootstheadsR
tvisitt	reachableRtminroottrevtparentsR((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyt_revsbetweenKs0
		


itgroupit)tfunct(itancestort~Rt
parentpostt^itnegateitminust-itdagrangepretdagrangetdagrangeposts::s..itrangepretranget	rangepostt:i
tnott!tandt&itort|t+itlistt,itsymboltstringtendccsdt|}}x||kr||}|jr;nd|dkry|||d!dkrydd|fV|d7}n&|dkr|||d!dkrdd|fV|d7}n|dkr|d|fVn|d	ks|d
kr|||d!dkr|d
kr/|d7}||}d
}n	d}|d7}|}xT||kr||}|dkr}|d7}qKn||krd||||!|fVPn|d7}qKWtjtd|n|js|dkst|dkr|}|d7}x||kr||}|jpK|dkpKt|dksRPn|dkr||ddkr|d8}Pn|d7}qW|||!}|tkr|d|fVnd|krl|r||rd||fVqz|j	d}	xQ|	d D]E}
|
rd|
|fVn|t|
7}dd|fV|d7}qW|	drzd|	d|fVqznd||fV|d8}ntjtd||d7}qWdd|fVdS(s
    Parse a revset statement into a stream of tokens

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

    iR@is::it.s..s():,-|&+!~^s"'trsr'sr"cSs|S(N((R ((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyt<lambda>scSs
|jdS(Ns
string-escape(tdecode(R ((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyROss\RKsunterminated strings._@is-._/@R9RJissyntax errorRLN(sr'sr"(
tlentisspaceRterrort
ParseErrorRtisalnumtordtkeywordstsplit(tprogramtlookuptpostltcRPtstdtsymtpartstp((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyttokenizes~

#
#


	


*

* 



cCsA|r.|ddks&|ddkr.|dStj|dS(NiRKRJi(RSRT(R terr((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyt	getstrings&cCs:|s
gS|ddkr3t|d|dgS|gS(NiRHii(tgetlist(R ((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyRfs
cCsRt|}t||ks<|dkrNt||krNtj|n|S(Ni(RfRQRSRT(R RtmaxRdR\((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pytgetargss0cCs\|stjtdnt|d|||d}tj|drR|St|S(Nsmissing argumentiiR(RSRTRtmethodsRtsafehasattrR#(RtsubsetR R^((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pytgetsetscCsa||j}xJdD]B}||kry|||jSWqYtjk
rUqYXqqWdS(Ntsourcettransplant_sourcet
rebase_source(ssourceRnRo(textraR,RStRepoLookupErrorR(RRNRptlabel((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyt
_getrevsources
cCs|||j}|dkrAt|t|krAtdgSt|t|kse||krrt|gStgS(Ni(R,RQR#(RRkR ((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyt	stringsets$
$
cCs8|tkr(tjtd|nt|||S(Nscan't use %s here(tsymbolsRSRTRRt(RRkR ((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyt	symbolsetscCst|j}t|||}t|||}|sA|rKtgS|d|d}}||krt|||d}nt|||d}||@S(Niii(R#RRltspanset(RRkR tyRtmtnRN((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pytrangesets
cCsRt|}t|t|||t|||}|j}|j|jS(N(RwR.RlRtfiltert__contains__(RRkR RxRNtxsR^((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyR;s*cCst|t||||S(N(Rl(RRkR Rx((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pytandset scCs0t|||}t||||}||S(N(Rl(RRkR Rxtxltyl((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pytorset#scCs|t|||S(N(Rl(RRkR ((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pytnotset(scCstjtddS(Ns can't use a list in this context(RSRTR(RRktatb((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pytlistset+scCsY|ddkr8|dtkr8t|d|||Stjtd|ddS(NiRJisnot a function: %s(RuRSRTR(RRkRR((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyR1.s cCs(t|td}t|||dS(s``adds(pattern)``
    Changesets that add a file matching pattern.

    The pattern without explicit kind like ``glob:`` is expected to be
    relative to the current directory and match against a file or a
    directory.
    sadds requires a patterni(ReRtcheckstatus(RRkR tpat((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pytadds5s	cst|}td}x^fd|DD]C}x:|D]2}|dkrd|}qE|j|}qEWq8W|dk	r|j|krt|jgStgS(s``ancestor(*changeset)``
    A greatest common ancestor of the changesets.

    Accepts 0 or more changesets.
    Will return empty list when passed no args.
    Greatest common ancestor of a single changeset is that changeset.
    c3s!|]}t|VqdS(N(Rl(t.0R(Rtrl(s4/usr/lib/python2.7/dist-packages/mercurial/revset.pys	<genexpr>OsN(RfRwRR3R,R#(RRkR R\tancRRN((RRs4/usr/lib/python2.7/dist-packages/mercurial/revset.pyR3As	 

cCsJt|t||}|s(tgSt|||}|j|jS(N(RlRwR#RR|R}(RRkR RtargsR^((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyt
_ancestorsZs

cCst|||S(sP``ancestors(set)``
    Changesets that are ancestors of a changeset in set.
    (R(RRkR ((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyt	ancestorsascCst|||dtS(NR(RtTrue(RRkR ((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyt_firstancestorsgscCsyt|d}Wn,ttfk
rBtjtdnXt}|j}xWt|t	||D]=}x't
|D]}|j|d}qW|j|qnW|j
|jS(sg``set~n``
    Changesets that are the Nth ancestor (first parents only) of a changeset
    in set.
    is~ expects a numberi(tintt	TypeErrort
ValueErrorRSRTRRRRlR#R>R
RR|R}(RRkR RztpsRRNR((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pytancestorspecls		csLtjt|td}t|\}}|jfdS(s7``author(string)``
    Alias for ``user(string)``.
    sauthor requires a stringcstj|jS(N(tencodingtlowertuser(R (tmatcherR(s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyROs(RRReRt_substringmatcherR|(RRkR Rztkindtpattern((RRs4/usr/lib/python2.7/dist-packages/mercurial/revset.pytauthor}sc
Cs|j}t|ddtd}t|t||dj}t|dkrt|dkrttgStt||t	}g|j
D]$}||kr||kr|^q}nt|t||d}ttj|||j
}	t||	jS(s``only(set, [set])``
    Changesets that are ancestors of the first set that are not ancestors
    of any other head in the repo. If a second set is specified, the result
    is ancestors of the first set that are not ancestors of the second set
    (i.e. ::<set1> - ::<set2>).
    iisonly takes one or two argumentsi(RRhRRlRwRRQR#R"tFalsetheadrevstancestormodtmissingancestorsR
tlazysetR}(
RRkR RRtincludetdescendantsR,texcludetresults((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pytonlys	"
'cCsCt|tdj}ttj||}|j|jS(s ``bisect(string)``
    Changesets marked in the specified bisect status:

    - ``good``, ``bad``, ``skip``: csets explicitly marked as good/bad/skip
    - ``goods``, ``bads``      : csets topologically good/bad
    - ``range``              : csets taking part in the bisection
    - ``pruned``             : csets that are goods, bads or skipped
    - ``untested``           : csets whose fate is yet unknown
    - ``ignored``            : csets ignored due to DAG topology
    - ``current``            : the cset currently being bisected
    sbisect requires a string(ReRRRthbisecttgetR|R}(RRkR tstatuststate((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pytbisects
cCst|||S(N(R(RRkR ((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pytbisectedsc
st|ddtd}|r[t|dtd}t|\}}}|dkr|jj|d	stjtd|n|j	|j
fdSt}x9|jjD](\}	||	r|j
qqW|stjtd|nt}
x%|D]|
j
|j	q/W||
@Sntg|jjD]}||j	^qn}|j
|jS(
s``bookmark([name])``
    The named bookmark or all bookmarks.

    If `name` starts with `re:`, the remainder of the name is treated as
    a regular expression. To match a bookmark that actually starts with `re:`,
    use the prefix `literal:`.
    iis"bookmark takes one or no argumentss)the argument to bookmark must be a stringtliteralsbookmark '%s' does not existcs
|kS(N((RN(tbmrev(s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyROss"no bookmarks exist that match '%s'N(RhRRet_stringmatchert
_bookmarksRRRtAbortR,R|Rt	iteritemsRtvaluesR}(
RRkR RtbmRRRt	matchrevstnametbmrevsRNtbms((Rs4/usr/lib/python2.7/dist-packages/mercurial/revset.pytbookmarks2	
	
	
,csyt|dWntjk
r)niXt\}}|dkry|jkr|jfdSn|jfdStt|tx%D]}j	|j
qWj|jfdS(s4``branch(string or set)``
    All changesets belonging to the given branch or the branches of the given
    changesets.

    If `string` starts with `re:`, the remainder of the name is treated as
    a regular expression. To match a branch that actually starts with `re:`,
    use the prefix `literal:`.
    tRcs|jS(N(tbranch(RN(RR(s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyROscs|jS(N(R(RN(RR(s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyROscs |kp|jkS(N(R(RN(RRR^(s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyROs(ReRSRTRt	branchmapR|RlRwRRR(RRkR RRRN((RRRR^s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyRs		
cCs3t|ddtdtj|d}||@S(s``bumped()``
    Mutable changesets marked as successors of public changesets.

    Only non-public and non-obsolete changesets can be `bumped`.
    isbumped takes no argumentstbumped(RhRtobsmodtgetrevs(RRkR R((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyRscCsAy|jj}Wn&tk
r8tjtdnX||@S(sZ``bundle()``
    Changesets in the bundle.

    Bundle must be specified by the -R option.s$no bundle provided - specify with -R(Rt
bundlerevstAttributeErrorRRR(RRkR R((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pytbundles

cs:tjdkfd}|j|S(NRcsAd}d}|}|s#rtjjjgd|}|jrt|jdkr|jd}qn|dk	r||jkrtSn+x(|jD]}||rPqqWtSj	|j
j|j}|dk	r||kr=tSn!x|D]}||r#tSq#WdS(Ntctxii(
RtmatchmodtmatchtroottgetcwdtanypatsRQtfilesRRtp1R	R(R RytfnameR]tfR(tfieldthassetRR(s4/usr/lib/python2.7/dist-packages/mercurial/revset.pytmatchess*

'%(
(RtpatkindR|(RRkRRR((RRRRs4/usr/lib/python2.7/dist-packages/mercurial/revset.pyRscCst}|st|S|jj}t|}xS|D]K}||krPq8nx0||D]"}||kr]|j|q]q]Wq8Wt|S(N(RR#RR
RR(Rtnarrowt	parentsettcstprtminrevRNRb((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyt	_children/s	

cCs8t|t||j}t|||}||@S(sA``children(set)``
    Child changesets of changesets in set.
    (RlR#RR(RRkR R^R((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pytchildren=scs/t|ddtd|jfdS(s*``closed()``
    Changeset is closed.
    isclosed takes no argumentscs|jS(N(tclosesbranch(RN(R(s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyROKs(RhRR|(RRkR ((Rs4/usr/lib/python2.7/dist-packages/mercurial/revset.pytclosedEscs4t|tdfd}|j|S(sV``contains(pattern)``
    The revision's manifest contains a file matching pattern (but might not
    modify it). See :hg:`help patterns` for information about file patterns.

    The pattern without explicit kind like ``glob:`` is expected to be
    relative to the current directory and match against a file exactly
    for efficiency.
    scontains requires a patterncstjsDtjjj}||krtSnX|}tjjjgd|}x$|jD]}||rtSqWt	S(NR(
RRtpathutilt	canonpathRRRRtmanifestR(R tpatsR]RyR(RR(s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyRYs
'(ReRR|(RRkR R((RRs4/usr/lib/python2.7/dist-packages/mercurial/revset.pytcontainsMs

cskdt|ddtd}|rCt|dtdnfd|jfdS(s``converted([id])``
    Changesets converted from the given identifier in the old repository if
    present, or all converted changesets if no identifier is specified.
    iis#converted takes one or no argumentssconverted requires a revisioncsA|jjdd}|dk	o@dkp@|jS(Ntconvert_revision(RpRRt
startswith(RNRm(RR,(s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyt_matchvaluexscs
|S(N((RN(R(s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyRO|sN(RRhRReR|(RRkR R\((RRR,s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyt	convertedhs	cs=t|td}tj||jfdS(sQ``date(interval)``
    Changesets within the interval, see :hg:`help dates`.
    sdate requires a stringcs|jdS(Ni(tdate(R (tdmR(s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyROs(ReRRt	matchdateR|(RRkR tds((RRs4/usr/lib/python2.7/dist-packages/mercurial/revset.pyR~scs=tjt|tdfd}|j|S(sZ``desc(string)``
    Search commit message for string. The match is case-insensitive.
    sdesc requires a stringcs#|}tj|jkS(N(RRtdescription(R R](RR(s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyRs
(RRReRR|(RRkR R((RRs4/usr/lib/python2.7/dist-packages/mercurial/revset.pytdescscCst|t||}|s(tgSt|||}|j|j}t||jdtt||jdt}t|ddtS(Nt	ascendingcSstS(N(R(RN((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyROs(	RlRwR#R"RRtorderedlazysetR}R(RRkR RRR^t	subsetsettresult((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyt_descendantss

cCst|||S(sT``descendants(set)``
    Changesets which are descendants of changesets in set.
    (R(RRkR ((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyRscCst|||dtS(NR(RR(RRkR ((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyt_firstdescendantsscCs|dk	r-t|t||j}nt|t||j}t}x|D]}t||}d}xs|dk	r|dkrt}n|j|||ks||kr|j|Pn|}t||}qyWq[W|j	|j
S(s``destination([set])``
    Changesets that were created by a graft, transplant or rebase operation,
    with the given revisions specified as the source.  Omitting the optional set
    is the same as passing all().
    N(RRlRwRtgetallRsRHR%tupdateR|R}(RRkR RtdestsRNtsrctlineage((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pytdestinations"!	


cCs;t|ddtdtj|d}|j|jS(sd``divergent()``
    Final successors of changesets with an alternative set of final successors.
    isdivergent takes no argumentst	divergent(RhRRRR|R}(RRkR R((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyRscs;t|ddtdj|jfdS(s)``draft()``
    Changeset in draft phase.isdraft takes no argumentscsj|tjkS(N(tphasetphasestdraft(RN(tpcR(s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyROs(RhRt_phasecacheR|(RRkR ((RRs4/usr/lib/python2.7/dist-packages/mercurial/revset.pyRs	cCs3t|ddtdtj|d}||@S(sJ``extinct()``
    Obsolete changesets with obsolete descendants only.
    isextinct takes no argumentstextinct(RhRRR(RRkR textincts((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyRscst|ddtd}t|dtdd	t|dkr}t|dtdt\}nfd|jfdS(
s3``extra(label, [value])``
    Changesets with the given label in the extra metadata, with the given
    optional value.

    If `value` starts with `re:`, the remainder of the value is treated as
    a regular expression. To match a value that actually starts with `re:`,
    use the prefix `literal:`.
    iis.extra takes at least 1 and at most 2 argumentsis(first argument to extra must be a strings)second argument to extra must be a stringcs6|j}|ko5dkp5|S(N(RpR(RNRp(RrRRtvalue(s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyRscs
|S(N((RN(R(s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyROsN(RhRReRRQRR|(RRkR R\R((RRrRRRs4/usr/lib/python2.7/dist-packages/mercurial/revset.pyRpsc	Cst|td}t}tj|stj|j|j|}|j	|}x|D]}|j
|j|qaWntj|j|j|gd|d}xW|dD]K}||r|j	|}x'|D]}|j
|j|qWqqW|j|jS(s``filelog(pattern)``
    Changesets connected to the specified filelog.

    For performance reasons, visits only revisions mentioned in the file-level
    filelog, rather than filtering through all changesets (much faster, but
    doesn't include deletes or duplicate changes). For a slower, more accurate
    result, use ``file()``.

    The pattern without explicit kind like ``glob:`` is expected to be
    relative to the current directory and match against a file exactly
    for efficiency.
    sfilelog requires a patternRN(ReRRRRRRRRtfileRtlinkrevRRR|R}(	RRkR RR^RtfltfrRy((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pytfilelogs	
+
!cCst|||S(s2``first(set, [n])``
    An alias for limit().
    (tlimit(RRkR ((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyR3sc	Cst|ddtd|}|d}|rt|dtd|}||kr||}td|jd|D}|j|jqtgSn!t|t|j	g|}|j
|jS(Niis#%s takes no arguments or a filenameRMs%s expected a filenamecss|]}|jVqdS(N(R,(RR((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pys	<genexpr>@sR(RhRReRRRRR#RR,R|R}(	RRkR RRR\R]tcxR^((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyt_follow9s

"
!cCst|||dS(s``follow([file])``
    An alias for ``::.`` (ancestors of the working copy's first parent).
    If a filename is specified, the history of the given file is followed,
    including copies.
    tfollow(R(RRkR ((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyRJscCst|||ddtS(Nt_followfirstR(RR(RRkR ((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyR	RscCst|ddtd|S(s9``all()``
    All changesets, the same as ``0:tip``.
    isall takes no arguments(RhR(RRkR ((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyRXscssy"tjt|tdWn/tjk
rS}tjtd|nXfd}|j|S(s``grep(regex)``
    Like ``keyword(string)`` but accepts a regex. Use ``grep(r'...')``
    to ensure special escape characters are handled correctly. Unlike
    ``keyword(string)``, the match is case-sensitive.
    sgrep requires a stringsinvalid match pattern: %scsN|}x=|j|j|jgD]}j|r-tSq-WtS(N(RRRtsearchRR(R R]te(tgrR(s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyRls

)(tretcompileReRRSRTR|(RRkR RR((RRs4/usr/lib/python2.7/dist-packages/mercurial/revset.pytgrep`s"c	st|ddtd}gggtd\x<|D]4}t|td}|d |d}}|dkrj|n|dkrj|n|dkrj|n|d	krdk	rtjtd
n|nR|dkr>dk	r5tjtdn|ntjtd
|rHtj	|dkrHt
qHqHWsdnfd}|j|S(Niis*_matchfiles requires at least one arguments%_matchfiles requires string argumentsisp:si:sx:sr:s)_matchfiles expected at most one revisionsd:s-_matchfiles expected at most one default modesinvalid _matchfiles prefix: %sRtglobcsd}|}|s)rdkr|}dk	rNpGd}ntjjjddd|d}nx$|jD]}||rtSqWtS(NRRRtdefault(RRRRRRRR(R RyR]RR(RtexcRtincRRR,(s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyRs
!(NN(RhRRRReR%RSRTRRRR|(	RRkR R\targR^tprefixRR((RRRRRRR,s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyt_matchfilesus8
		
	!cCs/t|td}t||dd|fS(s``file(pattern)``
    Changesets affecting files matched by pattern.

    For a faster but less accurate result, consider using ``filelog()``
    instead.

    This predicate uses ``glob:`` as the default kind of pattern.
    sfile requires a patternRKsp:(ReRR(RRkR R((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pythasfiles
csxt|ddtdt}x=jjD])\}}|jfd|Dq5Wt|j|jS(s5``head()``
    Changeset is a named branch head.
    ishead takes no argumentsc3s|]}|jVqdS(N(R,(RR(R(s4/usr/lib/python2.7/dist-packages/mercurial/revset.pys	<genexpr>s(	RhRRRRRR#R|R}(RRkR thsRtls((Rs4/usr/lib/python2.7/dist-packages/mercurial/revset.pytheads
	!cCs,t|||}t|||}||S(s?``heads(set)``
    Members of set with no children in set.
    (RlR-(RRkR R^R((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyR(scCs3t|ddtdtj|d}||@S(s(``hidden()``
    Hidden changesets.
    ishidden takes no argumentstvisible(RhRtrepoviewt
filterrevs(RRkR t
hiddenrevs((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pythiddenscs=tjt|tdfd}|j|S(s``keyword(string)``
    Search commit message, user name, and names of changed files for
    string. The match is case-insensitive.
    skeyword requires a stringcsC|}tjfd|j|j|jgDS(Nc3s$|]}tj|kVqdS(N(RR(Rtt(tkw(s4/usr/lib/python2.7/dist-packages/mercurial/revset.pys	<genexpr>s(RtanyRRR(RNR](R!R(s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyRs
$(RRReRR|(RRkR R((R!Rs4/usr/lib/python2.7/dist-packages/mercurial/revset.pytkeywordsc
Cs$t|ddtd}y>d}t|dkrXtt|dtd}nWn,ttfk
rtjtdnX|j	}t
|t||d}tg}t
|}xUt|D]G}y,|j}	|	|kr|j|	nWqtk
rPqXqW|S(sE``limit(set, [n])``
    First n members of set, defaulting to 1.
    iis#limit requires one or two argumentsslimit requires a numberslimit expects a numberi(RhRRQRReRRRSRTRRlRwR#titertxrangetnextR%t
StopIteration(
RRkR R\tlimtsstostbstitRx((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyRs&&
	c
Cs.t|ddtd}y>d}t|dkrXtt|dtd}nWn,ttfk
rtjtdnX|j	}t
|t||d}|jt
g}t|}xUt|D]G}y,|j}	|	|kr|j|	nWqtk
r%PqXqW|S(sC``last(set, [n])``
    Last n members of set, defaulting to 1.
    iis"last requires one or two argumentsslast requires a numberslast expects a numberi(RhRRQRReRRRSRTRRlRwtreverseR#R$R%R&R%R'(
RRkR R\R(R)R*R+R,Rx((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pytlasts(&

	cCsPt|t||}|rF|j}||krFt|gSntgS(sD``max(set)``
    Changeset with highest revision number in set.
    (RlRwRgR#(RRkR R*Ry((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pytmaxrev$scs8t|ddtd|j|jfdS(s4``merge()``
    Changeset is a merge changeset.
    ismerge takes no argumentscsj|ddkS(Nii(R
(RN(R(s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyRO6s(RhRRR|(RRkR ((Rs4/usr/lib/python2.7/dist-packages/mercurial/revset.pytmerge/s	cst|ddtd|j}|s2tgSt|dgt|x[|jddD]C}x:|j|D])}|kr|cd7<qqWqlW|jfdS(s?``branchpoint()``
    Changesets with more than one child.
    isbranchpoint takes no argumentststartics|dkS(Ni((RN(tbaserevtparentscount(s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyROGs(	RhRRR#RRQRR
R|(RRkR RRNRb((R2R3s4/usr/lib/python2.7/dist-packages/mercurial/revset.pytbranchpoint8s	
cCsPt|t||}|rF|j}||krFt|gSntgS(sC``min(set)``
    Changeset with lowest revision number in set.
    (RlRwRR#(RRkR R*Ry((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyRIscCs(t|td}t|||dS(s``modifies(pattern)``
    Changesets modifying files matched by pattern.

    The pattern without explicit kind like ``glob:`` is expected to be
    relative to the current directory and match against a file or a
    directory.
    smodifies requires a patterni(ReRR(RRkR R((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pytmodifiesTs	cst|ddtd}t|dtd}t|dkrY||jn9d|jj|}|dk	r|jj|n|jfdS(sZ``id(string)``
    Revision non-ambiguously specified by the given hex string prefix.
    isid requires one argumentisid requires a stringi(cs
|kS(N((RN(trn(s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyROpsN(	RhRReRQR,RRt
_partialmatchR|(RRkR R\Rztpm((R6s4/usr/lib/python2.7/dist-packages/mercurial/revset.pytnode_`scCs3t|ddtdtj|d}||@S(s:``obsolete()``
    Mutable changeset with a newer version.isobsolete takes no argumentstobsolete(RhRRR(RRkR t	obsoletes((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyR:rscs|dk	r-tt|j}ntt|j}fd}tg|D]}||^qd}|j|jS(s``origin([set])``
    Changesets that were specified as a source for the grafts, transplants or
    rebases that created the given revisions.  Omitting the optional set is the
    same as passing all().  If a changeset created by these operations is itself
    specified as a source for one of these operations, only the source changeset
    for the first operation is selected.
    csUt|}|dkrdSx/trPt|}|dkrG|S|}q"WdS(N(RsRR(R,Rtprev(R(s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyt	_firstsrcs	N(RRlRwRRR|R}(RRkR RR=RNto((Rs4/usr/lib/python2.7/dist-packages/mercurial/revset.pytoriginzs!%cCsVddl}t|ddtd}|rFt|dtdpId}|jj|p^d|pgd	}|j|\}}|j|||g\}}|rg|D]}	|j|	^q}n|j	|i|}
|jj
tj||
d
|}|jj
|j}tg|jD]}
|j|
^q(}|j|jS(s}``outgoing([path])``
    Changesets not found in the specified destination repository, or the
    default push location.
    iNiis"outgoing takes one or no argumentss#outgoing requires a repository pathRsdefault-pushRt	onlyheads(thgRhRRetuit
expandpathtparseurlt
addbranchrevsRZtpeert
pushbuffert	discoverytfindcommonoutgoingt	popbufferRRtmissingR,R|R}(RRkR RAR\tdesttbranchesRtcheckoutR,tothertoutgoingRRNR>((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyRPs%!%

	+cs|dkr8||jj|jfdSt}|j}x:t|t||D] }|j|j	|dqcW||@S(sS``p1([set])``
    First parent of changesets in set, or the working directory.
    cs
|kS(N((RN(Rb(s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyROsiN(
RRR,R|RRRlRwRR
(RRkR RRRN((Rbs4/usr/lib/python2.7/dist-packages/mercurial/revset.pyRs		cs|dkrd||j}y*|dj|jfdSWqdtk
r`tgSXnt}|j}x:t|t	||D] }|j
|j|dqW||@S(sT``p2([set])``
    Second parent of changesets in set, or the working directory.
    ics
|kS(N((RN(Rb(s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyROsN(RR-R,R|t
IndexErrorR#RRRlRwRR
(RRkR RRRN((Rbs4/usr/lib/python2.7/dist-packages/mercurial/revset.pytp2s
		cCs|dkr4td||jD}||@St}|j}x6t|t||D]}|j|j|q_W||@S(sg``parents([set])``
    The set of all parents for all changesets in set, or the working directory.
    css|]}|jVqdS(N(R,(RRb((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pys	<genexpr>sN(	RttupleR-RRRlRwRR
(RRkR RRRN((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyR-s 		cCsy)t|d}|dkr(tnWn,ttfk
rWtjtdnXt}|j}xt|t	||D]}|dkr|j
|q|dkr|j
|j|dq|dkr|j|}t|dkr|j
|dqqqW||@S(s``set^0``
    The set.
    ``set^1`` (or ``set^``), ``set^2``
    First or second parent, respectively, of all changesets in set.
    iiis^ expects a number 0, 1, or 2(iii(
RRRRSRTRRRRlR#RR
RQ(RRkR RzRRRNR-((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyt
parentspecs$
		cCs6yt|||SWntjk
r1tgSXdS(s&``present(set)``
    An empty set, if any revision in set isn't found; otherwise,
    all revisions in set.

    If any of specified revisions is not present in the local repository,
    the query is normally aborted. But this predicate allows the query
    to continue even in such cases.
    N(RlRSRqR#(RRkR ((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pytpresents	cs;t|ddtdj|jfdS(s+``public()``
    Changeset in public phase.ispublic takes no argumentscsj|tjkS(N(RRtpublic(RN(RR(s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyROs(RhRRR|(RRkR ((RRs4/usr/lib/python2.7/dist-packages/mercurial/revset.pyRVs	cCsddl}t|ddtd}d}t|dkr[t|dtd}n|dkrz|dj}nd}t|d	krt|d	td
}n|jj|pd}|j|\}}|j	|||g\}}	|r$g|D]}
|j
|
^q}n|j|i|}|j
|}||kr||j}
|
|krt
|
gSnt
gS(s``remote([id [,path]])``
    Local revision that corresponds to the given identifier in a
    remote repository, if present. Here, the '.' identifier is a
    synonym for the current local branch.
    iNiis%remote takes one, two or no argumentsRMsremote requires a string idRis!remote requires a repository pathR(RARhRRQReRRBRCRDRERZRFR,R#(RRkR RAR\tqRLRMRRNR,RORzRN((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pytremote
s,%cCs(t|td}t|||dS(s``removes(pattern)``
    Changesets which remove files matching pattern.

    The pattern without explicit kind like ``glob:`` is expected to be
    relative to the current directory and match against a file or a
    directory.
    sremoves requires a patterni(ReRR(RRkR R((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pytremoves-s	cst|ddtdy#ttdtdWn,ttfk
rltjtdnX|jfdS(sD``rev(number)``
    Revision with the given numeric identifier.
    isrev requires one argumentisrev requires a numbersrev expects a numbercs
|kS(N((RN(R\(s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyROEs(	RhRRReRRRSRTR|(RRkR ((R\s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyR,9s#c
st|ddtd}ttj|ddg}t|dkrwt|dtdj}ng}xq|D]i}|dkr|ddd	g7}q|d
kr|dd
g7}q|dkrd}n|j|qWt	|}d
|kr%d|kr%|j
d
ndddd	dd
dddd
g
fd}t|}|jd|gi
fdd6fdd6fdd	6fdd6fdd6fdd6fdd6fdd6fdd
6fdd
6}xU|D]M}	|j
|	d!}
|
d!krgtjtd|	nj|
q'Wfdfd }|j|S("s``matching(revision [, field])``
    Changesets in which a given set of fields match the set of fields in the
    selected revision or set.

    To match more than one field pass the list of fields to match separated
    by spaces (e.g. ``author description``).

    Valid fields are most regular revision fields and some special fields.

    Regular revision fields are ``description``, ``author``, ``branch``,
    ``date``, ``files``, ``phase``, ``parents``, ``substate``, ``user``
    and ``diff``.
    Note that ``author`` and ``user`` are synonyms. ``diff`` refers to the
    contents of the revision. Two revisions matching their ``diff`` will
    also match their ``files``.

    Special fields are ``summary`` and ``metadata``:
    ``summary`` matches the first line of the description.
    ``metadata`` is equivalent to matching ``description user date``
    (i.e. it matches the main metadata fields).

    ``metadata`` is the default field which is used when no fields are
    specified. You can match more than one field at a time.
    iismatching takes 1 or 2 argumentsitmetadatas1matching requires a string as its second argumentRRRtdiffRRtsummaryRR-Rtsubstatecs0yj|SWntk
r+tSXdS(N(tindexRRQ(R(t
fieldorder(s4/usr/lib/python2.7/dist-packages/mercurial/revset.pytfieldkeyfuncs
tkeycs|jS(N(R(RN(R(s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyROscs|jS(N(R(RN(R(s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyROscs|jS(N(R(RN(R(s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyROscs|jS(N(R(RN(R(s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyROscs|jS(N(R(RN(R(s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyROscs|jS(N(R-(RN(R(s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyROscs|jS(N(R(RN(R(s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyROscs|jS(N(R](RN(R(s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyROscs|jjdS(Ni(Rt
splitlines(RN(R(s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyROscst|jdtS(Ntgit(RHR[R(RN(R(s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyROss,unexpected field name passed to matching: %scsgD]}||^qS(N((RNR(t
getfieldfuncs(s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyROscsmxfD]^}|}t}x9tD]+\}}||||kr,t}q,q,W|rtSqWtS(N(Rt	enumerateR(R R,ttargetRRzR(RdtgetinfoR(s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyRs

N(RhRRlR#RRQReRXR%RtdiscardRHtsortRRRSRTR|(RRkR R\t	fieldlisttfieldsRR`t_funcstinfotgetfieldR((R_RdRgRRs4/usr/lib/python2.7/dist-packages/mercurial/revset.pytmatchingGsX	

	
cCs t|||}|j|S(s/``reverse(set)``
    Reverse order of set.
    (RlR-(RRkR R\((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyR-s
cCsit|t||j}tg|D]}||jkr(|^q(}t|||}||S(sJ``roots(set)``
    Changesets in set with no parent changeset in set.
    (RlRwRR#R(RRkR R^RNR((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyR's1cs;t|ddtdj|jfdS(s+``secret()``
    Changeset in secret phase.issecret takes no argumentscsj|tjkS(N(RRtsecret(R (RR(s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyROs(RhRRR|(RRkR ((RRs4/usr/lib/python2.7/dist-packages/mercurial/revset.pyRps	cCst|ddtd}d}t|dkrOt|dtd}n|d}|j}g}d}t|||}|dgkr|j|S|dgkr|jd	t|Sx|D]}||}	g}
x|D]}|dkr|
j|q|dkr)|
j|q|d
krK|
j|	j	q|dkrs|
j||	j	q|dkr|
j|	j
q|d
kr|
j||	j
q|dkr|
j|	jq|dkr|
j||	jq|dkr-|
j|	jdq|dkrT|
j|	jdqt
jtd|qW|
j||j|
qW|jtg|D]}
|
d^qS(s``sort(set[, [-]key...])``
    Sort set by keys. The default sort order is ascending, specify a key
    as ``-key`` to sort in descending order.

    The keys can be:

    - ``rev`` for the revision number,
    - ``branch`` for the branch name,
    - ``desc`` for the commit message (description),
    - ``user`` for user name (``author`` can be used as an alias),
    - ``date`` for the commit date
    iis"sort requires one or two argumentsR,ssort spec must be a stringicSsdjd|DS(NRcss%|]}tdt|VqdS(iN(tchrRV(RR]((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pys	<genexpr>s(tjoin(R^((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pytinvertss-revR-Rs-branchRs-descsuser authors
-user -authorRs-datesunknown sort key %ri(RhRRQReRXRlRiRR%RRRRRSRTR#(RRkR R\tkeysR^RsRRNR]Rtk((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyRisX
	





cCs|jdrn|d}ytj|}Wn/tjk
r]}tjtd|nXd||jfS|jdr|d}nd||jfS(s
    accepts a string, possibly starting with 're:' or 'literal:' prefix.
    returns the matcher name, pattern, and matcher function.
    missing or unknown prefixes are treated as literal matches.

    helper for tests:
    >>> def test(pattern, *tests):
    ...     kind, pattern, matcher = _stringmatcher(pattern)
    ...     return (kind, pattern, [bool(matcher(t)) for t in tests])

    exact matching (no prefix):
    >>> test('abcdefg', 'abc', 'def', 'abcdefg')
    ('literal', 'abcdefg', [False, False, True])

    regex matching ('re:' prefix)
    >>> test('re:a.+b', 'nomatch', 'fooadef', 'fooadefbar')
    ('re', 'a.+b', [False, False, True])

    force exact matches ('literal:' prefix)
    >>> test('literal:re:foobar', 'foobar', 're:foobar')
    ('literal', 're:foobar', [False, True])

    unknown prefixes are ignored and treated as literals
    >>> test('foo:bar', 'foo', 'bar', 'foo:bar')
    ('literal', 'foo:bar', [False, False, True])
    sre:isinvalid regular expression: %sR
sliteral:iR(RR
RRSRTRR
t__eq__(RtregexR((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyRs

cs@t\}}|dkr3fd}n||fS(NRcs
|kS(N((R^(R(s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyRO9s(R(RRR((Rs4/usr/lib/python2.7/dist-packages/mercurial/revset.pyR6scCsKt|ddtd}|j}|rt|dtd}t|\}}}|dkr|jjj|d}|dkrt	j
td|nt||jg}	qCtg|j
D]'\}
}||
r|j|^q}	n@tg|j
D]'\}
}|
dkr|j|^q}	||	@S(	s``tag([name])``
    The specified tag by name, or all tagged revisions if no name is given.

    If `name` starts with `re:`, the remainder of the name is treated as
    a regular expression. To match a tag that actually starts with `re:`,
    use the prefix `literal:`.
    iistag takes one or no argumentss$the argument to tag must be a stringRstag '%s' does not existttipN(RhRRReRt
_tagscachettagsRRRRRR,ttagslist(RRkR RRRRRttnR^R Rz((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyttag<s		
C@cCst|||S(N(R}(RRkR ((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyttaggedXscCs3t|ddtdtj|d}||@S(sH``unstable()``
    Non-obsolete changesets with obsolete ancestors.
    isunstable takes no argumentstunstable(RhRRR(RRkR t	unstables((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyR[scCst|||S(s``user(string)``
    User name contains string. The match is case-insensitive.

    If `string` starts with `re:`, the remainder of the string is treated as
    a regular expression. To match a user that actually contains `re:`, use
    the prefix `literal:`.
    (R(RRkR ((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyRescCst|d}|stgSg|jdD]}||j^q/}|j}tg|D]}||kra|^qaS(Nsinternal errort(ReR#RXR,R(RRkR R^RNR((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyt_listps
,cCs|t|d}|stgSg|jdD]}t|^q/}|j}tg|D]}||kr]|^q]S(Nsinternal errorR(ReR#RXRR(RRkR R^RNR((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyt_intlistys
(cCst|d}|stgS|j}g|jdD]}|jtj|^q8}|j}tg|D]}||krr|^qrS(Nsinternal errorR(ReR#RRXR,R	tbinR(RRkR R^RRNR((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyt_hexlists
	4RtallRRRRRRRRR4RRRRRRRRRRRRRRRpRRRRR	RRR(RtidR#R.RRRgR0RR5R:R?RPRRRR-RURVRXRYR,R-R'RiRpRoR}R~RRRRRc
Cs|dkrd|fSd}|r+d}n|d}|dkretd|dd|dff|S|dkrtd	d+|df|S|dkrtd	d,|df|S|dkrtdd-|df|S|dkrtd|dd.f|S|dkr3tddt|dtdf|S|dkrI||fS|dkr?t|dt\}}t|dt\}}d}t||}	|||r|	d	d/d|d|ddfffS|||r
|	d	d0d|d|ddfffS||kr,|	|||ffS|	|||ffS|dkrt|dt\}}t|dt\}}||kr||}}nt|||||ffS|dkrt|d|}
|
d||
dffS|dkr$t|d|}
|
d||
dffS|dkrAt|d|S|dkr|dkrd|df}|dddkrtd ||ddf|S|dddkrtd||ddf|Snt|d|\}}t|d|\}}|||||ffS|d	krt|dtd!}t|d|\}}|d"krld#}	ns|d$krd%}	n^|d&krd'}	nI|d(krd|}	n0|d)krd}	n|d*krd#}	nd}	|	|||d|ffSd|fS(1Niig?R8RCRAiR:R1RJRR<RR=R>RKt0R?RxR7R9scan't negate thatsstring symbol negatecSst|ddkost|dtddkos|ddkos|dddkost|ddtddkS(NiR1isnot a symbolRRA(ReR(Rtbases((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pytisonlyEs
RRHRER5R/s'dagrange range list parent ancestorspecRR;snot a symbols>author branch closed date desc file grep keyword outgoing useri
smodifies adds removesiRidR3sreverse limit firstRi(ssymbols	ancestors(ssymbolsdescendants(sstringR(sstringstip(ssymbolsonly(ssymbolsonly(RtoptimizeReRRRRRg(
R tsmallt
smallbonustoptwattatwbttbRtwR>tpostR((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyR(s
	
$$
	((!			
		t	_aliasargcCsFt|dkrB|d tkrB|dddkrB|ddSdS(scIf tree matches ('func', ('symbol', '_aliasarg'), ('string', X))
    return X, None otherwise.
    iiiRKiN(RQRR(ttree((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyt_getaliasargs"cCs{t|trwt|}|dk	rV|s:||krVtjtddnx|D]}t||q]WndS(sCheck tree contains no _aliasarg construct or only ones which
    value is in known. Used to avoid alias placeholders injection.
    snot a function: %sRN(t
isinstanceRSRRRSRTRt_checkaliasarg(RtknownRR ((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyRs
trevsetaliascBs&eZejdZdZdZRS(s^([^(]+)\(([^)]+)\)$cCs|jj|}|r|jd|_dd|jdff|_g|jdjdD]}|j^qa|_xE|jD]}|j|d|f}qWn||_d|f|_t	|\|_
}|t|krtj
td|nt|j
|jdS(	seAliases like:

        h = heads(default)
        b($1) = ancestors($1) - ancestors(default)
        iR1RJiRIs
_aliasarg(%r)s
invalid tokenN(tfuncreR
R/RRRXtstripRtreplacetparsetreplacementRQRSRTRR(tselfRRRyR RR[((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyt__init__s4 	N(t__name__t
__module__R
RRRRR(((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyRscCst|tr|r|ddkr{t|dkr{|d}|j|}|r{|jdkr{|j|kr{|Sn|ddkrt|dkr|dddkrt|ddkr|dd}|j|}|r|jdk	r|j|d kr|SqqndS(sRIf tree looks like an unexpanded alias, return it. Return None
    otherwise.
    iRJiiR1N(RRSRQRRRR(taliasesRRtalias((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyt	_getaliass"
$"*(
csU|st|tr|St|}|dk	r;|Stfd|DS(sgReplace _aliasarg instances with the substitution value of the
    same name in args, recursively.
    c3s|]}t|VqdS(N(t_expandargs(RR (R(s4/usr/lib/python2.7/dist-packages/mercurial/revset.pys	<genexpr>sN(RRSRR(RRR((Rs4/usr/lib/python2.7/dist-packages/mercurial/revset.pyRscst|ts|St|}|dk	rY|krYtjtd|jnj||jkrt	|j
|j<n|j}j|jdk	r{t
|d}t|t|jkr
tjtdt|ng|D]}t	|g^q}t|tt|j|}q{n"tfd|D}|S(sExpand aliases in tree, recursively.

    'aliases' is a dictionary mapping user defined aliases to
    revsetalias objects.
    s0infinite expansion of revset alias "%s" detectedisinvalid number of arguments: %sc3s$|]}t|VqdS(N(t_expandaliases(RR (Rtcachet	expanding(s4/usr/lib/python2.7/dist-packages/mercurial/revset.pys	<genexpr>sN(RRSRRRSRTRRR%RRR$RRfRQRtdicttzip(RRRRRRR\R((RRRs4/usr/lib/python2.7/dist-packages/mercurial/revset.pyRs.


('
cCs_t|i}x9|jdD](\}}t||}|||j<q Wt||giS(NR(RtconfigitemsRRR(RBRRRutvR((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pytfindaliasess
cCs%tjtt}|j|d|S(NRZ(tparserRctelementsR(tspecRZRb((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyRscs|stjtdnd}|r6|j}nt||\}|t|krxtjtd|n|rt|ntt	\}fd}|S(Nsempty querys
invalid tokencs8tj|dr"t||St|t|S(NR(RRjRlR#(RRk(R(s4/usr/lib/python2.7/dist-packages/mercurial/revset.pytmfuncs(
RSRTRRR}RRQRRR(RBRRRZR[tweightR((Rs4/usr/lib/python2.7/dist-packages/mercurial/revset.pyRscs@dfdfdd}d}d}x|t|kr;||}|dkr$|d7}||}|dkr||7}q.|dkr||||7}|d7}q.|d	kr|d7}||}|t|||7}|d7}q.tjd
|n
||7}|d7}q?W|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.

    >>> formatspec('%r:: and %lr', '10 or 11', ("this()", "that()"))
    '(10 or 11):: and ((this()) or (that()))'
    >>> formatspec('%d:: and not %d::', 10, 20)
    '10:: and not 20::'
    >>> formatspec('%ld or %ld', [], [1])
    "_list('') or 1"
    >>> formatspec('keyword(%s)', 'foo\xe9')
    "keyword('foo\\xe9')"
    >>> b = lambda: 'default'
    >>> b.branch = b
    >>> formatspec('branch(%b)', b)
    "branch('default')"
    >>> formatspec('root(%ls)', ['a', 'b', 'c', 'd'])
    "root(_list('a\x00b\x00c\x00d'))"
    cSstt|S(N(treprtstr(R^((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pytquote3scs|dkrtt|S|dkr2|S|dkrPt|d|S|dkrotj|S|dkr|jSdS(NR_R^RNs(%s)RzR(RRRR	thexR(R]R(R(s4/usr/lib/python2.7/dist-packages/mercurial/revset.pytargtype6s

cst|}|dkrdS|dkr9||dS|dkr`ddjd|DS|dkr}d	dj|S|d
krddjd|DS|d
krd	djd|DS|d}d|| ||||fS(Nis	_list('')iR_s_intlist('%s')Rcss!|]}tt|VqdS(N(RR(RR((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pys	<genexpr>JsR^s_list('%s')Rzs_hexlist('%s')css|]}tj|VqdS(N(R	R(RR((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pys	<genexpr>NsRcss|]}|jVqdS(N(R(RR((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pys	<genexpr>Psis
(%s or %s)(RQRr(R^R R\Ry(Rtlistexp(s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyRCs
Rit%itdsnbrR\s&unexpected revspec format character %s(RQRHRR(texprRtretR[RR]R_((RRRs4/usr/lib/python2.7/dist-packages/mercurial/revset.pyt
formatspecs2!	









csBfdg}|d|djd|D}|S(Ncst|ts |ddkr<|j|t|fnk|j|d|dfx&|dD]}||d|qbW|dd|dddfg|d)dS(	NiRKRJs(%siiR0(sstringssymbol(RRSR%R(RtleveltlinesR^(t
_prettyformat(s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyRqs is
css#|]\}}d||VqdS(s  N((RR\R^((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pys	<genexpr>|s(Rr(RRtoutput((Rs4/usr/lib/python2.7/dist-packages/mercurial/revset.pytprettyformatps
	cCs.t|tr&ttt|dSdSdS(Nii(RRSRgtmaptdepth(R((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyRscCst|ts |ddkr'tSt}x"|dD]}|t|O}q;W|ddkr}|j|ddn|SdS(NiRKRJiR1(sstringssymbol(RRSRt	funcsusedR(RtfuncsR^((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyRs 	R#cBseZdZddZdZdZdZdZdZe	j
dZdZd	Z
d
ZdZdZd
ZRS(sBasic data structure that represents a revset and contains the basic
    operation that it should be able to perform.

    Every method in this class should be implemented by any smartset class.
    cCs#tt|j|d|_dS(N(tsuperR#RRt_set(Rtdata((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyRscCs|jdS(seSorts the set in ascending order (in place).

        This is part of the mandatory API for smartset.N(Ri(R((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyRscCs|jdtdS(sfSorts the set in descending order (in place).

        This is part of the mandatory API for smartset.R-N(RiR(R((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyRscCs
t|S(N(R(R((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyRscCs
t|S(N(Rg(R((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyRgscCs"|jst||_n|jS(sReturns a set or a smartset containing all the elements.

        The returned structure should be the fastest option for membership
        testing.

        This is part of the mandatory API for smartset.(RR(R((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyRs	cCs
|jjS(N(RR}(R((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyR}scsZttrDjtg|D]}|kr%|^q%S|jfdS(s{Returns a new object with the substraction of the two collections.

        This is part of the mandatory API for smartset.cs
|kS(N((R (RO(s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyROs(RR#RR|(RROR ((ROs4/usr/lib/python2.7/dist-packages/mercurial/revset.pyt__sub__s)cCsGt|tr|j}ntg|D]}||kr(|^q(S(s{Returns a new object with the intersection of the two collections.

        This is part of the mandatory API for smartset.(RR#R(RRORx((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyt__and__scCsE|j}g|D]}||kr|^q}tt||S(stReturns a new object with the union of the two collections.

        This is part of the mandatory API for smartset.(RR#RH(RROR^RNR\((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyt__add__s%cCstS(syReturns True if the collection is ascending order, False if not.

        This is part of the mandatory API for smartset.(R(R((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pytisascendingscCstS(szReturns True if the collection is descending order, False if not.

        This is part of the mandatory API for smartset.(R(R((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pytisdescendingscCs
t||S(sReturns this smartset filtered by condition as a new smartset.

        `condition` is a callable which takes a revision number and returns a
        boolean.

        This is part of the mandatory API for smartset.(R(Rt	condition((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyR|s((RRt__doc__RRRRRgRRt
propertycacheR}RRRRRR|(((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyR#s						
				t_orderedsetmixincBs2eZdZdZdZdZdZRS(sMixin class with utility methods for smartsets

    This should be extended by smartsets which have the isascending(),
    isdescending() and reverse() methodscCs"x|D]}|SWtddS(s$return the first revision in the setsarg is an empty sequenceN(R(RRN((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyt_firsts
cCs$|j|j}|j|S(s#return the last revision in the set(R-R(RRy((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyt_lasts

cCs |jr|jS|jS(s&return the smallest element in the set(RRR(R((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyR	s
cCs |jr|jS|jS(s%return the largest element in the set(RRR(R((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyRg	s
(RRRRRRRg(((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyRs
			RcBseZdZddZdZdZdZdZdZdZ	d	Z
d
ZdZdZ
d
ZdZedZdZdZdZdZdZRS(sDuck type for baseset class which iterates lazily over the revisions in
    the subset and contains a function which tests for membership in the
    revset
    cCstS(N(R(R ((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyRO	scCs||_||_i|_dS(s
        condition: a function that decide whether a revision in the subset
                   belongs to the revset or not.
        N(t_subsett
_conditiont_cache(RRkR((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyR	s		cCs|jjdS(N(RRi(R((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyR	scCs|jjdtdS(NR-(RRiR(R((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyR	scCs
t|S(N(R(R((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyR 	scCs
t|S(N(Rg(R((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyRg#	scCsB|j}||kr:||jko0|j|||<n||S(N(RRR(RR R]((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyR}&	s	%ccs5|j}x%|jD]}||r|VqqWdS(N(RR(RtcondR ((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyt__iter__,	s	cCst||jS(N(RR}(RR ((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyR2	scst|fdS(Ncs
|kS(N((RN(R (s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyRO6	s(R(RR ((R s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyR5	scCs
t||S(N(t_addset(RR ((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyR8	scCsx|D]}tSWtS(N(RR(RRN((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyt__nonzero__;	s
cCs)tg|D]}|^q
}t|S(N(R#RQ(RRNR\((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyt__len__@	scCs'tg|D]}|^q
}||S(N(R#(RR RNR\((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyt__getitem__E	scCsAtj|jds*t|j|_n|jjd|dS(NRiR-(RRjRR#Ri(RR-((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyRiJ	scCs|jjdS(N(RR-(R((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyR-O	scCstg|D]}|^q
S(N(R(RRN((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyRR	scCstS(N(R(R((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyRU	scCstS(N(R(R((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyRX	scCs
t||S(N(R(RR\((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyR|[	s(RRRRRRRRgR}RRRRRRRRRiR-RRRR|(((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyR	s(																	RcBsweZdZedZdZdZdZdZdZ	dZ
edZd	Z
d
ZdZRS(sYSubclass of lazyset which subset can be ordered either ascending or
    descendingly
    cCs&tt|j||||_dS(N(RRRt
_ascending(RRkRR((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyRb	scCst||d|jS(NR(RR(RR\((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyR|f	scCs|js|jndS(N(RR-(R((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyRi	s	cCs|jr|jndS(N(RR-(R((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyRm	s	cCst||jd|jS(NR(RR}R(RR ((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyRq	scst|fdd|jS(Ncs
|kS(N((RN(R (s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyROv	sR(RR(RR ((R s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyRu	scCs`i}|jr+|jr+t|d<n|jrP|jrPt|d<nt|||S(NR(RRRRR(RR tkwargs((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyRy	s

cCsU|r(|jrG|jjd|qGn|jsG|jjd|n||_dS(NR-(RRRi(RR-((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyRi	s		cCs|jS(N(R(R((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyR	scCs|jS(N(R(R((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyR	scCs|jj|j|_dS(N(RR-R(R((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyR-	s
(RRRRRR|RRRRRRRiRRR-(((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyR^	s									RcBseZdZddZdZejdZdZ	dZ
dZdZdZ
d	Zd
ZdZdZd
ZedZdZdZdZRS(sRepresent the addition of two sets

    Wrapper structure for lazily adding two structures without losing much
    performance on the __contains__ method

    If the ascending attribute is set, that means the two structures are
    ordered in either an ascending or descending way. Therefore, we can add
    them maintaining the order by iterating over both at the same time

    This class does not duck-type baseset and it's only supposed to be used
    internally
    cCs1||_||_d|_||_d|_dS(N(t_r1t_r2Rt_iterRt_genlist(Rtrevs1trevs2R((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyR	s
				cCs
t|jS(N(RQR(R((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyR	scCs(|js!t|j|_n|jS(N(RR#t	_iterator(R((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyR	s	cCs2|jdk	r%t||d|jSt||S(NR(RRRR(RR((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyR|	scCs?|jdkr%|jt|_n|js;|jndS(N(RRRiRR-(R((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyR	s

	cCsE|jdkr+|jdtt|_n|jrA|jndS(NR-(RRRiRRR-(R((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyR	s
	cCs;|j}|jdk	r.t||d|jSt||S(NR(R}RRRR(RROt
filterfunc((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyR	s	csAfd}|jdk	r4t||d|jSt||S(Ncs
|kS(N((RN(RO(s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyRO	sR(RRRR(RROR((ROs4/usr/lib/python2.7/dist-packages/mercurial/revset.pyR	scCsri}|jdk	rb|jr:|jr:t|d<n|jrb|jrbt|d<qbnt|||S(sNWhen both collections are ascending or descending, preserve the order
        RN(RRRRRRR(RROR((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyR	s
cs4js-fd}t|_njS(sIterate over both collections without repeating elements

        If the ascending attribute is not set, iterate over the first one and
        then over the second one checking for membership on the first one so we
        dont yield any duplicates.

        If the ascending attribute is set, iterate over both collections at the
        same time, yielding only one value at a time in the given order.
        c
3sjdkrbxjD]}|VqWjj}xMjD]}||krA|VqAqAWn%tj}tj}d}d}t}jrt}nyx~tr'|dkr|j	}n|dkr|j	}n|||}|V||krd}n||krd}qqWWn[t
k
r|}|dk	rY|V|}n|dk	rm|Vnx|D]}	|	VqtWnXdS(N(RRRRRR$RgRRR&R'(
RNR^titer1titer2tval1tval2tchoiceR&R,tval(R(s4/usr/lib/python2.7/dist-packages/mercurial/revset.pytgen	sF					
	
(Rt
_generatorset(RR((Rs4/usr/lib/python2.7/dist-packages/mercurial/revset.pyR	s
	,cCs&|jrt|jSt|jS(N(RR$R(R((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyR
s	
cCs||jkp||jkS(N(RR(RR ((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyR}
scCs|S(N((R((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyR 
scCs[|jdkr/|jjd|||_n(t|jt|krW|jndS(sSort the added set

        For this we use the cached list with all the generated values and if we
        know they are ascending or descending we can sort them in a smart way.
        R-N(RRRRitboolR-(RR-((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyRi#
s

cCs|jdk	o|jS(N(RR(R((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyR0
scCs|jdk	o|jS(N(RR(R((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyR3
scCs0|jj|jdk	r,|j|_ndS(N(RR-RR(R((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyR-6
s
N(RRRRRRRRRR|RRRRRRRR}RRRiRRR-(((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyR	s$								;			
		RcBsGeZdZdZdZdZdZdZedZ	RS(sWrap a generator for lazy iteration

    Wrapper structure for generators that provides lazy membership and can
    be iterated more than once.
    When asked for membership it generates values until either it finds the
    requested one or has gone through all the elements in the generator

    This class does not duck-type baseset and it's only supposed to be used
    internally
    cCs.||_i|_tg|_t|_dS(sM
        gen: a generator producing the values for the generatorset.
        N(t_genRR#RRt	_finished(RR((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyRF
s		cCsR||jkr|j|Sx$|jD]}||kr'tSq'Wt|j|<tS(N(Rt_consumegenRR(RR R\((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyR}O
s
ccs|jr&x|jD]}|VqWdSd}|j}|j}x=tr|t|krh||Vn|jV|d7}qDWdS(Nii(RRRRRQR&(RR Rtgenlisttconsume((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyR[
s				ccsCx3|jD](}t|j|<|jj||Vq
Wt|_dS(N(RRRRR%R(Rtitem((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyRk
s

	cCs|S(N((R((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyRr
scCs7|js x|D]	}qqWn|jjd|dS(NR-(RRRi(RR-R((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyRiu
s	

(
RRRRR}RRRRRi(((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyR;
s
						R!cBseZdZdZRS(s/Wrap a generator of ascending elements for lazy iteration

    Same structure as _generatorset but stops iterating after it goes past
    the value when asked for membership and the element is not contained

    This class does not duck-type baseset and it's only supposed to be used
    internally
    cCsb||jkr|j|Sx4|jD]&}||kr=tS||kr'Pq'q'Wt|j|<tS(N(RRRR(RR R\((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyR}
s
(RRRR}(((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyR!{
sRcBseZdZdZRS(s0Wrap a generator of descending elements for lazy iteration

    Same structure as _generatorset but stops iterating after it goes past
    the value when asked for membership and the element is not contained

    This class does not duck-type baseset and it's only supposed to be used
    internally
    cCsb||jkr|j|Sx4|jD]&}||kr=tS||kr'Pq'q'Wt|j|<tS(N(RRRR(RR R\((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyR}
s
(RRRR}(((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyR
sRwcBseZdZdddZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dZed
ZdZdZdZdZdZRS(s\Duck type for baseset class which represents a range of revisions and
    can work lazily and without having all the range in memory

    Note that spanset(x, y) behave almost like xrange(x, y) except for two
    notable points:
    - when x < y it will be automatically descending,
    - revision filtered with this repoview will be skipped.

    icCsC||_|dk	r!||_nt||_|jj|_dS(s
        start: first revision included the set
               (default to 0)
        end:   first revision excluded (last+1)
               (default to len(repo)

        Spanset will be descending if `end` < `start`.
        N(t_startRt_endRQRtfilteredrevst_hiddenrevs(RRR1RL((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyR
s
		cCs#|j|jkr|jndS(N(RRR-(R((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyR
scCs#|j|jkr|jndS(N(RRR-(R((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyR
sccs|j|jkr*t|j|j}nt|j|jd}|jr||j}x;|D]}||kr[|Vq[q[Wnx|D]}|VqWdS(Ni(RRR%R(Rt	iterrangeR^RN((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyR
s		

cCs[|j|ko|jknsD|j|ko?|jknoZ|joY||jkS(N(RRR(RR,((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyR}
s""cCsx|D]}tSWtS(N(RR(RRN((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyR
s
cCsZt|tr|j}n|j|jkr@t||jSt||jdtSdS(NR(RR#RRRRR}R(RR ((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyR
s
csfttrjn|j|jkrFt|fdSt|fddtSdS(Ncs
|kS(N((RN(R (s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyRO
scs
|kS(N((RN(R (s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyRO
sR(RR#RRRRR(RR ((R s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyR
s
cCs`i}|jr+|jr+t|d<n|jrP|jrPt|d<nt|||S(NR(RRRRR(RR R((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyR
s

cCs|jst|j|jSd}|j}|j}xV|jD]K}||ko\|kns}||kox|knr?|d7}q?q?Wt|j|j|SdS(Nii(RtabsRR(RtcountR1RLR,((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyR
s			8cCs'tg|D]}|^q
}||S(N(R#(RR RNR\((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyRscCs/t||j|jkkr+|jndS(N(RRRR-(RR-((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyRi
scCs[|j|jkr6|jd|jd|_|_n!|jd|jd|_|_dS(Ni(RR(R((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyR-s$cCs|S(N((R((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyRscCs|j|jkS(N(RR(R((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyRscCs|j|jkS(N(RR(R((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyRscCs6|j|jkrt||St||dtSdS(NR(RRRR(RR\((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyR|!s
N(RRRRRRRRR}RRRRRRRRiR-RRRR|(((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyRw
s$															(sgroupiR0(sfunciR0(sancestori(sparenti(s
parentposti(snegatei(sminusi(sdagrangeprei(sdagrangei(sdagrangeposti(sdagrangeprei(sdagrangei(sdagrangeposti(srangeprei(srangei(s	rangeposti(snoti
(snoti
(sandi(sandi(sori(sori(sori(slisti(iNN(ssymbol(sstring(iNN(ssymbols	_aliasarg(R
RRRSRHRRR	RRRR3Rti18nRRR:RRRRR"R.RRRRWRcReRfRhRlRsRtRvR{R;RRRRR1RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRpRRRRR	RRRRRR(RR#RR.R/R0R4RR5R9R?RPRRRR-RTRURVRXRYR,RoR-R'RpRiRRR}R~RRRRRRutsafesymbolsRiRRRRtobjectRRRRRRRRRRRHR#RRRRRR!RRwRt
i18nfunctions(((s4/usr/lib/python2.7/dist-packages/mercurial/revset.pyt<module>sZH				
	



U																									&												
			,							!						@	
																								#			p					?	'				
							

	]					 		^			]R6@

Copyright © 2017 || Recoded By Mr.Bumblebee