o
    Zh
                     @   s   d dl mZmZmZmZmZ d dlmZ d dlm	Z	m
Z
 dedefddZdedefdd	Zd
eeef defddZG dd deZG dd de
ZG dd de	ZdS )    )Any	AwaitableCallableDictOptional)UUID)AsyncCallbackHandlerBaseCallbackHandler_inputreturnc                 C   s(   d}|d|  d 7 }t |}| dv S NzlDo you approve of the following input? Anything except 'Y'/'Yes' (case-insensitive) will be treated as a no.z


)yesyinputlowerr
   msgresp r   Z/var/www/html/lang_env/lib/python3.10/site-packages/langchain_community/callbacks/human.py_default_approve   s
   r   c                    s*   d}|d|  d 7 }t |}| dv S r   r   r   r   r   r   _adefault_approve   s   r   _c                 C   s   dS )NTr   )r   r   r   r   _default_true   s   r   c                   @   s   e Zd ZdZdS )HumanRejectedExceptionzEException to raise when a person manually review and rejects a value.N)__name__
__module____qualname____doc__r   r   r   r   r      s    r   c                   @   s   e Zd ZU dZdZeed< eefde	e
gef de	eee
f gef fddZdd	d
eee
f dededee de
de
fddZdS )HumanApprovalCallbackHandlerz(Callback for manually validating values.Traise_errorapproveshould_checkc                 C      || _ || _d S N_approve_should_checkselfr#   r$   r   r   r   __init__(      
z%HumanApprovalCallbackHandler.__init__Nparent_run_id
serialized	input_strrun_idr/   kwargsr   c                K   s2   |  |r| |std| d| dd S d S NzInputs z	 to tool z were rejected.r)   r(   r   r+   r0   r1   r2   r/   r3   r   r   r   on_tool_start0   s
   	z*HumanApprovalCallbackHandler.on_tool_start)r   r   r   r    r"   bool__annotations__r   r   r   r   r   strr,   r   r   r7   r   r   r   r   r!   #   s0   
 

r!   c                   @   s   e Zd ZU dZdZeed< eefde	e
gee f de	eee
f gef fddZdd	d
eee
f dededee de
de
fddZdS )!AsyncHumanApprovalCallbackHandlerz5Asynchronous callback for manually validating values.Tr"   r#   r$   c                 C   r%   r&   r'   r*   r   r   r   r,   D   r-   z*AsyncHumanApprovalCallbackHandler.__init__Nr.   r0   r1   r2   r/   r3   r   c                   s:   |  |r| |I d H std| d| dd S d S r4   r5   r6   r   r   r   r7   L   s   	z/AsyncHumanApprovalCallbackHandler.on_tool_start)r   r   r   r    r"   r8   r9   r   r   r   r   r   r   r:   r,   r   r   r7   r   r   r   r   r;   ?   s0   
 

r;   N)typingr   r   r   r   r   uuidr   Zlangchain_core.callbacksr   r	   r:   r8   r   r   r   	Exceptionr   r!   r;   r   r   r   r   <module>   s    

