
    i%                        S SK r S SKrS SKrS SKJr  S SKJrJrJr  \R                  R                  \R                  R                  \5      S5      r SS\\\4   S\\   S\S\\   S	\4
S
 jjrS\\\4   S\\   S\4S jr SS\\   S\\   S	\S\\\   \\   4   4S jjrS\4S jrS rS rS\SS4S jrS\SS4S jrS\S\4S jrS\SS4S jrg)    N)Path)DictListTuplezmappings.jsonmappingsinstalled_modulesline_idxlinesverbosec           	      :   / n/ n/ nSnSn	X2S   GH{  n
U	S-  n	SU
;   ag  XR                  5       R                  S5      S   R                  5       /nUS   R                  S5      (       a  / US'   SnOXS   R                  S	5      /nU(       aA  S
U
;   a  SnO8SU
;  a2  US   R                  U
R                  5       R	                  SS5      5        U(       Gd  [        U5      S:  Ga  US    Vs/ s H  oR                  5       PM     nn0 nU H  nX;   a%  X   nX;  a  U/X'   M  X   R                  U5        M-  [        SU S35        US   R                  S5      S   R                  S5      S   nSU;  a  UR	                  SS5      nX;  a  U/X'   M  X   R                  U5        M     UR                  5        H  u  pUR	                  SS5      R	                  SS5      nUU;  aN  U Vs/ s H  oU;   d  M
  UPM     nn[        U5      S:X  a&  UR                  U5        UR                  SU S35        S	R                  U5      nUR                  SU SU S35        Sn0 n/ nM     XVX4s  $ U(       a  GMj  UR                  U
5        GM~     XVX4$ s  snf s  snf )NFr      from  import (Tz, ), zModule not found: z
Switching to corezllama_index.corellama_index.-_%pip install 
)	stripsplit
startswithappendreplacelenprintitemsjoin)r   r   r	   r
   r   	new_linesnew_installsimported_modulesparsing_modulesskipped_lineslineximported_module_namesnew_importsmodulenew_import_parentnew_install_parentoverlaps                     V/home/james-whalen/.local/lib/python3.13/site-packages/llama_index/cli/upgrade/base.py_parse_from_importsr2   
   s    ILOMi d? $jjl&8&8&DR&H&N&N&PQ#..s33') $"&$(2*>*D*DT*J#K d{"'D $++DJJL,@,@b,IJ3'7#81#<8H8L$M8L1WWY8L!$MK/%(0(8%(;:@6#6==fE.vh6IJK )+11*=a@FFwOPRS & *1BB,=,E,E)+=-) );:@6#6==fE- 00 3>2C2C2E.!%6%>%>sC%H%P%P&" &->>*;W*;QDV?Vq*;GW7|q()001CD$++m<N;Or,RS"ii4  5):(;8K=PR!ST"' #%  3F  ,=LL T"} !@ $5DD_ %N> Xs   ,J,	J9Jr)   c                    Sn[         R                  " X25      n/ n/ nU(       a  UR                  5       u  pxU(       a  UOUn	X;   aj  X	   n
UR                  SU
 SU	 S35        U
R	                  SS5      R	                  SS5      nX;  a&  UR                  SU S35        UR                  U5        O [        S	U	 S
35        UR                  U5        XVU4$ )Nzqdownload_loader\([\"']([A-Z,a-z]+)[\"'][\s,a-z,A-Z,_=]*\)|download_tool\([\"']([a-z,A-Z]+)[\"'][A-Z,a-z,\s,_=]*\)r   r   r   r   r   r   r   zReader/Tool not found: z
Keeping line as is.)researchgroupsr   r   r!   )r   r   r)   regexresultr$   r%   toolreaderr-   r.   r/   s               r1   _parse_hub_downloadsr;   Z   s    
 AEYYu#FIL}}6 ( 0u%6$7xxrJK!2!:!:3!D!L!LSRU!V!:##m4F3Gr$JK!(();<+F83HIJT"$555    returnc           	         [        [        5       n[        R                  " U5      nS S S 5        / n/ nSnSn[	        U 5       H  u  p/ n/ n/ nUS:w  a  US-  nU(       a  US:  a  M%  SnSU
;   d  SU
;   d  SU
;   a  [        WUU	U US9u  nnnnSnO&S	U
;   d  S
U
;   a  [        WUU
S9u  nnnO
U(       d  U
/nXk-  nX\-  nX-  n[        [        U5      5      nM     U[        [        U5      5      4$ ! , (       d  f       N= f)NFr   r   zfrom llama_index.zfrom llama_index importzfrom llama_hub.)r   r   r	   r
   r   Tzdownload_loader(zdownload_tool()r   r   r)   )	openmappings_pathjsonload	enumerater2   r;   listset)r
   r   r   fr   r%   r$   just_found_importsr(   idxr)   this_new_linesthis_new_installsthis_installed_moduless                 r1   parse_linesrL   t   sT    
m	99Q< 
 LIMu%	!#AQM-!"3!&  4'(D0 D( $!"3!& "&4'+;t+C
 %!"3	!& $"VN#	)3 %6!78c &f d3|,---w 
	s   C00
C>c                 ~   ^ U S   m/ SQn[        T5      S:  a  gU S   S:H  =(       a    [        U4S jU 5       5      $ )Nsource)zpip install llama-hubzimport download_loaderzimport download_toolr   F	cell_typecodec              3   2   >#    U  H  oTS    ;   v   M     g7f)r   N ).0elr
   s     r1   	<genexpr>+_cell_installs_llama_hub.<locals>.<genexpr>   s      /!=2eAh!=s   )r    any)cellllama_hub_partial_statementsr
   s     @r1   _cell_installs_llama_hubrZ      sO    NE$  5zA~& 3 /!=/ , r<   c                 t    U (       a0  [        [        U 5      5      n U S S U S   R                  SS5      /-   $ U $ )Nr   r   r   )rD   rE   r   )r%   s    r1   _format_new_installsr\      sA    C-.CR L$4$<$<T2$F#GGGr<   c                    [        SU  S3SS9  [        U 5       n[        R                  " U5      nS S S 5        SnU S:X  a  SnS/n/ n/ nSn[	        WS	   5       HV  u  pU	S
   S:X  a7  U(       a  [        SU	 3SS9  US:X  a  UnU	S   n
[        XU5      u  pXl-  nXS'   UR                  U	5        MX     [        U5      S:  a&  XRS	'   S0 S / [        U5      S.nUR                  X}5        U V	s/ s H  n	[        U	5      (       a  M  U	PM     nn	XRS	'   [        U S5       n[        R                  " X!SSS9  S S S 5        g ! , (       d  f       GN= fs  sn	f ! , (       d  f       g = f)Nz
=====================
r   T)flushFz9../docs/examples/managed/manage_retrieval_benchmark.ipynbllama-index-corer   cellsrO   rP   zcell: rN   r   )rO   metadataexecution_countoutputsrN   wr   )indentensure_ascii)r!   r?   rA   rB   rC   rL   r   r    r\   insertrZ   dump)	file_pathrF   notebookr   r   	cur_cellsr%   first_code_idxrH   rX   rP   r$   cur_new_installsnew_cells                 r1   upgrade_nb_filero      sv   	%i[
34@	iA99Q< 
 GOO+,ILNx01	&tfoT2#!$>D*5dw*W'I,L&N 2  <1%#*<8
 	2"+R)$3KD3Q)IR!W	i			(ae< 
	Q 
L S		s#   D=-EEE=
E
E"ri   c                    [        U 5       nUR                  5       nS S S 5        S/n[        WU5      u  pE[        U S5       nUR                  SR	                  U5      5        S S S 5        [        U5      S:  a  [        S5        U H,  n[        UR                  5       R                  SS5      5        M.     g ! , (       d  f       N= f! , (       d  f       Nl= f)Nr_   rd   r   r   zNew installs:%)	r?   	readlinesrL   writer#   r    r!   r   r   )ri   rF   r
   r   r$   r%   installs          r1   upgrade_py_md_fileru      s    	iA 
 ,,)%1BCI	i			"# 
 <1ogmmo%%c2./   
 
	s   B8!C	8
C	
Cc                     U R                  S5      (       a  [        U 5        g U R                  S5      (       a  [        U 5        g [        SU  35      e)Nz.ipynb)z.pyz.mdzFile type not supported: )endswithro   ru   	Exception)ri   s    r1   upgrade_filery   
  sG    (##	"			N	+	+9%3I;?@@r<   pathc                 :    [        S U R                   5       5      $ )Nc              3   Z   #    U  H!  oR                  S 5      =(       a    US;  v   M#     g7f)r   )r   z..N)r   )rS   parts     r1   rU   _is_hidden.<locals>.<genexpr>  s$     WJDs#?K(??Js   )+)rW   parts)rz   s    r1   
_is_hiddenr     s    WDJJWWWr<   	input_dirc                    [        [        U 5      R                  S5      5      nU[        [        U 5      R                  S5      5      -  nU[        [        U 5      R                  S5      5      -  nU Vs/ s H  n[        U5      (       a  M  UPM     nnU H.  nUR	                  5       (       d  M  [        [        U5      5        M0     g s  snf )Nz*.pyz*.ipynbz*.md)rD   r   rglobr   is_filery   str)r   	file_refsr*   file_refs       r1   upgrade_dirr     s    T)_**623Id9o++I677Id9o++F344I%;IqZ]II;X'  <s   4C	C	)F)rA   osr4   pathlibr   typingr   r   r   rz   r#   dirname__file__r@   r   intboolr2   r;   rL   rZ   r\   ro   ru   ry   r   r   rR   r<   r1   <module>r      sh    	 	  $ $RWW__X6H ME38nMECyME ME 9	ME
 ME`638n6Cy6 66 EJ>.9>.)-c>.=A>.
49d3i >.Bd  +=\0# 0$ 0 AC AD AXT Xd X(3 (4 (r<   