Ë
    uPêjo  ã                   ó    — U d dl mZ d dlmZ d dlmZ d dlmZ ddlm	Z	  G d„ de	«      Z
d	ed
edz  fd„ZdZeed<   ded
efd„Z G d„ d«      Zy)é    )ÚFinal)ÚHeaders©Úget_secret_str)ÚAllMessageValuesé   )ÚBaseLLMExceptionc                   ó   — e Zd Zy)ÚFireworksAIExceptionN)Ú__name__Ú
__module__Ú__qualname__© ó    úk/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/litellm/llms/fireworks_ai/common_utils.pyr   r      s   „ Ør   r   Úlitellm_paramsÚreturnNc                 óÔ   — | }dD ]"  }|j                  |«      }|sŒt        |«      c S  |j                  d«      }t        |t        «      r|j                  d«      }|rt        |«      S y)a9  
    Session id to send as `x-session-affinity`, or None when the caller gave none.

    Deliberately does not fall back to `litellm_trace_id`: that is generated per
    request (`str(uuid.uuid4())` when absent), so using it pins every request to a
    different Fireworks node and prompt caching never hits.
    )Úlitellm_session_idÚ
session_idÚmetadatar   N)ÚgetÚstrÚ
isinstanceÚdict)r   ÚparamsÚkeyÚvaluer   s        r   Úget_fireworks_session_idr      sj   € ð #€FØ3ò ˆØ—
‘
˜3“ˆÚÜ�u“:Òðð —j‘j Ó,€HÜ�(œDÔ!Ø—‘˜\Ó*ˆÙÜ�u“:ÐØr   zFW-Ú'AZURE_FOUNDRY_FIREWORKS_MODEL_ID_PREFIXÚmodelc                 óÀ   — | j                  d«      }|j                  dt        f«      sd|v r|S |j                  d«      rd|› �S |j                  d«      rd|› �S d|› �S )	Nzfireworks_ai/z	accounts/ú#)zrouters/zmodels/zaccounts/fireworks/z-fastzaccounts/fireworks/routers/zaccounts/fireworks/models/)ÚremoveprefixÚ
startswithr    Úendswith)r!   Ústrippeds     r   Úresolve_fireworks_resource_namer(   '   sx   € Ø×(Ñ(¨Ó9€HØ×Ñ˜KÔ)PÐQÔRÐVYÐ]eÑVeØˆØ×ÑÐ2Ô3Ø$ X JÐ/Ð/Ø×Ñ˜Ô!Ø,¨X¨JÐ7Ð7Ø'¨ zÐ2Ð2r   c                   óž   — e Zd ZdZdededeez  defd„Z	dedz  dedz  fd	„Z
	 	 dded
edee   dedededz  dedz  defd„Zdededefd„Zy)ÚFireworksAIMixinzD
    Common Base Config functions across Fireworks AI Endpoints
    Úerror_messageÚstatus_codeÚheadersr   c                 ó   — t        |||¬«      S )N)r,   Úmessager-   )r   )Úselfr+   r,   r-   s       r   Úget_error_classz FireworksAIMixin.get_error_class7   s   € Ü#Ø#Ø!Øô
ð 	
r   Úapi_keyNc                 ór   — |xs2 t        d«      xs% t        d«      xs t        d«      xs t        d«      }|S )NÚFIREWORKS_API_KEYÚFIREWORKS_AI_API_KEYÚFIREWORKSAI_API_KEYÚFIREWORKS_AI_TOKENr   )r0   r2   Údynamic_api_keys      r   Ú_get_api_keyzFireworksAIMixin._get_api_key>   sL   € Ø!(ò "
ÜÐ.Ó/ò 4ÜÐ4Ó5ò4äÐ3Ó4ò4ô Ð2Ó3ð	 	ð Ðr   r!   ÚmessagesÚoptional_paramsr   Úapi_basec                 ó¬   — | j                  |«      }|€t        d«      ‚dd|› �i|¥}t        d„ |D «       «      ri nddi}	| j                  i |¥|	¥|«      S )NzFIREWORKS_API_KEY is not setÚAuthorizationzBearer c              3   óB   K  — | ]  }|j                  «       d k(  –— Œ y­w)zcontent-typeN©Úlower©Ú.0r   s     r   ú	<genexpr>z8FireworksAIMixin.validate_environment.<locals>.<genexpr>W   s   è ø€ ÒL¸�c—i‘i“k ^Õ3ÑLùó   ‚zContent-Typezapplication/json)r9   Ú
ValueErrorÚanyÚ_add_session_affinity_header)
r0   r-   r!   r:   r;   r   r2   r<   Úauth_headersÚcontent_type_headers
             r   Úvalidate_environmentz%FireworksAIMixin.validate_environmentG   s{   € ð ×#Ñ# GÓ,ˆØˆ?ÜÐ;Ó<Ð<à.°'¸'¸Ð0CÐOÀwÐOˆäÑL¸|ÔLÔL‰BÐSaÐcuÐRvð 	ð ×0Ñ0Ð1X°LÐ1XÐDWÐ1XÐZhÓiÐir   c                 óX   — t        d„ |D «       «      r|S t        |«      }|s|S i |¥d|i¥S )Nc              3   óB   K  — | ]  }|j                  «       d k(  –— Œ y­w)úx-session-affinityNr@   rB   s     r   rD   z@FireworksAIMixin._add_session_affinity_header.<locals>.<genexpr>\   s   è ø€ ÒF°sˆs�y‰y‹{Ð2Õ2ÑFùrE   rN   )rG   r   )r0   r-   r   r   s       r   rH   z-FireworksAIMixin._add_session_affinity_header[   s:   € ÜÑF¸gÔFÔFØˆNÜ4°^ÓDˆ
ÙØˆNØ<�'Ð<Ð/°Ñ<Ð<r   )NN)r   r   r   Ú__doc__r   Úintr   r   r	   r1   r9   Úlistr   rK   rH   r   r   r   r*   r*   2   sÖ   „ ñð
¨Sð 
¸sð 
ÈTÐT[É^ð 
Ð`pó 
ð C¨$¡Jð °3¸±:ó ð  #Ø#ñjàðjð ðjð Ð'Ñ(ð	jð
 ðjð ðjð �t‘ðjð ˜‘*ðjð 
ójð(=°Dð =È$ð =ÐSWô =r   r*   )Útypingr   Úhttpxr   Úlitellm.secret_managers.mainr   Úlitellm.types.llms.openair   Úbase_llm.chat.transformationr	   r   r   r   r   r    Ú__annotations__r(   r*   r   r   r   ú<module>rX      sb   ðÞ å å 7Ý 6å ;ô	Ð+ô 	ð¨Tð °c¸D±jó ð* 27Ð '¨Ó 6ð3¨3ð 3°3ó 3÷/=ò /=r   