o
    NK&h0                     @  s   d dl mZ d dlmZmZmZmZ d dlmZm	Z	 d dl
mZ ddlmZ er.d dlmZ G dd	 d	eZG d
d deZdS )    )annotations)AssignConstantNodeTransformer	Subscript)TYPE_CHECKINGAny)HTTP   )
BaseScheme)Sanicc                   @  s   e Zd ZdZdddZdS )AltSvcCheckALTSVCreturnlist[NodeTransformer]c                 C  s   t | j| jjjgS N)RemoveAltSvcappstate	verbosityself r   O/var/www/html/venv/lib/python3.10/site-packages/sanic/touchup/schemes/altsvc.pyvisitors   s   zAltSvcCheck.visitorsN)r   r   )__name__
__module____qualname__identr   r   r   r   r   r      s    r   c                   @  sB   e Zd Zdddd	ZdddZdddZedddZdd ZdS )r   r   r   r   r   intr   Nonec                 C  s$   || _ || _dd |jjD | _d S )Nc                 S  s   h | ]}|j d  qS )version)settings).0infor   r   r   	<setcomp>   s    
z(RemoveAltSvc.__init__.<locals>.<setcomp>)_app
_verbosityr   server_info	_versions)r   r   r   r   r   r   __init__   s
   zRemoveAltSvc.__init__noder   r   c                   sD   t  fdd|jD r   rd S t|jtsJ   |j_|S )Nc                 3  s    | ]}  |V  qd S r   )_matches)r#   targetr   r   r   	<genexpr>   s    z,RemoveAltSvc.visit_Assign.<locals>.<genexpr>)anytargets_should_remove
isinstancevaluer   )r   r+   r   r   r   visit_Assign   s   zRemoveAltSvc.visit_Assignboolc                 C  s   t | jdkS )Nr
   )lenr)   r   r   r   r   r1   &   s   zRemoveAltSvc._should_removec                 C  s"   t | tot | jto| jjdkS )Nzalt-svc)r2   r   slicer   r3   )r+   r   r   r   r,   )   s
   


zRemoveAltSvc._matchesc                 C  sN   g }| j jjD ]}|jd }|jd }|tju r!|d| d qd|S )Nportr!   zh3=":"z, )r&   r   r(   r"   r	   	VERSION_3appendjoin)r   valuesr$   r8   r!   r   r   r   r3   1   s   



zRemoveAltSvc.valueN)r   )r   r   r   r   r   r    )r+   r   r   r   )r   r5   )	r   r   r   r*   r4   r1   staticmethodr,   r3   r   r   r   r   r      s    

r   N)
__future__r   astr   r   r   r   typingr   r   sanic.http.constantsr	   baser   sanicr   r   r   r   r   r   r   <module>   s    