ó  çƒQc@sÆddlmZddlZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl Z ddl Z ddlZdefd„ƒYZdS(iÿÿÿÿ(t_NtuicBseZd2d„Zd„Zd„Zd„Zd2ed2d2d„Zd2d2d„Z d„Z d„Z e d„Z d „Zed „Zd2ed „Zd2ed „Zeed „Zd2ed„Zded„Zd2ed„Zed„Zed„Zed„Zd2d„Zd„Zd„Zd2d„Zd„Zed„Zd„Zd„Z d„Z!d„Z"d„Z#d „Z$d!„Z%d"d#„Z&d$d%„Z'dd&„Z(d2d2d'„Z)d(„Z*d)„Z+d*„Z,d+„Z-d,„Z.d2ed-„Z/d.„Z0d"d"d2d/„Z1d0„Z2d1„Z3RS(3cCs…g|_t|_|_|_|_t|_tjƒ|_ tjƒ|_ tjƒ|_ t ƒ|_ t ƒ|_t|_|r'|j|_|j|_|j|_|j jƒ|_ |j jƒ|_ |j jƒ|_ |j jƒ|_ |jjƒ|_|j|_|j|_|jƒnZtj|_tj|_tj|_tj|_x'tjƒD]}|j|dtƒqdWdS(Nttrust(t_bufferstFalsetquiettverboset debugflagt tracebackflagtTruet_reportuntrustedtconfigt_ocfgt_tcfgt_ucfgtsett _trustuserst _trustgroupst callhookstfouttferrtfintcopytenviront fixconfigtsyststdouttstderrtstdintostscmutiltrcpatht readconfig(tselftsrctf((s0/sys/lib/python2.7/site-packages/mercurial/ui.pyt__init__ s6               cCs |j|ƒS(N(t __class__(R!((s0/sys/lib/python2.7/site-packages/mercurial/ui.pyR0scCstj|||ƒS(N(t formatter(R!ttopictopts((s0/sys/lib/python2.7/site-packages/mercurial/ui.pyR&3scCsÓtj|ƒ}tj|ƒr"tS|j|j}}d|ksMd|krQtStj|jƒ}tj|j ƒ}||ksŸ||ksŸ|tjƒkr£tS|j rÏ|j t dƒ|||fƒnt S(Nt*s6not trusting file %s from untrusted user %s, group %s (tutiltfstattisownerR RRtusernametst_uidt groupnametst_gidR twarnRR(R!tfpR#tstttusersttgroupstusertgroup((s0/sys/lib/python2.7/site-packages/mercurial/ui.pyt_trusted6s* c Csñyt|ƒ}Wntk r0|s*dS‚nXtjƒ}|pX|pX|j||ƒ}y*|j||d|d|ƒ|jƒWn?tjk rÆ} |r¦‚n|jt dƒt | ƒƒnX|j ƒr0x,dD]$} | |d krÚ|d | =qÚqÚWx+|j d ƒD]\} } |d | =qWn|j dƒrmx+|j dƒD]\} } |d| =qOWn|r™|j j|ƒ|j j|jƒn|jj|ƒ|jj|jƒ|dkrÝtjjdƒ}n|jd|ƒdS(Ntsectionstremaps ignored: %s tdebugtfallbackencodingRtslasht logtemplatetstylet tracebackRRtdefaultstaliast~troot(sdebugR<squietsslashR>R?s tracebacksverbose(topentIOErrorR R8treadtcloseterrort ConfigErrorR1RtstrtplaintitemsR tupdateR RtNoneRtpatht expanduserR( R!tfilenameRDRR9R:R2tcfgttrustedtinsttktv((s0/sys/lib/python2.7/site-packages/mercurial/ui.pyR IsD  !   c Cs0|dkr&|ptjƒ}x|j|j|jfD]è}xß|jdƒD]Î\}}|seqMnd|kr²|jtdƒ|||j d|ƒfƒ|j ddƒ}nt j |ƒ}t j |ƒ rtjj|ƒ rtjjtjj||ƒƒ}n|jd||ƒqMWq7Wn|dkrå|jddƒ|_|jp_|jddƒ|_|j o~|jddƒ|_|jr©|jr©t|_|_n|jpÄ|jdd tƒ|_|jdd tƒ|_n|dkr,|jj|jd d ƒƒ|jj|jd d ƒƒndS(Ntpathss%%s((deprecated '%%' in path %s=%s from %s) t%RR;RRtreport_untrustedR@RTtuserstgroups(Nspaths(Nsui(Nstrusted(RORtgetcwdR RR RMR1Rt configsourcetreplaceR*t expandpatht hasschemeRPtisabstnormpathtjoinRt configboolRRRRR R RRRNt configlistR(R!RDtsectiontctntp((s0/sys/lib/python2.7/site-packages/mercurial/ui.pyRts4  #$  cCs:|jj||ƒ|jj||ƒ|jj||ƒfS(N(R tbackupR R(R!Rgtitem((s0/sys/lib/python2.7/site-packages/mercurial/ui.pyt backupconfig–scCs@|jj|dƒ|jj|dƒ|jj|dƒdS(Niii(R trestoreR R(R!tdata((s0/sys/lib/python2.7/site-packages/mercurial/ui.pyt restoreconfigšscCs_|r|jj|||ƒn|jj|||ƒ|jj|||ƒ|jd|ƒdS(NRg(R RR RR(R!Rgtnametvaluetoverlay((s0/sys/lib/python2.7/site-packages/mercurial/ui.pyt setconfigŸs cCs|r|jp|jS(N(RR (R!t untrusted((s0/sys/lib/python2.7/site-packages/mercurial/ui.pyt_data¦scCs|j|ƒj||ƒpdS(Ntnone(Rvtsource(R!RgRqRu((s0/sys/lib/python2.7/site-packages/mercurial/ui.pyR^©sc CsÖt|tƒr|}n |g}xH|D]:}|j|ƒj||dƒ}|dk r(|}Pq(q(W|}|jrÒ| rÒ|jrÒ|jj||ƒ}|dk rÒ||krÒ|jd|||fƒqÒn|S(Ns3ignoring untrusted configuration option %s.%s = %s ( t isinstancetlistRvtgetRORR RR;( R!RgRqtdefaultRut alternatesRiRrtuvalue((s0/sys/lib/python2.7/site-packages/mercurial/ui.pyR ¬s     cCs²|j||||ƒ}|dkr(dStjj|ƒ sGd|kr®|j|||ƒ}d|kr®tjj|jdƒdƒ}tjj|tjj |ƒƒ}q®n|S(sEget a path config item, expanded relative to repo root or config files://t:iN( R RORRPRbR^tdirnametrsplitRdRQ(R!RgRqR|RuRWR"tbase((s0/sys/lib/python2.7/site-packages/mercurial/ui.pyt configpathÁs  'cCs|j||d|ƒ}|dkr(|St|tƒr;|Stj|ƒ}|dkr{tjtdƒ|||fƒ‚n|S(sPparse a configuration element as a boolean >>> u = ui(); s = 'foo' >>> u.setconfig(s, 'true', 'yes') >>> u.configbool(s, 'true') True >>> u.setconfig(s, 'false', 'no') >>> u.configbool(s, 'false') False >>> u.configbool(s, 'unknown') False >>> u.configbool(s, 'unknown', True) True >>> u.setconfig(s, 'invalid', 'somevalue') >>> u.configbool(s, 'invalid') Traceback (most recent call last): ... ConfigError: foo.invalid is not a boolean ('somevalue') s%s.%s is not a boolean ('%s')N( R RORytboolR*t parseboolRIRJR(R!RgRqR|RuRWtb((s0/sys/lib/python2.7/site-packages/mercurial/ui.pyReÍs  cCsp|j||d|ƒ}|dkr(|Syt|ƒSWn3tk rktjtdƒ|||fƒ‚nXdS(s parse a configuration element as an integer >>> u = ui(); s = 'foo' >>> u.setconfig(s, 'int1', '42') >>> u.configint(s, 'int1') 42 >>> u.setconfig(s, 'int2', '-42') >>> u.configint(s, 'int2') -42 >>> u.configint(s, 'unknown', 7) 7 >>> u.setconfig(s, 'invalid', 'somevalue') >>> u.configint(s, 'invalid') Traceback (most recent call last): ... ConfigError: foo.invalid is not an integer ('somevalue') s%s.%s is not an integer ('%s')N(R ROtintt ValueErrorRIRJR(R!RgRqR|RuRW((s0/sys/lib/python2.7/site-packages/mercurial/ui.pyt configintís  ic Cs|j||ƒ}}|d krBt|tƒs5|S|}}nd}tjd|tjƒ}|r®|jƒ\}} | jƒ} t ddddddƒj | dƒ}nyt t |ƒ|ƒSWn3t k rûtjtd ƒ|||fƒ‚nXd S( s©parse a configuration element as a quantity in bytes Units can be specified as b (bytes), k or kb (kilobytes), m or mb (megabytes), g or gb (gigabytes). >>> u = ui(); s = 'foo' >>> u.setconfig(s, 'val1', '42') >>> u.configbytes(s, 'val1') 42 >>> u.setconfig(s, 'val2', '42.5 kb') >>> u.configbytes(s, 'val2') 43520 >>> u.configbytes(s, 'unknown', '7 MB') 7340032 >>> u.setconfig(s, 'invalid', 'somevalue') >>> u.configbytes(s, 'invalid') Traceback (most recent call last): ... ConfigError: foo.invalid is not a byte quantity ('somevalue') is([^kmbg]+?)\s*([kmg]?)b?$RVitmitgi@s#%s.%s is not a byte quantity ('%s')N(R RORyRKtretmatchtIR\tlowertdictR{R‡tfloatRˆRIRJR( R!RgRqR|RutorigtstringtmultipleRŠtkey((s0/sys/lib/python2.7/site-packages/mercurial/ui.pyt configbytes s    * cs¬‡‡fd†‰‡‡fd†‰‡fd†‰|j||d|ƒ}|dkrf|p`g}nt|tƒr¨ˆ|jdƒƒ}|dkr¨|pŸg}q¨n|S(sparse a configuration element as a list of comma/space separated strings >>> u = ui(); s = 'foo' >>> u.setconfig(s, 'list1', 'this,is "a small" ,test') >>> u.configlist(s, 'list1') ['this', 'is', 'a small', 'test'] c s$t}xF|t|ƒkrN||jƒs;||dkrNt}|d7}q W|t|ƒkrnd||fS|r„|jdƒn||dkr°|d r°ˆ||dfS||dkrÿ|dddkrÿ|dd |||d<ˆ||dfS|dc||7<ˆ||dfS(Nt,itt"iÿÿÿÿs\(RtlentisspaceR ROtappend(tpartststoffsett whitespace(t _parse_plaint _parse_quote(s0/sys/lib/python2.7/site-packages/mercurial/ui.pyR¡:s5 $c sN|t|ƒkr‰||dkr‰|jdƒ|d7}x@|t|ƒkr{||jƒsn||dkr{|d7}q<Wˆ||fSx›|t|ƒkr&||dkr&||dkr|dt|ƒkr||ddkr|d7}|dcd7Return a short representation of a user name or email address.(RR*t shortuser(R!R6((s0/sys/lib/python2.7/site-packages/mercurial/ui.pyRÁÎs cCsxtj|ƒs0tjjtjj|dƒƒr4|S|jd|ƒ}| rn|dk rn|jd|ƒ}n|pw|S(s:Return repository location relative to cwd or from [paths]s.hgRXN(R*RaRRPtisdirRdR RO(R!tlocR|RP((s0/sys/lib/python2.7/site-packages/mercurial/ui.pyR`Ôs 0cCs|jjgƒdS(N(RRœ(R!((s0/sys/lib/python2.7/site-packages/mercurial/ui.pyt pushbufferÞscCsdj|jjƒƒS(s³pop the last buffer and return the buffered output If labeled is True, any labels associated with buffered output will be handled. By default, this has no effect on the output returned, but extensions and GUI tools may handle this argument and returned styled output. If output is being buffered so it can be captured and parsed or processed, labeled should not be set to True. R˜(RdRtpop(R!tlabeled((s0/sys/lib/python2.7/site-packages/mercurial/ui.pyt popbufferás cOsd|jr9|jdjg|D]}t|ƒ^qƒn'x$|D]}|jjt|ƒƒq@WdS(s½write args to output By default, this method simply writes to the buffer or stdout, but extensions or GUI tools may override this method, write_err(), popbuffer(), and label() to style output from various parts of hg. An optional keyword argument, "label", can be passed in. This should be a string containing label names separated by space. Label names take the form of "topic.type". For example, ui.debug() issues a label of "ui.debug". When labeling output for a specific command, a label of "cmdname.type" is recommended. For example, status issues a label of "status.modified" for modified files. iÿÿÿÿN(RR¤RKRtwrite(R!targsR(ta((s0/sys/lib/python2.7/site-packages/mercurial/ui.pyRÈís 0 cOs¶yut|jdtƒs(|jjƒnx$|D]}|jjt|ƒƒq/Wt|jdtƒst|jjƒnWn:tk r±}|jtj tj tj fkr²‚q²nXdS(Ntclosed( tgetattrRRtflushRRÈRKRFterrnotEPIPEtEIOtEBADF(R!RÉR(RÊRU((s0/sys/lib/python2.7/site-packages/mercurial/ui.pyt write_errs !cCsZy|jjƒWnttfk r*nXy|jjƒWnttfk rUnXdS(N(RRÍRFRˆR(R!((s0/sys/lib/python2.7/site-packages/mercurial/ui.pyRÍscCs&|jddtƒrtStj|ƒS(NRtnontty(ReRR*tisatty(R!tfh((s0/sys/lib/python2.7/site-packages/mercurial/ui.pyt_isattyscCs5|jdddƒ}|dkr1|j|jƒS|S(s-is interactive input allowed? An interactive session is a session where input can be reasonably read from `sys.stdin'. If this function returns false, any attempt to read from stdin should fail with an error, unless a sensible default has been specified. Interactiveness is triggered by the value of the `ui.interactive' configuration variable or - if it is unset - when `sys.stdin' points to a terminal device. This function refers to input only; for output, see `ui.formatted()'. RRºN(ReRORÖR(R!ti((s0/sys/lib/python2.7/site-packages/mercurial/ui.pyRºs cCsEdtjkr;yttjdƒSWq;tk r7q;XntjƒS(s-how wide is the terminal in columns? tCOLUMNS(RRR‡RˆR*t termwidth(R!((s0/sys/lib/python2.7/site-packages/mercurial/ui.pyRÙ3s  cCsE|jƒrtS|jdddƒ}|dkrA|j|jƒS|S(s*should formatted output be used? It is often desirable to format the output to suite the output medium. Examples of this are truncating long lines or colorizing messages. However, this is not often not desirable when piping output into other utilities, e.g. `grep'. Formatted output is triggered by the value of the `ui.formatted' configuration variable or - if it is unset - when `sys.stdout' points to a terminal device. Please note that `ui.formatted' should be considered an implementation detail; it is not intended for use outside Mercurial or its extensions. This function refers to output only; for input, see `ui.interactive()'. This function always returns false when in plain mode, see `ui.plain()'. Rt formattedN(RLRReRORÖR(R!R×((s0/sys/lib/python2.7/site-packages/mercurial/ui.pyRÚ=s   R˜cCsË|j|jƒr@yddl}|jWq@tk r<q@Xn|j|ƒtj}tj}|jt_|j t_t dƒ}|t_|t_t j dkrÇ|rÇ|ddkrÇ|d }n|S(NiÿÿÿÿR£s s ( RÖRtreadlinetread_history_filet ExceptionRÈRRRRt raw_inputRtlinesep(R!R¹RÛtoldintoldouttline((s0/sys/lib/python2.7/site-packages/mercurial/ui.pyt _readlineYs"           % tycCs€|jƒs&|j|d|dƒ|Sy-|j|j|dƒƒ}|sN|S|SWn&tk r{tjtdƒƒ‚nXdS(shPrompt user with msg, read response. If ui is not interactive, the default is returned. R£s s ui.promptsresponse expectedN(RºRÈRãtlabeltEOFErrorR*R¿R(R!tmsgR|tr((s0/sys/lib/python2.7/site-packages/mercurial/ui.pyR¹ys  cCsg|D]#}||jdƒdjƒ^q}xXtrŠ|j|||ƒ}|jƒ|krt|j|jƒƒS|jtdƒƒq3WdS(sVPrompt user with msg, read response, and ensure it matches one of the provided choices. The index of the choice is returned. choices is a sequence of acceptable responses with the format: ('&None', 'E&xec', 'Sym&link') Responses are case insensitive. If ui is not interactive, the default is returned. t&isunrecognized response N(tindexRR R¹RÈR(R!RçtchoicesR|RžtrespsRè((s0/sys/lib/python2.7/site-packages/mercurial/ui.pyt promptchoiceˆs 0 cCss|jƒs|Sy6|j|j|p.tdƒdƒƒtjdƒSWn&tk rntjtdƒƒ‚nXdS(Ns password: s ui.promptR˜sresponse expected(RºRÈRåRtgetpassRæR*R¿(R!R¹R|((s0/sys/lib/python2.7/site-packages/mercurial/ui.pyRî–s % cOs:|js6|jddƒd|d<|j||ŽndS(sqwrite status message to output (if ui.quiet is False) This adds an output label of "ui.status". RåR˜s ui.statusN(RR{RÈ(R!RçR(((s0/sys/lib/python2.7/site-packages/mercurial/ui.pytstatusžs cOs.|jddƒd|d<|j||ŽdS(sewrite warning message to output (stderr) This adds an output label of "ui.warning". RåR˜s ui.warningN(R{RÒ(R!RçR(((s0/sys/lib/python2.7/site-packages/mercurial/ui.pyR1¦scOs:|jr6|jddƒd|d<|j||ŽndS(sfwrite note to output (if ui.verbose is True) This adds an output label of "ui.note". RåR˜s ui.noteN(RR{RÈ(R!RçR(((s0/sys/lib/python2.7/site-packages/mercurial/ui.pytnote­s cOs:|jr6|jddƒd|d<|j||ŽndS(srwrite debug message to output (if ui.debugflag is True) This adds an output label of "ui.debug". RåR˜s ui.debugN(RR{RÈ(R!RçR(((s0/sys/lib/python2.7/site-packages/mercurial/ui.pyR;µs c CsÖtjdddddtƒ\}}ztj|dƒ}|j|ƒ|jƒ|jƒ}tj d||fdi|d 6d tj d t d ƒd |j ƒt |ƒ}|jƒ}|jƒWdtj|ƒX|S(Ntprefixs hg-editor-tsuffixs.txtttexttws%s "%s"RRµtonerrt errprefixs edit failedtout(ttempfiletmkstempR RtfdopenRÈRHt geteditorR*tsystemR¿RRRERGtunlink(R!RóR6tfdRqR#teditortt((s0/sys/lib/python2.7/site-packages/mercurial/ui.pytedit½s        cCsü|js|rï|d kr*tjƒ}nt|ddd ƒ}|d k rÄtj|dƒ}tj|dƒ}tj|d|dƒ}|jddj |d ƒdj |ƒdj |ƒƒqïtj |d|d|dd|j ƒn|jpû|S( s˜print exception traceback if traceback printing enabled or forced. only to call in exception handler. returns true if traceback printed.itcauseiis#Traceback (most recent call last): R˜iÿÿÿÿtfileN( RRORtexc_infoRÌR@t format_tbtformat_exception_onlyRÒRdtprint_exceptionR(R!texctforceRtcausetbtexctbtexconly((s0/sys/lib/python2.7/site-packages/mercurial/ui.pyR@Ôs     cCsgtjdkrd}nd}tjjdƒpf|jddƒpftjjdƒpftjjd|ƒS( sreturn editor to usetplan9tEtvitHGEDITORRRÿtVISUALtEDITOR(RtplatformRRR{R (R!Rÿ((s0/sys/lib/python2.7/site-packages/mercurial/ui.pyRûìs c Cs›|dks|j rdS|r-d|}n|r@d|}n|rzd||}|jd||||||fƒn|jd||||fƒdS(sxshow a progress message With stock hg, this is simply a debug message that is hidden by default, but with extensions or GUI tools it may be visible. 'topic' is the current operation, 'item' is a non-numeric marker of the current position (i.e. the currently in-process file), 'pos' is the current numeric position (i.e. revision, bytes, etc.), unit is a corresponding unit label, and total is the highest expected pos. Multiple nested topics may be active at a time. All topics should be marked closed by setting pos to None at termination. NR£gY@s%s:%s %s/%s%s (%4.2f%%) s %s:%s %s%s (RORR;(R!R'tposRltunitttotaltpct((s0/sys/lib/python2.7/site-packages/mercurial/ui.pytprogressús   cOsdS(sÌhook for logging facility extensions service should be a readily-identifiable subsystem, which will allow filtering. message should be a newline-terminated string to log. N((R!tserviceRçR(((s0/sys/lib/python2.7/site-packages/mercurial/ui.pytlogscCs|S(s%style msg based on supplied label Like ui.write(), this just returns msg unchanged, but extensions and GUI tools can override it to allow styling output without writing it. ui.write(s, 'label') is equivalent to ui.write(ui.label(s, 'label')). ((R!RçRå((s0/sys/lib/python2.7/site-packages/mercurial/ui.pyRå#s N(4t__name__t __module__ROR$RR&R8RR RRmRpR RtRvR^R RƒReR‰R–RfR¬R­R®RLR-RÁR`RÄRÇRÈRÒRÍRÖRºRÙRÚRãR¹RíRîRïR1RðR;RR@RûRRRå(((s0/sys/lib/python2.7/site-packages/mercurial/ui.pyR s` #   *"       'X                     (ti18nRRÎRîRRŒR¼RRøR@R RR*RIR&tobjectR(((s0/sys/lib/python2.7/site-packages/mercurial/ui.pyts`<