U
    hL!                     @  s   d dl mZ d dlZd dlZd dlZd dlmZmZmZ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S )    )annotationsN)LiteralOptionalUnioncast)schemas)_orjson)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   C/tmp/pip-unpacked-wheel-cqvhoa9t/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   r.   r   )r   r   r.   r   c                 C  s   || _ || _|| _d S r   r/   )r   r   r   r.   r   r   r   r   Z   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$   r-   r   r   r.   r%   r   r   r   r&   _   s    
z"SerializedFeedbackOperation.__eq__Nr'   r   r   r   r   r-   S   s   
r-   z&Union[ls_schemas.FeedbackCreate, dict])r.   r   c                 C  s   t | dr"tt| dr"|  }n
tt| }d|krBt |d< n t|d trbt	|d |d< d|krxt |d< n t|d trt	|d |d< t
|d |d t|dS )Ndictr   r   r/   )hasattrcallablegetattrr0   r   uuidZuuid4r$   strUUIDr-   _dumps_json)r.   Zfeedback_creater   r   r   serialize_feedback_dictg   s     

r8   r   r0   )r   payloadr   c              
   C  s   | dd }| dd }| dd }| dd }t| |d |d t||d k	rVt|nd |d k	rht|nd |d k	rzt|nd |d k	r|nd dS )Nr   r   r   r   r   r   r   )popr   r7   )r   r9   r   r   r   r   r   r   r   serialize_run_dict~   s    r;   z@list[Union[SerializedRunOperation, SerializedFeedbackOperation]])opsr   c                 C  s&  dd | D }g }| D ]}t |tr|jdkr2q||j}|d krR|| q|jd k	r|j|jkrt|j}dd t|j	 D }|
| t||_|jd k	r|j|_|jd k	r|j|_|jd k	r|j|_|jd k	r|jd k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>r=   c                 S  s   i | ]\}}|d k	r||qS r   r   )r>   kvr   r   r   r@      s      )r$   r   r   getr   appendr   r   loadsitemsupdatedumpsr   r   r   r   list	itertoolschainvalues)r<   Zcreate_ops_by_idZpassthrough_opsr?   Z	create_opZcreate_op_dictZop_dictr   r   r   #combine_serialized_queue_operations   s@    






rM   r
   )r?   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   r.   r5   lenr   )r?   r   r   r   <serialized_feedback_operation_to_multipart_parts_and_context   s    
rS   c                 C  s0  g }| | 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 krfqT|}| | j d| j d| d |ddtt|iff qT| j	r| j	
 D ]`\}\}}d|krtd| d| j d	 q| d
| j d| d ||dtt|iff qt|d| j d| j S )N.rN   rO   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.rP   rQ   )rD   r   r   r   r5   rR   r   r   r   r   rF   loggerwarningr
   r   )r?   Z	acc_partskeyvalueZvalbncontent_typer   r   r   7serialized_run_operation_to_multipart_parts_and_context   s\    r[   )
__future__r   rJ   loggingr4   typingr   r   r   r   Z	langsmithr   Z
ls_schemasZlangsmith._internalr   Zlangsmith._internal._multipartr	   r
   Zlangsmith._internal._serder   r7   	getLoggerr(   rU   r   r-   r8   r;   rM   rS   r[   r   r   r   r   <module>   s    
C0