
    pi0                        d dl m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mZmZmZmZ eez  Zeez  ez  ez  ZdZ G d d	      Zy)
    )annotationsN)Queue)Any)Config)LifespanScopeLifespanShutdownCompleteEventLifespanShutdownEventLifespanShutdownFailedEventLifespanStartupCompleteEventLifespanStartupEventLifespanStartupFailedEventz2Got invalid state transition on lifespan protocol.c                  <    e Zd ZddZd	dZd	dZd	dZd
dZddZy)
LifespanOnc                Z   |j                   s|j                          || _        t        j                  d      | _        t        j                         | _        t        j                         | _	        t        j                         | _        d| _        d| _        d| _        d| _        i | _        y )Nzuvicorn.errorF)loadedloadconfiglogging	getLoggerloggerasyncioEventstartup_eventshutdown_eventr   receive_queueerror_occuredstartup_failedshutdown_failedshould_exitstate)selfr   s     U/opt/services/ai/voice_agent/venv/lib/python3.12/site-packages/uvicorn/lifespan/on.py__init__zLifespanOn.__init__    s|    }}KKM''8$]]_%mmo<CMMO"#$ %'
    c                   K   | j                   j                  d       t        j                         }|j	                  | j                               }ddi}| j                  j                  |       d {    | j                  j                          d {    | j                  s%| j                  r<| j                  j                  dk(  r#| j                   j                  d       d| _        y | j                   j                  d       y 7 7 vw)Nz Waiting for application startup.typezlifespan.startuponz$Application startup failed. Exiting.TzApplication startup complete.)r   infor   get_event_loopcreate_taskmainr   putr   waitr   r   r   lifespanerrorr   )r!   loopmain_lifespan_taskr   s       r"   startupzLifespanOn.startup/   s     ;<%%'!--diik: 067I.J  $$]333  %%'''4#5#5$++:N:NRV:VKKDE#DKK<= 	4's%   A1D3D
4!DDA5DDc                  K   | j                   ry | j                  j                  d       ddi}| j                  j	                  |       d {    | j
                  j                          d {    | j                  s%| j                   r<| j                  j                  dk(  r#| j                  j                  d       d| _        y | j                  j                  d       y 7 7 vw)Nz!Waiting for application shutdown.r&   zlifespan.shutdownr'   z%Application shutdown failed. Exiting.TzApplication shutdown complete.)r   r   r(   r   r,   r   r-   r   r   r.   r/   r   )r!   r   s     r"   shutdownzLifespanOn.shutdown@   s     <=179L0M  $$^444!!&&(((D$6$64;;;O;OSW;WKKEF#DKK=> 	5(s%   AC(C$!C(/C&0A5C(&C(c                H  K   	 | j                   j                  }d| j                   j                  dd| j                  d} ||| j                  | j
                         d {    | j                  j                          | j                  j                          y 7 9# t        $ r}d | _        d| _        | j                  s| j                  r9Y d }~| j                  j                          | j                  j                          y | j                   j                  dk(  rd}| j                  j!                  |       nd}| j                  j#                  ||	       Y d }~d }~ww xY w# | j                  j                          | j                  j                          w xY ww)
Nr.   z2.0)versionspec_version)r&   asgir    Tautoz-ASGI 'lifespan' protocol appears unsupported.z!Exception in 'lifespan' protocol
)exc_info)r   
loaded_appasgi_versionr    receivesendBaseExceptionr8   r   r   r   r   setr   r.   r   r(   r/   )r!   appscopeexcmsgs        r"   r+   zLifespanOn.mainN   sK    	&++((C"$(KK$<$<eT$E
 eT\\499555 ""$##% 6 
	5DI!%D""d&:&: ""$##% {{##v-E  %:!!#!4
	5 ""$##%s`   F"AB "B#B '5F"B 	E&'&E!E) 5F"AE!E) !E&&E) )6FF"c                b  K   |d   dv sJ |d   dk(  re| j                   j                         rJ t               | j                  j                         rJ t               | j                   j	                          y |d   dk(  r| j                   j                         rJ t               | j                  j                         rJ t               | j                   j	                          d| _        |j                  d      r| j                  j                  |d          y y |d   dk(  re| j                   j                         sJ t               | j                  j                         rJ t               | j                  j	                          y |d   dk(  r| j                   j                         sJ t               | j                  j                         rJ t               | j                  j	                          d| _	        |j                  d      r| j                  j                  |d          y y y w)	Nr&   )lifespan.startup.completelifespan.startup.failedlifespan.shutdown.completelifespan.shutdown.failedrF   rG   TmessagerH   rI   )
r   is_setSTATE_TRANSITION_ERRORr   r@   r   getr   r/   r   )r!   rJ   s     r"   r>   zLifespanOn.sendf   s    v #
 
 	
 
 6?99))002J4JJ2**113K5KK3""$V_ 99))002J4JJ2**113K5KK3""$"&D{{9%!!')"45 & V_ <<%%,,.F0FF.**113K5KK3##%V_ ::%%,,.F0FF.**113K5KK3##%#'D {{9%!!')"45 & ;s   H-H/c                R   K   | j                   j                          d {   S 7 w)N)r   rM   )r!   s    r"   r=   zLifespanOn.receive   s!     ''++----s   '%'N)r   r   returnNone)rO   rP   )rJ   LifespanSendMessagerO   rP   )rO   LifespanReceiveMessage)	__name__
__module____qualname__r#   r2   r4   r+   r>   r=    r$   r"   r   r      s!    (>"?&0 6D.r$   r   )
__future__r   r   r   r   typingr   uvicornr   uvicorn._typesr   r   r	   r
   r   r   r   rR   rQ   rL   r   rV   r$   r"   <module>r[      sk    "        .0EE !""# $$  N j. j.r$   