
    f3fi>                     R    d Z ddlmZ dedeeef   fdZdeeef   deeef   fdZy)	z+Token usage utilities for Claude Agent SDK.    )Anyusagereturnc                 (     si S t         t              r j                  n fd}d }d }i } | |d            x}||d<    | |d            x}||d<    | |d            } | |d            }||i |d<   |||d   d	<   |||d   d
<   |S )zGExtract and normalize usage metrics from a Claude usage object or dict.c                     t        | d       S N)getattr)kr   s    l/var/www/auto_recruiter/arenv/lib/python3.12/site-packages/langsmith/integrations/claude_agent_sdk/_usage.py<lambda>z(extract_usage_metadata.<locals>.<lambda>   s    geQPT>U     c                 D    	 t        |       S # t        t        f$ r Y y w xY wr   )int
ValueError	TypeErrorvalues    r   to_intz&extract_usage_metadata.<locals>.to_int   s(    	u:I& 		   
 c                 D    	 t        |       S # t        t        f$ r Y y w xY wr   )floatr   r   r   s    r   to_floatz(extract_usage_metadata.<locals>.to_float   s(    	<I& 		r   input_tokensoutput_tokenscache_read_input_tokenscache_creation_input_tokensinput_token_details
cache_readcache_creation)
isinstancedictget)r   r"   r   r   metavr   cache_creates   `       r   extract_usage_metadatar&      s    	!%.%))4UC DC'((5 ^C())6 !_#789JC =>?L!9&("#!8BD&'5#<HD&'(89Kr   usage_metadatac                 D   | j                  d      xs i }|j                  d| j                  d            }|j                  d| j                  d            }| j                  d      xs d}|xs d}|xs d}||z   |z   }| j                  d      xs d}i | |||z   d	S )
zFSum Anthropic cache tokens into `input_tokens` and add `total_tokens`.r   r   r   r   r   r   r   r   )r   total_tokens)r"   )	r'   detailsr   r%   r   cache_read_valcache_create_valtotal_promptr   s	            r   sum_anthropic_tokensr.   +   s      !67=2Gn(()BCJ ;;.,,-JKL "%%n5:L_1N#(q.03CCL"&&7<1M
$$}4 r   N)__doc__typingr   r!   strr&   r   r.    r   r   <module>r3      sJ    1 "# "$sCx. "Jc3h DcN r   