Ë
    ¬;jm6  ã                   ó   — 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	m
Z
 d dlmZ d dlmZmZ dZe
d	j#                  «       z   Zd
„ Zd„ Zd„ Z	 dd„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z d„ Z!d„ Z"d„ Z#d„ Z$d„ Z%y)é    )Ú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                 óØ   — t        |||«      }t        j                  d|«       t        |«      \  }}|st	        |«      ‚|dz   t        |«      z   }	|t        |||	|«      i}
t        | |
«      S )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              úm/workspace/moltex-experiments/.pixi/envs/default/lib/python3.12/site-packages/jedi/api/refactoring/extract.pyÚextract_variabler"      st   € Ü˜ S¨)Ó4€EÜ	‡I�IÐ$ eÔ,ä6°uÓ=Ñ€M�7ÙÜ˜wÓ'Ð'à˜E‘\Ô$?ÀÓ$FÑF€NØ ¤(¨5°$¸ÈÓ"LÐMÐÜ�Ð(<Ó=Ð=ó    c                 ó|   — t        d„ | D «       «      ry| d   j                  t        vrdd| d   j                  z  fS y)z8
    Returns a tuple (is_expression, error_string).
    c              3   ó^   K  — | ]%  }|j                   d k(  xr |j                  «       –— Œ' y­w)r   N)ÚtypeÚis_definition)Ú.0Únodes     r!   Ú	<genexpr>z,_is_expression_with_error.<locals>.<genexpr>#   s+   è ø€ Ð
JÁE¸Dˆ4�9‰9˜ÑÒ7 4×#5Ñ#5Ó#7Ó7ÁEùs   ‚+-)Fz,Cannot extract a name that defines somethingr   FzCannot extract a "%s")TÚ )Úanyr&   Ú_VARIABLE_EXCTRACTABLE©r   s    r!   r   r      sB   € ô Ñ
JÁEÓ
JÔJØDàˆQ�x‡}�}Ô2Ñ2ØÐ-°°a±·±Ñ=Ð=Ð=Ør#   c                 óž  — | j                  |d¬«      }|€Á|j                  dk(  r#|j                  «       }|�|j                  |k(  r|}t	        |«      r|j
                  }|j
                  j                  dk(  r|j
                  j
                  }|j
                  j                  t        v r)|j
                  }|j
                  j                  t        v rŒ)|g}nÇ|j                  |k(  r|j                  «       }|�|}t	        |«      r|j
                  }| j                  |d¬«      }|j                  |kD  r|j                  «       }|€t        d«      ‚|}|j                  |j                  k  r&|j
                  }|j                  |j                  k  rŒ&t        |||«      }t        |«      dk(  r!|j                  dv r|d   j                  d   gS |S )	zd
    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Ø#×*Ñ*ˆJà×Ñ×!Ñ! YÒ.Ø#×*Ñ*×1Ñ1ˆJØ×Ñ×$Ñ$Ô(8Ñ8Ø#×*Ñ*ˆJð ×Ñ×$Ñ$Ô(8Ò8ð �‰ð ×Ñ Ò$Ø"×0Ñ0Ó2ˆIØÐ$Ø&�
ô & jÔ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°+¸sÀIÓNˆô
 ˆ5ƒz�Q‚˜:Ÿ?™?Ð.KÑKØ�a‘×!Ñ! !Ñ$Ð%Ð%Ø€Lr#   Nc                 óº  — t        | d   «      }|€|j                  «       }| d   j                  «       }t        |j                  d¬«      }||u r|�||d d t	        ||d   «      dz   g|dd dj                  |«      }	i }
||u r|	|z   |
| d   <   n=|€|j                  }n|t        | d   «      z   }||z   |
| d   <   |	|j                  z   |
|<   | dd  D ]  }d|
|<   Œ	 |
S )Nr   T©ÚkeependséÿÿÿÿÚ
r+   r3   )Ú_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ØÐ,Ñ,ØÐ'à)ˆE�#�2ˆJÜ  ¨E°"©IÓ6¸Ñ=Ð>€Eˆ"ˆR€LØ—w‘w˜u“~Ðà€OØÐ,Ñ,Ø$4Ð7MÑ$Mˆ˜˜a™Ò!àÐ#Ø×&Ñ&‰Aà Ô#3°E¸!±HÓ#=Ñ=ˆAØ$%Ð(>Ñ$>ˆ˜˜a™Ñ!Ø.>ÐAS×AYÑAYÑ.YˆÐ*Ñ+à�a�b“	ˆØ "ˆ˜Òð àÐr#   c                 óD   — dj                  d„ t        | «      D «       «      S )Nr+   c              3   óL   K  — | ]  \  }}|j                  |d k7  ¬«      –— Œ y­w)r   ©Úinclude_prefixN©Úget_code)r(   ÚiÚns      r!   r*   z._expression_nodes_to_string.<locals>.<genexpr>ƒ   s&   è ø€ ÐRÑAQ¹¸¸A�1—:‘:¨Q°!©V�:×4ÑAQùs   ‚"$)rL   Ú	enumerater.   s    r!   r   r   ‚   s   € Ø�7‰7ÑRÄÈ5ÔAQÓRÓRÐRr#   c                 ó¼   — | d   }t        |j                  «       |d   dz
  «      \  }}||j                  d¬«      z   dj                  d„ | dd  D «       «      z   }||fS )Nr   r3   Fr[   r+   c              3   ó<   K  — | ]  }|j                  «       –— Œ y ­w)Nr]   )r(   r`   s     r!   r*   z)_suite_nodes_to_string.<locals>.<genexpr>Š   s   è ø€ Ð2©	 1�!—*‘*—,©	ùs   ‚)Ú_split_prefix_atrJ   r^   rL   )r   r   r`   rK   Úpart_of_codeÚcodes         r!   Ú_suite_nodes_to_stringrg   †   si   € Øˆa‰€AÜ+¨A×,<Ñ,<Ó,>ÀÀAÁÈÁ
ÓKÑ€FˆLØ˜!Ÿ*™*°E˜*Ó:Ñ:Ø
�'‰'Ñ2¨¨a¨b©	Ó2Ó
2ñ3€Dà�4ˆ<Ðr#   c                 ó¨   — | j                   d   |z
  }t        | j                  d¬«      }dj                  |d|  «      dj                  || d «      fS )zU
    Returns a tuple of the leaf's prefix, split at the until_line
    position.
    r   TrE   r+   N)r8   r   rK   rL   )ÚleafÚ
until_lineÚsecond_line_countrU   s       r!   rd   rd   Ž   s]   € ð Ÿ™ qÑ)¨JÑ6ÐÜ˜Ÿ™¨dÔ3€EØ�7‰7�5Ð,Ð,Ð,Ð-Ó.°·±¸Ð?PÐ>PÐ>QÐ8RÓ0SÐSÐSr#   c                 óN   — t        | j                  «       j                  «      d   S )NrG   )r   rJ   rK   ©r)   s    r!   rM   rM   ™   s!   € Ü�t×*Ñ*Ó,×3Ñ3Ó4°RÑ8Ð8r#   c                 óv   — | �-| j                   j                  t        v r| S | j                   } | �Œ-t        d«      ‚)z8
    Returns the statement where a node is defined.
    zWe should never even get here)r:   r&   Ú_DEFINITION_SCOPESÚNotImplementedErrorrm   s    r!   rI   rI   �   sA   € ð Ð
Ø�;‰;×ÑÔ1Ñ1ØˆKØ�{‰{ˆð Ñ
ô Ð=Ó
>Ð>r#   c                 óü  — | j                   }|dv }|t        v s|rà| j                  }t        |«      D ],  \  }}|j                  |kD  sŒ|}|j                   dk(  r|dz  } n t        t        t        |«      «      «      D ]H  \  }}|j                  |k  sŒ|}	|j                   dk(  r|	dz  }	||d D ]  }
t        |
«      r|	dz  }	Œ n  n |	dz    }|s&t        |d   ||«      |dd t        |d   ||«      |dd |S | gS )z~
    This function makes it so for `1 * 2 + 3` you can extract `2 + 3`, even
    though it is not part of the expression.
    r   r1   r3   Nr   rG   )
r&   r   r?   ra   r;   ÚreversedÚlistr8   r9   r=   )rC   r   r   ÚtypÚis_suite_partr   r_   r`   Ústart_indexÚ	end_indexÚn2s              r!   r=   r=   ¨   s.  € ð
 ×
Ñ
€CØÐ2Ð2€MØ
ÔÑ¡-Ø×$Ñ$ˆÜ˜eÖ$‰DˆAˆqØ�y‰y˜3‹Ø�Ø—6‘6˜ZÒ'Ø 1Ñ$�KÙð %ô œT¤)¨EÓ"2Ó3Ö4‰DˆAˆqØ�{‰{˜YÓ&Ø�	Ø—6‘6˜ZÒ'Ø ‘N�Ið    ›)�BÜ1°"Ô5Ø! Q™™	áð	 $ñ
 ð 5ð �k )¨a¡-Ð0ˆÙÜ:¸5À¹8ÀSÈ)ÓTˆE�!�AˆJÜ:¸5À¹9ÀcÈ9ÓUˆE�"�#ˆJØˆØˆ=Ðr#   c                 ób   — | j                   dk(  xs | j                   dk(  xr | j                  dvS )Nr1   Úkeyword)ÚNoneÚTrueÚFalse)r&   rN   rm   s    r!   r9   r9   Ì   s5   € Ø�9‰9˜
Ñ"ò RØ�9‰9˜	Ñ!ÒQ d§j¡jÐ8QÐ&QðRr#   c           	      óR  — t        |j                  ||«      }t        |«      sJ ‚t        |«      \  }}|j	                  |d   «      }	|	j                  «       }
t        t        ||	|«      «      \  }}|	j                  «       rd }n&t        |	j                  |
«      }|j                  «       }|rdt        |«      z   dz   }d }d}n¯t        |d   «      }|s=|r9t        t        |	|d   j                  |d   j                  |«      «      xs |d   gng }t!        ||«      \  }}|d   j#                  «       }t%        ||d   «      \  }}||z  }t'        |«      }|sdj)                  |«      }|d|z   dz   z  }t+        |r|d d n|«       d}d }|
rzt-        |	j                  «      sM|	j/                  «       j1                  «       }t        |«      r$|d   j2                  }|D �cg c]
  }||k7  sŒ	|‘Œ }}t5        |	j                  «      rd}n|dz  }|›d	|›d
dj)                  |€|n|g|z   «      ›dt7        |«      ›�}|€dn|dz   |z   ›d
dj)                  |«      ›d�}|r|}n|r	d|z   dz   }ndz   |z   dz   }t9        ||||||«      }|sj:                  z   ||<   ||i}t=        | |«      S c c}w )Nr   zreturn rH   FrG   z, r+   z@classmethod
zdef Ú(z):
Ú.Ú)r   )r   Ú	tree_noder>   r   Úcreate_contextÚis_bound_methodrs   Ú_find_inputs_and_outputsÚ	is_moduleÚ_get_code_insertion_noderJ   r   Ú_is_node_ending_return_stmtÚ_find_needed_output_variablesr:   r;   rg   r7   rd   r   rL   Ú_check_for_non_extractablesr   Ú	get_valueÚget_param_namesÚstring_namer
   r	   r   rN   r   )r   r   Úmodule_contextr   r   r   r   r   Ú_Úcontextr„   ÚparamsÚreturn_variablesrQ   r)   Ú
code_blockrR   Úhas_ending_return_stmtÚ
after_leafÚfirstÚsecondÚoutput_var_strÚ	decoratorÚ
self_paramÚfunction_param_namesrX   Úfunction_codeÚfunction_callÚreplacementrW   r    s                                  r!   Úextract_functionrŸ   Ñ   s  € Ü˜×0Ñ0°#°yÓA€EÜˆuŒ:Ðˆ:ä0°Ó7Ñ€M�1Ø×+Ñ+¨E°!©HÓ5€GØ×-Ñ-Ó/€OÜ#Ô$<¸^ÈWÐV[Ó$\Ó]Ñ€FÐð ×ÑÔØ!Ñä'¨×(9Ñ(9¸?ÓKˆØ!×0Ñ0Ó2ÐÙØÔ!<¸UÓ!CÑCÀdÑJˆ
ØÐØ!&Ñä!<¸UÀ2¹YÓ!GÐÙ%ñ -=ô  $Ô$AØØ�a‘—‘Ø�b‘	×!Ñ!Ø ó	%ó  ò  )ð
 $ BÑ'Ñ(À"ð ô (>¸eÀSÓ'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Ø(‰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   Ç
J$Ç$J$c                 óÈ   — | D ]  }	 |j                   }t        |«       Œ y # t        $ r7 |j                  dk(  rt	        d«      ‚|j                  dk(  rt	        d«      ‚Y Œ]w xY w)NÚreturnz:Can only extract return statements if they are at the end.Úyieldz Cannot extract yield statements.)r?   rŠ   ÚAttributeErrorrN   r   )r   r`   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!c                 óÚ   — |D ]f  }|j                   dk(  s|j                  j                  «       rŒ-|j                  «       | ur y|j                  �||j                  cxk  r|k  rŒc y  y y)NÚparamTF)Úapi_typeÚparent_contextr†   Úget_root_contextr8   )rŽ   Únamesr–   Úlastr   s        r!   Ú_is_name_inputr«   6  sh   € ÛˆØ�=‰=˜GÒ#¨4×+>Ñ+>×+HÑ+HÕ+JØ×$Ñ$Ó&¨nÑ<ÙØ�~‰~Ð%¨e°t·~±~Ô.LÈÓ.LÙð /MÙð ð r#   c                 ó~  — |d   j                   }|d   j                  }g }g }t        |«      D ]Š  }|j                  «       r!||vsŒ|j	                  |j
                  «       Œ4|j
                  |vsŒC|j                  ||j                   «      }|rt        | |||«      sŒp|j	                  |j
                  «       ŒŒ ||fS )Nr   rG   )r8   r;   Ú_find_non_global_namesr'   ÚappendrN   Úgotor«   )	rŽ   r�   r   r–   rª   ÚinputsÚoutputsr   Úname_definitionss	            r!   r…   r…   @  s­   € Ø�!‰H×Ñ€EØ�‰9×Ñ€Dà€FØ€GÜ& uÖ-ˆØ×ÑÔØ˜7Ò"Ø—‘˜tŸz™zÕ*à�z‰z Ò'Ø#*§<¡<°°d·n±nÓ#EÐ Ù'Ü)¨.Ð:JÈEÐSWÕXØ—M‘M $§*¡*Õ-ð .ð �7ˆ?Ðr#   c              #   óæ   K  — | D ]D  }	 |j                   }|j                  dk(  r|j                   d   dk(  rŒ2t        |«      E d {  –—†  ŒF y 7 Œ# t        $ r |j                  dk(  r|–— Y Œhw xY w­w)Nr2   r   r€   r   )r?   r&   r­   r£   )r   r)   r?   s      r!   r­   r­   U  st   è ø€ Ûˆð
	8Ø—}‘}ˆHð �y‰y˜IÒ%¨$¯-©-¸Ñ*:¸cÒ*AØä-¨hÓ7×7Ñ7ñ ð 8ùô ò 	Ø�y‰y˜FÒ"Ø’
ùð	üs3   ‚A1‰A•0A1ÁAÁA1ÁA.Á+A1Á-A.Á.A1c                 ó  — |rt        | «      r?| j                  j                  dk7  r&| j                  } | j                  j                  dk7  rŒ&| j                  j                  dv r%| j                  } | j                  j                  dv rŒ%| S )Nr   )Úasync_funcdefÚ	decoratedÚ
async_stmt)r   r:   r&   )r)   r„   s     r!   r‡   r‡   d  st   € ÙÔ6°tÔ<Ø�k‰k×Ñ ,Ò.Ø—;‘;ˆDð �k‰k×Ñ ,Ó.ð �+‰+×
Ñ
ÐJÑ
JØ�{‰{ˆð �+‰+×
Ñ
ÐJÒ
Jà€Kr#   c              #   ó  K  — |j                   D ]w  }|j                  |k  rŒt        |«      }t        |g«      D ]K  }|j	                  «       rŒ|j
                  |v sŒ#|j                  |j
                  «       |j
                  –— ŒM Œy y­w)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?   r8   Úsetr­   r'   rN   Úremove)r�   Úsearch_nodeÚat_least_posr’   r)   r   s         r!   r‰   r‰   n  sx   è ø€ ð
 ×$Ô$ˆØ�>‰>˜LÒ(ØäÐ/Ó0ÐÜ*¨D¨6Ö2ˆDØ×%Ñ%Õ'¨D¯J©JÐ:JÒ,JØ ×'Ñ'¨¯
©
Ô3Ø—j‘jÓ ñ 3ñ %ùs   ‚A
B
ÁB
Á.B
c                 ó^   — | j                   }|dk(  rt        | j                  d   «      S |dk(  S )NÚsimple_stmtr   r4   )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   ro   Úsplitr-   r"   r   r   r   r   rg   rd   rM   rI   r=   r9   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#   