o
    Õ­j@  ã                   @  sš   d dl mZ d dlZd dlZd dlmZ d dl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	„ d	ƒZdS )
é    )ÚannotationsN)ÚQueue)ÚAnyÚUnion)ÚConfig)ÚLifespanScopeÚLifespanShutdownCompleteEventÚLifespanShutdownEventÚLifespanShutdownFailedEventÚLifespanStartupCompleteEventÚLifespanStartupEventÚLifespanStartupFailedEventz2Got invalid state transition on lifespan protocol.c                   @  sH   e Zd Zddd„Zddd„Zdd	d
„Zddd„Zddd„Zddd„ZdS )Ú
LifespanOnÚconfigr   ÚreturnÚNonec                 C  s`   |j s| ¡  || _t d¡| _t ¡ | _t ¡ | _	t 
¡ | _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   © r"   úP/var/www/html/CropPilot/venv/lib/python3.10/site-packages/uvicorn/lifespan/on.pyÚ__init__    s   



zLifespanOn.__init__c                 Ã  sŒ   �| j  d¡ t ¡ }| |  ¡ ¡}ddi}| j |¡I d H  | j 	¡ I d H  | j
s3| jr>| 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   r"   r"   r#   Ústartup/   s   €
zLifespanOn.startupc                 Ã  s€   �| j rd S | j d¡ ddi}| j |¡I d H  | j ¡ I d H  | js-| j r8| jj	dkr8| 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   r-   r.   r   )r!   r   r"   r"   r#   Úshutdown@   s   €
zLifespanOn.shutdownc              
   Ã  s  �z�z| j j}d| j jddœ| jdœ}||| j| jƒI d H  W nI tyh } z=d | _d| _| j	s3| j
rEW Y d }~W | j ¡  | j ¡  d S | j jdkrTd}| j |¡ n
d}| jj||d	� W Y d }~nd }~ww W | j ¡  | j ¡  d S W | j ¡  | j ¡  d S | j ¡  | j ¡  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ÚBaseExceptionr5   r   r   r   r   Úsetr   r-   r   r'   r.   )r!   ÚappÚscopeÚexcÚmsgr"   r"   r#   r*   N   s<   €ý
ø€öÿ
€
ÿ
ÿzLifespanOn.mainÚmessageÚLifespanSendMessagec                 Ã  sV  �|d dv s	J ‚|d dkr(| j  ¡ rJ tƒ‚| j ¡ r!J tƒ‚| j  ¡  d S |d dkrY| j  ¡ r7J tƒ‚| j ¡ r@J tƒ‚| j  ¡  d| _| d¡rW| j |d ¡ d S d S |d dkrx| j  ¡ shJ tƒ‚| j ¡ rqJ 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.failedrD   rE   TrB   rF   rG   )
r   Úis_setÚSTATE_TRANSITION_ERRORr   r=   r   Úgetr   r.   r   )r!   rB   r"   r"   r#   r;   f   s6   €

ÿ

úzLifespanOn.sendÚLifespanReceiveMessagec                 Ã  s   �| j  ¡ I d H S )N)r   rJ   )r!   r"   r"   r#   r:   ˆ   s   €zLifespanOn.receiveN)r   r   r   r   )r   r   )rB   rC   r   r   )r   rK   )	Ú__name__Ú
__module__Ú__qualname__r$   r1   r2   r*   r;   r:   r"   r"   r"   r#   r      s    




"r   )Ú
__future__r   r   r   r   Útypingr   r   Úuvicornr   Úuvicorn._typesr   r   r	   r
   r   r   r   rK   rC   rI   r   r"   r"   r"   r#   Ú<module>   s"    $
ýÿ