
    i:                     V    S r SSKJr  S\S\\\4   4S jrS\\\4   S\\\4   4S jrg)	z+Token usage utilities for Claude Agent SDK.    )Anyusagereturnc                 B  ^  T (       d  0 $ [        T [        5      (       a  T R                  OU 4S jnS nS n0 nU" U" S5      5      =nb  XTS'   U" U" S5      5      =nb  XTS'   U" U" S5      5      nU" U" S5      5      nUc  Ub  0 US'   Ub  XdS   S	'   Ub  XtS   S
'   U$ )zGExtract and normalize usage metrics from a Claude usage object or dict.c                    > [        TU S 5      $ N)getattr)kr   s    h/home/james-whalen/.local/lib/python3.13/site-packages/langsmith/integrations/claude_agent_sdk/_usage.py<lambda>(extract_usage_metadata.<locals>.<lambda>   s    geQPT>U    c                 F     [        U 5      $ ! [        [        4 a     g f = fr   )int
ValueError	TypeErrorvalues    r   to_int&extract_usage_metadata.<locals>.to_int   s(    	u:I& 		   
   c                 F     [        U 5      $ ! [        [        4 a     g f = fr   )floatr   r   r   s    r   to_float(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&("#!8B&'5#<H&'(89Kr   usage_metadatac                 r   U R                  S5      =(       d    0 nUR                  SU R                  S5      5      nUR                  SU R                  S5      5      nU R                  S5      =(       d    SnU=(       d    SnU=(       d    SnXE-   U-   nU R                  S5      =(       d    Sn0 U EUXx-   S	.E$ )
zBSum 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_tokensr1   +   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   r1    r   r   <module>r6      sJ    1 "# "$sCx. "Jc3h DcN r   