o
    BDi                     @   sx   d dl mZ d dlmZ ddlmZmZ d dlmZ er$d dlm	Z	m
Z
 zd dlZW n ey5   edw d	d
 ZdS )    wraps)DidNotEnable   execute_tool_spanupdate_execute_tool_span)TYPE_CHECKING)AnyCallableNzOpenAI Agents not installedc                    s(   t t dr	 jn  fdd}|S )z
    Wraps the agents.Runner._get_all_tools method of the Runner class to wrap all function tools with Sentry instrumentation.
    __func__c           	   	      s~    |I d H }g }|D ]/}|j jdkr|| q|j} fdd}tj|j|j|j||||j	|j
d}|| q|S )NFunctionToolc                    s   t   fdd}|S )Nc                     s`   t g| R i |}| i |I d H }t| | W d    |S 1 s)w   Y  |S )Nr   )argskwargsspanresult)agentcurrent_on_invokecurrent_tool l/var/www/Datamplify/venv/lib/python3.10/site-packages/sentry_sdk/integrations/openai_agents/patches/tools.pysentry_wrapped_on_invoke_tool/   s   
z_create_get_all_tools_wrapper.<locals>.wrapped_get_all_tools.<locals>.create_wrapped_invoke.<locals>.sentry_wrapped_on_invoke_toolr   )r   r   r   r   )r   r   r   create_wrapped_invoke-   s   z[_create_get_all_tools_wrapper.<locals>.wrapped_get_all_tools.<locals>.create_wrapped_invoke)namedescriptionparams_json_schemaon_invoke_toolstrict_json_schema
is_enabled)	__class____name__appendr   agentsr   r   r   r   r   r   )	clsr   context_wrappertoolswrapped_toolstooloriginal_on_invoker   wrapped_tooloriginal_get_all_toolsr   r   wrapped_get_all_tools   s&   	
z<_create_get_all_tools_wrapper.<locals>.wrapped_get_all_tools)r   hasattrr   )r,   r-   r   r+   r   _create_get_all_tools_wrapper   s   0r/   )	functoolsr   sentry_sdk.integrationsr   spansr   r   typingr	   r
   r   r#   ImportErrorr/   r   r   r   r   <module>   s    