
    j                         d dl Z d dlmZ ddlmZ ddlmZmZ ddlm	Z	m
Z
 ddlmZ ddlmZ dd	lmZ  e j"                  e j$                  d
      Z G d d      Z G d d      Zy)    N)JSONDecodeError   )ApiError)AsyncClientWrapperSyncClientWrapper)AsyncHttpResponseHttpResponse)RequestOptions)'convert_and_respect_annotation_metadata)GuardrailWrite.c                   l    e Zd ZdefdZdddej                  e   dej                  e	   de
d   fdZy)	RawGuardrailsClientclient_wrapperc                    || _         y N_client_wrapperselfr   s     |/Users/manta/Documents/Projects/TheRoad-I1/backend/.venv/lib/python3.12/site-packages/opik/rest_api/guardrails/raw_client.py__init__zRawGuardrailsClient.__init__   
    -    Nrequest_options
guardrailsr   returnc          
         | j                   j                  j                  dddt        |t        j
                  t           d      iddi|t              }	 d	|j                  cxk  rd
k  rn nt        |d      S |j                         }t        |j                  t        |j                        |      # t        $ r6 t        |j                  t        |j                        |j                        w xY w)a,  
        Batch guardrails for traces

        Parameters
        ----------
        guardrails : typing.Sequence[GuardrailWrite]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        HttpResponse[None]
        v1/private/guardrailsPOSTr   writeobject_
annotation	directioncontent-typeapplication/jsonmethodjsonheadersr   omit   ,  Nresponsedatastatus_coder+   body)r   httpx_clientrequestr   typingSequencer   OMITr3   r	   r*   r   r   dictr+   textr   r   r   	_response_response_jsons        r   create_guardrailsz%RawGuardrailsClient.create_guardrails   s    " ((55==#E&6??>3R^e  2 , > 
		ti++1c1#YTBB&^^-N 9#8#8$yGXGXBY`noo  	ty'<'<d9K\K\F]dmdrdrss	ts   $B6 ;B6 6?C5)__name__
__module____qualname__r   r   r7   r8   r   Optionalr
   r	   r?    r   r   r   r      sO    .*; . rv%p#__^<%pOU_mOn%p	d	%pr   r   c                   l    e Zd ZdefdZdddej                  e   dej                  e	   de
d   fdZy)	AsyncRawGuardrailsClientr   c                    || _         y r   r   r   s     r   r   z!AsyncRawGuardrailsClient.__init__>   r   r   Nr   r   r   r   c          
        K   | j                   j                  j                  dddt        |t        j
                  t           d      iddi|t               d	{   }	 d
|j                  cxk  rdk  rn nt        |d	      S |j                         }t        |j                  t        |j                        |      7 e# t        $ r6 t        |j                  t        |j                        |j                        w xY ww)a1  
        Batch guardrails for traces

        Parameters
        ----------
        guardrails : typing.Sequence[GuardrailWrite]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        AsyncHttpResponse[None]
        r   r    r   r!   r"   r&   r'   r(   Nr-   r.   r/   r2   )r   r5   r6   r   r7   r8   r   r9   r3   r   r*   r   r   r:   r+   r;   r<   s        r   r?   z*AsyncRawGuardrailsClient.create_guardrailsA   s     " ..;;CC#E&6??>3R^e  2 , D 
 
		ti++1c1()$GG&^^-N 9#8#8$yGXGXBY`noo)
$  	ty'<'<d9K\K\F]dmdrdrss	ts6   ADC D $C DC ,D?DD)r@   rA   rB   r   r   r7   r8   r   rC   r
   r   r?   rD   r   r   rF   rF   =   sO    .*< . rv%p#__^<%pOU_mOn%p	4	 %pr   rF   )r7   json.decoderr   core.api_errorr   core.client_wrapperr   r   core.http_responser   r	   core.request_optionsr
   core.serializationr   types.guardrail_writer   castAnyr9   r   rF   rD   r   r   <module>rR      sP     ( % G @ 1 H 2 v{{6::s#)p )pX)p )pr   