
    ^h                     P    S r SSK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 OpenAI /v1/embeddings format to Jina AI's  `/v1/embeddings` format. 

Why separate file? Make it easy to see how transformation works

Docs - https://jina.ai/embeddings/
    N)ListOptionalTuple)LlmProviders)get_secret_strc            
           \ rS rSrSr  SS jr\S 5       rS\\	   4S jr
S\S	\S\4S
 jrS\\	   S\\	   S\\	\\	   \\	   4   4S jrSrg)JinaAIEmbeddingConfig   z(
Reference: https://jina.ai/embeddings/
returnNc                     [        5       nUR                  5        H(  u  p#US:w  d  M  Uc  M  [        U R                  X#5        M*     g )Nself)localsitemssetattr	__class__)r   locals_keyvalues       g/home/james-whalen/.local/lib/python3.13/site-packages/litellm/llms/jina_ai/embedding/transformation.py__init__JinaAIEmbeddingConfig.__init__   s7     (!--/JCf}!23 *    c                    U R                   R                  5        VVs0 s H_  u  pUR                  S5      (       a  M  [        U[        R
                  [        R                  [        [        45      (       a  MX  Uc  M]  X_Ma     snn$ s  snnf )N__)	__dict__r   
startswith
isinstancetypesFunctionTypeBuiltinFunctionTypeclassmethodstaticmethod)clskvs      r   
get_config JinaAIEmbeddingConfig.get_config   s     **,
,<<%  &&-- 	   AD,
 	
 
s   B7B9B>Bc                     S/$ N
dimensions )r   s    r   get_supported_openai_params1JinaAIEmbeddingConfig.get_supported_openai_params/   s
    ~r   non_default_paramsoptional_paramsc                 "    SU;   a  US   US'   U$ r)   r+   )r   r.   r/   s      r   map_openai_params'JinaAIEmbeddingConfig.map_openai_params2   s"     --,>|,LOL)r   api_baseapi_keyc                    U=(       d    [        S5      =(       d    SnU=(       dA    [        S5      =(       d/    [        S5      =(       d    [        S5      =(       d    [        S5      n[        R                  R                  X4$ )z
Returns:
    Tuple[str, Optional[str], Optional[str]]:
        - custom_llm_provider: str
        - api_base: str
        - dynamic_api_key: str
JINA_AI_API_BASEzhttps://api.jina.ai/v1JINA_AI_API_KEYJINA_AI_TOKEN)r   r   JINA_AIr   )r   r3   r4   dynamic_api_keys       r   $_get_openai_compatible_provider_info:JinaAIEmbeddingConfig._get_openai_compatible_provider_info9   sy     V'9:V>V 	 " 
,- //0//0/ o.	 	 ##))8DDr   r+   )r   N)__name__
__module____qualname____firstlineno____doc__r   r!   r&   r   strr,   dictr1   r   r   r;   __static_attributes__r+   r   r   r	   r	      s    4	4 
 
"T#Y "&9=	E3-E #E 
sHSM8C=0	1	Er   r	   )rA   r   typingr   r   r   litellmr   litellm.secret_managers.mainr   r	   r+   r   r   <module>rH      s'     ( (   7>E >Er   