
    	^c                        d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZddl	m
Z
 ddlmZ d dlmZ ddlmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ m!Z!m"Z#m$Z$m%Z% ddl&m'Z'm(Z(m)Z)  G d d	          Z*d
 Z+d Z,d Z-d Z.d Z/d Z0d Z1d Z2d Z3d Z4d Z5 G d d          Z6 G d d          Z7d Z8d Z9d Z:d Z;d Z<d Z=d Z>d&d Z?d! Z@d" ZAd# ZBd$ ZCd% ZDdS )'    N   )_)getattr)tracing)cmdutilcolorcommandsdemandimportencodingerror
extensions	fancyoptshelphghook	localrepo	profilingpycompatrcutil	registrarrequirementsscmutiluiutilvfs)procutil
stringutilurlutilc                   *    e Zd Z	 	 	 	 	 	 	 ddZd ZdS )requestNc	                     || _         || _        || _        || _        || _        || _        || _        i | _        |pg | _        d | _	        d S N)
argsr   repofinfoutferrfmsgearlyoptionsprereposetupscanonical_command)	selfr#   r   r$   r%   r&   r'   r(   r*   s	            4/usr/lib/python3/dist-packages/mercurial/dispatch.py__init__zrequest.__init__9   s`     		 			  +0b "&    c                 8   d }| j         j        }	 |r{|                                \  }}}	  ||i | nW#  |t          j                    d         }| j                             d           | j                             d           Y nxY w|{||d S # ||w xY w)Nr   s   error in exit handlers:
T)force)r   _exithandlerspopsysexc_info
warnnoi18n	traceback)r,   exchandlersfuncr#   kwargss         r-   _runexithandlerszrequest._runexithandlersY   s    7(	 2%-\\^^"dF2D$)&))))2{!lnnQ/G&&'CDDDG%%D%11111  2 	 s					s    B 4 B ABB B)NNNNNNN)__name__
__module____qualname__r.   r<    r/   r-   r    r    8   sO         & & & &@    r/   r    c                    d }t          j        | d          rC| J | j        J 	 | j                                         n# t          $ r}|}d}Y d }~nd }~ww xY wt          j        | d          r| J | j        J 	 |I|j        t          j        k    r4| j                            dt          j
        |j                  z             | j                                         n# t          $ r d}Y nw xY w|S )Ns   fouts   ferrs
   abort: %s
)r   safehasattrr&   flushIOErrorr'   errnoEPIPEwriter   
strtolocalstrerror)r   errstatuses       r-   _flushstdiorN   k   s/   FG$$ ~~~w"""	GMMOOOO 	 	 	CFFFFFF	 G$$ ~~~w"""		39#;#;"X%8%F%FF   GMMOOOO  	 	 	FFF	 Ms*   A   
A
AA>A$C# #C21C2c                  L   	 t                       t          j        d          5  t          t          j        dd                   } ddd           n# 1 swxY w Y   t          |           }t                       n# t          $ r d}Y nw xY wt          j
        |dz             dS )zrun the command in sys.argvzparse args into requestr   NrB      )	initstdior   logr    r   sysargvdispatch_silencestdioKeyboardInterruptr4   exit)reqrL   s     r-   runrY      s    
[233 	0 	0(*122.//C	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 #     HVc\s4   "A; "AA; AA; A A; ;B
	B
c                  X   t           j        dt           j        j        d} t          j        t           j        d          rt           j        j        | d<   t          j        t           j        j        t           j        j	        t           j        j
        fi | t           _        t           j        dt           j        j        d} t          j        t           j        d          rt           j        j        | d<   t          j        t           j        j        t           j        j	        t           j        j
        fi | t           _        t           j        at          j        t           j        j        t           j        j	        t           j        j
        d t           j        j                  t           _        d S d S )N
)newlineline_bufferingwrite_through)r4   stdoutr]   r   rC   r^   ioTextIOWrapperbufferr   errorsstderrstdin)r;   s    r-   rQ   rQ      sV    z !j7
 
 CJ88 	?&)j&>F?#%Jsz2CJ4E
 
IO
 

 z!j7
 
 CJ88 	?&)j&>F?#%Jsz2CJ4E
 
IO
 

 y$III93
 
 
			 r/   c                      t           j        t           j        fD ]P} | 	 |                                  # t          $ r Y nw xY w	 |                                  A# t          $ r Y Mw xY wd S r"   )r4   r_   rd   rD   rE   close)fps    r-   rU   rU      s    z3:&  :	HHJJJ 	 	 	D		HHJJJJ 	 	 	D	 s!   4
A AA
A'&A'c                 @    d                     d | D                       S )N    c              3   >   K   | ]}t          j        |          V  d S r"   r   
shellquote).0as     r-   	<genexpr>z_formatargs.<locals>.<genexpr>   s-      ::X(++::::::r/   )joinr#   s    r-   _formatargsrs      s#    99::T::::::r/   c                     d}	 t          |           }n # t          j        $ r}|}d}Y d}~nd}~ww xY wt          | j        |          }|r|s|}|S )zErun the command specified in req.args; returns an integer status codeNrB   )_rundispatchr   
StdioErrorrN   r   )rX   rK   rL   rM   rets        r-   rT   rT      s}    
Cc""    cfc
"
"C
 6 Ms    1,1c                 B	   t          j        d          5  | j        r| j        }n | j        r| j        j        }nt          j        }	 | j        s#t          j                                        | _        | j        	                    t          | j        | j                             | j        d         r| j                            dddd           | j        r| j        | j        _        | j        r| j        | j        _        | j        r| j        | j        _        | j        r| j        | j        _        nO# t           j        $ r=}|                    |                                           Y d }~d d d            dS d }~ww xY wt)          | j                  }t+          j                    }d}	 t/          |           pd}n# t           j        $ rf}| j                            t3          d	          |z             |j        r/| j                            t3          d
          |j        z              d }~wt6          $ r}	 t9          |t           j                  rt3          d          }nt3          d          }| j                            |           n # t           j        $ r Y nt<          $ r Y nw xY wd}Y d }~nd }~ww xY wt+          j                    |z
  }| j                                         | j        j         rB|dz  | j        j!        d<    | j        j        	 	 di tE          j#        | j        j!                   |dz  }| j                            dd|||||| j$                   	 | %                                 n#  |pd}Y nxY w| j                                         n# t+          j                    |z
  }| j                                         | j        j         rB|dz  | j        j!        d<    | j        j        	 	 di tE          j#        | j        j!                   |dz  }| j                            dd|||||| j$                   	 | %                                 n#  |pd}Y nxY w| j                                         w xY w|cd d d            S # 1 swxY w Y   d S )Nzdispatch._rundispatch	   traceback   ui   on   --tracebackrB   r   r   s   ** ProgrammingError: %s
s   ** (%s)
s   killed!
s   interrupted!
i  s   command_duration	   uiblocked   ui blocked ms
rP   s   commandfinishs!   %s exited %d after %0.2f seconds
)return_codedurationr+   )r}   r~   )&r   rR   r'   r   r   rd   uimodloadr)   update_earlyparseoptsr#   	setconfigr%   r&   r(   r   AbortrH   formatrs   r   timer	_runcatchProgrammingErrorr   hintrV   
isinstanceSignalInterruptBrokenPipeErrorrD   logblockedtimes_blockedtimesr   	strkwargsr+   r<   )	rX   r'   instformattedargs	starttimerw   msgr   r   s	            r-   ru   ru      s\   	,	-	- O O8 	#8DDV 	#6;DD?D	6 )##OCFCH$E$EFFF- M  e^LLL w % W
x '!hx '!hx '!h{ 	 	 	JJt{{}}%%%2225O O O O O O O O0	 $CH--JLL	/	C..%ACC% 	 	 	FLL7884?@@@y :Q|__ty8999  	 	 	dE$9:: /L//CC-..CS!!!!(    "   CCCCCC	 z||i/HFLLNNNv% <DtO$%89
 &  ()=>>  
 )KFJJ 5'!"%"7  	 	 	 $$&&&& iRFLLNNNN3 z||i/HFLLNNNv% <DtO$%89
 &  ()=>>  
 )KFJJ 5'!"%"7  	 	 	 $$&&&& iRFLLNNNN_O O O O O O O O O O O O O O O O O Os   0RC&D-,R-E9<'E4#R4E99,R&F97N9J7A!H))J77AJ
J2J(J2	J(%J2'J((J2-N2J77N:B)R$M98R9N?RB*R	QRQ&	$RRRRc                 *    t          j        d          5  d } j        	 dD ]/}t          t          |d           }|rt	          j        ||           0n# t
          $ r Y nw xY w fd}t          |          cd d d            S # 1 swxY w Y   d S )Nzdispatch._runcatchc                      t           j        r"   )r   r   rr   s    r-   	catchtermz_runcatch.<locals>.catchtermI  s    ''r/   )s   SIGBREAKs   SIGHUPs   SIGTERMc                      d } 	 t          j         j        d d          t          j        i           }|d         }t	          j        |t          j        d          \  }}|d         } n2# t          j        t          j	        t          t          j        f$ r Y nw xY w| dk    rd|v rt          j                  dk    sSj        d         dk    sBj        d                             d          s"j        d	         dk    sj        d
         dk    r<t          j        t!          d          t#          j        j                  fz            	 d}dt&          j        i}dt&          j        i}t-          j        j        d                   }j        r,|D ])\  }	}
}j        j                            |	|
|d           *                    dd          }t&          }|r                                rd}nYj        d         rLt;          j                    5  	 t?          |          }n# t@          $ r Y nw xY wd d d            n# 1 swxY w Y   |j        ||<   |j        ||<   j        d         r!                    t!          d                     |dk    r7||         |d         k    r%!                    t!          d          |z             t;          j                    5   ||                      d d d            n# 1 swxY w Y   	 tE                    #                                 S # #                                 w xY w#  j        d         r;tI          j%                      ||         tM          j'                    d	                     xY w)Nr   Fs   serves   --stdio   s   -Rr      --      s/   potentially unsafe serve --stdio invocation: %ss   pdb   config   --config)sourcerz      debuggersA   entering debugger - type c to continue starting hg or h for help
s3   %s debugger specified but its module was not found
)(r   r#   r	   
globaloptsr   findcmdtabler   UnknownCommandAmbiguousCommand
IndexErrorgetoptGetoptErrorlen
startswithr   r   r   pprintpdb	set_tracepost_mortem_parseconfigr   r)   r$   r   configplainr
   deactivated
__import__ImportErrorwarn	_dispatchrD   r7   	print_excr4   r5   )realcmdcmdargscmdaliasesentrydebugger
debugtracedebugmortemcfgssecnamevaldebugmodrX   r   s                r-   _runcatchfuncz _runcatch.<locals>._runcatchfuncU  s]   G#-HQQQK!4b  aj!(hne!L!L!!*$&"	 
 
 
 
 (""zW'<'< MMQ&&x{e++x{--e44 ,x{h..x{j00+LMM%,SX6689  
C!$cm4
%s7 $CFC,<Y,GHH8  +/  T3--s; .    
 99UK88 !288:: !%HH%k2 ! &133 ! !!'1(';';HH* ! ! ! D!! ! ! ! ! ! ! ! ! ! ! ! ! ! ! (0'9
8$(0(<H% #K0 /GGN    !F**&x0Jv4FFF!B  '	'   &133 / /,
8,.../ / / / / / / / / / / / / / /$S>>HHJJJJBHHJJJJ#K0 ='))))K)#,..*;<<<s   A A& &,BB
CM H?H#"H?#
H0-H?/H00H?3M ?IM IBM K:.M :K>>M K>M L) M )L??M AN)r   rR   r   r   signal
ValueError
_callcatch)rX   r   r   numr   r   s   `    @r-   r   r   F  sA   	)	*	* |- |-	( 	( 	( V	: 2 2fdD11 2M#y1112  	 	 	D	l	 l	 l	 l	 l	 l	\ "m,,y|- |- |- |- |- |- |- |- |- |- |- |- |- |- |- |- |- |-s4   B2AB
A# B"A##BBBc                    d}	 t          j        | |          S # t          j        $ rQ}d}|                     t          d          |j        d                    |j                  fz             Y d}~nWd}~wt          j	        $ r}d}|j
        rx|                     d           t          j        |j                  }|                     t          d          |j
        |fz             t          j        | |j
        dd	
           nL|                     t          d          |j        z             |                     t          d                     Y d}~nrd}~wt          j        $ r6}d}t          d          |j
        z  }	 t%          j        | t          |j
        d	          }|                     |           |                     |           n# t          j        t          j        f$ r d}|j        rbt          j        |j        |j
                  }|rA|                     |           |                     dt          j        |          z             d	}|s7|                     |           |                     t          d                     Y nw xY wY d}~n.d}~wt2          $ r  t4          $ r   t7          |           s Y nxY w|                     dd          r|S dS )zlike scmutil.callcatch but handles more high-level exceptions about
    config parsing and commands. besides, use handlecommandexception to handle
    uncaught exceptions.
    rB   
   s&   hg: command '%s' is ambiguous:
    %s
rj   N   helps
   hg %s: %s
FT)fullcommands   hg: %s
s0   (use 'hg help -v' for a list of global options)
s   hg: unknown command '%s'
)
unknowncmds   (%s)
s'   (use 'hg help' for a list of commands)
rz   s   detailed-exit-code)r   	callcatchr   r   r   r   prefixrq   matchesCommandErrorr   pagerr   bytestrmessager	   help_r   r   formattedhelprH   r   all_commands
getsimilarsimilarity_hintrE   rV   handlecommandexception
configbool)	r   r:   detailed_exit_coder   msgbytesnocmdmsg	formatted	suggestedsims	            r-   r   r     s=   
 . T***! 
 
 

9::{DIIdl3345	
 	
 	
 	
 	
 	
 	
 	
  	M 	M 	M< 	MHHW'55HGGAn%%x(@@AAAN2t|%FFFFFGGAkNNT\1222GGAJKKLLL H H H233dlB	H *Hdlt  I GGHHHY$ek2 
	H 
	H 
	HI  %&t'8$,GG %GGH%%%GGI(=c(B(BBCCC $I H!!!EFFGGG
	H       %b)) 		 	 
}}U122 !!rsT    KAA44KCEK,JAGJB?JJJJ)Kc                 X   g }t          j        | d          st          | d|          }|rzd                    t	          t
          j        |                    }g fd}t          j        d||          }fdt                    D             t          j        |          }|z   S )Ns	   _origfuncr#   rj   c                     t          |                     d                    dz
  }                    |           |t                    k     r|         S t	          j        t          d                    )Nr   s#   too few arguments for command alias)intgroupappendr   r   
InputErrorr   )mr   	givenargsnumss     r-   replacerzaliasargs.<locals>.replacer  sd    aggajj//A%CKKS^^## ~%"1%K#L#LMMMr/   
   \$(\d+|\$)c                 "    g | ]\  }}|v	|S r@   r@   )rn   ixr   s      r-   
<listcomp>zaliasargs.<locals>.<listcomp>  s"    III41a1D==Q===r/   )r   rC   r   rq   mapr   rm   resub	enumerater   
shlexsplit)fnr   r#   r   r   r   s    `   @r-   	aliasargsr     s    DB-- )r64(( (iiH/6677	N 	N 	N 	N 	N 	N f^Xs33IIII9Y#7#7III	"3'')r/   c                    d t          |          D             | d<   dd<   d                    |          d<   d                    d |D                       d<   d	                                                                                  dd
          }t	          j        |          }|                    fd|          S )zXinterpolate args into cmd for shell aliases

    This also handles $0, $@ and "$@".
    c                 &    i | ]\  }}d |dz   z  |S )s   $%dr   r@   )rn   r   args      r-   
<dictcomp>z$aliasinterpolate.<locals>.<dictcomp>   s'    FFFFAs&AE"CFFFr/   s   $0   $s   $$rj   s   $@c              3   >   K   | ]}t          j        |          V  d S r"   rl   )rn   r   s     r-   rp   z#aliasinterpolate.<locals>.<genexpr>(  s-      #M#MH$7$<$<#M#M#M#M#M#Mr/   s   "$@"   |s   \$c                 8    |                                           S r"   )r   )r   
replacemaps    r-   <lambda>z"aliasinterpolate.<locals>.<lambda>,  s    :aggii0 r/   )r   rq   keysreplacer   compiler   )r   r#   r   regexrr  s        @r-   aliasinterpolater
    s     GFiooFFFJJuJu		$Ju
 ))#M#M#M#M#MMMJwIIjoo''((00v>>E

5A550000#666r/   c                   >    e Zd Zd ZddZed             Zd Zd ZdS )cmdaliasc                     |x _          _        d _        | _        d  _        g  _        g  _        d _        d  _        d _	        | _
        	 t          j         j         |          \  }}|                                D ]\  }}	|	|u r	| _         nd _        n# t          j        $ r
 d _        Y nw xY w j        st#          d           j         z   _        d S  j                            d          rI j        dd          d _         fd}
|
 _        d _                             || j                   d S 	 t-          j         j                  }nH# t0          $ r;}t#          d           j         t3          j        |          fz   _        Y d }~d S d }~ww xY wt7          |          \  }}|rEt#          d	           j         d
                    t-          j        | d                   fz   _        d S |                    d          x _        }| _        	 t          j        ||d          d         }t?          |          dk    r|\   _         _        }n|\   _         _        d }d _                             ||| j        |           d S # t          j        $ r) t#          d           j         |fz   _        d _	        Y d S t          j         $ r" t#          d           j         |fz   _        Y d S w xY w)Nr/   FTs   no definition for alias '%s'   !r   c                      dd                     j        fz             i} fd}t          j        d|          }t	          j        |          }                     ||dj        z            S )Ns   HG_ARGSrj   c                    |                                  d         dk    r|                                 S t          |                                  d                   t                    k    r|                                 S                     dt          |                                  d                   j        fz             dS )Nr   r   sL   No argument found for substitution of %i variable in alias '%s' definition.
r/   )groupsr   r   r   debugr   )r   r#   r,   r   s    r-   	_checkvarz0cmdalias.__init__.<locals>.fn.<locals>._checkvarQ  s    xxzz!},, wwyy(QXXZZ]++s4yy88 wwyy(J"188::a=1149=>  
  #sr/   r   s   alias_%s)environ
blockedtag)rq   r   r   r   r
  system)r   r#   envr  r   r,   shdefs   ``   r-   r   zcmdalias.__init__.<locals>.fnN  s    !499di\D-@#A#AB# # # # # # # f^Y>>&ty$<<yyty1H !   r/   s&   error in definition for alias '%s': %ssL   error in definition for alias '%s': %s may only be given on the command line   /r   r   s+   alias '%s' resolves to unknown command '%s's-   alias '%s' resolves to ambiguous command '%s')!r   r   cmdname
definitionr   r   optsr   badaliasr   r   r   r   itemsshadowsr   r   r   r   shellalias_populatehelpr   r   r   r   forcebytestr_earlysplitoptsrq   ziplistr3   r   r   )r,   r   r   r  cmdtabler   r   r   r!  rM   r   r#   r   	earlyoptsr   
tableentrycmdhelpr  s   `                @r-   r.   zcmdalias.__init__0  s   ##	DH$			!$_TYAANGU$NN,,  q::$DHE   DLL# 	! 	! 	! DLLL	!  	=>>JDMF?%%d++ 	OABB'EDJ     , DGDJr4888F	&t77DD 	 	 	GHH	'--L DM FFFFF	 *$//	4 	5  DIIh&6	&B1&EFFGHDM F!XXa[[(s	 h>>qAJ:"".8+GG%/"DJr4dgw?????# 	# 	# 	#>  	DM #DOOOO% 	 	 	@  	DMMMM	sD   AB B65B6E 
F!&0FF!!A6J 4L ,L ?L Nc                 v   i }dD ]V}|                     dd||fz  d           }|!t          j        |          st          d          ||fz  | _         d S |||<   W|                    d|pd          | _        | j        rA| j                            d|z             r$| j        dt          |          z   d          | _        d	|v | _	        |                    d	t          j        |                    }	|	t          j        |	          }	|	| _        |                    d
t          j        j                  | _        d S )N)   docr      category   aliass   %s:%ss/   non-ASCII character in alias definition '%s:%s'r   r/   s   hg r   r+  r,  )r   r   
isasciistrr   r  getr   r   r   owndocr   getdocsysstr__doc__r   r   CATEGORY_NONEhelpcategory)
r,   r   r   r   r   defaulthelpcfgkvdocs
             r-   r"  zcmdalias._populatehelp  sH   / 		 		A		(Hay$8$??Ay&q))  !F! !1I! CFFGGG[%7C88	9 	2--fsl;; 	2	!c#hh,..1DImggfhob1122?/#&&CGG*8
 
r/   c                 t    t          j        t          j        | j                  }t          | j        |          S r"   )r   maplistr   
expandpathr   r   r   )r,   r#   s     r-   r#   zcmdalias.args  s*    @@$'''r/   c                     dt                      ddd}||vrt          |          | j        st          j        | d          r||         S t          | j        |          S )NTF)norepointentsoptionalrepo	inferrepo   shell)setAttributeErrorr  r   rC   r   r   )r,   r   	adefaultss      r-   __getattr__zcmdalias.__getattr__  ss    uu!	
 
	 y   &&&= 	#D,T8<< 	#T?"tw%%%r/   c                    | j         rtd }| j        rP	 t          j        || j                  d d         \  }}t          d          ||fz  }n# t          j        $ r Y nw xY wt          j        | j         |          | j	        r$|
                    d| j        | j        fz             |                    dd| j        | j                   t          j        | d          r | j        |g|R i |S 	  t          j        | j                  |g|R i |S # t          j        $ rD d                    | j        g| j        z             }|
                    d| j        |fz              w xY w)	Nr   s"   '%s' is provided by '%s' extension)r   s    alias '%s' shadows command '%s'
s   commandaliass   alias '%s' expands to '%s'
rC  rj   )r  r   r   disabledcmdr  r   r   r   ConfigErrorr  r  r   rR   r  r   rC   r   checksignatureSignatureErrorrq   r#   )r,   r   r#   r  r   r   exts          r-   __call__zcmdalias.__call__  s   = 		>D )5b$,GGKHCBCCsCjPDD+   D#DM====< 	HH4	4<7PP   	+IO		
 	
 	
 D(++ 	472-------3t*4733BFFFFFFF'   yy$,$)!;<<8DIt;LLMMMs   9A AA0"D AE&r"   )	r=   r>   r?   r.   r"  propertyr#   rG  rN  r@   r/   r-   r  r  /  st        d d dL
 
 
 
: ( ( X(& & &    r/   r  c                   J    e Zd ZdZd Zej        d             Zd Zd Z	d Z
dS )lazyaliasentryz<like a typical command entry (func, opts, help), but is lazyc                 ~    || _         || _        || _        |                                | _        || _        d| _        d S )NT)r   r   r  copyr&  r   r!  )r,   r   r   r  r&  r   s         r-   r.   zlazyaliasentry.__init__  s8    	$ 


r/   c                 Z    t          | j        | j        | j        | j        | j                  S r"   )r  r   r   r  r&  r   r,   s    r-   	_aliasdefzlazyaliasentry._aliasdef  s)    GTY
 
 	
r/   c                 b    | j         }|dk    r|S |dk    r|j        S |dk    r|j        S t          )Nr   r   r   )rV  r  r   r   )r,   naliasdefs      r-   __getitem__zlazyaliasentry.__getitem__  s?    >66O!VV= !VV= r/   c              #   B   K   t          d          D ]}| |         V  d S Nr   )range)r,   r   s     r-   __iter__zlazyaliasentry.__iter__  s4      q 	 	Aq'MMMM	 	r/   c                     dS r\  r@   rU  s    r-   __len__zlazyaliasentry.__len__  s    qr/   N)r=   r>   r?   r3  r.   r   propertycacherV  rZ  r^  r`  r@   r/   r-   rQ  rQ    su        FF   

 
 

	 	 	      r/   rQ  c                     |                      dd          D ]^\  }}	 ||         j        |k    rn# t          t          f$ r Y nw xY w|                     d|          }t          | ||||          }|||<   _d S )Nr-  T)	ignoresub)configitemsr  KeyErrorrE  configsourcerQ  )r   r&  r!  r  r   r   s         r-   
addaliasesrg  
  s      ^^H^EE 
  
 z	)Z77 8.) 	 	 	D	 511r5*hGG
  
 s   1AAc                    i }i }	 t          j         |t          j        |          }n># t          j        $ r,}t          j        d t          j        |                    d }~ww xY w|r|d         |dd          }}t          j
        |t          j        |                     dd                    \  }}|d         }t          |d         |          }|                     d|          }|r4t          j        t"          j        t          j        |                    |z   }t)          |d                   }	nd }g }	t          j        D ]9}
|	                    |
d         |
d         ||
d                  |
d         f           :	 t          j         ||	|d          }n># t          j        $ r,}t          j        |t          j        |                    d }~ww xY wt          j        D ]}
|
d         }||         ||<   ||= ||r|d         pd |||fS )	Nr   r   rz      stricts   defaultsr   T)gnu)r   r	   r   r   r   r   r   r   r#  r   r   r   r   r   r   r   r<  r   r=  r   listr   )r   r#   options
cmdoptionsr   r   r   r   defaultscorX  s               r-   _parserq    s7   GJF"4)<gFF F F F z'>t'D'DEEEF  GT!""XT ui!@!@
 
 ajq4((99[#.. 	 (2Eh2O2OPP  qNN   4 4	!A$!gadmQqT23333E"4JDAAA E E E j&=d&C&CDDDE    aD]
qMM!q)T4*EEs,    ' A"'AA";F G#'G

Gc                    g }|D ]}	 d |                     dd          D             \  }}|                     dd          \  }}|r|st          |                     |||d           |                    |||f           {# t          t          f$ r7 t          j        t          d          t          j	        |          z            w xY w|S )z0parse the --config options from the command linec                 6    g | ]}|                                 S r@   )strip)rn   cfgelems     r-   r   z _parseconfig.<locals>.<listcomp>N  s     MMMw7==??MMMr/      =r      .r   s?   malformed --config option: %r (use --config section.name=value))
splitr   r   r   r   r   r   r   r   r   )r   r   configsr7  r   valuesections          r-   r   r   H  s   G  	MM#))D!:L:LMMMKD% JJtQ//MGT !$ !  LL${;;;NNGT512222J' 	 	 	"9  "3''	(  	 Ns   A7B  ACc           	          i }t          j         |t          j        ||                     d           dddgi           |S )Ns   strictflagsT
   repository   repo)rj  early
optaliases)r   r	   r   r   )r   r#   rl  s      r-   r   r   `  sS    G(((!G9-    Nr/   c                 @    d}g d}t          j        | ||dd          S )zCSplit args into a list of possible early options and remainder argss   R:)s   cwd=s   repository=s   repo=s   config=T)rj  keepsep)r   earlygetopt)r#   shortoptionslongoptionss      r-   r$  r$  m  s7    LAAAK lKT4   r/   c	           
      t   t          j         | |d|z  dd                    |          ||           	 t          ||||          }	t          j         | |d|z  dd                    |          |	||           n@# t          $ r3 t          j         | |d|z  dd                    |          ||            w xY w|	S )	Ns   pre-%sTrj   )r#   patsr  s   post-%sF)r#   resultr  r  s   fail-%s)r   rq   _runcommand	Exception)
luir$   r   fullargsr   rl  dcmdpatsrm  rw   s
             r-   
runcommandr  w  s   ICYYx     "gsA..	8$$		
 		
 		
 		
 		
    	8$$	
 	
 	
 	
 	 Js   AA8 8=B5c                 b   	 t          t          j                            |dd          d          5 }t	          |                                                                          }t          j        |v rt          j	        |v s	 ddd           dS t          j
        t          j                            |d                    }t          j        ||          }|j        }|                     |                    d          |           ddd           dS # 1 swxY w Y   dS # t          $ r Y dS w xY w)a!  if the current repository is shared one, this tries to read
    .hg/hgrc of shared source if we are in share-safe mode

    Config read is loaded into the ui object passed

    This should be called before reading .hg/hgrc or the main repo
    as that overrides config set in shared source   .hgs   requiresrbN   hgrc)openospathrq   rD  read
splitlinesrequirementsmodSHARESAFE_REQUIREMENTSHARED_REQUIREMENTr   r   _getsharedvfsbase
readconfigrE   )r   r  rh   r   hgvfs	sharedvfsroots          r-   _readsharedsourceconfigr    sp   "',,tV[994@@ 
	9Brwwyy335566L5EE#6,FF
	9 
	9 
	9 
	9 
	9 
	9 
	9 
	9 GBGLLv6677E!/|DDI>DMM)..114888
	9 
	9 
	9 
	9 
	9 
	9 
	9 
	9 
	9 
	9 
	9 
	9 
	9 
	9 
	9 
	9 
	9 
	9    sB   /D  ADD  A7DD  DD  DD   
D.-D.c                 (   	 t          j                    }nM# t          $ r@}t          j        t          d          t          j        |j                  z            d}~ww xY wd}||}n|}t          j	        |           t          j        |          pd}|s| }n|                                 }t          j                    rzt          ||           |                    t          j                            |dd          |           |                    t          j                            |dd          |           |rt'          j        ||          d         }|                                 }t          j                    rzt          ||           |                    t          j                            |dd          |           |                    t          j                            |dd          |           |rt          j	        |           ||fS )zpReturn (path, local ui object) for the given target path.

    Takes paths in [cwd]/.hg/hgrc into account."
    s+   error getting current working directory: %sNr/   r  r  s   hgrc-not-sharedr   )r   getcwdOSErrorr   r   r   rI   rJ   r  chdirr   findreporS  r   use_repo_hgrcr  r  r  rq   r   get_clone_path)r   rpathwdcwdrM   oldcwdr  r  s           r-   	_getlocalr    s   

o 
 
 
k<==!!*--.
 
 	

 F	z
B&3D Qggii!! 	Q#C...NN27<<fg>>EEENN27<<f6HII4PPP Q%c511!4ggii!! 	Q#C...NN27<<fg>>EEENN27<<f6HII4PPP 
9s    
A ;AA c                    	
 i 	 t          j         t          j                  n# t          j        $ r Y dS w xY wsdS t          j        }d         	                     dd          }t          j        ||          \  }}n"# t          j
        t          j        f$ r Y dS w xY w|d         |d         
r8t          j        
d          r%t                    \  }
fd		 fdS dS dS )z=Return the function to run the shell alias, if it is requiredNr   rz   ri  rC  c                  &     g dd          R  S Nr   r@   )r#   r   r   s   r-   r  z"_checkshellalias.<locals>.<lambda>  s!    BBr%DH%%% r/   c                  B    t          d  d d         g i 	  	        S r  )r  )r#   r   r  r  rl  r   s   r-   r  z"_checkshellalias.<locals>.<lambda>   s,    zsD!Hb'1b"
 
 r/   )r   r	   r   r   r   r   r   r   r   r   r   r   r   rC   r$  )r  r   r#   r&  strictr   r   
_earlyoptsr   r  r   rl  s   ```     @@@@r-   _checkshellaliasr    sj   G"4)<gFF     ~H
q'Cui00 h??"E$89    !*C	qB
 
tH-- 
*400
D%%%%%%
 
 
 
 
 
 
 
 
 	
	
 
 
 
s    , ??/B B*)B*c                 f   | j         | j        | j        d         }|rt          j        |           | j        d         }t          |          \  }}|h}| j        r|                    | j        j                   | j        d         s| j        d         s| j        d         rQdD ]N}t          j	        t          | j        |                             }|D ]}|                    d||d|z              O| j        d	         r|D ]}|                    d
ddd           n=| j        d	         du r.|                    d
d          r|                    d
ddd           |                    d
d          }	t          j        ||	          5 }
t          j        |           |j        _        t%          |t&          j                   t+          |          }|r/|D ]}t          j        |            |            cd d d            S |                    dd          }|r|t0          _        }t5          |          \  }}}|| _        |d         | j        d         k    r!t9          j        t=          d                    |d         | j        d         k    r!t9          j        t=          d                    |d         | j        d         k    r!t9          j        t=          d                    |d         | j        d         k    r!t9          j        t=          d                    |d         r|d         t0          _        |d         r|d         t0          _        |d         r)d              fd}                     |           |d	         r|
!                                 |d         s|d         s|d         rddD ]a}||         | j        |         k    rt          j	        t          ||                             }|D ]}|                    d||d|z              b|d         r|D ]}|                    dddd            |d!         r|D ]}|                    dd"d#d$           |"                    d%d          r|D ]	}d&|_#        
|d'         }|D ]0}|r|                    dd'|d(           tI          j%        |           1tM          j'        |d)                   r(                    d*|z              n%|d)         d+k    r|D ]}|)                                 |D ]}t          j        |           |d,         r t'          j*                  cd d d            S |d-         r%t'          j+        ||d u.          cd d d            S |s!t'          j+        d/          cd d d            S d }d d          }J j,        s |s	|s| j        }|rFj-        |j        _-        j.        |j        _.        j/        |j        _/        j0        |j        _0        nq	 tc          j2        || j3        j4        0          }|5                                s$t9          j        t=          d1          |z            |j                            d2d3|j6        d4           n# t8          j7        $ r  t8          j8        $ r |r j9        sŉj:        rr|st          j;        tx          j=                  }|d5         }|rY|>                    |          t          |          k    r3d6|g|z   | _         || j        d<   t          |           cY cd d d            S |s5t9          j        t=          d7          t1          jA                    z             Y nw xY w|r#|j        |d8         r|B                                }C                    d5|           n$|r"D                    t=          d9                     t          |          }F                    d:d;|           t          jG        |          fd<}	 t          ||||||||	  	        |r|| j        k    r|I                                 cd d d            S # |r || j        k    r|I                                 w w w xY w# 1 swxY w Y   d S )=Ns   cwdr}     verbose   debug   quiet)r  r  r  rz   r   s   profiles	   profilings   enableds   trues	   --profileFs   falses   --no-profile)enableds   fallbackencodingr   s&   option --config may not be abbreviateds#   option --cwd may not be abbreviatedsr   option -R has to be separated from other options (e.g. not -qR) and --repository may only be abbreviated as --repor   s(   option --debugger may not be abbreviateds   encodings   encodingmodes   timec                      t          j                    } | d         dk    r0| d         | d         | d         | d         t          j                    f} | S )Nr   g        r   r   r   r   )r  timesr   r   )ts    r-   	get_timesz_dispatch.<locals>.get_timesg  sE    HJJQ43;;1qtQqT1Q4>Ar/   c            
                      }                      t          d          | d         d         z
  | d         d         z
  | d         d         z
  | d         d         z
  | d         d         z
  fz             d S )Ns4   time: real %.3f secs (user %.3f+%.3f sys %.3f+%.3f)
r   r   r   r   r   )r   r   )r  r  sr   s    r-   
print_timez_dispatch.<locals>.print_timep  s    IKKNOO!qt!qt!qt!qt!qt	 	 	 	 	r/   ry   r{   r|   s   noninteractives   interactives   offs   -ys   insecureTs   colors   --colors   pagers   internal-always-s   autos   versionr   )r   s	   shortlist)r  presetupfuncsr@  s   repository '%s' is not locals   bundles   mainreporootr~  r   s   --repositorys+   no repository found in '%s' (.hg not found)s   hiddens   warning: --repository ignored
s   commands   %s
c                  @     t          j                  g R i S r"   )r   rK  )r#   r:   	strcmdoptr   s   r-   r  z_dispatch.<locals>.<lambda>  s-    -D'--bE4EEE9EE r/   )Jr#   r   r)   r  r  r  r$   addr   r   boolr   r   r   profiler   loadall	__class__rg  r	   r   r  
populateuir   r   fallbackencodingrq  r+   r   r   r   encodingmodeatexitstartr/  insecureconnectionsr   setupr   	parseboolr   disablepagerversion_r   r?  r%   r&   r'   r(   r   
repositoryr*   r@  localr  RequirementError	RepoErrorrA  rB  r<  r   r  countr   r   r  
unfilteredinsertr   rs   rR   r   r  rg   )rX   r  r  r  r  uisoptr   ui_r  profilershellaliasfnfallbackr  r   rl  rm  r  coloroptr$   r  reposguessr   r  r#   r:   r  r  r  r   s                            @@@@@@r-   r   r     so   8D	B 
6
"C
 
]+E"e$$ID#s)C
x  	$<H%< H%<
 4 	< 	<C"4(8(=#>#>??C < <eS#us{;;;;< 
# O 	K 	KCMM,
G\JJJJ	K		*	%	.	. >>,
33 	O
 MM,
HoNNNnn\:66G		3	0	0	0 GH 	3} 	3''' (R66 	" + +%c****<>>)G G G G G G G G. ::e%899 	1(0H%/5c4/@/@,T4* !$9!1)!<<<"1%N#O#OPPP6?c.v666"1%K#L#LMMM=!S%5m%DDD"O    ;3#3K#@@@"=>>  
 ; 	5 ' 4H?# 	=$+O$<H!7 	"   	A       IIj!!!: 	NN : 	@'("3 	@wx7H 	@7 @ @3<3#3C#888&tGCL'9'9:: @ @CMM%c53;????@ <  	J J Je\5.IIII$% 	D D De^VUCCCC>>+u-- 	/ / /*.'' 8$ 	 	C EeXxDDDK 122 	#HH(3.////X')) # #  """"  	' 	'C!#&&&&: 	)$R((wG G G G G G G Gx 7 	4>"c3d?CCC{G G G G G G G G|  	4>"l33G G G G G G G GB qqq'{ 7	;    x + f!w!w!w$=!&)&7 $	  D  ::<< #.=>>E   G%%!?DIw    -       , > 6d 64 6$,$4W5Et$L$LE$)!HE$ 6U););s5zz)I)I,;U+Ch+NBG 0 ?'0~~ 5 5WG G G G G G G GX  $ "'"2 !%=!" !" #+/"3"3	!4# #  # *  -W9% -??,,DKK4     	;GGA899:::(##
z7C(((&z22	EEEEEEE	T3"gq':   ((

OG G G G G G G GL  ((

(MG G G G G G G G G Gsx   A0b&Mb&+ b&b&;A+b&'A<Z$#b&$B'^b&8^b&^B%b&:a>!b&>%b##b&&b*-b*c                     	 t          j        d|z            5   |            cddd           S # 1 swxY w Y   dS # t          j        $ r# t          j        |t          d                    w xY w)z8Run a command function, possibly with profiling enabled.zRunning %s commandNs   invalid arguments)r   rR   r   rL  r   r   )r   rl  r   cmdfuncs       r-   r  r    s    ?[-344 	 	799	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ? ? ? a(<&=&=>>>?s!   = 
0= 4= 4= 2A/c           
      `   t          j        d          dddf}|                     dd          t          j                    D ]\  }}t	          j        t          |dd                    }t          j        |          }t          |dt          d	                    }|	                                s|d
||f} nrt          j
        |          rd |                                D             }|v rfd|D             }t          |p|          }	|d         |	|d         k     r||	||f}|d         }|\  }}}}t          |t          t          f          sd                    d |D                       }|pt          d          }
t          d          ||
||t	          j        |          fz  }n<|                     dd          }|t          d          }t          d          |z   dz   }t#          j        t&          j                                      dd          }d |t          d          |z  t          d          t          j                    z  z   t          d          d                    fdt-          t          j                              D                       z  z   z  }|S )z:Produce a warning message for the current active exceptionr   )rX  Nr/   rz   s   supportcontact
testedwithbuglinks   the extension author.s   unknownc                 8    g | ]}t          j        |d           S )r   )r   versiontuple)rn   r  s     r-   r   z%_exceptionwarning.<locals>.<listcomp>   s%    JJJ!d'1--JJJr/   c                      g | ]
}|k     |S r@   r@   )rn   r  cts     r-   r   z%_exceptionwarning.<locals>.<listcomp>$  s    1111!b&&Q&&&r/   r   r   rw  c                 6    g | ]}t          j        |          S r@   )r   r#  )rn   ro  s     r-   r   z%_exceptionwarning.<locals>.<listcomp>,  s#    @@@(++@@@r/   s   (version N/A)s   ** Unknown exception encountered with possibly-broken third-party extension "%s" %s
** which supports versions %s of Mercurial.
** Please disable "%s" and try your action again.
** If that fixes the bug please report it to %s
s)   https://mercurial-scm.org/wiki/BugTrackers?   ** unknown exception encountered, please report by visiting
**    
c                 ^    | d         }t          j        | d                   }|r|d|z   z  }|S )Nr   r   rj   )r   moduleversion)r   rM  vers      r-   ext_with_verz'_exceptionwarning.<locals>.ext_with_verD  s:    d&qt,, 	4#:C
r/   s   ** Python %s
s*   ** Mercurial Distributed SCM (version %s)
s   ** Extensions loaded: %s
s   , c                 &    g | ]} |          S r@   r@   )rn   r   r  s     r-   r   z%_exceptionwarning.<locals>.<listcomp>Q  s!    JJJQaJJJr/   )r   r  r   r   r   r#  r   r  r   rt  ismoduleinternalrx  maxr   bytesstrrq   r   sysbytesr4   versionr  sorted)r   worstr   modr  r  reporttestedlowernearestextverwarning
bugtracker
sysversionr  r  s                 @@r-   _exceptionwarningr    s    
	Q			B"c3E	yy)**2#.00 	7 	7ID# $0\3// J !.s33GS)Q/G-H-HIIF##%% j&'9 *3// JJz7G7G7I7IJJJFV||1111111E%/6**GQx7U1X#5#5gvw6Qx,1)j&'*ucl33 	@@Z@@@ J /A.//A
 
 6:tZ-DV-L-LMN YYu&788
GHHJ2  	
  	 "3;//77sCCJ   	
		
	*;<<t|~~M	O +,,jjJJJJ&1F1H1H*I*IJJJ 	
	G Nr/   c           	          t          |           }|                     dd|t          j        t	          j                                         |                     |           dS )zProduce a warning message for broken commands

    Called when handling an exception; the exception is reraised if
    this function returns False, ignored otherwise.
    s   commandexceptions   %s
%s
F)r  rR   r   r  r7   
format_excr   )r   r  s     r-   r   r   X  s`      ##GFF).0011	   GGG5r/   r"   )ErF   r   r`   r  r   r   r   r4   r7   i18nr   r   r   hgdemandimportr    r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r  r   r   r   r   r   utilsr   r   r   r    rN   rY   rQ   rU   rs   rT   ru   r   r   r   r
  r  rQ  rg  rq  r   r   r$  r  r  r  r  r   r  r  r   r@   r/   r-   <module>r     s     				 				 



 				  



                 " " " " " "                                             0         0 0 0 0 0 0 0 0f  :   3
 3
 3
l  $; ; ;  P P Pf}- }- }-@9 9 9x  .7 7 7,t t t t t t t tn! ! ! ! ! ! ! !H     "*F *F *FZ  0
 
 
  $ $ $N  0+ + + +\
 
 
Bq q qh? ? ?S S Sl    r/   