o
    NK&h\                     @   s   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 d dlmZ d dlmZ d d	lmZ d d
lmZ d dlmZ e dZG dd deeeeeee	ed
ZdS )    N)AnyOptional)	SanicMeta)SanicException)CommandMixin)ExceptionMixin)ListenerMixin)MiddlewareMixin)
RouteMixin)SignalMixin)StaticMixinz^[a-zA-Z_][a-zA-Z0-9_\-]*$c                	       sl   e Zd ZdZ	ddee dededdfddZdefd	d
ZdefddZ	dededdf fddZ
  ZS )	BaseSanic)nameNr   argskwargsreturnc                 O   sj   | j j}|d u rt| dt|st| d| d|| _tjD ]}|j| g|R i | q$d S )NzT instance cannot be unnamed. Please use Sanic(name='your_application_name') instead.z instance named 'zr' uses an invalid format. Names must begin with a character and may only contain alphanumeric characters, _, or -.)		__class____name__r   
VALID_NAMEmatchr   r   	__bases____init__)selfr   r   r   
class_namebase r   B/var/www/html/venv/lib/python3.10/site-packages/sanic/base/root.pyr      s   

zBaseSanic.__init__c                 C   s   d| j j d| j dS )N< >r   r   r   r   r   r   r   __str__6   s   zBaseSanic.__str__c                 C   s   | j j d| j dS )Nz(name="z")r    r!   r   r   r   __repr__9   s   zBaseSanic.__repr__valuec                    sT   z
t  || W d S  ty) } ztd| jj d| jj d| d|d }~ww )NzSetting variables on z2 instances is not allowed. You should change your z instance to use instance.ctx.z	 instead.)super__setattr__AttributeErrorr   r   )r   r   r$   er   r   r   r&   <   s   zBaseSanic.__setattr__)N)r   
__module____qualname__	__slots__r   strr   r   r"   r#   r&   __classcell__r   r   r)   r   r      s    

"r   )	metaclass)retypingr   r   sanic.base.metar   sanic.exceptionsr   sanic.mixins.commandsr   sanic.mixins.exceptionsr   sanic.mixins.listenersr   sanic.mixins.middlewarer	   sanic.mixins.routesr
   sanic.mixins.signalsr   sanic.mixins.staticr   compiler   r   r   r   r   r   <module>   s,    


