B
    ç¹`ö  ã               @   s€   d dl mZmZmZ d dlmZ ddgZG dd„ deƒZdddd	d
œZe	dd„ e 
¡ D ƒƒZdd„ Zdd„ ZG dd„ deƒZdS )é    )ÚMutableMappingÚ
iteritems_Ústring_types)Ú	MultiDictÚResponseHeadersÚEnvironHeadersc               @   s^   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Z	dd„ Z
e
Zddd„Zdd„ ZdS )r   zn
        Dictionary view on the response headerlist.
        Keys are normalized for case and whitespace.
    c             C   s<   |  ¡ }x&t| jƒD ]\}}|  ¡ |kr|S qW t|ƒ‚d S )N)ÚlowerÚreversedÚ_itemsÚKeyError)ÚselfÚkeyÚkÚv© r   úU/home/kop/projects/devel/pgwui/test_venv/lib/python3.7/site-packages/webob/headers.pyÚ__getitem__   s
    zResponseHeaders.__getitem__c                s   ˆ   ¡ ‰ ‡ fdd„| jD ƒS )Nc                s    g | ]\}}|  ¡ ˆ kr|‘qS r   )r   )Ú.0r   r   )r   r   r   ú
<listcomp>   s    z*ResponseHeaders.getall.<locals>.<listcomp>)r   r
   )r   r   r   )r   r   Úgetall   s    zResponseHeaders.getallc             C   s:   |   ¡ }x,t|ƒD ] \}}t|ƒdkr|d ||< qW |S )Né   r   )Údict_of_listsr   Úlen)r   Úrr   Úvalr   r   r   Úmixed   s
    zResponseHeaders.mixedc             C   s4   i }x*t | ƒD ]\}}| | ¡ g ¡ |¡ qW |S )N)r   Ú
setdefaultr   Úappend)r   r   r   r   r   r   r   r   !   s    zResponseHeaders.dict_of_listsc                s:   |  ¡ ‰ ‡ fdd„| jD ƒ| jd d …< | j ||f¡ d S )Nc                s$   g | ]\}}|  ¡ ˆ kr||f‘qS r   )r   )r   r   r   )Únorm_keyr   r   r   )   s    z/ResponseHeaders.__setitem__.<locals>.<listcomp>)r   r
   r   )r   r   Úvaluer   )r   r   Ú__setitem__'   s    zResponseHeaders.__setitem__c             C   s^   |  ¡ }| j}d}x:tt|ƒd ddƒD ]"}|| d   ¡ |kr(||= d}q(W |sZt|ƒ‚d S )NFr   éÿÿÿÿr   T)r   r
   Úranger   r   )r   r   ÚitemsÚfoundÚir   r   r   Ú__delitem__,   s    zResponseHeaders.__delitem__c             C   s0   |  ¡ }x"| jD ]\}}|  ¡ |krdS qW dS )NTF)r   r
   )r   r   r   r   r   r   r   Ú__contains__7   s
    zResponseHeaders.__contains__Nc             C   s@   |  ¡ }x"| jD ]\}}|  ¡ |kr|S qW | j ||f¡ |S )N)r   r
   r   )r   r   ÚdefaultZc_keyr   r   r   r   r   r   @   s    zResponseHeaders.setdefaultc             G   sŒ   t |ƒdkr$tdtdt |ƒ ƒ ƒ‚| ¡ }xFtt | jƒƒD ]4}| j| d  ¡ |kr<| j| d }| j|= |S q<W |r€|d S t|ƒ‚d S )Nr   z(pop expected at most 2 arguments, got %sr   )r   Ú	TypeErrorÚreprr   r"   r
   r   )r   r   Úargsr%   r   r   r   r   ÚpopH   s    zResponseHeaders.pop)N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r    r&   r'   Zhas_keyr   r,   r   r   r   r   r   
   s   
zContent-TypezContent-LengthZContent_TypeZContent_Length)ÚCONTENT_TYPEÚCONTENT_LENGTHZHTTP_CONTENT_TYPEZHTTP_CONTENT_LENGTHc             C   s   g | ]\}}|  ¡ |f‘qS r   )Úupper)r   r   r   r   r   r   r   c   s    r   c             C   sH   t | tƒsd S | tkrt|  S |  d¡r@| dd …  dd¡ ¡ S d S d S )NÚHTTP_é   Ú_ú-)Ú
isinstancer   Ú
key2headerÚ
startswithÚreplaceÚtitle)r   r   r   r   Ú
_trans_keye   s    

r=   c             C   s(   |   ¡ } | tkrt|  S d|  dd¡ S )Nr4   r7   r6   )r3   Ú
header2keyr;   )Únamer   r   r   Ú_trans_nameo   s    r@   c               @   sP   e Zd Z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 )r   ag  An object that represents the headers as present in a
    WSGI environment.

    This object is a wrapper (with no internal state) for a WSGI
    request object, representing the CGI-style HTTP_* keys as a
    dictionary.  Because a CGI environment can only hold one value for
    each key, this dictionary is single-valued (unlike outgoing
    headers).
    c             C   s
   || _ d S )N)Úenviron)r   rA   r   r   r   Ú__init__€   s    zEnvironHeaders.__init__c             C   s   | j t|ƒ S )N)rA   r@   )r   Úhnamer   r   r   r   ƒ   s    zEnvironHeaders.__getitem__c             C   s   || j t|ƒ< d S )N)rA   r@   )r   rC   r   r   r   r   r    †   s    zEnvironHeaders.__setitem__c             C   s   | j t|ƒ= d S )N)rA   r@   )r   rC   r   r   r   r&   ‰   s    zEnvironHeaders.__delitem__c             C   s   t d tt| jƒƒS )N)ÚfilterÚmapr=   rA   )r   r   r   r   ÚkeysŒ   s    zEnvironHeaders.keysc             C   s   t |ƒ| jkS )N)r@   rA   )r   rC   r   r   r   r'      s    zEnvironHeaders.__contains__c             C   s   t t|  ¡ ƒƒS )N)r   ÚlistrF   )r   r   r   r   Ú__len__’   s    zEnvironHeaders.__len__c             c   s   x|   ¡ D ]
}|V  q
W d S )N)rF   )r   r   r   r   r   Ú__iter__•   s    zEnvironHeaders.__iter__N)r-   r.   r/   r0   rB   r   r    r&   rF   r'   rH   rI   r   r   r   r   r   u   s   	N)Zwebob.compatr   r   r   Zwebob.multidictr   Ú__all__r   r9   Údictr#   r>   r=   r@   r   r   r   r   r   Ú<module>   s   S
