o
    NK&h                     @  s   d dl mZ d dlZd dlmZm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 d dlmZmZmZ d d	lmZmZ d d
lmZ erPd dlmZ eG dd dZeG dd dZdS )    )annotationsN)	dataclassfield)Path)socket)
SSLContext)TYPE_CHECKINGAnyOptionalUnion)ModeServerServerStage)VerbosityFilterlogger)AsyncioServer)Sanicc                   @  s@   e Zd ZU dZded< eejdZded< eddZ	ded	< dS )
ApplicationServerInfoz$Information about a server instance.zdict[str, Any]settingsdefaultr   stageNzOptional[AsyncioServer]server)
__name__
__module____qualname____doc____annotations__r   r   STOPPEDr   r    r   r   J/var/www/html/venv/lib/python3.10/site-packages/sanic/application/state.pyr      s
   
 r   c                      s  e Zd ZU dZded< eddZded< eddZded< eddZded	< ed
dZ	ded< eddZ
ded< eddZded< eddZded< eddZded< eejdZded< eedZded< eddZded< eejdZded< eddZded< eddZded < eddZded!< eddZded"< eddZded#< ed$dZded%< eedZd&ed'< eddZded(< d<d+d,Z d= fd0d1Z!d>d3d4Z"d?d5d6Z#e$d@d7d8Z%e$dAd:d;Z&  Z'S )BApplicationStatezApplication state.

    This class is used to store the state of the application. It is
    instantiated by the application and is available as `app.state`.
    r   appFr   boolasgicoffeefast strhostr   intportNzOptional[SSLContext]sslzOptional[socket]sockzOptional[str]unixr   mode)default_factoryz	set[Path]reload_dirsauto_reloadr   r   
is_running
is_startedis_stopping	verbosityworkersTprimaryzlist[ApplicationServerInfo]server_info_initreturnNonec                 C  s
   d| _ d S )NT)r:   selfr   r   r    __post_init__>   s   
zApplicationState.__post_init__namevaluer	   c                   sZ   | j r|dkrtdt || | j r)t| d| r+t| d| | d S d S d S )Nr:   z4Cannot change the value of _init after instantiationset_)r:   RuntimeErrorsuper__setattr__hasattrgetattr)r>   r@   rA   	__class__r   r    rE   A   s   zApplicationState.__setattr__Union[str, Mode]c                 C  sH   t | jdr| jj| jj_t| jddr | jjr"ttj d S d S d S )Nerror_handlerconfigure_loggingF)	rF   r"   debugrK   rG   r   setLevelloggingDEBUGr>   rA   r   r   r    set_modeJ   s
   zApplicationState.set_modec                 C  s
   |t _dS )zZSet the verbosity level.

        Args:
            value (int): Verbosity level.
        N)r   r6   rQ   r   r   r    set_verbosityP   s   
zApplicationState.set_verbosityc                 C  s   | j tju S )zCheck if the application is in debug mode.

        Returns:
            bool: `True` if the application is in debug mode, `False`
                otherwise.
        )r/   r   rP   r=   r   r   r    is_debugX   s   zApplicationState.is_debugr   c                 C  sF   | j stjS tdd | j D rtjS tdd | j D r tjS tjS )zWGet the server stage.

        Returns:
            ServerStage: Server stage.
        c                 s      | ]	}|j tju V  qd S Nr   r   SERVING.0infor   r   r    	<genexpr>l   s    z)ApplicationState.stage.<locals>.<genexpr>c                 s  rU   rV   rW   rY   r   r   r    r\   n   s    
)r9   r   r   allrX   anyPARTIALr=   r   r   r    r   b   s   zApplicationState.stage)r;   r<   )r@   r(   rA   r	   r;   r<   )rA   rJ   )rA   r*   r;   r<   )r;   r#   )r;   r   )(r   r   r   r   r   r   r$   r%   r&   r)   r+   r,   r-   r.   r   
PRODUCTIONr/   setr1   r2   r   SANICr   r3   r4   r5   r6   r7   r8   listr9   r:   r?   rE   rR   rS   propertyrT   r   __classcell__r   r   rH   r    r!      s>   
 

	
	r!   )
__future__r   rO   dataclassesr   r   pathlibr   r   r,   r   typingr   r	   r
   r   sanic.application.constantsr   r   r   	sanic.logr   r   sanic.server.async_serverr   sanicr   r   r!   r   r   r   r    <module>   s     