
    \Eif                    D   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Z0	 	 	 	 	 	 ddZ1y)    )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)defaultc                    t        |       }t        |      sJ t        t        |      }|d   dk(  sJ d|d   v sJ dd|d   d   |d   d   dS )Ntypejson_schemaschemaTname)r'   strictr*   r)   )r   r   r   r#   )type_response_format_dicts     k/var/www/html/gamegenieapi.qlx.com/gamegenie/lib/python3.12/site-packages/openai/lib/_parsing/_responses.pytype_to_text_format_paramr/   &   s}    8?()))0DE'=888+M:::: $]3F;&}5h?	     c                   t        |       }g }|j                  D ]l  }|j                  dk(  rg }|j                  D ]}  }|j                  dk7  r|j	                  |       $|j	                  t        t        t        t              |   i |j                         dt        |j                  |       i              |j	                  t        t        t        t              |   i |j                         d|i             |j                  dk(  rA|j	                  t        t        i |j                         dt        ||	      i             7|j                  d
k(  s|j                  dk(  s|j                  dk(  s|j                  dk(  s|j                  dk(  s|j                  dk(  s|j                  dk(  s|j                  dk(  s|j                  dk(  sx|j                  dk(  si|j                  dk(  sZ|j                  dk(  sK|j                  dk(  s<|j                  dk(  s-|j                  dk(  s|j                  dk(  s|j                  dk(  r|j	                  |       It        rt!        |       \|j	                  |       o t        t"        t$           t        t        t        t"              |   i |j                         d|i            S )Nmessageoutput_textparsed)text_format)r,   valuecontentfunction_callparsed_arguments)input_toolsr8   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   rL   r'   r7   appendr   r   r   r   to_dict
parse_texttextr    r"   parse_function_tool_argumentsr   r
   r   r$   )r5   r:   responsesolved_toutput_listrL   content_listitems           r.   parse_responserW   5   s    '{3H?AK//;;)#=?L99- ''-##,"3(@A(K"lln$j&T ' (s$?@J ..*!< [[O+(8 ..**,I(36-
 KK?*{{00{{//{{k){{l*{{j({{44{{55{{55{{00{{l*{{11{{00{{77{{..{{f${{00v& v&} "@ {# sN+H5""$+	
	 	r0   c                   t        |      sy t        |      rt        t        t	        ||             S t        |      r8t        rt        d|       t        j                  |      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)rP   r5   s     r.   rO   rO      sy    K %K!1+t!DEEk*XYdXefgg##K0>>tDD
I+W
XXr0   c                T    | D ]#  }|d   dk(  s|j                  d      |k(  s!|c S  y )Nr'   functionr*   )get)r:   r*   tools      r.   get_input_tool_by_namera      s2    <:%$((6*:d*BK  r0   c                4   | t        |       sy t        | |j                        }|sy t        t        |      }t        |t              r t        |j                  |j                        S |j                  d      sy t        j                  |j                        S )N)r:   r*   r+   )r   ra   r*   r   object
isinstancer   r   model	argumentsr_   jsonloads)r:   r8   
input_toolr`   s       r.   rQ   rQ      s~    
 (;"7'KmFXFXYJ
#D$56

M,C,CDD>>(#::m--..r0   )r,   r'   returnr!   )r5   type[TextFormatT] | Omitr:   !Iterable[ToolParam] | Omit | NonerR   z!Response | ParsedResponse[object]rj   zParsedResponse[TextFormatT])rP   strr5   rk   rj   zTextFormatT | None)r:   zIterable[ToolParam]r*   rm   rj   zFunctionToolParam | None)r:   rl   r8   z9ParsedResponseFunctionToolCall | ResponseFunctionToolCallrj   rc   )2
__future__r   rg   typingr   r   r   r   r   typing_extensionsr	   r
   rZ   _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$   r/   rW   rO   ra   rQ    r0   r.   <module>r{      s    "  ; ; 3  2   4 / A P    BR)R 3R 0	R
 !RjY /2/ M/ 	/r0   