ó
    Eñi\  ã                  óÔ   • S SK Jr  S SKrS SKJr  S SKJr  S SKJr  S SKrS SK	r	S SK
r
S SKrS SKJr  S SKr " S S5      rSS	 jrSSS
 jjrSS jrSS jr  S         SS jjrg)é    )ÚannotationsN)Úbisect_right)ÚIterable)ÚIterator)Úoverloadc                  óº   • \ rS rSrSrSSS jjrSS jrSr\SS j5       r	\SS j5       r	SS jr	SS	 jr
SS
 jrSS jrSSS jjrSS jrSS jrSS jrSS jrSrg) ÚSourceé   znAn immutable object holding a source code fragment.

When using Source(...), the source lines are deindented.
Nc                óÆ  • U(       d  / U l         / U l        g [        U[        5      (       a#  UR                   U l         UR                  U l        g [        U[        [
        -  5      (       a/  [        S U 5       5      U l         [        S U 5       5      U l        g [        U[        5      (       a6  [        UR                  S5      5      U l         UR                  S5      U l        g  [        U5      n[        R                  " U5      n[        UR                  S5      5      U l         UR                  S5      U l        g ! [         a    [        R                  " U5      n NXf = f)Nc              3  óB   #   • U  H  oR                  S 5      v •  M     g7f©Ú
N©Úrstrip©Ú.0Úxs     ÚQ/home/mande/repo/quber/.venv/lib/python3.13/site-packages/_pytest/_code/source.pyÚ	<genexpr>Ú"Source.__init__.<locals>.<genexpr>   ó   é € Ð!>º#°Q§(¡(¨4§. .º#ùó   ‚c              3  óB   #   • U  H  oR                  S 5      v •  M     g7fr   r   r   s     r   r   r      r   r   r   )ÚlinesÚ	raw_linesÚ
isinstancer	   ÚtupleÚlistÚdeindentÚstrÚsplitÚ
getrawcodeÚinspectÚ	getsourceÚ	TypeError)ÚselfÚobjÚrawcodeÚsrcs       r   Ú__init__Ú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                ój   • [        U[        5      (       d  [        $ U R                  UR                  :H  $ ©N)r   r	   ÚNotImplementedr   )r&   Úothers     r   Ú__eq__ÚSource.__eq__,   s(   € Ü˜%¤×(Ñ(Ü!Ð!Ø�z‰z˜UŸ[™[Ñ(Ð(ó    c                ó   • g r-   © ©r&   Úkeys     r   Ú__getitem__ÚSource.__getitem__4   s   € Ø,/r2   c                ó   • g r-   r4   r5   s     r   r7   r8   7   s   € Ø14r2   c                ó8  • [        U[        5      (       a  U R                  U   $ UR                  S;  a  [	        S5      e[        5       nU R                  UR                  UR                   Ul        U R                  UR                  UR                   Ul        U$ )N)Né   z!cannot slice a Source with a step)	r   Úintr   ÚstepÚ
IndexErrorr	   ÚstartÚstopr   )r&   r6   Ú	newsources      r   r7   r8   :   sw   € Ü�cœ3×ÑØ—:‘:˜c‘?Ð"à�x‰x˜yÓ(Ü Ð!DÓEÐEÜ›ˆIØ"Ÿj™j¨¯©°S·X±XÐ>ˆIŒOØ"&§.¡.°·±¸S¿X¹XÐ"FˆIÔØÐr2   c                ó,   • [        U R                  5      $ r-   )Úiterr   ©r&   s    r   Ú__iter__ÚSource.__iter__E   s   € Ü�D—J‘JÓÐr2   c                ó,   • [        U R                  5      $ r-   )Úlenr   rD   s    r   Ú__len__ÚSource.__len__H   s   € Ü�4—:‘:‹Ðr2   c                óê  • S[        U 5      p!X:  aP  U R                  U   R                  5       (       d.  US-  nX:  a$  U R                  U   R                  5       (       d  M.  X!:”  aV  U R                  US-
     R                  5       (       d1  US-  nX!:”  a'  U R                  US-
     R                  5       (       d  M1  [        5       nU R                  Ul        U R                  X UR                  SS& U$ )zGReturn new Source object with trailing and leading blank lines removed.r   r;   N)rH   r   Ústripr	   r   )r&   r?   ÚendÚsources       r   rL   ÚSource.stripK   sÉ   € àœ˜D›	ˆsØ‹k $§*¡*¨UÑ"3×"9Ñ"9×";Ñ";Ø�Q‰JˆEð ‹k $§*¡*¨UÑ"3×"9Ñ"9×";Ó";à‹k $§*¡*¨S°1©WÑ"5×";Ñ";×"=Ñ"=Ø�1‰HˆCð ‹k $§*¡*¨S°1©WÑ"5×";Ñ";×"=Ó"=ä“ˆØŸ>™>ˆÔØŸ*™* UÐ/ˆ�‰‘QˆØˆr2   c                óŽ   • [        5       nU R                  Ul        U R                   Vs/ s H  o1U-   PM	     snUl        U$ s  snf )zVReturn a copy of the source object with all lines indented by the
given indent-string.)r	   r   r   )r&   ÚindentrA   Úlines       r   rQ   ÚSource.indentW   s?   € ô “Hˆ	Ø"Ÿn™nˆ	ÔØ7;·z²zÓB²z¨t TœM±zÑBˆ	ŒØÐùò Cs   ªAc                ó0   • U R                  U5      u  p#XU $ )zMReturn Source statement which contains the given linenumber
(counted from 0).)Úgetstatementrange)r&   Úlinenor?   rM   s       r   ÚgetstatementÚSource.getstatement_   s    € ð ×+Ñ+¨FÓ3‰
ˆØ˜#ˆÐr2   c                ój   • SUs=::  a  [        U 5      :  d  O  [        S5      e[        X5      u  p#nX44$ )zeReturn (start, end) tuple which spans the minimal statement region
which containing the given lineno.r   zlineno out of range)rH   r>   Úgetstatementrange_ast)r&   rV   Ú_astr?   rM   s        r   rU   ÚSource.getstatementrangee   s8   € ð �VÕ'œc $›iÕ'ÜÐ2Ó3Ð3Ü0°Ó>Ñˆ�SØˆzÐr2   c                ó€   • [        5       n[        U R                  5      UR                  SS& U R                  Ul        U$ )z&Return a new Source object deindented.N)r	   r   r   r   )r&   rA   s     r   r   ÚSource.deindentm   s2   € ä“Hˆ	Ü% d§j¡jÓ1ˆ	�‰™ÐØ"Ÿn™nˆ	ÔØÐr2   c                ó8   • SR                  U R                  5      $ ©Nr   )Újoinr   rD   s    r   Ú__str__ÚSource.__str__t   s   € Ø�y‰y˜Ÿ™Ó$Ð$r2   )r   r   r-   )r'   ÚobjectÚreturnÚNone)r/   rd   re   Úbool)r6   r<   re   r    )r6   Úslicere   r	   )r6   zint | slicere   zstr | Source)re   zIterator[str])re   r<   )re   r	   )z    )rQ   r    re   r	   )rV   r<   re   r	   )rV   r<   re   ztuple[int, int])re   r    )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r*   r0   Ú__hash__r   r7   rE   rI   rL   rQ   rW   rU   r   rb   Ú__static_attributes__r4   r2   r   r	   r	      sa   † ñö
-ô,)ð €HàÛ/ó Ø/àÛ4ó Ø4ô	ô ôô
öôôô÷%r2   r	   c                óÎ   •  [         R                  " U 5      u  p[        5       nU Vs/ s H  oDR	                  5       PM     snUl        Xl        X24$ ! [         a     gf = fs  snf )N)Néÿÿÿÿ)r#   Ú
findsourceÚ	Exceptionr	   r   r   r   )r'   ÚsourcelinesrV   rN   rR   s        r   rr   rr   }   sc   € ðÜ%×0Ò0°Ó5Ñˆô ‹X€FÙ.9Ó:ªk d—K‘K–M©kÑ:€F„LØ"ÔØˆ>Ðøô ó Ùðüò ;s   ‚A ¨A"Á
AÁAc                óÎ   •  U R                   $ ! [         a     Of = fU(       a3  [        U SS5      nU(       a  [        U [        5      (       d
  [        USS9$ [        SU < 35      e)z&Return code object for given function.Ú__call__NF)Útrycallzcould not get code object for )Ú__code__ÚAttributeErrorÚgetattrr   Útyper"   r%   )r'   rw   Úcalls      r   r"   r"   ˆ   sc   € ðØ�|‰|ÐøÜó ÙðúæÜ�s˜J¨Ó-ˆÞœ
 3¬×-Ñ-Ü˜d¨EÑ2Ð2Ü
Ð4°S±GÐ<Ó
=Ð=s   ‚ Ž
šc                óh   • [         R                  " SR                  U 5      5      R                  5       $ r`   )ÚtextwrapÚdedentra   Ú
splitlines)r   s    r   r   r   •   s#   € Ü�?Š?˜4Ÿ9™9 UÓ+Ó,×7Ñ7Ó9Ð9r2   c                óÆ  • / n[         R                  " U5       GH  n[        U[         R                  [         R                  -  5      (       d  M6  [        U[         R
                  [         R                  -  [         R                  -  5      (       a1  UR                   H!  nUR                  UR                  S-
  5        M#     UR                  UR                  S-
  5        S H<  n[        X5S 5      nU(       d  M  UR                  US   R                  S-
  S-
  5        M>     GM     UR                  5         [        X 5      nX'S-
     nU[        U5      :¼  a  S n	X‰4$ X'   n	X‰4$ )Nr;   )Ú	finalbodyÚorelser   )ÚastÚwalkr   ÚstmtÚExceptHandlerÚClassDefÚFunctionDefÚAsyncFunctionDefÚdecorator_listÚappendrV   rz   Úsortr   rH   )
rV   ÚnodeÚvaluesr   ÚdÚnameÚvalÚinsert_indexr?   rM   s
             r   Úget_statement_startend2r”   ™   s  € ð €FÜ�XŠX�d�^ˆÜ�aœŸ™¤C×$5Ñ$5Ñ5×6Ó6ä˜!œSŸ\™\¬C¯O©OÑ;¼c×>RÑ>RÑR×SÑSØ×)Ô)�AØ—M‘M !§(¡(¨Q¡,Ö/ñ *à�M‰M˜!Ÿ(™( Q™,Ô'Û/�Ü-4°Q¸dÓ-C�ß�3à—M‘M # a¡&§-¡-°!Ñ"3°aÑ"7Ö8ô	 0ñ ð ‡K�K„MÜ Ó/€LØ !Ñ#Ñ$€EØ”s˜6“{Ó"Øˆð ˆ:Ðð Ñ"ˆØˆ:Ðr2   c                ó˜  ^
• UcW  [        U5      n[        R                  " 5          [        R                  " S5        [        R
                  " USS5      nS S S 5        [        X5      u  pVUc  [        UR                  5      nXeS-   :”  aŸ  [        R                  " 5       n[        UR                  U   5      =(       a     UR                  U   S   R                  5       Ul        S UR                  XV  5       m
 [        R                  " U
4S j5       H  nUR                   " U6   M     U(       aM  UR                  US-
     R+                  5       n	U	R-                  S5      (       d  U	(       d  US-  nOO	U(       a  MM  X5U4$ ! , (       d  f       GN3= f! [        R"                  [$        4 a    UR&                  U-   n N•[(         a     N f = f)	NÚignorerN   Úexecr;   r   c              3  ó*   #   • U  H	  oS -   v •  M     g7fr   r4   r   s     r   r   Ú(getstatementrange_ast.<locals>.<genexpr>Ñ   s   é € Ð:Ò"9˜Q�4ŽxÒ"9ùs   ‚c                 ó   >• [        T 5      $ r-   )Únext)Úits   €r   Ú<lambda>Ú'getstatementrange_ast.<locals>.<lambda>Ó   s	   ø€ ¼¸R¼r2   Ú#)r    ÚwarningsÚcatch_warningsÚsimplefilterr„   Úparser”   rH   r   r#   ÚBlockFinderrg   ÚisspaceÚstartedÚtokenizeÚgenerate_tokensÚ
tokeneaterÚ
EndOfBlockÚIndentationErrorÚlastrs   ÚlstripÚ
startswith)rV   rN   Ú	assertionÚastnodeÚcontentr?   rM   Úblock_finderÚtokrR   rœ   s             @r   rZ   rZ   ³   sŠ  ø€ ð �Ü�f“+ˆô ×$Ò$Õ&Ü×!Ò! (Ô+Ü—i’i ¨°6Ó:ˆG÷ 'ô )¨Ó9�J€Eð
 �{Ü�&—,‘,Óˆà
�Q‰Yƒô ×*Ò*Ó,ˆô �—‘˜eÑ$Ó%×J¨&¯,©,°uÑ*=¸aÑ*@×*HÑ*HÓ*Jð 	Ôñ ; &§,¡,¨uÑ"9Ó:ˆð	Ü×/Ò/Ô0@ÖA�Ø×'Ò'¨Ó-ñ Bö Ø�|‰|˜C !™GÑ$×+Ñ+Ó-ˆØ�?‰?˜3×Ñ¦tØ�1‰H‰Cà÷ ˆ#ð ˜3ÐÐ÷I 'Ö&ûô0 ×"Ñ"Ô$4Ð5ó 	,Ø×#Ñ# eÑ+ŠCÜó 	Ùð	ús#   ¥/F Ã80F Æ 
FÆ)G	Æ=	G	ÇG	)re   ztuple[Source | None, int])T)r'   rd   rw   rg   re   ztypes.CodeType)r   zIterable[str]re   z	list[str])rV   r<   rŽ   zast.ASTre   ztuple[int, int | None])FN)
rV   r<   rN   r	   r¯   rg   r°   zast.AST | Nonere   ztuple[ast.AST, int, int])Ú
__future__r   r„   Úbisectr   Úcollections.abcr   r   r#   r~   r§   ÚtypesÚtypingr   r    r	   rr   r"   r   r”   rZ   r4   r2   r   Ú<module>r¹      s‚   ðå "ã 
Ý Ý $Ý $Û Û Û Û Ý Û ÷e%ñ e%ôZö
>ô:ôð: Ø"ð	.Øð.àð.ð ð.ð ð	.ð
 ö.r2   