o
    h
                     @   sp   d dl Z d dlZd dlZd dlmZmZmZ G dd dZG dd deZdee	e
eef ded	e	fd
dZdS )    N)OptionalAnyUnionc                   @   s|   e Zd ZdZedZdZ	ddddddddee	 dee
 dee
 d	ee d
ee
 dee
 ddfddZdefddZdS )ServerSentEventzC
    Helper class to format data for Server-Sent Events (SSE).
    z
\r\n|\r|\nz
N)eventidretrycommentsepdatar   r   r   r	   r
   returnc                C   s<   || _ || _|| _|| _|| _|d ur|| _d S | j| _d S N)r   r   r   r   r	   DEFAULT_SEPARATOR_sep)selfr   r   r   r   r	   r
    r   T/var/www/html/openai_agents/venv/lib/python3.10/site-packages/sse_starlette/event.py__init__   s   
zServerSentEvent.__init__c                 C   s  t  }| jd ur | jt| jD ]}|d| | j  q| jd ur5|d| j	d| j | j  | j
d urJ|d| j	d| j
 | j  | jd urf| jt| jD ]}|d| | j  qX| jd urt| jtsutd|d| j | j  || j | dS )	Nz: zid:  zevent: zdata: zretry argument must be intzretry: zutf-8)ioStringIOr	   _LINE_SEP_EXPRsplitstrwriter   r   subr   r   r   
isinstanceint	TypeErrorgetvalueencode)r   bufferchunkr   r   r   r        s&   

 


zServerSentEvent.encoder   )__name__
__module____qualname____doc__recompiler   r   r   r   r   r   r   bytesr    r   r   r   r   r      s6    
	
r   c                       s2   e Zd ZdZ	ddee ddf fddZ  ZS )JSONServerSentEventzH
    Helper class to format JSON data for Server-Sent Events (SSE).
    Nr   r   c                    s:   t  j|d urtj|ddd ddnd g|R i | d S )NF),:)ensure_ascii	allow_nanindent
separators)superr   jsondumps)r   r   argskwargs	__class__r   r   r   C   s   

zJSONServerSentEvent.__init__r   )r#   r$   r%   r&   r   r   r   __classcell__r   r   r6   r   r*   >   s    r*   r   r
   r   c                 C   sX   t | tr| S t | tr|  S t | tr"|| d< tdi |  S tt| |d S )Nr
   )r
   r   )r   r)   r   r    dictr   )r   r
   r   r   r   ensure_bytesX   s   


r:   )r   r'   r2   typingr   r   r   r   r*   r)   r9   r   r:   r   r   r   r   <module>   s    7&