o
    ȳg                     @   s   d dl mZmZ d dlmZmZmZ d dlZddl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S )    )asynccontextmanagercontextmanager)AnyAsyncIteratorIteratorN   )
SSEDecoder)SSEError)ServerSentEventc                   @   sb   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
 fddZdS )EventSourceresponsereturnNc                 C   s
   || _ d S N	_response)selfr    r   J/var/www/html/chatdoc2/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 }| j D ]}|d}||}|d ur |V  qd S N
)r   r   r   
iter_linesrstripdecoder   decoderlinesser   r   r   iter_sse   s   

zEventSource.iter_ssec                 C  sP   |    t }| j 2 z3 d H W }|d}||}|d ur$|V  q6 d S r   )r   r   r   aiter_linesr    r!   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   r/   r0   r1   r2   r   r   r   r   r   connect_sse.   s   "r9   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 r3   r5   r8   r   r   r   aconnect_sse:   s   ".r:   )
contextlibr   r   typingr   r   r   r,   	_decodersr   _exceptionsr	   _modelsr
   r   Clientstrr9   AsyncClientr:   r   r   r   r   <module>   s>    #