
    g              	          d dl Z d dlZd dlZd dlZd dlmZ ej                  rd dlmZm	Z	 dZ
 ej                  e      ZdedefdZdd	dedefd
Zdd	dededej"                  e   fdZdd	dedej(                  e   defdZdddedefdZdddededej"                  e   fdZdddedej(                  e   defdZdedefdZy)    N)	Tokenizer)AsyncClientClient
tokenizersmodelreturnc                     t          d|  S )N:)TOKENIZER_CACHE_KEY)r   s    Z/var/www/openai/venv/lib/python3.12/site-packages/cohere/manually_maintained/tokenizers.pytokenizer_cache_keyr      s    !"!E7++    cor   c                    | j                  t        |            }||S | j                  j                  |      j                  }|st        d|       	 t        |      }t        j                  d| d| d       t        j                  |      }t        j                  |j                        }| j                  t        |      |       |S # t        $ r"}t        j                  d|        Y d}~wd}~ww xY wz9Returns a HF tokenizer from a given tokenizer config URL.Nz!No tokenizer URL found for model z Downloading tokenizer for model z
. Size is z MBs.z0Failed to get the size of the tokenizer config: )
_cache_getr   modelsgettokenizer_url
ValueError_get_tokenizer_config_sizeloggerinfo	Exceptionwarnrequestsr   from_strtext
_cache_setr   r   	tokenizerr   sizeeresponses          r   get_hf_tokenizerr%      s    1%89IIIMM%(66M<UGDEEL)-86ugZvUST
 ||M*H""8==1IMM%e,i8  LFqcJKKLs   'C 	C8C33C8r   c                 T    t        | |      }|j                  |d      j                  S )-Encodes a given text using a local tokenizer.Fadd_special_tokens)r%   encodeidsr   r   r   r!   s       r   local_tokenizer-   +   s*     U+IDU;???r   tokensc                 <    t        | |      }|j                  |      S )7Decodes a given list of tokens using a local tokenizer.)r%   decoder   r   r.   r!   s       r   local_detokenizer3   1   s     U+IF##r   r   c                 b  K   | j                  t        |            }||S | j                  j                  |       d{   j                  }|st        d|       	 t        |      }t        j                  d| d| d       t        j                         j                  dt        j                  |       d{   }t        j                   |j"                        }| j%                  t        |      |       |S 7 # t        $ r"}t        j                  d|        Y d}~d}~ww xY w7 pwr   )r   r   r   r   r   r   r   r   r   r   r   asyncioget_event_looprun_in_executorr   r   r   r   r   r    s          r   async_get_hf_tokenizerr8   7   s     1%89I99==//>>M<UGDEEL)-86ugZvUST
 ++-==dHLLR_``H""8==1IMM%e,i8! 0  LFqcJKKL asG   =D/C= D/'C? 6D/<D-=AD/?	D*D% D/%D**D/c                 p   K   t        | |       d{   }|j                  |d      j                  S 7 !w)r'   NFr(   )r8   r*   r+   r,   s       r   async_local_tokenizer:   P   s6     ,R77IDU;??? 8s   64"6c                 X   K   t        | |       d{   }|j                  |      S 7 w)r0   N)r8   r1   r2   s       r   async_local_detokenizer<   V   s+     ,R77IF## 8s   *(*r   c                     t        j                  |       }d }dD ]!  }|j                  j                  |      }|s! n t	        t        t        j                  t
        |            dz  dz  d      S )N)zx-goog-stored-content-lengthzContent-Lengthi      )r   headheadersr   roundinttypingcast)r   head_responser"   headers       r   r   r   \   sg     MM-0MDD$$((0 E
 V[[d+,t3d:A>>r   )r5   loggingrC   r   r   r   TYPE_CHECKINGcohere.clientr   r   r   	getLogger__name__r   strr   r%   ListrB   r-   Sequencer3   r8   r:   r<   floatr    r   r   <module>rQ      sH        	1" 			8	$,s ,s , # ) 0@x @ @3 @6;;s;K @$ $# $vs7K $PS $] 3 9 2@= @ @C @FKKX[L\ @$] $3 $X[H\ $ad $
?c 
?e 
?r   