Ë
    æØjj:ä  ã                  óà  — U d dl m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 d dlZd dl	Z	d dl
mZ d dlZd dlm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 d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlm Z  d dlm!Z! d dlm"Z" d dlm#Z# d dlm$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+ d dl,m-Z- d dl.m/Z/ d d l.m0Z0 d d!l1m2Z2 d d"l3m4Z4 d d#l5m6Z6 d d$l5m7Z7 ejp                  d%k  rd d&l9m:Z: e d'   Z;e<e=   e>e<e=   d(f   z  Z? G d)„ d*«      Z@ G d+„ d,«      ZA G d-„ d.«      ZB G d/„ d0eCeB   «      ZD	 dY	 	 	 	 	 dZd2„ZE e$d3e=d1¬4«      ZFeejŽ                   G d5„ d6eeF   «      «       «       ZHeIeeHe=   geDf   z  ZJd7eKd8<   ejŽ                   G d9„ d:«      «       ZL ejŽ                  d;¬<«       G d=„ d>«      «       ZM ejŽ                  d;¬<«       G d?„ d@eM«      «       ZN ejŽ                  d;¬<«       G dA„ dBeN«      «       ZO ejŽ                  d;¬<«       G dC„ dDeN«      «       ZP ejŽ                  d;¬<«       G dE„ dFeM«      «       ZQ G dG„ dHeQ«      ZR ejŽ                  d;¬<«       G dI„ dJeM«      «       ZS ejŽ                  d;¬<«       G dK„ dLeM«      «       ZT ejŽ                  d;¬<«       G dM„ dNeM«      «       ZU ejŽ                  d;¬<«       G dO„ dPeM«      «       ZV ejŽ                  d;¬<«       G dQ„ dReM«      «       ZWd[dS„ZXdT„ ZY ee%j´                  j·                  dU«      «      Z\e\jº                  dVk(  re\j¼                  Z\ ee&j´                  «      j¼                  Z_d\dW„Z`	 	 	 	 	 	 d]dX„Zay)^é    )ÚannotationsN)ÚCallable)ÚIterable)ÚMapping)ÚSequence)ÚStringIO)ÚPath)Ú
extract_tb)Úformat_exception)Úformat_exception_only)ÚFrameSummary)ÚCodeType)Ú	FrameType)ÚTracebackType)ÚAny)ÚClassVar)ÚFinal)Úfinal)ÚGeneric)ÚLiteral)Úoverload)ÚSupportsIndex)Ú	TypeAlias)ÚTypeVar)Ú
findsource©Ú
getrawcode)Úgetstatementrange_ast)ÚSource)ÚTerminalWriter)Ú
safeformat©Úsaferepr)Úget_real_func)Úcheck_ispytest)Úabsolutepath)Úbestrelpath©é   é   )ÚBaseExceptionGroup)ÚlongÚshortÚlineÚnoÚnativeÚvalueÚauto.c                  ó’   — e Zd ZdZdZdd„Zedd„«       Zd„ ZdZ	e
dd„«       Ze
dd„«       Ze
dd	„«       Ze
dd
„«       Zdd„Zddd„Zy)ÚCodez#Wrapper around Python code objects.©Úrawc                ó   — || _         y ©Nr5   )ÚselfÚobjs     úT/opt/eval-harness/bench_task/venv/lib/python3.12/site-packages/_pytest/_code/code.pyÚ__init__zCode.__init__?   s	   € Øˆ�ó    c                ó$   —  | t        |«      «      S r8   r   )Úclsr:   s     r;   Úfrom_functionzCode.from_functionB   s   € á”:˜c“?Ó#Ð#r=   c                ó4   — | j                   |j                   k(  S r8   r5   )r9   Úothers     r;   Ú__eq__zCode.__eq__F   s   € Ø�x‰x˜5Ÿ9™9Ñ$Ð$r=   Nc                ó4   — | j                   j                  dz
  S ©Né   )r6   Úco_firstlineno©r9   s    r;   ÚfirstlinenozCode.firstlinenoL   s   € à�x‰x×&Ñ&¨Ñ*Ð*r=   c                ó.   — | j                   j                  S r8   )r6   Úco_namerH   s    r;   Únamez	Code.nameP   s   € à�x‰x×ÑÐr=   c                óº   — t        j                  | j                  «      }|sy	 t        |«      }|j	                  «       st        d«      ‚|S # t
        $ r |cY S w xY w)zoReturn a path object pointing to source code, or an ``str`` in
        case of ``OSError`` / non-existing file.Ú zpath check failed.)ÚinspectÚgetfiler6   r&   ÚexistsÚOSError)r9   ÚfilenameÚps      r;   Úpathz	Code.pathT   s[   € ô —?‘? 4§8¡8Ó,ˆÙØð		Ü˜XÓ&ˆAà—8‘8”:ÜÐ2Ó3Ð3ØˆHøÜò 	ð ŠOð	ús   ¤'A ÁAÁAc                ó6   — t        | j                  «      \  }}|S )zJReturn a _pytest._code.Source object for the full source file of the code.)r   r6   )r9   ÚfullÚ_s      r;   Ú
fullsourcezCode.fullsourcef   s   € ô ˜TŸX™XÓ&‰ˆˆaØˆr=   c                ó,   — t        | j                  «      S )zGReturn a _pytest._code.Source object for the code object's source only.)r   r6   rH   s    r;   ÚsourcezCode.sourcel   s   € ô �d—h‘hÓÐr=   c                ó  — t        j                  | j                  «      \  }}}|s"t        |d| j                  j                   «      S t        |«      }|�|j                  |«       |�|j                  |«       t        |«      S )z´Return a tuple with the argument names for the code object.

        If 'var' is set True also return the names of the variable and
        keyword arguments when present.
        N)rO   Úgetargsr6   ÚtupleÚco_argcountÚlistÚappend)r9   ÚvarÚargsÚvarargsÚvarkwÚresults         r;   r]   zCode.getargsq   st   € ô  'Ÿ™¨t¯x©xÓ8Ñˆˆg�uÙÜ˜Ð4 §¡× 4Ñ 4Ð5Ó6Ð6Ü�d“ˆØÐØ�M‰M˜'Ô"ØÐØ�M‰M˜%Ô Ü�V‹}Ðr=   )r:   r   ÚreturnÚNone)r:   Úobjectrg   r4   ©rg   Úint©rg   Ústr©rg   ú
Path | str)rg   úSource | None©rg   r   ©F)rb   Úboolrg   ztuple[str, ...])Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú	__slots__r<   Úclassmethodr@   rC   Ú__hash__ÚpropertyrI   rL   rU   rY   r[   r]   © r=   r;   r4   r4   :   s‡   „ Ù-à€Ióð ò$ó ð$ò%ð €Hàò+ó ð+ð ò ó ð ð òó ðð" òó ðó
 õ
r=   r4   c                  óŽ   — e Zd ZdZdZdd„Zedd„«       Zedd„«       Zedd„«       Z	edd„«       Z
edd„«       Zd	„ Zdd
„Zddd„Zy)ÚFramezgWrapper around a Python frame holding f_locals and f_globals
    in which expressions can be evaluated.r5   c                ó   — || _         y r8   r5   )r9   Úframes     r;   r<   zFrame.__init__Š   s	   € Øˆ�r=   c                ó4   — | j                   j                  dz
  S rE   )r6   Úf_linenorH   s    r;   ÚlinenozFrame.lineno�   s   € à�x‰x× Ñ  1Ñ$Ð$r=   c                ó.   — | j                   j                  S r8   )r6   Ú	f_globalsrH   s    r;   r…   zFrame.f_globals‘   s   € à�x‰x×!Ñ!Ð!r=   c                ó.   — | j                   j                  S r8   )r6   Úf_localsrH   s    r;   r‡   zFrame.f_locals•   s   € à�x‰x× Ñ Ð r=   c                ó@   — t        | j                  j                  «      S r8   )r4   r6   Úf_coderH   s    r;   Úcodez
Frame.code™   s   € ä�D—H‘H—O‘OÓ$Ð$r=   c                ó¢   — | j                   j                  €t        d«      S | j                   j                  j                  | j                  «      S )zStatement this frame is at.rN   )rŠ   rY   r   Úgetstatementrƒ   rH   s    r;   Ú	statementzFrame.statement�   s=   € ð �9‰9×ÑÐ'Ü˜"“:ÐØ�y‰y×#Ñ#×0Ñ0°·±Ó=Ð=r=   c                ó†   — | j                   j                  «       }|j                  |«       t        || j                  |«      S )zŽEvaluate 'code' in the frame.

        'vars' are optional additional local variables.

        Returns the result of the evaluation.
        )r‡   ÚcopyÚupdateÚevalr…   )r9   rŠ   Úvarsr‡   s       r;   r‘   z
Frame.eval¤   s5   € ð —=‘=×%Ñ%Ó'ˆØ�‰˜ÔÜ�D˜$Ÿ.™.¨(Ó3Ð3r=   c                ó   — t        |«      S )zCReturn a 'safe' (non-recursive, one-line) string repr for 'object'.r"   )r9   ri   s     r;   Úreprz
Frame.repr¯   s   € ä˜ÓÐr=   c                óª   — g }| j                   j                  |«      D ]#  }	 |j                  || j                  |   f«       Œ% |S # t        $ r Y Œ3w xY w)z¦Return a list of tuples (name, value) for all arguments.

        If 'var' is set True, also include the variable and keyword arguments
        when present.
        )rŠ   r]   ra   r‡   ÚKeyError)r9   rb   ÚretvalÚargs       r;   r]   zFrame.getargs³   sa   € ð ˆØ—9‘9×$Ñ$ SÓ)ò 	ˆCðØ—‘˜s D§M¡M°#Ñ$6Ð7Õ8ð	ð
 ˆøô ò Ùðús   ¢ AÁ	AÁAN)r€   r   rg   rh   rj   ©rg   zdict[str, Any])rg   r4   rq   )ri   ri   rg   rm   rr   )rb   rs   )rt   ru   rv   rw   rx   r<   r{   rƒ   r…   r‡   rŠ   r�   r‘   r”   r]   r|   r=   r;   r~   r~   „   s†   „ ñ.ð €Ióð ò%ó ð%ð ò"ó ð"ð ò!ó ð!ð ò%ó ð%ð ò>ó ð>ò	4ó õr=   r~   c                  óŽ  — e Zd ZdZdZ	 d	 	 	 	 	 dd„Z	 	 	 	 dd„Zedd„«       Zdd„Z	e
j                  dk  redd	„«       Zedd
„«       Zedd„«       Znedd„«       Zedd„«       Zedd„«       Zed d„«       Zedd„«       Zd!d„Zed"d„«       Zed#d„«       Zed$d„«       Zdd„Z	 d	 	 	 d%d„Z ee«      Zd&d„Zd!d„Zed!d„«       Zy)'ÚTracebackEntryzA single entry in a Traceback.©Ú	_rawentryÚ_repr_styleNc                ó    — || _         || _        y r8   rœ   )r9   ÚrawentryÚ
repr_styles      r;   r<   zTracebackEntry.__init__Ç   s   € ð
 !)ˆŒØ",ˆÕr=   c                ó.   — t        | j                  |«      S r8   )r›   r�   )r9   r¡   s     r;   Úwith_repr_stylezTracebackEntry.with_repr_styleÏ   s   € ô ˜dŸn™n¨jÓ9Ð9r=   c                ó4   — | j                   j                  dz
  S rE   )r�   Ú	tb_linenorH   s    r;   rƒ   zTracebackEntry.linenoÔ   s   € à�~‰~×'Ñ'¨!Ñ+Ð+r=   c                ó:   — t        | j                  d¬«      }|d   S )NrF   )Úlimitr   )r
   r�   )r9   Ústack_summarys     r;   Úget_python_framesummaryz&TracebackEntry.get_python_framesummaryØ   s   € ô # 4§>¡>¸Ô;ˆØ˜QÑÐr=   r(   c                 ó   — y r8   r|   rH   s    r;   Úend_lineno_relativez"TracebackEntry.end_lineno_relativeá   ó   € àr=   c                 ó   — y r8   r|   rH   s    r;   ÚcolnozTracebackEntry.colnoå   r¬   r=   c                 ó   — y r8   r|   rH   s    r;   Ú	end_colnozTracebackEntry.end_colnoé   r¬   r=   c                óœ   — | j                  «       }|j                  €y |j                  dz
  | j                  j                  j                  z
  S rE   )r©   Ú
end_linenor€   rŠ   rI   )r9   Úframe_summarys     r;   r«   z"TracebackEntry.end_lineno_relativeî   sC   € à ×8Ñ8Ó:ˆMØ×'Ñ'Ð/ØØ ×+Ñ+¨aÑ/°$·*±*·/±/×2MÑ2MÑMÐMr=   c                ó6   — | j                  «       j                  S )z>Starting byte offset of the expression in the traceback entry.)r©   r®   rH   s    r;   r®   zTracebackEntry.colnoõ   s   € ð ×/Ñ/Ó1×7Ñ7Ð7r=   c                ó6   — | j                  «       j                  S )z<Ending byte offset of the expression in the traceback entry.)r©   r°   rH   s    r;   r°   zTracebackEntry.end_colnoú   s   € ð ×/Ñ/Ó1×;Ñ;Ð;r=   c                ó@   — t        | j                  j                  «      S r8   )r~   r�   Útb_framerH   s    r;   r€   zTracebackEntry.frameÿ   s   € ä�T—^‘^×,Ñ,Ó-Ð-r=   c                ó\   — | j                   | j                  j                  j                  z
  S r8   )rƒ   r€   rŠ   rI   rH   s    r;   ÚrellinezTracebackEntry.relline  s   € à�{‰{˜TŸZ™ZŸ_™_×8Ñ8Ñ8Ð8r=   c                ój   — d| j                   j                  j                  › d| j                  dz   › d�S )Nz<TracebackEntry ú:rF   ú>)r€   rŠ   rU   rƒ   rH   s    r;   Ú__repr__zTracebackEntry.__repr__  s/   € Ø! $§*¡*§/¡/×"6Ñ"6Ð!7°q¸¿¹Àq¹Ð8IÈÐKÐKr=   c                ó€   — | j                   j                  j                  }|€J ‚|j                  | j                  «      S )z6_pytest._code.Source object for the current statement.)r€   rŠ   rY   rŒ   rƒ   )r9   r[   s     r;   r�   zTracebackEntry.statement
  s8   € ð —‘—‘×+Ñ+ˆØÐ!Ð!Ð!Ø×"Ñ" 4§;¡;Ó/Ð/r=   c                óB   — | j                   j                  j                  S )zPath to the source code.)r€   rŠ   rU   rH   s    r;   rU   zTracebackEntry.path  s   € ð �z‰z�‰×#Ñ#Ð#r=   c                ó.   — | j                   j                  S )zLocals of underlying frame.)r€   r‡   rH   s    r;   ÚlocalszTracebackEntry.locals  s   € ð �z‰z×"Ñ"Ð"r=   c                óB   — | j                   j                  j                  S r8   )r€   rŠ   rI   rH   s    r;   Úgetfirstlinesourcez!TracebackEntry.getfirstlinesource  s   € Ø�z‰z�‰×*Ñ*Ð*r=   c                óp  — | j                   j                  j                  }|€ydx}}|�4| j                   j                  j                  }|�|j	                  |d«      }| j                  «       }	 t        | j                  ||¬«      \  }}}|�|�|||<   	 ||| S # t        $ r | j                  dz   }Y Œw xY w)zReturn failing source code.N)ÚastnoderF   )	r€   rŠ   rY   rU   ÚgetrÃ   r   rƒ   ÚSyntaxError)r9   Úastcacher[   ÚkeyrÅ   ÚstartrX   Úends           r;   Ú	getsourcezTracebackEntry.getsource  sÅ   € ð —‘—‘×+Ñ+ˆØˆ>ØØÐˆˆgØÐØ—*‘*—/‘/×&Ñ&ˆCØˆØ"Ÿ,™, s¨DÓ1�Ø×'Ñ'Ó)ˆð	(Ü3Ø—‘˜V¨Wô‰OˆG�Q˜ð ˆ 8Ð#7Ø '�˜’Ø�e˜CÐ Ð øô ò 	"Ø—+‘+ ‘/ŠCð	"ús   Á/B ÂB5Â4B5c                óÂ   — d}| j                   j                  | j                   j                  fD ]	  }	 |d   } n |rt	        |«      r ||«      S |S # t        $ r Y Œ.w xY w)a  Return True if the current frame has a var __tracebackhide__
        resolving to True.

        If __tracebackhide__ is a callable, it gets called with the
        ExceptionInfo instance and can decide whether to hide the traceback.

        Mostly for internal use.
        FÚ__tracebackhide__)r€   r‡   r…   Ú	ExceptionÚcallable)r9   ÚexcinfoÚtbhÚmaybe_ns_dcts       r;   ÚishiddenzTracebackEntry.ishidden:  sv   € ð MRˆØ!ŸZ™Z×0Ñ0°$·*±*×2FÑ2FÐGò 
	ˆLð
Ø"Ð#6Ñ7�ñ ð
	ñ ”8˜C”=Ù�w“<ÐØˆ
øô ò Ùðús   ³AÁ	AÁAc           	     ó
  — | j                   j                  j                  }	 t        | j                  «      j                  «       }d| j                  › d| j                  dz   › d|› d|› d�	S # t        $ r ‚ t        $ r d}Y Œ<w xY w)Nú???z  File 'z':rF   z in z
  ú
)
r€   rŠ   rL   rm   r�   ÚlstripÚKeyboardInterruptÚBaseExceptionrU   rƒ   )r9   rL   r.   s      r;   Ú__str__zTracebackEntry.__str__S  s‚   € Ø�z‰z�‰×#Ñ#ˆð	Ü�t—~‘~Ó&×-Ñ-Ó/ˆDð ˜$Ÿ)™)˜ B t§{¡{°Q¡Ð&7°t¸D¸6ÀÀdÀVÈ2ÐNÐNøô !ò 	ØÜò 	ØŠDð	ús   ¢#A+ Á+BÂBc                óV   — | j                   j                  j                  j                  S )zco_name of underlying code.)r€   rŠ   r6   rK   rH   s    r;   rL   zTracebackEntry.name`  s   € ð �z‰z�‰×"Ñ"×*Ñ*Ð*r=   r8   )r    r   r¡   úLiteral['short', 'long'] | Nonerg   rh   )r¡   rÝ   rg   r›   rj   )rg   r   ©rg   ú
int | None)rg   r~   rl   rq   rn   r™   )rÈ   z dict[str | Path, ast.AST] | Nonerg   rp   )rÑ   ú#ExceptionInfo[BaseException] | Nonerg   rs   )rt   ru   rv   rw   rx   r<   r£   r{   rƒ   r©   ÚsysÚversion_infor«   r®   r°   r€   r¹   r½   r�   rU   rÁ   rÃ   rÌ   r[   rÔ   rÛ   rL   r|   r=   r;   r›   r›   Â   s›  „ Ù(à,€Ið
 7;ð-àð-ð 4ð-ð 
ó	-ð:Ø9ð:à	ó:ð
 ò,ó ð,ó ð ×Ñ˜'Ò!à	ò	ó 
ð	ð 
ò	ó 
ð	ð 
ò	ó 
ñ	ð 
ò	Nó 
ð	Nð 
ò	8ó 
ð	8ð 
ò	<ó 
ð	<ð ò.ó ð.ð ò9ó ð9óLð ò0ó ð0ð ò$ó ð$ð ò#ó ð#ó+ð <@ð!Ø8ð!à	ó!ñ4 �iÓ €Fóó2Oð ò+ó ñ+r=   r›   c                  ó˜   ‡ — e Zd ZdZ	 	 	 	 d	ˆ fd„Z	 	 	 	 d
	 	 	 	 	 	 	 	 	 dd„Zedd„«       Zedd„«       Zdˆ fd„Z	 	 	 	 dd„Zdd„Z	ˆ xZ
S )Ú	TracebackzQTraceback objects encapsulate and offer higher level access to Traceback entries.c                óx   •— t        |t        «      rdd„}t        ‰| �   ||«      «       yt        ‰| �  |«       y)z@Initialize from given python traceback object and ExceptionInfo.c              3  óN   K  — | }|�t        |«      –— |j                  }|�Œy y ­wr8   )r›   Útb_next)ÚcurÚcur_s     r;   ÚfzTraceback.__init__.<locals>.fp  s-   è ø€ Ø-0�ØÐ&Ü(¨Ó.Ò.ØŸ<™<�Dð Ó&ùs   ‚ %£%N)rè   r   rg   zIterable[TracebackEntry])Ú
isinstancer   Úsuperr<   )r9   Útbrê   Ú	__class__s      €r;   r<   zTraceback.__init__i  s4   ø€ ô
 �bœ-Ô(ó(ô ‰GÑ™Q˜r›UÕ#ä‰GÑ˜RÕ r=   c                óÊ  — |€dnt        j                  |«      }|€dnt        j                  |«      }| D ]«  }|j                  j                  }|j                  }	|�t        |	«      |k7  rŒ6|�&t        |	t        «      r|d„ |	j                  D «       v rŒ^|�|j                  |k7  rŒp|�$|j                  j                  j                  |k7  rŒ–t        |j                  «      c S  | S )a   Return a Traceback instance wrapping part of this Traceback.

        By providing any combination of path, lineno and firstlineno, the
        first frame to start the to-be-returned traceback is determined.

        This allows cutting the first part of a Traceback instance e.g.
        for formatting reasons (removing some uninteresting bits that deal
        with handling of the exception/traceback).
        Nc              3  ó2   K  — | ]  }t        |«      –— Œ y ­wr8   )rm   )Ú.0rT   s     r;   ú	<genexpr>z Traceback.cut.<locals>.<genexpr>”  s   è ø€ Ò$F°¤S¨§VÑ$Fùs   ‚)ÚosÚfspathr€   rŠ   rU   rm   rë   r	   Úparentsrƒ   rI   rä   r�   )
r9   rU   rƒ   rI   ÚexcludepathÚpath_Úexcludepath_ÚxrŠ   Úcodepaths
             r;   ÚcutzTraceback.cutz  sÔ   € ð  ˜‘¬"¯)©)°D«/ˆØ*Ð2‘t¼¿	¹	À+Ó8NˆØò 	*ˆAØ—7‘7—<‘<ˆDØ—y‘yˆHØÐ¤C¨£M°UÒ$:ØàÐ'Ü˜x¬Ô.Ø Ñ$F°X×5EÑ5EÔ$FÑFàØÐ! a§h¡h°&Ò&8ØØÐ&¨1¯7©7¯<©<×+CÑ+CÀ{Ò+RØÜ˜QŸ[™[Ó)Ò)ð	*ð  ˆr=   c                 ó   — y r8   r|   ©r9   rÉ   s     r;   Ú__getitem__zTraceback.__getitem__ž  s   € ØADr=   c                 ó   — y r8   r|   rý   s     r;   rþ   zTraceback.__getitem__¡  s   € Ø47r=   c                ó~   •— t        |t        «      r| j                  t        ‰| �  |«      «      S t        ‰| �  |«      S r8   )rë   Úslicerî   rì   rþ   )r9   rÉ   rî   s     €r;   rþ   zTraceback.__getitem__¤  s6   ø€ Ü�cœ5Ô!Ø—>‘>¤%¡'Ñ"5°cÓ":Ó;Ð;ä‘7Ñ& sÓ+Ð+r=   c               ó^   ‡— t        ‰t        «      rˆfd„}n‰}t        t        || «      «      S )a—  Return a Traceback instance with certain items removed.

        If the filter is an `ExceptionInfo`, removes all the ``TracebackEntry``s
        which are hidden (see ishidden() above).

        Otherwise, the filter is a function that gets a single argument, a
        ``TracebackEntry`` instance, and should return True when the item should
        be added to the ``Traceback``, False when not.
        c                ó(   •— | j                  ‰«       S r8   )rÔ   )rù   Úexcinfo_or_fns    €r;   ú<lambda>z"Traceback.filter.<locals>.<lambda>¹  s   ø€ ˜qŸz™z¨-Ó8Ð8€ r=   )rë   ÚExceptionInforä   Úfilter)r9   r  Úfns    ` r;   r  zTraceback.filterª  s+   ø€ ô �m¤]Ô3Û8‰BàˆBÜœ  DÓ)Ó*Ð*r=   c                ó‚  — i }t        | «      D ]¯  \  }}|j                  j                  j                  t	        |j                  j                  j
                  «      |j                  f}|j                  |g «      }t        |j                  j                  «      }|r|D ]  }||k(  sŒ	|c c S  |j                  |«       Œ± y)z~Return the index of the frame/TracebackEntry where recursion originates if
        appropriate, None if no recursion occurred.N)Ú	enumerater€   rŠ   rU   Úidr6   rƒ   Ú
setdefaultÚdictr‡   ra   )r9   ÚcacheÚiÚentryrÉ   ÚvaluesÚlocÚotherlocs           r;   ÚrecursionindexzTraceback.recursionindex¾  s°   € ð CEˆÜ! $›ò 	‰HˆAˆuð
 —+‘+×"Ñ"×'Ñ'¬¨E¯K©K×,<Ñ,<×,@Ñ,@Ó)AÀ5Ç<Á<ÐOˆCØ×%Ñ% c¨2Ó.ˆFä�u—{‘{×+Ñ+Ó,ˆCÙØ &ò !�HØ 3“Ø œð!ð �M‰M˜#Õð	ð r=   )rí   z(TracebackType | Iterable[TracebackEntry]rg   rh   )NNNN)
rU   zos.PathLike[str] | str | Nonerƒ   rß   rI   rß   rö   zos.PathLike[str] | Nonerg   rä   )rÉ   r   rg   r›   )rÉ   r  rg   rä   )rÉ   zSupportsIndex | slicerg   zTracebackEntry | Traceback)r  z?ExceptionInfo[BaseException] | Callable[[TracebackEntry], bool]rg   rä   rÞ   )rt   ru   rv   rw   r<   rû   r   rþ   r  r  Ú__classcell__©rî   s   @r;   rä   rä   f  s    ø„ Ù[ð!à4ð!ð 
õ!ð& /3Ø!Ø"&Ø/3ð"à+ð"ð ð"ð  ð	"ð
 -ð"ð 
ó"ðH ÚDó ØDàÚ7ó Ø7õ,ð+àVð+ð 
ó	+÷(r=   rä   Tc                óT  — 	 t        | dg «      }|st        | t        «      r| j                  }nt        | «      }dj                  |g|¢«      S # t        $ rQ t        t        j                  j	                  dd «      dd«      }t        j
                  dk  rt        | |«      rg }n‚ Y Œ—w xY w)NÚ	__notes__zurllib.errorÚ	HTTPErrorr|   )r)   é   r×   )Úgetattrr–   rá   ÚmodulesrÆ   râ   rë   r+   Úmessagerm   Újoin)ÚexcÚinclude_subexception_msgÚnotesr  r  s        r;   Ústringify_exceptionr"  Ó  s®   € ð
Ü˜˜[¨"Ó-ˆñ $¬
°3Ô8JÔ(KØ—+‘+‰ä�c“(ˆà�9‰9àð	
àð	
óð øô ò ô œCŸK™KŸO™O¨N¸DÓAÀ;ÐPRÓSˆ	Ü×Ñ˜gÒ%¬*°S¸)Ô*DØ‰Eð ñ ðús   ‚A ÁAB'Â&B'ÚE)ÚboundÚ	covariantc                  óú  — e Zd ZU dZdZded<   ded<   ded<   d	ed
<   	 	 d#ddœ	 	 	 	 	 	 	 	 	 d$d„Ze	 d%	 	 	 	 	 d&d„«       Ze	 d%	 	 	 	 	 d'd„«       Z	ed%d(d„«       Z
ed)d„«       Zd*d„Zed+d„«       Zed,d„«       Zed-d„«       Zed.d„«       Zed/d„«       Zej&                  d0d„«       Zd.d„Zd1d2d„Zd3d„Zd4d„Z	 	 	 	 	 	 	 	 d5	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d6d„Zd7d„Z	 	 d8	 	 	 	 	 	 	 	 	 	 	 d9d „Zddd!œ	 	 	 	 	 	 	 d:d"„Zy);r  zJWraps sys.exc_info() objects and offers help for navigating the traceback.zAssertionError('assert r   Ú_assert_start_reprú'tuple[type[E], E, TracebackType] | NoneÚ_excinform   Ú
_striptextúTraceback | NoneÚ
_tracebackNF©Ú	_ispytestc               óD   — t        |«       || _        || _        || _        y r8   )r%   r)  r*  r,  )r9   rÑ   Ú	striptextÚ	tracebackr.  s        r;   r<   zExceptionInfo.__init__ü  s!   € ô 	�yÔ!ØˆŒØ#ˆŒØ#ˆ�r=   c                ó|   — |j                   sJ d«       ‚t        |«      ||j                   f}| j                  ||«      S )aE  Return an ExceptionInfo for an existing exception.

        The exception must have a non-``None`` ``__traceback__`` attribute,
        otherwise this function fails with an assertion error. This means that
        the exception must have been raised, or added a traceback with the
        :py:meth:`~BaseException.with_traceback()` method.

        :param exprinfo:
            A text string helping to determine if we should strip
            ``AssertionError`` from the output. Defaults to the exception
            message/``__str__()``.

        .. versionadded:: 7.4
        zTExceptions passed to ExcInfo.from_exception(...) must have a non-None __traceback__.)Ú__traceback__ÚtypeÚfrom_exc_info)r?   Ú	exceptionÚexprinfoÚexc_infos       r;   Úfrom_exceptionzExceptionInfo.from_exception	  sJ   € ð. ×&Ò&ð 	
ð3ó	
Ð&ô ˜“O Y°	×0GÑ0GÐHˆØ× Ñ  ¨8Ó4Ð4r=   c                óÄ   — d}|€Rt        |d   t        «      r?t        |d   dd«      }|€t        |d   «      }|r|j	                  | j
                  «      rd} | ||d¬«      S )z@Like :func:`from_exception`, but using old-style exc_info tuple.rN   NrF   ÚmsgzAssertionError: Tr-  )rë   ÚAssertionErrorr  r#   Ú
startswithr'  )r?   r8  r7  r*  s       r;   r5  zExceptionInfo.from_exc_info'  sl   € ð ˆ
ØÐ¤
¨8°A©;¼Ô GÜ˜x¨™{¨E°4Ó8ˆHØÐÜ# H¨Q¡KÓ0�Ù˜H×/Ñ/°×0FÑ0FÔGØ/�
á�8˜Z°4Ô8Ð8r=   c                óº   — t        j                  «       }|d   €J d«       ‚|d   €J d«       ‚|d   €J d«       ‚|d   |d   |d   f}t        j                  ||«      S )a=  Return an ExceptionInfo matching the current traceback.

        .. warning::

            Experimental API

        :param exprinfo:
            A text string helping to determine if we should strip
            ``AssertionError`` from the output. Defaults to the exception
            message/``__str__()``.
        r   zno current exceptionrF   é   )rá   r8  r  r5  )r?   r7  Útupr8  s       r;   Úfrom_currentzExceptionInfo.from_current8  s|   € ô �l‰l‹nˆØ�1‰vÐ!Ð9Ð#9Ó9Ð!Ø�1‰vÐ!Ð9Ð#9Ó9Ð!Ø�1‰vÐ!Ð9Ð#9Ó9Ð!Ø˜‘F˜C ™F C¨¡FÐ+ˆÜ×*Ñ*¨8°XÓ>Ð>r=   c                ó   —  | dd¬«      S )z!Return an unfilled ExceptionInfo.NTr-  r|   )r?   s    r;   Ú	for_laterzExceptionInfo.for_laterL  s   € ñ �4 4Ô(Ð(r=   c                ó8   — | j                   �J d«       ‚|| _         y)z<Fill an unfilled ExceptionInfo created with ``for_later()``.Nz ExceptionInfo was already filled©r)  )r9   r8  s     r;   Úfill_unfilledzExceptionInfo.fill_unfilledQ  s   € à�}‰}Ð$ÐHÐ&HÓHÐ$Ø ˆ�r=   c                óF   — | j                   €J d«       ‚| j                   d   S )zThe exception class.z6.type can only be used after the context manager exitsr   rE  rH   s    r;   r4  zExceptionInfo.typeV  s/   € ð �}‰}Ð(ð 	
ØDó	
Ð(ð �}‰}˜QÑÐr=   c                óF   — | j                   €J d«       ‚| j                   d   S )zThe exception value.z7.value can only be used after the context manager exitsrF   rE  rH   s    r;   r1   zExceptionInfo.value^  s/   € ð �}‰}Ð(ð 	
ØEó	
Ð(ð �}‰}˜QÑÐr=   c                óF   — | j                   €J d«       ‚| j                   d   S )zThe exception raw traceback.z4.tb can only be used after the context manager exitsr?  rE  rH   s    r;   rí   zExceptionInfo.tbf  s/   € ð �}‰}Ð(ð 	
ØBó	
Ð(ð �}‰}˜QÑÐr=   c                óT   — | j                   €J d«       ‚| j                  j                  S )zThe type name of the exception.z:.typename can only be used after the context manager exits)r)  r4  rt   rH   s    r;   ÚtypenamezExceptionInfo.typenamen  s0   € ð �}‰}Ð(ð 	
ØHó	
Ð(ð �y‰y×!Ñ!Ð!r=   c                óf   — | j                   €t        | j                  «      | _         | j                   S )zThe traceback.)r,  rä   rí   rH   s    r;   r1  zExceptionInfo.tracebackv  s(   € ð �?‰?Ð"Ü'¨¯©Ó0ˆDŒOØ�‰Ðr=   c                ó   — || _         y r8   )r,  )r9   r1   s     r;   r1  zExceptionInfo.traceback}  s	   € àˆ�r=   c                ó®   — | j                   €yd| j                  j                  › dt        | j                   d   «      › dt	        | j
                  «      › d�S )Nz)<ExceptionInfo for raises contextmanager>ú<ú rF   z tblen=r¼   )r)  rî   rt   r#   Úlenr1  rH   s    r;   r½   zExceptionInfo.__repr__�  sS   € Ø�=‰=Ð Ø>Ø�4—>‘>×*Ñ*Ð+¨1¬X°d·m±mÀAÑ6FÓ-GÐ,HÈÔPSÐTX×TbÑTbÓPcÐOdÐdeÐfÐfr=   c                óœ  ‡— 	 	 	 	 dˆfd„Š|rSt        | j                  t        «      r9 ‰| j                  «      x}�%|›dt        | j                  «      j                  › d�S t        | j                  «      }dj                  |«      }|j                  «       }|r3|j                  | j                  «      r|t        | j                  «      d }|S )a�  Return the exception as a string.

        This is usually a single line "<exception type>: <exception str>", but
        may also include additional lines for the exception notes, and detailed
        information for SyntaxError's.

        :param tryshort:
            If true, and the exception is an AssertionError, strip
            'AssertionError: ' from the beginning.
        c                óˆ   •— t        | j                  «      dk7  ry t        | j                  d   x}t        «      r ‰|«      S |S )NrF   r   )rQ  Ú
exceptionsrë   r+   )ÚegÚeÚ_get_single_subexcs     €r;   rW  z1ExceptionInfo.exconly.<locals>._get_single_subexc’  sB   ø€ ô �2—=‘=Ó! QÒ&ØÜ˜rŸ}™}¨QÑ/Ð/˜!Ô1CÔDÙ)¨!Ó,Ð,ØˆHr=   Nz [single exception in ú]rN   )rU  ú!BaseExceptionGroup[BaseException]rg   zBaseException | None)rë   r1   r+   r4  rt   r   r  Úrstripr=  r*  rQ  )r9   ÚtryshortÚsubexcÚlinesÚtextrW  s        @r;   ÚexconlyzExceptionInfo.exconly†  s¹   ø€ ð	Ø1ð	à!õ	ñ Ü˜4Ÿ:™:Ô'9Ô:Ù-¨d¯j©jÓ9Ð9�ÐFà�ZÐ5´d¸4¿:¹:Ó6F×6OÑ6OÐ5PÐPQÐRÐRä% d§j¡jÓ1ˆà�w‰w�u‹~ˆØ�{‰{‹}ˆÙØ�‰˜tŸ™Ô/ØœC §¡Ó0Ð2Ð3�Øˆr=   c                ó.   — t        | j                  |«      S )z€Return True if the exception is an instance of exc.

        Consider using ``isinstance(excinfo.value, exc)`` instead.
        )rë   r1   )r9   r  s     r;   ÚerrisinstancezExceptionInfo.errisinstance«  s   € ô
 ˜$Ÿ*™* cÓ*Ð*r=   c                óJ  — t        dt        | j                  «       dz
  d«      D ]|  }| j                  |   }|j                  | «      rŒ$|j                  j
                  j                  j                  |j                  }}| j                  d¬«      }t        ||dz   |«      c S  y )NéÿÿÿÿrF   T©r[  )ÚrangerQ  r1  rÔ   r€   rŠ   r6   Úco_filenamerƒ   r_  ÚReprFileLocation)r9   r  r  rU   rƒ   r_  s         r;   Ú_getreprcrashzExceptionInfo._getreprcrash²  s”   € ô �rœC §¡Ó/Ð/°!Ñ3°RÓ8ò 	CˆAØ—N‘N 1Ñ%ˆEØ—>‘> $Õ'Ø$Ÿ{™{×/Ñ/×3Ñ3×?Ñ?ÀÇÁ�f�ØŸ,™,°˜,Ó5�Ü'¨¨f°q©j¸'ÓBÒBð	Cð r=   c	           
     ó$  — |dk(  rht        t        t        | j                  | j                  | j
                  r| j
                  d   j                  nd«      «      | j                  «       ¬«      S t        ||||||||¬«      }	|	j                  | «      S )a.  Return str()able representation of this exception info.

        The formatting parameters are ineffective if ``style="native"``,
        since in this case the native formatting is used.

        :param bool showlocals:
            Show locals per traceback entry.

        :param str style:
            long|short|line|no|native|value traceback style.

        :param bool abspath:
            If paths should be changed to absolute or left unchanged.

        :param tbfilter:
            A filter for traceback entries.

            * If false, don't hide any entries.
            * If true, hide internal entries and entries that contain a local
              variable ``__tracebackhide__ = True``.
            * If a callable, delegates the filtering to the callable.

        :param bool funcargs:
            Show function arguments per traceback entry.

        :param bool truncate_locals:
            Whether to show a size-limited `repr()` of locals, or a full
            pretty-printing.

        :param bool truncate_args:
            Whether to show a size-limited truncated `repr()` of function
            arguments, or a full pretty-printing.

        :param bool chain:
            If chained exceptions should be shown.

        .. versionchanged:: 3.9

            Added the ``chain`` parameter.
        r0   r   N©ÚreprtracebackÚ	reprcrash)Ú
showlocalsÚstyleÚabspathÚtbfilterÚfuncargsÚtruncate_localsÚtruncate_argsÚchain)
ÚReprExceptionInfoÚReprTracebackNativer   r4  r1   r1  r�   rh  ÚExceptionInfoFormatterÚrepr_excinfo)
r9   rm  rn  ro  rp  rq  rr  rs  rt  Úfmts
             r;   ÚgetreprzExceptionInfo.getrepr½  s—   € ðf �HÒÜ$Ü1Ü$ØŸ	™	ØŸ
™
Ø7;·~²~˜Ÿ™ qÑ)×3Ò3È4óóð ×,Ñ,Ó.ô	ð 	ô %Ø!ØØØØØ+Ø'Øô	
ˆð ×Ñ Ó%Ð%r=   c                ó�   — d}t        | j                  «      }d|›d|›�}||k(  r|dz  }t        j                  ||«      sJ |«       ‚y)zåCheck whether the regular expression `regexp` matches the string
        representation of the exception using :func:`python:re.search`.

        If it matches `True` is returned, otherwise an `AssertionError` is raised.
        Tz/Regex pattern did not match.
  Expected regex: z
  Actual message: z*
 Did you mean to `re.escape()` the regex?)r"  r1   ÚreÚsearch)r9   ÚregexprÎ   r1   r;  s        r;   ÚmatchzExceptionInfo.match  sf   € ð !ÐÜ# D§J¡JÓ/ˆð!Ø!' 
ð +!Ø!& 	ð+ð 	ð
 �UŠ?ØÐ@Ñ@ˆCÜ�y‰y˜ Ô'Ð,¨Ó,Ð'àr=   c           	     óþ   — |�||kD  ry|j                   D ]f  }t        |t        «      r| j                  |||||dz   «      r y|�||k7  rŒ5t        ||«      sŒB|�"t	        |«      }t        j                  ||«      sŒf y y)zFReturn `True` if a `BaseExceptionGroup` contains a matching exception.FrF   T)rT  rë   r+   Ú_group_containsr"  r|  r}  )r9   Ú	exc_groupÚexpected_exceptionr  Útarget_depthÚcurrent_depthr  r1   s           r;   r�  zExceptionInfo._group_contains  s    € ð Ð$¨=¸<Ò+GàØ×'Ñ'ò 	ˆCÜ˜#Ô1Ô2Ø×'Ñ'ØÐ+¨U°LÀ-ÐRSÑBSôñ  ØÐ(¨}ÀÒ/LàÜ˜cÐ#5Ô6ØØÐ Ü+¨CÓ0�Ü—y‘y ¨Ô.ØÙð	ð  r=   )r  Údepthc               ó¤   — d}t        | j                  t        «      sJ |«       ‚d}|�|dk\  sJ |«       ‚| j                  | j                  |||«      S )a…  Check whether a captured exception group contains a matching exception.

        :param Type[BaseException] | Tuple[Type[BaseException]] expected_exception:
            The expected exception type, or a tuple if one of multiple possible
            exception types are expected.

        :param str | re.Pattern[str] | None match:
            If specified, a string containing a regular expression,
            or a regular expression object, that is tested against the string
            representation of the exception and its `PEP-678 <https://peps.python.org/pep-0678/>` `__notes__`
            using :func:`re.search`.

            To match a literal string that may contain :ref:`special characters
            <re-syntax>`, the pattern can first be escaped with :func:`re.escape`.

        :param Optional[int] depth:
            If `None`, will search for a matching exception at any nesting depth.
            If >= 1, will only match an exception if it's at the specified depth (depth = 1 being
            the exceptions contained within the topmost exception group).

        .. versionadded:: 8.0

        .. warning::
           This helper makes it easy to check for the presence of specific exceptions,
           but it is very bad for checking that the group does *not* contain
           *any other exceptions*.
           You should instead consider using :class:`pytest.RaisesGroup`

        z=Captured exception is not an instance of `BaseExceptionGroup`z!`depth` must be >= 1 if specifiedrF   )rë   r1   r+   r�  )r9   rƒ  r  r†  r;  s        r;   Úgroup_containszExceptionInfo.group_contains9  s\   € ðH NˆÜ˜$Ÿ*™*Ô&8Ô9Ð>¸3Ó>Ð9Ø1ˆØ� 5¨A¢:Ð3°Ó3Ð.Ø×#Ñ# D§J¡JÐ0BÀEÈ5ÓQÐQr=   )rN   N)
rÑ   r(  r0  rm   r1  r+  r.  rs   rg   rh   r8   )r6  r#  r7  ú
str | Nonerg   úExceptionInfo[E])r8  ú tuple[type[E], E, TracebackType]r7  r‰  rg   rŠ  )r7  r‰  rg   úExceptionInfo[BaseException])rg   rŠ  )r8  r‹  rg   rh   )rg   ztype[E])rg   r#  )rg   r   rl   )rg   rä   )r1   rä   rg   rh   rr   )r[  rs   rg   rm   )r  ÚEXCEPTION_OR_MORErg   rs   )rg   úReprFileLocation | None)Fr,   FTFTTT)rm  rs   rn  ÚTracebackStylero  rs   rp  z:bool | Callable[[ExceptionInfo[BaseException]], Traceback]rq  rs   rr  rs   rs  rs   rt  rs   rg   z&ReprExceptionInfo | ExceptionChainRepr)r~  zstr | re.Pattern[str]rg   zLiteral[True]rE   )r‚  rY  rƒ  r�  r  ústr | re.Pattern[str] | Noner„  rß   r…  rk   rg   rs   )rƒ  r�  r  r�  r†  rß   rg   rs   )rt   ru   rv   rw   r'  Ú__annotations__r<   ry   r9  r5  rA  rC  rF  r{   r4  r1   rí   rK  r1  Úsetterr½   r_  ra  rh  rz  r  r�  rˆ  r|   r=   r;   r  r  ñ  s   … ñ Uà#<Ð˜Ó<à5Ó5ØƒOØ Ó ð
 Ø&*ð	$ð  ñ$à8ð$ð ð$ð $ð	$ð ð$ð 
ó$ð ð  $ð5ð
 ð5ð ð5ð 
ò5ó ð5ð: ð  $ð9à2ð9ð ð9ð 
ò	9ó ð9ð  ó?ó ð?ð& ò)ó ð)ó!ð
 ò ó ð ð ò ó ð ð ò ó ð ð ò"ó ð"ð òó ðð ×Ñò ó ð ógô
#óJ+ó	ð !Ø &ØØOSØØ $Ø"ØðI&àðI&ð ðI&ð ð	I&ð
 MðI&ð ðI&ð ðI&ð ðI&ð ðI&ð 
0óI&óVð0 $(Øðà4ðð .ðð ,ð	ð
 !ðð ðð 
óðD /3Ø ñ(Rà-ð(Rð ,ð	(Rð
 ð(Rð 
ô(Rr=   r  r   ÚTracebackFilterc                  ó¤  — e Zd ZU dZdZded<   dZded<   dZded	<   d
Zded<   dZ	ded<   dZ
ded<   dZded<   dZded<   dZded<   dZded<    ej                   edd¬«      Zded<   d%d„Zd&d„Zd'd„Z	 	 	 	 	 	 d(	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d)d„Z	 	 	 	 	 	 	 	 	 	 	 	 	 	 d*d„Z	 	 d+	 	 	 	 	 	 	 d,d„Zd-d„Z	 d.	 	 	 	 	 d/d „Zd0d!„Zd1d"„Z	 	 	 	 d2d#„Zd3d$„Zy)4rw  z›Helper object to format ExceptionInfo's and individual exception parts
    into TerminalRepr's.

    See :func:`ExceptionInfo.getrepr` for parameters.
    r¼   r   Úflow_markerr#  Úfail_markerFrs   rm  r,   r�  rn  Tro  r“  rp  rq  rr  rs  rt  )Údefault_factoryÚinitr”   zdict[str | Path, ast.AST]rÈ   c                ó"  — 	 t        |j                  t        |«      dz
  «      «      }dt        |«      t        |j                  «       «      z
  z   S # t        $ r ‚ t        $ r, 	 t        |d   «      }n# t        $ r ‚ t        $ r Y Y yw xY wY Œew xY w)NrF   rc  r   é   )rm   rŒ   rQ  rÙ   rÚ   rØ   )r9   r[   Úss      r;   Ú
_getindentz!ExceptionInfoFormatter._getindent„  s”   € ð
	Ü�F×'Ñ'¬¨F«°a©Ó8Ó9ˆAð ”C˜“FœS §¡£›_Ñ,Ñ-Ð-øô !ò 	ØÜò 	ðÜ˜˜r™
“O‘øÜ$ò ØÜ ò Úðúñ ð	ús5   ‚&A ÁBÁ#A2Á1BÁ2BÂBÂBÂBÂBc                ó`   — |j                  | j                  «      }|�|j                  «       }|S r8   )rÌ   rÈ   Údeindent)r9   r  r[   s      r;   Ú_getentrysourcez&ExceptionInfoFormatter._getentrysource“  s+   € Ø—‘ §¡Ó/ˆØÐØ—_‘_Ó&ˆFØˆr=   c                óî   — | j                   rig }|j                  j                  d¬«      D ]=  \  }}| j                  rt	        |«      }nt	        |d ¬«      }|j                  ||f«       Œ? t        |«      S y )NT)rb   )Úmaxsize)rq  r€   r]   rs  r#   ra   ÚReprFuncArgs)r9   r  rc   ÚargnameÚargvalueÚstr_reprs         r;   Ú	repr_argsz ExceptionInfoFormatter.repr_args™  st   € Ø�=Š=ØˆDØ%*§[¡[×%8Ñ%8¸TÐ%8Ó%Bò 1Ñ!�˜Ø×%Ò%Ü'¨Ó1‘Hä'¨¸$Ô?�HØ—‘˜W hÐ/Õ0ð1ô   Ó%Ð%Ør=   Nc           
     ó†  — g }|�|dk  r|t        |«      z  }|�|t        |j                  «      k\  s|dk  rt        d«      }d}d}	|r~|j                  |	|j                  |   j	                  «       z   «       |j                  | j                  |j                  |   |j                  |   j	                  «       ||||¬«      «       nÁ|j                  d| D ]  }
|j                  |	|
z   «       Œ |j                  | j                  dz   |j                  |   z   «       |j                  | j                  |j                  |   |j                  |   ||||¬«      «       |j                  |dz   d D ]  }
|j                  |	|
z   «       Œ |�8|rdn| j                  |«      }|j                  | j                  ||d	¬
«      «       |S )z,Return formatted and marked up source lines.Nr   rÖ   ú    )Úraw_liner.   rƒ   r²   r®   r°   ú   rF   rš  T)ÚindentÚmarkall)rQ  r]  r   ra   ÚstripÚextendÚget_highlight_arrows_for_lineÚ	raw_linesr•  rœ  Úget_exconly)r9   r[   Ú
line_indexrÑ   r-   Úend_line_indexr®   r°   r]  Úspace_prefixr.   r«  s               r;   Ú
get_sourcez!ExceptionInfoFormatter.get_source¥  sË  € ð ˆØÐ *¨q¢.Øœ#˜f›+Ñ%ˆJØˆ>˜Z¬3¨v¯|©|Ó+<Ò<À
ÈQÂô ˜E“]ˆFØˆJØˆÙØ�L‰L˜¨¯©°ZÑ(@×(FÑ(FÓ(HÑHÔIØ�L‰LØ×2Ñ2Ø#×-Ñ-¨jÑ9ØŸ™ jÑ1×7Ñ7Ó9Ø%Ø-ØØ'ð 3ó õ	ð Ÿ™ [ jÐ1ò 2�Ø—‘˜\¨DÑ0Õ1ð2à�L‰L˜×)Ñ)¨EÑ1°F·L±LÀÑ4LÑLÔMØ�L‰LØ×2Ñ2Ø#×-Ñ-¨jÑ9ØŸ™ jÑ1Ø%Ø-ØØ'ð 3ó ô	ð Ÿ™ Z°!¡^Ð%5Ð6ò 2�Ø—‘˜\¨DÑ0Õ1ð2àÐÙ‘Q T§_¡_°VÓ%<ˆFØ�L‰L˜×)Ñ)¨'¸&È$Ð)ÓOÔPØˆr=   c                óö   — ||k7  rg S |�|€g S t        |«      t        |«      z
  }t        ||«      }t        ||«      }	|	|z
  }
|
t        |j                  «       «      k\  rg S d}|d||z
  dz   z  z  }|d|
z  z  }|gS )zÆReturn characters highlighting a source line.

        Example with colno and end_colno pointing to the bar expression:
                   "foo() + bar()"
        returns    "        ^^^^^"
        r¨  rP  rF   ú^)rQ  Ú _byte_offset_to_character_offsetr­  )r9   r.   r©  rƒ   r²   r®   r°   Únum_stripped_charsÚstart_char_offsetÚend_char_offsetÚ
num_caretsÚ
highlightss               r;   r¯  z4ExceptionInfoFormatter.get_highlight_arrows_for_lineÚ  s¨   € ð �ZÒàˆIØˆ=˜IÐ-àˆIä  ›]¬S°«YÑ6Ðä<¸XÀuÓMÐÜ:¸8ÀYÓOˆØ$Ð'8Ñ8ˆ
ð œ˜TŸZ™Z›\Ó*Ò*ØˆIàˆ
Ø�cÐ.Ð1CÑCÀaÑGÑHÑHˆ
Ø�c˜JÑ&Ñ&ˆ
Øˆ|Ðr=   c                óº   — g }d|z  }|j                  d¬«      j                  d«      }| j                  |dd  z   }|D ]  }|j                  ||z   «       |rŒ|}Œ |S )NrP  Trd  r×   rF   )r_  Úsplitr–  ra   )	r9   rÑ   r«  r¬  r]  Ú	indentstrÚexlinesÚ
failindentr.   s	            r;   r±  z"ExceptionInfoFormatter.get_exconlyÿ  sr   € ð ˆØ˜&‘Lˆ	à—/‘/¨4�/Ó0×6Ñ6°tÓ<ˆØ×%Ñ%¨	°!°"¨Ñ5ˆ
Øò 	'ˆDØ�L‰L˜ dÑ*Ô+ÚØ&‘
ð	'ð ˆr=   c                óJ  — | j                   r’g }|D �cg c]  }|d   dk7  sŒ|‘Œ }}|j                  «        |D ]X  }||   }|dk(  r|j                  d«       Œ| j                  rt	        |«      }nt        |«      }|j                  |d›d|› �«       ŒZ t        |«      S y c c}w )Nr   ú@Ú__builtins__z__builtins__ = <builtins>z<10ú = )rm  Úsortra   rr  r#   r!   Ú
ReprLocals)r9   rÁ   r]  r  ÚkeysrL   r1   r¥  s           r;   Úrepr_localsz"ExceptionInfoFormatter.repr_locals  s¯   € Ø�?Š?ØˆEð $*Ö;˜C¨S°©V°s«]’CÐ;ˆDÐ;Ø�I‰IŒKØò =�Ø˜t™�Ø˜>Ò)Ø—L‘LÐ!<Õ=ð
 ×+Ò+Ü#+¨E£?™ä#-¨eÓ#4˜à—L‘L D¨ :¨S°°
Ð!;Õ<ð=ô$ ˜eÓ$Ð$Øùò+ <s
   “B ¡B c           	     óœ  — g }|�|j                   �|j                   n| j                  }|dv �r$|��!| j                  |«      }|€t        d«      }d}d\  }}}	n0|j                  }|j
                  }|j                  }|j                  }	|dk(  }
|
s| j                  |«      nd }| j                  ||||
|||	¬«      }|j                  |«       |
rd|j                  › �}n|xr |j                  xs d}|j                  }| j                  |«      }t        ||j                   d	z   |«      }| j#                  |j$                  «      }t'        |||||«      S |d
k(  rD|r3|j                  t)        |j*                  «      j-                  d«      «       t'        |d d d |«      S |r"|j                  | j/                  |d¬«      «       t'        |d d d |«      S )N)r-   r,   rÖ   r   )NNNr-   )r[   r²  rÑ   r-   r³  r®   r°   zin rN   rF   r1   r×   rš  ©r«  )rž   rn  rŸ  r   r¹   r«   r®   r°   r¦  rµ  r®  rL   rK  rU   Ú	_makepathrg  rƒ   rÊ  rÁ   Ú	ReprEntryrm   r1   r¿  r±  )r9   r  rÑ   r]  rn  r[   r²  r³  r®   r°   r-   Úreprargsr›  r  Ú
entry_pathrU   ÚreprfilelocÚ
localsreprs                     r;   Úrepr_traceback_entryz+ExceptionInfoFormatter.repr_traceback_entry,  sÖ  € ð
 ˆð Ð  U×%6Ñ%6Ð%Bð ×Òà—‘ð 	ð
 Ð%Ò%¨%Ñ*;Ø×)Ñ)¨%Ó0ˆFØˆ~Ü ›�Ø�
Ø3CÑ0� ¡yà"Ÿ]™]�
Ø!&×!:Ñ!:�ØŸ™�Ø!ŸO™O�	Ø˜WÑ$ˆEÙ49�t—~‘~ eÔ,¸tˆHØ—‘ØØ%ØØØ-ØØ#ð  ó ˆAð �L‰L˜ŒOÙØ §
¡
˜|Ð,‘à"Ò7 w×'7Ñ'7Ò>¸B�ØŸ™ˆJØ—>‘> *Ó-ˆDÜ*¨4°·±ÀÑ1AÀ7ÓKˆKØ×)Ñ)¨%¯,©,Ó7ˆJÜ˜U H¨j¸+ÀuÓMÐMØ�gÒÙØ—‘œS §¡Ó/×5Ñ5°dÓ;Ô<Ü˜U D¨$°°eÓ<Ð<áØ—‘˜T×-Ñ-¨g¸aÐ-Ó@ÔAÜ˜U D¨$°°eÓ<Ð<r=   c                ó  — | j                   sQt        |t        «      rA	 t        t        j                  «       |«      }t        |«      t        t        |«      «      k  r|S t        |«      S # t
        $ r t        |«      cY S w xY wr8   )ro  rë   r	   r'   ÚcwdrR   rm   rQ  )r9   rU   Únps      r;   rÍ  z ExceptionInfoFormatter._makepath`  si   € Ø�|Š|¤
¨4´Ô 6ð!Ü ¤§¡£¨TÓ2�ô �2‹wœœS ›Y›Ò'Ø�	Ü�4‹yÐøô	 ò !Ü˜4“yÒ ð!ús   žA) Á)B Á?B c                óö  — t        | j                  |«      }t        |j                  t        «      r| j                  |«      \  }}nd }|s/|€d}| j                  d |«      g}t        ||| j                  ¬«      S |d   }| j                  dk(  r+| j                  ||«      g}t        |d | j                  ¬«      S |D �cg c]  }| j                  |||k(  r|nd «      ‘Œ }}t        ||| j                  ¬«      S c c}w )NúXAll traceback entries are hidden. Pass `--full-trace` to see hidden and internal frames.)rn  rc  r1   )	Úfilter_excinfo_tracebackrp  rë   r1   ÚRecursionErrorÚ_truncate_recursive_tracebackrÓ  ÚReprTracebackrn  )r9   rÑ   r1  Ú	extralineÚentriesÚlastr  s          r;   Úrepr_tracebackz%ExceptionInfoFormatter.repr_tracebackj  sû   € Ü,¨T¯]©]¸GÓDˆ	ä�g—m‘m¤^Ô4Ø#'×#EÑ#EÀiÓ#PÑ ˆI‘yàˆIáØÐ Øv�	Ø×0Ñ0°°wÓ?Ð@ˆGÜ  ¨)¸4¿:¹:ÔFÐFà˜‰}ˆØ�:‰:˜Ò Ø×0Ñ0°°wÓ?Ð@ˆGÜ  ¨$°d·j±jÔAÐAð #ö
àð ×%Ñ% e¸Àº©WÈ4ÕPð
ˆð 
ô ˜W i°t·z±zÔBÐBùò	
s   Â< C6c                óô   — 	 |j                  «       }|�d}|d|dz    }||fS d}||fS # t        $ rF}d}dt        |«      j                  › d|›d|› dt	        |«      › d	�	}|d| || d z   }Y d}~||fS d}~ww xY w)
aK  Truncate the given recursive traceback trying to find the starting
        point of the recursion.

        The detection is done by going through each traceback entry and
        finding the point in which the locals of the frame are equal to the
        locals of a previous frame (see ``recursionindex()``).

        Handle the situation where the recursion process might raise an
        exception (for example comparing numpy arrays using equality raises a
        TypeError), in which case we do our best to warn the user of the
        error and show a limited traceback.
        Nz/!!! Recursion detected (same locals & position)rF   é
   z§!!! Recursion error detected, but an error occurred locating the origin of recursion.
  The following exception happened when comparing locals in the stack frame:
    ú: z
  Displaying first and last z stack frames out of ú.)r  rÏ   r4  rt   rQ  )r9   r1  r  rÝ  rV  Ú
max_framess         r;   rÛ  z4ExceptionInfoFormatter._truncate_recursive_tracebackƒ  s×   € ð	!Ø&×5Ñ5Ó7ˆNð Ð)ØM�	Ø%Ð&:¨¸Ñ(:Ð;�	ð ˜)Ð#Ð#ð !�	à˜)Ð#Ð#øô% ò 
	IØˆJðä˜A“w×'Ñ'Ð(¨¨1¨%ð 0/Ø/9¨lÐ:OÔPSÐT]ÓP^ÐO_Ð_`ðbð ð " + :Ð.°¸J¸;¸<Ð1HÑHŒIð ˜)Ð#Ð#ûð%
	Iús   ‚( ¨	A7±9A2Á2A7c                óÄ  — g }|j                   }|}d }t        «       }|��§t        |«      |v�r™|j                  t        |«      «       |r•t	        |t
        «      rct        | j                  |«      }|sdnd }t        t        t        |j                   «      |j                   |r|d   j                  nd «      |¬«      }	n| j                  |«      }	|j                  «       }
n!t        t        t        |«      |d «      «      }	d }
|j                  |	|
|f«       |j                  �>| j                   r2|j                  }|j"                  rt$        j'                  |«      nd }d}nX|j(                  �J|j*                  s>| j                   r2|j(                  }|j"                  rt$        j'                  |«      nd }d}nd }|�t        |«      |vr�Œ™|j-                  «        t/        |«      S )NrØ  r   ©rÝ  zDThe above exception was the direct cause of the following exception:zCDuring handling of the above exception, another exception occurred:)r1   Úsetr  Úaddrë   r+   rÙ  rp  rv  r   r4  r�   rà  rh  ra   Ú	__cause__rt  r3  r  r9  Ú__context__Ú__suppress_context__ÚreverseÚExceptionChainRepr)r9   rÑ   Ú
repr_chainrV  Úexcinfo_ÚdescriptionÚseenr1  rÝ  rk  rl  s              r;   rx  z#ExceptionInfoFormatter.repr_excinfo¨  s­  € ØVXˆ
Ø")§-¡-ˆØ8?ˆØˆÜ›ˆØ‰m¤ 1£¨TÒ 1Ø�H‰H”R˜“UŒOáô
 ˜aÔ!3Ô4ä 8¸¿¹ÈÓ P�Iñ  )ñ sà!ð ô
 %8Ü(Ü  §¡Ó/Ø#ŸM™MÙ6?˜I a™L×2Ò2ÀTóð
 #,ô%‘Mð %)×$7Ñ$7¸Ó$A�MØ$×2Ñ2Ó4‘	ô !4Ô4DÄTÈ!ÃWÈaÐQUÓ4VÓ W�Ø �	Ø×Ñ˜}¨i¸ÐEÔFà�{‰{Ð&¨4¯:ª:Ø—K‘K�Ø>?¿oºoœ=×7Ñ7¸Ô:ÐSW�Ød‘à—‘Ð)°!×2HÒ2HÈTÏZÊZà—M‘M�Ø>?¿oºoœ=×7Ñ7¸Ô:ÐSW�Øc‘à�ð] ˆm¤ 1£¨TÓ 1ð^ 	×ÑÔÜ! *Ó-Ð-r=   )r[   r   rg   rk   )r  r›   rg   rp   )r  r›   rg   úReprFuncArgs | None)rc  NFNNN)r[   rp   r²  rk   rÑ   rà   r-   rs   r³  rß   r®   rß   r°   rß   rg   ú	list[str])r.   rm   r©  rm   rƒ   rß   r²   rß   r®   rß   r°   rß   rg   rô  )rš  F)rÑ   rŒ  r«  rk   r¬  rs   rg   rô  )rÁ   zMapping[str, object]rg   úReprLocals | Noner8   )r  zTracebackEntry | NonerÑ   rà   rg   rÎ  )rU   ro   rg   rm   )rÑ   rŒ  rg   rÜ  )r1  rä   rg   ztuple[Traceback, str | None])rÑ   rŒ  rg   rî  )rt   ru   rv   rw   r•  r‘  r–  rm  rn  ro  rp  rq  rr  rs  rt  ÚdataclassesÚfieldr  rÈ   rœ  rŸ  r¦  rµ  r¯  r±  rÊ  rÓ  rÍ  rà  rÛ  rx  r|   r=   r;   rw  rw  j  sÔ  … ñð  €K�ÓØ€K�Óà€J�Óà"€Eˆ>Ó"Ø€GˆTÓØ $€HˆoÓ$Ø€HˆdÓØ €O�TÓ Ø€M�4ÓØ€Eˆ4Óà*;¨+×*;Ñ*;Ø 5¨uô+€HÐ'ó ó.óó
ð Ø7;ØØ%)Ø Ø $ð3àð3ð ð3ð 5ð	3ð
 ð3ð #ð3ð ð3ð ð3ð 
ó3ðj#àð#ð ð#ð ð	#ð
 ð#ð ð#ð ð#ð 
ó#ðP Øð	à-ðð ðð ð	ð
 
óó"ð> 8<ð2=à$ð2=ð 5ð2=ð 
ó	2=óhóCð2#$Ø"ð#$à	%ó#$ôJ6.r=   rw  F)Úeqc                  ó(   — e Zd ZdZdd„Zdd„Zdd„Zy)ÚTerminalReprzdBase class for terminal representations -- pieces of data that display
    themselves to a terminal.c                óŒ   — t        «       }t        |¬«      }| j                  |«       |j                  «       j	                  «       S )N)Úfile)r   r    Ú
toterminalÚgetvaluer­  )r9   ÚioÚtws      r;   rÛ   zTerminalRepr.__str__æ  s6   € ô ‹ZˆÜ Ô$ˆØ�‰˜ÔØ�{‰{‹}×"Ñ"Ó$Ð$r=   c                ó<   — d| j                   › dt        | «      d›d�S )NrO  z instance at Ú0xr¼   )rî   r  rH   s    r;   r½   zTerminalRepr.__repr__î  s"   € Ø�4—>‘>Ð" -´°4³¸¨}¸AÐ>Ð>r=   c                ó   — t        «       ‚r8   )ÚNotImplementedError©r9   r   s     r;   rý  zTerminalRepr.toterminalñ  s   € Ü!Ó#Ð#r=   Nrl   ©r   r    rg   rh   )rt   ru   rv   rw   rÛ   r½   rý  r|   r=   r;   rú  rú  á  s   „ ñ!ó%ó?ô$r=   rú  c                  ój   — e Zd ZU dZded<   ded<    ej                  de¬«      Zded	<   ddd
„Z	dd„Z
y)ÚExceptionRepra0  Base class for exception terminal representations.

    The representation generally contains:
    - The exception traceback (`reprtraceback`)
    - The exception message and location (`reprcrash`)
    - Separated, titled sections with additional data (pytest core doesn't use
      this currently).
    rÜ  rk  rŽ  rl  F)r˜  r—  zlist[tuple[str, str, str]]Úsectionsc                ó@   — | j                   j                  |||f«       y r8   )r	  ra   )r9   rL   ÚcontentÚseps       r;   Ú
addsectionzExceptionRepr.addsection  s   € Ø�‰×Ñ˜d G¨SÐ1Õ2r=   c                ót   — | j                   D ])  \  }}}|j                  ||«       |j                  |«       Œ+ y r8   )r	  r  r.   )r9   r   rL   r  r  s        r;   rý  zExceptionRepr.toterminal	  s6   € Ø"&§-¡-ò 	ÑˆD�'˜3Ø�F‰F�3˜ÔØ�G‰G�GÕñ	r=   N)ú-)rL   rm   r  rm   r  rm   rg   rh   r  )rt   ru   rv   rw   r‘  rö  r÷  r`   r	  r  rý  r|   r=   r;   r  r  õ  s>   … ñð !Ó Ø&Ó&Ø+<¨;×+<Ñ+<Ø Dô,€HÐ(ó ô3ôr=   r  c                  óD   ‡ — e Zd ZU dZded<   	 	 	 	 dˆ fd„Zdˆ fd„Zˆ xZS )rî  z‚A chain of exceptions, separated by descriptions (e.g. "The above
    exception was the direct cause of the following exception").úCSequence[tuple[ReprTraceback, ReprFileLocation | None, str | None]]rt  c                óN   •— t         ‰| �  |d   d   |d   d   ¬«       || _        y )Nrc  r   rF   rj  )rì   r<   rt  )r9   rt  rî   s     €r;   r<   zExceptionChainRepr.__init__  s6   ø€ ô 	‰ÑØ ™) A™,Ø˜B‘i ‘lð 	ô 	
ð ˆ�
r=   c                ó¾   •— | j                   D ]>  \  }}}|j                  |«       |€Œ|j                  d«       |j                  |d¬«       Œ@ t        ‰| �  |«       y )NrN   T)Úyellow)rt  rý  r.   rì   )r9   r   rk  rl  rñ  rî   s        €r;   rý  zExceptionChainRepr.toterminal"  s[   ø€ Ø59·Z±Zò 	2Ñ1ˆM˜9 kØ×$Ñ$ RÔ(ØÑ&Ø—‘˜”Ø—‘˜¨D�Õ1ð		2ô
 	‰Ñ˜2Õr=   )rt  r  rg   rh   r  )rt   ru   rv   rw   r‘  r<   rý  r  r  s   @r;   rî  rî    s3   ø… ñDð OÓNð
àRð
ð 
õ
÷ñ r=   rî  c                  ó$   ‡ — e Zd ZdZdˆ fd„Zˆ xZS )ru  z¤A single exception with optional extra details (function arguments,
    function locals, file location) and possible extra line and sections emitted
    at the end.c                óZ   •— | j                   j                  |«       t        ‰| �  |«       y r8   )rk  rý  rì   )r9   r   rî   s     €r;   rý  zReprExceptionInfo.toterminal1  s$   ø€ Ø×Ñ×%Ñ% bÔ)Ü‰Ñ˜2Õr=   r  )rt   ru   rv   rw   rý  r  r  s   @r;   ru  ru  +  s   ø„ ñ÷ñ r=   ru  c                  óF   — e Zd ZU dZded<   ded<   ded<   dZd	ed
<   dd„Zy)rÜ  zŒA traceback with optional extra details (function arguments, function
    locals, file location) and possible extra line emitted at the end.z%Sequence[ReprEntry | ReprEntryNative]Úreprentriesr‰  rÝ  r�  rn  z_ r   Úentrysepc                óà  — t        | j                  «      D ]®  \  }}|j                  dk(  r|j                  d«       |j	                  |«       |t        | j                  «      dz
  k  sŒS| j                  |dz      }|j                  dk(  s |j                  dk(  sŒ„|j                  dk(  sŒ”|j                  | j                  «       Œ° | j                  r|j                  | j                  «       y y )Nr,   rN   rF   r-   )	r
  r  rn  r.   rý  rQ  r  r  rÝ  )r9   r   r  r  Ú
next_entrys        r;   rý  zReprTraceback.toterminalA  sÄ   € ä! $×"2Ñ"2Ó3ò 		*‰HˆAˆuØ�{‰{˜fÒ$Ø—‘˜”Ø×Ñ˜RÔ Ø”3�t×'Ñ'Ó(¨1Ñ,Ó,Ø!×-Ñ-¨a°!©eÑ4�
Ø—;‘; &Ò(Ø—K‘K 7Ó*¨z×/?Ñ/?À6Ó/Ià—F‘F˜4Ÿ=™=Õ)ð		*ð �>Š>Ø�G‰G�D—N‘NÕ#ð r=   Nr  )rt   ru   rv   rw   r‘  r  rý  r|   r=   r;   rÜ  rÜ  6  s+   … ñJð 7Ó6ØÓØÓà€HˆhÓô$r=   rÜ  c                  ó   — e Zd ZdZddœdd„Zy)rv  z|A traceback in native style.

    The lines are emitted as is; uses a single entry for the entire native
    traceback.
    Nrç  c               óB   — t        |«      g| _        || _        d| _        y )Nr0   )ÚReprEntryNativer  rÝ  rn  )r9   ÚtblinesrÝ  s      r;   r<   zReprTracebackNative.__init__Y  s    € Ü+¨GÓ4Ð5ˆÔØ"ˆŒØˆ�
r=   )r  úSequence[str]rÝ  r‰  rg   rh   )rt   ru   rv   rw   r<   r|   r=   r;   rv  rv  R  s   „ ñð KOö r=   rv  c                  ó2   — e Zd ZU dZded<   dZded<   d	d„Zy)
r  a:  An entry in a traceback in native style.

    Emits the lines as is. The lines are assumed to include the line separators.

    [Note that we currently use a single "entry" for the entire native
    traceback, so this is a bit misleading, but there's no point trying to parse
    or split a native traceback.]
    r   r]  r0   zClassVar[TracebackStyle]rn  c                óX   — |j                  dj                  | j                  «      «       y )NrN   )Úwriter  r]  r  s     r;   rý  zReprEntryNative.toterminaln  s   € Ø
�‰�—‘˜Ÿ™Ó$Õ%r=   Nr  )rt   ru   rv   rw   r‘  rn  rý  r|   r=   r;   r  r  _  s   … ñð Óà&.€EÐ#Ó.ô&r=   r  c                  ó\   — e Zd ZU dZded<   ded<   ded<   ded	<   d
ed<   dd„Zdd„Zdd„Zy)rÎ  zˆAn entry in a traceback with possible extra details (function arguments,
    function locals, source snippet, function's file and line).r   r]  ró  Úreprfuncargsrõ  Ú
reprlocalsrŽ  rÑ  r�  rn  c                ó6  — | j                   sy| j                  dk(  r4| j                   D ]$  }|j                  |«       |j                  d«       Œ& yt        j                  › d�}t        |«      }g }g }g }t        | j                   «      D ]`  \  }}|j                  |«      }	|	r |j                  | j                   |d «        n*|j                  |d| «       |j                  ||d «       Œb |j                  ||«       |D ]  }|j                  |dd¬«       Œ y)aã  Write the source code portions of a list of traceback entries with syntax highlighting.

        Usually entries are lines like these:

            "     x = 1"
            ">    assert x == 2"
            "E    assert 1 == 2"

        This function takes care of rendering the "source" portions of it (the lines without
        the "E" prefix) using syntax highlighting, taking care to not highlighting the ">"
        character, as doing so might break line continuations.
        Nr1   r×   rª  T©ÚboldÚred)r]  rn  r#  rw  r–  rQ  r
  r=  r®  ra   Ú_write_sourcer.   )
r9   r   r.   r–  Úindent_sizeÚindentsÚsource_linesÚfailure_linesÚindexÚis_failure_lines
             r;   Ú_write_entry_lineszReprEntry._write_entry_lines}  s  € ð �zŠzØà�:‰:˜Ò ð Ÿ
™
ò �Ø—‘˜”Ø—‘˜•ðð ô
 0×;Ñ;Ð<¸CÐ@ˆÜ˜+Ó&ˆØˆØ"$ˆØ#%ˆÜ$ T§Z¡ZÓ0ò 	8‰KˆE�4Ø"Ÿo™o¨kÓ:ˆOÙà×$Ñ$ T§Z¡Z°°Ð%7Ô8Ùà—‘˜t L [Ð1Ô2Ø×#Ñ# D¨¨Ð$6Õ7ð	8ð 	×Ñ˜ wÔ/ð "ò 	/ˆDØ�G‰G�D˜t¨ˆGÕ.ñ	/r=   c                óP  — | j                   dk(  rb| j                  r| j                  j                  |«       | j                  |«       | j                  r| j                  j                  |d¬«       y | j
                  r| j
                  j                  |«       | j                  |«       | j                  r,|j                  d«       | j                  j                  |«       | j                  r9| j                  r|j                  d«       | j                  j                  |«       y y )Nr-   z        rÌ  rN   )rn  rÑ  rý  r2  r&  r%  r.   r]  r  s     r;   rý  zReprEntry.toterminal®  sÝ   € Ø�:‰:˜Ò Ø×ÒØ× Ñ ×+Ñ+¨BÔ/Ø×#Ñ# BÔ'Ø�ŠØ—‘×*Ñ*¨2°gÐ*Ô>Øà×ÒØ×Ñ×(Ñ(¨Ô,à×Ñ Ô#à�?Š?Ø�G‰G�BŒKØ�O‰O×&Ñ& rÔ*Ø×ÒØ�zŠzØ—‘˜”Ø×Ñ×'Ñ'¨Õ+ð r=   c                ó‚   — dj                  dj                  | j                  «      | j                  | j                  «      S )Nz{}
{}
{}r×   )Úformatr  r]  r&  rÑ  rH   s    r;   rÛ   zReprEntry.__str__Ä  s3   € Ø×"Ñ"Ø�I‰I�d—j‘jÓ! 4§?¡?°D×4DÑ4Dó
ð 	
r=   Nr  rl   )rt   ru   rv   rw   r‘  r2  rý  rÛ   r|   r=   r;   rÎ  rÎ  r  s8   … ñCð ÓØ%Ó%Ø!Ó!Ø(Ó(ØÓó//ób,ô,
r=   rÎ  c                  ó@   — e Zd ZU dZded<   ded<   ded<   d
d„Zdd„Zy	)rg  z¦A message at a file location, using the `<path>:<lineno>: <message>`
    format that most editors understand.

    Only the first line of the message is emitted.
    rm   rU   rk   rƒ   r  c                ó8   — t        | j                  «      | _        y r8   )rm   rU   rH   s    r;   Ú__post_init__zReprFileLocation.__post_init__Ö  s   € Ü˜Ÿ	™	“Nˆ�	r=   c                óÐ   — | j                   }|j                  d«      }|dk7  r|d | }|j                  | j                  dd¬«       |j	                  d| j
                  › d|› �«       y )Nr×   rc  Tr(  r»   rã  )r  Úfindr#  rU   r.   rƒ   )r9   r   r;  r  s       r;   rý  zReprFileLocation.toterminalÙ  s]   € Ø�l‰lˆØ�H‰H�T‹NˆØ�Š7Ø�b�q�'ˆCØ
�‰�—‘ ¨4ˆÔ0Ø
�‰�!�D—K‘K�=  3 %Ð(Õ)r=   N)rg   rh   r  )rt   ru   rv   rw   r‘  r8  rý  r|   r=   r;   rg  rg  Ê  s"   … ñð ƒIØƒKØƒLó#ô*r=   rg  c                  ó&   — e Zd ZU dZded<   ddd„Zy)rÈ  z)Function local variables (pre-formatted).r   r]  c                óN   — | j                   D ]  }|j                  ||z   «       Œ y r8   )r]  r.   )r9   r   r«  r.   s       r;   rý  zReprLocals.toterminalè  s%   € Ø—J‘Jò 	#ˆDØ�G‰G�F˜T‘MÕ"ñ	#r=   N)rN   )r   r    r«  rm   rg   rh   ©rt   ru   rv   rw   r‘  rý  r|   r=   r;   rÈ  rÈ  â  s   … á3àÓõ#r=   rÈ  c                  ó$   — e Zd ZU dZded<   dd„Zy)r¢  z3Function arguments - name = value, comma separated.zSequence[tuple[str, object]]rc   c                ó4  — | j                   rŒd}| j                   D ]V  \  }}|› d|› �}t        |«      t        |«      z   dz   |j                  kD  r|r|j                  |«       |}ŒJ|r	|d|z   z  }ŒU|}ŒX |r|j                  |«       |j                  d«       y y )NrN   rÆ  r?  z, )rc   rQ  Ú	fullwidthr.   )r9   r   Ú	linesofarrL   r1   Únss         r;   rý  zReprFuncArgs.toterminaló  sž   € Ø�9Š9ØˆIØ#Ÿy™yò 
'‘��eØ�v˜S  Ð(�Ü�r“7œS ›^Ñ+¨aÑ/°"·,±,Ò>Ù ØŸ™ 	Ô*Ø "‘Iá Ø! T¨B¡YÑ.™	à$&™	ð
'ñ Ø—‘˜	Ô"Ø�G‰G�B�Kð r=   Nr  r=  r|   r=   r;   r¢  r¢  í  s   … á=à
&Ó&ôr=   r¢  c                ó²  — t        | «      } t        | d«      r| j                  } 	 t        j	                  | «      }|j                  |j                  fS # t
        $ r{ 	 t        j                  | «      xs t        j                  | «      }n# t
        $ r Y Y yw xY w|xr t        |«      xs d}d}|r	 t        | «      \  }}n# t        $ r Y nw xY w||fcY S w xY w)zšReturn source location (path, lineno) for the given object.

    If the source cannot be determined return ("", -1).

    The line number is 0-based.
    Úplace_as)rN   rc  rN   rc  )r$   ÚhasattrrD  r4   r@   Ú	TypeErrorrO   ÚgetsourcefilerP   r&   r   rR   rU   rI   )r:   rŠ   r  rô   rƒ   rX   s         r;   ÚgetfslinenorH    sß   € ô ˜Ó
€CÜˆs�JÔØ�l‰lˆðÜ×!Ñ! #Ó&ˆð  �9‰9�d×&Ñ&Ð&Ð&øô ò ð	Ü×&Ñ& sÓ+ÒC¬w¯©¸sÓ/C‰BøÜò 	Úð	úð Ò)œ bÓ)Ò0¨bˆØˆÙðÜ& s›O‘	�‘6øÜò Ùðúà�vˆ~ÒðúsY   ¥A Á	CÁ,B	ÂCÂ		BÂCÂBÂCÂ1C Â?CÃ 	CÃ	CÃCÃCÃCc                ób   — | j                  d«      }t        |d| j                  dd¬«      «      S )z9Converts a byte based offset in a string to a code-point.zutf-8NÚreplace)Úerrors)ÚencoderQ  Údecode)rm   ÚoffsetÚas_utf8s      r;   r¸  r¸  (  s2   € à�j‰j˜Ó!€GÜˆw�w˜Ð×&Ñ& w°yÐ&ÓAÓBÐBr=   Úocz__init__.pyc                óØ   — | j                   j                  j                  j                  }d|v xr d|v }|ryt	        | j
                  «      }|j                  }t        |v ryt        |v ryy)a   Return True if a TracebackEntry instance should be included in tracebacks.

    We hide traceback entries of:

    * dynamically generated code (no code to show up for it);
    * internal traceback from pytest or its internal libraries, py and pluggy.
    rO  r¼   FT)	r€   rŠ   r6   rf  r	   rU   rõ   Ú_PLUGGY_DIRÚ_PYTEST_DIR)r  Úraw_filenameÚis_generatedrT   rõ   s        r;   Úfilter_tracebackrV  :  sk   € ð —;‘;×#Ñ#×'Ñ'×3Ñ3€LØ˜,Ð&Ò>¨3°,Ð+>€LÙØô 	ˆU�Z‰ZÓ€Aà�i‰i€GÜ�gÑØÜ�gÑØàr=   c                óz   — t        | «      r | |«      S | r|j                  j                  |«      S |j                  S )zHFilter the exception traceback in ``excinfo`` according to ``tbfilter``.)rÐ   r1  r  )rp  rÑ   s     r;   rÙ  rÙ  W  s=   € ô �ÔÙ˜Ó Ð Ù	Ø× Ñ ×'Ñ'¨Ó0Ð0à× Ñ Ð r=   )T)r  rÚ   r   rs   rg   rm   )r:   ri   rg   ztuple[str | Path, int])r  r›   rg   rs   )rp  r“  rÑ   rŒ  rg   rä   )bÚ
__future__r   ÚastÚcollections.abcr   r   r   r   rö  rO   rÿ  r   ró   Úpathlibr	   r|  rá   r1  r
   r   r   r   Útypesr   r   r   Útypingr   r   r   r   r   r   r   r   r   r   ÚpluggyÚ_pytestÚ_pytest._code.sourcer   r   r   r   Ú_pytest._ior    Ú_pytest._io.safereprr!   r#   Ú_pytest.compatr$   Ú_pytest.deprecatedr%   Ú_pytest.pathlibr&   r'   râ   Úexceptiongroupr+   r�  r4  rÚ   r^   r�  r4   r~   r›   r`   rä   r"  r#  Ú	dataclassr  rs   r“  r‘  rw  rú  r  rî  ru  rÜ  rv  r  rÎ  rg  rÈ  r¢  rH  r¸  Ú__file__rZ  rR  rL   ÚparentrS  rV  rÙ  r|   r=   r;   ú<module>rj     s¾  ðæ "ã 
Ý $Ý $Ý #Ý $Û Û Ý Û 	Ý Û 	Û 
Ý  Ý &Ý +Ý "Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý  Ý Ý ã ã Ý +Ý +Ý 6Ý 'Ý &Ý +Ý )Ý (Ý -Ý (Ý 'ð ×Ñ�gÒÝ1àÐQÑR€à˜Ñ'¨%°°]Ñ0CÀSÐ0HÑ*IÑIÐ ÷Gñ G÷T;ñ ;÷|a+ñ a+ôHj��^Ñ$ô jð\ :>ðØ	ðØ26ðàóñ6 ˆC�}°Ô5€ð Ø×ÑônR�G˜A‘Jó nRó ó ðnRðh " H¨m¸MÑ.JÐ-KÈYÐ-VÑ$WÑW€�Ó Wð ×Ñ÷s.ð s.ó ðs.ðl €×Ñ˜%Ô ÷$ð $ó !ð$ð& €×Ñ˜%Ô ô�Ló ó !ðð2 €×Ñ˜%Ô ô˜ó ó !ðð6 €×Ñ˜%Ô ô˜ó ó !ðð €×Ñ˜%Ô ô$�Ló $ó !ð$ô6
˜-ô 
ð €×Ñ˜%Ô ô&�ló &ó !ð&ð$ €×Ñ˜%Ô ôT
�ó T
ó !ðT
ðn €×Ñ˜%Ô ô*�|ó *ó !ð*ð. €×Ñ˜%Ô ô#�ó #ó !ð#ð €×Ñ˜%Ô ô�<ó ó !ðó0'òDCñ �6—?‘?×)Ñ)¨$Ó/Ó0€à×Ñ�}Ò$Ø×$Ñ$€KÙ�7×#Ñ#Ó$×+Ñ+€óð:	!Øð	!Ø(Dð	!àô	!r=   