
    iI#                     n   S SK r S SKJrJr  S SKJrJr  S SKJrJ	r	  S SK
JrJr  S SKJr  S SKJrJrJr  S SKJrJr  S S	KJr  S S
KJr  S SKJr   SS\S\S\\   S\4S jjrSS\4S\\   S\\   S\S\SS4
S jjrSS\\\4S\\   S\\   S\S\S\S\SS4S jjrS\4S jr SS jr!\"S:X  a  \!" 5         gg)     N)AnyOptional)RagCLIdefault_ragcli_persist_dir)upgrade_dirupgrade_file)IngestionCacheIngestionPipeline)LLAMA_HUB_URL)LLAMA_DATASETS_LFS_URL+LLAMA_DATASETS_SOURCE_FILES_GITHUB_TREE_URLdownload_llama_dataset)LLAMA_PACKS_CONTENTS_URLdownload_llama_pack)SimpleDocumentStore)SentenceSplitter)init_new_packagenamekindprefixkwargsc                 .    [        XUS9  [        S5        g )N)integration_nameintegration_typer   z Successfully initialized package)r   print)r   r   r   r   s       V/home/james-whalen/.local/lib/python3.13/site-packages/llama_index/cli/command_line.pyhandle_init_packager      s     d&Q	,.    llama_pack_classdownload_dirllama_pack_urlreturnc                 b    U c   eUc   e[        U U=(       d    SUS9  [        SU  SU 35        g )Nz./custom_llama_pack)r   r    r!   Successfully downloaded  to )r   r   )r   r    r!   r   s       r   handle_download_llama_packr&      sM     '''###)!:%:%
 
$%5$6d<.
IJr   llama_dataset_classllama_hub_urlllama_datasets_lfs_url$llama_datasets_source_files_tree_urlc           	      V    U c   eUc   e[        U UUUSSS9  [        SU  SU 35        g )NTF)r'   r    r)   r*   show_progressload_documentsr$   r%   )r   r   )r'   r    r(   r)   r*   r   s         r   handle_download_llama_datasetr.   /   sP     ***###/!5-Q 
$%8$9l^
LMr   c                     SSK Jn    SS KnSSKJn  [        5       nUR                  US9nUR                  SSS9nU" XSS	9n[        5       n[        [        5       U " 5       /UU[        5       S
9n SSK Jn    SS KnSSKJn  U (       a~  U(       aw  [        5       nUR                  US9nUR                  SSS9nU" XSS	9n[        5       n[        [        5       U " 5       /UU[        5       S
9n UR                  US9  [        USUS9$ [!        S5        g ! [
         a    [        S5      ef = f! [
         a    S n  Nf = f! [
         a    S n Nf = f! [         a     N`f = f)Nr   )OpenAIEmbedding)ChromaVectorStorezDefault RAG pipeline uses chromadb. Install with `pip install llama-index-vector-stores-chroma or customize to use a different vector store.)pathdefaultT)get_or_create)chroma_collectionpersist_dir)transformationsvector_storedocstorecache)r6   F)ingestion_pipelineverboser6   zDefault RagCLI was not built. There are packages missing. Please install required dependencies by running `pip install llama-index-embeddings-openai llama-index-llms-openai chroma llama-index-vector-stores-chroma`)llama_index.embeddings.openair0   chromadb llama_index.vector_stores.chromar1   ImportErrorr   PersistentClientcreate_collectionr   r
   r   r	   loadFileNotFoundErrorr   r   )	r0   r>   r1   r6   chroma_clientr5   r8   r9   r;   s	            r   default_rag_clirF   F   s   =

	
 -.K--;-?M%77	QU7V$+L #$H*)+_->?!	A!	
 ,02 11{1C);;T < 
 )/
 '(.-/1BC% "	
	###< 1#
 	
 	z	

 I  
<
 	

.    ! !, ! 		sA   
D /D* 6
D< +E D'*D98D9<E
E
EEc                  L   [         R                  " SS9n U R                  SSSS9nUR                  SSS	9n[        R
                  " U[        5        UR                  S
SS	9nUR                  S[        SS9  UR                  SS[        SSS9  UR                  S[        [        SS9  UR                  S S9  UR                  SSS	9nUR                  S[        SS9  UR                  SS[        SSS9  UR                  S[        [        SS9  UR                  S[        [        SS9  UR                  S S9  UR                  S S!S	9nUR                  S"[        S#S9  UR                  S$ S9  UR                  S%S&S	9nUR                  S'[        S#S9  UR                  S( S9  UR                  S)S*S	9nUR                  S+S,[        S-S9  UR                  S.S/[        S0S9  UR                  S1S2[        S3S4S59  UR                  S6 S9  U R                  5       nUR                  U5        g )7NzLlamaIndex CLI tool.)descriptioncommandscommandT)titledestrequiredragz8Ask a question to a document / a directory of documents.)helpzdownload-llamapackzDownload a llama-packr   zVThe name of the llama-pack class you want to download, such as `GmailOpenAIAgentPack`.)typerO   z-dz--download-dirz./llama_packsz)Custom dirpath to download the pack into.)rP   r3   rO   z--llama-hub-urlzURL to llama hub.c                 *    [        S0 [        U 5      D6$ N )r&   varsargss    r   <lambda>main.<locals>.<lambda>   s    4BtDzBr   )funczdownload-llamadatasetzDownload a llama-datasetr'   z[The name of the llama-dataset class you want to download, such as `PaulGrahamEssayDataset`.z./llama_datasetsz--llama-datasets-lfs-urlzURL to llama datasets.c                 *    [        S0 [        U 5      D6$ rR   )r.   rT   rU   s    r   rW   rX      s    7E$t*Er   upgradez9Upgrade a directory containing notebooks or python files.	directoryz?The directory to upgrade. Will run on only .ipynb or .py files.c                 ,    [        U R                  5      $ N)r   r\   rU   s    r   rW   rX      s    +dnn2Mr   zupgrade-filez)Upgrade a single notebook or python file.r2   c                 ,    [        U R                  5      $ r^   )r   r2   rU   s    r   rW   rX      s    |DII7Nr   znew-packagez$Initialize a new llama-index packagez-kz--kindz1Kind of package, e.g., llm, embedding, pack, etc.z-nz--namezName of python packagez-pz--prefixFzName of prefix package)rP   rM   rO   c                 *    [        S0 [        U 5      D6$ rR   )r   rT   rU   s    r   rW   rX     s    6I6WDQUJ6Wr   )argparseArgumentParseradd_subparsers
add_parserr   add_parser_argsrF   add_argumentstrr   set_defaultsr   
parse_argsrY   )	parser
subparsersllamarag_parserllamapack_parserllamadataset_parserupgrade_parserupgrade_file_parsernew_package_parserrV   s	            r   mainrr      s   $$1GHF &&ZiRV&WJ !++N , O ?O< ",,#: -  !!.	 "  !!8 "  !! 	 "  !!B " 
 %//&@ 0  $$0	 %  $$"8 %  $$ 	 %  $$"&%	 %  $$E % 
  **S + N N   
 %MN %//H 0  $$N % 
 $$*N$O $..B /  ##@	 $  ##%	 $  ##% $  ##)W#X D 	IIdOr   __main__r^   )r"   N)#ra   typingr   r   llama_index.cli.ragr   r   llama_index.cli.upgrader   r   llama_index.core.ingestionr	   r
    llama_index.core.download.moduler   'llama_index.core.llama_dataset.downloadr   r   r   $llama_index.core.llama_pack.downloadr   r   !llama_index.core.storage.docstorer   llama_index.core.text_splitterr    llama_index.cli.new_package.baser   rg   r   r&   r.   rF   rr   __name__rS   r   r   <module>r      s>      B = H : 
 B ; = 37/
//"*3-/BE/ '+"&2KsmK3-K K 	K
 
K$ *."&&"80[N!#N3-N N  	N
 +.N N 
N.L L^D zF r   