
    i2                         d Z ddlmZmZ ddlmZmZmZmZm	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mZmZmZmZmZmZmZ ddlmZ ddlmZ er	dd	lm Z! e!Z"neZ" G d
 de      Z#y)z(
Base configuration class for Evals API
    )ABCabstractmethod)TYPE_CHECKINGAnyDictOptionalTupleNBaseLLMException)CancelEvalResponseCancelRunResponseCreateEvalRequestCreateRunRequestDeleteEvalResponseEvalListEvalsParamsListEvalsResponseListRunsParamsListRunsResponseRunRunDeleteResponseUpdateEvalRequest)GenericLiteLLMParams)LlmProviders)Loggingc                      e Zd ZdZd Zeedefd              Zede	de
e   de	fd       Ze	 d-d	e
e   d
ede
e   defd       Zededede	defd       Zedej&                  dedefd       Zededede	deeef   fd       Zedej&                  dedefd       Zeded	edede	deeef   f
d       Zedej&                  dedefd       Zededed	edede	deeeef   fd       Zedej&                  dedefd       Z eded	edede	deeef   f
d       Z!edej&                  dede"fd       Z#eded	edede	deeeef   f
d       Z$edej&                  dede%fd       Z&edede'dede	deeef   f
d       Z(edej&                  dede)fd       Z*edede+dede	deeef   f
d        Z,edej&                  dede-fd!       Z.eded"ed	edede	deeef   fd#       Z/edej&                  dede)fd$       Z0eded"ed	edede	deeeef   fd%       Z1edej&                  dede2fd&       Z3eded"ed	edede	deeeef   fd'       Z4edej&                  dedd(fd)       Z5d*ed+e6de	de7fd,Z8y).BaseEvalsAPIConfigz*Base configuration for Evals API providersc                      y N selfs    {/Users/manta/Documents/Projects/TheRoad-I1/.venv/lib/python3.12/site-packages/litellm/llms/base_llm/evals/transformation.py__init__zBaseEvalsAPIConfig.__init__(   s        returnc                      y r   r    r!   s    r#   custom_llm_providerz&BaseEvalsAPIConfig.custom_llm_provider+   s     	r%   headerslitellm_paramsc                     |S )z
        Validate and update headers with provider-specific requirements

        Args:
            headers: Base headers dictionary
            litellm_params: LiteLLM parameters

        Returns:
            Updated headers dictionary
        r    )r"   r)   r*   s      r#   validate_environmentz'BaseEvalsAPIConfig.validate_environment0   s	     r%   Napi_baseendpointeval_idc                 *    |t        d      | d| S )a  
        Get the complete URL for the API request

        Args:
            api_base: Base API URL
            endpoint: API endpoint (e.g., 'evals', 'evals/{id}')
            eval_id: Optional eval ID for specific eval operations

        Returns:
            Complete URL
        zapi_base is requiredz/v1/)
ValueError)r"   r-   r.   r/   s       r#   get_complete_urlz#BaseEvalsAPIConfig.get_complete_url@   s'    $ 3444z**r%   create_requestc                      y)a   
        Transform create eval request to provider-specific format

        Args:
            create_request: Eval creation parameters
            litellm_params: LiteLLM parameters
            headers: Request headers

        Returns:
            Provider-specific request body
        Nr    )r"   r3   r*   r)   s       r#   transform_create_eval_requestz0BaseEvalsAPIConfig.transform_create_eval_requestV       $ 	r%   raw_responselogging_objc                      yz
        Transform provider response to Eval object

        Args:
            raw_response: Raw HTTP response
            logging_obj: Logging object

        Returns:
            Eval object
        Nr    r"   r7   r8   s      r#   transform_create_eval_responsez1BaseEvalsAPIConfig.transform_create_eval_responsej         	r%   list_paramsc                      y)a  
        Transform list evals request parameters

        Args:
            list_params: List parameters (pagination, filters)
            litellm_params: LiteLLM parameters
            headers: Request headers

        Returns:
            Tuple of (url, query_params)
        Nr    )r"   r>   r*   r)   s       r#   transform_list_evals_requestz/BaseEvalsAPIConfig.transform_list_evals_request|   r6   r%   c                      y)z
        Transform provider response to ListEvalsResponse

        Args:
            raw_response: Raw HTTP response
            logging_obj: Logging object

        Returns:
            ListEvalsResponse object
        Nr    r;   s      r#   transform_list_evals_responsez0BaseEvalsAPIConfig.transform_list_evals_response   r=   r%   c                      y)a  
        Transform get eval request

        Args:
            eval_id: Eval ID
            api_base: Base API URL
            litellm_params: LiteLLM parameters
            headers: Request headers

        Returns:
            Tuple of (url, headers)
        Nr    r"   r/   r-   r*   r)   s        r#   transform_get_eval_requestz-BaseEvalsAPIConfig.transform_get_eval_request       ( 	r%   c                      yr:   r    r;   s      r#   transform_get_eval_responsez.BaseEvalsAPIConfig.transform_get_eval_response   r=   r%   update_requestc                      y)a<  
        Transform update eval request

        Args:
            eval_id: Eval ID
            update_request: Update parameters
            api_base: Base API URL
            litellm_params: LiteLLM parameters
            headers: Request headers

        Returns:
            Tuple of (url, headers, body)
        Nr    )r"   r/   rI   r-   r*   r)   s         r#   transform_update_eval_requestz0BaseEvalsAPIConfig.transform_update_eval_request       , 	r%   c                      yr:   r    r;   s      r#   transform_update_eval_responsez1BaseEvalsAPIConfig.transform_update_eval_response   r=   r%   c                      y)a  
        Transform delete eval request

        Args:
            eval_id: Eval ID
            api_base: Base API URL
            litellm_params: LiteLLM parameters
            headers: Request headers

        Returns:
            Tuple of (url, headers)
        Nr    rD   s        r#   transform_delete_eval_requestz0BaseEvalsAPIConfig.transform_delete_eval_request   rF   r%   c                      y)z
        Transform provider response to DeleteEvalResponse

        Args:
            raw_response: Raw HTTP response
            logging_obj: Logging object

        Returns:
            DeleteEvalResponse object
        Nr    r;   s      r#   transform_delete_eval_responsez1BaseEvalsAPIConfig.transform_delete_eval_response
  r=   r%   c                      y)a  
        Transform cancel eval request

        Args:
            eval_id: Eval ID
            api_base: Base API URL
            litellm_params: LiteLLM parameters
            headers: Request headers

        Returns:
            Tuple of (url, headers, body)
        Nr    rD   s        r#   transform_cancel_eval_requestz0BaseEvalsAPIConfig.transform_cancel_eval_request  rF   r%   c                      y)z
        Transform provider response to CancelEvalResponse

        Args:
            raw_response: Raw HTTP response
            logging_obj: Logging object

        Returns:
            CancelEvalResponse object
        Nr    r;   s      r#   transform_cancel_eval_responsez1BaseEvalsAPIConfig.transform_cancel_eval_response2  r=   r%   c                      y)a9  
        Transform create run request to provider-specific format

        Args:
            eval_id: Eval ID
            create_request: Run creation parameters
            litellm_params: LiteLLM parameters
            headers: Request headers

        Returns:
            Tuple of (url, request_body)
        Nr    )r"   r/   r3   r*   r)   s        r#   transform_create_run_requestz/BaseEvalsAPIConfig.transform_create_run_requestE  rF   r%   c                      yz
        Transform provider response to Run object

        Args:
            raw_response: Raw HTTP response
            logging_obj: Logging object

        Returns:
            Run object
        Nr    r;   s      r#   transform_create_run_responsez0BaseEvalsAPIConfig.transform_create_run_response[  r=   r%   c                      y)a2  
        Transform list runs request parameters

        Args:
            eval_id: Eval ID
            list_params: List parameters (pagination, filters)
            litellm_params: LiteLLM parameters
            headers: Request headers

        Returns:
            Tuple of (url, query_params)
        Nr    )r"   r/   r>   r*   r)   s        r#   transform_list_runs_requestz.BaseEvalsAPIConfig.transform_list_runs_requestm  rF   r%   c                      y)z
        Transform provider response to ListRunsResponse

        Args:
            raw_response: Raw HTTP response
            logging_obj: Logging object

        Returns:
            ListRunsResponse object
        Nr    r;   s      r#   transform_list_runs_responsez/BaseEvalsAPIConfig.transform_list_runs_response  r=   r%   run_idc                      y)a  
        Transform get run request

        Args:
            eval_id: Eval ID
            run_id: Run ID
            api_base: Base API URL
            litellm_params: LiteLLM parameters
            headers: Request headers

        Returns:
            Tuple of (url, headers)
        Nr    r"   r/   r`   r-   r*   r)   s         r#   transform_get_run_requestz,BaseEvalsAPIConfig.transform_get_run_request  rL   r%   c                      yrZ   r    r;   s      r#   transform_get_run_responsez-BaseEvalsAPIConfig.transform_get_run_response  r=   r%   c                      y)a(  
        Transform cancel run request

        Args:
            eval_id: Eval ID
            run_id: Run ID
            api_base: Base API URL
            litellm_params: LiteLLM parameters
            headers: Request headers

        Returns:
            Tuple of (url, headers, body)
        Nr    rb   s         r#   transform_cancel_run_requestz/BaseEvalsAPIConfig.transform_cancel_run_request  rL   r%   c                      y)z
        Transform provider response to CancelRunResponse

        Args:
            raw_response: Raw HTTP response
            logging_obj: Logging object

        Returns:
            CancelRunResponse object
        Nr    r;   s      r#   transform_cancel_run_responsez0BaseEvalsAPIConfig.transform_cancel_run_response  r=   r%   c                      y)a(  
        Transform delete run request

        Args:
            eval_id: Eval ID
            run_id: Run ID
            api_base: Base API URL
            litellm_params: LiteLLM parameters
            headers: Request headers

        Returns:
            Tuple of (url, headers, body)
        Nr    rb   s         r#   transform_delete_run_requestz/BaseEvalsAPIConfig.transform_delete_run_request  rL   r%   r   c                      y)z
        Transform provider response to RunDeleteResponse

        Args:
            raw_response: Raw HTTP response
            logging_obj: Logging object

        Returns:
            RunDeleteResponse object
        Nr    r;   s      r#   transform_delete_run_responsez0BaseEvalsAPIConfig.transform_delete_run_response  r=   r%   error_messagestatus_codec                     t        |||      S )z-Get appropriate error class for the provider.)ro   messager)   r
   )r"   rn   ro   r)   s       r#   get_error_classz"BaseEvalsAPIConfig.get_error_class  s      #!
 	
r%   r   )9__name__
__module____qualname____doc__r$   propertyr   r   r(   dictr   r   r,   strr2   r   r   r5   httpxResponseLiteLLMLoggingObjr   r<   r   r	   r@   r   rB   rE   rH   r   rK   rN   rP   r   rR   rT   r   rV   r   rX   r   r[   r   r]   r   r_   rc   re   rg   r   ri   rk   rm   int	Exceptionrr   r    r%   r#   r   r   %   so   4 \    -56J-K	  
 "&	+3-+ + #	+
 
+ +* ) - 	
 
 & nn ' 
	 " $ - 	
 
sDy	 & nn ' 
	 "   -	
  
sDy	 * nn ' 
	 "  * 	
 -  
sD$	 . nn ' 
	 "   -	
  
sDy	 * nn ' 
	 "   -	
  
sD$	 * nn ' 
	 $  ) -	
  
sDy	 * nn ' 
	 "  $ -	
  
sDy	 * nn ' 
	 "   	
 -  
sDy	 . nn ' 
	 "   	
 -  
sD$	 . nn ' 
	 "   	
 -  
sD$	 . nn ' 
	 "

 
 	

 

r%   r   )$rv   abcr   r   typingr   r   r   r   r	   rz   )litellm.llms.base_llm.chat.transformationr   litellm.types.llms.openai_evalsr   r   r   r   r   r   r   r   r   r   r   r   r   litellm.types.routerr   litellm.types.utilsr   *litellm.litellm_core_utils.litellm_loggingr   _LiteLLMLoggingObjr|   r   r    r%   r#   <module>r      sW    $ < <  F    6 ,X*y
 y
r%   