o
    G[Wi0                     @  s   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B ZeeB eB eB ZdZG dd	 d	ZdS )
    )annotationsN)Queue)Any)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!   W/var/www/html/asistente-voz-ia/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  zz| 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BaseExceptionr4   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  sJ t| j rJ 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.failedrC   rD   TrA   rE   rF   )
r   is_setSTATE_TRANSITION_ERRORr   r<   r   getr   r-   r   )r    rA   r!   r!   r"   r:   f   s6   



zLifespanOn.sendLifespanReceiveMessagec                   s   | j  I d H S )N)r   rI   )r    r!   r!   r"   r9      s   zLifespanOn.receiveN)r   r   r   r   )r   r   )rA   rB   r   r   )r   rJ   )	__name__
__module____qualname__r#   r0   r1   r)   r:   r9   r!   r!   r!   r"   r      s    




"r   )
__future__r   r   r   r   typingr   uvicornr   uvicorn._typesr   r   r   r	   r
   r   r   rJ   rB   rH   r   r!   r!   r!   r"   <module>   s$    $
