^cJ ddlZddlmZddlmZddlmZmZmZ m Z mZm Z m Z mZddlmZejZejZejZejZejZejZejZejZejZdZdZ d Z!d Z"d Z#d Z$d Z%dZ&dZ'dZ(dZ)ej*Z*e j+e*Z,e,ddedZ-e,ddedZ.e,ddedZ/e,ddedZ0e,ddedZ1e,ddedZ2e,d ded!Z3e,d"ded#Z4e,d$d%Z5e,d&e'd(Z6e,d)d*Z7e,d+d,Z8e,d-e'd.Z9e,d/e'd0Z:e,d1e'd2Z;e,d3e'd4Z<e,d5e'd6Z=d7Z>d8Z?e,d9e'd:Z@e,d;e'd<ZAe,d=e'd>ZBe,d?d@ZCe,dAe'dBZDe,dCe'dDZEe,dEdFZFe e!e!e"e#e$e%e'e(e&e)dG ZGGdHdIZHdLdJZdKZIe*JZKdS)MN)_getattr)error filesetlangmatch mergestatepycompat registrarscmutilutil) stringutilc|s!tjtdt|d|g|ddRS)Nsmissing argumentrr)r ParseErrorrmethodsmctxxs 3/usr/lib/python3/dist-packages/mercurial/fileset.pygetmatchr'sJ 7q!455666 1Q4= &!"" & & &&ctt|d}t|||S)Nsstatus hint must be a string)set getstringsplitr withstatus)rrhintkeyss rgetmatchwithstatusr -sB y>??EEGG H HD DOOD))1 - --rc.||gSN)matcherrs r stringmatchr$2s <<  rc pt|t||tjt dS)Npattern must be a string)r$ _getkindpatmatchmodallpatternkindsr)rrys r kindpatmatchr+6s9   q(*A.I,J,J    rcbtjfd|D}||S)Nc Lg|] }t|td!S)r&) getpatternr).0rallkindss r z!patternsmatch..As;DE 1h"= > >??r)r(r)r#)rxspatternsr0s @r patternsmatchr4?sG'HIKH << ! !!rct||}t|||}tj||Sr")rnarrowedr(intersectmatchersrrr*xmyms randmatchr;G? $  B $--##Q ' 'B  %b" - --rcHfd|D}tj|S)Nc0g|]}t|S)r)r/rrs rr1zormatch..Ns# ( ( ((4   ( ( (r)r( unionmatcher)rr2mss` rormatchrBMs- ( ( ( (R ( ( (B   $ $$rc\t|||fddfS)Nc| Sr"r?)fms rznotmatch..Ts!Hrspredrepr)r predicate)rrrFs @rnotmatchrKRs7qA >>,,,, Q7G> H HHrct||}t|||}tj||Sr")rr6r(differencematcherr8s r minusmatchrNWr<rcbtjtdtd)Ns can't use a list in this contextssee 'hg help "filesets.x or y"')r)rrr)rr2s r listmatchrP]s4   -.. 3 4 4   rct|}|tvrt|||SdfdtD}tj||)Nc(t|ddduS)N__doc__r)fns rrGzfunc..isgb)T22$>rc0g|]\}}||Sr?r?)r/srTkeeps rr1zfunc..ks* 9 9 9'1bR 9A 9 9 9r) getsymbolsymbolsitemsrUnknownIdentifier)rabfuncnamesymsrWs @rfuncr`dsj||H7x q))) > >D 9 9 9 9W]]__ 9 9 9D  !(D 1 11rs modified()T) callstatusweightct|ddtdt|j}||jdS)z0File that is modified according to :hg:`status`.rsmodified takes no argumentssmodifiedrH)getargsrrstatusmodifiedrJ __contains__rrrVs rrfrfysQ Aq!Q566777 DKKMM "##A >>!.;> ? ??rsadded()ct|ddtdt|j}||jdS)z-File that is added according to :hg:`status`.rsadded takes no argumentssaddedrH)rdrrreaddedrJrgrhs rrjrjQ Aq!Q233444 DKKMM   A >>!.8> < <>!.:> > >>rs deleted()ct|ddtdt|j}||jdS)zAlias for ``missing()``.rsdeleted takes no argumentsdeletedrHrdrrredeletedrJrgrhs rrrrrrnrs missing()ct|ddtdt|j}||jdS)z/File that is missing according to :hg:`status`.rsmissing takes no argumentsrprHrqrhs rmissingrtrnrs unknown()ct|ddtdt|j}||jdS)z/File that is unknown according to :hg:`status`.rsunknown takes no argumentsunknownrH)rdrrreunknownrJrgrhs rrwrwrnrs ignored()ct|ddtdt|j}||jdS)z/File that is ignored according to :hg:`status`.rsignored takes no argumentsignoredrH)rdrrreignoredrJrgrhs rrzrzrnrsclean()ct|ddtdt|j}||jdS)z-File that is clean according to :hg:`status`.rsclean takes no argumentscleanrH)rdrrrecleanrJrgrhs rr}r}rkrs tracked()ct|ddtd||jjdS)z%File that is under Mercurial control.rstracked takes no argumentsstrackedrH)rdrrJctxrgrs rtrackedrs< Aq!Q455666 >>$(/*> E EErsbinary())rbcrt|ddtd|dddS)z4File that appears to be binary (contains NUL bytes).rsbinary takes no argumentsc*|Sr")isbinary)fctxs rrGzbinary..sT]]__rsbinaryTrIcacherdr fpredicaters rbinaryrsF Aq!Q344555 ??$$y   rsexec()ct|ddtd|j|fddS)z"File that is marked as executable.rsexec takes no argumentsc6|dkS)NxflagsrErs rrGzexec_..CIIaLLD$8rsexecrHrdrrrJrrrs @rexec_rsI Aq!Q122333 (C >>88887> K KKrs symlink()ct|ddtd|j|fddS)z!File that is marked as a symlink.rssymlink takes no argumentsc6|dkS)Nlrrs rrGzsymlink..rrssymlinkrHrrs @rsymlinkrsI Aq!Q455666 (C >>8888:> N NNrs resolved()c<t|ddtd|j|St j|j| fddS)z;File that is marked resolved according to :hg:`resolve -l`.rsresolved takes no argumentsNc$|vo |dkS)Nrr?rErAs rrGzresolved..!r'+betmrsresolvedrH rdrrrevnever mergestatemodr readreporJrrrAs @rresolvedrs Aq!Q566777 x||~~!zz||  ! & &tx}} 7 7B >>++++k   rs unresolved()c<t|ddtd|j|St j|j| fddS)z=File that is marked unresolved according to :hg:`resolve -l`.rsunresolved takes no argumentsNc$|vo |dkS)Nur?rs rrGzunresolved..rrs unresolvedrHrrs @r unresolvedrs Aq!Q788999 x||~~!zz||  ! & &tx}} 7 7B >>++++m   rs hgignore()ct|ddtd|jjjS)z/File that matches the active .hgignore pattern.rshgignore takes no arguments)rdrrrdirstate_ignorers rhgignorers7 Aq!Q566777 8==?? # ++rs portable()cpt|ddtd|ddS)z^File that has a portable name. (This doesn't include filenames with case collisions.) rsportable takes no argumentsc.tj|duSr")rcheckwinfilename)rEs rrGzportable..s$'**d2rsportablerH)rdrrJrs rportablersD  Aq!Q566777 >>22[   rs grep(regex)cD tjt|tdnM#tj$r;}t jtdt j|zd}~wwxYw|fddj fdS)z+File contains the given regular expression.sgrep requires a patternsinvalid match pattern: %sNcR|Sr")searchdata)rrs rrGzgrep..sQXXdiikk**rsgrep(%r)Tr) recompilerrrrr forcebytestrrpattern)rrers @rgreprs JyA&@$A$ABB C C 8    * + +j.Ea.H.H H     ??****qy)   s/3A=6A88A=c |}tjD]\}}||rs|dt | }d}d|vr.|dt |ddzz}tt||z|zdz cSt|S#t$r%tj td|zwxYw)Ng?. rscouldn't parse size: %s) striplowerr _sizeunitsendswithlenrintfloat ValueErrorrrr)rVkvnincs r _sizetomaxr$s B GGIIOO  O 5 5DAqzz!}} 5iQiL1992QWWT]]1%5!6!666CE!HHsNa/0014444  51vv BBBq!;<CC/Dc|}d|vrG|dd\tjtjfdS|dr!tj|ddfdS|dr!tj|ddfd S|d r!tj|ddfd S|d r!tj|ddfd Stj|t |fdS)z>Return a function(size) -> bool from the ``size()`` expression-rc|ko|kSr"r?rr\r]s rrGzsizematcher..<a*AFrs<=Nc|kSr"r?rr\s rrGzsizematcher..? ar.B Qrs>=c|kSr"r?rs rrGzsizematcher..Err>c|kSr"r?rs rrGzsizematcher..Hrrc|ko|kSr"r?rs rrGzsizematcher..Lrr)rrr sizetoint startswithr)exprr\r]s @@r sizematcherr5sq ::<= .5MB') - files at least 524288 bytes - size('4k - 1MB') - files from 4096 bytes to 1048576 bytes ssize requires an expressionc>|Sr")size)rrFs rrGzsize..\sQQtyy{{^^rssize(%r)Tr)rrrr)rrrrFs @rrrOsZ Q899 : :DDA ??####{D.A   rsencoding(name)c|t|tdfd}||dfdS)zFile can be successfully decoded with the given character encoding. May not be useful for encodings other than ASCII and UTF-8. s"encoding requires an encoding namec|} |tjdS#t$r%t jtdzt$rYdSwxYw)NTsunknown encoding '%s'F) rdecoder sysstr LookupErrorrAbortrUnicodeDecodeErrorrdencs rencpzencoding..encpjs IIKK  HHX_S)) * * *4 A A A+a 899C?@@ @!   55 s'A7A;:A;s encoding(%r)Trrrr)rrrrs @rencodingr`sU Aq>?? @ @C ??4?C*@? M MMrs eol(style)c|t|tdfd}||dfdS)zFile contains newlines of the given style (dos, unix, mac). Binary files are excluded, files with mixed line endings match multiple styles. seol requires a style namec|rdS|}dksdkrd|vrdSdkrtjd|rdSdkrtjd |rdSdS) NFsdosswins Tsunixs(?.eolps ==?? 5 IIKK 6MMSF]]1 4 G^^ , : :^4 F]]rya88]4urseol(%r)Trr)rrrrs @reolrwsU Aq566 7 7C      ??4:s*;4? H HHrscopied()cvt|ddtdd}||ddS)z&File that is recorded as being copied.rscopied takes no argumentsc|}|o/|d|kS)Nr)parentspath)rps rcopiedpzcopied..copiedps3 LLNN/QqTYY[[DIIKK//rscopiedTrr)rrrs rcopiedrsJ Aq!Q344555000 ??7Yd? C CCrsrevs(revs, pattern)ct|ddtd\}}t|td}|j}t j||g}g}|D]U}||}|||}| t||V|s| St|dkr|dStj|S)zEvaluate set in the specified revisions. If the revset match multiple revs, this will return file matching pattern in any of the revision. rsrevs takes two argumentss)first argument to revs must be a revisionrr)rdrrrrr revrangeswitchp1appendrrrr(r@) rrrrevspecrrevsmatchersrmcs rrrs 1aA9:: ; ;DAq1IJJKKG 8==??D  D7) , ,DH ))1g [[3 ' 'Q(((( zz|| 8}}{   * **rsstatus(base, rev, pattern)c|j}t|ddtd\}}}td}t ||}|st j|td}t ||}|st j|tj|||g\} } | | | } t| |S)zEvaluate predicate using status change between ``base`` and ``rev``. Examples: - ``status(3, 7, added())`` - matches files added from "3" to "7" sstatus takes three argumentss+first argument to status must be a revisions,second argument to status must be a revision) rrrdrrrrr revpairrr) rrrr]rbaseerr baserevspecreverrrbasectxrrs rreres 8==??DaAq!@AABBGAq!>??GAw''K (w''' > ? ?F6""G 'v&&&?4+w)?@@LGS Wc " "B B??rssubrepo([pattern])ct|ddtd|j}|j|rt |t jtdt j }|rfdn0t j| j dg|| fdd f S| j d S) z4Subrepositories whose paths match the given pattern.rrs"subrepo takes at most one arguments*subrepo requires a pattern or no argumentsc|kSr"r?)rVpats rrFzsubrepo..ms Cxrr)rc"|vo |Sr"r?)rErFsstates rrGzsubrepo..sa6k*aaddrs subrepo(%r)rHssubrepo) rdrrsubstater.r(r)patkindr rrootrJrg)rrrfastrFr rs @@@rsubrepors  Aq!Q<==>>> (C \FH  $ ; < <    #C(((  E      sxxzzcUDDDA~~ * * * * *nc5J   ~~f1J~GGGr) s withstatussstringssymbolskindpatspatternssandsorsminusslistsnotsfunccPeZdZd dZdZdZdZdZdZdZ dd Z dd Z d Z dS)matchctxNcZ||_||_||_d|_d|_||_dSr")_basectxr_badfn_match_statuscwd)selfr rrbadfns r__init__zmatchctx.__init__s0    rcxt|j|j|j|j}||_|j|_|S)z.fctxpredfn6s!q6DD(!!! 55!!JJLLLL{!!! 55! !!6$<<'&#&% !!! !55 !s- 8A  A  AA;:A;cZ |}n#tj$rYdSwxYw|Sr1)rrr7s rr8z'matchctx.fpredicate..fctxpredfnLsF!q6DD(!!! 55!vd||#s  r)rrrJ)rr.rIrr8rs ` @rrzmatchctx.fpredicate-sv h 7799  ! ! ! ! ! ! !, $ $ $ $ $ $~~j85~IIIrc6tj|jS)z"Create a matcher to select nothingr)r(rrr)s rrzmatchctx.neverUs~DK0000rr"r1) __name__ __module__ __qualname__rr6rrr#rer#rJrrr?rrrrs    III    &J&J&J&JP11111rrctj|}tj|}tj|}t ||||}t ||S)z0Create a matcher for a single fileset expressionr;)rparseanalyzeoptimizerrr)rrrrtreers rr r Zs`  T " "D  t $ $D   % %D CFFHHc3e 4 4 4D D$  rcX|jD]\}}|t|<dS)z3Load fileset predicates from specified registrarobjN)_tablerZrY)uiextname registrarobjnamer`s r loadpredicaterJcs9")//11 d rr")Lri18nrr rrrr r(r rr r rutilsrWEIGHT_CHECK_FILENAME_WEIGHT_CHECK_FILENAMEWEIGHT_READ_CONTENTS_WEIGHT_READ_CONTENTS WEIGHT_STATUS_WEIGHT_STATUSWEIGHT_STATUS_THOROUGH_WEIGHT_STATUS_THOROUGHrXr getkindpatr'r.rdrr r$r+r4r;rBrKrNrPr`rYfilesetpredicaterJrfrjrmrrrtrwrzr}rrrrrrrrrrrrrrrrrerrrrJvalues i18nfunctionsr?rrrZs                     %:#8*%<  !  ! $  #  ''' ... """... %%% III ... 222   &I &w / /  =T.AAA@@BA@ :$~>>>==?>= >>==?>= <FFF ;455565 9LLL <OOO =000  10  ?>222  32  =000,,10, =!788898 >"7888  98  BBB"+++4  ~666  76    %:;;;NN<;N, =!6777II87I0 ; D D D  !.999++:9+.  (@@@A@.  !!HH"!H:&       ^1^1^1^1^1^1^1^1B      r