a
    &0_                     @   s  d dl mZm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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% ddl&m'Z'm(Z( G d	d
 d
e)Z*dd Z+ej,rdd Z-dd Z.ndd Z-dd Z.dd Z/dd Z0dd Z1dd Z2dd Z3dd Z4dd  Z5d!d" Z6d#d$ Z7G d%d& d&e)Z8G d'd( d(e)Z9d)d* Z:d+d, Z;d-d. Z<d/d0 Z=d1d2 Z>d3d4 Z?dAd5d6Z@d7d8 ZAd9d: ZBd;d< ZCd=d> ZDd?d@ ZEdS )B    )absolute_importprint_functionN   )_)getattr)tracing)cmdutilcolorcommandsdemandimportencodingerror
extensions	fancyoptshelphghook	profilingpycompatrcutil	registrarscmutiluiutil)procutil
stringutilc                   @   s   e Zd ZdddZdd ZdS )requestNc	           	      C   sD   || _ || _|| _|| _|| _|| _|| _i | _|p6g | _d | _	d S N)
argsr   repofinfoutferrfmsgearlyoptionsprereposetupscanonical_command)	selfr   r   r   r    r!   r"   r#   r%    r(   4/usr/lib/python3/dist-packages/mercurial/dispatch.py__init__7   s    
zrequest.__init__c                 C   s   d }| j j}zr|rp| \}}}z||i | W q   |d u rNt d }| j d | j jdd Y q0 qW |d ur|n|d ur|0 d S )Nr   s   error in exit handlers:
T)Zforce)r   Z_exithandlerspopsysexc_infoZ
warnnoi18n	traceback)r'   exchandlersfuncr   kwargsr(   r(   r)   _runexithandlersW   s     zrequest._runexithandlers)NNNNNNN)__name__
__module____qualname__r*   r3   r(   r(   r(   r)   r   6   s          
 r   c               
   C   s  zt   td" ttjdd } W d   n1 s<0    Y  d}zt| }W n. tjy } z|}d}W Y d}~n
d}~0 0 t	
| jdr| jdusJ | jjdusJ z| jj  W n, ty } z|}d}W Y d}~n
d}~0 0 t	
| jdr~| jdusJ | jjdus"J zB|durV|jtjkrV| jjdt|j  | jj  W n ty|   d}Y n0 t  W n ty   d}Y n0 t|d@  dS )	zrun the command in sys.argvzparse args into requestr   Ns   fouts   ferr
   abort: %s
   )	initstdior   logr   r   Zsysargvdispatchr   Z
StdioErrorr   safehasattrr   r!   flushIOErrorr"   errnoEPIPEwriter   
strtolocalstrerror_silencestdioKeyboardInterruptr,   exit)reqerrZstatuser(   r(   r)   runi   sB    0


rK   c                  C   s   dt jjd} tt jdr(t jj| d< tjt jjt jj	t jj
fi | t _dt jjd} tt jdrtt jj| d< tjt jjt jj	t jj
fi | t _tjt jjt jj	t jj
d t jjdt _d S )N
)newlineline_bufferingwrite_through)r,   stdoutrN   r   r=   rO   ioTextIOWrapperbufferr   errorsstderrstdin)r2   r(   r(   r)   r:      s6    r:   c               	   C   sZ   t jt jfD ]H} z|   W qW n ty2   Y n0 z|   W q tyR   Y q0 qd S r   )r,   rP   rU   r>   r?   closefpr(   r(   r)   rE      s    rE   c                  C   s$   t jt jt jfD ]} t|  qd S r   )r,   rV   rP   rU   r   Z	setbinaryrX   r(   r(   r)   r:      s    c                   C   s   d S r   r(   r(   r(   r(   r)   rE      s    c                    s   fdd  fdd| D S )Nc                    s   t d  |  S r   )difflibZSequenceMatcherZratiox)valuer(   r)   <lambda>       z_getsimilar.<locals>.<lambda>c                    s   g | ]} |d kr|qS )g333333?r(   ).0s)simr(   r)   
<listcomp>   r_   z_getsimilar.<locals>.<listcomp>r(   )symbolsr]   r(   )rb   r]   r)   _getsimilar   s    re   c                 C   sH   t |dkr"| td|d   n"|rDdt|}| td|  d S )Nr   s   (did you mean %s?)
r      , s   (did you mean one of %s?)
)lenr   joinsorted)rB   similarZssr(   r(   r)   _reportsimilar   s
    rk   c                 C   s   g }t |tjrt|j|j}t|jdkrp| tdt	
|jd |jd f  |jd dr| td n | td|jd   t| | |jr| td|j  d S )Nr   s   hg: parse error at %s: %s
r       s   unexpected leading whitespace
s   hg: parse error: %s
   (%s)
)
isinstancer   ZUnknownIdentifierre   rd   Zfunctionrg   r   r   r   bytestr
startswithrk   hint)rB   instrj   r(   r(   r)   _formatparse   s    
rs   c                 C   s   d dd | D S )Nrl   c                 s   s   | ]}t |V  qd S r   r   
shellquote)r`   ar(   r(   r)   	<genexpr>  r_   z_formatargs.<locals>.<genexpr>)rh   r   r(   r(   r)   _formatargs  s    ry   c                 C   s  t d | jr| j}n| jr,| jj}ntj}z| jsFtj | _| j	t
| j| j | jd rx| jdddd | jr| j| j_| jr| j| j_| jr| j| j_| jr| j| j_W n tjy } zH|td|j  |jr|td|j  W Y d}~W d   d	S d}~0  tjy^ } z&t|j| W Y d}~W d   d	S d}~0 0 t| j}t }d
}zzt| pd}W n  tjy } z@| jtd|  |jr| jtd|j   W Y d}~nd}~0  ty } zz0t|tjrtd}ntd}| j| W nJ tjy@   Y n6 t yt } z|j!t!j"kr` W Y d}~n
d}~0 0 d	}W Y d}~n
d}~0 0 W t | }| j#  | jj$r|d | jj%d< | jjdi t&'| jj% |d@ }| jjdd|||||| j(d z| )  W n   |p d	}Y n0 | j#  nt | }| j#  | jj$r|d | jj%d< | jjdi t&'| jj% |d@ }| jjdd|||||| j(d z| )  W n   |pd	}Y n0 | j#  0 |W  d   S 1 s0    Y  dS )zErun the command specified in req.args; returns an integer status codezdispatch.dispatch	   traceback   ui   on   --tracebackr8   rm   Nr7   r   r   s   ** ProgrammingError: %s
s   ** (%s)
s   killed!
s   interrupted!
i  s   command_duration	   uiblocked   ui blocked ms
r9   s   commandfinishs!   %s exited %d after %0.2f seconds
)return_codedurationr&   )r~   r   )r~   r   )*r   r;   r"   r   r   rU   uimodloadr$   update_earlyparseoptsr   	setconfigr    r!   r#   r   AbortrB   r   messagerq   
ParseErrorrs   ry   r   timer	_runcatchZProgrammingErrorrF   rn   SignalInterruptr?   r@   rA   r>   ZlogblockedtimesZ_blockedtimesr   	strkwargsr&   r3   )rH   r"   rr   msgZ	starttimeretr   r   r(   r(   r)   r<     s    




"$



  


  
r<   c              	      s   t dt dd } jz*dD ] }tt|d }|r t|| q W n tyV   Y n0  fdd}t|W  d    S 1 s0    Y  d S )Nzdispatch._runcatchc                  W   s
   t jd S r   )r   r   rx   r(   r(   r)   	catchterme  s    z_runcatch.<locals>.catchterm)s   SIGBREAKs   SIGHUPs   SIGTERMc                     s  d } zBt   jd d  tji }|d }t|tjd\}}|d } W n  tjtj	t
tjfyf   Y n0 | dkrd|v rt jdks jd dks jd ds jd	 dks jd
 dkrttdt jf zd}dtji}dtji}t j jd } jr:|D ]"\}	}
} jjj|	|
|dd qdd}t}|rZ r`d}nX jd rt 2 zt|}W n t y   Y n0 W d    n1 s0    Y  |j||< |j||<  jd rH!td |dkr|| |d kr!td|  t  ||   W d    n1 s>0    Y  zt" W #  W S #  0 W n6    jd rt$%  || t&' d	   Y n0 d S )Nr   Fs   serves   --stdio   s   -Rr      --      s/   potentially unsafe serve --stdio invocation: %ss   pdb   config   --config)sourcer{      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GetoptErrorrg   rp   r   r   r   ZpprintpdbZ	set_traceZpost_mortem_parseconfigr   r$   r   r   configplainr   Zdeactivated
__import__ImportErrorwarn	_dispatchr>   r.   	print_excr,   r-   )ZrealcmdZcmdargscmdaliasesentryZdebuggerZ
debugtraceZdebugmortemZcfgsZsecnamevalZdebugmodrH   r   r(   r)   _runcatchfuncq  s    






&


*z _runcatch.<locals>._runcatchfunc)r   r;   r   r   signal
ValueError
_callcatch)rH   r   r   numr   r(   r   r)   r   b  s    nr   c                 C   s6  zt | |W S  tjyV } z.| td|jd|jf  W Y d}~nd}~0  tj	y } zz|j
r| d t|j}| td|j
|f  tj| |j
ddd n"| td	|j  | td
 W Y d}~nRd}~0  tjy } zt| j| W Y d}~dS d}~0  tjy } ztd|j
 }z,tj| t|j
dd}| | | | W nt tjtjfy   d}|jrt|j|j
}|r| | t| j| d}|s| | | td Y n0 W Y d}~nHd}~0  ty    Y n, ty    Y n   t| s, Y n0 dS )zlike scmutil.callcatch but handles more high-level exceptions about
    config parsing and commands. besides, use handlecommandexception to handle
    uncaught exceptions.
    s&   hg: command '%s' is ambiguous:
    %s
rl   N   helps
   hg %s: %s
FT)Zfullcommands   hg: %s
s0   (use 'hg help -v' for a list of global options)
r7   s   hg: unknown command '%s'
)
unknowncmds'   (use 'hg help' for a list of commands)
)r   Z	callcatchr   r   r   r   prefixrh   ZmatchesCommandErrorr   pagerr   ro   r   r
   help_r   rs   r   r   ZformattedhelprB   r   Zall_commandsre   rk   r?   rF   handlecommandexception)r   r1   rr   ZmsgbytesZnocmdmsgZ	formattedZ	suggestedrb   r(   r(   r)   r     s\    
$



(
r   c                    sz   g }t | dst| d|}|rrdttj|}g  fdd}td||}fddt	 D  t
|}|  S )	Ns	   _origfuncr   rl   c                    sB   t | dd }| |t k r0 | S ttdd S )Nr   s#   too few arguments for command alias)intgroupappendrg   r   r   r   )mr   	givenargsnumsr(   r)   replacer$  s
    
zaliasargs.<locals>.replacer
   \$(\d+|\$)c                    s   g | ]\}}| vr|qS r(   r(   )r`   ir\   )r   r(   r)   rc   ,  r_   zaliasargs.<locals>.<listcomp>)r   r=   r   rh   mapr   ru   resub	enumerater   
shlexsplit)fnr   r   r   r   r(   r   r)   	aliasargs  s    
r   c                    s|   dd t |D  |  d< d d< d| d< ddd	 |D  d
< d  dd}t|}| fdd|S )zXinterpolate args into cmd for shell aliases

    This also handles $0, $@ and "$@".
    c                 S   s   i | ]\}}d |d  |qS )s   $%dr   r(   )r`   r   argr(   r(   r)   
<dictcomp>8  r_   z$aliasinterpolate.<locals>.<dictcomp>s   $0   $s   $$rl   s   $@c                 s   s   | ]}t |V  qd S r   rt   )r`   r   r(   r(   r)   rw   @  r_   z#aliasinterpolate.<locals>.<genexpr>s   "$@"   |s   \$c                    s    |    S r   )r   r[   Z
replacemapr(   r)   r^   D  r_   z"aliasinterpolate.<locals>.<lambda>)r   rh   keysreplacer   compiler   )r   r   r   Zregexrr(   r   r)   aliasinterpolate1  s    
r   c                   @   s:   e Zd Zdd ZdddZedd Zdd	 Zd
d ZdS )cmdaliasc              
      sl  |  _  _d _| _d  _g  _g  _d _d  _d _	| _
zBt j |\}}t|D ]\}}	|	|u r`| _ q|q`d _W n tjy   d _Y n0  jstd j   _d S  jdr jdd  d _ fdd}
|
 _d _ || j d S zt j}W nB ty^ } z(td	 j t|f  _W Y d }~d S d }~0 0 t|\}}|rtd
 j dtj| d f  _d S |d  _}| _z^t||dd }t|dkr|\ _ _}n|\ _ _d }d _ ||| j| W nX tjy>   td j |f  _d _	Y n* tj yf   td j |f  _Y n0 d S )Nr_   FTs   no definition for alias '%s'   !r   c                    sX   dd jf  i} fdd}td|}tj |}j||dj dS )Ns   HG_ARGSrl   c                    s`   |   d dkr|  S t|   d t kr8|  S dt|   d jf  dS d S )Nr   r   sL   No argument found for substitution of %i variable in alias '%s' definition.
r_   )groupsr   r   rg   debugr   )r   )r   r'   r   r(   r)   	_checkvari  s    z0cmdalias.__init__.<locals>.fn.<locals>._checkvarr   s   alias_%s)environZ
blockedtag)rh   r   r   r   r   system)r   r   envr   r   r'   Zshdef)r   r   r)   r   f  s    zcmdalias.__init__.<locals>.fns&   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   r   Z	iteritemsshadowsr   r   r   rp   shellalias_populatehelpr   r   r   forcebytestr_earlysplitoptsrh   Zziplistr+   rg   r   )r'   r   r   r   cmdtabler   r   r   r   rJ   r   r   rr   Z	earlyoptsr   Z
tableentryZcmdhelpr(   r   r)   r*   H  s    

zcmdalias.__init__Nc           
      C   s   i }dD ]N}| dd||f d }|d u r,qt|sNtd||f | _ d S |||< q|d|pdd| _| jr| jd| r| jdt| d  | _d	|v | _	|d	t
|}	|	d urt
|	}	|	| _|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   Z
isasciistrr   r   getr   rp   rg   Zowndocr   ZgetdocZsysstr__doc__r   r   ZCATEGORY_NONEZhelpcategory)
r'   r   r   r   r   Zdefaulthelpcfgkvdocr(   r(   r)   r     s0    



zcmdalias._populatehelpc                 C   s   t tj| j}t| j|S r   )r   maplistr   
expandpathr   r   r   )r'   r   r(   r(   r)   r     s    zcmdalias.argsc                 C   sF   dt  ddd}||vr t|| js2t| dr:|| S t| j|S )NTF)norepointentsoptionalrepo	inferrepo   shell)setAttributeErrorr   r   r=   r   r   )r'   r   Z	adefaultsr(   r(   r)   __getattr__  s    zcmdalias.__getattr__c                 O   s  | j rdd }| jrTz.t|| jd d \}}td||f }W n tjyR   Y n0 tj| j |d| j	r|
d| j| jf  |dd| j| j t| dr| j|g|R i |S z t| j|g|R i |W S  tjy   d| jg| j }|
d| j|f   Y n0 d S )	Nr   s"   '%s' is provided by '%s' extension)rq   s    alias '%s' shadows command '%s'
s   commandaliass   alias '%s' expands to '%s'
r   rl   )r   r   r   Zdisabledcmdr   r   r   r   r   r   r   r   r;   r   r   r=   r   checksignatureSignatureErrorrh   r   )r'   r   r   r   rq   r   Zextr(   r(   r)   __call__  s6     zcmdalias.__call__)N)	r4   r5   r6   r*   r   propertyr   r   r  r(   r(   r(   r)   r   G  s   `

r   c                   @   s>   e Zd ZdZdd Zejdd Zdd Zdd	 Z	d
d Z
dS )lazyaliasentryz<like a typical command entry (func, opts, help), but is lazyc                 C   s,   || _ || _|| _| | _|| _d| _d S )NT)r   r   r   copyr   r   r   )r'   r   r   r   r   r   r(   r(   r)   r*     s    
zlazyaliasentry.__init__c                 C   s   t | j| j| j| j| jS r   )r   r   r   r   r   r   r'   r(   r(   r)   	_aliasdef  s    zlazyaliasentry._aliasdefc                 C   s6   | j }|dkr|S |dkr |jS |dkr.|jS td S )Nr   r   r   )r  r   r   r   )r'   nZaliasdefr(   r(   r)   __getitem__	  s    zlazyaliasentry.__getitem__c                 c   s   t dD ]}| | V  qd S Nr   )range)r'   r   r(   r(   r)   __iter__  s    zlazyaliasentry.__iter__c                 C   s   dS r
  r(   r  r(   r(   r)   __len__  s    zlazyaliasentry.__len__N)r4   r5   r6   r   r*   r   Zpropertycacher  r	  r  r  r(   r(   r(   r)   r    s   
r  c              
   C   sn   | j dddD ]Z\}}z|| j|kr*W qW n ttfyB   Y n0 | d|}t| ||||}|||< qd S )Nr   T)Z	ignoresub)Zconfigitemsr   KeyErrorr   Zconfigsourcer  )r   r   r   r   r   r   r(   r(   r)   
addaliases  s    r  c              
   C   s  i }i }zt  |tj|}W n8 tjyT } ztd t|W Y d }~n
d }~0 0 |r|d |dd   }}t	
|tj| dd\}}|d }t|d |}| d|}|rttjt|| }t|d }	nd }g }	tjD ]*}
|	|
d |
d ||
d  |
d f qzt j ||	|dd}W n: tjyb } zt|t|W Y d }~n
d }~0 0 tjD ] }
|
d }|| ||< ||= qj||r|d pd |||fS )	Nr   r   r{      stricts   defaultsr   T)gnu)r   r
   r   r   r   r   r   r   r   r   r   r   
configboolr   r   r   r   r   r   r   listr   )r   r   options
cmdoptionsrr   r   r   r   defaultscor  r(   r(   r)   _parse-  sB    (
((

r  c              
   C   s   g }|D ]}zZdd | ddD \}}| dd\}}|r@|sDt| |||d ||||f W q ttfy   ttdt	| Y q0 q|S )z0parse the --config options from the command linec                 S   s   g | ]}|  qS r(   )strip)r`   Zcfgelemr(   r(   r)   rc   `  r_   z _parseconfig.<locals>.<listcomp>   =r      .r   s?   malformed --config option: %r (use --config section.name=value))
splitr   r   r   r   r   r   r   r   ro   )r   r   Zconfigsr   r   r]   Zsectionr(   r(   r)   r   Z  s$    r   c                 C   s.   i }t j |tj|| d dddgid |S )Ns   strictflagsT
   repository   repo)r  ZearlyZ
optaliases)r   r
   r   r   )r   r   r  r(   r(   r)   r   r  s    
r   c                 C   s    d}g d}t j| ||d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)r  Zkeepsep)r   Zearlygetopt)r   ZshortoptionsZlongoptionsr(   r(   r)   r     s
    
r   c	           
      C   s   t j | |d| dd|||d z6t||||}	t j | |d| dd||	||d W n6 ty   t j | |d| dd|||d  Y n0 |	S )	Ns   pre-%sTrl   )r   patsr   s   post-%sF)r   resultr   r   s   fail-%s)r   rh   _runcommand	Exception)
luir   r   fullargsr   r  dcmdpatsr  r   r(   r(   r)   
runcommand  sB    	

	r(  c              
   C   s   |du rTzt  }W n> tyR } z&ttdt |j W Y d}~n
d}~0 0 t	|p`d}|sl| }n(| 
 }t r|tj|dd| |r||}| 
 }t r|tj|dd| ||fS )zpReturn (path, local ui object) for the given target path.

    Takes paths in [cwd]/.hg/hgrc into account."
    Ns+   error getting current working directory: %sr_   s   .hgs   hgrc)r   getcwdOSErrorr   r   r   rC   rD   r   findrepor  r   Zuse_repo_hgrcZ
readconfigospathrh   r   )r   rpathZwdrJ   r-  r$  r(   r(   r)   	_getlocal  s*    

r/  c              	      s   i zt   tj W n tjy.   Y dS 0  s8dS tj} d z"dd}t||\}}W n t	j
t	jfy   Y dS 0 |d |d rtdrt \}  fdd fddS dS )	z=Return the function to run the shell alias, if it is requiredNr   r{   r  r   c                      s   g dd  R  S Nr   r(   r(   )r   r   r   r(   r)   r^     r_   z"_checkshellalias.<locals>.<lambda>c                
      s    t d  d d g i 	S r0  )r(  r(   )r   r   r&  r$  r  r   r(   r)   r^     s   )r   r
   r   r   r   r   r  r   r   r   r   r   r   r=   r   )r$  r   r   r   strictr   r   Z
_earlyoptsr(   )r   r   r&  r   r$  r  r   r)   _checkshellalias  s(    r2  c                    s  | j  | j| jd }|r$t| | jd }t|\}}|h}| jrX|| jj | jd sv| jd sv| jd rdD ]6}t	t
| j| }|D ]}|d||d|  qqz| jd	 r|D ]}|d
ddd q|d
d}	tj||	d}
t| |j_t|tj t| }|rN|D ]}t| q(| W  d    S |dd}|rf|t_ }t| \} }}|| _|d | jd krttd|d | jd krttd|d | jd krttd|d | jd krttd|d r |d t_|d r4|d t_|d rfdd  fdd} | |d	 rx|
!  |d s|d s|d rdD ]P}|| | j| krqt	t
|| }|D ]}|d||d|  q̐q|d r|D ]}|dddd q|d  r8|D ]}|dd!d"d# q |"d$d%rX|D ]}d&|_#qJ|d' }|D ]&}|r~|dd'|d( t$%| qdt&'|d) r(d*|  n"|d) d+kr|D ]}|)  q|D ]}t| q|d, rt*W  d    S |d- r2tj+||d ud.W  d    S |sRt+d/W  d    S d } d d  }d uspJ j,s|s|s| j}|rj-|j_-j.|j_.j/|j_/j0|j_0nzJt1j2|| j3j4d0}|5 sttd1| |jd2d3|j6d4 W n tj7y    Y n tj8y   |r6 j9s҈j:r r|st;t<j= }|d5 }|r|>|t?|krd6|g| | _ || jd< t@|  Y W  d    S |st8td7tA   Y n0 |r|j|d8 r|B } Cd5| n|rDtd9 tE|}Fd:d;| tG| fd<d=}zDtH||||||||	W |r~|| jkr~|I  W  d    S n|r|| jkr|I  0 W d    n1 s0    Y  d S )>Ns   cwdr     verbose   debug   quiet)r3  r4  r5  r{   r   s   profiles	   profilings   enableds   trues	   --profile)Zenableds   fallbackencodingr   s'   option --config may not be abbreviated!s$   option --cwd may not be abbreviated!ss   option -R has to be separated from other options (e.g. not -qR) and --repository may only be abbreviated as --repo!r   s)   option --debugger may not be abbreviated!s   encodings   encodingmodes   timec                  S   s:   t  } | d dkr6| d | d | d | d t f} | S )Nr   g        r   r   r   r   )r,  timesr   r   tr(   r(   r)   	get_timesF  s    "z_dispatch.<locals>.get_timesc               
      sb     }  td| d d  | d d  | d d  | d d  | d d  f  d S )Ns4   time: real %.3f secs (user %.3f+%.3f sys %.3f+%.3f)
r   r   r   r   r   )r   r   r7  )r9  ra   r   r(   r)   
print_timeO  s    z_dispatch.<locals>.print_timerz   r|   r}   s   noninteractives   interactives   offs   -ys   insecureFTs   colors   --colors   pagers   internal-always-s   autos   versionr   )r   s	   shortlist)r-  Z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                      s   t g R i S r   )r   r   r(   )r   r1   	strcmdoptr   r(   r)   r^     r_   z_dispatch.<locals>.<lambda>)Jr   r   r$   r,  chdirr/  r   addr   ro   boolr   r  r   profiler   Zloadall	__class__r  r
   r   r2  Z
populateuir   r   Zfallbackencodingr  r&   r   r   r   Zencodingmodeatexitstartr   Zinsecureconnectionsr	   Zsetupr   Z	parseboolr   ZdisablepagerZversion_r   r   r    r!   r"   r#   r   Z
repositoryr%   r   ZlocalrootZRequirementErrorZ	RepoErrorr   r   r   r   r+  countrg   r   r)  Z
unfilteredinsertr   ry   r;   r   r(  rW   )rH   cwdr.  r-  r$  ZuisZoptr   Zui_r?  ZprofilerZshellaliasfnZfallbackr%  r   r  r  r:  Zcoloroptr   r'  ZreposZguessr   r&  r(   )r   r1   r9  ra   r;  r   r)   r     sJ   
















"








 r   c                 C   sd   z:t d|  | W  d   W S 1 s.0    Y  W n$ tjy^   t|tdY n0 dS )z8Run a command function, possibly with profiling enabled.zRunning %s commandNs   invalid arguments)r   r;   r   r  r   r   )r   r  r   Zcmdfuncr(   r(   r)   r"    s
    *r"  c                    s  t jdd d df}| dddu rt D ]\}}tt|dd}t|dtd	}| sn|d
|f} qt	|rzq.dd |
 D } |v rq. fdd|D }t|p|}|d du s||d k r.|||f}q.|d dur0|\}}}t|ttfsddd |D }td|||t|f }	n.| dd}
|
du rNtd}
td|
 d }	ttjdd}|	td| tdt    tdddd t D   7 }	|	S )z:Produce a warning message for the current active exceptionr   )r  Nr_   r{   s   supportcontact
testedwithZbuglinks   the extension author.s   unknownc                 S   s   g | ]}t |d qS )r   )r   versiontupler`   r8  r(   r(   r)   rc     r_   z%_exceptionwarning.<locals>.<listcomp>c                    s   g | ]}| k r|qS r(   r(   rI  Zctr(   r)   rc     r_   r   r   r  c                 S   s   g | ]}t |qS r(   )r   r   )r`   r  r(   r(   r)   rc   
  r_   s   ** Unknown exception encountered with possibly-broken third-party extension %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
**    
s   ** Python %s
s*   ** Mercurial Distributed SCM (version %s)
s   ** Extensions loaded: %s
rf   c                 S   s   g | ]}|d  qS )r   r(   )r`   r\   r(   r(   r)   rc   %  r_   )r   rH  r   r   r   r   r   r   r  Zismoduleinternalr  maxrn   bytesstrrh   r   sysbytesr,   versionr   )r   Zworstr   modrG  ZreportZtestedlowerZnearestwarningZ
bugtrackerZ
sysversionr(   rJ  r)   _exceptionwarning  sj    







rT  c              	   C   s0   t | }| dd|tt  | | 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)rT  r;   r   rO  r.   
format_excr   )r   rS  r(   r(   r)   r   +  s    
r   )N)FZ
__future__r   r   rZ   r@   r   rQ   r,  r   r   r   r,   r.   Zi18nr   r   r   Zhgdemandimportr    r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Zutilsr   r   objectr   rK   Zispy3r:   rE   re   rk   rs   ry   r<   r   r   r   r   r   r  r  r  r   r   r   r(  r/  r2  r   r"  rT  r   r(   r(   r(   r)   <module>   s`   P3-.
Z 8 2$-
'
! i	J