o
    hg                     @   s   d dl mZ d dlmZmZ d dlmZmZmZm	Z	 d dl
Z
ddlmZmZ ddlmZ ddlmZ G d	d
 d
Zede
jdedededee f
ddZede
jdedededee f
ddZde
jdee fddZde
jdee fddZdS )    )AsyncGenerator)asynccontextmanagercontextmanager)AnyAsyncIteratorIteratorcastN   )
SSEDecoderSSELineDecoder)SSEError)ServerSentEventc                   @   sf   e Zd ZdejddfddZdddZedejfdd	Zde	e
 fd
dZdee
df fddZdS )EventSourceresponsereturnNc                 C   s
   || _ d S N	_response)selfr    r   O/var/www/html/openai_agents/venv/lib/python3.10/site-packages/httpx_sse/_api.py__init__   s   
zEventSource.__init__c                 C   s4   | j jdddd }d|vrtd|d S )Nzcontent-type ;r   text/event-streamzJExpected response header Content-Type to contain 'text/event-stream', got )r   headersget	partitionr   )r   content_typer   r   r   _check_content_type   s   zEventSource._check_content_typec                 C   s   | j S r   r   )r   r   r   r   r      s   zEventSource.responsec                 c   sF    |    t }t| jD ]}|d}||}|d ur |V  qd S N
)r   r
   _iter_sse_linesr   rstripdecode)r   decoderlinesser   r   r   iter_sse   s   

zEventSource.iter_ssec                 C  s   |    t }tttd f t| j}z%|2 z3 d H W }|d}||}|d ur.|V  q6 W |	 I d H  d S |	 I d H  w r    )
r   r
   r   r   str_aiter_sse_linesr   r#   r$   aclose)r   r%   linesr&   r'   r   r   r   	aiter_sse%   s   

"zEventSource.aiter_sse)r   N)__name__
__module____qualname__httpxResponser   r   propertyr   r   r   r(   r   r-   r   r   r   r   r      s    
	r   clientmethodurlkwargsr   c                 k   sf    | di }d|d< d|d< | j||fd|i|}t|V  W d    d S 1 s,w   Y  d S Nr   r   Acceptzno-storezCache-Controlpopstreamr   r4   r5   r6   r7   r   r   r   r   r   connect_sse3   s   "r>   c              	   K  sz   | di }d|d< d|d< | j||fd|i|4 I d H }t|V  W d   I d H  d S 1 I d H s6w   Y  d S r8   r:   r=   r   r   r   aconnect_sse?   s   ".r?   r   c                 C  sN   t  }|  2 z3 d H W }||D ]}|V  qq6 | D ]}|V  qd S r   )r   
aiter_textr$   flushr   r%   textr&   r   r   r   r*   N   s   r*   c                 c   sD    t  }|  D ]}||D ]}|V  qq| D ]}|V  qd S r   )r   	iter_textr$   rA   rB   r   r   r   r"   W   s   r"   )collections.abcr   
contextlibr   r   typingr   r   r   r   r1   	_decodersr
   r   _exceptionsr   _modelsr   r   Clientr)   r>   AsyncClientr?   r2   r*   r"   r   r   r   r   <module>   sD    '	