
    mhm                         d Z ddlZddlZddlmZ ddlmZmZmZ ddl	Z	ddl
mZ  G d d          Z G d d	e          Z G d
 de          ZdS )z@private    N)	b64encode)AnyListUnion)EventSerializerc                      e Zd ZU eed<   eed<   eed<   eed<   eed<   ej        ed<   deded	ed
ededej        fdZd Z	dej
        fdZdej
        fdZdedefdZdddej
        dededeej
        ef         fdZdS )LangfuseClient_public_key_secret_key	_base_url_version_timeout_session
public_key
secret_keybase_urlversiontimeoutsessionc                 Z    || _         || _        || _        || _        || _        || _        d S N)r
   r   r   r   r   r   )selfr   r   r   r   r   r   s          ;/usr/local/lib/python3.11/site-packages/langfuse/request.py__init__zLangfuseClient.__init__   s4     &%!    c                     dt          | j         d| j                             d                                        d          z   dd| j        | j        dS )NzBasic :zutf-8asciizapplication/jsonpython)AuthorizationzContent-Typex_langfuse_sdk_namex_langfuse_sdk_versionx_langfuse_public_key)r   r
   r   encodedecoder   )r   s    r   generate_headerszLangfuseClient.generate_headers%   si    %#88d&688??HH fWoo /#+&*m%)%5	
 	
 		
r   returnc                     t          j        d          }|                    d|            | j        di |}|                     |dd          S )z6Post the `kwargs` to the batch API endpoint for eventslangfusezuploading data: %sdata uploaded successfullyF)success_messagereturn_json )logging	getLoggerdebugpost_process_response)r   kwargslogress       r   
batch_postzLangfuseClient.batch_post1   sc    
++		&///di!!&!!%%!=5 & 
 
 	
r   c                 z   t          j        d          }|                     | j                  dz   }t	          j        |t                    }|                    d||           |                                 }| j	        
                    |||| j                  }|j        dk    r|                    d           |S )zPost the `kwargs` to the APIr)   z/api/public/ingestion)clszmaking request: %s to %s)contentheadersr      r*   )r.   r/   _remove_trailing_slashr   jsondumpsr   r0   r&   r   r1   r   status_code)r   r3   r4   urldatar:   r5   s          r   r1   zLangfuseClient.post;   s    
++))$.99<SSz&o666		,dC888''))m  w ! 
 
 ?c!!II2333
r   r@   c                 D    |                     d          r
|dd         S |S )z%Removes the trailing slash from a URL/N)endswith)r   r@   s     r   r<   z%LangfuseClient._remove_trailing_slashK   s(    << 	ss8O
r   T)r,   r5   r+   r,   c                   t          j        d          }|                    d|j                   |j        dv rV|                    |           |r=	 |                                S # t
          j        $ r t          |j        d          w xY w|S |j        dk    r	 |                                }|                    dg           }|rt          d |D                       |r|                                n|S # t
          j        $ r t          |j        d          w xY w	 |                                }t          |j        |          # t          t          f$ r t          |j        |j                  w xY w)Nr)   zreceived response: %s)r;      zInvalid JSON response received   errorsc           
          g | ]N}t          |                    d           |                    dd          |                    dd                    OS )statusmessagezNo message providederrorzNo error details provided)APIErrorget.0rM   s     r   
<listcomp>z4LangfuseClient._process_response.<locals>.<listcomp>e   sg        !& % %		( 3 3 %		)5J K K %		'3N O O   r   )r.   r/   r0   textr?   r=   JSONDecodeErrorrN   rO   	APIErrorsKeyError
ValueError)r   r5   r+   r,   r4   payloadrI   s          r   r2   z LangfuseClient._process_responseQ   s    
++		)38444?j((IIo&&& V88::%+ V V V"3?4TUUUV 
_##R((** Xr22 >#  *0  	 	 	 *5=388:::#=' R R Rs0PQQQR	6hhjjG3?G444*% 	6 	6 	63?CH555	6s%   A% %%B
AC8 8%D!)E
 
,E6N)__name__
__module____qualname__str__annotations__inthttpxClientr   r&   Responser6   r1   r<   boolr   r   r2   r-   r   r   r	   r	      se        NNNMMMMMMl     	 
             

 

 


en 
 
 
 
     # #     QU&6 &6 &6>&647&6IM&6	u~s"	#&6 &6 &6 &6 &6 &6r   r	   c                   :    e Zd Zddeeef         dedefdZd ZdS )rN   NrK   rL   detailsc                 0    || _         || _        || _        d S r   )rL   rK   rd   )r   rK   rL   rd   s       r   r   zAPIError.__init__{   s    r   c                 R    d}|                     | j        | j        | j                  S )Nz{0} ({1}): {2})formatrL   rK   rd   )r   msgs     r   __str__zAPIError.__str__   s#    zz$,T\BBBr   r   )	rY   rZ   r[   r   r^   r\   r   r   ri   r-   r   r   rN   rN   z   s^         uS#X  s    
C C C C Cr   rN   c                   ,    e Zd Zdee         fdZd ZdS )rU   rI   c                     || _         d S r   )rI   r   rI   s     r   r   zAPIErrors.__init__   s    r   c                 T    d                     d | j        D                       }d| S )Nz, c              3   4   K   | ]}t          |          V  d S r   )r\   rP   s     r   	<genexpr>z$APIErrors.__str__.<locals>.<genexpr>   s(      ??%3u::??????r   z[Langfuse] )joinrI   rl   s     r   ri   zAPIErrors.__str__   s2    ??4;?????%V%%%r   N)rY   rZ   r[   r   rN   r   ri   r-   r   r   rU   rU      sB        tH~    & & & & &r   rU   )__doc__r=   r.   base64r   typingr   r   r   r_   langfuse.serializerr   r	   	ExceptionrN   rU   r-   r   r   <module>rv      s             # # # # # # # # # #  / / / / / /j6 j6 j6 j6 j6 j6 j6 j6ZC C C C Cy C C C& & & & &	 & & & & &r   