
    Ji7                     "   d dl Z d dlZd dlZd dlmZmZ d dlmZm	Z	m
Z
mZ d dlmZmZmZmZmZmZmZ d dlmZ d dlmZmZ d dlmZmZmZmZmZmZm Z m!Z! d dl"m#Z# d d	l$m%Z%m&Z& d d
l'm(Z( de)de*fdZ+dedefdZ,defdZ-	 	 	 d1de%de dee.   dee.   de*dee!   fdZ/de%dee.   dee.   dee.   de f
dZ0de%dee.   dee    dee.   def
dZ1de%dee.   dee.   dee.   dee.   dee.   dee ef   fdZ2dee%e&f   de.d e3de.def
d!Z4dee%e&f   de.d e3d"e.de.defd#Z5e,de%de.d e3de.de.f
d$       Z6e,de%de.d e3d"e.de.de.fd%       Z7e,de&de.d e3de.de.f
d&       Z8e,de&de.d e3d"e.de.de.fd'       Z9	 d2de%d(eee      de.d)ee:   dee   f
d*Z;	 d2de%d(eee      de.d)ee:   dee   f
d+Z<	 d2de%d,eee      de.d)ee:   dee   f
d-Z=	 d2de&d(eee      de.d)ee:   dee   f
d.Z>	 d2de&d(eee      de.d)ee:   dee   f
d/Z?	 d2de&d,eee      de.d)ee:   dee   f
d0Z@y)3    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                     t        | t              rd| j                  cxk  xr dk  S c S t        | t              r$d| j                  j                  cxk  xr dk  S c S y)Ni  iX  F)
isinstancer   status_coder   response)r   s    v/var/www/html/BankruptcyAI-uat/bankruptcy-ai/venv/lib/python3.12/site-packages/llama_cloud_services/index/api_utils.pyis_retryable_http_errorr&      sW    )X&i++1c1111	I	/i((44:s::::    funcc                 n     t        t        dd      t        d      t        t              d      |       S )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   (   s;    5$aR8" !89	
  r'   c                      t               S N)r    r'   r%   default_transform_configr6   2   s      r'   clientprojectretriever_nameretriever_id	persistedc                 @   |s4t        t        t        j                               |j                  g       S |r'| j
                  j                  ||j                        S r<| j
                  j                  |j                        }t        fd|D        d       S y )N)id
project_idname	pipelines)r:   r>   )r>   r?   c              3   B   K   | ]  }|j                   k(  s|  y wr4   )r?   ).0	retrieverr9   s     r%   	<genexpr>z$resolve_retriever.<locals>.<genexpr>M   s     W9inn6VYWs   )	r   struuiduuid4r=   
retrieversget_retrieverlist_retrieversnext)r7   r8   r9   r:   r;   rH   s     `   r%   resolve_retrieverrL   6   s     4::< zz	
 	
   ..%'** / 
 	
 
&&66zz 7 

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

 r'   project_namer>   organization_idc                     || j                   j                  |      S | j                   j                  ||      }t        |      dk(  rt	        d|       t        |      dkD  rt	        d| d      |d   S )N)r>   )rM   rN   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   rM   r>   rN   rQ   s        r%   resolve_projectrV   T   s     **j*AA??00% 1 
 x=A:<.IJJ]Q4\NBcd  {r'   pipeline_idpipeline_namec                 T   || j                   j                  |      S | j                   j                  |j                  |t        j
                  j                        }t        |      dk(  rt        d| d      t        |      dkD  rt        d| d|j                         |d   S )	N)rW   )r>   rX   pipeline_typer   zUnknown index name z0. Please confirm an index with this name exists.rP   z#Multiple pipelines found with name z in project )
r@   get_pipelinesearch_pipelinesr=   r   MANAGEDvaluerT   rU   r?   )r7   rW   r8   rX   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                     |t        | |d d       }|j                  }t        | |||      }|t        | d ||      }|fS )N)rW   r8   rX   )r_   r>   rV   )r7   rX   rW   rM   r>   rN   pipeliner8   s           r%   resolve_project_and_pipelinerb      sd     #T
 ((
 flJPG #g]
 Hr'   file_id
page_indexc           
         | j                   j                  j                  dt        j                  j                  | j                   j                          dd| d|       t        d|i      | j                   j                         d      S )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   rc   rd   r>   s       r%   "_build_get_page_screenshot_requestrx      s     !!..<<%%2245Q7G9$6zlC	
 %lJ%?@&&224 = 	 	r'   figure_namec                     | j                   j                  j                  dt        j                  j                  | j                   j                          dd| d| d|       t        d|i      | j                   j                         d      S )Nrf   rg   rh   z/page-figures/r>   ri   rj   rn   r7   rc   rd   ry   r>   s        r%   _build_get_page_figure_requestr|      s     !!..<<%%2245Q7G9N:,a}M	
 %lJ%?@&&224 = 	 	r'   c                     t        | |||      }| j                  j                  j                  |      }d|j                  cxk  rdk  r|j
                  S  t        |j                  |j                        )zGet the page screenshot.   ,  r#   bodyrx   ro   rp   sendr#   contentr   textr7   rc   rd   r>   request	_responses         r%   get_page_screenshotr      sr     1ZG &&3388AI
i##)c)    * 9#8#8y~~NNr'   c                     t        | ||||      }| j                  j                  j                  |      }d|j                  cxk  rdk  r|j
                  S  t        |j                  |j                        Nr~   r   r   r|   ro   rp   r   r#   r   r   r   r7   rc   rd   ry   r>   r   r   s          r%   get_page_figurer      st     -[*G &&3388AI
i##)c)    * 9#8#8y~~NNr'   c                 
  K   t        | |||      }| j                  j                  j                  |       d{   }d|j                  cxk  rdk  r|j
                  S  t        |j                  |j                        7 Gw)z Get the page screenshot (async).Nr~   r   r   r   r   s         r%   aget_page_screenshotr      s     
 1ZG ,,99>>wGGI
i##)c)    * 9#8#8y~~NN	 Hs   7BBABc                   K   t        | ||||      }| j                  j                  j                  |       d {   }d|j                  cxk  rdk  r|j
                  S  t        |j                  |j                        7 Gwr   r   r   s          r%   aget_page_figurer      s      -[*G ,,99>>wGGI
i##)c)    * 9#8#8y~~NN	 Hs   8BBABraw_image_nodesmetadatac                    |sg S g }|D ]  }t        | |j                  j                  |j                  j                  |      }t	        j
                  |      j                  d      }i |j                  j                  xs i |xs i |j                  j                  |j                  j                  d}t        t        ||      |j                        }	|j                  |	        |S Nrw   utf-8)rc   rd   imager   nodescore)r   r   rc   rd   base64	b64encodedecoder   r   r   r   append)
r7   r   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) 2)"''//%**55!	
 ''4;;GD/
""++1r/
~2/
 &**22(--88	/
 !.8KL &&!
 	01%2( r'   c                 (    |sg S t        | |||      S )zJ
    Legacy method to alias page_screenshot_nodes_to_node_with_score.
    r7   r   r>   r   )r   r   s       r%   image_nodes_to_node_with_scorer   "  s%     	3'	 r'   raw_figure_nodesc                 2   |sg S g }|D ]
  }t        | |j                  j                  |j                  j                  |j                  j                  |      }t        j                  |      j                  d      }i |j                  j                  xs i |xs i |j                  j                  |j                  j                  |j                  j                  d}t        t        ||      |j                        }	|j                  |	        |S Nr{   r   )rc   rd   ry   r   r   )r   r   rc   rd   ry   r   r   r   r   r   r   r   r   )
r7   r   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   6  s    	L+ 4&#((00&++66',,88!
 ((6==gF0
##,,20
~20
 '++33)..99*//;;0
 "/9MN!''"
 	23)4* r'   c           	      J  K   |sg S g }|D cg c]9  }t        | |j                  j                  |j                  j                  |      ; }}t	        |       d {   }t        ||      D ]  \  }}t        j                  |      j                  d      }	i |j                  j                  xs i |xs i |j                  j                  |j                  j                  d}
t        t        |	|
      |j                        }|j                  |        |S c c}w 7 ŭwr   )r   r   rc   rd   r   zipr   r   r   r   r   r   r   r   )r7   r   r>   r   r   r   tasksimage_bytes_listr   r   r   r   s               r%   )apage_screenshot_nodes_to_node_with_scorer   X  s;     	K .  	"''//%**55!		
E  &e_,'*+;_'M 2#^''4;;GD/
""++1r/
~2/
 &**22(--88	/
 !.8KL &&!
 	012 1 -s   D#>DD#D!CD#c                 D   K   |sg S t        | |||       d{   S 7 w)zK
    Legacy method to alias apage_screenshot_nodes_to_node_with_score.
    r   N)r   r   s       r%   aimage_nodes_to_node_with_scorer   }  s3      	:'	   s     c           
        K   |sg S g }|D cg c]N  }t        | |j                  j                  |j                  j                  |j                  j                  |      P }}t        |       d {   }t        ||      D ]  \  }}t        j                  |      j                  d      }	i |j                  j                  xs i |xs i |j                  j                  |j                  j                  |j                  j                  d}
t        t        |	|
      |j                        }|j                  |        |S c c}w 7 ڭwr   )r   r   rc   rd   ry   r   r   r   r   r   r   r   r   r   r   )r7   r   r>   r   r   r   r   figure_bytes_listr   r   r   r   s               r%   %apage_figure_nodes_to_node_with_scorer     sZ     	L  0	  	#((00&++66',,88!	
	E 	 'uo-),->@P)Q 4%o((6==gF0
##,,20
~20
 '++33)..99*//;;0
 "/9MN!''"
 	234 7	 .s   EAE E0E1CE)NNTr4   )Ar   urllib.parserr   rF   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   rE   rL   rV   r_   rb   intrx   r|   r   r   r   r   dictr   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#>?@  tn	
 
-J  $	d#>?@  tn	
 
-0  $	t$;<=  tn	
 
-L  $	""d#>?@" " tn	"
 
-"R  $	d#>?@  tn	
 
-0  $	%%t$;<=% % tn	%
 
-%r'   