
    ^h7                         S r SSKrSSKJrJr  SSKrSSKrSSKJr	  SSK
Jr  SSKJr  SSKJrJrJr  SSKJr  S	S
KJr   " S S\5      rg)z
Transformation logic from Cohere's /v1/rerank format to Infinity's  `/v1/rerank` format. 

Why separate file? Make it easy to see how transformation works
    N)ListOptional)Logging)CohereRerankConfig)get_secret_str)RerankBilledUnitsRerankResponseMetaRerankTokens)RerankResponse   )InfinityErrorc                       \ rS rSr SS\S\S\\   S\4S jjrS0 0 0 4S\S\R                  S	\
S
\S\\   S\S\S\S\
4S jjrSrg)InfinityRerankConfig   Nheadersmodelapi_keyreturnc                     Uc4  [        S5      =(       d"    [        S5      =(       d    [        R                  nSU 3SSS.nSU;   a  US   US'   0 UEUE$ )NINFINITY_API_KEYzbearer zapplication/json)Authorizationacceptzcontent-typer   )r   litellminfinity_key)selfr   r   r   default_headerss        e/home/james-whalen/.local/lib/python3.13/site-packages/litellm/llms/infinity/rerank/transformation.pyvalidate_environment)InfinityRerankConfig.validate_environment   sw     ?12 (!"45(''   'wi0(.
 g%/6/GOO, ./-W--    raw_responsemodel_responselogging_objrequest_dataoptional_paramslitellm_paramsc	                 `    UR                  5       n	[        S0 U	R                  S0 5      D6n
[        U	R                  S0 5      R                  SS5      U	R                  S0 5      R                  SS5      U	R                  S0 5      R                  SS5      -
  S9n[        XS9nU	R                  S5      nUc  [        S	U	 35      e[        U	R                  S
5      =(       d    [        [        R                  " 5       5      UUS9$ ! [         a    [        UR                  UR                  S9ef = f)zm
Transform Infinity rerank response

No transformation required, Infinity follows Cohere API response format
)messagestatus_codeusageprompt_tokensr   total_tokens)input_tokensoutput_tokens)billed_unitstokensresultsz!No results found in the response=id)r2   r1   meta )json	Exceptionr   textr)   r   getr
   r	   
ValueErrorr   struuiduuid4)r   r   r!   r"   r#   r   r$   r%   r&   raw_response_json_billed_units_tokensrerank_meta_resultss                 r   transform_rerank_response.InfinityRerankConfig.transform_rerank_response1   s2    	 , 1 1 3 *O,=,A,A'2,NO*..w;??QRS!%%gr266~qI#''488!LM
 )mT):)>)>y)I@AR@STUU $$T*?c$**,.?
 	
)  	$))|7O7O 	s   D )D-r4   )N)__name__
__module____qualname____firstlineno__dictr:   r   r   httpxResponser   LiteLLMLoggingObjrB   __static_attributes__r4   r    r   r   r      s    
 "&	.. . #	.
 
.@ "& "!*
*
 nn*
 '	*

 '*
 #*
 *
 *
 *
 
*
 *
r    r   )__doc__r;   typingr   r   rI   r   *litellm.litellm_core_utils.litellm_loggingr   rK   )litellm.llms.cohere.rerank.transformationr   litellm.secret_managers.mainr   litellm.types.rerankr   r	   r
   litellm.types.utilsr   common_utilsr   r   r4   r    r   <module>rU      s<     !   S H 7 T T . 'E
- E
r    