PATH:
opt
/
hc_python
/
lib
/
python3.12
/
site-packages
/
sentry_sdk
/
integrations
/
pydantic_ai
/
patches
/
__pycache__
� o0i� � � � d dl mZ d dlmZ d dlZd dlmZ ddlmZm Z d dl mZ d d l mZ erd d l mZmZ d� Zd� Zy# e$ r ed� �w xY w) � )�asynccontextmanager)�wrapsN)�DidNotEnable� )�ai_client_span�update_ai_client_span)�ModelRequestNodezpydantic-ai not installed)� TYPE_CHECKING)�Any�Callablec �Z � d}d}t |d� r.t |j dd� }t |j dd� }g }t |d� r;t |j d� r%|j |j j � t | dd� }|r|j |� |||fS )zyExtract common data needed for creating chat spans. Returns: Tuple of (messages, model, model_settings) N�deps�model�model_settings�state�message_history�request)�hasattr�getattrr r �extendr �append)�node�ctxr r �messages�current_requests �f/opt/hc_python/lib/python3.12/site-packages/sentry_sdk/integrations/pydantic_ai/patches/graph_nodes.py�_extract_span_datar s� � � �E��N��s�F������'�4�0�� ����+;�T�B�� �H��s�G������4E�!F����� � �1�1�2��d�I�t�4�O������(��U�N�*�*� c � �� t j �t �� �fd�� } | t _ t j }d� } ||� t _ y)z� Patches the graph node execution to create appropriate spans. ModelRequestNode -> Creates ai_client span for model requests CallToolsNode -> Handles tool calls (spans created in tool patching) c � �� �K � t | |� \ }}}t |d ||� 5 } �| |� � d { ��� }d }t |d� r|j }t ||� |cd d d � S 7 �5# 1 sw Y y xY w�w)N�model_response)r r r r! r ) �selfr r r r �span�resultr! �original_model_request_runs �r �wrapped_model_request_runz5_patch_graph_nodes.<locals>.wrapped_model_request_run= s{ �� �� � +=�T�3�*G�'��%�� �H�d�E�>� B�d�5�d�C�@�@�F� "�N��v�/�0�!'�!6�!6��!�$��7�� C� B�@�� C� B�s, �A3� A'�A%�+A'� A3�%A'�'A0�,A3c �@ � � t t � � � fd�� � }|S )zECreate a wrapper for ModelRequestNode.stream that creates chat spans.c � �K � t | |� \ }}}t |d ||� 5 } �| |� 4 �d { ��� }|��� d d d � �d { ��� d }t | d� r8| j �,t | j d� r| j j }t ||� d d d � y 7 �t7 �a# 1 �d { ���7 sw Y �qxY w# 1 sw Y y xY w�w)N�_resultr! )r r r r) r! r ) r"