+
    œ°³jƒ  ã                   ó  € R t ^ RIt^ RIHt ^ RIHt ^RIHt ^RIH	t	 ]	! 4       '       d   ^ RI
HtHt ^ RIHt ^ RIHtHt ]'       d   ^R	IHt ^R
IHt ^RIHt ^RIHt ^RIHt ^RIHtHtHt ]P>                  ! ] 4      t!RR R llt"R# )z
FastAPI app factory.
N)Úasynccontextmanager)ÚTYPE_CHECKING)Úlogging)Úis_serve_available)ÚFastAPIÚRequest)ÚCORSMiddleware)ÚJSONResponseÚStreamingResponse)ÚChatCompletionHandler)ÚCompletionHandler)ÚResponseHandler)ÚTranscriptionHandler)ÚModelManager)ÚX_REQUEST_IDÚCBWorkerDeadErrorÚGenerationStatec                óP   € V ^8„  d   QhR\         RRRRRRRR	R
\        R\        RR/# )é   Úmodel_managerÚchat_handlerr   Úcompletion_handlerr   Úresponse_handlerr   Útranscription_handlerr   Úgeneration_stateÚenable_corsÚreturnr   )r   r   Úbool)Úformats   "Ú`/home/luca/screen-checking/.venv/lib/python3.14/site-packages/transformers/cli/serving/server.pyÚ__annotate__r    ,   sb   € ÷ gñ gÜðgà)ðgð ,ðgð (ð	gð
 2ðgô &ðgô ðgð ñgó    c                ó  a aaaaa€ \         R V 3R ll4       p\        VR7      pVP                  \        4      R R l4       p	V'       d3   VP	                  \
        R.RR.R.R7       \        P                  R	4       VP                  R
4      R R l4       p
VP                  R4      R V3R ll4       pVP                  R4      R V3R ll4       pVP                  R4      R V3R ll4       pVP                  R4      R V3R ll4       pVP                  R4      R V 3R ll4       pVP                  R4      V 3R l4       pVP                  R4      VP                  R4      V 3R l4       4       pVP                  R 4      V3R! l4       pV# )"aO  Build and return a configured FastAPI application.

Args:
    model_manager: Handles model loading, caching, and cleanup.
    chat_handler: Handles `/v1/chat/completions` requests.
    response_handler: Handles `/v1/responses` requests.
    generation_state: Owns the per-model generation managers (regular and CB). Passed
        in here so `/health` can check whether the CB worker has died and respond with
        503 instead of a misleading 200.
    enable_cors: If `True`, adds permissive CORS middleware (allow all origins).

Returns:
    A FastAPI app ready to be passed to uvicorn.
c                ó$   € V ^8„  d   QhR\         /# )r   Úapp)r   )r   s   "r   r    Ú"build_server.<locals>.__annotate__E   s   € ÷ !ñ !œGñ !r!   c                ó:   <"  € R 5x € SP                  4        R # 5i©N)Úshutdown)r$   r   s   &€r   ÚlifespanÚbuild_server.<locals>.lifespanD   s   øé € äØ×ÑÖ ùs   ƒ)r)   c                ó0   € V ^8„  d   QhR\         R\        /# )r   Ú_requestÚexc)r   r   )r   s   "r   r    r%   L   s   € ÷ Bñ B¬ð BÔ7Hñ Br!   c              “   ó:   "  € \        R \        V4      /RR7      # 5i)Úerroré÷  ©Ústatus_code)r	   Ústr)r,   r-   s   &&r   Ú_cb_dead_handlerÚ&build_server.<locals>._cb_dead_handlerK   s   é € ô ˜W¤c¨#£hÐ/¸SÔAÐAùs   ‚Ú*T)Úallow_originsÚallow_credentialsÚallow_methodsÚallow_headersz@CORS allow origin is set to `*`. Not recommended for production.Úhttpc                ó$   € V ^8„  d   QhR\         /# ©r   Úrequest©r   )r   s   "r   r    r%   ]   s   € ÷ ñ ¬Wñ r!   c              “  ó   "  € V P                   P                  \        4      ;'       g    \        \        P
                  ! 4       4      pW P                  n        V! V 4      G Rj  x€L
 pW#P                   \        &   V#  L5i)z(Get or set the request ID in the header.N)ÚheadersÚgetr   r3   ÚuuidÚuuid4ÚstateÚ
request_id)r>   Ú	call_nextrF   Úresponses   &&  r   Úrequest_id_middlewareÚ+build_server.<locals>.request_id_middleware\   s]   é € ð —_‘_×(Ñ(¬Ó6×KÐK¼#¼d¿jºj»lÓ:Kˆ
Ø#-�‰Ô Ù" 7Ó+×+ˆØ)3×ÑœÑ&Øˆñ ,ùs   ‚A!A>Á#A<Á$A>z/v1/chat/completionsc                ó0   € V ^8„  d   QhR\         R\        /# ©r   r>   Úbody©r   Údict)r   s   "r   r    r%   h   s   € ÷ Qñ Q¬ð Q´tñ Qr!   c              “   ój   <"  € SP                  WP                  P                  4      G R j  x€L
 #  L5ir'   ©Úhandle_requestrE   rF   )r>   rM   r   s   &&€r   Úchat_completionsÚ&build_server.<locals>.chat_completionsg   s'   øé € à!×0Ñ0°·}±}×7OÑ7OÓP×PÐPÑPùó   ƒ)3¬1­3z/v1/completionsc                ó0   € V ^8„  d   QhR\         R\        /# rL   rN   )r   s   "r   r    r%   l   s   € ÷ Wñ W¤7ð W´$ñ Wr!   c              “   ój   <"  € SP                  WP                  P                  4      G R j  x€L
 #  L5ir'   rQ   )r>   rM   r   s   &&€r   ÚcompletionsÚ!build_server.<locals>.completionsk   s'   øé € à'×6Ñ6°t¿]¹]×=UÑ=UÓV×VÐVÑVùrU   z/v1/responsesc                ó0   € V ^8„  d   QhR\         R\        /# rL   rN   )r   s   "r   r    r%   p   s   € ÷ Uñ U¤ð U´ñ Ur!   c              “   ój   <"  € SP                  WP                  P                  4      G R j  x€L
 #  L5ir'   rQ   )r>   rM   r   s   &&€r   Ú	responsesÚbuild_server.<locals>.responseso   s'   øé € à%×4Ñ4°T¿=¹=×;SÑ;SÓT×TÐTÑTùrU   z/v1/audio/transcriptionsc                ó$   € V ^8„  d   QhR\         /# r=   r?   )r   s   "r   r    r%   t   s   € ÷ Cñ C¬Gñ Cr!   c              “   óB   <"  € SP                  V 4      G R j  x€L
 #  L5ir'   )rR   )r>   r   s   &€r   Úaudio_transcriptionsÚ*build_server.<locals>.audio_transcriptionss   s   øé € à*×9Ñ9¸'ÓB×BÐBÑBùs   ƒ˜™z/load_modelc                ó$   € V ^8„  d   QhR\         /# )r   rM   )rO   )r   s   "r   r    r%   x   s   € ÷ 	
ñ 	
œtñ 	
r!   c              “   ó°   <"  € ^ RI Hp V P                  R4      pVf   V! RRR7      hSP                  V4      p\	        SP                  V4      RR7      # 5i)é    )ÚHTTPExceptionÚmodeli¦  z*Missing `model` field in the request body.)r2   Údetailztext/event-stream)Ú
media_type)Úfastapire   rB   Úprocess_model_namer
   Úload_model_streaming)rM   re   rf   Úmodel_id_and_revisionr   s   &   €r   Ú
load_modelÚ build_server.<locals>.load_modelw   sZ   øé € å)à—‘˜Ó!ˆØŠ=Ù¨CÐ8dÔeÐeØ -× @Ñ @ÀÓ GÐÜ Ø×.Ñ.Ð/DÓEÐReô
ð 	
ùs   ƒAAz/resetc                  ó>   <€ S P                  4        \        R R/4      # )ÚstatusÚok)r(   r	   ©r   s   €r   ÚresetÚbuild_server.<locals>.resetƒ   s   ø€ à×ÑÔ Ü˜X tÐ,Ó-Ð-r!   z
/v1/modelsc                  ó>   <€ \        R RRS P                  4       /4      # )ÚobjectÚlistÚdata)r	   Úget_gen_modelsrr   s   €r   Úlist_modelsÚ!build_server.<locals>.list_modelsˆ   s"   ø€ ô ˜X v¨v°}×7SÑ7SÓ7UÐVÓWÐWr!   z/healthc                  ól   <€ S P                  4       '       g   \        R RRR/RR7      # \        R R/4      # )rp   Ú	unhealthyÚreasonÚcb_worker_deadr0   r1   rq   )Úis_cb_aliver	   )r   s   €r   ÚhealthÚbuild_server.<locals>.health�   s:   ø€ à×+Ñ+×-Ò-Ü ¨;¸ÐBRÐ SÐadÔeÐeÜ˜X tÐ,Ó-Ð-r!   )r   r   Úexception_handlerr   Úadd_middlewarer   ÚloggerÚwarning_onceÚ
middlewareÚpostrB   Úoptions)r   r   r   r   r   r   r   r)   r$   r4   rI   rS   rX   r\   r`   rm   rs   rz   r�   s   ffffff&            r   Úbuild_serverrŠ   ,   s«  ý€ ô0 ÷!ó ð!ô ˜8Ô
$€Cà×ÑÔ,Ó-ôBó .ðB÷ Ø×ÑÜØ˜%Ø"Ø˜%Ø˜%ð 	ô 	
ô 	×ÑÐ^Ô_ð 	‡^�^�FÓôó ðð 	‡X�XÐ$Ó%÷Qó &ðQð 	‡X�XÐÓ ÷Wó !ðWð 	‡X�XˆoÓ÷Uó ðUð 	‡X�XÐ(Ó)÷Có *ðCð 	‡X�XˆmÓ÷	
ó ð	
ð 	‡X�XˆhÓô.ó ð.ð 	‡W�Wˆ\ÓØ‡[�[�ÓôXó ó ðXð 	‡W�WˆYÓô.ó ð.ð
 €Jr!   )F)#Ú__doc__rC   Ú
contextlibr   Útypingr   Úutilsr   Úutils.import_utilsr   ri   r   r   Úfastapi.middleware.corsr   Úfastapi.responsesr	   r
   Úchat_completionr   Ú
completionr   rH   r   Útranscriptionr   r   r   r   r   r   Ú
get_loggerÚ__name__r…   rŠ   © r!   r   Ú<module>r˜      se   ðñó Ý *Ý  å Ý 4ñ ×Òß(Ý6ßAçÝ6Ý-Ý)Ý3å 'ß CÑ Cð 
×	Ò	˜HÓ	%€÷gñ gr!   