
    6h6                       S SK Jr  S SKrS SKrS SKJrJrJrJrJ	r	J
r
Jr  S SKJrJr  S SKJr  S SKJrJrJrJrJrJrJr  S SKJr  S SKJr  S	S
KJ r   \RB                  r!\RD                  r"\ RF                  " 5       r$SS jr%\RL                  " \S\%5        0 r'\$(       a  \$RP                  S\$RR                  S\$RT                  S\$RV                  S\$RX                  S\$RZ                  S\$R\                  S\$R^                  S\$R`                  S\$Rb                  S\$Rd                  S\$Rf                  S\$Rh                  S\$Rj                  S\$RX                  \$Rb                  -  S0r' " S S\Rl                  5      r7g)    )annotationsN)AnyDictIterableIteratorListOptionalTuple)MatcherTTransactionT)sha1nodeconstants)dirstatemaperror
extensionsmatchpycompatscmutilutil)	timestamp)dirstate   )gitutilc                   SU;   d  UR                  S5      (       d  U " XSS9$ / n/ n[        US5       nU H  nUR                  5       nU(       a  UR                  S5      (       a  M2  UR                  S5      (       a  UR	                  SU-  5        M^  UR                  S	5      (       a  UR	                  S
USS  -   5        M  UR	                  SU-   5        M     S S S 5        XE4$ ! , (       d  f       XE4$ = f)Ns   info/excludes
   .gitignoreF)
sourceinforb   #   !s   unsupported ignore pattern %s   /s	   rootglob:r   s   relglob:)endswithopenstrip
startswithappend)origfilepathwarnr   resultwarningsfpls           4/usr/lib/python3/dist-packages/hgext/git/dirstate.pyreadpatternfiler,   -   s    x'8+<+<]+K+KHu55FH	h	A	AT**||D!! @1 DE||D!!lQqrU23kAo.  
  
	 s   B(C''
C7r,      m   n   ?   r   ac                     \ rS rSrS r\S 5       rS6S jrS6S jrS7S8S jjr	\
R
                  S 5       rS6S	 jrS9S
 jrS:S jrS;S jr\rS rS<S jr            S=S jr    S>S jrS6S jrS?S jr S@       SAS jjrSBS jrSCS jr\SBS j5       rSDS jrSES jrSFS jr\" 5       r \SBS j5       r!\SBS j5       r"SDS jr# S7       SGS jjr$SHS jr%S7SIS jjr&SJS  jr'S! r(S" r) SK           SLS# jjr*SMS$ jr+S% r,S& r-S' r.S( r/SNS) jr0S* r1S+ r2SBS, jr3\4Rj                  S- 5       r6\4Rj                  SOS. j5       r7SPS/ jr8      SQS0 jr9      SRS1 jr: S7     SSS2 jjr;S3 r<S4 r=S5r>g)TgitdirstateY   c                    Xl         [        R                  R                  UR                  5      U l        X l        X0l        0 U l        SU l	        [        R                  U l        X@l        g NF)_uiospathdirnamebase_root_openergit_plchangecallbacks_dirtyr   _mapcls_use_dirstate_v2)selfuivfsgitrepouse_dirstate_v2s        r+   __init__gitdirstate.__init__Z   sK    WW__SXX.
"$".. /    c                    U R                  U R                  U R                  U R                  [        U R
                  5      U l        U R                  $ )zAReturn the dirstate contents (see documentation for dirstatemap).)rA   r7   r=   r<   r   rB   _maprC   s    r+   rL   gitdirstate._mape   sA     LLHHLLJJ!!
	 yyrJ   c                     U R                   R                  R                  5       R                  R                  $ ! [
        R                   a    [        R                  s $ f = fN)	r>   headpeelidrawpygit2GitErrorr   nullidrM   s    r+   p1gitdirstate.p1q   sK    	,88==%%'**... 	, %+++	,s   7: $A! A!c                "    [         R                  $ rP   )r   rW   rM   s    r+   p2gitdirstate.p2y   s     '''rJ   Nc                    Uc  [         R                  nU[         R                  :X  d   S5       eU R                  R                  R	                  [
        R                  " U5      5        g )Ns   TODO merging support)r   rW   r>   rQ   
set_targetr   	togitnode)rC   rX   r[   s      r+   
setparentsgitdirstate.setparents}   sN    :"))B&---F/FF-  !2!22!67rJ   c                    [         R                  R                  [        R                  R                  U R                  SS5      5      $ )Ns   .gits   index)r   filestatfrompathr8   r9   joinr<   rM   s    r+   identitygitdirstate.identity   s1    }}%%GGLLWh7
 	
rJ   c                    g)Ns   default rM   s    r+   branchgitdirstate.branch   s    rJ   c                B    U R                  5       [        R                  /$ rP   )rX   r   rW   rM   s    r+   parentsgitdirstate.parents   s    	,3344rJ   c                <    S U R                   R                   5       $ )Nc              3  b   #    U  H%  n[         R                  " UR                  5      v   M'     g 7frP   )r   fsencoder9   ).0fs     r+   	<genexpr>'gitdirstate.__iter__.<locals>.<genexpr>   s"     B>a!!!&&))>s   -/)r>   indexrM   s    r+   __iter__gitdirstate.__iter__   s    B488>>BBrJ   c              #  f   #    U R                   R                   H  nUR                  S 4v   M     g 7frP   )r>   rv   r9   )rC   ies     r+   itemsgitdirstate.items   s%     ((..B''4- !s   /1c                l     U R                   R                  U5      n[        U   $ ! [         a     gf = f)Nr/   )r>   status_fileKeyError_STATUS_MAPrC   filenamegss      r+   __getitem__gitdirstate.__getitem__   s;    	%%h/B 2  		s   & 
33c                r     U R                   R                  U5      n[        U   S:g  $ ! [         a     gf = f)Nr/   F)r>   r~   r   r   r   s      r+   __contains__gitdirstate.__contains__   s<    	%%h/Br?d** 		s   &) 
66c           
     P   Un/ / / / / / / 4u  pxppSn [         R                  " U R                  5      nU R                  R                  5       nUR                  5        GHw  u  p[        R                  " U5      nU" U5      (       d  M+  U[        R                  :X  a+  UR                  S5      (       a  MW  UR                  U5        Mj  U[        R                  [        R                  [        R                  [        R                  -  4;   a  UR                  U5        M  U[        R                  :X  a  UR                  U5        M  U[        R                   :X  a  UR                  U5        GM  U[        R"                  :X  a  U
R                  U5        GM8  U[        R$                  :X  a  U	R                  U5        GM`  [&        R(                  " SX4-  5      e   U(       a  [+        Xx-   U	-   U
-   U-   U-   5      nU R                  R,                  nUR/                  5         U HU  n[        R                  " UR0                  5      nU" U5      (       d  M2  X;   a  M9  US   S:X  a  MD  UR                  U5        MW     S[2        R
                  " XxXXSU5      U4$ ! [         a    S n GNrf = f)Nr   s#   unhandled case: status for %r is %rF)r   
get_fs_nowr=   OSErrorr>   statusr{   r   rq   rU   GIT_STATUS_IGNOREDr   r#   GIT_STATUS_WT_MODIFIEDGIT_STATUS_INDEX_MODIFIEDGIT_STATUS_INDEX_NEWGIT_STATUS_WT_NEWGIT_STATUS_WT_DELETEDGIT_STATUS_INDEX_DELETEDr   Abortsetrv   readr9   r   )rC   r   subreposignoredcleanunknown	listcleanmodifiedaddedremoveddeletedmtime_boundarygstatusr9   r   observedrv   entrys                     r+   r   gitdirstate.status   sL    	 F
B7U	"&11$,,?N
 ((//##MMOLD$$T*D;;222==&&t$--00--223  %6666T"6333t$6777t$6:::t$kk:d^K 1 ,8  7*W4w>HH HHNNEJJL((4T{{#8t#T"  NN7U 
 	
e  	"!N	"s    J J%$J%c                    U" 5       $ rP   ri   )rC   buildfallbacks     r+   flagfuncgitdirstate.flagfunc   s     rJ   c                    [         R                  R                  [         R                  R                  [        R                  " U R
                  R                  5      5      5      $ rP   )r8   r9   r:   r   rq   r>   rM   s    r+   getcwdgitdirstate.getcwd   s:    wwGGOOH--dhhmm<=
 	
rJ   c                V    U R                   R                  U5      nUc
  [        5       $ U$ )z-return a DirstateItem for the associated path)rL   getDirstateItem)rC   r9   r   s      r+   	get_entrygitdirstate.get_entry  s&    		d#=>!rJ   c                T    [         R                  " U5      nXA:X  d   SUU4-  5       eU$ )Ns'   TODO handling of case folding: %s != %s)r   normcase)rC   r9   isknownignoremissingnormeds        r+   	normalizegitdirstate.normalize  s>     t$~ 	
IM
  
 	
~ rJ   c                    [         erP   NotImplementedErrorrM   s    r+   is_changing_filesgitdirstate.is_changing_files      !!rJ   c                    [         erP   r   rC   rs   s     r+   _ignorefileandlinegitdirstate._ignorefileandline  r   rJ   c                    [         R                  " [        R                  R	                  [
        R                  " U R                  R                  5      5      5      $ rP   )r   	checklinkr8   r9   r:   r   rq   r>   rM   s    r+   
_checklinkgitdirstate._checklink  s1    ~~bggooh.?.?.NOPPrJ   c                    [         erP   r   rM   s    r+   
invalidategitdirstate.invalidate  r   rJ   c                    [         erP   r   )rC   sourcedests      r+   copygitdirstate.copy"  r   rJ   c                    0 $ rP   ri   rM   s    r+   copiesgitdirstate.copies%  s    	rJ   c                    gr6   ri   rM   s    r+   is_changing_parentsgitdirstate.is_changing_parents,       rJ   c                    gr6   ri   rM   s    r+   is_changing_anygitdirstate.is_changing_any2  r   rJ   c                    [         erP   r   rM   s    r+   cleargitdirstate.clear8  r   rJ   c                    [         erP   r   )rC   parentallfileschangedfiless       r+   rebuildgitdirstate.rebuild;  s
     "!rJ   c                   ^  U(       a  U 4S jnUR                  SU5        g T R                  R                  R                  5         g )Nc                N   > TR                   R                  R                  5         g rP   )r>   rv   write)categoryrC   s    r+   
writeinner%gitdirstate.write.<locals>.writeinnerH  s    $$&rJ   s   gitdirstate)
addpendingr>   rv   r   )rC   trr   s   `  r+   r   gitdirstate.writeC  s1     ' MM.*5HHNN  "rJ   c                    Uc  U R                  5       n[        U[        5      (       d   e[        R                  " U R
                  X!5      nU$ rP   )r   
isinstancebytesr   pathtor<   )rC   rs   cwdrs       r+   r   gitdirstate.pathtoO  s>    ;++-C!U####KK

C+rJ   c              #     #    U R                   R                   H6  n[        R                  " UR                  5      nU" U5      (       d  M2  Uv   M8     g 7frP   )r>   rv   r   rq   r9   )rC   r   xps       r+   matchesgitdirstate.matchesW  s9     A!!!&&)AQxx  s   AA	Ac                    g)zMark a file normal and clean.Nri   )rC   rs   parentfiledatas      r+   	set_cleangitdirstate.set_clean]      rJ   c                    g)z'Mark a file normal, but possibly dirty.Nri   r   s     r+   set_possibly_dirtygitdirstate.set_possibly_dirtyb  r   rJ   c                   0 nU R                  5       nU R                  R                  5       R                  5        Hz  u  pUR	                  S5      (       a  M  [
        R                  " U5      nU" U5      (       d  MB   [        R                  " [        R                  R                  Xx5      5      n
XU'   M|     U$ ! [         a     M  f = f)Nz.hg/)r   r>   r   r{   r"   r   rq   r8   statr9   re   FileNotFoundError)rC   r   r   r   r   fullr   r   r9   r   ss              r+   walkgitdirstate.walkg  s     kkm HHOO-335LDv&&$$T*D;;GGBGGLL34 dG 6  % s   >3B;;
C	C	c                    [         R                  " U5      nX0R                  R                  ;   a  gU R                  R                  nUR	                  5         UR                  U5        UR                  5         g)NFT)r   fsdecoder>   rv   r   addr   )rC   rs   
reset_copyufrv   s        r+   set_trackedgitdirstate.set_tracked  sP    q!

		"rJ   c                    U R                   R                  nUR                  5         UR                  [        R
                  " U5      5        UR                  5         g rP   )r>   rv   r   r  r   r  r   rC   rs   rv   s      r+   r  gitdirstate.add  s8    

		(##A&'rJ   c                    U R                   R                  nUR                  5         [        R                  " U5      nX2;   a"  UR                  U5        UR                  5         g g rP   r>   rv   r   r   r  remover   rC   rs   rv   fss       r+   dropgitdirstate.drop  sG    

q!;LLKKM rJ   c                    U R                   R                  nUR                  5         [        R                  " U5      nX2;   a"  UR                  U5        UR                  5         gg)NTFr  r  s       r+   set_untrackedgitdirstate.set_untracked  sH    

q!;LLKKMrJ   c                    U R                   R                  nUR                  5         UR                  [        R
                  " U5      5        UR                  5         g rP   )r>   rv   r   r  r   r  r   r  s      r+   r  gitdirstate.remove  s8    

X&&q)*rJ   c                    g rP   ri   )rC   files     r+   copiedgitdirstate.copied  s    rJ   c                    g rP   ri   rM   s    r+   prefetch_parentsgitdirstate.prefetch_parents      rJ   c                    g rP   ri   )rC   argskwargss      r+   update_filegitdirstate.update_file  r#  rJ   c                    [         erP   r   rM   s    r+   
_checkexecgitdirstate._checkexec  r   rJ   c              #     #    S v   g 7frP   ri   rC   repos     r+   changing_parentsgitdirstate.changing_parents  s
      	s   c                    [         erP   r   r-  s     r+   changing_filesgitdirstate.changing_files  s    !!rJ   c                    [         erP   r   )rC   ds     r+   hasdirgitdirstate.hasdir  r   rJ   c                     X R                   U'   g rP   )r?   )rC   r   callbacks      r+   addparentchangecallback#gitdirstate.addparentchangecallback  s     -5)rJ   c                .    [         R                  " S5      e)Ns6   git repos do not support branches. try using bookmarks)r   r   )rC   rj   transactions      r+   	setbranchgitdirstate.setbranch  s     kkE
 	
rJ   c                    [         erP   r   )rC   m1m2rX   narrow_matchers        r+   verifygitdirstate.verify  s
     "!rJ   c                    [         erP   r   r-  s     r+   running_statusgitdirstate.running_status  r   rJ   c                    g rP   ri   rM   s    r+   refreshgitdirstate.refresh  s    rJ   )	r@   rL   rA   r=   r?   r<   r7   rB   r>   )returnr   rP   )rX   r   r[   Optional[bytes])rL  zList[bytes])rL  Iterator[bytes])rL  z1Iterator[Tuple[bytes, intdirstate.DirstateItemT]])r   r   rL  bool)r   r   r   rO  r   rO  r   rO  r   rO  rL  zintdirstate.StatusReturnT)r   zintdirstate.FlagFuncFallbackTrL  zintdirstate.FlagFuncReturnT)r9   r   rL  zintdirstate.DirstateItemT)FF)r9   r   r   rO  r   rO  rL  r   )rL  rO  )rs   r   rL  zintdirstate.IgnoreFileAndLineT)rL  None)r   rM  r   r   rL  rP  )rL  zDict[bytes, bytes])r   r   r   Iterable[bytes]r   zOptional[Iterable[bytes]]rL  rP  )r   Optional[TransactionT]rL  rP  )rs   r   r   rM  rL  r   )r   r   rL  rQ  )T)r   r   r   r   r   rO  r   rO  r  rO  rL  zintdirstate.WalkReturnTF)r  r   rL  rM  )rL  r   )r5  r   rL  rO  )r   r   r9  z$intdirstate.AddParentChangeCallbackTrL  rP  )rj   r   r=  rR  rL  rP  )rX   r   rC  zOptional[Any]rL  rN  )?__name__
__module____qualname____firstlineno__rH   propertycacherL   rX   r[   r`   r   rf   rj   rm   rw   r{   	iteritemsr   r   r   r   r   r   r   r   r   propertyr   r   r   r   r   
_filecacher   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r!  r'  r*  
contextlibcontextmanagerr/  r2  r6  r:  r>  rD  rG  rJ  __static_attributes__ri   rJ   r+   r3   r3   Y   s   	0 	 	,(8 

 

5C 
 IN
N
 N
 	N

 N
 N
 
#N
`:	$
 IN$(AE	"" Q Q""
 J 
  
" 37	"" "" 0	"
 
"
#,
6   	
   
!8	"   " ""55)M5	5

*@
	
 BF""1>"	"
"rJ   r3   rS  )8
__future__r   r\  r8   typingr   r   r   r   r   r	   r
   mercurial.interfaces.typesr   r   mercurial.noder   	mercurialr   r   r   r   matchmodr   r   r   mercurial.dirstateutilsr   mercurial.interfacesr   intdirstate r   r   rX  
get_pygit2rU   r,   wrapfunctionr   GIT_STATUS_CONFLICTEDGIT_STATUS_CURRENTr   r   r   r   GIT_STATUS_INDEX_RENAMEDGIT_STATUS_INDEX_TYPECHANGEr   r   r   GIT_STATUS_WT_RENAMEDGIT_STATUS_WT_TYPECHANGEGIT_STATUS_WT_UNREADABLE	idirstater3   ri   rJ   r+   <module>rs     sZ   "  	   -    ''""				(   "3_ E 	$$d!!4!!4''(($##T''**D$$d%%t  $$$d''''((6+H+HH$K&D+'' DrJ   