a
    zen                     @   s.   d dl Z e dZdddZG dd dZdS )	    Nz[ \(\)<>@,;:\\"/\[\]\?=]   c                 C   sX   |d urPt |dkrP|s"t|rB|dddd}d| |f S d| |f S n| S d S )Nr   \z\\"z\"z%s="%s"z%s=%s)len	tspecialssearchreplace)Zparamvaluequote r   %/usr/lib/python3.9/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)selfZheadersr   r   r   __init__   s
    zHeaders.__init__c                 C   s&   t |tu r|S tdt|d S )Nz1Header names/values must be of type str (got {0}))r   strAssertionErrorformatrepr)r   r	   r   r   r   _convert_string_type)   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                    s0   |      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>@       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&   [   r'   z#Headers.get_all.<locals>.<listcomp>r(   r)   r   r%   r   get_allR   s    zHeaders.get_allc                 C   s6   |  | }| jD ]\}}| |kr|  S q|S r   r(   )r   r   defaultkvr   r   r   r,   ^   s
    
zHeaders.getc                 C   s   dd | j D S )Nc                 S   s   g | ]\}}|qS r   r   r$   r1   r2   r   r   r   r&   o   r'   z Headers.keys.<locals>.<listcomp>r   r   r   r   r   keysg   s    zHeaders.keysc                 C   s   dd | j D S )Nc                 S   s   g | ]\}}|qS r   r   r3   r   r   r   r&   y   r'   z"Headers.values.<locals>.<listcomp>r4   r   r   r   r   valuesq   s    zHeaders.valuesc                 C   s   | j d d  S r   r4   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&      r'   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   s:   |  |}|d u r2| j| || |f |S |S d S r   )r,   r   r   r   )r   r   r	   resultr   r   r   
setdefault   s    
zHeaders.setdefaultc                 K   s   g }|d ur |  |}|| | D ]P\}}|  |}|d u rV||dd q(|  |}|t|dd| q(| j|  |d|f d S )N_-z; )r   r   r7   r   r   r   r<   )r   _name_valueZ_paramspartsr1   r2   r   r   r   
add_header   s    



zHeaders.add_header)N)N)r9   
__module____qualname__r   r   r   r    r*   r-   r.   r/   r,   r5   r6   r7   r:   r=   r?   rA   rG   r   r   r   r   r      s"   


	


r   )Nr   )recompiler   r   r   r   r   r   r   <module>
   s   

