ó ŸçƒQc@sGddlZddlZddlZddlZddlZddlZddlmZmZm Z m Z m Z ddl m Z mZmZddlmZddlmZmZmZmZddlmZmZmZddlmZmZddlmZdd lmZdd lm Z d d d ddddddddddddddddddgZ!d „Z"d!„Z#d"„Z$d#„Z%d$„Z&e'd%„Z(d&„Z)d'„Z*e*Z+d(„Z,d)„Z-d*„Z.d+„Z/d,„Z0d-„Z1d.„Z2e2Z3d/„Z4d0„Z5d1„Z6d2„Z7d3„Z8d4„Z9d5„Z:d6„ZdS(7iÿÿÿÿN(terrortencodingtarchivalt templaterttemplatefilters(tshortthextnullid(tbinary(t paritygent staticfilet get_contactt ErrorResponse(tHTTP_OKtHTTP_FORBIDDENtHTTP_NOT_FOUND(tgraphmodtpatch(thelp(tscmutil(t_tlogtrawfiletfilet changelogtshortlogt changesettrevtmanifestttagst bookmarkstbranchestsummarytfiledifftdifft comparisontannotatetfilelogtarchivetstatictgraphRcCsDd|jkr0|jddr0t|||ƒSt|||ƒSdS(NRi(tformR%R(twebtreqttmpl((s?/sys/lib/python2.7/site-packages/mercurial/hgweb/webcommands.pyRs c Cs‰|jddtƒ}tj|j|jjddgƒdƒ}|sot|||ƒ}|jt |j ƒ|Sytj |j|ƒ}Wn]t j k rç}y-t|||ƒ}|jt |j ƒ|SWqètk rã|‚qèXnX|jƒ}|jƒ}d} |rItj|ƒd} | dkrIt|ƒr=dp@d} qIn| jdƒrl| d tj7} n|jt | |d |ƒgS( NR*t guessmimeRtisapplication/binarys text/plainstext/s; charset="%s"tbody(t configbooltFalsetwebutilt cleanpathtrepoR)tgetRtrespondR tctypetfilectxRt LookupErrorR tpathtdatat mimetypest guess_typetNoneRt startswithR( R*R+R,R-R:tcontenttfctxtinstttexttmt((s?/sys/lib/python2.7/site-packages/mercurial/hgweb/webcommands.pyR#s4+    c s,|jƒ}|jƒ‰t|jƒ‰tˆƒrYtj|ƒdpId}d|‰n‡‡fd†}|dd|dtj|ƒd|ƒd |j ƒd |j ƒd |j ƒd |j ƒd |j ƒd|jƒdtj|ƒdtj|ƒdtj|ƒdtj|ƒd|jƒj|ƒƒS(Nisapplication/octet-streams (binary:%s)c3saxZtˆjtƒƒD]C\}}i|d6d|dd6d|dd6ˆjƒd6VqWdS(Ntlinesl%ditlineids% 6dt linenumbertparity(t enumeratet splitlinestTruetnext(tlinenott(RHRC(s?/sys/lib/python2.7/site-packages/mercurial/hgweb/webcommands.pytlinesLs " t filerevisionRR:RCRtnodetauthortdatetdesctextratbranchtparenttchildtrenamet permissions(R:R;R t stripecountRR<R=R2tupRRtuserRSt descriptionRUtnodebranchnodefaulttparentstchildrent renamelinkRtflags(R*R,RAtfRDRO((RHRCs?/sys/lib/python2.7/site-packages/mercurial/hgweb/webcommands.pyt _filerevisionCs,            cCs¯tj|j|jjddgƒdƒ}|sAt|||ƒSy#t||tj|j|ƒƒSWnDtj k rª}yt|||ƒSWq«t k r¦|‚q«XnXdS(NRR.i( R2R3R4R)R5RReR8RR9R (R*R+R,R:RB((s?/sys/lib/python2.7/site-packages/mercurial/hgweb/webcommands.pyRcs+# csG|jdd‰ˆj‰d|jkrnt|jjdˆgƒdƒ‰tˆdƒ‰ˆˆjddst latestentrycsˆdt|S(NRš(RK(R¡(RŒ(s?/sys/lib/python2.7/site-packages/mercurial/hgweb/webcommands.pyR¢sRR‘R’(R)R2t changectxR4Rt RepoErrorR˜tmaxshortchangesR“R”R5RkR•R–RiRtminR R[trevnavtgenRR—( R*R+R,RRrthiRfR’R‘R…tposRŸ((RŒRœRHRR,R*s?/sys/lib/python2.7/site-packages/mercurial/hgweb/webcommands.pyRºs@""  !cCst|||dtƒS(NR(RRK(R*R+R,((s?/sys/lib/python2.7/site-packages/mercurial/hgweb/webcommands.pyRsc0søtj|j|ƒ}tj|j|ƒ}|dkrE|jƒ}ntj|j|d|jƒƒ}tj|j|d|jƒƒ}tj |ƒ}g}t |j ƒ} xst |j ƒƒD]_\} } | |krÜdpßd} |j|| d|jƒd| d| dd | jƒƒƒq¾W|jd d d ƒ} d |jkrY|jd d } nt |j ƒ} tj|j|||d| | ƒ}t |j ƒ} tj||ƒ‰tj||ˆ| ƒ}|dd|d|jƒd|jƒdtj|ƒdtj|ƒd|jƒd|d|d|d|jƒd|jƒd|jƒd|jƒd|d‡fd†d|d|j|jƒƒdtj|j|jƒƒdtj|j|jƒƒd tj |ƒd!tj |j|ƒd"tj!|j|ƒƒS(#Nt changesettagtchangesetbookmarkt filenodelinkt filenolinkRQRtblocknoiRHR*tstyletpaperiRR"RRWRXtbasenodetchangesetbranchRRRTRURSRxt diffsummarycs tjˆƒS(N(R2Rµ(R¡(t diffstatgen(s?/sys/lib/python2.7/site-packages/mercurial/hgweb/webcommands.pyR¢4stdiffstatRRRRVRyR("R2R¤R4t basechangectxR>tp1R}RQt showbookmarkR_R R[RIRxRlRRLtconfigR)tdiffsR¶R·RR`RaR]R^RURSR—R€RR‚Rƒ(R*R+R,RrtbasectxRŠt showbookmarkst showbranchRxRHR°RdttemplateR±R¼R·((R¶s?/sys/lib/python2.7/site-packages/mercurial/hgweb/webcommands.pyRs\ !$        cCs|S(sØHook for mapping a path in the repository to a path in the working copy. Extensions (e.g., largefiles) can override this to remap files in the virtual file system presented by the manifest command below.((R:((s?/sys/lib/python2.7/site-packages/mercurial/hgweb/webcommands.pyt decodepath?scs“tj|j|ƒ‰tj|j|jjddgƒdƒ}ˆjƒ‰ˆjƒ}i‰i‰t|j ƒ‰|r–|ddkr–|d7}nt |ƒ}d|‰xÕˆj ƒD]Ç\}}t |ƒ}|| |krçq¹n||} | j dƒ} t | ƒdkr|ˆ| R RRRR\RLR—R€RR‚Rƒ(R*R+R,R:RQRpRÆR‰RdtremaintelementsRÎtelemRÈRÓ((RÑRrRÒRxRÇRHs?/sys/lib/python2.7/site-packages/mercurial/hgweb/webcommands.pyRGsX+                c sŽttˆjjƒƒƒ‰tˆjƒ‰‡‡‡fd†‰|ddtˆjjjƒƒd‡fd†d‡fd†d‡fd †ƒS( Nc;s¨ˆ}|r@gˆD]$\}}|dkr||f^q}n|rS|d }nxN|D]F\}}iˆjƒd6|d6ˆj|jƒd6t|ƒd6VqZWdS(NRiRHttagRSRQ(RLR4RSR(tnotipRšR„RNRÏR‰(RoRHR*(s?/sys/lib/python2.7/site-packages/mercurial/hgweb/webcommands.pyRs4 RRQRcsˆtt|S(N(R1(R¡(R(s?/sys/lib/python2.7/site-packages/mercurial/hgweb/webcommands.pyR¢«st entriesnotipcsˆtt|S(N(RKR1(R¡(R(s?/sys/lib/python2.7/site-packages/mercurial/hgweb/webcommands.pyR¢¬sR£csˆtt|S(N(RK(R¡(R(s?/sys/lib/python2.7/site-packages/mercurial/hgweb/webcommands.pyR¢­s( tlistR™R4ttagslistR R[RRR(R*R+R,((RRoRHR*s?/sys/lib/python2.7/site-packages/mercurial/hgweb/webcommands.pyR™s c sœgˆjjjƒD]}|dˆjkr|^q‰tˆjƒ‰‡‡‡fd†‰|ddtˆjjjƒƒd‡fd†d‡fd†ƒS( Nic;sy|rtˆƒg}n tˆƒ}xN|D]F\}}iˆjƒd6|d6ˆj|jƒd6t|ƒd6Vq+WdS(NRHtbookmarkRSRQ(R§RÅRLR4RSR(RšR„RNRÏR‰(RoRHR*(s?/sys/lib/python2.7/site-packages/mercurial/hgweb/webcommands.pyR³s RRQRcsˆdt|S(NRš(R1(R¡(R(s?/sys/lib/python2.7/site-packages/mercurial/hgweb/webcommands.pyR¢ÀsR£csˆdt|S(NRš(RK(R¡(R(s?/sys/lib/python2.7/site-packages/mercurial/hgweb/webcommands.pyR¢Ás(R4t _bookmarksRÌR R[RRR(R*R+R,tb((RRoRHR*s?/sys/lib/python2.7/site-packages/mercurial/hgweb/webcommands.pyR¯s8 c sˆg‰ˆjjƒ‰tˆjƒ‰d„‰‡‡‡‡‡fd†‰|ddtˆjjjƒƒd‡fd†d‡fd†ƒS( NcSs|jƒ |jƒfS(N(t closesbranchR(Rr((s?/sys/lib/python2.7/site-packages/mercurial/hgweb/webcommands.pyR¢Çsc;sd}ˆsIx:ˆjjƒjƒD] \}}ˆjˆj|ƒq"WnxÈtˆdˆdtƒD]®}|dkr„||kr„dS|d7}ˆjj|jƒƒs¯d}n!|jƒˆkrÊd}nd}iˆj ƒd6|jƒd 6|d 6|j ƒd 6|j ƒd 6VqbWdS( NitkeyRmitclosedtinactivetopenRHRVtstatusRQRS( R4t branchtagsR×RlRÅRKt branchheadsRVRQRLRRS(tlimitR„R…RNR‰RrRè(theadsRHtsortkeyttipsR*(s?/sys/lib/python2.7/site-packages/mercurial/hgweb/webcommands.pyRÉs$"     RRQRcs ˆd|S(Ni((R¡(R(s?/sys/lib/python2.7/site-packages/mercurial/hgweb/webcommands.pyR¢ßsR£cs ˆd|S(Ni((R¡(R(s?/sys/lib/python2.7/site-packages/mercurial/hgweb/webcommands.pyR¢às(R4RìR R[RRR(R*R+R,((RRìRHRíRîR*s?/sys/lib/python2.7/site-packages/mercurial/hgweb/webcommands.pyRÃs !c stˆjjƒƒ‰‡‡‡fd†}‡fd†}‡fd†}‡‡‡‡fd†}ˆjd}tˆjƒ}td|ˆjƒ‰t|ˆˆjƒ‰ˆddˆjd d d ƒd tˆjƒpØd d |j ƒd|d|d|d|d|j ƒdˆj dƒƒ S(Nc ;s˜tˆjƒ}d}x|ˆD]t\}}|dkr:qn|d7}|dkrTPnˆdd|jƒd|dt|ƒd ˆj|jƒƒVqWdS( NiRii ttagentryRHRÛRQRS(R R[RLRR4RS(R„RHR…RÏR‰(RoR,R*(s?/sys/lib/python2.7/site-packages/mercurial/hgweb/webcommands.pyt tagentriesås      c;s¦tˆjƒ}gˆjjjƒD]}|dˆjkr"|^q"}xXt|ƒd D]F\}}i|jƒd6|d6ˆj|jƒd6t|ƒd6VqXWdS(Nii RHRàRSRQ( R R[R4RáRÌRÅRLRSR(R„RHRâtmarksRÏR‰(R*(s?/sys/lib/python2.7/site-packages/mercurial/hgweb/webcommands.pyRös8c;sºtˆjƒ}ˆjjƒ}g|jƒD]+\}}ˆjjj|ƒ ||f^q+}xWt|ƒD]I\}}}i|jƒd6|d6t |ƒd6ˆj|j ƒd6VqiWdS(NRHRVRQRS( R R[R4RéR×RRRÅRLRRS(R„RHRâRNR‰RpR›(R*(s?/sys/lib/python2.7/site-packages/mercurial/hgweb/webcommands.pyRÿs> c;sHtˆjdˆˆƒ}g}g}ˆˆkrPˆjjjˆˆdƒ}nxâ|D]Ú}ˆj|}|jƒ}t|ƒ}|jˆdd|jƒd|j ƒd|j ƒd|j ƒd|j ƒd |d |d t jˆj|ƒd t jˆj|ƒd t jˆj|ƒdt jˆj|ƒƒ ƒqWW|jƒ|VdS(NRžit shortlogentryRHRRRTRURSRRQRRRyR(R R[R4RRjRQRRlRLR]R^RURSR2R€RR‚RƒRm(R„RHRpRjRoRrR‰thn(RœRR,R*(s?/sys/lib/python2.7/site-packages/mercurial/hgweb/webcommands.pyRŒ s0            RiR RTR*R^tunknowntownert lastchangeRRRRRQR( R™R4RßRiRkR“R§R»R RSRR—( R*R+R,RðRRRŒRR…((RœRoRR,R*s?/sys/lib/python2.7/site-packages/mercurial/hgweb/webcommands.pyR âs&      c Csñd\}}ytj|j|ƒ}Wn^tk r…tj|j|ƒ}tj|j|jddƒ}||jƒkr†‚q†nX|dk r¹|j ƒ}|j ƒ}|jƒ}n |j ƒ}t |j ƒ}|j dddƒ}d|jkr |jdd}ntj|j||d|g||ƒ} |rHtj|ƒpKg} |rZ|p]|}|dd|dt|ƒd|jƒd |jƒd |jƒd |jƒd |jƒd | dtj|ƒdtj|ƒdtj|ƒd| ƒ S(NRiR*R±R²R!RQRRSRTRURRRYRVRWRXR"(NN(R>R2R8R4R9R¤R3R)RxRQR:R R[R»R¼RbRRRSR^RUR]R_R`Ra( R*R+R,RARrR:R‰RHR±R¼RY((s?/sys/lib/python2.7/site-packages/mercurial/hgweb/webcommands.pyR!6sB        '       c$Cs€tj|j|ƒ}d|jkr6ttdƒ‚ntj|j|jddƒ}||krutj||ƒpxg}d„}d|jkr­||jddƒ}n||jdddƒƒ}d „}||krc||} | j ƒ} | j ƒ} || ƒ} | j ƒ} | s2d }t }d}q­| d}|j ƒ}|j ƒ}||ƒ}nJd } t } d} |j ƒd|} | j ƒ}| j ƒ}|| ƒ}tj |||| ƒ}|d d|d t|jƒƒd |jƒd|jƒd|jƒd|jƒd|jƒd|dtj|ƒdtj | ƒdtj| ƒd|dt|ƒd| dt| ƒd|ƒS(NRsfile not givenicSs|dkrdpt|ƒS(NRÆiÿÿÿÿ(R”(RÐ((s?/sys/lib/python2.7/site-packages/mercurial/hgweb/webcommands.pyR¢gstcontextR*tcomparisoncontextt5cSsmt|jƒƒr]tj|jƒƒd}|s:d}ntdƒ|t|jƒƒfgS|jƒjƒS(Nisapplication/octet-streams(binary file %s, hash: %s)( RR;R<R=R:RRtfilenodeRJ(RdRD((s?/sys/lib/python2.7/site-packages/mercurial/hgweb/webcommands.pyt filelinesms  #iÿÿÿÿtfilecomparisonRQRRSRTRURRRYRVRWRXtleftrevtleftnodetrightrevt rightnodeR#(((R2R¤R4R)R RR3RbR»tfilerevRúR`RtcompareRRQRRSR^RUR]R_Ra(R*R+R,RrR:RYt parsecontextR÷RûRARÿRt rightlinesR`RýRþt leftlinestpfctxR#((s?/sys/lib/python2.7/site-packages/mercurial/hgweb/webcommands.pyR#`sb %                       cs$tj|j|ƒ‰ˆjƒ}t|jƒ‰tj|jjdt ddƒ‰‡‡‡fd†}|dd|d|dtj |ƒdˆj ƒd ˆj ƒd ˆj ƒd ˆjƒd ˆjƒd ˆjƒdtjˆƒdtjˆƒdtjˆƒdtjˆƒdˆjƒj|ƒƒS(Nt untrustedtsectionR$c ;smd}tˆjƒƒrhtjˆjƒƒdp4d}tˆjˆjƒƒdfd|fgƒ}n$tˆj dt dt dˆƒƒ}xÚ|D]Ò\}\\}}}|j ƒ}||krÌ|}ni ˆj ƒd6|j ƒd 6|jƒd 6|jƒd 6|jƒd 6|jƒd 6|jƒd6|d6|d6d|dd6d|dd6|jƒd6Vq“WdS(Nisapplication/octet-streamis (binary:%s)tfollowRGtdiffoptsRHRQRRRRTRURt targetlineREsl%dRFs% 6dtrevdate(R>RR;R<R=R:RIR8RR$RKRúRLRRR]R^RURS( R„tlastRDRORMRdR Rptfnode(R RARH(s?/sys/lib/python2.7/site-packages/mercurial/hgweb/webcommands.pyR$¦s0          t fileannotateRR:RRQRRRSRTRURYRVRWRXRZ(R2R8R4R:R R[RR tuiRKR\RRR]RSR^RURbR_R`RaRRc(R*R+R,RdR$((R RARHs?/sys/lib/python2.7/site-packages/mercurial/hgweb/webcommands.pyR$ s( !       csÇy1tjˆj|ƒ‰ˆjƒ‰ˆjƒ}Wnètjk rtjˆj|jddƒ‰ˆjj ˆƒ}t |ƒ}|sŽ‚ntj ˆj|ƒj ƒ}|j dƒ}||krÊ‚n|d}x#|j |ƒ|krù|d8}q×Wˆjjˆ|j |ƒƒ‰nXˆj}d|jkryt|jjd|gƒdƒ}t|dƒ}||jddt configlistRR RR0R1RtretsubtosR:RÃtreponameR4tlookupRR2R¤RtmatchRtkeyst archive_specsRltheaderstextendR6R RR&(R*R+R,ttype_tallowedRätmsgR&tcnodet arch_versiontnameRrtpatsRRRdRxtmimetypetartypet extensionRR+((s?/sys/lib/python2.7/site-packages/mercurial/hgweb/webcommands.pyR&sL   $1cCs¡|jdd}|jddddtƒ}|s|jpDtjƒ}t|tƒrb|g}ng|D]}tj j |dƒ^qi}nt |||ƒgS(NRiR*R'R( R)R»R>R1t templatepathRRÊtstrR%R:R|R (R*R+R,tfnameR'ttptp((s?/sys/lib/python2.7/site-packages/mercurial/hgweb/webcommands.pyR'Ps +c"s¬tjˆj|ƒ}|jƒ}d}ˆj}d|jkr„t|jjd|gƒdƒ}t|dƒ}||j ddRQRlRRRËR2RRƒR‚R€(t usetuplesR„R;RIR?RRrR@RARQRKRTR]RVt branchnodeRBtedgedata(R=R*(s?/sys/lib/python2.7/site-packages/mercurial/hgweb/webcommands.pyt graphdata‡sL   W   iR(RtuprevR’R‘tdownrevR>trowst canvaswidthttruecanvasheightt canvasheightt bg_heighttjsdatacs ˆt|S(N(RK(R¡(RV(s?/sys/lib/python2.7/site-packages/mercurial/hgweb/webcommands.pyR¢Ástnodescs ˆt|S(N(R1(R¡(RV(s?/sys/lib/python2.7/site-packages/mercurial/hgweb/webcommands.pyR¢ÂsRQRŸ(R2R¤R4RR¦R)R”R5RkR•R–RiR§R¨R©RÞRRjRt dagwalkertcoloredR(R*R+R,RrRR]RfR’R‘R…R«RRœRWRXRŸRjtdagRCR>RYR\((RVR=R*s?/sys/lib/python2.7/site-packages/mercurial/hgweb/webcommands.pyR(]sN  "  ! " 0     cCs?|dj}|r/t|ƒjdƒd}n tdƒ}|S(Nis s(no help text available)(t__doc__RR{(Rstdoc((s?/sys/lib/python2.7/site-packages/mercurial/hgweb/webcommands.pyt_getdocÅs   c sžddlm}|jjddgƒd}|s:d„}gg‰‰d„}x’|jjƒD]\}}t|ƒ} d| ksa|jdƒršqan||ƒ} | jd ƒrψj | d | fƒqaˆj | | fƒqaWˆj ƒˆj ƒ‡fd †} ‡fd †} |d d|d| d| ddƒSt j ƒ} t | _ytj| |ƒ} Wn tjk r‡ttƒ‚nX|dd|d| ƒS(Niÿÿÿÿ(tcommandsRQic{s8x1tjD]&\}}}i|dd6|d6Vq WdS(NittopicR (thelpmodt helptable(R„RR R((s?/sys/lib/python2.7/site-packages/mercurial/hgweb/webcommands.pyttopicsÒscSs|jdƒdS(Nt|i(R{(ts((s?/sys/lib/python2.7/site-packages/mercurial/hgweb/webcommands.pyR¢×st DEPRECATEDtdebugt^ic;s.x'ˆD]\}}i|d6|d6VqWdS(NRgR ((R„tcRd(tearly(s?/sys/lib/python2.7/site-packages/mercurial/hgweb/webcommands.pyt earlycommandsåsc;s.x'ˆD]\}}i|d6|d6VqWdS(NRgR ((R„RpRd(tother(s?/sys/lib/python2.7/site-packages/mercurial/hgweb/webcommands.pyt othercommandsést helptopicsRjRrRtttitletIndexRRgRd(t mercurialRfR)R5R>ttableR×ReR?RltsortR2twsgiuiRKtverboseRhthelp_RtUnknownCommandR R(R*R+R,Rft topicnameRjtprimaryRpRsRdtcmdRrRttu((RqRss?/sys/lib/python2.7/site-packages/mercurial/hgweb/webcommands.pyRÍs6          (;R%R<R#RMR–R2RxRRRRRtmercurial.nodeRRRtmercurial.utilRtcommonR R R R R RRRRRRhRtmercurial.i18nRt__all__RRReRR˜R1RRRRRÁRRRRR R!R"R#R$R%R&R'R(Re(((s?/sys/lib/python2.7/site-packages/mercurial/hgweb/webcommands.pytsL< ("  K K  5  R    T ( @ 3 L 1 h