o
    i>                     @   s   d dl Z d dlZd dlmZ d dlmZ d dlmZ d dlmZ d dlm	Z	 d dl
mZ d dlmZ d d	lmZ ed
i  defddZdeeef fddZee Zdd Zdd Zdd Zdd Zdd Zdd Zdd ZdS )    N)config)!TracedPydanticAsyncContextManager)TracedPydanticRunStream)unwrap)wrap)get_argument_value)parse_version)PydanticAIIntegrationpydantic_aireturnc                  C   s   dd l } t| ddS )Nr   __version__z0.0.0)r
   getattrr
    r   ^/home/ubuntu/.local/lib/python3.10/site-packages/ddtrace/contrib/internal/pydantic_ai/patch.pyget_version   s   r   c                   C   s   ddiS )Nr
   *r   r   r   r   r   _supported_versions   s   r   c                 C   s^   t j}d|_|jddt|dd dd}t|dd pd|_| |i |}||d< t|||||S )NTPydantic Agentmodelagentsubmit_to_llmobsr   kindnameinstance)r
   _datadog_integration_run_stream_activetracer   r   r   funcr   argskwargsintegrationspanresultr   r   r   traced_agent_run_stream   s   r&   c                 C   st   t j}|jrd|_| |i |S |jddt|dd dd}t|dd p$d|_| |i |}||d< t||||||S )	NFr   Tr   r   r   r   r   )r
   r   r   r   r   r   r   r   r   r   r   traced_agent_iter,   s   r'   c                    sV   t ||ddd}t|dd pd}t|di pi }||pd }t| ||||I d H S )Nr   	tool_callT	tool_namePydantic Tooltools)r   r   gettraced_tool_run)r    r   r!   r"   r(   r)   tool_manager_toolstool_instancer   r   r   traced_tool_manager_call<   s   r0   c                    s(   t |dd pd}t| ||||I d H S )Nr   r*   )r   r-   )r    r   r!   r"   r)   r   r   r   traced_tool_callD   s   r1   c                    s   t j}d }z:z*|jdddd}||_| |i |I d H }|W W ||d< |j||||d |  S  ty@   |jt	    w ||d< |j||||d |  w )Nr*   Ttool)r   r   r   )r!   r"   response)
r
   r   r   r   llmobs_set_tagsfinish	Exceptionset_exc_infosysexc_info)r    r   r!   r"   r)   r#   respr$   r   r   r   r-   I   s$   

r-   c                   C   sd   t tddrd S dt_ttjdt_ttdt ttdt t	dkr*ttdt
 d S ttd	t d S )
N_datadog_patchFT)integration_configzagent.Agent.iterzagent.Agent.run_streamr      r>   zagent.ToolManager.handle_callztools.Tool.run)r   r
   r;   r	   r   r   r   r'   r&   PYDANTIC_AI_VERSIONr0   r1   r   r   r   r   patchZ   s   r@   c                  C   sn   dd l } t| ddsd S d| _t| jjd t| jjd tdkr)t| jjd nt| jj	d t
| d	 d S )
Nr   r;   Fiter
run_streamr=   handle_callrunr   )r
   r   r;   r   r   Agentr?   ToolManagerr+   Tooldelattrr   r   r   r   unpatchj   s   rI   )r8   r
   ddtracer   *ddtrace.contrib.internal.pydantic_ai.utilsr   r   $ddtrace.contrib.internal.trace_utilsr   r   ddtrace.internal.utilsr   ddtrace.internal.utils.versionr   (ddtrace.llmobs._integrations.pydantic_air	   _addstrr   dictr   r?   r&   r'   r0   r1   r-   r@   rI   r   r   r   r   <module>   s*    
