Ë
    uPêje$  ã                   ó.  — U d Z ddlZddlZddlZddlmZ ddlmZ ddlm	Z	 ddl
mZmZmZ ddlZ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 ddlmZmZmZ ddlm Z  ddl!m"Z"m#Z# eeedœZ$ee%e&e'f      e(d<   de%fd„Z)de%defd„Z*dede%defd„Z+de%e&ef   fd„Z,de-e&   fd„Z.de-e&   fd„Z/ e,«       Z0ee(d<   e0jc                  d«      Z2ee(d<   e0jc                  d«      Z3ee(d<   e0jc                  d«      Z4ee(d<   e0jc                  d«      Z5ee(d<   e0jc                  d«      Z6ee(d<   e0jc                  d«      Z7ee(d<   e0jc                  d «      Z8ee(d <   e0jc                  d!«      Z9ee(d!<   e0jc                  d"«      Z:ee(d"<   e0jc                  d#«      Z;ee(d#<   y)$z´
Factory for generating container SDK functions from JSON config.

This module reads endpoints.json and dynamically generates SDK functions
that use the generic container handler.
é    N)ÚCallable)Úpartial)ÚPath)ÚAnyÚFinalÚLiteral)Úrequest_timeout)Ú'decode_managed_container_id_for_request)ÚLogging)ÚBaseContainerConfig)Úgeneric_container_handler)ÚContainerFileListResponseÚContainerFileObjectÚDeleteContainerFileResponse)ÚGenericLiteLLMParams)ÚProviderConfigManagerÚclientÚRESPONSE_TYPESÚreturnc                  ó¦   — t        t        «      j                  dz  } t        | «      5 }t	        j
                  |«      cddd«       S # 1 sw Y   yxY w)z0Load the endpoints configuration from JSON file.zendpoints.jsonN)r   Ú__file__ÚparentÚopenÚjsonÚload)Úconfig_pathÚfs     úh/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/litellm/containers/endpoint_factory.pyÚ_load_endpoints_configr   &   sA   € äœh›×.Ñ.Ð1AÑA€KÜ	ˆkÓ	ð ˜aÜ�y‰y˜‹|÷÷ ò ús   ¨AÁAÚendpoint_configc                 ó:  ‡‡‡— | d   Št         j                  | d   «      Š| j                  dg «      Št        	 	 	 	 	 ddt        dt        d   dt
        t        t        f   dz  d	t
        t        t        f   dz  d
t
        t        t        f   dz  f
ˆˆˆfd„«       }|S )z‰
    Create a sync SDK function from endpoint config.

    Uses the generic container handler instead of individual handler methods.
    ÚnameÚresponse_typeÚpath_paramsNÚtimeoutÚcustom_llm_provider©ÚopenaiÚazureÚ
azure_textÚextra_headersÚextra_queryÚ
extra_bodyc                 ó  •— t        «       }	 |}|j                  d«      }|j                  d«      }	|j                  dd«      du }
|j                  d«      }|�1t        |t        «      rt        j                  |«      }‰r ‰di |¤ŽS |S t        di |¤Ž}d|v r+t        |d   t        «      rt        |d   ||¬«      \  |d<   }}t        j                  t        j                  |«      ¬	«      }|€t        d
|› �«      ‚‰D �ci c]  }||v sŒ||j                  |«      “Œ }}|j                  |d|d|	i|¬«       t        j                   d‰|||||| xs t"        |
dœ|¤ŽS c c}w # t$        $ r}t        j&                  d|||¬«      ‚d }~ww xY w)NÚlitellm_logging_objÚlitellm_call_idÚ
async_callFTÚmock_responseÚcontainer_id)r3   r&   Úlitellm_params)Úproviderz)Container provider config not found for: Ú )ÚkwargsÚmodelÚoptional_paramsr4   r&   )Úendpoint_nameÚcontainer_provider_configr4   Úlogging_objr+   r,   r%   Ú	_is_async©r8   r&   Úoriginal_exceptionÚcompletion_kwargsÚextra_kwargs© )ÚlocalsÚpopÚgetÚ
isinstanceÚstrr   Úloadsr   r
   r   Úget_provider_container_configÚlitellmÚLlmProvidersÚ
ValueErrorÚupdate_from_kwargsr   ÚhandleÚDEFAULT_REQUEST_TIMEOUTÚ	ExceptionÚexception_type)r%   r&   r+   r,   r-   r7   Ú
local_varsÚresolved_custom_llm_providerr/   r0   r=   r2   r4   r;   Úkr9   Úer:   r$   r#   s                    €€€r   Úendpoint_funcz4create_sync_endpoint_function.<locals>.endpoint_func7   sõ  ø€ ô #›Hˆ
ðD	Ø0CÐ(Ø<B¿J¹JÐG\Ó<]ÐØ17·±Ð<MÓ1NˆOØ%Ÿz™z¨,¸Ó>À$ÐFˆIð #ŸJ™J Ó7ˆMØÐ(Ü˜m¬SÔ1Ü$(§J¡J¨}Ó$=�MÙ Ù(Ñ9¨=Ñ9Ð9Ø$Ð$ô 2Ñ;°FÑ;ˆNð  Ñ'¬J°v¸nÑ7MÌsÔ,Sô
 <Ø!'¨Ñ!7Ø(DØ#1ôñ	Ø˜>Ñ*Ø0Ø"ô EZ×DwÑDwÜ ×-Ñ-Ð.JÓKôEÐ%ð )Ð0Ü Ð#LÐMiÐLjÐ!kÓlÐlð ALÖ%[¸1ÈqÐTZÊ{ a¨¯©°A«Ñ&6Ð%[ˆOÐ%[ð  ×2Ñ2ØØØ /Ø 1°?ÐCØ$@ð 3ô ô -×3Ñ3ð 
Ø+Ø*CØ-Ø/Ø+Ø'ØÒ:Ô#:Ø#ñ
ð ñ
ð 
ùò &\øô0 ò 	Ü×(Ñ(ØØ$@Ø#$Ø",Ø#ôð ûð	ús=   �A9E# ÂE# Â	A7E# Ä 	EÄ
EÄ?E# ÅE# Å#	FÅ,FÆF©iX  r(   NNN)r   rE   r   Úintr   ÚdictrG   r   )r    rV   r:   r$   r#   s     @@@r   Úcreate_sync_endpoint_functionrZ   -   sÂ   ú€ ð +¨6Ñ2€MÜ)×-Ñ-¨o¸oÑ.NÓO€MØ(×,Ñ,¨]¸BÓ?€KäàØHPØ/3Ø-1Ø,0ñMÜðMä$Ð%DÑEðMô œC¤˜H‘~¨Ñ,ðMô œ#œs˜(‘^ dÑ*ð	Mô
 œœc˜‘N TÑ)öMó ðMð^ Ðó    Ú	sync_funcc                 óÔ   ‡ — t         	 	 	 	 	 d	dt        dt        d   dt        t        t
        f   dz  dt        t        t
        f   dz  dt        t        t
        f   dz  f
ˆ fd„«       }|S )
z:Create an async SDK function that wraps the sync function.Nr%   r&   r'   r+   r,   r-   c           	   ›   ó¨  •K  — t        «       }	 t        j                  «       }d|d<   t        ‰f| ||||dœ|¤Ž}t	        j
                  «       }	t        |	j                  |«      }
|j                  d |
«      ƒ d {  –—† }t        j                  |«      r|ƒ d {  –—† }|S |}|S 7 Œ)7 Œ# t        $ r}t        j                  d||||¬«      ‚d }~ww xY w­w)NTr1   )r%   r&   r+   r,   r-   r6   r>   )rC   ÚasyncioÚget_event_loopr   ÚcontextvarsÚcopy_contextÚrunÚrun_in_executorÚiscoroutinerP   rJ   rQ   )r%   r&   r+   r,   r-   r7   rR   ÚloopÚfuncÚctxÚfunc_with_contextÚinit_responseÚresponserU   r\   s                 €r   Úasync_endpoint_funcz;create_async_endpoint_function.<locals>.async_endpoint_func�   s÷   øè ø€ ô #›Hˆ
ð	Ü!×0Ñ0Ó2ˆDØ#'ˆF�<Ñ ä!ØðàØ$7Ø+Ø'Ø%ñð ñˆDô %×1Ñ1Ó3ˆCÜ'.¨s¯w©w¸Ó'=ÐØ)-×)=Ñ)=¸dÐDUÓ)V×#VˆMä×"Ñ" =Ô1Ø!.×.�ð ˆOð )�àˆOð $Wøð /ùô
 ò 	Ü×(Ñ(ØØ$7Ø#$Ø",Ø#ôð ûð	üsY   ƒC�A*B' Á9B#Á:B' ÂB%ÂB' ÂCÂB' Â"CÂ#B' Â%B' Â'	CÂ0C
Ã
CÃCrW   )r   rX   r   rY   rG   r   )r\   r    rl   s   `  r   Úcreate_async_endpoint_functionrm   Š   sŠ   ø€ ô àØHPØ/3Ø-1Ø,0ñ(Üð(ä$Ð%DÑEð(ô œC¤˜H‘~¨Ñ,ð(ô œ#œs˜(‘^ dÑ*ð	(ô
 œœc˜‘N TÑ)ô(ó ð(ðT Ðr[   c                  ó€   — t        «       } i }| d   D ])  }t        |«      }|||d   <   t        ||«      }|||d   <   Œ+ |S )zŽ
    Generate all container endpoint functions from the JSON config.

    Returns a dict mapping function names to their implementations.
    Ú	endpointsr"   Ú
async_name)r   rZ   rm   )Úconfigro   r    r\   Ú
async_funcs        r   Úgenerate_container_endpointsrs   ¾   sc   € ô +Ó,€FØ€Ià! +Ñ.ò >ˆä1°/ÓBˆ	Ø-6ˆ	�/ &Ñ)Ñ*ô 4°I¸ÓOˆ
Ø3=ˆ	�/ ,Ñ/Ò0ð>ð Ðr[   c                  ó‚   — t        «       } g }| d   D ]*  }|j                  |d   «       |j                  |d   «       Œ, |S )z4Get all endpoint names (sync and async) from config.ro   r"   rp   )r   Úappend)rq   ÚnamesÚendpoints      r   Úget_all_endpoint_namesrx   Ó   sL   € ä*Ó,€FØ€EØ˜;Ñ'ò -ˆØ�‰�X˜fÑ%Ô&Ø�‰�X˜lÑ+Õ,ð-ð €Lr[   c                  óL   — t        «       } | d   D �cg c]  }|d   ‘Œ	 c}S c c}w )z5Get all async endpoint names for router registration.ro   rp   )r   )rq   rw   s     r   Úget_async_endpoint_namesrz   Ý   s(   € ä*Ó,€FØ39¸+Ñ3FÖG xˆH�\Ó"ÒGÐGùÒGs   ’!Ú_generated_endpointsÚlist_container_filesÚalist_container_filesÚupload_container_fileÚaupload_container_fileÚretrieve_container_fileÚaretrieve_container_fileÚdelete_container_fileÚadelete_container_fileÚretrieve_container_file_contentÚ aretrieve_container_file_content)<Ú__doc__r_   ra   r   Úcollections.abcr   Ú	functoolsr   Úpathlibr   Útypingr   r   r   rJ   Úlitellm.constantsr	   rO   Úlitellm.containers.utilsr
   Ú*litellm.litellm_core_utils.litellm_loggingr   ÚLiteLLMLoggingObjÚ/litellm.llms.base_llm.containers.transformationr   Ú+litellm.llms.custom_httpx.container_handlerr   Úlitellm.types.containers.mainr   r   r   Úlitellm.types.routerr   Úlitellm.utilsr   r   r   rY   rG   ÚtypeÚ__annotations__r   rZ   rm   rs   Úlistrx   rz   r{   rE   r|   r}   r~   r   r€   r�   r‚   rƒ   r„   r…   rB   r[   r   ú<module>r—      sà  ðòó Û Û Ý $Ý Ý ß &Ñ &ã Ý HÝ LÝ SÝ OÝ Q÷ñ õ
 6ß 7ð ";Ø.Ø#>ñ*€��d˜3 ˜9‘oÑ&ó ð ó ðZ°4ð Z¸Hó Zðz1Øð1àð1ð ó1ðh d¨3°¨=Ñ&9ó ð*  S¡	ó ðH $ s¡)ó Hñ ;Ó<Ð �eÓ <ð 3×6Ñ6Ð7MÓNÐ �eÓ NØ3×7Ñ7Ð8OÓPÐ �uÓ PØ3×7Ñ7Ð8OÓPÐ �uÓ PØ 4× 8Ñ 8Ð9QÓ RÐ ˜Ó RØ!5×!9Ñ!9Ð:SÓ!TÐ ˜Ó TØ"6×":Ñ":Ð;UÓ"VÐ ˜%Ó VØ3×7Ñ7Ð8OÓPÐ �uÓ PØ 4× 8Ñ 8Ð9QÓ RÐ ˜Ó RØ)=×)AÑ)AÐBcÓ)dÐ  Ó dØ*>×*BÑ*BÐCeÓ*fÐ   %Ô fr[   