
    df>                         d dl Z d dl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mZmZmZmZmZ eeef   Zeeeeef   ZdZ G d d      Zy)	    N)Queue)AnyDictUnion)Config)LifespanScopeLifespanShutdownCompleteEventLifespanShutdownEventLifespanShutdownFailedEventLifespanStartupCompleteEventLifespanStartupEventLifespanStartupFailedEventz2Got invalid state transition on lifespan protocol.c                   D    e Zd ZdeddfdZd
dZd
dZd
dZddZdd	Z	y)
LifespanOnconfigreturnNc                 Z   |j                   s|j                          || _        t        j                  d      | _        t        j                         | _        t        j                         | _	        t        j                         | _        d| _        d| _        d| _        d| _        i | _        y )Nzuvicorn.errorF)loadedloadr   logging	getLoggerloggerasyncioEventstartup_eventshutdown_eventr   receive_queueerror_occuredstartup_failedshutdown_failedshould_exitstate)selfr   s     L/home/api-vastappli/venv/lib/python3.12/site-packages/uvicorn/lifespan/on.py__init__zLifespanOn.__init__   s|    }}KKM''8$]]_%mmo>Emmo"#$ %'
    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   r0   r1   r!   )r#   r   s     r$   shutdownzLifespanOn.shutdown>   s     <=179L0M  $$^444!!&&(((4;;#7#74#?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)
Nr0   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BaseExceptionr:   r   r   r    r   setr   r0   r   r*   r1   )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.failedrH   rI   TmessagerJ   rK   )
r   is_setSTATE_TRANSITION_ERRORr   rB   r   getr   r1   r    )r#   rL   s     r$   r@   zLifespanOn.sendf   s    v #
 
 	
 6?99))002J4JJ**113K5KK""$V_ 99))002J4JJ**113K5KK""$"&D{{9%!!')"45 & V_ <<%%,,.F0FF**113K5KK##%V_ ::%%,,.F0FF**113K5KK##%#'D {{9%!!')"45 & ;s   H-H/c                 R   K   | j                   j                          d {   S 7 w)N)r   rO   )r#   s    r$   r?   zLifespanOn.receive   s!     ''++----s   '%')r   N)rL   LifespanSendMessager   N)r   LifespanReceiveMessage)
__name__
__module____qualname__r   r%   r4   r6   r-   r@   r?    r&   r$   r   r      s/    (v ($ (>"? &0 6D.r&   r   )r   r   r   typingr   r   r   uvicornr   uvicorn._typesr   r	   r
   r   r   r   r   rR   rQ   rN   r   rV   r&   r$   <module>rZ      sk       # #    35JJK  !#  N l. l.r&   