a
    
dp                     @   sB  d dl Z ddlmZmZmZmZ ddlT ddlT ddlm	Z	m
Z
mZ dgZe edZe dZd	d
 Zdd Ze edZdd Ze edZdd ZG dd dZe edZG dd dZG dd dZdd Zeefeeefeeefeee feee!feee"feee feee!feee"fee#eeedi
Z$dS )    N   )chunk_headerheader_fieldrequest_linestatus_line)*)LocalProtocolErrorRemoteProtocolErrorvalidateREADERSasciis   [ \t]+c                 c   s   t | }d }|D ]d}t|}|rb|d u r2tdt|tsDt|}|d7 }||| d  7 }q|d urp|V  |}q|d ur|V  d S )Nz%continuation line at start of headers    )iterobs_fold_rematchr   
isinstance	bytearrayend)linesitlastliner    r   U/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/h11/_readers.py_obsolete_line_fold#   s     

r   c                 c   s2   t | D ]$}tt|d|}|d |d fV  qd S )Nzillegal header line: {!r}
field_nameZfield_value)r   r
   header_field_re)r   r   matchesr   r   r   _decode_header_lines7   s    r   c                 C   sj   |   }|d u r$|  r tdd S |s0tdtt|d d|d }tf tt|dd  dd|S )Nillegal request linezno request line receivedr   zillegal request line: {!r}r   TheadersZ_parsed)maybe_extract_lines+is_next_line_obviously_invalid_request_liner   r
   request_line_reRequestlistr   )bufr   r   r   r   r   maybe_read_from_IDLE_client@   s    r(   c                 C   s   |   }|d u r$|  r tdd S |s0tdtt|d d|d }|d d u rZd|d< t|d  }|d< |dk rztnt}|f tt	|d	d  d
d|S )Nr   zno response line receivedr   zillegal status line: {!r}reason    status_code   r   Tr    )
r"   r#   r   r
   status_line_reintZInformationalResponseResponser&   r   )r'   r   r   r+   class_r   r   r   $maybe_read_from_SEND_RESPONSE_serverS   s"    r1   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )ContentLengthReaderc                 C   s   || _ || _d S N)_length
_remaining)selflengthr   r   r   __init__g   s    zContentLengthReader.__init__c                 C   sD   | j dkrt S || j }|d u r(d S |  j t|8  _ t|dS )Nr   data)r5   EndOfMessagemaybe_extract_at_mostlenDatar6   r'   r:   r   r   r   __call__k   s    
zContentLengthReader.__call__c                 C   s   t d| j| j | jd S )Nz]peer closed connection without sending complete message body (received {} bytes, expected {}))r	   formatr4   r5   r6   r   r   r   read_eoft   s
    zContentLengthReader.read_eofN__name__
__module____qualname__r8   r@   rC   r   r   r   r   r2   f   s   	r2   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )ChunkedReaderc                 C   s   d| _ d| _d| _d S )Nr   F)_bytes_in_chunk_bytes_to_discard_reading_trailerrB   r   r   r   r8      s    zChunkedReader.__init__c                 C   s@  | j r,| }|d u rd S ttt|dS | jdkrn|| j}|d u rNd S |  jt|8  _| jdkrnd S | jdks|J | jdkr|	 }|d u rd S t
t|d|}t|d dd| _| jdkrd| _ | |S d}nd}| jdksJ || j}|d u rd S |  jt|8  _| jdkr.d	| _d}nd}t|||d
S )N)r!   r   zillegal chunk header: {!r}
chunk_size   )baseTF   )r:   chunk_start	chunk_end)rK   r"   r;   r&   r   rJ   r<   r=   rI   Zmaybe_extract_next_liner
   chunk_header_rer.   r>   )r6   r'   r   r:   r   r   rP   rQ   r   r   r   r@      sN    




zChunkedReader.__call__c                 C   s   t dd S )NzVpeer closed connection without sending complete message body (incomplete chunked read))r	   rB   r   r   r   rC      s    zChunkedReader.read_eofNrD   r   r   r   r   rH      s   .rH   c                   @   s   e Zd Zdd Zdd ZdS )Http10Readerc                 C   s    | d}|d u rd S t|dS )Niɚ;r9   )r<   r>   r?   r   r   r   r@      s    
zHttp10Reader.__call__c                 C   s   t  S r3   )r;   rB   r   r   r   rC      s    zHttp10Reader.read_eofN)rE   rF   rG   r@   rC   r   r   r   r   rS      s   rS   c                 C   s   | rt dd S )NzGot data when expecting EOF)r   )r'   r   r   r   expect_nothing   s    rT   )chunkedzcontent-lengthzhttp/1.0)%reZ_abnfr   r   r   r   Z_events_stateZ_utilr   r	   r
   __all__compileencoder   r   r   r   r$   r(   r-   r1   r2   rR   rH   rS   rT   ZCLIENTZIDLEZSERVERZSEND_RESPONSEZDONEZ
MUST_CLOSEZCLOSEDZ	SEND_BODYr   r   r   r   r   <module>   sB   
>