Ë
    •KêjG$  ã                  óÖ   — 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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„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 |xt        d˜ x�&\    |j                   | _         |j                  | _        y  xxt        d˜ x�\   n xt        d˜ x�\   n  n>  t        d„ |D «       «      | _         |D �cg c]  }|j                  d«      ‘Œ c}| _        y t        d˜ x�8\   t        |j                  d«      «      | _         |j                  d«      | _        y  	 	 t        |«      }t        j                  |«      }t        |j                  d«      «      | _         |j                  d«      | _        y c c}w # t        $ r t        j                  |«      }Y Œ[w xY w)N© c              3  ó>   K  — | ]  }|j                  d «      –— Œ y­w©ú
N)Úrstrip©Ú.0Úxs     úY/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/_pytest/_code/source.pyú	<genexpr>z"Source.__init__.<locals>.<genexpr>!   s   è ø€ Ò%B¸ a§h¡h¨t§nÑ%Bùs   ‚r   )ÚlinesÚ	raw_linesr	   ÚtupleÚlistÚdeindentr   ÚstrÚsplitÚ
getrawcodeÚinspectÚ	getsourceÚ	TypeError)ÚselfÚobjr   ÚrawcodeÚsrcs        r   Ú__init__zSource.__init__   s  € ÙØ$&ˆDŒJØ(*ˆDŒNØØØ”–Ø ŸY™Y�”
Ø!$§¡�•ð ð "�”—˜6œ4Ÿ6Ó!Ü%Ñ%B¸cÔ%BÓB�”
Ø:=Ö!>°Q !§(¡(¨4¥.Ò!>�•Ü•Ü% c§i¡i°£oÓ6�”
Ø!$§¡¨4£�•ð ð ð1Ü(¨›o�GÜ!×+Ñ+¨GÓ4�Cô & c§i¡i°£oÓ6�”
Ø!$§¡¨4£�•ùò "?øô !ò 1Ü!×+Ñ+¨CÓ0’Cð1ús   Â D;Ã% E  Å E!Å E!c                ó`   — t        |t        «      st        S | j                  |j                  k(  S ©N)Ú
isinstancer	   ÚNotImplementedr   )r    Úothers     r   Ú__eq__zSource.__eq__/   s%   € Ü˜%¤Ô(Ü!Ð!Ø�z‰z˜UŸ[™[Ñ(Ð(ó    c                 ó   — y r&   r   ©r    Úkeys     r   Ú__getitem__zSource.__getitem__7   s   € Ø,/r+   c                 ó   — y r&   r   r-   s     r   r/   zSource.__getitem__:   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    r.   Ú	newsources      r   r/   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__H   s   € Ü�D—J‘JÓÐr+   c                ó,   — t        | j                  «      S r&   )Úlenr   r;   s    r   Ú__len__zSource.__len__K   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   r2   N)r>   r   Ústripr	   r   )r    r6   ÚendÚsources       r   rA   zSource.stripN   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    Úindentr8   Úlines       r   rE   zSource.indentZ   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    Úlinenor6   rB   s       r   ÚgetstatementzSource.getstatementb   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)r>   r5   Úgetstatementrange_ast)r    rI   Ú_astr6   rB   s        r   rH   zSource.getstatementrangeh   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    r8   s     r   r   zSource.deindentp   s2   € ä“Hˆ	Ü% d§j¡jÓ1ˆ	�‰™ÐØ"Ÿn™nˆ	ÔØÐr+   c                ó8   — dj                  | j                  «      S ©Nr   )Újoinr   r;   s    r   Ú__str__zSource.__str__w   s   € Ø�y‰y˜Ÿ™Ó$Ð$r+   r&   )r!   ÚobjectÚreturnÚNone)r)   rS   rT   Úbool)r.   r3   rT   r   )r.   ÚslicerT   r	   )r.   zint | slicerT   zstr | Source)rT   zIterator[str])rT   r3   )rT   r	   )z    )rE   r   rT   r	   )rI   r3   rT   r	   )rI   r3   rT   ztuple[int, int])rT   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r$   r*   Ú__hash__r   r/   r<   r?   rA   rE   rJ   rH   r   rR   r   r+   r   r	   r	      sa   „ ñô
1ó0)ð €HàÚ/ó Ø/àÚ4ó Ø4ó	ó óó
ôóóóô%r+   r	   c                óŠ  — 	 t        j                  | «      \  }}t        «       }|D �cg c]  }|j                  «       ‘Œ c}|_        ||_        ||fS # t        $ rb t        | t        j
                  «      r| nt        | dd «      }|€Y yt        j                  |j                  «      }|sY y|j                  dz
  }Y Œ¢w xY wc c}w )NÚ__code__)Néÿÿÿÿr2   )r   Ú
findsourceÚ	Exceptionr'   ÚtypesÚCodeTypeÚgetattrÚ	linecacheÚgetlinesÚco_filenameÚco_firstlinenor	   r   r   r   )r!   ÚsourcelinesrI   ÚcoderC   rF   s         r   r`   r`   €   s½   € ð)Ü%×0Ñ0°Ó5Ñˆ�Vô  ‹X€FØ.9Ö: d�D—K‘K•MÒ:€F„LØ"€FÔØ�6ˆ>Ðøô% ò )ô ˜c¤5§>¡>Ô2‰C¼ÀÀZÐQUÓ8Vð 	ð ˆ<ÙÜ×(Ñ(¨×)9Ñ)9Ó:ˆÙÙØ×$Ñ$ qÑ(Šð)üò  ;s"   ‚A ¨C Á4B=Â!B=Â+B=Â<B=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 )r^   ÚAttributeErrorrd   r'   Útyper   r   )r!   rm   Úcalls      r   r   r   ˜   s`   € ðØ�|‰|ÐøÜò ÙðúáÜ�s˜J¨Ó-ˆÙœ
 3¬Ô-Ü˜d¨EÔ2Ð2Ü
Ð4°S°GÐ<Ó
=Ð=s   ‚ Ž	™c                óf   — t        j                  dj                  | «      «      j                  «       S rP   )ÚtextwrapÚdedentrQ   Ú
splitlines)r   s    r   r   r   ¥   s#   € Ü�?‰?˜4Ÿ9™9 UÓ+Ó,×7Ñ7Ó9Ð9r+   c                ó�  — t        | dd«      }|�|S 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                  «        	 || _        |S # t        $ r Y |S w xY w)a0  Sorted 0-based line numbers of all statements below ``node``.

    Walking the tree is proportional to the size of the whole module, while a
    traceback asks for many line numbers of the same module -- so the result is
    memoized on the node, which shares the lifetime of the caller's ast cache.
    Ú_pytest_statement_linenosNr2   )Ú	finalbodyÚorelser   )rd   ÚastÚwalkr'   ÚstmtÚExceptHandlerÚClassDefÚFunctionDefÚAsyncFunctionDefÚdecorator_listÚappendrI   Úsortrv   rn   )ÚnodeÚvaluesr   ÚdÚnameÚvals         r   Ú_statement_linenosrˆ   ©   s*  € ô  ' tÐ-HÈ$ÓO€FØÐØˆð €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ðØ)/ˆÔ&ð €Møô ò ØØ€Mðús   Ä/D8 Ä8	EÅEc                ó†   — t        |«      }t        || «      }|dk(  ry||dz
     }|t        |«      k\  rd }||fS ||   }||fS )Nr   )r   Nr2   )rˆ   r   r>   )rI   rƒ   r„   Úinsert_indexr6   rB   s         r   Úget_statement_startend2r‹   Ê   se   € Ü Ó%€FÜ ¨Ó/€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ÚignorerC   Úexecr2   r   c              3  ó&   K  — | ]	  }|d z   –— Œ y­wr   r   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Úsimplefilterry   Úparser‹   r>   r   r   ÚBlockFinderrV   ÚisspaceÚstartedÚtokenizeÚgenerate_tokensÚ
tokeneaterÚ
EndOfBlockÚIndentationErrorÚlastra   ÚminÚlstripÚ
startswith)rI   rC   Ú	assertionÚastnodeÚcontentr6   rB   Úblock_finderÚtokrF   r’   s             @r   rL   rL   ×   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)rT   ztuple[Source | None, int])T)r!   rS   rm   rV   rT   ztypes.CodeType)r   zIterable[str]rT   z	list[str])rƒ   úast.ASTrT   z	list[int])rI   r3   rƒ   rª   rT   ztuple[int, int | None])FN)
rI   r3   rC   r	   r¥   rV   r¦   zast.AST | NonerT   ztuple[ast.AST, int, int])Ú
__future__r   ry   Úbisectr   Úcollections.abcr   r   r   re   rr   rœ   rb   Útypingr   r•   r	   r`   r   r   rˆ   r‹   rL   r   r+   r   ú<module>r¯      s‹   ðå "ã 
Ý Ý $Ý $Û Û Û Û Û Ý Û ÷g%ñ g%ó^ô0
>ó:óóB
ð  Ø"ð	/Øð/àð/ð ð/ð ð	/ð
 ô/r+   