
    -2if                    0   d dl mZ d dlZd dlmZmZmZmZmZ d dl	m
Z
m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mZ ddlmZ ddlmZmZ ddlmZmZ ddlmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z) ddl*m+Z+  e
dd          Z,d,dZ-d-dZ.d.d#Z/d/d'Z0d0d+Z1dS )1    )annotationsN)TYPE_CHECKINGAnyListIterablecast)TypeVarassert_never   )ResponsesPydanticFunctionTool   )Omit)is_given)PYDANTIC_V1model_parse_json)construct_type_unchecked)is_basemodel_typeis_dataclass_like_type   )solve_response_format_ttype_to_response_format_param)Response	ToolParamParsedContentParsedResponseFunctionToolParamParsedResponseOutputItemParsedResponseOutputTextResponseFunctionToolCallParsedResponseOutputMessageResponseFormatTextConfigParamParsedResponseFunctionToolCall)ResponseFormatTextFormatT)defaulttype_typereturnr!   c                    t          |           }t          |          sJ t          t          |          }|d         dk    sJ d|d         v sJ dd|d         d         |d         d         dS )Nr'   json_schemaschemaTname)r'   strictr,   r+   )r   r   r   r#   )r&   response_format_dicts     ]/var/www/html/pixcura-vrs/venv/lib/python3.11/site-packages/openai/lib/_parsing/_responses.pytype_to_text_format_paramr0   &   s    8??()))))0DEE'=8888+M::::: $]3F;&}5h?	      text_formattype[TextFormatT] | Omitinput_tools!Iterable[ToolParam] | Omit | Noneresponse!Response | ParsedResponse[object]ParsedResponse[TextFormatT]c                   t          |           }g }|j        D ]a}|j        dk    rg }|j        D ]}|j        dk    r|                    |           #|                    t          t          t          t                    |         i |	                                dt          |j        |           i                     |                    t          t          t          t                    |         i |	                                d|i                     |j        dk    rR|                    t          t          i |	                                dt          ||	          i                     b|j        d
k    s|j        dk    s|j        dk    s|j        dk    s|j        dk    s|j        dk    sy|j        dk    sn|j        dk    sc|j        dk    sX|j        dk    sM|j        dk    sB|j        dk    s7|j        dk    s,|j        dk    s!|j        dk    s|j        dk    s|j        dk    r|                    |           4t          rt!          |           L|                    |           ct          t"          t$                   t          t          t          t"                    |         i |	                                d|i                    S )Nmessageoutput_textparsed)r2   )r&   valuecontentfunction_callparsed_arguments)r4   r?   computer_callfile_search_callweb_search_call	reasoning
compactionmcp_callmcp_approval_requestimage_generation_callcode_interpreter_calllocal_shell_call
shell_callshell_call_outputapply_patch_callapply_patch_call_outputmcp_list_toolsexeccustom_tool_calloutput)r   rR   r'   r>   appendr   r   r   r   to_dict
parse_texttextr    r"   parse_function_tool_argumentsr   r
   r   r$   )r2   r4   r6   solved_toutput_listrR   content_listitems           r/   parse_responser\   5   s`    '{33H?AK/ >' >';)##=?L  9-- ''---##,"3(@AA(K"llnn$j&T&T&T       (s$?@@J ..**!<       [O++(8 ..***,I(36- - -   
 
 
 
 K?**{000{///{k)){l**{j(({444{555{555{000{l**{111{000{777{...{f$${000v&&&& 	'    v&&&&{# sN++H5""$$+ 	
 	
 	
	 	 	r1   rV   strTextFormatT | Nonec                J   t          |          sd S t          |          r#t          t          t	          ||                     S t          |          r@t          rt          d|           t          j	        |          
                    |           S t          d|           )Nz:Non BaseModel types are only supported with Pydantic v2 - z3Unable to automatically parse response format type )r   r   r   r$   r   r   r   	TypeErrorpydanticTypeAdaptervalidate_json)rV   r2   s     r/   rU   rU      s    K   t%% FK!1+t!D!DEEEk** E 	hfYdffggg#K00>>tDDD
W+WW
X
XXr1   Iterable[ToolParam]r,   FunctionToolParam | Nonec                b    | D ]+}|d         dk    r|                     d          |k    r|c S ,d S )Nr'   functionr,   )get)r4   r,   tools      r/   get_input_tool_by_namerj      sE      <:%%$((6*:*:d*B*BKKK4r1   r?   9ParsedResponseFunctionToolCall | ResponseFunctionToolCallobjectc                D   | t          |           sd S t          | |j                  }|sd S t          t          |          }t          |t                    rt          |j        |j	                  S |
                    d          sd S t          j        |j	                  S )N)r4   r,   r-   )r   rj   r,   r   rl   
isinstancer   r   model	argumentsrh   jsonloads)r4   r?   
input_toolri   s       r/   rW   rW      s    
 (;"7"7t'KmFXYYYJ t
##D$566 E
M,CDDD>>(## t:m-...r1   )r&   r'   r(   r!   )r2   r3   r4   r5   r6   r7   r(   r8   )rV   r]   r2   r3   r(   r^   )r4   rd   r,   r]   r(   re   )r4   r5   r?   rk   r(   rl   )2
__future__r   rq   typingr   r   r   r   r   typing_extensionsr	   r
   ra   _toolsr   _typesr   _utilsr   _compatr   r   _modelsr   	_pydanticr   r   _completionsr   r   types.responsesr   r   r   r   r   r   r   r   r    r!   r"   #types.chat.completion_create_paramsr#   r$   r0   r\   rU   rj   rW    r1   r/   <module>r      s%   " " " " " "  ; ; ; ; ; ; ; ; ; ; ; ; ; ; 3 3 3 3 3 3 3 3  2 2 2 2 2 2             4 4 4 4 4 4 4 4 / / / / / / A A A A A A A A P P P P P P P P                          B A A A A Ag     R R R RjY Y Y Y    / / / / / /r1   