+
    üÐjøY  ã                  ó¢  € R t ^ RIHt ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIH	t	 ^ RIH
t
 ^ RIHt ^ RIHtHtHt ^ RIHt ^ RIHt ^ R	IHt ]! R
]R]3,          R7      t^ s^t ! R R]4      tR#R ltRt ! R R]4      tR t  ! R R4      t! ! R R4      t" ! R R4      t#. t$R R lt% ! R R]&4      t'R t(Rt)RRRR ]'PT                  3R! lt+R" t,R# )$z9
Asynchronous-friendly error mechanism.

See L{Failure}.
)ÚannotationsN)Úpartial)Úgetmro)ÚStringIO)ÚCallableÚNoReturnÚTypeVar)ÚVersion)Úreflect)ÚdeprecatedPropertyÚ_T_Callable.)Úboundc                  ó   € ] tR t^&tRtR# )ÚDefaultException© N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__static_attributes__r   ó    Ú8/usr/lib/python3/dist-packages/twisted/python/failure.pyr   r   &   s   † Ûr   r   c           
     ó�  € VR9  d   \        RV: R24      hTpVR8X  d!   V  F  w  rErgpV! V RV RV R24       K  	  R# VR8X  dS   V  FJ  w  rErgpV! R	V R
V RV R24       V! R\        P                  ! WV4      P                  4       ,          4       KL  	  R# VR8X  d)   V  F  w  rErgpV! RWVV3,          4       K  	  V! R4       R# VR8X  dw   V  Fn  w  rErgpV! RWVV3,          4       V! R4       V F  w  ršV! RV	 R\	        V
4       R24       K  	  V! R4       V F  w  ršV! RV	 R\	        V
4       R24       K  	  Kp  	  R# R# )a`  
Format and write frames.

@param frames: is a list of frames as used by Failure.frames, with
    each frame being a list of
    (funcName, fileName, lineNumber, locals.items(), globals.items())
@type frames: list
@param write: this will be called with formatted strings.
@type write: callable
@param detail: Four detail levels are available:
    default, brief, verbose, and verbose-vars-not-captured.
    C{Failure.printDetailedTraceback} uses the latter when the caller asks
    for verbose, but no vars were captured, so that an explicit warning
    about the missing data is shown.
@type detail: string
ÚdefaultÚbriefÚverboseúverbose-vars-not-capturedzKDetail must be default, brief, verbose, or verbose-vars-not-captured. (not Ú)Ú:Ú
z  File "z", line z, in z    %s
z%s:%d: %s(...)
zA [Capture of Locals and Globals disabled (use captureVars=True)]
z [ Locals ]
z  z : z ( Globals )
N)r   r   r   r   )Ú
ValueErrorÚ	linecacheÚgetlineÚstripÚrepr)ÚframesÚwriteÚdetailÚwÚmethodÚfilenameÚlinenoÚ	localVarsÚ
globalVarsÚnameÚvals   &&&        r   Úformat_framesr0   *   s„  € ð" ÐQÔQÝã5;ð>ó
ð 	
ð 	€AØ�ÔÛ?EÑ;ˆF˜f°Ù��
˜!˜F˜8 1 V H¨BÐ/Ö0ó @Fà	�9Ô	Û?EÑ;ˆF˜f°Ù�˜˜
 (¨6¨(°%¸°x¸rÐBÔCÙˆjœ9×,Ò,¨XÓ>×DÑDÓFÕFÖGó @Fð 
Ð.Ô	.Û?EÑ;ˆF˜f°ÙÐ  H°fÐ#=Õ=Ö>ñ @Fá	Ð
NÖOØ	�9Ô	Û?EÑ;ˆF˜f°ÙÐ  H°fÐ#=Õ=Ô>ÙˆoÔã&‘	�Ù�B�t�f˜C¤ S£	˜{¨"Ð-Ö.ñ 'áÐÔÛ'‘	�Ù�B�t�f˜C¤ S£	˜{¨"Ð-Ö.ó (ó @Fñ 
r   z--- <exception caught here> ---c                  ó   € ] tR t^\tRtRtR# )ÚNoCurrentExceptionErrorz~
Raised when trying to create a Failure from the current interpreter
exception state and there is no current exception state.
r   N)r   r   r   r   Ú__doc__r   r   r   r   r2   r2   \   s   † õr   r2   c                óä   € \        V 4      ^ 8”  g   Q R4       hRp\        V ^ ,          V4      p\        V4      ;r#V R,           F*  p\        WA4      p\        V4      Vn        VP                  pK,  	  V# )zÒ
Construct a fake traceback object using a list of frames.

It should have the same API as stdlib to allow interaction with
other tools.

@param tbFrames: [(methodname, filename, lineno, locals, globals), ...]
zMust pass some framesN:é   NN)ÚlenÚ_FrameÚ_TracebackFrameÚtb_next)ÚtbFramesÚstackÚfirstTbÚtbÚsfs   &    r   Ú
_Tracebackr?   c   sx   € ô ˆx‹=˜1ÔÐ5Ð5Ó5Ðð €Eô �8˜A•; Ó&€EÜ" 5Ó)Ð)€GØ�r�lˆlˆÜ�rÓ!ˆÜ$ UÓ+ˆŒ
Ø�Z‰ZŠñ ð €Nr   c                  ó    € ] tR t^„tRtR tRtR# )r8   ze
Fake traceback object which can be passed to functions in the standard
library L{traceback} module.
c                ód   € Wn         VP                  V n        VP                  V n        RV n        R# )z
@param frame: _Frame object
N)Útb_frameÚf_linenoÚ	tb_linenoÚf_lastiÚtb_lastir9   )ÚselfÚframes   &&r   Ú__init__Ú_TracebackFrame.__init__Š   s&   € ð ŒØŸ™ˆŒØŸ™ˆŒØˆŽr   )rB   rF   rD   r9   N©r   r   r   r   r3   rI   r   r   r   r   r8   r8   „   s   † ñö
r   r8   c                  ó    € ] tR t^”tRtR tRtR# )r7   a(  
A fake frame object, used by L{_Traceback}.

@ivar f_code: fake L{code<types.CodeType>} object
@ivar f_lineno: line number
@ivar f_globals: fake f_globals dictionary (usually empty)
@ivar f_locals: fake f_locals dictionary (usually empty)
@ivar f_back: previous stack frame (towards the caller)
c                ó  € Vw  r4rVp\        W44      V n        WPn        \        T;'       g    / 4      V n        \        T;'       g    / 4      V n        W n        ^ V n        \        \        4      P                  4       V n        RV n        R# )z‚
@param frameinfo: (methodname, filename, lineno, locals, globals)
@param back: previous (older) stack frame
@type back: C{frame}
N)Ú_CodeÚf_coderC   ÚdictÚ	f_globalsÚf_localsÚf_backrE   ÚvarsÚbuiltinsÚcopyÚ
f_builtinsÚf_trace)rG   Ú	frameinfoÚbackr.   r*   r+   ÚlocalzÚglobalzs   &&&     r   rI   Ú_Frame.__init__Ÿ   sl   € ð 3<Ñ/ˆ˜¨Ü˜DÓ+ˆŒØŒÜ˜gŸm˜m¨Ó,ˆŒÜ˜VŸ\˜\ rÓ*ˆŒØŒØˆŒÜœx›.×-Ñ-Ó/ˆŒØˆŽr   )rS   rW   rO   rQ   rE   rC   rR   rX   NrK   r   r   r   r7   r7   ”   s   † ñör   r7   c                  ó&   € ] tR t^°tRtR tR tRtR# )rN   z¹
A fake code object, used by L{_Traceback} via L{_Frame}.

It is intended to have the same API as the stdlib code type to allow
interoperation with other tools based on that interface.
c                	óâ   € Wn         W n        R V n        ^ V n        ^ V n        . V n        R V n        RV n        RV n        ^ V n	        RV n
        ^ V n        ^ V n        RV n        ^ V n        ^ V n        R# )r   Nr   )Úco_nameÚco_filenameÚ	co_lnotabÚco_firstlinenoÚco_argcountÚco_varnamesÚco_codeÚco_cellvarsÚ	co_constsÚco_flagsÚco_freevarsÚco_posonlyargcountÚco_kwonlyargcountÚco_namesÚ
co_nlocalsÚco_stacksize)rG   r.   r*   s   &&&r   rI   Ú_Code.__init__¸   sw   € ØŒØ#ÔØˆŒØˆÔØˆÔØˆÔØˆŒØˆÔØˆŒØˆŒØˆÔØ"#ˆÔØ!"ˆÔØˆŒØˆŒØˆÖr   c                	ó   € R# )N))NNNNr   ©rG   s   &r   Úco_positionsÚ_Code.co_positionsÊ   s   € Ø*Ð*r   )rd   rg   rf   rh   ra   rc   ri   rj   rl   rb   r`   rm   rn   rk   ro   re   N)r   r   r   r   r3   rI   rs   r   r   r   r   rN   rN   °   s   † ñòö$+r   rN   c               ó    € V ^8„  d   QhRRRR/# )é   Úfr   Úreturnr   )Úformats   "r   Ú__annotate__rz   Ñ   s   € ÷ ñ �;ð  ;ñ r   c                óD   € \         P                  V P                  4       V # )zë
Mark the given callable as extraneous to inlineCallbacks exception
reporting; don't show these functions.

@param f: a function that you NEVER WANT TO SEE AGAIN in ANY TRACEBACK
    reported by Failure.

@type f: function

@return: f
)Ú_inlineCallbacksExtraneousÚappendÚ__code__)rw   s   &r   Ú_extraneousr   Ñ   s   € ô ×%Ñ% a§j¡jÔ1Ø€Hr   c                  ó¦  € ] tR t^átRt^ tRtR&R lt]R 4       t	]	P                  R 4       t	]! ]! R^^
^ 4      4      R 4       t]P                  R 4       t]R	 4       t]P                  R
 4       tR t]R R l4       tR tR tR R lt]R 4       tR R ltR R ltR tR tR tR tR tR R ltR R ltR'R  R! llt R(R" lt!R)R# lt"R)R$ lt#R%t$R# )*ÚFailurea…  
A basic abstraction for an error that has occurred.

This is necessary because Python's built-in error mechanisms are
inconvenient for asynchronous communication.

The C{frame} attribute contain the traceback frames.  Each frame is a tuple
of (funcName, fileName, lineNumber, localsItems, globalsItems), where
localsItems and globalsItems are the contents of
C{locals().items()}/C{globals().items()} for that frame, or an empty tuple
if those details were not captured.

Local/global variables in C{frame} will only be captured if
C{captureVars=True} when constructing the L{Failure}.

@ivar value: The exception instance responsible for this failure.

@ivar type: The exception's class.

@ivar stack: Deprecated, always an empty list.  Equivalent information can
    be extracted from C{import traceback;
    traceback.extract_stack(your_failure.tb)}

@ivar frames: list of frames, innermost first.
Nc                óŠ  € \         ^,           s \         V n         R;V n        ;V n        pW@n        Vf=   \        P
                  ! 4       w  V n        V n        pV P                  f   \        4       hMOVf@   \        V\        4      '       d   VP                  V n        M\        V4      V n        Wn        MW n        Wn        \        V P                  \        4      '       d   V P                  V P                  4       R# Vf?   V'       d   TpM3\        V P                  RR4      '       d   V P                  P                  pWPn        R# )a�  
Initialize me with an explanation of the error.

By default, this will use the current C{exception}
(L{sys.exc_info}()).  However, if you want to specify a
particular kind of failure, you can pass an exception as an
argument.

If no C{exc_value} is passed, then an "original" C{Failure} will
be searched for. If the current exception handler that this
C{Failure} is being constructed in is handling an exception
raised by L{raiseException}, then this C{Failure} will act like
the original C{Failure}.

For C{exc_tb} only L{traceback} instances or L{None} are allowed.
If L{None} is supplied for C{exc_value}, the value of C{exc_tb} is
ignored, otherwise if C{exc_tb} is L{None}, it will be found from
execution context (ie, L{sys.exc_info}).

@param captureVars: if set, capture locals and globals of stack
    frames.  This is pretty slow, and makes no difference unless you
    are going to use L{printDetailedTraceback}.
NÚ__traceback__)ÚcountÚtypeÚvalueÚcaptureVarsÚsysÚexc_infor2   Ú
isinstanceÚ	ExceptionÚ	__class__r�   Ú_extrapolateÚgetattrrƒ   r=   )rG   Ú	exc_valueÚexc_typeÚexc_tbr‡   r=   s   &&&&& r   rI   ÚFailure.__init__ÿ   s÷   € ô2 ˜•	ˆÜˆŒ
Ø&*Ð*ˆŒ	Ð*�D”J Ø&ÔàÒÜ(+¯ª«Ñ%ˆDŒI�t”z 2Ø�y‰yÒ Ü-Ó/Ð/ð !àÒÜ˜)¤Y×/Ò/Ø%×/Ñ/�•	ô ! ›O�”	Ø"�Jà ŒIØ"ŒJä�d—j‘j¤'×*Ò*Ø×Ñ˜dŸj™jÔ)ÙàŠ:ßØ‘Ü˜Ÿ™ _°d×;Ò;à—Z‘Z×-Ñ-�ØŽr   c                	ó˜  € \        V R 4      '       d   V P                  # . ;qn        V P                  pVEe   VP                  pV P                  '       d›   VP
                  P                  4       pVP
                  VP                  J d   / pMVP                  P                  4       pWT3 F  pRV9   g   K  VR K  	  \        VP                  4       4      p\        VP                  4       4      pMR;rEVP                  VP                  P                  VP                  P                  VP                  VV34       VP                  pEK  V# )Ú_framesÚ__builtins__r   )Úhasattrr”   r=   rB   r‡   rR   rV   rQ   ÚlistÚitemsr}   rO   r`   ra   rD   r9   )rG   r%   r=   rw   r[   r\   Úds   &      r   r%   ÚFailure.frames8  s  € ä�4˜×#Ò#Ø—<‘<Ðà "Ð"ˆ”Ø�W‰Wˆà‹nØ—‘ˆAØ××ÐØŸ™Ÿ™Ó*�Ø—:‘: §¡Ó,Ø ‘GàŸk™k×.Ñ.Ó0�GØ ›�AØ%¨Ö*Ø˜nÒ-ñ )ô ˜fŸl™l›nÓ-�Ü˜wŸ}™}›Ó/‘à#%Ð%�Ø�M‰Mà—H‘H×$Ñ$Ø—H‘H×(Ñ(Ø—L‘LØØðôð —‘‹BØˆr   c                	ó   € Wn         R # ©N)r”   )rG   r%   s   &&r   r%   rš   [  s   € àŽr   ÚTwistedc                	ó   € . # rœ   r   rr   s   &r   r;   ÚFailure.stack_  s   € àˆ	r   c                	ó   € ?R # rœ   r   )rG   r;   s   &&r   r;   rŸ   c  s   € âr   c                	ó�  € V P                   e   V P                   # \        P                  ! V P                  4      '       dj   \	        V P                  \
        4      '       dJ   \        V P                  4      p\        \        \        P                  V4      4      V n         V P                   # V P                  .V n         V P                   # rœ   )Ú_parentsÚinspectÚisclassr…   Ú
issubclassr‹   r   r—   Úmapr
   Úqual)rG   ÚparentCss   & r   ÚparentsÚFailure.parentsg  sƒ   € à�=‰=Ò$Ø—=‘=Ð ä�?Š?˜4Ÿ9™9×%Ò%¬*°T·Y±YÄ	×*JÒ*JÜ˜dŸi™iÓ(ˆHÜ ¤¤W§\¡\°8Ó!<Ó=ˆDŒMð �}‰}Ðð "ŸY™Y˜KˆDŒMØ�}‰}Ðr   c                	ó   € Wn         R # rœ   )r¢   )rG   r©   s   &&r   r©   rª   s  s   € àŽr   c                óP   € \         P                   ! VP                  4      V n        R# )zü
Extrapolate from one failure into another, copying its stack frames.

@param otherFailure: Another L{Failure}, whose traceback information,
    if any, should be preserved as part of the stack presented by this
    one.
@type otherFailure: L{Failure}
N)rV   Ú__dict__)rG   ÚotherFailures   &&r   r�   ÚFailure._extrapolatew  s   € ô Ÿ	š	 ,×"7Ñ"7Ó8ˆŽr   c               ó    € V ^8„  d   QhRRRR/# )rv   r†   ÚBaseExceptionrx   r�   r   )ry   s   "r   rz   ÚFailure.__annotate__„  s   € ÷ ñ  ð °7ñ r   c                ó²   € \         P                  \         4      p\        ^,          sRVn        \        Vn        Wn        V P
                  Vn        RVn        V# )zˆ
Create a L{Failure} for an exception without a traceback.

By restricting the inputs significantly, this constructor runs much
faster.
FN)r�   Ú__new__r„   r‡   r†   rŒ   r…   r=   )r†   Úresults   & r   Ú_withoutTracebackÚFailure._withoutTracebackƒ  sF   € ô —‘¤Ó)ˆä��
ˆØ"ˆÔÜˆŒØŒØ—o‘oˆŒØˆŒ	Øˆr   c                óV   € V P                   ! V!  pV'       g   V P                  4        V# )aø  
Trap this failure if its type is in a predetermined list.

This allows you to trap a Failure in an error callback.  It will be
automatically re-raised if it is not a type that you expect.

The reason for having this particular API is because it's very useful
in Deferred errback chains::

    def _ebFoo(self, failure):
        r = failure.trap(Spam, Eggs)
        print('The Failure is due to either Spam or Eggs!')
        if r == Spam:
            print('Spam did it!')
        elif r == Eggs:
            print('Eggs did it!')

If the failure is not a Spam or an Eggs, then the Failure will be
'passed on' to the next errback. In Python 2 the Failure will be
raised; in Python 3 the underlying exception will be re-raised.

@type errorTypes: L{Exception}
)ÚcheckÚraiseException)rG   Ú
errorTypesÚerrors   &* r   ÚtrapÚFailure.trap•  s&   € ð0 —
’
˜JÑ'ˆßØ×ÑÔ!Øˆr   c                óÔ   € V Fa  pTp\         P                  ! V4      '       d-   \        V\        4      '       d   \        P
                  ! V4      pW0P                  9   g   K_  Vu # 	  R# )zÛ
Check if this failure's type is in a predetermined list.

@type errorTypes: list of L{Exception} classes or
                  fully-qualified class names.
@returns: the matching L{Exception} type, or None if no match.
N)r£   r¤   r¥   r‹   r
   r§   r©   )rG   r»   r¼   Úerrs   &*  r   r¹   ÚFailure.check²  sP   € ó  ˆEØˆCÜ�Š˜u×%Ò%¬*°U¼I×*FÒ*FÜ—l’l 5Ó)�Ø—l‘lÖ"Ø’ñ  ñ r   c               ó   € V ^8„  d   QhRR/# )rv   rx   r   r   )ry   s   "r   rz   r²   Â  s   € ÷ 1ñ 1 ñ 1r   c                óL   € V P                   P                  V P                  4      h)zN
raise the original exception, preserving traceback
information if available.
)r†   Úwith_tracebackr=   rr   s   &r   rº   ÚFailure.raiseExceptionÂ  s   € ð
 �j‰j×'Ñ'¨¯©Ó0Ð0r   c                ój   € VP                  V P                  P                  V P                  4      4      # )a  
Throw the original exception into the given generator,
preserving traceback information if available.

@return: The next value yielded from the generator.
@raise StopIteration: If there are no more values in the generator.
@raise anything else: Anything that the generator raises.
)Úthrowr†   rÄ   r=   )rG   Úgs   &&r   ÚthrowExceptionIntoGeneratorÚ#Failure.throwExceptionIntoGeneratorÉ  s&   € ð �w‰w�t—z‘z×0Ñ0°·±Ó9Ó:Ð:r   c               ó   € V ^8„  d   QhRR/# ©rv   rx   Ústrr   )ry   s   "r   rz   r²   Õ  s   € ÷ 
ñ 
˜#ñ 
r   c                	ó¼   € R P                  \        P                  ! V P                  4      \        P                  ! V P                  4      V P                  4       4      # )z<{} {}: {}>)ry   r
   r§   rŒ   r…   ÚgetErrorMessagerr   s   &r   Ú__repr__ÚFailure.__repr__Õ  sA   € Ø×#Ñ#Ü�LŠL˜Ÿ™Ó(Ü�LŠL˜Ÿ™Ó#Ø× Ñ Ó"ó
ð 	
r   c               ó   € V ^8„  d   QhRR/# rÌ   r   )ry   s   "r   rz   r²   Ü  s   € ÷ Cñ C˜ñ Cr   c                	ó0   € R V P                  4       ,          # )z[Failure instance: %s])ÚgetBriefTracebackrr   s   &r   Ú__str__ÚFailure.__str__Ü  s   € Ø'¨$×*@Ñ*@Ó*BÕBÐBr   c                	ó¼   € R V9   d   VP                  R 4       VP                  R4      VR&   VP                  R4      VR&   V P                  P                  V4       R# )r;   r©   r¢   r%   r”   N)Úpopr­   Úupdate©rG   Ústates   &&r   Ú__setstate__ÚFailure.__setstate__ß  sN   € Ø�eÔØ�I‰I�gÔØ!ŸI™I iÓ0ˆˆjÑØ Ÿ9™9 XÓ.ˆˆiÑØ�‰×Ñ˜UÖ#r   c                óÈ  € V P                   pV P                  P                  4       pVP                  R4      VR&   . VR&   RV9   d   VP                  R4       V P                  '       d[   V P
                   Uu. uF?  pV^ ,          V^,          V^,          \        V^,          4      \        V^,          4      .NKA  	  upVR&   MV P
                  VR&   RVR&   ^VR&   V# u upi )	zÃ
Avoid pickling objects in the traceback.

This is not called direclty by pickle, since C{BaseException}
implements reduce; instead, pickle calls C{Failure.__reduce__} which
then calls this API.
r¢   r©   r;   r”   r%   Nr=   Úpickled)r©   r­   rV   rØ   r‡   r%   Ú_safeReprVars)rG   Ú_ÚcÚvs   &   r   Ú__getstate__ÚFailure.__getstate__æ  sâ   € ð �L‰Lˆà�M‰M×ÑÓ ˆð —u‘u˜ZÓ(ˆˆ)‰Øˆˆ'‰
à˜Œ>Ø�E‰E�)Ôà××Ðð Ÿšó	ñ %�Að �a•DØ�a•DØ�a•DÜ! ! A¥$Ó'Ü! ! A¥$Ó'óñ %ñ	ˆAˆhŠKð Ÿ+™+ˆAˆh‰Kð ˆˆ$‰àˆˆ)‰Øˆùò#	s   Á8ACc                	ó`   € \        \        P                  \        4      RV P                  4       3# )Nr   )r   r�   r´   rä   rr   s   &r   Ú
__reduce__ÚFailure.__reduce__  s%   € ô œŸ™¬Ó1°2°t×7HÑ7HÓ7JÐKÐKr   c                óº   € V P                  4       pVP                  R4      VR&   Wn        \        V P                  RR4      '       d   RV P                  n        R# R# )z¨
Remove references to other objects, replacing them with strings.

On Python 3, this will also set the C{__traceback__} attribute of the
exception instance to L{None}.
r%   r”   rƒ   N)rä   rØ   r­   rŽ   r†   rƒ   rÚ   s   & r   ÚcleanFailureÚFailure.cleanFailure  sN   € ð ×!Ñ!Ó#ˆØ Ÿ9™9 XÓ.ˆˆiÑØŒÜ�4—:‘:˜°×5Ò5à'+ˆD�J‰JÖ$ñ 6r   c                ó˜   € V P                   e   V P                   # \        V P                  4      ^ 8”  d   \        V P                  4      # R# )aY  
Get an object that represents this Failure's stack that can be passed
to traceback.extract_tb.

If the original traceback object is still present, return that. If this
traceback object has been lost but we still have the information,
return a fake traceback object (see L{_Traceback}). If there is no
traceback information at all, return None.
N)r=   r6   r%   r?   rr   s   &r   ÚgetTracebackObjectÚFailure.getTracebackObject!  s:   € ð �7‰7ÒØ—7‘7ˆNÜ�—‘Ó Ô!Ü˜dŸk™kÓ*Ð*ár   c               ó   € V ^8„  d   QhRR/# rÌ   r   )ry   s   "r   rz   r²   2  s   € ÷ ,ñ , ñ ,r   c                ó¶   € \        V P                  \        4      '       d   V P                  P                  4       # \        P
                  ! V P                  4      # )z:
Get a string of the exception which caused this Failure.
)rŠ   r†   r�   rÏ   r
   Úsafe_strrr   s   &r   rÏ   ÚFailure.getErrorMessage2  s=   € ô �d—j‘j¤'×*Ò*Ø—:‘:×-Ñ-Ó/Ð/Ü×Ò §
¡
Ó+Ð+r   c               ó   € V ^8„  d   QhRR/# rÌ   r   )ry   s   "r   rz   r²   :  s   € ÷ ñ  3ñ r   c                	óZ   € \        4       pV P                  VR 7       VP                  4       # ))Úfile)r   ÚprintBriefTracebackÚgetvalue)rG   Úios   & r   rÔ   ÚFailure.getBriefTraceback:  s&   € Ü‹ZˆØ× Ñ  bÐ Ô)Ø�{‰{‹}Ðr   c               ó$   € V ^8„  d   QhRRRRRR/# )rv   ÚelideFrameworkCodeÚintr'   rÍ   rx   r   )ry   s   "r   rz   r²   ?  s"   € ÷ ñ ¨sð Àð ÐTWñ r   c                	ó\   € \        4       pV P                  W1VR 7       VP                  4       # ))rõ   rû   r'   )r   ÚprintTracebackr÷   )rG   rû   r'   rø   s   &&& r   ÚgetTracebackÚFailure.getTraceback?  s/   € Ü‹ZˆØ×ÑØÀ6ð 	ô 	
ð �{‰{‹}Ðr   c           	     óæ  € Vf   ^ RI Hp VP                  pVP                  pVR8X  d   V P                  '       g   RpMTpVR8X  d;   T! RV P
                  V P                  ;'       d    R;'       g    R3,          4       MwVR8X  di   V P                  '       d   R	pMR
pV! V: R\        P                  ! V P                  4      : R\        P                  ! V P                  4      : R24       MV! R4       V P                  '       d   \        V P                  WV4       MVR8X  g	   V! R4       VR8X  gK   V! \        P                  ! V P                  4       R\        P                  ! V P                  4       R24       \        V P                  \        4      '       d.   VP                  R4       V P                  P!                  WV4       VR8X  d   V! RV P
                  ,          4       R# R# )aT  
Emulate Python's standard error reporting mechanism.

@param file: If specified, a file-like object to which to write the
    traceback.

@param elideFrameworkCode: Deprecated, ignored.

@param detail: A string indicating how much information to include
    in the traceback.  Must be one of C{'brief'}, C{'default'}, or
    C{'verbose'}.
N)Úlogr   r   z*--- Failure #%d%s---
z (pickled) Ú r   Ú	Tracebackz"Traceback (failure with no frames)z: r   z#Traceback (most recent call last):
z	Failure: z (chained Failure)
z*--- End of Failure #%d ---
)Útwisted.pythonr  Úlogerrr&   r‡   r„   rß   r%   r
   rñ   r…   r†   r0   r§   rŠ   r�   rþ   )rG   rõ   rû   r'   r  r(   ÚformatDetailÚ	hasFramess   &&&&    r   rþ   ÚFailure.printTracebackF  s‹  € ð Š<Ý*à—:‘:ˆDà�J‰Jˆà�YÔ t×'7×'7Ð'7ð 7‰Là!ˆLð �YÔÙØ)Ø—:‘: §¡× >Ð >°×FÐFÀ3ÐGõHõð �wÔØ�{�{ˆ{Ø'‘	à@�	Ùãœg×.Ò.¨t¯y©yÖ9¼7×;KÒ;KÈDÏJÉJÖ;WðYõñ
 Ð4Ô5ð �;�;ˆ;Ü˜$Ÿ+™+ qÕ7Ø˜7Ô"áˆkŒNð ˜Ô Ù”—’˜dŸi™iÓ(Ð)¨¬G×,<Ò,<¸T¿Z¹ZÓ,HÐ+IÈÐLÔMô �d—j‘j¤'×*Ò*à�J‰JÐ-Ô.Ø�J‰J×%Ñ% dÀÔGØ�YÔÙÐ-°·
±
Õ:Ö;ñ r   c                ó,   € V P                  WRR7       R# )z+
Print a traceback as densely as possible.
r   ©r'   N©rþ   ©rG   rõ   rû   s   &&&r   rö   ÚFailure.printBriefTraceback‡  s   € ð 	×Ñ˜D¸WÐÖEr   c                ó,   € V P                  WRR7       R# )zA
Print a traceback with detailed locals and globals information.
r   r  Nr  r  s   &&&r   ÚprintDetailedTracebackÚFailure.printDetailedTraceback�  s   € ð 	×Ñ˜D¸YÐÖGr   )r­   r”   r¢   r‡   r„   r=   r…   r†   )NNNF)é    r   )NFr   )Nr  )%r   r   r   r   r3   rß   r¢   rI   Úpropertyr%   Úsetterr   r	   r;   r©   r�   Ústaticmethodr¶   r½   r¹   rº   r   rÉ   rÐ   rÕ   rÜ   rä   rç   rê   rí   rÏ   rÔ   rÿ   rþ   rö   r  r   r   r   r   r�   r�   á   s7  † ñð4 €GØ€Hô7ðr ñ ó ð ðD ‡]�]ñó ðñ ™ 	¨2¨r°1Ó5Ó6ñó 7ðð ‡\�\ñó ðð ñ	ó ð	ð ‡^�^ñ ó ð ò
9ð ôó ðò"ò:õ 1ð ñ	;ó ð	;õ
õCò$ò&òPLò
,òõ",õ÷
ô?<ôBF÷Hð Hr   r�   c                óf   € V  UUu. uF  w  rV\         P                  ! V4      3NK  	  upp# u uppi )aU  
Convert a list of (name, object) pairs into (name, repr) pairs.

L{twisted.python.reflect.safe_repr} is used to generate the repr, so no
exceptions will be raised by faulty C{__repr__} methods.

@param varsDictItems: a sequence of (name, value) pairs as returned by e.g.
    C{locals().items()}.
@returns: a sequence of (name, repr) pairs.
)r
   Ú	safe_repr)ÚvarsDictItemsr.   Úobjs   &  r   rà   rà   ”  s/   € ñ ?LÔL¹m©{°ˆT”7×$Ò$ SÓ)Ó*¹mÒLÐLùÓLs   †#-TFc                óV  € WV3R8X  dƒ   \         P                  ! 4       pV^ ,          V P                  8X  gV   \        '       dJ    \	        V^,          4      p\        RP                  V4      4       ^ RIpVP                  V^,          4       V! WW#V4       R#   \
         d    Rp LQi ; i)z3
Initialize failure object, possibly spawning pdb.
Nz
broken strz8Jumping into debugger for post-mortem of exception '{}':)NNN)
rˆ   r‰   rŒ   ÚDO_POST_MORTEMrÍ   r±   Úprintry   ÚpdbÚpost_mortem)	rG   r�   r�   r‘   r‡   ÚFailure__init__ÚexcÚstrreprr  s	   &&&&&&   r   Ú
_debuginitr"  §  s•   € ð 	˜VÐ$Ð(:Ô:Ü�lŠl‹nˆØ�1�v˜Ÿ™Ô'¯N«Nð'Ü˜c !�f›+�ô ØJ×QÑQØóôó
 à�O‰O˜C �FÔ#Ù�D X°{ÖCøô !ô 'Ø&’ð'ús   ÁB ÂB(Â'B(c                 ó$   € \         \        n        R# )z"
Enable debug hooks for Failures.
N)r"  r�   rI   r   r   r   ÚstartDebugModer$  Ä  s   € ô "„GÖr   )r   )-r3   Ú
__future__r   rU   rV   r£   r!   rˆ   Ú	functoolsr   r   rø   r   Útypingr   r   r   Úincrementalr	   r  r
   Útwisted.python.deprecater   Úobjectr   r„   ÚtraceupLengthr‹   r   r0   ÚEXCEPTION_CAUGHT_HEREr2   r?   r8   r7   rN   r|   r   r±   r�   rà   r  rI   r"  r$  r   r   r   Ú<module>r-     sî   ðñõ #ó Û Û Û Û 
Ý Ý Ý ß .Ñ .å å "Ý 7á�m¨8°C¸°KÕ+@ÔA€à	€Ø€ô	�yô 	ô+/ð^ :Ð ô˜iô ò÷Bñ ÷ ñ ÷8+ñ +ð<  Ð õô pHˆmô pHòfMð  €ð
 ØØØØ×$Ñ$ôDô:"r   