^c6)ddlmZddlmZddlmZmZmZdZdZdZ dZ dd d d d d d d d d ddddddZ hdZ iZ dZdZdZdZdZdZdZdZdZdZdZdZd Zd!Zd"Zd#Zd$Zd%Zd&S)')_)getattr)errorparserpycompatg? 2)N)groupr))funcrr N)NN)kindpatrN)N)negate)minusrN)r N)notr NN)rNN)andrN)NN)orrN)NN)listrN)NNNN)rsymbolNNN)rstringNNN)(:-r!r&r|+,r rrend>rrrs .*{}[]?/\_c#Kdt|}}tj|}||kr||}|rn|dvr |d|fVnu|dvs|dkr|||dzdvr|dkr|dz }||}d}n tj}|dz }|}||kr>||}|d kr|dz }||krd |||||fVn-|dz }||k>t jtd |n| s|tvst|d kry|}|dz }||krD||}| s|tvst|d ksn |dz }||kD|||}|tvr|d|fVnd ||fV|dz}n"t jtd||dz }||kdd|fVdS)Nrs (),-:|&+!s"'rr)sr'sr"rc|SNxs 7/usr/lib/python3/dist-packages/mercurial/filesetlang.pyztokenize..Cs1\rsunterminated stringrs syntax errorr&) lenrbytestrisspacer unescapestrr ParseErrorrisalnum globcharsordkeywords)programposlcdecodesdsyms r.tokenizerD2sy G Cw''G '' CL 99;;, <  ,  dC. KKDyycAg &.88DyyqCL$+ 1HCA''CL::1HC66$ffWQsU^&<&s r.getargsr_s@ A 1vv||s1vv||s### Hr0c||S|d}|dvr|S|dkr5t|dt|d}||d|fS|dkrt|dS|dkr!tjt d|d krt|d}||fS|d kr/t|d}t|d}|||fS|d kr td |dd |dffS|d vr't d |ddD}|f|zS|dkr5t|dt|d}||d|fStjd|z)Nrrrrrrr rs)can't use negate operator in this contextrrrrrc34K|]}t|VdSr*)_analyze.0rRs r. z_analyze..s(..18A;;......r0rinvalid operator %r)rMrdrr7rtupleProgrammingError)r-opttatbtss r.rdrdsy 1B ### Z!A$ QqTNNAaD!} X~~!~~ Yq!MNNOOO V|| QqTNNAw V|| ad^^ ad^^B| X~~1!~6777  ..!""... . .urz W}}!A$ ad^^AaD"~  !7"!< = ==r0c|d|fS|d}|dvrd|fS|dkrt|d\}}|||ffS|dkr_t|d\}}t|d\}}||z}|r!|r|d |||fd d |fffS||||ffS|d krstd |ddD\} } t| d}td| Ddkr |d |f| zd d |fffS||f| zfS|dkr4td|ddD\} } t| d|f| zfS|dkrvt |d} t|d\}}t t | ddr| fd ||d|fd | fffSd||d|ffStj d|z)amInsert hint nodes where status should be calculated (first path) This works in bottom-up way, summing up status names and inserting hint nodes at 'and' and 'or' as needed. Thus redundant hint nodes may be left. Returns (status-names, new-tree) at the given subtree, where status-names is a sum of status names referenced in the given subtree. Nr+rrrrrrrr withstatusr rc34K|]}t|VdSr*_insertstatushintsres r.rgz%_insertstatushints..+<<)!,,<<<<<.s(##1tAww######r0rc34K|]}t|VdSr*rures r.rgz%_insertstatushints..rwr0r _callstatusFrh) rvjoinzipsumrMrsymbolsgetrrj) r-rkrzrlharmhbrnhrhsrofs r.rvrvsV y1u 1B ///1u  V||!!A$''12q'z V||#AaD))B#AaD))B "W  Q" Q B|i25OPP PBB< U{{<>=% 8 8 I4-"adB)QHH HB!b>!!  !7"!< = ==r0c.||S|d}|dkr:rt|dSt|dd}|||dfS|dvr|S|d krt|d}||fS|d kr1t|d}t|d}|||fS|d vr)tfd |ddD}|f|zS|d kr"t|dd}||d|fStjd|z)zsRemove redundant status hint nodes (second path) This is the top-down path to eliminate inner hint nodes. NrrrrTinstatusrrqrrrbc38K|]}t|VdSr*)_mergestatushints)rfrRrs r.rgz$_mergestatushints..s.AAa$Q11AAAAAAr0rFrh)rrirrj)r-rrkrlrmrnros ` r.rrs^  y 1B ]  5$QqT844 4 adT 2 2 2Aqt} /// V|| adH - -Aw V|| qtX . . qtX . .B|  AAAA1QRR5AAA A Aurz W}} qte 4 4 4AaD"~  !7"!< = ==r0cft|}t|\}}t|dS)zTransform raw parsed tree to evaluatable tree which can be fed to optimize() or getmatch() All pseudo operations should be mapped to real operations or functions defined in methods or symbols table respectively. Fr)rdrvr)r-rl_hs r.analyzer s3  A q ! !EB Q / / //r0c>||ddkr d||dfS|||fS)Nrrrrr+)rkrmrns r._optimizeandopsrs0 ~"Q%6//"be$$ B<r0c^ggg}}}|D]`}t|\}}| |ddvr||6||||a|r?|t|dt|z||fS)Nrrq)spatterns) _optimizeappendWEIGHT_CHECK_FILENAMEri)xswsrossr-wrls r._optimizeunionrsRBB ||1 =QqT%GGG IIaLLL  !  !  . '((( .599,--- r6Mr0c |d|fS|d}|dkr%t|d\}}||||dffS|dvr t|fS|dkr%t|d\}}|||d|ffS|dkrt|d\}}|||ffS|dkr\t|d\}}t|d\}}||kr|t|||fS|t|||fS|d krt|dd\ }t |dkr d|dfSt d t t| fd  D}t |f|zfS|d kr3td|ddD\ }t |f|zfS|dkrft|d} tt| dd}t|d\}}||z||d|ffStjd|z)Nrrrrrrarrrrc3&K|] }|dV dS)rNr+)rfits r.rgz_optimize..Fs7  BqE      r0c |dS)Nrr+)rrs r.r/z_optimize..GsBqEr0)keyrc34K|]}t|VdSr*rres r.rgz_optimize..Ks(33y||333333r0r_weightrh)rrrrr3risorted enumerater^r~rrMrrrrrj) r-rkrrlwarmwbrnrorrs @r.rr+sy!t 1B ]112q!A$- ###$a'' Z112qtQ- V||112q'z V||1Q4B1Q4B 88r2r222 2r2r222 2 U{{!""&&B r77a<<a5"Q%<    "9R==6J6J6J6JKKK     2ww "" W}}33QqrrU3334B2ww "" W}} adOO GKKNNIq 1 11Q4B2vAaD"~%%  !7"!< = ==r0c*t|\}}|S)zsReorder/rewrite evaluatable tree for optimization All pseudo operations should be transformed beforehand. r)r-_wrls r.optimizerUs aLLEB Hr0c,tj|dS)N)rr)r prettyformat)rKs r.rr^s  t%; < <rs  D 2 9 0 . . , , + + - %// '!  & # " "   333l;;;///    """    >>>D)>)>)>X>>>D 0 0 0    '>'>'>T   =====r0