a
    `gS+                     @  s>  d dl mZ d dlZd dlZd dlZd dlZd dlmZ d dlm	Z	m
Z
mZmZmZmZmZ d dlmZ d dlmZ d dlmZ d dlmZmZ d d	lmZ eeZG d
d dZ G dd dZ!dddddZ"ddddddZ#dddddZ$dddddZ%dddd d!Z&dd"d#d$d%d&Z'dd'd"d(d)d*d+Z(dS ),    )annotationsN)BufferedReader)DictIterableLiteralOptionalTupleUnioncast)schemas)_orjson)CompressedTraces)MultipartPartMultipartPartsAndContext)
dumps_jsonc                   @  s   e Zd ZU ded< ded< ded< ded< ded	< ded
< ded< ded< dZddddddddddd	ddZdddddZdS )SerializedRunOperationLiteral['post', 'patch']	operation	uuid.UUIDidtrace_idbytes_nonezOptional[bytes]inputsoutputseventsz Optional[ls_schemas.Attachments]attachmentsr   r   r   r   r   r   r   r   NNone)	r   r   r   r   r   r   r   r   returnc	           	      C  s4   || _ || _|| _|| _|| _|| _|| _|| _d S Nr   )	selfr   r   r   r   r   r   r   r    r"   m/var/www/html/cobodadashboardai.evdpl.com/venv/lib/python3.9/site-packages/langsmith/_internal/_operations.py__init__,   s    zSerializedRunOperation.__init__objectboolotherr   c              	   C  sR   t |toP| j| j| j| j| j| j| j| j	f|j|j|j|j|j|j|j|j	fkS r    )

isinstancer   r   r   r   r   r   r   r   r   r!   r(   r"   r"   r#   __eq__@   s(    

zSerializedRunOperation.__eq__)NNNN__name__
__module____qualname____annotations__	__slots__r$   r+   r"   r"   r"   r#   r      s   
     r   c                   @  sN   e Zd ZU ded< ded< ded< dZdddddd	d
ZdddddZdS )SerializedFeedbackOperationr   r   r   r   feedbackr   r   r3   r   )r   r   r3   r   c                 C  s   || _ || _|| _d S r    r4   )r!   r   r   r3   r"   r"   r#   r$   ]   s    z$SerializedFeedbackOperation.__init__r%   r&   r'   c                 C  s*   t |to(| j| j| jf|j|j|jfkS r    )r)   r2   r   r   r3   r*   r"   r"   r#   r+   b   s    
z"SerializedFeedbackOperation.__eq__Nr,   r"   r"   r"   r#   r2   V   s   
r2   z&Union[ls_schemas.FeedbackCreate, dict])r3   r   c                 C  s   t | dr"tt| dr"|  }n
tt| }d|vrBt |d< n t|d trbt	|d |d< d|vrxt |d< n t|d trt	|d |d< t
|d |d t|dS )Ndictr   r   r4   )hasattrcallablegetattrr5   r
   uuiduuid4r)   strUUIDr2   _dumps_json)r3   Zfeedback_creater"   r"   r#   serialize_feedback_dictj   s     

r>   r   r5   )r   payloadr   c              
   C  s   | dd }| dd }| dd }| dd }t| |d |d t||d urVt|nd |d urht|nd |d urzt|nd |d ur|nd dS )Nr   r   r   r   r   r   r   )popr   r=   )r   r?   r   r   r   r   r"   r"   r#   serialize_run_dict   s    rA   z@list[Union[SerializedRunOperation, SerializedFeedbackOperation]])opsr   c                 C  s&  dd | D }g }| D ]}t |tr|jdkr2q||j}|d u rR|| q|jd ur|j|jkrt|j}dd t|j	 D }|
| t||_|jd ur|j|_|jd ur|j|_|jd ur|j|_|jd ur|jd u ri |_|j
|j q|| qtt| |S )Nc                 S  s(   i | ] }t |tr|jd kr|j|qS )post)r)   r   r   r   ).0opr"   r"   r#   
<dictcomp>   s   z7combine_serialized_queue_operations.<locals>.<dictcomp>rC   c                 S  s   i | ]\}}|d ur||qS r    r"   rD   kvr"   r"   r#   rF      s   )r)   r   r   getr   appendr   r   loadsitemsupdatedumpsr   r   r   r   list	itertoolschainvalues)rB   Zcreate_ops_by_idZpassthrough_opsrE   Z	create_opZcreate_op_dictZop_dictr"   r"   r#   #combine_serialized_queue_operations   s@    






rT   r   )rE   r   c              	   C  s@   t d| j d | jddtt| jiffgd| j d| j S )Nz	feedback.application/jsonContent-Lengthtrace=,id=)r   r   r3   r;   lenr   )rE   r"   r"   r#   <serialized_feedback_operation_to_multipart_parts_and_context   s    
rZ   z:tuple[MultipartPartsAndContext, Dict[str, BufferedReader]]c                 C  s  g }i }| | j d| j d | jddtt| jiff d| jfd| jfd| jffD ]L\}}|d u rjqX|}| | j d| j d| d |ddtt|iff qX| j	r| j	
 D ]\}\}}d|v rtd| d| j d	 qt|tr&| d
| j d| d ||dtt|iff qtj|}	t|d}
|
|t|tt  < | d
| j d| d |
| d|	 i ff qt|d| j d| j |fS )N.rU   rV   r   r   r   z Skipping logging of attachment 'z
' for run zx: Invalid attachment name.  Attachment names must not contain periods ('.'). Please rename the attachment and try again.zattachment.rbz	; length=rW   rX   )rK   r   r   r   r;   rY   r   r   r   r   rM   loggerwarningr)   r   ospathgetsizeopenr9   r:   r   r   )rE   Z	acc_partsZopened_files_dictkeyvalueZvalbncontent_typeZdata_or_path	file_sizefiler"   r"   r#   7serialized_run_operation_to_multipart_parts_and_context   sz    
ri   r;   z4Iterable[Tuple[bytes, Union[bytes, BufferedReader]]])parts_and_contextboundaryr   c                 c  s   | j D ]|\}\}}}}d| dd| dg}|rD|d| d |d| dgdd | D d d	| |fV  qd S )
Nz--
z&Content-Disposition: form-data; name=""z; filename="z
Content-Type: c                 S  s    g | ]\}}| d | dqS )z: rl   r"   rG   r"   r"   r#   
<listcomp>7      z6encode_multipart_parts_and_context.<locals>.<listcomp> )partsrK   extendrM   joinencode)rj   rk   Z	part_namefilenamedatarf   headersheader_partsr"   r"   r#   "encode_multipart_parts_and_context'  s    


ry   r   r   )rj   compressed_tracesrk   r   c                 C  s   t | |D ]\}}|j| t|ttfrL| jt|7  _|j| n>t|tr`|	 }nt
| }| jt|7  _|j| |jd q
d S )Ns   
)ry   Zcompressor_writerwriter)   r   	bytearrayuncompressed_sizerY   r   readr;   rt   )rj   rz   rk   rw   rv   Zencoded_datar"   r"   r#   $compress_multipart_parts_and_context?  s    

r   ))
__future__r   rQ   loggingr_   r9   ior   typingr   r   r   r   r   r	   r
   Z	langsmithr   Z
ls_schemasZlangsmith._internalr   Z&langsmith._internal._compressed_tracesr   Zlangsmith._internal._multipartr   r   Zlangsmith._internal._serder   r=   	getLoggerr-   r]   r   r2   r>   rA   rT   rZ   ri   ry   r   r"   r"   r"   r#   <module>   s*   $
C0P