
    g              
           U d dl Z d dlZd dlZd dlmZmZmZmZ dZee	   e
d<   d Zdee	e	f   fdZde	dee	   fd	Z	 dde	d
ee	   dee	   dee	   fdZd Zd ZdefdZy)    N)DictFinalListOptionalz~/.opik.configCONFIG_FILE_PATH_DEFAULTc            
         t        j                         } g d}d}t        | |      \  }}t        |dz  |      \  }}t        |dz  |      \  }}|dz  }||d   k(  r&||d   k(  r||d   k(  r|d	   d
k  r|d	xx   dz  cc<   n	|||df|d d  d|d	   z  }	t        j                  d      }
|dd|dd|dd|	dd|
j                          	S )N)r   r   r   r   l     Ys       i p  r            i?  i      z>08x-z>04x)timetime_nsdivmodosurandomhex)nslastsixteen_secst1rest1t2rest2t3_t4rands              T/var/www/openai/venv/lib/python3.12/site-packages/litellm/integrations/opik/utils.pycreate_uuid7r"   	   s    	BD "Lr<(IBu{L1IB5B;-EB'MB
 
T!W}tAw2a= 7VGqLGr2q/Q
T!W	B ::a=DYa4y"T!Bt9Adhhj\BB    returnc            	         t         j                  j                  t              } t	        j
                         }|j                  |        |j                         D ci c]  }|t        |j                  |             }}d|v r|d   S i S c c}w )Nopik)
r   path
expanduserr   configparserConfigParserreadsectionsdictitems)config_pathconfigsectionconfig_valuess       r!   _read_opik_config_filer3   (   s    ''$$%=>K&&(F
KK =COO<M<Mfll7+,,<M   V$$Is   "B
keyc                 T    d}t        j                  || z   j                         d       S )Nopik_)r   getenvupper)r4   
env_prefixs     r!   _get_env_variabler:   8   s&    J99j3&--/66r#   
user_valuedefault_valuec                 R    ||S t        |       }||S t               }| |v r||    S |S )z
    Get the configuration value of a variable, order priority is:
    1. user provided value
    2. environment variable
    3. Opik configuration file
    4. default value
    )r:   r3   )r4   r;   r<   	env_valuer2   s        r!   get_opik_config_variabler?   =   sM      "#&I +,M
mS!! r#   c                     i }| j                   | j                   |d<   | j                  | j                  |d<   | j                  | j                  |d<   |S )Ncompletion_tokensprompt_tokenstotal_tokens)rA   rB   rC   )usage
usage_dicts     r!   create_usage_objectrF   Z   sb    J**/*A*A
&'&&+&9&9
?#%%*%7%7
>"r#   c                 ^    | j                         D ci c]  \  }}|	|| }}}|S c c}}w )N)r.   )xkvx_s       r!   _remove_nullsrL   f   s2    779	6941a!Q$9B	6I 
7s   
))payloadc                     | D cg c]  }d|vst        |       }}| D cg c]  }d|v st        |       }}||fS c c}w c c}w )Ntype)rL   )rM   rH   tracesspanss       r!   !get_traces_and_spans_from_payloadrR   k   sS    (/C16?mAFC'.>w!&A+]1wE>5= D>s   	??	AA)NN)r)   r   r   typingr   r   r   r   r   str__annotations__r"   r3   r:   r?   rF   rL   rR    r#   r!   <module>rW      s     	  . .'7 %* 7C>S#X  73 78C= 7 PT	"3-?G}c]:	
t r#   