o
    Cji                     @  s   d dl mZ d dlZd dlmZmZmZmZmZ d dl	m
Z
 d dlZddlmZ ddlmZ ddlmZ er>dd	lmZmZ G d
d dee ZG dd dee ZG dd dZG dd dZdS )    )annotationsN)TYPE_CHECKINGAnyGenericIteratorAsyncIterator)override   )	ResponseT)
is_mapping)APIError)SyncAPIClientAsyncAPIClientc                   @  L   e Zd ZU dZded< dd
dZdddZdddZdddZdddZ	dS )StreamzJProvides the core interface to iterate over a synchronous stream response.httpx.Responseresponsecast_totype[ResponseT]clientr   returnNonec                C  (   || _ || _|| _t | _|  | _d S Nr   _cast_to_client
SSEDecoder_decoder
__stream__	_iteratorselfr   r   r    r#   h/var/www/html/Resume-Parser/resume-parser-inhouse/venv/lib/python3.10/site-packages/openai/_streaming.py__init__   
   zStream.__init__r
   c                 C  s
   | j  S r   )r    __next__r"   r#   r#   r$   r'   $   s   
zStream.__next__Iterator[ResponseT]c                 c  s    | j D ]}|V  qd S r   r    r"   itemr#   r#   r$   __iter__'   s   
zStream.__iter__Iterator[ServerSentEvent]c                 c  s    | j | j E d H  d S r   )r   iterr   
iter_linesr(   r#   r#   r$   _iter_events+   s   zStream._iter_eventsc                 c  s    | j }| j}| jj}|  }|D ]/}|jdr n&|jd u r@| }t	|r8|
dr8td| jj|d d||||dV  q|D ]}qCd S Nz[DONE]errorz!An error ocurred during streaming)messagerequestbody)datar   r   r   r   r   _process_response_datar1   r7   
startswitheventjsonr   getr   r5   r"   r   r   process_dataiteratorsser7   r#   r#   r$   r   .   s*   
zStream.__stream__N)r   r   r   r   r   r   r   r   r   r
   )r   r)   )r   r.   )
__name__
__module____qualname____doc____annotations__r%   r'   r-   r1   r   r#   r#   r#   r$   r      s   
 



r   c                   @  r   )AsyncStreamzLProvides the core interface to iterate over an asynchronous stream response.r   r   r   r   r   r   r   r   c                C  r   r   r   r!   r#   r#   r$   r%   M   r&   zAsyncStream.__init__r
   c                   s   | j  I d H S r   )r    	__anext__r(   r#   r#   r$   rI   Z   s   zAsyncStream.__anext__AsyncIterator[ResponseT]c                 C s"   | j 2 z	3 d H W }|V  q6 d S r   r*   r+   r#   r#   r$   	__aiter__]   s   zAsyncStream.__aiter__AsyncIterator[ServerSentEvent]c                 C s.   | j | j 2 z	3 d H W }|V  q
6 d S r   )r   aiterr   aiter_lines)r"   rA   r#   r#   r$   r1   a   s   zAsyncStream._iter_eventsc                 C s   | j }| j}| jj}|  }|2 z33 d H W }|jdr n'|jd u rD| }t	|r<|
dr<td| jj|d d||||dV  q6 |2 z3 d H W }qH6 d S r2   r8   r>   r#   r#   r$   r   e   s,   
zAsyncStream.__stream__N)r   r   r   r   r   r   r   r   rB   )r   rJ   )r   rL   )
rC   rD   rE   rF   rG   r%   rI   rK   r1   r   r#   r#   r#   r$   rH   H   s   
 



rH   c                   @  sr   e Zd ZddddddddZedddZedddZedddZedddZdddZ	e
dddZdS ) ServerSentEventNr;   r7   idretryr;   
str | Noner7   rQ   rR   
int | Noner   r   c                C  s,   |d u rd}|| _ || _|pd | _|| _d S )N )_id_data_event_retry)r"   r;   r7   rQ   rR   r#   r#   r$   r%      s   

zServerSentEvent.__init__c                 C     | j S r   )rX   r(   r#   r#   r$   r;         zServerSentEvent.eventc                 C  rZ   r   )rV   r(   r#   r#   r$   rQ      r[   zServerSentEvent.idc                 C  rZ   r   )rY   r(   r#   r#   r$   rR      r[   zServerSentEvent.retrystrc                 C  rZ   r   )rW   r(   r#   r#   r$   r7      r[   zServerSentEvent.datar   c                 C  s   t | jS r   )r<   loadsr7   r(   r#   r#   r$   r<      s   zServerSentEvent.jsonc              	   C  s&   d| j  d| j d| j d| j d	S )NzServerSentEvent(event=z, data=z, id=z, retry=)rP   r(   r#   r#   r$   __repr__   s   &zServerSentEvent.__repr__)
r;   rS   r7   rS   rQ   rS   rR   rT   r   r   )r   rS   )r   rT   )r   r\   )r   r   )rC   rD   rE   r%   propertyr;   rQ   rR   r7   r<   r   r_   r#   r#   r#   r$   rO      s"    
rO   c                   @  sV   e Zd ZU ded< ded< ded< ded< dd
dZdddZdddZdddZdS )r   z	list[str]rW   rS   rX   rT   rY   _last_event_idr   r   c                 C  s   d | _ g | _d | _d | _d S r   )rX   rW   ra   rY   r(   r#   r#   r$   r%      s   
zSSEDecoder.__init__r@   Iterator[str]r.   c                 c  s2    |D ]}| d}| |}|dur|V  qdS )zTGiven an iterator that yields lines, iterate over it & yield every event encountered
Nrstripdecoder"   r@   linerA   r#   r#   r$   r/      s   

zSSEDecoder.iterAsyncIterator[str]rL   c                 C s<   |2 z3 dH W }| d}| |}|dur|V  q6 dS )zZGiven an async iterator that yields lines, iterate over it & yield every event encounteredNrc   rd   rg   r#   r#   r$   rM      s   

zSSEDecoder.aiterrh   r\   ServerSentEvent | Nonec              	   C  s  |s,| j s| js| js| jd u rd S t| j d| j| j| jd}d | _ g | _d | _|S |dr3d S |d\}}}|drF|dd  }|dkrO|| _ d S |dkr[| j| d S |dkrkd	|v rf	 d S || _d S |d
krzt	|| _W d S  t
tfy   Y d S w 	 d S )Nrc   rP   : r	   r;   r7   rQ    rR   )rX   rW   ra   rY   rO   joinr:   	partitionappendint	TypeError
ValueError)r"   rh   rA   	fieldname_valuer#   r#   r$   rf      sP   


	zSSEDecoder.decodeN)r   r   )r@   rb   r   r.   )r@   ri   r   rL   )rh   r\   r   rj   )rC   rD   rE   rG   r%   r/   rM   rf   r#   r#   r#   r$   r      s   
 


r   )
__future__r   r<   typingr   r   r   r   r   typing_extensionsr   httpx_typesr
   _utilsr   _exceptionsr   _base_clientr   r   r   rH   rO   r   r#   r#   r#   r$   <module>   s   67)