
    i                         d dl Z d dlmZmZ d dlmZ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 d dlmZmZ erd dlmZ dd	lmZ eZeZneZeZ G d
 de      Zy)    N)ABCabstractmethod)TYPE_CHECKINGAnyDictListOptionalUnion)Headers)AllMessageValuesCreateBatchRequest)LiteLLMBatchLlmProviders)Logging   )BaseLLMExceptionc                      e Zd ZdZd Zeedefd              Ze	d        Z
e	 	 ddeded	ee   d
ededee   dee   defd       Zedee   dee   ded
edededefd       Zededed
ededeeeeeef   f   f
d       Zedee   dej2                  dededef
d       Zeded
ededeeeeeef   f   fd       Zedee   dej2                  dededef
d       Zedededeee f   ddfd       Z!y)BaseBatchesConfiga  
    Abstract base class for batch processing configurations across different LLM providers.

    This class defines the interface that all provider-specific batch configurations
    must implement to work with LiteLLM's unified batch processing system.
    c                      y )N selfs    }/Users/manta/Documents/Projects/TheRoad-I1/.venv/lib/python3.12/site-packages/litellm/llms/base_llm/batches/transformation.py__init__zBaseBatchesConfig.__init__"   s        returnc                      y)z4Return the LLM provider type for this configuration.Nr   r   s    r   custom_llm_providerz%BaseBatchesConfig.custom_llm_provider%   s     	r   c                    | j                   j                         D ci c]`  \  }}|j                  d      sJ|j                  d      s9t        |t        j
                  t        j                  t        t        f      s|||b c}}S c c}}w )z,Get configuration dictionary for this class.___abc)	__dict__items
startswith
isinstancetypesFunctionTypeBuiltinFunctionTypeclassmethodstaticmethod)clskvs      r   
get_configzBaseBatchesConfig.get_config+   s    
 **,
,1<<%LL(&&-- 	  qD,
 	
 
s   A%BNheadersmodelmessagesoptional_paramslitellm_paramsapi_keyapi_basec                      y)a  
        Validate and prepare environment-specific headers and parameters.

        Args:
            headers: HTTP headers dictionary
            model: Model name
            messages: List of messages
            optional_params: Optional parameters
            litellm_params: LiteLLM parameters
            api_key: API key
            api_base: API base URL

        Returns:
            Updated headers dictionary
        Nr   )r   r/   r0   r1   r2   r3   r4   r5   s           r   validate_environmentz&BaseBatchesConfig.validate_environment?   s    4 	r   datac                      y)a~  
        Get the complete URL for batch creation request.

        Args:
            api_base: Base API URL
            api_key: API key
            model: Model name
            optional_params: Optional parameters
            litellm_params: LiteLLM parameters
            data: Batch creation request data

        Returns:
            Complete URL for the batch request
        Nr   )r   r5   r4   r0   r2   r3   r8   s          r   get_complete_batch_urlz(BaseBatchesConfig.get_complete_batch_url[   s    0 	r   create_batch_datac                      y)aR  
        Transform the batch creation request to provider-specific format.

        Args:
            model: Model name
            create_batch_data: Batch creation request data
            optional_params: Optional parameters
            litellm_params: LiteLLM parameters

        Returns:
            Transformed request data
        Nr   )r   r0   r;   r2   r3   s        r   transform_create_batch_requestz0BaseBatchesConfig.transform_create_batch_requestu       ( 	r   raw_responselogging_objc                      y)a2  
        Transform provider-specific batch response to LiteLLM format.

        Args:
            model: Model name
            raw_response: Raw HTTP response
            logging_obj: Logging object
            litellm_params: LiteLLM parameters

        Returns:
            LiteLLM batch object
        Nr   r   r0   r?   r@   r3   s        r   transform_create_batch_responsez1BaseBatchesConfig.transform_create_batch_response   r>   r   batch_idc                      y)a%  
        Transform the batch retrieval request to provider-specific format.

        Args:
            batch_id: Batch ID to retrieve
            optional_params: Optional parameters
            litellm_params: LiteLLM parameters

        Returns:
            Transformed request data
        Nr   )r   rD   r2   r3   s       r    transform_retrieve_batch_requestz2BaseBatchesConfig.transform_retrieve_batch_request   s    $ 	r   c                      y)a<  
        Transform provider-specific batch retrieval response to LiteLLM format.

        Args:
            model: Model name
            raw_response: Raw HTTP response
            logging_obj: Logging object
            litellm_params: LiteLLM parameters

        Returns:
            LiteLLM batch object
        Nr   rB   s        r   !transform_retrieve_batch_responsez3BaseBatchesConfig.transform_retrieve_batch_response   r>   r   error_messagestatus_coder   c                      y)a  
        Get the appropriate error class for this provider.

        Args:
            error_message: Error message
            status_code: HTTP status code
            headers: Response headers

        Returns:
            Provider-specific exception class
        Nr   )r   rI   rJ   r/   s       r   get_error_classz!BaseBatchesConfig.get_error_class   s     	r   )NN)"__name__
__module____qualname____doc__r   propertyr   r   r   r)   r.   dictstrr   r   r	   r7   r   r   r:   r
   bytesr   r=   httpxResponseLiteLLMLoggingObjr   rC   rF   rH   intr   rL   r   r   r   r   r      s    \    
 
&  "&"&  '(	
   # 3- 
 6 3- # 	
   ! 
 2  . 	
  
uc4S>)	* * } nn '	
  
 *   	
 
uc4S>)	* & } nn '	
  
 *  /2=B4==Q	 r   r   )r&   abcr   r   typingr   r   r   r   r	   r
   rU   r   litellm.types.llms.openair   r   litellm.types.utilsr   r   *litellm.litellm_core_utils.litellm_loggingr   _LiteLLMLoggingObjchat.transformationr   _BaseLLMExceptionrW   r   r   r   r   <module>ra      sP     # B B   ;XK*(@ @r   