o
    g                     @  s   d dl mZ d dlZd dlZd dlmZ d dlmZ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mZmZ dddZdddZdddZG dd dZdS )    )annotationsN)partial)Any	AwaitableCallable   )
ConfigDict)create_schema_validator   )ConfigWrapper)GenerateSchemaValidateCallSupportedTypes)MappingNamespace
NsResolverns_for_functionfuncr   returnstrc                 C  "   t | tjrd| jj dS | jS )z:Extract the name of a `ValidateCallSupportedTypes` object.partial())
isinstance	functoolsr   r   __name__r    r   X/var/www/visachat/venv/lib/python3.10/site-packages/pydantic/_internal/_validate_call.pyextract_function_name      "r   c                 C  r   )z>Extract the qualname of a `ValidateCallSupportedTypes` object.r   r   )r   r   r   r   __qualname__r   r   r   r   extract_function_qualname   r   r    wrappedwrapperCallable[..., Any]c                   sV   t | rt|  fdd}nt|  fdd}t| |_t| |_| |_|S )ziUpdate the `wrapper` function with the attributes of the `wrapped` function. Return the updated function.c                    s    | i |I d H S Nr   argskwargsr"   r   r   wrapper_function   s   z3update_wrapper_attributes.<locals>.wrapper_functionc                    s    | i |S r$   r   r%   r(   r   r   r)   $   s   )	inspectiscoroutinefunctionr   wrapsr   r   r    r   raw_function)r!   r"   r)   r   r(   r   update_wrapper_attributes   s   


r.   c                   @  s(   e Zd ZdZdZdddZdddZdS )ValidateCallWrapperzoThis is a wrapper around a function that validates the arguments passed to it, and optionally the return value.)__pydantic_validator____return_pydantic_validator__functionr   configConfigDict | Nonevalidate_returnboolparent_namespaceMappingNamespace | Noner   Nonec                   s  t |tr|j}|jj}n|}|j}t|}tt||dd}t|}	t|	|}
|
	|

|}|	j|d}t||||d||	j| _|rt|}|j|jurR|jnt}t|	|}
|
	|

|}t||||d||	j t|r}d fd	d
}|| _d S  j| _d S d | _d S )N)r7   )namespaces_tuple)titlevalidate_callawAwaitable[Any]r   r9   c                   s     | I d H S r$   )validate_python)r=   	validatorr   r   return_val_wrappere   s   z8ValidateCallWrapper.__init__.<locals>.return_val_wrapper)r=   r>   r   r9   )r   r   r   
__module__r    r   r   r   r   clean_schemagenerate_schemacore_configr	   plugin_settingsr0   r*   	signaturereturn_annotationemptyr   r+   r1   r?   )selfr2   r3   r5   r7   schema_typemodulequalnamens_resolverconfig_wrapper
gen_schemaschemarF   rH   return_typerB   r   r@   r   __init__5   sN   






	

zValidateCallWrapper.__init__r&   r   r'   c                 O  s(   | j t||}| jr| |S |S r$   )r0   r?   pydantic_core
ArgsKwargsr1   )rK   r&   r'   resr   r   r   __call__n   s   
zValidateCallWrapper.__call__N)
r2   r   r3   r4   r5   r6   r7   r8   r   r9   )r&   r   r'   r   r   r   )r   rC   r   __doc__	__slots__rT   rX   r   r   r   r   r/   0   s
    
9r/   )r   r   r   r   )r!   r   r"   r#   )
__future__r   _annotationsr   r*   r   typingr   r   r   rU   r3   r   plugin._schema_validatorr	   _configr   _generate_schemar   r   _namespace_utilsr   r   r   r   r    r.   r/   r   r   r   r   <module>   s    


