o
    US`c                     @   s  d dl mZmZmZmZmZ ddlmZmZm	Z	 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 ddlmZ zd dl mZ W n eyU   d dlmZ Y nw ded	ee fd
dZdeded	ee fddZdee d	ee fddZ G dd dZ!dS )    )castListTypeUnion
ValuesView   )
Connection	NEED_DATAPAUSED)ConnectionClosedDataEndOfMessageEventInformationalResponseRequestResponse)CLIENTCLOSEDDONE
MUST_CLOSESERVER)Sentinel)Literalconnreturnc                 C   sH   g }	 |   }|ttfv r	 |S tt|}|| t|tu r#	 |S qN)Z
next_eventr	   r
   r   r   appendtyper   )r   
got_eventsevent r    </usr/local/lib/python3.10/dist-packages/h11/tests/helpers.pyget_all_events   s   

r"   datac                 C   s   |  | t| S r   )receive_datar"   )r   r#   r    r    r!   receive_and_get#   s   
r%   	in_eventsc                 C   s   g }| D ]A}t |tu rtt|jddd}|r@t |d t |  u r(tu r@n nt|d j|j |d j|d jd|d< q|| q|S )NF)r#   chunk_start	chunk_end)r   r   bytesr#   r'   r(   r   )r&   Z
out_eventsr   r    r    r!   normalize_data_events*   s   (r+   c                   @   sl   e Zd ZdddZedee fddZ	ddee	 d	e
ee ef d
e
ee eed f defddZdS )ConnectionPairr   Nc                 C   s(   t tt ttti| _t ttt i| _d S r   )r   r   r   r   otherselfr    r    r!   __init__?   s   zConnectionPair.__init__c                 C   s
   | j  S r   )r   valuesr.   r    r    r!   connsC   s   
zConnectionPair.connsmatchrolesend_eventsexpectc           	      C   s   t |ts|g}d}d}|D ]}| j| |}|d u rd}q||7 }q|r1| j| j|  | |r>| j| j|  d t| j| j|  }|dkrN|}t |tsV|g}||ks\J |S )N    FTr3   )
isinstancelistr   sendr-   r$   r"   )	r/   r4   r5   r6   r#   closedZ
send_eventZnew_datar   r    r    r!   r:   H   s(   


zConnectionPair.send)r   N)r3   )__name__
__module____qualname__r0   propertyr   r   r2   r   r   r   r   r   r   r*   r:   r    r    r    r!   r,   >   s    
r,   N)"typingr   r   r   r   r   _connectionr   r	   r
   Z_eventsr   r   r   r   r   r   r   _stater   r   r   r   r   Z_utilr   r   ImportErrorZtyping_extensionsr"   r*   r%   r+   r,   r    r    r    r!   <module>   s    $	