
    2h#                       % S SK Jr  S SKrS SKJrJrJrJr  S SKJ	r	J
r
Jr  S SK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  SSKJr  SSKJr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'  SSK(J)r)J*r*  SSK+J,r,  SSK-J.r/  SSK0J1r1  \	" SSS9r2Sr3S\4S'   \4   S#S jjr5        S$S jr6S%S jr7      S&S jr8      S'S jr9    S(S jr:\S.     S)S jjr;    S*S jr<S+S jr=S,S  jr>S-S! jr?    S.S" jr@g)/    )annotationsN)TYPE_CHECKINGAnyIterablecast)TypeVar	TypeGuardassert_never   )PydanticFunctionTool   )	NOT_GIVENNotGiven)is_dictis_given)PYDANTIC_V2model_parse_json)construct_type_unchecked)is_basemodel_typeto_strict_json_schemais_dataclass_like_type)	ParsedChoiceChatCompletionParsedFunctionParsedChatCompletionChatCompletionMessageParsedFunctionToolCallChatCompletionToolParamParsedChatCompletionMessagecompletion_create_params)LengthFinishReasonErrorContentFilterFinishReasonError)FunctionDefinition)ResponseFormat)FunctionResponseFormatT)defaultNone_default_response_formatc                    [        U 5      (       d  g U  HL  nUS   S:w  a  [        SUS    S35      eUS   R                  S5      nUSLd  M9  [        SUS   S    S35      e   g )	NtypefunctionzECurrently only `function` tool types support auto-parsing; Received ``strictTnamez@` is not strict. Only `strict` function tools can be auto-parsed)r   
ValueErrorget)toolstoolr.   s      X/var/www/auris/envauris/lib/python3.13/site-packages/openai/lib/_parsing/_completions.pyvalidate_input_toolsr5   '   s     E??<:%WX\]cXdWeefg  j!%%h/D$V,--mn      c                   [        U5      (       a  U Vs/ s H  o3PM     nnO/ n/ nUR                   GHp  nUR                  S:X  a	  [        US9eUR                  S:X  a
  [	        5       eUR
                  n/ nUR                  (       a  UR                   H  nUR                  S:X  a]  UR                  5       n	UR                  [        0 U	ES0 [        [        U	S   5      ES[        XR                  S90E0E[        S95        Mp  [         (       a  [#        U5        M  UR                  U5        M     UR                  [        [        [        [$        5      ['        U 5         0 UR                  5       ES0 UR                  5       E[)        U US	9U(       a  UOS S
.E0ES95        GMs     [        [*        [,           [        [        [        [*        5      ['        U 5         0 UR                  5       ESU0ES95      $ s  snf )Nlength)
completioncontent_filterr,   parsed_arguments)input_toolsr,   )valuetype_messageresponse_formatr?   )parsed
tool_calls)r>   r=   choices)r   rD   finish_reasonr!   r"   r?   rC   r+   to_dictappendr   r   r   parse_function_tool_argumentsr,   r   r   r
   r   solve_response_format_tmaybe_parse_contentr   r&   )
rA   r<   chat_completiontrD   choicer?   rC   	tool_calltool_call_dicts
             r4   parse_chat_completionrP   :   s    "-.+Qq+.35G!))8+)_EE#33022..35
$//	>>Z/%.%6%6%8N%%0#"0# * -"&*3z0J&K-"$68U4?J\J\9&-"# #9 #] +%%i0) 0, 	$3-.Eo.VW
nn&
  !//+ "5,;$+# 5?jD 
	
C *d _- s012I/2Z[!))+7	
	 	o /s   G9c                0   ^ [        U4S jU  5       S 5      $ )Nc              3  t   >#    U  H-  oR                  S 0 5      R                  S5      T:X  d  M)  Uv   M/     g7f)r,   r/   N)r1   ).0rL   r/   s     r4   	<genexpr>)get_input_tool_by_name.<locals>.<genexpr>   s/     UKq55R+@+D+DV+LPT+TKs   (8	8)nextr<   r/   s    `r4   get_input_tool_by_namerX      s    UKUW[\\r6   c                n   [        XR                  S9nU(       d  g [        [        UR	                  S5      5      n[        U[        5      (       a   [        UR                  UR                  5      $ [        [        U5      nUR	                  S5      (       d  g [        R                  " UR                  5      $ )NrW   r,   r.   )rX   r/   r   objectr1   
isinstancer   r   model	argumentsr#   jsonloads)r<   r,   
input_toolinput_fns       r4   rH   rH      s     (KmmTJFJNN:67H(0110B0BCC&1H<<!!::h(())r6   c                    [        U 5      (       a7  UR                  (       a&  UR                  (       d  [        XR                  5      $ g N)has_rich_response_formatcontentrefusal_parse_contentr@   s     r4   rJ   rJ      s-    
  00W__W__o??r6   c                F    [        U 5      (       a  U $ [        S[        5      $ )zReturn the runtime type for the given response format.

If no response format is given, or if we won't auto-parse the response format
then we default to `None`.
type[ResponseFormatT])rd   r   r)   rA   s    r4   rI   rI      s$      00')ABBr6   )r<   c                n    [        U 5      (       a  gU=(       d    /  H  n[        U5      (       d  M    g   g)NTF)rd   is_parseable_tool)rA   r<   r`   s      r4   has_parseable_inputrm      s7    
  00!'R'
Z(( ( r6   c                H    [        U 5      (       d  g[        U 5      (       a  gg)NFT)r   is_response_format_paramrj   s    r4   rd   rd      s#     O$$00r6   c                    [        U 5      $ rc   )r   rj   s    r4   ro   ro      s    ?##r6   c                    [        [        U R                  S5      5      n[        U[        5      (       a  g[        [
        U5      R                  S5      =(       d    S$ )Nr,   Tr.   F)r   rZ   r1   r[   r   r#   )r`   ra   s     r4   rl   rl      sF    FJNN:67H(011"H-11(;DuDr6   c                   [        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   	TypeErrorpydanticTypeAdaptervalidate_json)rA   re   s     r4   rg   rg      su    ))O%5o%OPPo..{XYhXijkk##O4BB7KK
I/IZ[
\\r6   c                Z   [        U 5      (       d  [        $ [        U 5      (       a  U $ [        [        U 5      n S n[        U 5      (       a  U R                  nU nOA[        U 5      (       a#  U R                  n[        R                  " U 5      nO[        SU  35      eS[        U5      USS.S.$ )Nz#Unsupported response_format type - json_schemaT)schemar/   r.   )r+   rx   )r   r   ro   r   r+   r   __name__r   rt   ru   rs   r   )rA   json_schema_typer/   s      r4   type_to_response_format_paramr|      s     O$$00
 41OTX))''*		0	0''#//@=o=NOPP +,<=
 r6   )r2   ,Iterable[ChatCompletionToolParam] | NotGivenreturnr(   )rA   zJtype[ResponseFormatT] | completion_create_params.ResponseFormat | NotGivenr<   r}   rK   z-ChatCompletion | ParsedChatCompletion[object]r~   z%ParsedChatCompletion[ResponseFormatT])r<   list[ChatCompletionToolParam]r/   strr~   zChatCompletionToolParam | None)r<   r   r,   zFunction | ParsedFunctionr~   rZ   )rA   6type[ResponseFormatT] | ResponseFormatParam | NotGivenr?   z;ChatCompletionMessage | ParsedChatCompletionMessage[object]r~   zResponseFormatT | None)rA   r   r~   ri   )rA   z%type | ResponseFormatParam | NotGivenr<   r}   r~   bool)rA   r   r~   z TypeGuard[type[ResponseFormatT]])rA   rZ   r~   zTypeGuard[ResponseFormatParam])r`   r   r~   r   )rA   ri   re   r   r~   r&   )rA   z9type | completion_create_params.ResponseFormat | NotGivenr~   zResponseFormatParam | NotGiven)A
__future__r   r^   typingr   r   r   r   typing_extensionsr   r	   r
   rt   _toolsr   _typesr   r   _utilsr   r   _compatr   r   _modelsr   	_pydanticr   r   r   
types.chatr   r   r   r   r   r   r   r   r    _exceptionsr!   r"   types.shared_paramsr#   #types.chat.completion_create_paramsr$   ResponseFormatParam,types.chat.chat_completion_message_tool_callr%   r&   r)   __annotations__r5   rP   rX   rH   rJ   rI   rm   rd   ro   rl   rg   r|    r6   r4   <module>r      sw   "  5 5 > >  ) ) ' 4 / X X
 
 
 S 5 X D
 "& $ % ;D7	&G_G >G C	G
 +GT]*1*=V**&K I 	CKCC" AJ: > 
		K	%	$E
] N # r6   