o
    i'                     @   sf  d dl 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Zd dlmZm	Z	m
Z
 ddlmZmZmZmZmZmZmZmZmZ ddlmZmZ ddlmZ dd	 Zd
d Zdd Zdejeeeef fddZdejeef fddZdej dejeeeef dejeef fddZ!dej dejeef dejeef fddZ"dejeef dee# fddZ$ej%		dCdej dedee& de&def
dd Z'ej%		dCdej dedee& de&def
d!d Z'		"dDdej dejeef dee& de&dejeef f
d#d Z'ej%		dCdej dedee& de&def
d$d%Z(ej%		dCdej dedee& de&def
d&d%Z(		dCdej dejeef dee& de&dejeef f
d'd%Z(d(ej d)e#dee) fd*d+Z*d,ej+e defd-d.Z,d/ej+e defd0d1Z-g d2Z.d3ed4e#fd5d6Z/d3ed4e#fd7d8Z0d3ed4e#fd9d:Z1d3efd;d<Z2G d=d> d>Z3G d?d@ d@e3Z4G dAdB dBe3Z5dS )E    N)Optional)parse_schemareaderwriter   )	EmbedResponseEmbeddingsFloatsEmbedResponseEmbeddingsByTypeEmbedResponseApiMetaEmbedByTypeResponseEmbeddingsApiMetaBilledUnitsEmbedJobCreateEmbedJobResponseDataset)DatasetsCreateResponseDatasetsGetResponse)
get_fieldsc                   C   s   t  t B S N)get_success_statesget_failed_states r   r   R/var/www/html/karishye-ai-python/venv/lib/python3.10/site-packages/cohere/utils.pyget_terminal_states   s   r   c                   C   s   ddhS )Ncomplete	validatedr   r   r   r   r   r         r   c                   C   s   h dS )N>   failedskippedunknown	cancelledr   r   r   r   r   r      r   r   	awaitablec                 C   s,   t | dd pt | dd pt t | dd dd S )Njob_ididdatasetgetattrr    r   r   r   get_id   s   r'   c                 C   s    t | dd pt t | dd dd S )Nstatusr#   validation_statusr$   r&   r   r   r   get_validation_status#   s    r*   coherereturnc                 C   sb   |j jdks|j jdkr| jjt|dS |j jdks!|j jdkr*| jjt|dS td| Nr   r   r"   r   r   zUnexpected awaitable type 	__class____name__
embed_jobsgetr'   datasets
ValueErrorr+   r    r   r   r   get_job'   s
   r7   c                    sp   |j jdks|j jdkr| jjt|dI d H S |j jdks%|j jdkr1| jjt|dI d H S td| r-   r/   r6   r   r   r   async_get_job3   s   r8   jobc                 C   sD   t | trd| j d| j S t | tr d| jj d| jj S d S )Nz
Embed job z failed with status z$Dataset creation failed with status z and error : )
isinstancer   r!   r(   r   r#   r)   validation_error)r9   r   r   r   get_failure_reason>   s
   

r<   
   timeoutintervalc                 C      d S r   r   r+   r    r>   r?   r   r   r   waitF      rB   c                 C   r@   r   r   rA   r   r   r   rB   P   rC      c                 C   s   t   }t }t }t| |}t||vr=|d ur)t   | |kr)td| dt | td t| |}t||vst||v rItt	||S Nzwait timed out after z secondsz...)
timer   r   r7   r*   TimeoutErrorsleepprint	Exceptionr<   r+   r    r>   r?   
start_timeterminal_statesfailed_statesr9   r   r   r   rB   Z   s   


	c                       d S r   r   rA   r   r   r   
async_waitt      rP   c                    rO   r   r   rA   r   r   r   rP   ~   rQ   c                    s   t   }t }t }t| |I d H }t||vrG|d ur-t   | |kr-td| dt|I d H  td t| |I d H }t||vst||v rSt	t
||S rE   )rF   r   r   r8   r*   rG   asynciorH   rI   rJ   r<   rK   r   r   r   rP      s   	objfieldc                    s"    fdd| D }|rt |S d S )Nc                    s$   g | ]}t | d urt | qS r   r$   ).0rS   rT   r   r   
<listcomp>      $ z*sum_fields_if_not_none.<locals>.<listcomp>)sum)rS   rT   non_noner   rV   r   sum_fields_if_not_none   s   r[   metasc                 C   st   | r| d j nd }dd | D }t|d}t|d}t|d}t|d}dd	 | D }t|t||||d
t|dS )Nr   c                 S      g | ]}|j qS r   )billed_units)rU   metar   r   r   rW      s    z$merge_meta_field.<locals>.<listcomp>input_tokensoutput_tokenssearch_unitsclassificationsc                 S   s"   h | ]}|j r|j D ]}|q
qS r   )warnings)rU   r_   warningr   r   r   	<setcomp>   s   " z#merge_meta_field.<locals>.<setcomp>)r`   ra   rb   rc   )api_versionr^   rd   )rg   r[   r
   r   list)r\   rg   r^   r`   ra   rb   rc   rd   r   r   r   merge_meta_field   s"   



ri   	responsesc           	         s   t dd | D }ddd | D }dd | D }| d jdkr:ttjt | }d	d |D }td||||d
S ttjt | dd D  fddtd j	D } fdd|D }t
|}td||||dS )Nc                 S   s   g | ]}|j r|j qS r   )r_   rU   responser   r   r   rW      s    z)merge_embed_responses.<locals>.<listcomp>z, c                 s   s    | ]}|j V  qd S r   r.   rk   r   r   r   	<genexpr>   s    z(merge_embed_responses.<locals>.<genexpr>c                 S   s&   g | ]}|j d ur|j D ]}|qqS r   )texts)rU   rl   textr   r   r   rW      s    
r   embeddings_floatsc                 S   s   g | ]
}|j D ]}|qqS r   
embeddings)rU   rp   	embeddingr   r   r   rW      s    )response_typer"   rn   rr   r_   c                 S   r]   r   rq   rk   r   r   r   rW      s    c                    s$   g | ]}t  d  j|dur|qS )r   N)r%   rr   )rU   x)embeddings_typer   r   rW      rX   c                    s    i | ]   fd dD qS )c                    s    g | ]}t | D ]}|q	qS r   r$   )rU   embedding_by_typers   rV   r   r   rW      s    z4merge_embed_responses.<locals>.<dictcomp>.<listcomp>r   )rU   )embeddings_by_typerV   r   
<dictcomp>   s    z)merge_embed_responses.<locals>.<dictcomp>rx   )rt   r"   rr   rn   r_   )ri   joinrt   typingcastListr   r	   r   rr   r   	parse_obj)	rj   r_   response_idrn   rp   rr   fieldsmerged_dictsembeddings_by_type_mergedr   )rx   rv   r   merge_embed_responses   sB   

	r   jsonlcsvavror#   filepathc                 C   s^   | j stdtt| j }t|d}t||t|  W d    d S 1 s(w   Y  d S )NzDataset does not have a schemawb)schema_r5   r   jsonloadsopenr   dataset_generator)r#   r   schemaoutfiler   r   r   	save_avro   s   "r   c                 C   sT   t |d}t| D ]}t|| |d q
W d    d S 1 s#w   Y  d S )Nw
)r   r   r   dumpwrite)r#   r   r   datar   r   r   
save_jsonl   s   "r   c                 C   sv   t |d,}tt| D ]\}}|dkr#tj|t| d}|  || qW d    d S 1 s4w   Y  d S )Nr   r   )
fieldnames)	r   	enumerater   r   
DictWriterrh   keyswriteheaderwriterow)r#   r   r   ir   r   r   r   r   save_csv  s   "r   c                 c   sT    | j std| j D ]}|jstdtj|jdd}t|jD ]}|V  q!qd S )Nz#Dataset does not have dataset_partsz Dataset part does not have a urlT)stream)dataset_partsr5   urlrequestsr3   r   raw)r#   partresprecordr   r   r   r     s   
r   c                	   @   s.   e Zd Zed	dededejd fddZdS )
SdkUtilsr   r#   r   formatr   c                 C   sD   |dkr	t | |S |dkrt| |S |dkrt| |S tdt )Nr   r   r   z$unsupported format must be one of : )r   r   r   rJ   supported_formats)r#   r   r   r   r   r   save_dataset  s   


zSdkUtils.save_datasetN)r   )	r1   
__module____qualname__staticmethodr   strr{   Literalr   r   r   r   r   r     s    $r   c                   @      e Zd ZdS )SyncSdkUtilsNr1   r   r   r   r   r   r   r   '      r   c                   @   r   )AsyncSdkUtilsNr   r   r   r   r   r   +  r   r   )Nr=   )NrD   )6rR   r   r   rF   r{   r   r   fastavror   r   r    r   r   r	   r
   r   r   r   r   r   r4   r   r   	overridesr   r   r   r   Unionr'   r*   Anyr7   r8   r   r<   overloadfloatrB   rP   intr[   r}   ri   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>   s    ,


 	
	
9	