U
    ʼb                     @   s|   d dl Z ddlmZmZmZ ddlmZmZ e dZ	e e
dZe e
dZddd	Zd
d Zdd Zdd ZdS )    N   )LocalProtocolErrorbytesifyvalidate)
field_namefield_values   [0-9]+asciiFc                 C   s   g }d}d}| D ]\}}|sHt |}t |}tt|d| tt|d| | }|dkrt|rdtdtt|d d}|dkr|rtd	d
d| }|dkrtdd
dd}|||f q|S )NFzIllegal header name {!r}zIllegal header value {!r}s   content-lengthzmultiple Content-Length headerszbad Content-LengthTs   transfer-encodingz"multiple Transfer-Encoding headersi  )Zerror_status_hints   chunkedz,Only Transfer-Encoding: chunked is supported)r   r   _field_name_re_field_value_relowerr   _content_length_reappend)headersZ_parsednew_headersZsaw_content_lengthZsaw_transfer_encodingnamevalue r   0/tmp/pip-unpacked-wheel-rko__zic/h11/_headers.pynormalize_and_validate?   s:    r   c                 C   sL   g }| D ]>\}}||kr|  }|dD ]}| }|r*|| q*q|S )N   ,)r   splitstripr   )r   r   out
found_namefound_raw_valueZfound_split_valuer   r   r   get_comma_headere   s    $r   c                 C   sT   g }| D ]\}}||kr| ||f q|D ]}| ||f q,t|| d d < d S )N)r   r   )r   r   Z
new_valuesr   r   r   	new_valuer   r   r   set_comma_header   s    r   c                 C   s"   | j dk rdS t| jd}d|kS )Ns   1.1Fs   expects   100-continue)http_versionr   r   )requestexpectr   r   r   has_expect_100_continue   s    
r!   )F)reZ_utilr   r   r   Z_abnfr   r   compiler   encoder	   r
   r   r   r   r!   r   r   r   r   <module>   s   8

&.
