ó
    Ð]jm6  ã                   ó  • S SK Jr  S SKJr  S SKJr  S SKJr  S SKJ	r	J
r
  S SKJr  S SKJrJr  Sr\
S	R#                  5       -   rS
 rS rS r SS jrS rS rS rS rS rS rS rS rS rS r S r!S r"S r#S r$S r%g)é    )Údedent)Úsplit_lines)Údebug)ÚRefactoringError)ÚRefactoringÚEXPRESSION_PARTS)Úindent_block)Úfunction_is_classmethodÚfunction_is_staticmethod©ÚsuiteÚ
file_inputz_atom testlist_star_expr testlist test lambdef lambdef_nocond keyword name number string fstringc                 óÚ   • [        X$U5      n[        R                  " SU5        [        U5      u  pxU(       d  [	        U5      eUS-   [        U5      -   n	U[        XcX”5      0n
[        X
5      $ )NzExtracting nodes: %sú = )Ú_find_nodesr   ÚdbgÚ_is_expression_with_errorr   Ú_expression_nodes_to_stringÚ_replacer   )Úinference_stateÚpathÚmodule_nodeÚnameÚposÚ	until_posÚnodesÚis_expressionÚmessageÚgenerated_codeÚfile_to_node_changess              ÚY/home/mande/repo/quber/.venv/lib/python3.13/site-packages/jedi/api/refactoring/extract.pyÚextract_variabler"      si   € Ü˜¨)Ó4€EÜ	‡I‚IÐ$ eÔ,ä6°uÓ=Ñ€MÞÜ˜wÓ'Ð'à˜E‘\Ô$?ÀÓ$FÑF€NØ ¤(¨5¸Ó"LÐMÐÜ�Ó=Ð=ó    c                 óŠ   • [        S U  5       5      (       a  gU S   R                  [        ;  a  SSU S   R                  -  4$ g)z0
Returns a tuple (is_expression, error_string).
c              3   ól   #   • U  H*  oR                   S :H  =(       a    UR                  5       v •  M,     g7f)r   N)ÚtypeÚis_definition)Ú.0Únodes     r!   Ú	<genexpr>Ú,_is_expression_with_error.<locals>.<genexpr>#   s(   é € Ð
JÂE¸D�9‰9˜Ñ×7 4×#5Ñ#5Ó#7Ô7ÂEùs   ‚24)Fz,Cannot extract a name that defines somethingr   FzCannot extract a "%s")TÚ )Úanyr&   Ú_VARIABLE_EXCTRACTABLE©r   s    r!   r   r      sE   € ô Ñ
JÁEÓ
J×JÑJØDàˆQ�x‡}�}Ô2Ó2ØÐ-°°a±·±Ñ=Ð=Ð=Ør#   c                 óÌ  • U R                  USS9nUcÏ  UR                  S:X  a%  UR                  5       nUb  UR                  U:X  a  Un[	        U5      (       a  UR
                  nUR
                  R                  S:X  a  UR
                  R
                  nUR
                  R                  [        ;   a,  UR
                  nUR
                  R                  [        ;   a  M,  U/nOÏUR                  U:X  a  UR                  5       nUb  Un[	        U5      (       a  UR
                  nU R                  USS9nUR                  U:”  a  UR                  5       nUc  [        S5      eUnUR                  UR                  :  a(  UR
                  nUR                  UR                  :  a  M(  [        XqU5      n[        U5      S:X  a#  UR                  S;   a  US   R                  S   /$ U$ )	zX
Looks up a module and tries to find the appropriate amount of nodes that
are in there.
T)Úinclude_prefixesÚoperatorÚtrailerz!Cannot extract anything from thaté   )Úreturn_stmtÚ
yield_exprr   )Úget_leaf_for_positionr&   Úget_next_leafÚ	start_posÚ_is_not_extractable_syntaxÚparentr   Úend_posÚget_previous_leafr   Ú!_remove_unwanted_expression_nodesÚlenÚchildren)r   r   r   Ú
start_nodeÚ	next_leafr   Úend_leafÚparent_nodes           r!   r   r   +   sÑ  € ð
 ×2Ñ2°3ÈÐ2ÐN€JàÑØ�?‰?˜jÓ(Ø"×0Ñ0Ó2ˆIØÑ$¨×)<Ñ)<ÀÓ)CØ&�
ä% j×1Ñ1Ø#×*Ñ*ˆJà×Ñ×!Ñ! YÓ.Ø#×*Ñ*×1Ñ1ˆJØ×Ñ×$Ñ$Ô(8Ó8Ø#×*Ñ*ˆJð ×Ñ×$Ñ$Ô(8Õ8ð �‰ð ×Ñ Ó$Ø"×0Ñ0Ó2ˆIØÑ$Ø&�
ô & j×1Ñ1Ø#×*Ñ*ˆJð ×4Ñ4°YÐQUÐ4ÐVˆØ×Ñ 	Ó)Ø×1Ñ1Ó3ˆHØÑÜ&Ð'JÓKÐKà ˆØ×!Ñ! H×$4Ñ$4Ó4Ø%×,Ñ,ˆKð ×!Ñ! H×$4Ñ$4Õ4ô 2°+ÀIÓNˆô
 ˆ5ƒz�Qƒ˜:Ÿ?™?Ð.KÓKØ�a‘×!Ñ! !Ñ$Ð%Ð%Ø€Lr#   Nc                 ó¬  • [        U S   5      nUc  UR                  5       nU S   R                  5       n[        UR                  SS9nXtL a  Ub  XXS S& [	        X(S   5      S-   /USS& SR                  U5      n	0 n
XtL a
  X‘-   X S   '   O:Uc  UR                  nOU[        U S   5      -   nX±-   X S   '   X”R                  -   X¤'   U SS   H  nSX¬'   M	     U
$ )Nr   T©ÚkeependséÿÿÿÿÚ
r,   r4   )Ú_get_parent_definitionÚget_first_leafr   Úprefixr	   ÚjoinÚ_get_indentationÚvalue)r   Úexpression_replacementÚ	extractedr   Úinsert_before_leafÚremaining_prefixÚ
definitionÚfirst_node_leafÚlinesÚextracted_prefixÚreplacement_dctÚpr)   s                r!   r   r   a   s  € ô (¨¨a©Ó1€JØÑ!Ø'×6Ñ6Ó8ÐØ˜A‘h×-Ñ-Ó/€OäÐ*×1Ñ1¸DÑA€EØÒ,ØÑ'à)�#�2ˆJÜ  °"©IÓ6¸Ñ=Ð>€Eˆ"ˆR€LØ—w‘w˜u“~Ðà€OØÒ,Ø$4Ñ$Mˆ˜a™Ò!àÑ#Ø×&Ñ&‰Aà Ô#3°E¸!±HÓ#=Ñ=ˆAØ$%Ñ$>ˆ˜a™Ñ!Ø.>×AYÑAYÑ.YˆÑ+à�a�b“	ˆØ "ˆÓñ àÐr#   c                 óD   • SR                  S [        U 5       5       5      $ )Nr,   c              3   óJ   #   • U  H  u  pUR                  US :g  S9v •  M     g7f)r   ©Úinclude_prefixN©Úget_code)r(   ÚiÚns      r!   r*   Ú._expression_nodes_to_string.<locals>.<genexpr>ƒ   s#   é € ÐRÒAQ¹¸�1—:‘:¨Q°!©V�:Õ4ÒAQùs   ‚!#)rM   Ú	enumerater/   s    r!   r   r   ‚   s   € Ø�7‰7ÑRÄÈ5ÔAQÓRÓRÐRr#   c                 ó°   • U S   n[        UR                  5       US   S-
  5      u  p4XBR                  SS9-   SR                  S U SS   5       5      -   nX54$ )Nr   r4   Fr\   r,   c              3   ó@   #   • U  H  oR                  5       v •  M     g 7f)Nr^   )r(   ra   s     r!   r*   Ú)_suite_nodes_to_string.<locals>.<genexpr>Š   s   é € Ð2ª	 1—*‘*—,�,ª	ùs   ‚)Ú_split_prefix_atrK   r_   rM   )r   r   ra   rL   Úpart_of_codeÚcodes         r!   Ú_suite_nodes_to_stringrj   †   sc   € Øˆa‰€AÜ+¨A×,<Ñ,<Ó,>ÀÀAÁÈÁ
ÓKÑ€FØŸ*™*°E˜*Ð:Ñ:Ø
�'‰'Ñ2¨¨a¨b©	Ó2Ó
2ñ3€Dàˆ<Ðr#   c                 ó    • U R                   S   U-
  n[        U R                  SS9nSR                  USU*  5      SR                  X2* S 5      4$ )zI
Returns a tuple of the leaf's prefix, split at the until_line
position.
r   TrF   r,   N)r9   r   rL   rM   )ÚleafÚ
until_lineÚsecond_line_countrV   s       r!   rg   rg   Ž   sZ   € ð Ÿ™ qÑ)¨JÑ6ÐÜ˜Ÿ™¨dÑ3€EØ�7‰7�5Ð,Ð,Ð,Ð-Ó.°·±¸Ð>PÐ>QÐ8RÓ0SÐSÐSr#   c                 óN   • [        U R                  5       R                  5      S   $ )NrH   )r   rK   rL   ©r)   s    r!   rN   rN   ™   s!   € Ü�t×*Ñ*Ó,×3Ñ3Ó4°RÑ8Ð8r#   c                 ó€   • U b1  U R                   R                  [        ;   a  U $ U R                   n U b  M1  [        S5      e)z0
Returns the statement where a node is defined.
zWe should never even get here)r;   r&   Ú_DEFINITION_SCOPESÚNotImplementedErrorrp   s    r!   rJ   rJ   �   sA   € ð Ñ
Ø�;‰;×ÑÔ1Ó1ØˆKØ�{‰{ˆð Ó
ô Ð=Ó
>Ð>r#   c                 ó*  • U R                   nUS;   nU[        ;   d  U(       aï  U R                  n[        U5       H.  u  pgUR                  U:”  d  M  UnUR                   S:X  a  US-  n  O   [        [        [        U5      5      5       HP  u  pgUR                  U:  d  M  Un	UR                   S:X  a  U	S-  n	XVS  H  n
[        U
5      (       a  U	S-  n	M    O     O   UWW	S-    nU(       d$  [        US   X5      USS& [        US   X5      USS& U$ U /$ )zr
This function makes it so for `1 * 2 + 3` you can extract `2 + 3`, even
though it is not part of the expression.
r   r2   r4   Nr   rH   )
r&   r   r@   rc   r<   ÚreversedÚlistr9   r:   r>   )rD   r   r   ÚtypÚis_suite_partr   r`   ra   Ústart_indexÚ	end_indexÚn2s              r!   r>   r>   ¨   s'  € ð
 ×
Ñ
€CØÐ2Ñ2€MØ
ÔÓ¦-Ø×$Ñ$ˆÜ˜eÖ$‰DˆAØ�y‰y˜3�Ø�Ø—6‘6˜ZÓ'Ø 1Ñ$�KÙñ %ô œT¤)¨EÓ"2Ó3Ö4‰DˆAØ�{‰{˜YÕ&Ø�	Ø—6‘6˜ZÓ'Ø ‘N�Ið   ›)�BÜ1°"×5Ñ5Ø! Q™š	áñ	 $ñ
 ñ 5ð �k )¨a¡-Ð0ˆÞÜ:¸5À¹8ÀSÓTˆE�!�AˆJÜ:¸5À¹9ÀcÓUˆE�"�#ˆJØˆØˆ=Ðr#   c                 óx   • U R                   S:H  =(       d%    U R                   S:H  =(       a    U R                  S;  $ )Nr2   Úkeyword)ÚNoneÚTrueÚFalse)r&   rO   rp   s    r!   r:   r:   Ì   s5   € Ø�9‰9˜
Ñ"÷ RØ�9‰9˜	Ñ!×Q d§j¡jÐ8QÑ&QðRr#   c           	      óø  • [        UR                  XE5      n[        U5      (       d   e[        U5      u  pxUR	                  US   5      n	U	R                  5       n
[        [        X)U5      5      u  p¼U	R                  5       (       a  S nO&[        U	R                  U
5      nUR                  5       nU(       a  S[        U5      -   S-   nS nSnOÂ[        US   5      nU(       dG  U(       a>  [        [        U	US   R                  US   R                  U5      5      =(       d    US   /O/ n[!        Xd5      u  nnUS   R#                  5       n[%        UUS   5      u  nnUU-  n['        U5      nU(       d  SR)                  U5      nUSU-   S-   -  n[+        U(       a  US S OU5        SnS nU
(       aŽ  [-        U	R                  5      (       dW  U	R/                  5       R1                  5       n[        U5      (       a)  US   R2                  nU Vs/ s H  nUU:w  d  M  UPM     nn[5        U	R                  5      (       a  SnOUS-  nU< S	U< S
SR)                  Uc  UOU/U-   5      < S[7        U5      < 3nUc  SOUS-   U-   < S
SR)                  U5      < S3nU(       a  UnOU(       a	  SU-   S-   nOWS-   U-   S-   n[9        UUUUUU5      nU(       d  WWR:                  -   UU'   UU0n[=        U U5      $ s  snf )Nr   zreturn rI   FrH   z, r,   z@classmethod
zdef Ú(z):
Ú.Ú)r   )r   Ú	tree_noder?   r   Úcreate_contextÚis_bound_methodrv   Ú_find_inputs_and_outputsÚ	is_moduleÚ_get_code_insertion_noderK   r   Ú_is_node_ending_return_stmtÚ_find_needed_output_variablesr;   r<   rj   r8   rg   r   rM   Ú_check_for_non_extractablesr   Ú	get_valueÚget_param_namesÚstring_namer
   r	   r   rO   r   )r   r   Úmodule_contextr   r   r   r   r   Ú_Úcontextr‡   ÚparamsÚreturn_variablesrR   r)   Ú
code_blockrS   Úhas_ending_return_stmtÚ
after_leafÚfirstÚsecondÚoutput_var_strÚ	decoratorÚ
self_paramÚfunction_param_namesrY   Úfunction_codeÚfunction_callÚreplacementrX   r    s                                  r!   Úextract_functionr¢   Ñ   s  € Ü˜×0Ñ0°#ÓA€EÜˆu�:‰:Ðˆ:ä0°Ó7Ñ€MØ×+Ñ+¨E°!©HÓ5€GØ×-Ñ-Ó/€OÜ#Ô$<¸^ÐV[Ó$\Ó]Ñ€Fð ×Ñ×ÑØ!Ñä'¨×(9Ñ(9¸?ÓKˆØ!×0Ñ0Ó2ÐÞØÔ!<¸UÓ!CÑCÀdÑJˆ
ØÐØ!&Ñä!<¸UÀ2¹YÓ!GÐÞ%ö -=ô  $Ô$AØØ�a‘—‘Ø�b‘	×!Ñ!Ø ó	%ó  ÷  )ð
 $ BÑ'Ð(øÀ"ð ô (>¸eÓ'IÑ$Ð˜*Ø˜2‘Y×,Ñ,Ó.ˆ
Ü(¨°Y¸q±\ÓB‰ˆˆvØ�eÑˆ
ä˜JÓ'ˆ
Þ%Ø!ŸY™YÐ'7Ó8ˆNØ˜) nÑ4°tÑ;Ñ;ˆJô  Ö.D  c r¡
È%ÔPà€IØ€JÞÜ'¨×(9Ñ(9×:Ñ:Ø#*×#4Ñ#4Ó#6×#FÑ#FÓ#HÐ ÜÐ'×(Ñ(Ø1°!Ñ4×@Ñ@�
Ù%+Ó?¢V ¨q°J©Ÿ!¡V�Ð?ä" 7×#4Ñ#4×5Ñ5Ø(ˆIøà�dÑˆ
ó 	ÛØ�	‰	˜JÑ.‘&°Z°LÀ6Ñ4IÖJÜ�ZÕ ð	€Mð Ñ!‰ z°CÑ'7¸4Ô?Ø�	‰	�&Öð€Mö Ø#‰æ!Ø# mÑ3°dÑ:‰Kà(¨5Ñ0°=Ñ@À4ÑGˆKä˜u k°=À#Ø1Ð3CóE€OæØ&,¨z×/?Ñ/?Ñ&?ˆ˜
Ñ#Ø  /Ð2ÐÜ�Ð(<Ó=Ð=ùò? @s   È
K7ÈK7c                 óÔ   • U  H  n UR                   n[        U5        M     g ! [         a:    UR                  S:X  a  [	        S5      eUR                  S:X  a  [	        S5      e Mc  f = f)NÚreturnz:Can only extract return statements if they are at the end.Úyieldz Cannot extract yield statements.)r@   r�   ÚAttributeErrorrO   r   )r   ra   r@   s      r!   r�   r�   (  sr   € Ûˆð		2Ø—z‘zˆHô (¨Ö1ò øô ó 	KØ�w‰w˜(Ó"Ü&ØPóRð Rà�w‰w˜'Ó!Ü&Ð'IÓJÐJò "ð		Kús   ‡#£A A'Á&A'c                 óô   • U Hr  nUR                   S:X  d!  UR                  R                  5       (       a  M4  UR                  5       U La    gUR                  b  X$R                  s=::  a
  U:  a  Mn     g    g   g)NÚparamTF)Úapi_typeÚparent_contextr‰   Úget_root_contextr9   )r‘   Únamesr™   Úlastr   s        r!   Ú_is_name_inputr®   6  si   € ÛˆØ�=‰=˜GÓ#¨4×+>Ñ+>×+HÑ+H×+JÓ+JØ×$Ñ$Ó&¨nÒ<ÙØ�~‰~Ñ%¨e·~±~Õ.LÈÖ.LÙð /MÙñ ð r#   c                 ó¦  • US   R                   nUS   R                  n/ n/ n[        U5       Hž  nUR                  5       (       a$  Xv;  a  UR	                  UR
                  5        M:  M<  UR
                  U;  d  MN  UR                  XwR                   5      nU(       a  [        XX45      (       d  Mƒ  UR	                  UR
                  5        M      XV4$ )Nr   rH   )r9   r<   Ú_find_non_global_namesr'   ÚappendrO   Úgotor®   )	r‘   r“   r   r™   r­   ÚinputsÚoutputsr   Úname_definitionss	            r!   rˆ   rˆ   @  s®   € Ø�!‰H×Ñ€EØ�‰9×Ñ€Dà€FØ€GÜ& uÖ-ˆØ×Ñ×ÑØÓ"Ø—‘˜tŸz™zÖ*ñ #ð �z‰z Õ'Ø#*§<¡<°·n±nÓ#EÐ Þ'Ü)¨.ÈE×XÓXØ—M‘M $§*¡*Ö-ñ .ð ˆ?Ðr#   c              #   óü   #   • U  HH  n UR                   nUR                  S:X  a  UR                   S   S:X  a  M5  [        U5       S h  v•N   MJ     g  N	! [         a    UR                  S:X  a  Uv •   Mp   Ms  f = f7f)Nr3   r   rƒ   r   )r@   r&   r°   r¦   )r   r)   r@   s      r!   r°   r°   U  sw   é € Ûˆð
	8Ø—}‘}ˆHð �y‰y˜IÓ%¨$¯-©-¸Ñ*:¸cÓ*AÙä-¨hÓ7×7Ò7ò ñ 8øô ó 	Ø�y‰y˜FÓ"Ø•
ò #ð	üs3   ‚A<‰A•3A<ÁAÁ	
A<ÁA9Á2A<Á8A9Á9A<c                 ó<  • U(       a  [        U 5      (       aB  U R                  R                  S:w  a(  U R                  n U R                  R                  S:w  a  M(  U R                  R                  S;   a(  U R                  n U R                  R                  S;   a  M(  U $ )Nr   )Úasync_funcdefÚ	decoratedÚ
async_stmt)r   r;   r&   )r)   r‡   s     r!   rŠ   rŠ   d  sw   € ÞÔ6°t×<Ñ<Ø�k‰k×Ñ ,Ó.Ø—;‘;ˆDð �k‰k×Ñ ,Õ.ð �+‰+×
Ñ
ÐJÓ
JØ�{‰{ˆð �+‰+×
Ñ
ÐJÕ
Jà€Kr#   c              #   ó6  #   • UR                    H…  nUR                  U:  a  M  [        U5      n[        U/5       HU  nUR	                  5       (       a  M  UR
                  U;   d  M,  UR                  UR
                  5        UR
                  v •  MW     M‡     g7f)z�
Searches everything after at_least_pos in a node and checks if any of the
return_variables are used in there and returns those.
N)r@   r9   Úsetr°   r'   rO   Úremove)r“   Úsearch_nodeÚat_least_posr•   r)   r   s         r!   rŒ   rŒ   n  sz   é € ð
 ×$Ô$ˆØ�>‰>˜LÓ(ÙäÐ/Ó0ÐÜ*¨D¨6Ö2ˆDØ×%Ñ%×'Ó'¨D¯J©JÐ:JÕ,JØ ×'Ñ'¨¯
©
Ô3Ø—j‘jÔ ó 3ò %ùs   ‚ABÁBÁ'2Bc                 ó`   • U R                   nUS:X  a  [        U R                  S   5      $ US:H  $ )NÚsimple_stmtr   r5   )r&   r‹   r@   )r)   Úts     r!   r‹   r‹   ~  s2   € Ø�	‰	€AØˆMÓÜ*¨4¯=©=¸Ñ+;Ó<Ð<Ø�ÑÐr#   )NN)&Útextwrapr   Úparsor   Újedir   Újedi.api.exceptionsr   Újedi.api.refactoringr   r   Újedi.commonr	   Újedi.parser_utilsr
   r   rr   Úsplitr.   r"   r   r   r   r   rj   rg   rN   rJ   r>   r:   r¢   r�   r®   rˆ   r°   rŠ   rŒ   r‹   © r#   r!   Ú<module>rÌ      s¥   ðÝ å å Ý 0ß >Ý $ß Oð -Ð Ø)ð*ß+0©5«7ñ3Ð ò

>ò	ò3ðn 8<ôòBSòòTò9ò?ò!òHRò
T>òn2òòò*8òò!ó r#   