ó
    Ð]jk%  ã                   óÆ   • S SK r S SKJr  S SKJrJrJr  S SKJr  S SK	J
r
  S SKJr  SR                  5       r " S S	5      r " S
 S5      rS rS rS rS rS\S\S\4S jrg)é    N©ÚPath)ÚDictÚIterableÚTuple)Úsplit_lines)ÚRefactoringError)ÚImplicitNSNamezmor_test and_test not_test comparison expr xor_expr and_expr shift_expr arith_expr term factor power atom_exprc                   ó2   • \ rS rSrS rS rS rS rS rSr	g)	ÚChangedFileé   c                 ó@   • Xl         X l        X0l        X@l        XPl        g ©N)Ú_inference_stateÚ
_from_pathÚ_to_pathÚ_module_nodeÚ_node_to_str_map)ÚselfÚinference_stateÚ	from_pathÚto_pathÚmodule_nodeÚnode_to_str_maps         ÚZ/home/mande/repo/quber/.venv/lib/python3.13/site-packages/jedi/api/refactoring/__init__.pyÚ__init__ÚChangedFile.__init__   s   € à /ÔØ#ŒØŒØ'ÔØ /Õó    c                 ó¾  • [        U R                  R                  5       SS9n[        U R                  5       SS9nUS   S:w  a  US==   S-  ss'   US   S:w  a  US==   S-  ss'   U R                  R
                  R                  nU R                  c  SnO U R                  R                  U5      nU R                  c  SnO U R                  R                  U5      n[        R                  " X[        U5      [        U5      S9nSR                  U5      R                  S5      $ ! [         a    U R                  n NŒf = f! [         a    U R                  n N|f = f)NT©ÚkeependséÿÿÿÿÚ Ú
)ÚfromfileÚtofileÚ )r   r   Úget_codeÚget_new_coder   ÚprojectÚpathr   Úrelative_toÚ
ValueErrorr   ÚdifflibÚunified_diffÚstrÚjoinÚrstrip)r   Ú	old_linesÚ	new_linesÚproject_pathÚfrom_pÚto_pÚdiffs          r   Úget_diffÚChangedFile.get_diff   sB  € Ü × 1Ñ 1× :Ñ :Ó <ÀtÑLˆ	Ü × 1Ñ 1Ó 3¸dÑCˆ	ð �R‰=˜BÓØ�b‹M˜TÑ!‹MØ�R‰=˜BÓØ�b‹M˜TÑ!‹Mà×,Ñ,×4Ñ4×9Ñ9ˆØ�?‰?Ñ"Ø‰Fð)ØŸ™×4Ñ4°\ÓB�ð �=‰=Ñ Ø‰Dð%Ø—}‘}×0Ñ0°Ó>�ô ×#Ò#ØÜ˜“[Ü�t“9ñ
ˆð �w‰w�t‹}×#Ñ# CÓ(Ð(øô! ó )ØŸ™’ð)ûô ó %Ø—}‘}’ð%ús$   ÂD' ÃE Ä'E Ä?E ÅEÅEc                 óv   • U R                   R                  R                  U R                  U R                  5      $ r   )r   ÚgrammarÚrefactorr   r   ©r   s    r   r)   ÚChangedFile.get_new_codeB   s-   € Ø×$Ñ$×,Ñ,×5Ñ5°d×6GÑ6GÈ×I^ÑI^Ó_Ð_r   c                 óÐ   • U R                   c  [        S5      e[        U R                   SSS9 nUR                  U R	                  5       5        S S S 5        g ! , (       d  f       g = f)Nz5Cannot apply a refactoring on a Script with path=NoneÚwr#   )Únewline)r   r	   ÚopenÚwriter)   )r   Úfs     r   ÚapplyÚChangedFile.applyE   sQ   € Ø�?‰?Ñ"Ü"ØGóð ô �$—/‘/ 3°Ò3°qØ�G‰G�D×%Ñ%Ó'Ô(÷ 4×3Ö3ús   ® AÁ
A%c                 óT   • SU R                   R                  < SU R                  < S3$ )NÚ<z: Ú>)Ú	__class__Ú__name__r   r>   s    r   Ú__repr__ÚChangedFile.__repr__N   s   � Ø!Ÿ^™^×4Ô4°d·o´oÐFÐFr   )r   r   r   r   r   N)
rL   Ú
__module__Ú__qualname__Ú__firstlineno__r   r9   r)   rF   rM   Ú__static_attributes__© r   r   r   r      s   † ò0ò')òR`ò)õGr   r   c                   ó`   • \ rS rSrS
S jrS\\\4   4S jrS\	\
\\4      4S jrS rS rSrg	)ÚRefactoringéR   c                 ó(   • Xl         X0l        X l        g r   )r   Ú_renamesÚ_file_to_node_changes)r   r   Úfile_to_node_changesÚrenamess       r   r   ÚRefactoring.__init__S   s   € Ø /ÔØŒØ%9Õ"r   Úreturnc                 ó$  ^• U4S jnU R                  5       m[        U R                  R                  5       S S9 VVs0 s HC  u  p#U[	        U R
                  UU" U5      [        [        U5      5      R                  5       US9_ME     snn$ s  snnf )Nc                 óØ   >• U c  U $ [        U 5      n T HI  u  pU R                  [        U5      5      (       d  M&  [        U5      U [        [        U5      5      S  -   n MK     [        U 5      $ r   )r0   Ú
startswithÚlenr   )ÚpÚfrom_Útor[   s      €r   Úcalculate_to_pathÚ8Refactoring.get_changed_files.<locals>.calculate_to_pathY   s^   ø€ Ø‰yØ�Ü�A“ˆAÛ$‘	�Ø—<‘<¤ E£
×+Ó+Ü˜B› !¤C¬¨E«
£OÐ$4Ð"5Ñ5’Añ %ô ˜“7ˆNr   c                 ó0   • U S   =(       d    [        S5      $ )Nr   r#   r   )Úxs    r   Ú<lambda>Ú/Refactoring.get_changed_files.<locals>.<lambda>n   s   € ˜a ™d×.¤d¨2£hÐ.r   )Úkey)r   r   r   r   )	Úget_renamesÚsortedrY   Úitemsr   r   ÚnextÚiterÚget_root_node)r   re   r+   Úmap_r[   s       @r   Úget_changed_filesÚRefactoring.get_changed_filesX   s—   ø€ õ	ð ×"Ñ"Ó$ˆô %Ø×*Ñ*×0Ñ0Ó2Ù.òô
ò‘
�ð ”+Ø×%Ñ%ØÙ)¨$Ó/Ü ¤ d£Ó,×:Ñ:Ó<Ø $ñò ñò
ð 	
ùó 
s   ¾A
Bc                 ó,   • [        U R                  5      $ )z(
Files can be renamed in a refactoring.
)rm   rX   r>   s    r   rl   ÚRefactoring.get_renamesr   s   € ô �d—m‘mÓ$Ð$r   c           	      ó&  • SnU R                   R                  R                  nU R                  5        H%  u  p4US[	        X25      < S[	        XB5      < S3-  nM'     USR                  S U R                  5       R                  5        5       5      -   $ )Nr#   zrename from z
rename to r$   c              3   ó@   #   • U  H  oR                  5       v •  M     g 7fr   )r9   )Ú.0rE   s     r   Ú	<genexpr>Ú'Refactoring.get_diff.<locals>.<genexpr>   s   é € ÐVÒ4U¨qŸj™jŸl˜lÒ4Uùs   ‚)r   r*   r+   rl   Ú_try_relative_tor1   rs   Úvalues)r   Útextr5   rc   rd   s        r   r9   ÚRefactoring.get_diffx   s‚   € ØˆØ×,Ñ,×4Ñ4×9Ñ9ˆØ×)Ñ)Ö+‰IˆEÙÜ# EÖ8Ô:JÈ2Ö:\ð^ñ ^ŠDñ ,ð �b—g‘gÑV°D×4JÑ4JÓ4L×4SÑ4SÔ4UÓVÓVÑVÐVr   c                 óÂ   • U R                  5       R                  5        H  nUR                  5         M     U R                  5        H  u  p#UR	                  U5        M     g)zE
Applies the whole refactoring to the files, which includes renames.
N)rs   r}   rF   rl   Úrename)r   rE   ÚoldÚnews       r   rF   ÚRefactoring.apply�   sK   € ð ×'Ñ'Ó)×0Ñ0Ö2ˆAØ�G‰GŽIñ 3ð ×(Ñ(Ö*‰HˆCØ�J‰J�sŽOò +r   )rY   r   rX   N)rS   )rL   rO   rP   rQ   r   r   r   r   rs   r   r   rl   r9   rF   rR   rS   r   r   rU   rU   R   sB   † ô:ð

 4¨¨kÐ(9Ñ#:ô 
ð4%˜X e¨D°$¨JÑ&7Ñ8ô %òWõr   rU   c                 ó®   • U R                   nU R                  S;   a  X"R                   R                  U5      4$ XR                  XR                  -   5      4$ )N)z__init__.pyz__init__.pyi)ÚparentÚnameÚjoinpathÚsuffix)r+   Únew_nameÚdir_s      r   Ú_calculate_renamerŒ   Œ   sI   € Ø�;‰;€DØ‡y�yÐ3Ó3Ø—[‘[×)Ñ)¨(Ó3Ð3Ð3Ø—‘˜x¯+©+Ñ5Ó6Ð6Ð6r   c           	      ó~  • [        5       n0 nU(       d  [        S5      eU GH  nUR                  R                  nUR                  S:X  aA  Uc>  UR
                  b1  [        UR
                  5      nUR                  [        Xr5      5        Mk  [        UR                  [        5      (       aQ  UR                  R                  R                  5        H'  nUR                  [        [        U5      U5      5        M)     MÛ  Uc  Mà  UR                  UR
                  0 5      nUR                  U-   X†'   GM     [        XU5      $ )Nú!There is no name under the cursorÚmodule)Úsetr	   Ú_nameÚ	tree_nameÚtypeÚmodule_pathr   ÚaddrŒ   Ú
isinstancer
   Ú_valueÚ
py__path__Ú
setdefaultÚprefixrU   )	r   ÚdefinitionsrŠ   Úfile_renamesÚfile_tree_name_mapÚdr’   rb   Úfmaps	            r   r�   r�   “   sú   € Ü“5€LØÐæÜÐBÓCÐCäˆð —G‘G×%Ñ%ˆ	Ø�6‰6�XÓ )Ñ"3¸¿¹Ñ8QÜ�Q—]‘]Ó#ˆAØ×ÑÔ.¨qÓ;Ö<Ü˜Ÿ™¤×0Ñ0Ø—W‘W—^‘^×.Ñ.Ö0�Ø× Ñ Ô!2´4¸³7¸HÓ!EÖFó 1ð Ó$Ø)×4Ñ4°Q·]±]ÀBÓG�Ø"+×"2Ñ"2°XÑ"=�”ñ ô �¸LÓIÐIr   c                 ó¸  • U(       d  [        S5      e[        S U 5       5      (       a  [        S5      e[        S U 5       5      (       a  [        S5      eU Vs/ s H%  o"R                  R                  5       (       d  M#  UPM'     nn[	        U5      S:X  a  [        S5      e[	        U5      S:”  a  [        S	5      e[	        U5      S:X  a  [        S
5      eUS   R                  nUR                  5       nUR                  S:w  a<  [        SSS9R                  UR                  UR                  5      n[        SU-  5      e[	        UR                  SS95      S:”  a  [        S5      eUR                  S   nUR                  S:X  a(  [	        UR                  5      S:X  a  UR                  S   nUS:w  a6  UR                  S:X  a  [        S5      e[        SUR                  SS9-  5      eUR                  5       nUR                  SS9n	U Vs/ s H%  o"R                  R                  5       (       a  M#  UPM'     n
n0 nU
 GH^  nUR                  nUR                  5       R                  5       nU	nUR                  S:X  dS  UR                  R                  [         ;   d5  UR                  R                  S:X  a#  UR                  R#                  5       b  SU	-   S-   nUR%                  U0 5      nUnUR&                  nUR                  nUR                  S:X  a€  UR                  S   S:X  am  UR                  R                  S   R&                  nUnUR                  R                  S UR                  R                  R)                  U5        H  nS UU'   M
     UU-   Xò'   GMa     US   R                  5       R                  5       nUR%                  U0 5      n[+        UR-                  5       R&                  5      UU'   UR/                  5       nUR&                  R1                  S!5      S :X  a  UR                  S":X  d  US#:X  a  S UU'   [3        X5      $ s  snf s  snf )$NrŽ   c              3   ó>   #   • U  H  oR                   S ;   v •  M     g7f))r�   Ú	namespaceN)Úapi_type©ry   Úns     r   rz   Úinline.<locals>.<genexpr>®   s   é € Ð
@º%°Q�:‰:Ð0Ö0º%ùs   ‚z,Cannot inline imports, modules or namespacesc              3   ó<   #   • U  H  oR                   S L v •  M     g 7fr   )r’   r¤   s     r   rz   r¦   °   s   é € Ð
.ª 1�;‰;˜$Õªùs   ‚z!Cannot inline builtins/extensionsr   zNo definition found to inlineé   z.Cannot inline a name with multiple definitionsz$There are no references to this nameÚ	expr_stmtÚfunctionÚclass)ÚfuncdefÚclassdefzCannot inline a %sT)Úinclude_setitemz3Cannot inline a statement with multiple definitionsÚ	annassigné   é   Ú=z:Cannot inline a statement that is defined by an annotationz#Cannot inline a statement with "%s"F)Úinclude_prefixÚtestlist_star_exprÚtrailerÚ(Ú)Ú.r#   z 	rB   Ú;)r	   Úanyr’   Úis_definitionra   Úget_definitionr“   ÚdictÚgetÚget_defined_namesÚchildrenr(   Úget_rhsÚget_root_contextÚ
py__file__r†   ÚEXPRESSION_PARTSÚget_next_siblingr™   rš   ÚindexÚ_remove_indent_of_prefixÚget_first_leafÚget_next_leafÚstriprU   )r   Únamesr¥   r›   r’   r©   Útype_Úfirst_childÚrhsÚreplace_codeÚ
referencesrZ   r‡   r+   ÚsÚof_pathrš   ÚparÚ	some_nodeÚchangesÚ	next_leafs                        r   Úinliner×   «   sõ  € ÞÜÐBÓCÐCÜ
Ñ
@¹%Ó
@×@Ñ@ÜÐMÓNÐNÜ
Ñ
.©Ó
.×.Ñ.ÜÐBÓCÐCá#ÓCše˜§{¡{×'@Ñ'@×'B—1™e€KÐCÜ
ˆ;Ó˜1ÓÜÐ>Ó?Ð?Ü
ˆ;Ó˜!ÓÜÐOÓPÐPÜ
ˆ5ƒz�QƒÜÐEÓFÐFà˜A‘×(Ñ(€Ià×(Ñ(Ó*€IØ‡~�~˜Ó$ÜØØñ
÷ ‰#ˆi�n‰n˜iŸn™nÓ
-ð 	ô Ð3°eÑ;Ó<Ð<ä
ˆ9×&Ñ&°tÐ&Ð<Ó=ÀÓAÜÐTÓUÐUØ×$Ñ$ QÑ'€KØ×Ñ˜;Ó&¬3¨{×/CÑ/CÓ+DÈÓ+IØ!×*Ñ*¨1Ñ-ˆØ�cÓØ×Ñ˜{Ó*Ü"ØLóð ô #Ø5Ø×&Ñ&°eÐ&Ð<ñ=óð ð
 ×
Ñ
Ó
€CØ—<‘<¨u�<Ð5€Lá"ÓFšU˜¯+©+×*CÑ*C×*E—!™U€JÐFØÐÜˆØ—N‘Nˆ	Ø×$Ñ$Ó&×1Ñ1Ó3ˆØˆØ�8‰8Ð+Ó+Ø×#Ñ#×(Ñ(Ô,<Ó<Ø×#Ñ#×(Ñ(¨IÓ5Ø×$Ñ$×5Ñ5Ó7ÑCØ�lÑ" SÑ(ˆAà&×1Ñ1°$¸Ó;ˆàˆØ—‘ˆØ�h‰hˆØ�8‰8�yÓ  S§\¡\°!¡_¸Ó%;Ø—Z‘Z×(Ñ(¨Ñ+×2Ñ2ˆFØˆAØ ŸZ™Z×0Ñ0Ð1P°#·*±*×2EÑ2E×2KÑ2KÈCÓ2PÓQ�	Ø%'�˜	Ó"ñ Rà˜a‘ZˆŒ
ñ) ð, �q‰>×*Ñ*Ó,×7Ñ7Ó9€DØ"×-Ñ-¨d°BÓ7€GÜ1°)×2JÑ2JÓ2L×2SÑ2SÓT€GˆIÑØ×'Ñ'Ó)€Ið ×Ñ×Ñ˜eÓ$¨Ó*Ø—‘ 9Ó,°	¸SÓ0@Øˆ�	ÑÜ�Ó=Ð=ùòO DùòJ Gs   Á"QÂQÈ"QÈ5Qc                 ó:   • SR                  [        U SS9SS 5      $ )zL
Removes the last indentation of a prefix, e.g. " \n \n " becomes " \n \n".
r#   Tr    Nr"   )r1   r   )rš   s    r   rÇ   rÇ   ý   s!   € ð �7‰7”;˜v°Ñ5°c°rÐ:Ó;Ð;r   r+   Úbaser]   c                 óJ   •  U R                  U5      $ ! [         a    U s $ f = fr   )r,   r-   )r+   rÙ   s     r   r|   r|     s,   € ðØ×Ñ Ó%Ð%øÜó ØŠðús   ‚ “"¡")r.   Úpathlibr   Útypingr   r   r   Úparsor   Újedi.api.exceptionsr	   Újedi.inference.value.namespacer
   ÚsplitrÄ   r   rU   rŒ   r�   r×   rÇ   r|   rS   r   r   Ú<module>rá      su   ðÛ Ý ß (Ñ (å å 0Ý 9ðOç�%ƒ'ð ÷?Gñ ?G÷D7ñ 7òt7òJò0O>òd<ð˜4ð  tð °õ r   