
    i5                        S SK r S SKrS SKrS SKJrJr  S SKJrJ	r	J
r
Jr  S SKJrJrJrJrJrJrJr  S SKJr  S SKJrJr  S SKJrJrJrJrJrJrJ r J!r!  S SK"J#r#  S S	K$J%r%J&r&  S S
K'J(r(  S\)S\*4S jr+S\S\4S jr,S\4S jr-   S0S\%S\ S\\.   S\\.   S\*S\\!   4S jjr/S\%S\\.   S\\.   S\\.   S\ 4
S jr0S\%S\\.   S\\    S\\.   S\4
S jr1S\%S\\.   S\\.   S\\.   S\\.   S\\.   S\\ \4   4S jr2S\\%\&4   S\.S \3S\.S\4
S! jr4S\\%\&4   S\.S \3S"\.S\.S\4S# jr5\,S\%S\.S \3S\.S\.4
S$ j5       r6\,S\%S\.S \3S"\.S\.S\.4S% j5       r7\,S\&S\.S \3S\.S\.4
S& j5       r8\,S\&S\.S \3S"\.S\.S\.4S' j5       r9S\%S(\\\      S\.S\\   4S) jr:S\%S(\\\      S\.S\\   4S* jr;S\%S+\\\      S\.S\\   4S, jr<S\&S(\\\      S\.S\\   4S- jr=S\&S(\\\      S\.S\\   4S. jr>S\&S+\\\      S\.S\\   4S/ jr?g)1    N)RequestHTTPStatusError)retrywait_exponential_jitterstop_after_attemptretry_if_exception)AnyOptionalTupleListUnionDictCallable)run_jobs)NodeWithScore	ImageNode)AutoTransformConfigPageFigureNodeWithScorePageScreenshotNodeWithScorePipelinePipelineCreateTransformConfigPipelineTypeProject	Retriever)remove_none_from_dict)
LlamaCloudAsyncLlamaCloud)ApiError	exceptionreturnc                     [        U [        5      (       a  SU R                  s=:*  =(       a    S:  $ s  $ [        U [        5      (       a)  SU R                  R                  s=:*  =(       a    S:  $ s  $ g)Ni  iX  F)
isinstancer   status_coder   response)r   s    ^/home/james-whalen/.local/lib/python3.13/site-packages/llama_cloud_services/index/api_utils.pyis_retryable_http_errorr&      sc    )X&&i++11c1111	I	/	/i((44::s::::    funcc                 b    [        [        SSS9[        S5      [        [        5      SS9" U 5      $ )zUDecorator to apply tenacity retry with exponential backoff and jitter for 5xx errors.   
   )exp_basemax   T)waitstopr   reraise)r   r   r   r   r&   )r(   s    r%   retry_on_failurer2   (   s7    $aR8" !89	
  r'   c                      [        5       $ N)r    r'   r%   default_transform_configr6   2   s      r'   clientprojectretriever_nameretriever_id	persistedc                 N  ^ U(       d2  [        [        [        R                  " 5       5      UR                  T/ S9$ U(       a#  U R
                  R                  X1R                  S9$ T(       a:  U R
                  R                  UR                  TS9n[        U4S jU 5       S 5      $ g )N)id
project_idname	pipelines)r:   r>   )r>   r?   c              3   J   >#    U  H  oR                   T:X  d  M  Uv   M     g 7fr4   )r?   ).0	retrieverr9   s     r%   	<genexpr>$resolve_retriever.<locals>.<genexpr>M   s     W
9nn6VYY
s   #	#)	r   struuiduuid4r=   
retrieversget_retrieverlist_retrieversnext)r7   r8   r9   r:   r;   rI   s     `   r%   resolve_retrieverrM   6   s     4::< zz	
 	
   ..%** / 
 	
 
&&66zz 7 

 W
W
 	

 r'   project_namer>   organization_idc                     Ub  U R                   R                  US9$ U R                   R                  XS9n[        U5      S:X  a  [	        SU 35      e[        U5      S:  a  [	        SU S35      eUS   $ )N)r>   )rN   rO   r   zNo project found with name    z"Multiple projects found with name z!. Please specify organization_id.)projectsget_projectlist_projectslen
ValueError)r7   rN   r>   rO   rR   s        r%   resolve_projectrW   T   s     **j*AA??00% 1 
 x=A:<.IJJ]Q4\NBcd  {r'   pipeline_idpipeline_namec                 N   Ub  U R                   R                  US9$ U R                   R                  UR                  U[        R
                  R                  S9n[        U5      S:X  a  [        SU S35      e[        U5      S:  a  [        SU SUR                   35      eUS   $ )	N)rX   )r>   rY   pipeline_typer   zUnknown index name z0. Please confirm an index with this name exists.rQ   z#Multiple pipelines found with name z in project )
r@   get_pipelinesearch_pipelinesr=   r   MANAGEDvaluerU   rV   r?   )r7   rX   r8   rY   r@   s        r%   resolve_pipeliner`   i   s     ,,,EE$$55zz'&..44 6 
	
 y>Q%m_4de  ^a5m_LQXQ]Q]P^_  |r'   c                 r    Ub  [        XS S S9nUR                  n[        XXE5      nUc  [        U S XqS9nUW4$ )N)rX   r8   rY   )r`   r>   rW   )r7   rY   rX   rN   r>   rO   pipeliner8   s           r%   resolve_project_and_pipelinerc      s\     #T
 ((
 fJPG #g
 Hr'   file_id
page_indexc           
         U R                   R                  R                  S[        R                  R                  U R                   R                  5        S3SU SU 35      [        SU05      U R                   R                  5       SS9$ )NGET/api/v1/files/z/page_screenshots/r>   <   paramsheaderstimeout	_client_wrapperhttpx_clientbuild_requesturllibparseurljoinget_base_urlr   get_headersr7   rd   re   r>   s       r%   "_build_get_page_screenshot_requestry      s     !!..<<%%2245Q7G9$6zlC	
 %lJ%?@&&224 = 	 	r'   figure_namec                    U R                   R                  R                  S[        R                  R                  U R                   R                  5        S3SU SU SU 35      [        SU05      U R                   R                  5       SS9$ )Nrg   rh   ri   z/page-figures/r>   rj   rk   ro   r7   rd   re   rz   r>   s        r%   _build_get_page_figure_requestr}      s     !!..<<%%2245Q7G9N:,a}M	
 %lJ%?@&&224 = 	 	r'   c                     [        XX#5      nU R                  R                  R                  U5      nSUR                  s=::  a  S:  a   UR
                  $   [        UR                  UR                  S9e)zGet the page screenshot.   ,  r#   bodyry   rp   rq   sendr#   contentr   textr7   rd   re   r>   request	_responses         r%   get_page_screenshotr      sn     1G &&3388AI
i##)c)    * 9#8#8y~~NNr'   c                     [        XX#U5      nU R                  R                  R                  U5      nSUR                  s=::  a  S:  a   UR
                  $   [        UR                  UR                  S9eNr   r   r   r}   rp   rq   r   r#   r   r   r   r7   rd   re   rz   r>   r   r   s          r%   get_page_figurer      sp     -*G &&3388AI
i##)c)    * 9#8#8y~~NNr'   c                   #    [        XX#5      nU R                  R                  R                  U5      I Sh  vN nSUR                  s=::  a  S:  a   UR
                  $   [        UR                  UR                  S9e NG7f)z Get the page screenshot (async).Nr   r   r   r   r   s         r%   aget_page_screenshotr      sz     
 1G ,,99>>wGGI
i##)c)    * 9#8#8y~~NN	 Hs   5BA?ABc                   #    [        XX#U5      nU R                  R                  R                  U5      I S h  vN nSUR                  s=::  a  S:  a   UR
                  $   [        UR                  UR                  S9e NG7fr   r   r   s          r%   aget_page_figurer      s|      -*G ,,99>>wGGI
i##)c)    * 9#8#8y~~NN	 Hs   6BB ABraw_image_nodesc                    U(       d  / $ / nU H  n[        U UR                  R                  UR                  R                  US9n[        R
                  " U5      R                  S5      n0 UR                  R                  =(       d    0 EUR                  R                  UR                  R                  S.En[        [        XgS9UR                  S9nUR                  U5        M     U$ Nrx   utf-8)rd   re   imagemetadatanodescore)r   r   rd   re   base64	b64encodedecoder   r   r   r   append)	r7   r   r>   image_nodesraw_image_nodeimage_bytesimage_base64image_node_metadataimage_node_with_scores	            r%   (page_screenshot_nodes_to_node_with_scorer     s    
 	K))"''//%**55!	
 ''4;;GD/
""++1r/
%**22(--88/

 !.L &&!
 	01# *& r'   c                 (    U(       d  / $ [        XUS9$ )zB
Legacy method to alias page_screenshot_nodes_to_node_with_score.
r7   r   r>   )r   r   s      r%   image_nodes_to_node_with_scorer      s     	3: r'   raw_figure_nodesc           	      ,   U(       d  / $ / nU GH  n[        U UR                  R                  UR                  R                  UR                  R                  US9n[
        R                  " U5      R                  S5      n0 UR                  R                  =(       d    0 EUR                  R                  UR                  R                  UR                  R                  S.En[        [        XgS9UR                  S9nUR                  U5        GM     U$ Nr|   r   )rd   re   rz   r   r   )r   r   rd   re   rz   r   r   r   r   r   r   r   r   )	r7   r   r>   figure_nodesraw_figure_nodefigure_bytesfigure_base64figure_node_metadatafigure_node_with_scores	            r%   $page_figure_nodes_to_node_with_scorer   0  s    
 	L+&#((00&++66',,88!
 ((6==gF0
##,,20
&++33)..99*//;;	0
 "/N!''"
 	23' ,( r'   c           
      F  #    U(       d  / $ / nU Vs/ s H7  n[        U UR                  R                  UR                  R                  US9PM9     nn[	        U5      I S h  vN n[        Xa5       H  u  pt[        R                  " U5      R                  S5      n0 UR                  R                  =(       d    0 EUR                  R                  UR                  R                  S.En	[        [        XS9UR                  S9n
UR                  U
5        M     U$ s  snf  N7fr   )r   r   rd   re   r   zipr   r   r   r   r   r   r   r   )r7   r   r>   r   r   tasksimage_bytes_listr   r   r   r   s              r%   )apage_screenshot_nodes_to_node_with_scorer   P  s&    
 	K . .N 	"''//%**55!		
 . 
  &e_,'*+;'M#''4;;GD/
""++1r/
%**22(--88/

 !.L &&!
 	01 (N / -s   D!>DD! D!B?D!c                 D   #    U(       d  / $ [        XUS9I Sh  vN $  N7f)zC
Legacy method to alias apage_screenshot_nodes_to_node_with_score.
r   N)r   r   s      r%   aimage_nodes_to_node_with_scorer   s  s+      	::   s     c                   #    U(       d  / $ / nU Vs/ s HL  n[        U UR                  R                  UR                  R                  UR                  R                  US9PMN     nn[        U5      I S h  vN n[        Xa5       H  u  pt[        R                  " U5      R                  S5      n0 UR                  R                  =(       d    0 EUR                  R                  UR                  R                  UR                  R                  S.En	[        [        XS9UR                  S9n
UR                  U
5        M     U$ s  snf  N7fr   )r   r   rd   re   rz   r   r   r   r   r   r   r   r   r   r   )r7   r   r>   r   r   r   figure_bytes_listr   r   r   r   s              r%   %apage_figure_nodes_to_node_with_scorer     sD    
 	L  0	  0O 	#((00&++66',,88!	
  0 
 	 'uo-),->)Q%((6==gF0
##,,20
&++33)..99*//;;	0
 "/N!''"
 	23 *R 5	 .s   EAE%E5E	6CE)NNT)@r   urllib.parsers   rG   httpxr   r   tenacityr   r   r   r   typingr	   r
   r   r   r   r   r   llama_index.core.async_utilsr   llama_index.core.schemar   r   llama_cloudr   r   r   r   r   r   r   r   llama_cloud.corer   llama_cloud.clientr   r   llama_cloud.core.api_errorr   	Exceptionboolr&   r2   r6   rF   rM   rW   r`   rc   intry   r}   r   r   r   r   r   r   r   r   r   r   r5   r'   r%   <module>r      s      *  E D D 1 <	 	 	 3 : /y T 8  !"? ! %)"& SM 3-	
  i<3-  c]	
 *# g C=	
 2C= # 3-	
  c] 7H6*o-.  	
 $*o-.  	
  & OO!$O25OCFOO O 
O
O!$
O25
ODG
OUX
O
O 
O OO&)O7:OHKOO O OOO O 	O
 O 	O O"d#>?@  
-	>d#>?@  
-	 t$;<=  
-	@  d#>?@    
-	 Fd#>?@  
-	 ##t$;<=# # 
-	#r'   