
    2h\                    H   S SK Jr  S SKrS SKJrJrJrJrJr  S SK	J
r
Jr  S SKrSSKJr  SSKJr  SS	KJr  SS
KJrJr  SSKJr  SSKJrJr  SSKJrJr  SSKJrJ r J!r!J"r"J#r#J$r$J%r%J&r&J'r'J(r(J)r)  SSK*J+r+  \
" SSS9r,SS jr-        SS jr.SS jr/SS jr0      SS jr1g)    )annotationsN)TYPE_CHECKINGAnyListIterablecast)TypeVarassert_never   )ResponsesPydanticFunctionTool   )NotGiven)is_given)PYDANTIC_V2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                    [        U 5      n[        U5      (       d   e[        [        U5      nUS   S:X  d   eSUS   ;   d   eSSUS   S   US   S   S.$ )Ntypejson_schemaschemaTname)r'   strictr*   r)   )r   r   r   r#   )type_response_format_dicts     V/var/www/auris/envauris/lib/python3.13/site-packages/openai/lib/_parsing/_responses.pytype_to_text_format_paramr/   &   s    8?())))0DE'=888+M:::: $]3F;&}5h?	     c                   [        U 5      n/ nUR                   GH  nUR                  S:X  a  / nUR                   Hz  nUR                  S:w  a  UR	                  U5        M&  UR	                  [        [        [        [        5      U   0 UR                  5       ES[        UR                  U S90ES95        M|     UR	                  [        [        [        [        5      U   0 UR                  5       ESU0ES95        M  UR                  S:X  a;  UR	                  [        [        0 UR                  5       ES[        XS	90ES95        GM/  UR                  S
:X  d  UR                  S:X  d  UR                  S:X  d  UR                  S:X  dp  UR                  S:X  d`  UR                  S:X  dP  UR                  S:X  d@  UR                  S:X  d0  UR                  S:X  d   UR                  S:X  d  UR                  S:X  a  UR	                  U5        GM  [        (       a  [!        U5        GM  UR	                  U5        GM      [        ["        [$           [        [        [        ["        5      U   0 UR                  5       ESU0ES95      $ )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mcp_callmcp_approval_requestimage_generation_callcode_interpreter_calllocal_shell_callmcp_list_toolsexecoutput)r   rF   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_listrF   content_listitems           r.   parse_responserQ   5   sE    '{3H?AK//;;)#=?L99- ''-##,"3(@A(K"lln$j&T ' (s$?@J ..*!< [[O+(8 ..**,I(3-
 KK?*{{00{{//{{k){{j({{44{{55{{55{{00{{..{{f$v&] v&q "t {# sN+H5""$+	
	 	r0   c                .   [        U5      (       d  g [        U5      (       a  [        [        [	        X5      5      $ [        U5      (       a>  [        (       d  [        SU 35      e[        R                  " U5      R                  U 5      $ [        SU 35      e)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)rJ   r5   s     r.   rI   rI      s    K  %%K!1+!DEEk**{XYdXefgg##K0>>tDD
I+W
XXr0   c                ^    U  H'  nUS   S:X  d  M  UR                  S5      U:X  d  M%  Us  $    g )Nr'   functionr*   )get)r:   r*   tools      r.   get_input_tool_by_namer[      s2    <:%$((6*:d*BK  r0   c                X   U b  [        U 5      (       d  g [        XR                  S9nU(       d  g [        [        U5      n[        U[        5      (       a   [        UR                  UR                  5      $ UR                  S5      (       d  g [        R                  " UR                  5      $ )N)r:   r*   r+   )r   r[   r*   r   object
isinstancer   r   model	argumentsrY   jsonloads)r:   r8   
input_toolrZ   s       r.   rK   rK      s    
 (;"7"7'KFXFXYJ
#D$566

M,C,CDD>>(##::m--..r0   )r,   r'   returnr!   )r5   type[TextFormatT] | NotGivenr:   %Iterable[ToolParam] | NotGiven | NonerL   z!Response | ParsedResponse[object]rd   zParsedResponse[TextFormatT])rJ   strr5   re   rd   zTextFormatT | None)r:   zIterable[ToolParam]r*   rg   rd   zFunctionToolParam | None)r:   rf   r8   z9ParsedResponseFunctionToolCall | ResponseFunctionToolCallrd   r]   )2
__future__r   ra   typingr   r   r   r   r   typing_extensionsr	   r
   rT   _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/   rQ   rI   r[   rK    r0   r.   <module>ru      s    "  ; ; 3  2   4 / A P    BL-L 7L 0	L
 !L^Y /6/ M/ 	/r0   