o
    Ù°“iã  ã                   @   sj   d Z ddlZddlmZ ddlmZ er(ddlmZmZmZm	Z	 ddl
mZmZ 					
		ddd„ZdS )z6Utility functions for PydanticAI span instrumentation.é    N)ÚSPANDATA)ÚTYPE_CHECKING)ÚUnionÚDictÚAnyÚList)ÚRequestUsageÚRunUsageÚspanúsentry_sdk.tracing.SpanÚusageúUnion[RequestUsage, RunUsage]Úreturnc                 C   sÌ   |du rdS t |dƒr|jdur|  tj|j¡ t |dƒr*|jdur*|  tj|j¡ t |dƒr<|jdur<|  tj|j¡ t |dƒrN|j	durN|  tj
|j	¡ t |dƒrb|jdurd|  tj|j¡ dS dS dS )a(  Set token usage data on a span.

    This function works with both RequestUsage (single request) and
    RunUsage (agent run) objects from pydantic_ai.

    Args:
        span: The Sentry span to set data on.
        usage: RequestUsage or RunUsage object containing token usage information.
    NÚinput_tokensÚcache_read_tokensÚcache_write_tokensÚoutput_tokensÚtotal_tokens)Úhasattrr   Úset_datar   ÚGEN_AI_USAGE_INPUT_TOKENSr   Ú GEN_AI_USAGE_INPUT_TOKENS_CACHEDr   Ú%GEN_AI_USAGE_INPUT_TOKENS_CACHE_WRITEr   ÚGEN_AI_USAGE_OUTPUT_TOKENSr   ÚGEN_AI_USAGE_TOTAL_TOKENS)r
   r   © r   úc/home/ubuntu/.local/lib/python3.10/site-packages/sentry_sdk/integrations/pydantic_ai/spans/utils.pyÚ_set_usage_data   s$   ÿþÿr   )r
   r   r   r   r   N)Ú__doc__Ú
sentry_sdkÚsentry_sdk.constsr   Útypingr   r   r   r   r   Úpydantic_ai.usager   r	   r   r   r   r   r   Ú<module>   s    ÿÿþ