Ë
    æØjj³  ã                  óÆ   — 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Zd dl	Z	d dl
Z
d dlZd dlmZ d dlZ G d„ d«      Zdd	„Zddd
„Zdd„Zdd„Z	 	 d	 	 	 	 	 	 	 	 	 dd„Zy)é    )ÚannotationsN)Úbisect_right)ÚIterable)ÚIterator)Úoverloadc                  ó”   — e Zd ZdZddd„Zdd„ZdZedd„«       Zedd„«       Zdd„Zdd„Z	dd	„Z
dd
„Zddd„Zdd„Zdd„Zdd„Zdd„Zy)ÚSourcezvAn immutable object holding a source code fragment.

    When using Source(...), the source lines are deindented.
    Nc                ó˜  — |sg | _         g | _        y t        |t        «      r#|j                   | _         |j                  | _        y t        |t        t
        z  «      r/t        d„ |D «       «      | _         t        d„ |D «       «      | _        y t        |t        «      r6t        |j                  d«      «      | _         |j                  d«      | _        y 	 t        |«      }t        j                  |«      }t        |j                  d«      «      | _         |j                  d«      | _        y # t        $ r t        j                  |«      }Y ŒVw xY w)Nc              3  ó>   K  — | ]  }|j                  d «      –— Œ y­w©ú
N©Úrstrip©Ú.0Úxs     úV/opt/eval-harness/bench_task/venv/lib/python3.12/site-packages/_pytest/_code/source.pyú	<genexpr>z"Source.__init__.<locals>.<genexpr>   ó   è ø€ Ò!>°Q !§(¡(¨4§.Ñ!>ùó   ‚c              3  ó>   K  — | ]  }|j                  d «      –— Œ y­wr   r   r   s     r   r   z"Source.__init__.<locals>.<genexpr>   r   r   r   )ÚlinesÚ	raw_linesÚ
isinstancer	   ÚtupleÚlistÚdeindentÚstrÚsplitÚ
getrawcodeÚinspectÚ	getsourceÚ	TypeError)ÚselfÚobjÚrawcodeÚsrcs       r   Ú__init__zSource.__init__   sö   € ÙØ$&ˆDŒJØ(*ˆD�NÜ˜œVÔ$ØŸ™ˆDŒJØ Ÿ]™]ˆD�NÜ˜œU¤T™\Ô*Ü!Ñ!>¸#Ô!>Ó>ˆDŒJÜ!Ñ!>¸#Ô!>Ó>ˆD�NÜ˜œSÔ!Ü! #§)¡)¨D£/Ó2ˆDŒJØ ŸY™Y t›_ˆD�Nð-Ü$ S›/�Ü×'Ñ'¨Ó0�ô " #§)¡)¨D£/Ó2ˆDŒJØ ŸY™Y t›_ˆD�Nøô ò -Ü×'Ñ'¨Ó,’ð-ús   Ã D( Ä(E	ÅE	c                ó`   — t        |t        «      st        S | j                  |j                  k(  S ©N)r   r	   ÚNotImplementedr   )r$   Úothers     r   Ú__eq__zSource.__eq__,   s%   € Ü˜%¤Ô(Ü!Ð!Ø�z‰z˜UŸ[™[Ñ(Ð(ó    c                 ó   — y r*   © ©r$   Úkeys     r   Ú__getitem__zSource.__getitem__4   s   € Ø,/r.   c                 ó   — y r*   r0   r1   s     r   r3   zSource.__getitem__7   s   € Ø14r.   c                ó*  — t        |t        «      r| j                  |   S |j                  dvrt	        d«      ‚t        «       }| j                  |j                  |j                   |_        | j                  |j                  |j                   |_        |S )N)Né   z!cannot slice a Source with a step)	r   Úintr   ÚstepÚ
IndexErrorr	   ÚstartÚstopr   )r$   r2   Ú	newsources      r   r3   zSource.__getitem__:   st   € Ü�cœ3ÔØ—:‘:˜c‘?Ð"à�x‰x˜yÑ(Ü Ð!DÓEÐEÜ›ˆIØ"Ÿj™j¨¯©°S·X±XÐ>ˆIŒOØ"&§.¡.°·±¸S¿X¹XÐ"FˆIÔØÐr.   c                ó,   — t        | j                  «      S r*   )Úiterr   ©r$   s    r   Ú__iter__zSource.__iter__E   s   € Ü�D—J‘JÓÐr.   c                ó,   — t        | j                  «      S r*   )Úlenr   r?   s    r   Ú__len__zSource.__len__H   s   € Ü�4—:‘:‹Ðr.   c                óÂ  — dt        | «      }}||k  rE| j                  |   j                  «       s(|dz  }||k  r| j                  |   j                  «       sŒ(||kD  rK| j                  |dz
     j                  «       s+|dz  }||kD  r!| j                  |dz
     j                  «       sŒ+t        «       }| j                  |_        | j                  || |j                  dd |S )zGReturn new Source object with trailing and leading blank lines removed.r   r6   N)rB   r   Ústripr	   r   )r$   r:   ÚendÚsources       r   rE   zSource.stripK   sÉ   € àœ˜D›	ˆsˆØ�cŠk $§*¡*¨UÑ"3×"9Ñ"9Ô";Ø�Q‰JˆEð �cŠk $§*¡*¨UÑ"3×"9Ñ"9Õ";à�EŠk $§*¡*¨S°1©WÑ"5×";Ñ";Ô"=Ø�1‰HˆCð �EŠk $§*¡*¨S°1©WÑ"5×";Ñ";Õ"=ä“ˆØŸ>™>ˆÔØŸ*™* U¨3Ð/ˆ�‰‘QˆØˆr.   c                óŠ   — t        «       }| j                  |_        | j                  D �cg c]  }||z   ‘Œ	 c}|_        |S c c}w )z^Return a copy of the source object with all lines indented by the
        given indent-string.)r	   r   r   )r$   Úindentr<   Úlines       r   rI   zSource.indentW   s=   € ô “Hˆ	Ø"Ÿn™nˆ	ÔØ7;·z±zÖB¨t˜F T›MÒBˆ	ŒØÐùò Cs   ªA c                ó4   — | j                  |«      \  }}| || S )zUReturn Source statement which contains the given linenumber
        (counted from 0).)Úgetstatementrange)r$   Úlinenor:   rF   s       r   ÚgetstatementzSource.getstatement_   s$   € ð ×+Ñ+¨FÓ3‰
ˆˆsØ�E˜#ˆÐr.   c                ó€   — d|cxk  rt        | «      k  st        d«      ‚ t        d«      ‚t        || «      \  }}}||fS )zmReturn (start, end) tuple which spans the minimal statement region
        which containing the given lineno.r   zlineno out of range)rB   r9   Úgetstatementrange_ast)r$   rM   Ú_astr:   rF   s        r   rL   zSource.getstatementrangee   sO   € ð �VÔ'œc $›iÒ'ÜÐ2Ó3Ð3ð (ÜÐ2Ó3Ð3Ü0°¸Ó>Ñˆˆe�SØ�cˆzÐr.   c                ó€   — t        «       }t        | j                  «      |j                  dd | j                  |_        |S )z&Return a new Source object deindented.N)r	   r   r   r   )r$   r<   s     r   r   zSource.deindentm   s2   € ä“Hˆ	Ü% d§j¡jÓ1ˆ	�‰™ÐØ"Ÿn™nˆ	ÔØÐr.   c                ó8   — dj                  | j                  «      S ©Nr   )Újoinr   r?   s    r   Ú__str__zSource.__str__t   s   € Ø�y‰y˜Ÿ™Ó$Ð$r.   r*   )r%   ÚobjectÚreturnÚNone)r,   rW   rX   Úbool)r2   r7   rX   r   )r2   ÚslicerX   r	   )r2   zint | slicerX   zstr | Source)rX   zIterator[str])rX   r7   )rX   r	   )z    )rI   r   rX   r	   )rM   r7   rX   r	   )rM   r7   rX   ztuple[int, int])rX   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r(   r-   Ú__hash__r   r3   r@   rC   rE   rI   rN   rL   r   rV   r0   r.   r   r	   r	      sa   „ ñô
-ó,)ð €HàÚ/ó Ø/àÚ4ó Ø4ó	ó óó
ôóóóô%r.   r	   c                óÌ   — 	 t        j                  | «      \  }}t        «       }|D �cg c]  }|j	                  «       ‘Œ c}|_        ||_        ||fS # t        $ r Y yw xY wc c}w )N)Néÿÿÿÿ)r!   Ú
findsourceÚ	Exceptionr	   r   r   r   )r%   ÚsourcelinesrM   rG   rJ   s        r   rc   rc   }   sg   € ðÜ%×0Ñ0°Ó5Ñˆ�Vô ‹X€FØ.9Ö: d�D—K‘K•MÒ:€F„LØ"€FÔØ�6ˆ>Ðøô ò Ùðüò ;s   ‚A ¨A!Á	AÁAc                ó²   — 	 | j                   S # t        $ r Y nw xY w|r,t        | dd«      }|rt        | t        «      st        |d¬«      S t        d| ›�«      ‚)z&Return code object for given function.Ú__call__NF)Útrycallzcould not get code object for )Ú__code__ÚAttributeErrorÚgetattrr   Útyper    r#   )r%   rh   Úcalls      r   r    r    ˆ   s`   € ðØ�|‰|ÐøÜò ÙðúáÜ�s˜J¨Ó-ˆÙœ
 3¬Ô-Ü˜d¨EÔ2Ð2Ü
Ð4°S°GÐ<Ó
=Ð=s   ‚ Ž	™c                óf   — t        j                  dj                  | «      «      j                  «       S rT   )ÚtextwrapÚdedentrU   Ú
splitlines)r   s    r   r   r   •   s#   € Ü�?‰?˜4Ÿ9™9 UÓ+Ó,×7Ñ7Ó9Ð9r.   c                ó¨  — g }t        j                  |«      D ]ò  }t        |t         j                  t         j                  z  «      sŒ/t        |t         j
                  t         j                  z  t         j                  z  «      r/|j                  D ]   }|j                  |j                  dz
  «       Œ" |j                  |j                  dz
  «       dD ]6  }t        ||d «      }|sŒ|j                  |d   j                  dz
  dz
  «       Œ8 Œô |j                  «        t        || «      }|dk(  ry||dz
     }|t        |«      k\  rd }	||	fS ||   }	||	fS )Nr6   )Ú	finalbodyÚorelser   )r   N)ÚastÚwalkr   ÚstmtÚExceptHandlerÚClassDefÚFunctionDefÚAsyncFunctionDefÚdecorator_listÚappendrM   rk   Úsortr   rB   )
rM   ÚnodeÚvaluesr   ÚdÚnameÚvalÚinsert_indexr:   rF   s
             r   Úget_statement_startend2r…   ™   s:  € ð €FÜ�X‰X�d‹^ò 9ˆÜ�aœŸ™¤C×$5Ñ$5Ñ5Õ6ä˜!œSŸ\™\¬C¯O©OÑ;¼c×>RÑ>RÑRÔSØ×)Ñ)ò 0�AØ—M‘M !§(¡(¨Q¡,Õ/ð0à�M‰M˜!Ÿ(™( Q™,Ô'Ø/ò 9�Ü-4°Q¸¸dÓ-C�Úà—M‘M # a¡&§-¡-°!Ñ"3°aÑ"7Õ8ñ	9ð9ð ‡K�K„MÜ ¨Ó/€LØ�qÒØØ�< !Ñ#Ñ$€EØ”s˜6“{Ò"Øˆð �#ˆ:Ðð �\Ñ"ˆØ�#ˆ:Ðr.   c                óŠ  ‡
— |€Tt        |«      }t        j                  «       5  t        j                  d«       t	        j
                  |dd«      }d d d «       t        | |«      \  }}|€t        |j                  «      }||dz   kD  r—t        j                  «       }t        |j                  |   «      xr  |j                  |   d   j                  «       |_        d„ |j                  || D «       Š
	 t        j                  ˆ
fd„«      D ]  } |j                   |Ž  Œ 	 t+        |t        |j                  «      «      }|r=|j                  |dz
     j-                  «       }	|	j/                  d«      s|	s|dz  }nn|rŒ=|||fS # 1 sw Y   �Œ2xY w# t        j"                  t$        f$ r |j&                  |z   }Y Œšt(        $ r Y Œ¤w xY w)	NÚignorerG   Úexecr6   r   c              3  ó&   K  — | ]	  }|d z   –— Œ y­wr   r0   r   s     r   r   z(getstatementrange_ast.<locals>.<genexpr>Ó   s   è ø€ Ò:˜Qˆq�4�xÑ:ùs   ‚c                 ó   •— t        ‰ «      S r*   )Únext)Úits   €r   ú<lambda>z'getstatementrange_ast.<locals>.<lambda>Õ   s   ø€ ¼¸R»€ r.   ú#)r   ÚwarningsÚcatch_warningsÚsimplefilterru   Úparser…   rB   r   r!   ÚBlockFinderrZ   ÚisspaceÚstartedÚtokenizeÚgenerate_tokensÚ
tokeneaterÚ
EndOfBlockÚIndentationErrorÚlastrd   ÚminÚlstripÚ
startswith)rM   rG   Ú	assertionÚastnodeÚcontentr:   rF   Úblock_finderÚtokrJ   rŒ   s             @r   rP   rP   µ   s±  ø€ ð €Ü�f“+ˆô ×$Ñ$Ó&ñ 	;Ü×!Ñ! (Ô+Ü—i‘i ¨°6Ó:ˆG÷	;ô )¨°Ó9�J€Eˆ3ð
 €{Ü�&—,‘,Óˆà
ˆU�Q‰Y‚ô ×*Ñ*Ó,ˆô �—‘˜eÑ$Ó%ÒJ¨&¯,©,°uÑ*=¸aÑ*@×*HÑ*HÓ*Jð 	Ôñ ; &§,¡,¨u°SÐ"9Ô:ˆð	Ü×/Ñ/Ó0@ÓAò .�Ø'�×'Ñ'¨Ò-ñ.ô ˆc”3�v—|‘|Ó$Ó
%€CÙ
Ø�|‰|˜C !™GÑ$×+Ñ+Ó-ˆØ�?‰?˜3Ô¡tØ�1‰H‰Càò ð �E˜3ÐÐ÷K	;ñ 	;ûô0 ×"Ñ"Ô$4Ð5ò 	,Ø×#Ñ# eÑ+ŠCÜò 	Ùð	ús#   £-F Ã0,F Æ F
Æ(GÆ7GÇG)rX   ztuple[Source | None, int])T)r%   rW   rh   rZ   rX   ztypes.CodeType)r   zIterable[str]rX   z	list[str])rM   r7   r   zast.ASTrX   ztuple[int, int | None])FN)
rM   r7   rG   r	   rŸ   rZ   r    zast.AST | NonerX   ztuple[ast.AST, int, int])Ú
__future__r   ru   Úbisectr   Úcollections.abcr   r   r!   ro   r–   ÚtypesÚtypingr   r�   r	   rc   r    r   r…   rP   r0   r.   r   ú<module>r©      s‚   ðå "ã 
Ý Ý $Ý $Û Û Û Û Ý Û ÷e%ñ e%óZô
>ó:óð> Ø"ð	/Øð/àð/ð ð/ð ð	/ð
 ô/r.   