o
    JAfn                     @   s0   	 d dl Z e dZdddZG dd dZdS )	    Nz[ \(\)<>@,;:\\"/\[\]\?=]   c                 C   sT   	 |d ur(t |dkr(|st|r"|dddd}d| |f S d| |f S | S )Nr   \z\\"z\"z%s="%s"z%s=%s)len	tspecialssearchreplace)Zparamvaluequote r   &/usr/lib/python3.10/wsgiref/headers.py_formatparam   s   r   c                   @   s   e Zd Z	 d$ddZdd Zdd Zdd	 Zd
d Zdd Zdd Z	dd Z
d$ddZdd Zdd Zdd Zdd Zdd Zdd Zd d! Zd"d# ZdS )%HeadersNc                 C   s.   |d ur|ng }t |turtd|| _d S )Nz+Headers must be a list of name/value tuples)typelist	TypeError_headers_convert_string_type)selfZheaderskvr   r   r   __init__   s
   zHeaders.__init__c                 C   s$   	 t |tu r	|S tdt|)Nz1Header names/values must be of type str (got {0}))r   strAssertionErrorformatrepr)r   r	   r   r   r   r   )   s   
zHeaders._convert_string_typec                 C   s   	 t | jS N)r   r   r   r   r   r   __len__0   s   
zHeaders.__len__c                 C   s(   	 | |= | j | || |f d S r   )r   appendr   )r   namevalr   r   r   __setitem__4   s
   zHeaders.__setitem__c                    s2   	 |      fdd| jD | jd d < d S )Nc                    s    g | ]}|d     kr|qS )r   lower.0Zkvr    r   r   
<listcomp>@   s     z'Headers.__delitem__.<locals>.<listcomp>r   r$   r   r   r    r   r'   r   __delitem__:   s   "zHeaders.__delitem__c                 C   s   	 |  |S r   getr*   r   r   r   __getitem__B   s   
zHeaders.__getitem__c                 C   s   	 |  |d uS r   r,   r*   r   r   r   __contains__M   s   zHeaders.__contains__c                    s$   	 |      fdd| jD S )Nc                    s$   g | ]}|d     kr|d qS )r   r   r#   r%   r'   r   r   r(   [   s   $ z#Headers.get_all.<locals>.<listcomp>r)   r*   r   r'   r   get_allR   s   zHeaders.get_allc                 C   s8   	 |  | }| jD ]\}}| |kr|  S q|S r   r)   )r   r    defaultr   r   r   r   r   r-   ^   s   zHeaders.getc                 C      	 dd | j D S )Nc                 S   s   g | ]\}}|qS r   r   r&   r   r   r   r   r   r(   o       z Headers.keys.<locals>.<listcomp>r   r   r   r   r   keysg      zHeaders.keysc                 C   r2   )Nc                 S   s   g | ]\}}|qS r   r   r3   r   r   r   r(   y   r4   z"Headers.values.<locals>.<listcomp>r5   r   r   r   r   valuesq   r7   zHeaders.valuesc                 C   s   	 | j d d  S r   r5   r   r   r   r   items{   s   zHeaders.itemsc                 C   s   d| j j| jf S )Nz%s(%r))	__class____name__r   r   r   r   r   __repr__   s   zHeaders.__repr__c                 C   s    	 d dd | jD ddg S )Nz
c                 S   s   g | ]}d | qS )z%s: %sr   r%   r   r   r   r(      r4   z#Headers.__str__.<locals>.<listcomp> )joinr   r   r   r   r   __str__   s   zHeaders.__str__c                 C   s   t | dS )Nz
iso-8859-1)r   encoder   r   r   r   	__bytes__   s   zHeaders.__bytes__c                 C   s8   	 |  |}|d u r| j| || |f |S |S r   )r-   r   r   r   )r   r    r	   resultr   r   r   
setdefault   s   
zHeaders.setdefaultc                 K   s   	 g }|d ur|  |}|| | D ](\}}|  |}|d u r,||dd q|  |}|t|dd| q| j|  |d|f d S )N_-z; )r   r   r9   r   r   r   r>   )r   _name_valueZ_paramspartsr   r   r   r   r   
add_header   s   



 zHeaders.add_headerr   )r;   
__module____qualname__r   r   r   r"   r+   r.   r/   r0   r-   r6   r8   r9   r<   r?   rA   rC   rI   r   r   r   r   r      s&    


	


r   )Nr   )recompiler   r   r   r   r   r   r   <module>   s
    	

