
     j                         d 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
 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)EventSerializer)langfuse_loggerc                      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e	fdZ
dedej        fdZde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          a/lsinfo/ai/hellotax_ai/base_platform/venv/lib/python3.11/site-packages/langfuse/_utils/request.py__init__zLangfuseClient.__init__   s4     &%!    returnc                     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-Typezx-langfuse-sdk-namezx-langfuse-sdk-versionz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   kwargsc                 L     | j         di |}|                     |dd          S )z6Post the `kwargs` to the batch API endpoint for eventsdata uploaded successfullyF)success_messagereturn_json )post_process_response)r   r&   ress      r   
batch_postzLangfuseClient.batch_post1   s>    di!!&!!%%!=5 & 
 
 	
r   c                 N   |                      | j                  dz   }t          j        |t                    }t          j        d||           |                                 }| j        	                    |||| j
                  }|j        dk    rt          j        d           |S )zPost the `kwargs` to the APIz/api/public/ingestion)clszmaking request: %s to %s)contentheadersr      r(   )_remove_trailing_slashr   jsondumpsr   loggerdebugr%   r   r,   r   status_code)r   r&   urldatar3   r.   s         r   r,   zLangfuseClient.post9   s    ))$.99<SSz&o666/s;;;''))m  w ! 
 
 ?c!!L5666
r   r;   c                 D    |                     d          r
|dd         S |S )z%Removes the trailing slash from a URL/N)endswith)r   r;   s     r   r5   z%LangfuseClient._remove_trailing_slashH   s(    << 	ss8O
r   T)r*   r.   r)   r*   c                   t          j        d|j                   |j        dv rUt          j        |           |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)Nzreceived response: %s)r4      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.0rH   s     r   
<listcomp>z4LangfuseClient._process_response.<locals>.<listcomp>a   sg        !& % %		( 3 3 %		)5J K K %		'3N O O   r   )r8   r9   textr:   r6   JSONDecodeErrorrI   rJ   	APIErrorsKeyError
ValueError)r   r.   r)   r*   payloadrD   s         r   r-   z LangfuseClient._process_responseN   s    	,ch777?j((L))) 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 %A4AC" "%D)D4 4,E N)__name__
__module____qualname__str__annotations__inthttpxClientr   dictr%   r   Responser/   r,   r5   boolr   r-   r+   r   r   r
   r
      s        NNNMMMMMMl     	 
             

$ 

 

 

 


3 
5> 
 
 
 
S U^    # #     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efdZdS )	rI   NrF   rG   detailsc                 0    || _         || _        || _        d S r   )rG   rF   r`   )r   rF   rG   r`   s       r   r   zAPIError.__init__w   s    r   r   c                 R    d}|                     | j        | j        | j                  S )Nz{0} ({1}): {2})formatrG   rF   r`   )r   msgs     r   __str__zAPIError.__str__|   s#    zz$,T\BBBr   r   )	rT   rU   rV   r   rY   rW   r   r   re   r+   r   r   rI   rI   v   sl         uS#X  s    
C C C C C C Cr   rI   c                   2    e Zd Zdee         fdZdefdZdS )rP   rD   c                     || _         d S r   )rD   r   rD   s     r   r   zAPIErrors.__init__   s    r   r   c                 T    d                     d | j        D                       }d| S )Nz, c              3   4   K   | ]}t          |          V  d S r   )rW   rK   s     r   	<genexpr>z$APIErrors.__str__.<locals>.<genexpr>   s(      ??%3u::??????r   z[Langfuse] )joinrD   rh   s     r   re   zAPIErrors.__str__   s2    ??4;?????%V%%%r   N)rT   rU   rV   r   rI   r   rW   re   r+   r   r   rP   rP      sN        tH~    & & & & & & &r   rP   )__doc__r6   base64r   typingr   r   r   rZ   langfuse._utils.serializerr   langfuse.loggerr   r8   r
   	ExceptionrI   rP   r+   r   r   <module>rs      s           # # # # # # # # # #  6 6 6 6 6 6 5 5 5 5 5 5f6 f6 f6 f6 f6 f6 f6 f6RC C C C Cy C C C& & & & &	 & & & & &r   