a
    %g                     @   s  U d dl mZmZmZmZmZmZmZ ddlm	Z	m
Z
mZmZmZmZ ddlmZ ddlmZmZmZmZmZ ddlmZmZ dgZeegef Zeedd	d
dZeeddddZeeef eddddZG dd dZ G dd de Z!G dd de Z"G dd de Z#eeeee ee f ee f eee$ee  f eeeef egdf eeegdf f f Z%eefeeefeeefeee"e!e#diZ&e%e'd< dS )    )AnyCallableDictListTupleTypeUnion   )DataEndOfMessageEventInformationalResponseRequestResponse)Headers)CLIENTIDLE	SEND_BODYSEND_RESPONSESERVER)LocalProtocolErrorSentinelWRITERSNheaderswritereturnc                 C   sb   | j }|D ]"\}}}|dkr
|d||f  q
|D ]"\}}}|dkr2|d||f  q2|d d S )Ns   hosts   %s: %s
   
)Z_full_items)r   r   	raw_itemsZraw_namenamevalue r!   O/var/www/html/llm_bihealth/app/venv/lib/python3.9/site-packages/h11/_writers.pywrite_headers   s    r#   )requestr   r   c                 C   s6   | j dkrtd|d| j| jf  t| j| d S )N   1.1I only send HTTP/1.1s   %s %s HTTP/1.1
)http_versionr   methodtargetr#   r   )r$   r   r!   r!   r"   write_request$   s    
r*   )responser   r   c                 C   sD   | j dkrtdt| jd}|d|| jf  t| j| d S )Nr%   r&   asciis   HTTP/1.1 %s %s
)r'   r   strstatus_codeencodereasonr#   r   )r+   r   Zstatus_bytesr!   r!   r"   write_any_response,   s
    
	r1   c                   @   sB   e Zd ZeeddddZeeddddZeeddd	d
Z	dS )
BodyWriterN)eventr   r   c                 C   sD   t |tu r| |j| n$t |tu r8| |j| nds@J d S )NF)typer
   	send_datadatar   send_eomr   )selfr3   r   r!   r!   r"   __call__?   s
    zBodyWriter.__call__r6   r   r   c                 C   s   d S Nr!   r8   r6   r   r!   r!   r"   r5   G   s    zBodyWriter.send_datar   c                 C   s   d S r;   r!   r8   r   r   r!   r!   r"   r7   J   s    zBodyWriter.send_eom)
__name__
__module____qualname__r   Writerr9   bytesr5   r   r7   r!   r!   r!   r"   r2   >   s   r2   c                   @   s@   e Zd ZeddddZeeddddZeeddd	d
Z	dS )ContentLengthWriterN)lengthr   c                 C   s
   || _ d S r;   )_length)r8   rD   r!   r!   r"   __init__U   s    zContentLengthWriter.__init__r:   c                 C   s0   |  j t|8  _ | j dk r$td|| d S )Nr   z)Too much data for declared Content-Length)rE   lenr   r<   r!   r!   r"   r5   X   s    
zContentLengthWriter.send_datar   c                 C   s"   | j dkrtd|rtdd S )Nr   z+Too little data for declared Content-Lengthz%Content-Length and trailers don't mix)rE   r   r=   r!   r!   r"   r7   ^   s    
zContentLengthWriter.send_eom)
r>   r?   r@   intrF   rB   rA   r5   r   r7   r!   r!   r!   r"   rC   T   s   rC   c                   @   s0   e Zd ZeeddddZeeddddZdS )ChunkedWriterNr:   c                 C   s,   |sd S |dt |  || |d d S )Ns   %x
r   )rG   r<   r!   r!   r"   r5   f   s
    zChunkedWriter.send_datar   c                 C   s   |d t || d S )Ns   0
)r#   r=   r!   r!   r"   r7   o   s    zChunkedWriter.send_eomr>   r?   r@   rB   rA   r5   r   r7   r!   r!   r!   r"   rI   e   s   	rI   c                   @   s0   e Zd ZeeddddZeeddddZdS )Http10WriterNr:   c                 C   s   || d S r;   r!   r<   r!   r!   r"   r5   u   s    zHttp10Writer.send_datar   c                 C   s   |rt dd S )Nz&can't send trailers to HTTP/1.0 client)r   r=   r!   r!   r"   r7   x   s    zHttp10Writer.send_eomrJ   r!   r!   r!   r"   rK   t   s   rK   )chunkedzcontent-lengthzhttp/1.0)(typingr   r   r   r   r   r   r   Z_eventsr
   r   r   r   r   r   _headersr   _stater   r   r   r   r   Z_utilr   r   __all__rB   rA   r#   r*   r1   r2   rC   rI   rK   r-   ZWritersTyper   __annotations__r!   r!   r!   r"   <module>
   sD   & 	
