B
    v9an                 @   s.   d dl Z e dZdddZG dd dZdS )	    Nz[ \(\)<>@,;:\\"/\[\]\?=]   c             C   sX   |d k	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valueZquote r
   /usr/lib/python3.7/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 k	r|ng }t |tk	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k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 )N)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).0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 )N)get)r   r   r
   r
   r   __getitem__B   s    	zHeaders.__getitem__c             C   s   |  |d k	S )N)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!   [   s    z#Headers.get_all.<locals>.<listcomp>)r   r   r   )r   r   r
   )r   r   get_allR   s    zHeaders.get_allc             C   s6   |  | }x"| jD ]\}}| |kr|S qW |S )N)r   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   r(   r)   r
   r
   r   r!   o   s    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
   )r   r(   r)   r
   r
   r   r!   y   s    z"Headers.values.<locals>.<listcomp>)r   )r   r
   r
   r   valuesq   s    zHeaders.valuesc             C   s   | j d d  S )N)r   )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!      s    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   encode)r   r
   r
   r   	__bytes__   s    zHeaders.__bytes__c             C   s:   |  |}|d kr2| j| || |f |S |S d S )N)r#   r   r   r   )r   r   r	   resultr
   r
   r   
setdefault   s    
zHeaders.setdefaultc             K   s   g }|d k	r |  |}|| x\| D ]P\}}|  |}|d krX||dd q*|  |}|t|dd| q*W | j|  |d|f d S )N_-z; )r   r   r,   r   r   r   r1   )r   _nameZ_valueZ_paramspartsr(   r)   r
   r
   r   
add_header   s    



zHeaders.add_header)N)N)r.   
__module____qualname__r   r   r   r   r"   r$   r%   r&   r#   r*   r+   r,   r/   r2   r4   r6   r;   r
   r
   r
   r   r      s"   

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