
     @g>                         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dS )	    N)Queue)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     G/var/www/piapp/venv/lib/python3.11/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   r/   r    r   r0   r1   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)
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   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.failedrJ   rK   TrG   rL   rM   )
r   is_setSTATE_TRANSITION_ERRORr   rB   r   getr   r1   r    )r#   rG   s     r$   r@   zLifespanOn.sendf   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   rP   )r#   s    r$   r?   zLifespanOn.receive   s-      '++---------r&   )r   N)rG   rH   r   N)r   rQ   )
__name__
__module____qualname__r   r%   r4   r6   r-   r@   r?    r&   r$   r   r      s        (v ($ ( ( ( (> > > >"? ? ? ? & & & &0 6  6  6  6D. . . . . .r&   r   )r   r   r   typingr   r   r   uvicornr   uvicorn._typesr   r	   r
   r   r   r   r   rQ   rH   rO   r   rV   r&   r$   <module>rZ      s(           # # # # # # # # # #                        35JJK  !#  N l. l. l. l. l. l. l. l. l. l.r&   