o
    .'h  ã                   @   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    úGC:\Users\shubh\Videos\agent\nova\Lib\site-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    $	ÿ