o
    h                     @   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 ]U\}}|s$t |}t |}tt|d| tt|d| | }|dkr:|r2tdtt|d d}|dkrV|rFtd	d
d| }|dkrTt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   T/var/www/html/magazine_api/magazine_env/lib/python3.10/site-packages/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   
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|v 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
&.
