³ò ø$•Jc@sqddklZddkZddkZddkZddkZd„Zd„Zea d„Z ed„Z dS(iÿÿÿÿ(t_NcCsü|itdƒ||fƒ|}t|dƒp¼|idƒ}|djo#titdƒ||fƒ‚n|| } ti} ttdƒoDtii | ƒ\} }| o!|otii | ƒ|} qÚnyt | ƒ}Wn\t j oPyt d| ƒ}WqIt j o&titdƒ|| fƒ‚qIXnX| t_y1x*|i dƒd D]} t || ƒ}qiWWn2tj o&titd ƒ||fƒ‚nXt|dƒp#titd ƒ||fƒ‚qïny"|d |d |d||} Wnžtj o ‚nŠtj o}}t|tiƒo(|itdƒ||idfƒn|itdƒ||fƒ|o‚n|iƒtSnX| o?|otitdƒ|ƒ‚n|itdƒ|ƒn| S(sŸcall python hook. hook is callable object, looked up as name in python module. if callable returns "true", hook fails, else passes. if hook raises exception, treated as hook failure. exception propagates if throw is "true". reason for "true" meaning "hook failed" is so that unmodified commands (e.g. mercurial.commands.update) can be run as hooks without wrappers to convert return values.scalling hook %s: %s t__call__t.iÿÿÿÿs)%s hook is invalid ("%s" not in a module)tfrozenshgext_%ss*%s hook is invalid (import of "%s" failed)is(%s hook is invalid ("%s" is not defined)s)%s hook is invalid ("%s" is not callable)tuitrepothooktypeserror: %s hook failed: %s is'error: %s hook raised an exception: %s s%s hook failedswarning: %s hook failed (tnoteRthasattrtrfindtutiltAborttsystpathtostsplittappendt __import__t ImportErrortgetattrtAttributeErrortKeyboardInterruptt Exceptiont isinstancetwarntargst tracebacktTrue(RRtnamethnametfuncnameRtthrowtobjtdtmodnametoldpathsR tptrtexc((s!/sys/lib/python/mercurial/hook.pyt _pythonhook sh     "  c Cs|itdƒ||fƒh}xK|iƒD]=\}}t|dƒo |ƒ}n||d|iƒtitiiƒƒ}titiiƒtiiƒƒnzLxE|i dƒD]4\}}|i dƒd|jp| oq^nt |dƒo)t |||||||ƒp|}q^|i dƒo”|idƒdjoE|didd ƒ\} }ti| d |ƒ} t| |ƒ} n|diƒ} t ||||| ||ƒp|}q^t||||||ƒp|}q^WWdto*ti|tiiƒƒti|ƒnX|S( NthooksRiRspython:t:iiis hghook.%s(tFalseR7RtdupR t __stdout__tfilenotdup2t __stderr__t configitemsRRR't startswithtcounttrsplitt extensionstloadpathRtstripR6tclose( RRRRRR%t oldstdoutRR1R tmodthookfn((s!/sys/lib/python/mercurial/hook.pythookjs.& "))*( ti18nRRR RFR R'R6R<R7R9RM(((s!/sys/lib/python/mercurial/hook.pyss D