
     O=d                         d dl Z d dlZd dl mZ d dlmZmZmZmZ d dlm	Z	 er(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dS )	    N)Queue)TYPE_CHECKINGAnyDictUnion)Config)LifespanScopeLifespanShutdownCompleteEventLifespanShutdownEventLifespanShutdownFailedEventLifespanStartupCompleteEventLifespanStartupEventLifespanStartupFailedEventz2Got invalid state transition on lifespan protocol.c                   F    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	dS )
LifespanOnconfigreturnNc                 R   |j         s|                                 || _        t          j        d          | _        t          j                    | _        t          j                    | _	        t          j
                    | _        d| _        d| _        d| _        d| _        i | _        d S )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     =D:\Sites\api_v1\venv\Lib\site-packages\uvicorn/lifespan/on.py__init__zLifespanOn.__init__    s    } 	KKMMM'88$]__%moo>Emoo"#$ %'


    c                   K   | j                             d           t          j                    }|                    |                                           }ddi}| j                            |           d {V  | j        	                                 d {V  | j
        s| j        r3| j        j        dk    r#| j                             d           d| _        d S | j                             d           d S )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     ;<<<%''!--diikk:: 067I.J $$]333333333 %%''''''''' 	>4#5 	>$+:NRV:V:VKDEEE#DK<=====r'   c                   K   | j         rd S | j                            d           ddi}| j                            |           d {V  | j                                         d {V  | j        s| j         r3| j        j	        dk    r#| j        
                    d           d| _        d S | j                            d           d S )Nz!Waiting for application shutdown.r)   zlifespan.shutdownr*   z%Application shutdown failed. Exiting.TzApplication shutdown complete.)r   r   r+   r   r/   r   r0   r!   r   r1   r2   r"   )r$   r   s     r%   shutdownzLifespanOn.shutdown@   s       	F<===179L0M $$^444444444!&&((((((((( 	?	?#';#74#?#?KEFFF#DK=>>>>>r'   c                   K   	 | j         j        }d| j         j        dd| j        d} ||| j        | j                   d {V  n# t          $ r}d | _        d| _        | j	        s| j
        r8Y d }~| j                                         | j                                         d S | j         j        dk    rd}| j                            |           nd}| j                            ||	           Y d }~nd }~ww xY w| j                                         | j                                         d S # | j                                         | j                                         w xY w)
Nr1   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   r1   r   r+   r2   )r$   appscopeexcmsgs        r%   r.   zLifespanOn.mainP   s     	&+(C"$(K$<eTT$ $E
 #eT\495555555555 
	5 
	5 
	5DI!%D" d&:  ""$$$##%%%%% {#v--E  %%%%:!!#!444
	5 ""$$$##%%%%% ""$$$##%%%%s=   AA D0 
C9C4,D0 $AC4/D0 4C99D0 04E$messageLifespanSendMessagec                   K   |d         dv sJ |d         dk    rk| j                                         rJ t                      | j                                        rJ t                      | j                                          d S |d         dk    r| j                                         rJ t                      | j                                        rJ t                      | j                                          d| _        |                    d          r"| j                            |d                    d S d S |d         dk    rk| j                                         sJ t                      | j                                        rJ t                      | j                                         d S |d         dk    r| j                                         sJ t                      | j                                        rJ t                      | j                                         d| _	        |                    d          r$| j                            |d                    d S d S d S )	Nr)   )lifespan.startup.completelifespan.startup.failedlifespan.shutdown.completelifespan.shutdown.failedrK   rL   TrH   rM   rN   )
r   is_setSTATE_TRANSITION_ERRORr   rC   r    getr   r2   r!   )r$   rH   s     r%   rA   zLifespanOn.sendh   s     v #
 
 
 
 
 6?999)0022JJ4JJJJ*1133KK5KKKK""$$$$$V_ 999)0022JJ4JJJJ*1133KK5KKKK""$$$"&D{{9%% 6!!')"4555556 6 V_ <<<%,,..FF0FFFF*1133KK5KKKK##%%%%%V_ :::%,,..FF0FFFF*1133KK5KKKK##%%%#'D {{9%% 6!!')"455555 ;:
6 6r'   LifespanReceiveMessagec                 D   K   | j                                          d {V S )N)r   rQ   )r$   s    r%   r@   zLifespanOn.receive   s-      '++---------r'   )r   N)rH   rI   r   N)r   rR   )
__name__
__module____qualname__r   r&   r5   r7   r.   rA   r@    r'   r%   r   r      s        (v ($ ( ( ( (> > > >"? ? ? ? & & & &0 6  6  6  6D. . . . . .r'   r   )r   r   r   typingr   r   r   r   uvicornr   asgiref.typingr	   r
   r   r   r   r   r   rR   rI   rP   r   rW   r'   r%   <module>r[      s6           2 2 2 2 2 2 2 2 2 2 2 2                         ##79N#NO"#$%	' N l. l. l. l. l. l. l. l. l. l.r'   