
    @'h%                         d dl Z d dlZd dlZd dlZd dlmZ d dlmZmZm	Z	m
Z
mZmZ d dlmZ d dlmZ d dlmZ  ed      Z G d d	      Zy)
    N)ThreadPoolExecutor)OptionalListUnionAny	CoroutineTypeVar)urljoin)ReportMetadata)ReportClientTc                      e Zd ZdZ	 	 	 	 	 	 d&dee   dee   dee   dee   dee   deej                     fd	Z	e
d
ej                  fd       Zdeeeef   d
efdZd
efdZ	 d'dedeee      d
efdZ	 	 	 	 	 d(dedee   dee   deeeeeef   f      deeeeeeef   f         dee   d
efdZ	 	 	 	 	 d(dedee   dee   deeeeeef   f      deeeeeeef   f         dee   d
efdZ	 d)dee   deded
ee   fdZ	 d)dee   deded
ee   fdZded
efd Zded
efd!Zded
efd"Zded
efd#Zded
dfd$Z ded
dfd%Z!y)*LlamaReportz:Client for managing reports and general report operations.Napi_key
project_idorganization_idbase_urltimeoutasync_httpx_clientc           
      P   |xs t        j                  dd       | _        | j                  st        d      |xs t        j                  dd      | _        |xs d| _        |xs  t        j                  | j
                        | _        dd| j                   i| _	        || _
        || _        | j                  j
                  | j                  j                  | j                  j                  | j                  j                  | j                  j                  | j                  j                  | j                  j                  | j                  j                   | j                  j"                  d		| _        t'        t)        d
t        j*                         xs ddz               | _        y )NLLAMA_CLOUD_API_KEYzNo API key provided.LLAMA_CLOUD_BASE_URLzhttps://api.cloud.llamaindex.ai<   )r   AuthorizationzBearer )	r   headersr   authevent_hookscookiesmax_redirectsparams	trust_env
         )max_workers)osgetenvr   
ValueErrorr   r   httpxAsyncClient_aclientr   r   r   r   r   r   r   r    r!   _client_paramsr   min	cpu_count_thread_pool)selfr   r   r   r   r   r   s          g/home/kushmeetdev/Regenta/Chatbot/venv/lib/python3.12/site-packages/llama_cloud_services/report/base.py__init__zLlamaReport.__init__   sJ    H")),A4"H||344  
BII"$E%
 }" +Ue.?.?.U wt||n5
  /$}},,}},,..MM&&==44}},,!]]88mm**00

 /B!41 9:
    returnc                 z    | j                   $t        j                  di | j                  | _         | j                   S )N )r+   r)   r*   r,   )r0   s    r1   aclientzLlamaReport.aclient=   s1    == !--D0C0CDDM}}r3   coroc                     | j                   }d| _         dt        ffd}| j                  j                  |      j	                         }|| _         |S )z=Run coroutine in a separate thread to avoid event loop issuesNr4   c                  P    dt         ffd} t        j                   |              S )Nr4   c                  $   K     d {   S 7 wNr6   )r8   s   r1   wrapped_coroz=LlamaReport._run_sync.<locals>.run_coro.<locals>.wrapped_coroK   s     !z!zs   )r   asynciorun)r=   r8   s    r1   run_coroz'LlamaReport._run_sync.<locals>.run_coroJ   s"    " " ;;|~..r3   )r+   r   r/   submitresult)r0   r8   original_clientr@   rB   s    `   r1   	_run_synczLlamaReport._run_syncC   sP     --	/! 	/ ""))(3::< (r3   c                 B  K   | j                   j                  t        t        | j                        d      | j
                         d {   }|j                          |j                         }|D cg c]  }|j                  d      s| }}|d   d   S 7 Mc c}w w)Nz/api/v1/projectsr   
is_defaultr   id)r7   getr
   strr   r   raise_for_statusjson)r0   responseprojectspdefault_projects        r1   _get_default_projectz LlamaReport._get_default_projectW   s     ))C&(:;T\\ * 
 
 	!!#==?&.F!%%2E1FFq!$''

 Gs*   AB
B(B3B
BBBendpointextra_paramsc                   K   t        t        | j                        |      }| j                  s| j	                          d{   | _        g }| j
                  r|j                  d| j
                          | j                  r|j                  d| j                          |r"|j                  |D cg c]  }||	 c}       |r|ddj                  |      z   z  }|S 7 c c}w w)z9Helper method to build URLs with common query parameters.Nzorganization_id=zproject_id=?&)	r
   rJ   r   r   rQ   r   appendextendjoin)r0   rR   rS   urlquery_paramsrO   s         r1   
_build_urlzLlamaReport._build_url`   s      c$--((3$($=$=$??DO"243G3G2H IJ??+doo-> ?@L JqAM JK3,///C
 @ !Ks*   ?C'C A0C'2C":C">#C'"C'nametemplate_instructionstemplate_texttemplate_fileinput_filesexisting_retriever_idc                   K   | j                  d       d{   }g }d|i}	|r||	d<   |r||	d<   |rt        |      |	d<   g }
|rXt        |t              r2|j                  t	        |d             |
j                  d|d	   f       n|
j                  d|d
   f       |r_|D ]Z  }t        |t              r2|j                  t	        |d             |
j                  d|d	   f       E|
j                  d|d
   f       \ | j
                  j                  || j                  |	|
       d{   }	 |j                          |j                         d   }t        |||       |D ]  }|j                           S 7 _7 O# t        j                  $ r>}t        d|j                  j                    d|j                  j"                         d}~ww xY w# |D ]  }|j                           w xY ww)z#Create a new report asynchronously./api/v1/reports/Nr]   r^   r_   rb   rbr`   r#   files)r   datarg   rH   zFailed to create report: z
Error Code: )r\   rJ   
isinstancerW   openr7   postr   rK   rL   r   closer)   HTTPStatusErrorr(   rM   textstatus_code)r0   r]   r^   r_   r`   ra   rb   rZ   
open_filesrh   rg   frM   	report_id	open_filees                   r1   acreate_reportzLlamaReport.acreate_reportv   s     OO$677.0
~ ,AD()$1D! ,/0E,FD()=?--!!$}d";<oz"~>?o}Q/?@A  2a%%%d1dm4LL':b>!:;LL'1Q412 **D + 
 

	"%%' -I	46 ( "	!"O 86
 $$ 	+AJJOO+<N1::KaKaJbc 	
 ( "	!"sR   G+E6DG+)E9*G+//E; G+9G+;G9GGG G((G+c           
      N    | j                  | j                  ||||||            S )zCreate a new report.)r]   r^   r_   r`   ra   rb   )rD   ru   )r0   r]   r^   r_   r`   ra   rb   s          r1   create_reportzLlamaReport.create_report   s:     ~~&;++'&;   	
 		
r3   statelimitoffsetc                   K   g }|r|j                  d|        |r|j                  d|        |r|j                  d|        | j                  d|       d{   }| j                  j                  || j                         d{   }|j                          |j                         }|d   D cg c]  }t        |d	   |d
   |        c}S 7 w7 Jc c}w w)z List all reports asynchronously.zstate=zlimit=zoffset=z/api/v1/reports/list)rS   NrF   report_responsesrr   r]   )rW   r\   r7   rI   r   rK   rL   r   )	r0   rx   ry   rz   r    rZ   rM   rh   rs	            r1   alist_reportszLlamaReport.alist_reports   s      MMF5'*+MMF5'*+MMGF8,-OO" $ 
 

 ))#t||)DD!!#}} ,-
 ;6D9
 	


 E
s6   ACC.CC+C8CCCCc                 F    | j                  | j                  |||            S )z(Synchronous wrapper for listing reports.)rD   r~   )r0   rx   ry   rz   s       r1   list_reportszLlamaReport.list_reports   s"     ~~d00vFGGr3   rr   c                   K   | j                  d|        d{   }| j                  j                  || j                         d{   }|j	                          |j                         }t        |d   |d   |       S 7 f7 9w)z9Get a Report instance for working with a specific report.rd   NrF   rr   r]   )r\   r7   rI   r   rK   rL   r   )r0   rr   rZ   rM   rh   s        r1   aget_reportzLlamaReport.aget_report   sx     OO&6yk$BCC))#t||)DD!!#}}D-tF|TBB DDs!   BB.B	B
8BBc                 B    | j                  | j                  |            S )z)Synchronous wrapper for getting a report.)rD   r   r0   rr   s     r1   
get_reportzLlamaReport.get_report   s    ~~d..y9::r3   c                    K   | j                  d| d       d{   }| j                  j                  || j                         d{   }|j	                          t        di |j                         S 7 \7 /w)a  Get metadata for a specific report asynchronously.

        Returns:
            dict containing:
            - id: Report ID
            - name: Report name
            - state: Current report state
            - report_metadata: Additional metadata
            - template_file: Name of template file if used
            - template_instructions: Template instructions if provided
            - input_files: List of input file names
        rd   z	/metadataNrF   r6   )r\   r7   rI   r   rK   r   rL   r0   rr   rZ   rM   s       r1   aget_report_metadataz LlamaReport.aget_report_metadata   sm      OO&6yk$KLL))#t||)DD!!#000	 MDs!   A<A8.A<
A:.A<:A<c                 B    | j                  | j                  |            S )z0Synchronous wrapper for getting report metadata.)rD   r   r   s     r1   get_report_metadatazLlamaReport.get_report_metadata   s    ~~d77	BCCr3   c                    K   | j                  d|        d{   }| j                  j                  || j                         d{   }|j	                          y7 D7 w)z(Delete a specific report asynchronously.rd   NrF   )r\   r7   deleter   rK   r   s       r1   adelete_reportzLlamaReport.adelete_report  sU     OO&6yk$BCC,,S$,,,GG!!# DGs!   A#A.A#	A!
A#!A#c                 B    | j                  | j                  |            S )z*Synchronous wrapper for deleting a report.)rD   r   r   s     r1   delete_reportzLlamaReport.delete_report  s    ~~d11)<==r3   )NNNNNNr<   )NNNNN)Nd   r   )"__name__
__module____qualname____doc__r   rJ   intr)   r*   r2   propertyr7   r   r   r   rD   rQ   r   r\   r   tuplebytesr   ru   rw   r~   r   r   r   r   r   r   r   r   r6   r3   r1   r   r      s   D "&$()-"&!%:>)
#)
 SM)
 "#	)

 3-)
 #)
 %U%6%67)
V **  
iS!4  ((C ( BF+3DI+>	2 04'+AEEI/32"2"  (}2"  }	2"
  c5e+<&< =>2" d5eCJ.?)?#@AB2"  (}2" 
2"n 04'+AEEI/3

  (}
  }	

  c5e+<&< =>
 d5eCJ.?)?#@AB
  (}
 

, LM
c]
25
EH
	l	
6 LMHc]H25HEHH	l	HC3 C< C;C ;L ;1C 1N 1&DS D^ D$c $d $>s >t >r3   r   )r>   r)   r&   ioconcurrent.futuresr   typingr   r   r   r   r   r	   urllib.parser
   llama_cloud.typesr   "llama_cloud_services.report.reportr   r   r   r6   r3   r1   <module>r      s8      	 	 1 A A   , ;CL~> ~>r3   