o
    NK&h)                     @   s`   d dl mZmZmZmZ d dlmZ d dlmZ ddl	m
Z
 G dd de
ZG dd	 d	eZd
S )    )	AttributeAwaitExprNodeTransformer)Any)logger   )
BaseSchemec                       sL   e Zd ZdZdZd fddZdee fddZd	d
 Z	e
dd Z  ZS )OptionalDispatchEventODEzhttp.returnNc                    s,   t  | |   dd |jjD | _d S )Nc                 S   s   g | ]}|j qS  name.0signalr   r   L/var/www/html/venv/lib/python3.10/site-packages/sanic/touchup/schemes/ode.py
<listcomp>       z2OptionalDispatchEvent.__init__.<locals>.<listcomp>)super__init___sync_eventssignal_routerroutes_registered_events)selfapp	__class__r   r   r      s
   zOptionalDispatchEvent.__init__c                 C   s   t | jgS N)RemoveDispatchr   r   r   r   r   visitors   s   zOptionalDispatchEvent.visitorsc                    s   t  }i } jjj D ]}|jjr$dd |jjD ||< |	||  q|
 D ]1\}} fdd||D }|rZ|jj}|rF|j  |D ]
}|| j qH|rZ|j  q)d S )Nc                 S   s   h | ]}|j qS r   r   r   r   r   r   	<setcomp>   r   z5OptionalDispatchEvent._sync_events.<locals>.<setcomp>c                    s(   h | ] t  fd djD r qS )c                 3   s    | ]}  |V  qd S r    )
startswith)r   yxr   r   	<genexpr>&   s    z?OptionalDispatchEvent._sync_events.<locals>.<setcomp>.<genexpr>)anySYNC_SIGNAL_NAMESPACES)r   r"   r'   r   r$   #   s    )setr   r   _app_registryvaluesstateserver_infor   r   updateitems
difference	finalizedresetr   noopfinalize)r   
all_events
app_eventsr   eventsmissingwas_finalizedeventr   r"   r   r      s.   



z"OptionalDispatchEvent._sync_eventsc                     s   d S r    r   )_r   r   r   r6   1   s   zOptionalDispatchEvent.noopr   N)__name__
__module____qualname__identr+   r   listr   r#   r   staticmethodr6   __classcell__r   r   r   r   r
   	   s    r
   c                   @   s0   e Zd Zd
ddZdedefddZdd	 ZdS )r!   r   Nc                 C   s
   || _ d S r    )r   )r   registered_eventsr   r   r   r   7   s   
zRemoveDispatch.__init__nodec                 C   s   |j }t|tr|j }t|dd }t|dd }|r|s|S t|trF|jdkrF|d }t|dd  }rF| |rFtjd| ddid	 d S |S )
Nfuncargsdispatchr   valuezDisabling event: 	verbosity   )extra)	rL   
isinstancer   getattrr   attr_not_registeredr   debug)r   rH   callrI   rJ   r=   
event_namer   r   r   
visit_Expr:   s"   

zRemoveDispatch.visit_Exprc                 C   sV   g }| j D ]}|dr|dd\}}|| q|dd\}}|| j vo*||vS )N>.r   )r   endswithrsplitappend)r   rV   dynamicr=   namespace_concernr>   r   r   r   rS   O   s   



zRemoveDispatch._not_registeredr?   )r@   rA   rB   r   r   r   rW   rS   r   r   r   r   r!   6   s    
r!   N)astr   r   r   r   typingr   	sanic.logr   baser	   r
   r!   r   r   r   r   <module>   s    -