
    _i)                    j   % S SK Jr  S SK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(J)r)  SSK*J+r+J,r,  SSK-J.r.  SSK/J0r1  SSK2J3r3  \
" SSS9r4Sr5S\6S'   \Rn                  " S5      r8S\6S'       S(S jr9\4   S)S jjr:\4   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@\S!.     S/S" jjrA    S0S# jrBS1S$ jrCS2S% jrDS3S& jrE    S4S' jrFg)5    )annotationsN)TYPE_CHECKINGAnyIterablecast)TypeVar	TypeGuardassert_never   )PydanticFunctionTool   )Omitomit)is_dictis_given)PYDANTIC_V1model_parse_json)construct_type_unchecked)is_basemodel_typeto_strict_json_schemais_dataclass_like_type)
ParsedChoiceChatCompletionParsedFunctionParsedChatCompletionChatCompletionMessageParsedFunctionToolCallParsedChatCompletionMessageChatCompletionToolUnionParamChatCompletionFunctionToolParamcompletion_create_params)LengthFinishReasonErrorContentFilterFinishReasonError)FunctionDefinition)ResponseFormat)FunctionResponseFormatT)defaultNone_default_response_formatzopenai.lib.parsingzlogging.Loggerlogc                H    U S   S:X  d  gU S   R                  S5      SLa  gg)zDCheck if the given tool is a strict ChatCompletionFunctionToolParam.typefunctionFstrictTget)tools    \/var/www/html/land-ocr/venv/lib/python3.13/site-packages/openai/lib/_parsing/_completions.py$is_strict_chat_completion_tool_paramr4   +   s1     <:%JH%T1    c                    [        U 5      (       d  [        $ U  Vs/ s H  n[        U5      (       d  M  UPM     sn$ s  snf )zMSelect only the strict ChatCompletionFunctionToolParams from the given tools.)r   r   r4   )toolsts     r3   #select_strict_chat_completion_toolsr9   7   s2     E??Hu! DQ GAuHHHs   <<c                    [        U 5      (       d  [        $ 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   [	        [
        [           U 5      $ )	Nr-   r.   zECurrently only `function` tool types support auto-parsing; Received ``r/   Tnamez@` is not strict. Only `strict` function tools can be auto-parsed)r   r   
ValueErrorr1   r   r   r    )r7   r2   r/   s      r3   validate_input_toolsr>   A   s     E??<:%WX\]cXdWeefg  j!%%h/D$V,--mn   895AAr5   c                   [        U5      (       a  U Vs/ s H  o3PM     nnO/ n/ nUR                   GH  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  UR                  S:X  a6  [         R#                  S	UR$                  UR&                  R(                  S
S9  M  [*        (       a  [-        U5        M  UR                  U5        M     UR                  [        [        [        [.        5      [1        U 5         0 UR                  5       ES0 UR                  5       E[3        U US9U(       a  UOS S.E0ES95        GM     [        [4        [6           [        [        [        [4        5      [1        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_customz?Custom tool calls are not callable. Ignoring tool call: %s - %sr   )
stacklevelmessageresponse_formatrI   )parsed
tool_calls)rF   rE   choices)r   rN   finish_reasonr"   r#   rI   rM   r-   to_dictappendr   r   r   parse_function_tool_argumentsr.   r   r+   warningidrG   r<   r   r
   r   solve_response_format_tmaybe_parse_contentr   r'   )
rK   rD   chat_completionr8   rN   choicerI   rM   	tool_calltool_call_dicts
             r3   parse_chat_completionr[   V   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 ^^x/KKY!!((--#$	    #] +%%i09 0< 	$3-.Eo.VW
nn&
  !//+ "5,;$+# 5?jD 
	
S *t _- s012I/2Z[!))+7	
	 	 /s   H?c                0   ^ [        U4S jU  5       S 5      $ )Nc              3     >#    U  H8  oS    S:X  d  M  UR                  S0 5      R                  S5      T:X  d  M4  Uv   M:     g7f)r-   r.   r<   Nr0   ).0r8   r<   s     r3   	<genexpr>)get_input_tool_by_name.<locals>.<genexpr>   s>     qKqV9
+BquuZY[G\G`G`agGhlpGpKs   A#A	A)nextrD   r<   s    `r3   get_input_tool_by_namerc      s     qKqswxxr5   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      $ )Nrb   r.   r/   )rc   r<   r   objectr1   
isinstancer   r   model	argumentsr$   jsonloads)rD   r.   
input_toolinput_fns       r3   rR   rR      s     (KmmTJFJNN:67H(0110B0BCC&1H<<!!::h(())r5   c                    [        U 5      (       a7  UR                  (       a&  UR                  (       d  [        XR                  5      $ g N)has_rich_response_formatcontentrefusal_parse_contentrJ   s     r3   rV   rV      s-    
  00W__W__o??r5   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])ro   r   r*   rK   s    r3   rU   rU      s$      00')ABBr5   )rD   c                n    [        U 5      (       a  gU=(       d    /  H  n[        U5      (       d  M    g   g)NTF)ro   is_parseable_tool)rK   rD   rk   s      r3   has_parseable_inputrx      s7    
  00!'R'
Z(( ( r5   c                H    [        U 5      (       d  g[        U 5      (       a  gg)NFT)r   is_response_format_paramru   s    r3   ro   ro      s#     O$$00r5   c                    [        U 5      $ rn   )r   ru   s    r3   rz   rz      s    ?##r5   c                    U S   S:w  a  g[        [        U R                  S5      5      n[        U[        5      (       a  g[        [
        U5      R                  S5      =(       d    S$ )Nr-   r.   FTr/   )r   re   r1   rf   r   r$   )rk   rl   s     r3   rw   rw      sV    &Z'FJNN:67H(011"H-11(;DuDr5   c                   [        U 5      (       a  [        [        [        X5      5      $ [	        U 5      (       a>  [
        (       a  [        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)rK   rp   s     r3   rr   rr     su    ))O%5o%OPPo..;XYhXijkk##O4BB7KK
I/IZ[
\\r5   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-   r   )r   r   rz   r   r-   r   __name__r   r   r   r~   r   )rK   json_schema_typer<   s      r3   type_to_response_format_paramr     s     O$$00
 41OTX))''*		0	0''#//@=o=NOPP +,<=
 r5   )r2   r   returnz*TypeGuard[ChatCompletionFunctionToolParam])r7   -Iterable[ChatCompletionToolUnionParam] | Omitr   z0Iterable[ChatCompletionFunctionToolParam] | Omit)rK   zFtype[ResponseFormatT] | completion_create_params.ResponseFormat | OmitrD   r   rW   z-ChatCompletion | ParsedChatCompletion[object]r   z%ParsedChatCompletion[ResponseFormatT])rD   "list[ChatCompletionToolUnionParam]r<   strr   z&ChatCompletionFunctionToolParam | None)rD   r   r.   zFunction | ParsedFunctionr   zobject | None)rK   2type[ResponseFormatT] | ResponseFormatParam | OmitrI   z;ChatCompletionMessage | ParsedChatCompletionMessage[object]r   zResponseFormatT | None)rK   r   r   rt   )rK   z!type | ResponseFormatParam | OmitrD   r   r   bool)rK   r   r   z TypeGuard[type[ResponseFormatT]])rK   re   r   zTypeGuard[ResponseFormatParam])rk   r   r   r   )rK   rt   rp   r   r   r'   )rK   z5type | completion_create_params.ResponseFormat | Omitr   zResponseFormatParam | Omit)G
__future__r   ri   loggingtypingr   r   r   r   typing_extensionsr   r	   r
   r   _toolsr   _typesr   r   _utilsr   r   _compatr   r   _modelsr   	_pydanticr   r   r   
types.chatr   r   r   r   r   r   r   r   r    r!   _exceptionsr"   r#   types.shared_paramsr$   #types.chat.completion_create_paramsr%   ResponseFormatParam5types.chat.chat_completion_message_function_tool_callr&   r'   r*   __annotations__	getLoggerr+   r4   r9   r>   r[   rc   rR   rV   rU   rx   ro   rz   rw   rr   r    r5   r3   <module>r      s   "   5 5 > >  )   ' 4 / X X   S 5 X M
 "& $ %''(<=^ =	
&	/	 <@I8I5I <@B8B5B*O[O ?O C	O
 +Ody6y>Ay+y*6*B[**&G I 	CGCC" BF6 ? 
		G	%	$E
] J  r5   