3 �L�j�@s8ddlZejd�Zejd�Zd dd�ZGdd�d�ZdS) �Nz[ \(\)<>@,;:\\"/\[\]\?=]z[\x00-\x1F\x7F]�cCsX|dk rPt|�dkrP|s"tj|�rB|jdd�jdd�}d||fSd||fSn|SdS)Nr�\z\\�"z\"z%s="%s"z%s=%s)�len� tspecials�search�replace)Zparam�valueZquote�r �'/usr/lib64/python3.6/wsgiref/headers.py� _formatparams  r c@s�eZdZd$dd�Zdd�Zdd�Zdd �Zd d �Zd d �Zdd�Z dd�Z d%dd�Z dd�Z dd�Z dd�Zdd�Zdd�Zdd�Zd d!�Zd"d#�ZdS)&�HeadersNcCs.|dk r |ng}t|�tk r$td��||_dS)Nz+Headers must be a list of name/value tuples)�type�list� TypeError�_headers)�selfZheadersr r r �__init__ s  zHeaders.__init__cCs8t|�tkr"tj|�rtd��|Stdjt|����dS)Nz)Control characters not allowed in headersz1Header names/values must be of type str (got {0}))r�str�_control_chars_rer� ValueError�AssertionError�format�repr)rr r r r �_convert_string_type*s   zHeaders._convert_string_typecCs t|j�S)N)rr)rr r r �__len__3szHeaders.__len__cCs&||=|jj|j|�|j|�f�dS)N)r�appendr)r�name�valr r r � __setitem__7szHeaders.__setitem__cs0|j�j����fdd�|jD�|jdd�<dS)Ncs g|]}|dj��kr|�qS)r)�lower)�.0�kv)rr r � Csz'Headers.__delitem__..)rr r)rrr )rr � __delitem__=szHeaders.__delitem__cCs |j|�S)N)�get)rrr r r � __getitem__Es zHeaders.__getitem__cCs|j|�dk S)N)r%)rrr r r � __contains__PszHeaders.__contains__cs"|j�j����fdd�|jD�S)Ncs$g|]}|dj��kr|d�qS)rr)r )r!r")rr r r#^sz#Headers.get_all..)rr r)rrr )rr �get_allUszHeaders.get_allcCs6|j|j��}x"|jD]\}}|j�|kr|SqW|S)N)rr r)rr�default�k�vr r r r%as  z Headers.getcCsdd�|jD�S)NcSsg|] \}}|�qSr r )r!r*r+r r r r#rsz Headers.keys..)r)rr r r �keysjsz Headers.keyscCsdd�|jD�S)NcSsg|] \}}|�qSr r )r!r*r+r r r r#|sz"Headers.values..)r)rr r r �valuestszHeaders.valuescCs|jdd�S)N)r)rr r r �items~sz Headers.itemscCsd|jj|jfS)Nz%s(%r))� __class__�__name__r)rr r r �__repr__�szHeaders.__repr__cCsdjdd�|jD�ddg�S)Nz cSsg|] }d|�qS)z%s: %sr )r!r"r r r r#�sz#Headers.__str__..�)�joinr)rr r r �__str__�szHeaders.__str__cCst|�jd�S)Nz iso-8859-1)r�encode)rr r r � __bytes__�szHeaders.__bytes__cCs:|j|�}|dkr2|jj|j|�|j|�f�|S|SdS)N)r%rrr)rrr �resultr r r � setdefault�s  zHeaders.setdefaultcKs�g}|dk r |j|�}|j|�x\|j�D]P\}}|j|�}|dkrX|j|jdd��q*|j|�}|jt|jdd�|��q*W|jj|j|�dj|�f�dS)N�_�-z; )rrr.rr rr3)r�_nameZ_valueZ_params�partsr*r+r r r � add_header�s    zHeaders.add_header)N)N)r0� __module__� __qualname__rrrrr$r&r'r(r%r,r-r.r1r4r6r8r=r r r r r s"        r )Nr)�re�compilerrr r r r r r � s