
    AHj              
       &   U d dl Z d dlZd dlZd dlmZmZ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eeef   deeef   fdZdeeeef      de	eeeef      eeeef      f   fdZy)    N)AnyDictFinalListOptionalTuplez~/.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              W/root/tools/cai/cai_env/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_filer5   (   s    ''$$%=>K&&(F
KK =COO<M18fll7+,,M  V$$Is   "B
keyc                 T    d}t        j                  || z   j                         d       S )Nopik_)r   getenvupper)r6   
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<   r5   )r6   r=   r>   	env_valuer4   s        r#   get_opik_config_variablerA   =   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)rC   rD   rE   )usage
usage_dicts     r#   create_usage_objectrH   Z   sb    J**/*A*A
&'&&+&9&9
?#%%*%7%7
>"r%   xc                 \    | j                         D ci c]  \  }}|	|| c}}S c c}}w )zRemove None values from dict.)r0   )rI   kvs      r#   _remove_nullsrM   f   s(    WWY8TQ!-AqD888s   
((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 )aL  
    Separate traces and spans from payload.

    Traces are identified by not having a "type" field.
    Spans are identified by having a "type" field.

    Args:
        payload: List of dicts containing trace and span data

    Returns:
        Tuple of (traces, spans) where both are lists of dicts with null values removed
    type)rM   )rN   rI   tracesspanss       r#   !get_traces_and_spans_from_payloadrS   k   sS     )0C16?mACFC'.>!&A+]1>E>5= D>s   	??	AA)NN)r+   r   r   typingr   r   r   r   r   r   r	   str__annotations__r$   r5   r<   rA   rH   rM   rS    r%   r#   <module>rX      s     	  : :'7 %* 7C>S#X  73 78C= 7 PT	"3-?G}c]:	9T#s(^ 9S#X 9
$sCx.!
4S#Xd38n!556r%   