
    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mZmZmZ d dl d dlmZ d dl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OptionalTupleUnion)ResponseInputParam!ResponsesAPIOptionalRequestParamsResponsesAPIResponseResponsesAPIStreamingResponse)*)GenericLiteLLMParams)LlmProviders)Logging   BaseLLMExceptionc                      e Zd Zd Zeedefd              Zed        Z	de
fdZededefd       Zededed	e
defd
       Zedededee   defd       Zedee   dedefd       Zededeeef   dedededefd       Zededej6                  dedefd       Z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f   f
d       Z"edej6                  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j6                  dedefd       Z&e	 	 	 	 	 d1dededededee   dee   d ee'e      d!e(d"e)d#   de!eef   fd$       Z*edej6                  dedefd%       Z+d&ed'e(deeejX                  f   de-fd(Z.	 d2dee   d)ee
   d*ee   de
fd+Z/de
fd,Z0ededededede!eef   f
d-       Z1edej6                  dedefd.       Z2ededeeef   dedededede!eef   fd/       Z3edej6                  dedefd0       Z4y)3BaseResponsesAPIConfigc                      y N selfs    /Users/manta/Documents/Projects/TheRoad-I1/.venv/lib/python3.12/site-packages/litellm/llms/base_llm/responses/transformation.py__init__zBaseResponsesAPIConfig.__init__   s        returnc                      y r   r   r   s    r   custom_llm_providerz*BaseResponsesAPIConfig.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 )N___abc)	__dict__items
startswith
isinstancetypesFunctionTypeBuiltinFunctionTypeclassmethodstaticmethod)clskvs      r   
get_configz!BaseResponsesAPIConfig.get_config&   s     **,
,1<<%LL(&&-- 	  qD,
 	
 
s   A%Bc                      y)zReturn True if this provider handles the file_search tool natively.

        Override in provider subclasses that support file_search without
        LiteLLM emulation (e.g. OpenAI, Azure OpenAI).
        Fr   r   s    r   supports_native_file_searchz2BaseResponsesAPIConfig.supports_native_file_search9   s     r   modelc                      y r   r   )r   r5   s     r   get_supported_openai_paramsz2BaseResponsesAPIConfig.get_supported_openai_paramsA   s    r   response_api_optional_paramsdrop_paramsc                      y r   r   )r   r8   r5   r9   s       r   map_openai_paramsz(BaseResponsesAPIConfig.map_openai_paramsE        	r   headerslitellm_paramsc                     i S r   r   )r   r=   r5   r>   s       r   validate_environmentz+BaseResponsesAPIConfig.validate_environmentN   s	     	r   api_basec                      |t        d      |S )z{
        OPTIONAL

        Get the complete url for the request

        Some providers need `model` in `api_base`
        zapi_base is required)
ValueError)r   rA   r>   s      r   get_complete_urlz'BaseResponsesAPIConfig.get_complete_urlT   s     344r   input$response_api_optional_request_paramsc                      y r   r   )r   r5   rE   rF   r>   r=   s         r   transform_responses_api_requestz6BaseResponsesAPIConfig.transform_responses_api_requeste   s     	r   raw_responselogging_objc                      y r   r   )r   r5   rI   rJ   s       r   transform_response_api_responsez6BaseResponsesAPIConfig.transform_response_api_responsep   r<   r   parsed_chunkc                      y)zb
        Transform a parsed streaming response chunk into a ResponsesAPIStreamingResponse
        Nr   )r   r5   rM   rJ   s       r   transform_streaming_responsez3BaseResponsesAPIConfig.transform_streaming_responsey        	r   response_idc                      y r   r   r   rQ   rA   r>   r=   s        r   %transform_delete_response_api_requestz<BaseResponsesAPIConfig.transform_delete_response_api_request        	r   c                      y r   r   r   rI   rJ   s      r   &transform_delete_response_api_responsez=BaseResponsesAPIConfig.transform_delete_response_api_response        	r   c                      y r   r   rS   s        r   "transform_get_response_api_requestz9BaseResponsesAPIConfig.transform_get_response_api_request   rU   r   c                      y r   r   rW   s      r   #transform_get_response_api_responsez:BaseResponsesAPIConfig.transform_get_response_api_response   rY   r   Nafterbeforeincludelimitorder)ascdescc
                      y r   r   )
r   rQ   rA   r>   r=   r^   r_   r`   ra   rb   s
             r   "transform_list_input_items_requestz9BaseResponsesAPIConfig.transform_list_input_items_request   s     	r   c                      y r   r   rW   s      r   #transform_list_input_items_responsez:BaseResponsesAPIConfig.transform_list_input_items_response   rY   r   error_messagestatus_codec                 $    ddl m}  ||||      )Nr   r   )rj   messager=   )chat.transformationr   )r   ri   rj   r=   r   s        r   get_error_classz&BaseResponsesAPIConfig.get_error_class   s     	;#!
 	
r   streamr"   c                      y)zQReturns True if litellm should fake a stream for the given model and stream valueFr   )r   r5   ro   r"   s       r   should_fake_streamz)BaseResponsesAPIConfig.should_fake_stream   s     r   c                      y)a  
        Returns True if the provider has a native WebSocket endpoint for Responses API.

        Providers with native websocket support can connect directly to wss:// endpoints.
        Providers without native support will use the ManagedResponsesWebSocketHandler
        which makes HTTP streaming calls and forwards events over the websocket.

        Default: False (use managed websocket handler)
        Fr   r   s    r   supports_native_websocketz0BaseResponsesAPIConfig.supports_native_websocket   s     r   c                      y r   r   rS   s        r   %transform_cancel_response_api_requestz<BaseResponsesAPIConfig.transform_cancel_response_api_request   rU   r   c                      y r   r   rW   s      r   &transform_cancel_response_api_responsez=BaseResponsesAPIConfig.transform_cancel_response_api_response   rY   r   c                      y r   r   )r   r5   rE   rF   rA   r>   r=   s          r   &transform_compact_response_api_requestz=BaseResponsesAPIConfig.transform_compact_response_api_request  rP   r   c                      y r   r   rW   s      r   'transform_compact_response_api_responsez>BaseResponsesAPIConfig.transform_compact_response_api_response  rY   r   )NNN   rd   r   )5__name__
__module____qualname__r   propertyr   r   r"   r-   r2   boolr4   strlistr7   r   r   r;   dictr   r   r@   rD   r
   r   rH   httpxResponseLiteLLMLoggingObjr   rL   r   rO   r	   rT   DeleteResponseResultrX   r[   r]   ListintLiteralrf   rh   Headersr   rn   rq   rs   ru   rw   ry   r{   r   r   r   r   r      s]    \    
 
$T      &G  	
 
  $'9ABV9W	 
 3-  
	    S,,- /3	
 -  
   nn '	
 
  		 	 '		
 
'	 	   -	
  
sDy	  nn ' 
	    -	
  
sDy	  nn ' 
	    $ $'+(.  -	
  }  $s)$  }% 
sDy	  nn ' 
	 	
 	
/2	
=B4CV=W	
		
 .2	}  &c]	
 

4 
   -	
  
sDy	  nn ' 
	  		 S,,-	 /3		
 	 -	 	 
sDy		 	 nn ' 
	 r   r   )r*   abcr   r   typingr   r   r   r   r	   r
   r   litellm.types.llms.openair   r   r   r   litellm.types.responses.mainlitellm.types.routerr   litellm.types.utilsr   *litellm.litellm_core_utils.litellm_loggingr   _LiteLLMLoggingObjrm   r   _BaseLLMExceptionr   r   r   r   r   <module>r      sX     # C C   + 5 ,XK*(BS Br   