o
    f                     @  s   d dl m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mZ dd
lmZ G dd dZdS )    )annotationsN)partial)Any	AwaitableCallable   )
ConfigDict)create_schema_validator   )_generate_schema_typing_extra)ConfigWrapperc                   @  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____name____qualname____annotations____dict__functionCallable[..., Any]configConfigDict | Nonevalidate_returnbool	namespacedict[str, Any] | Nonec                   sp  t |tr|j}|}d|j d| _d|j d| _|j| _n|}|j| _|j| _|j| _t|d }t|dd}i dd |D |pDi |pHi }t	|}	t
|	|}
|
|
|}|	| }t||| j| jd||	j| _|rt|}|j|jur|jnt}t
|	|}
|
|
|}t||| j| jd||	j t|rd fdd}|| _d S  j| _d S d | _d S )Nzpartial()__type_params__ c                 S  s   i | ]}|j |qS r   )r   ).0paramr   r   Y/var/www/NoticeGen/venv/lib/python3.10/site-packages/pydantic/_internal/_validate_call.py
<dictcomp>3   s    z0ValidateCallWrapper.__init__.<locals>.<dictcomp>validate_callawAwaitable[Any]returnNonec                   s     | I d H S N)validate_python)r$   	validatorr   r!   return_val_wrapperV   s   z8ValidateCallWrapper.__init__.<locals>.return_val_wrapper)r$   r%   r&   r'   )
isinstancer   funcr   r   
__module__r   add_module_globalsgetattrr   r   GenerateSchemaclean_schemagenerate_schemacore_configr	   plugin_settingsr   inspect	signaturereturn_annotationemptyr   iscoroutinefunction__return_pydantic_validator__r)   )selfr   r   r   r   r.   schema_type	global_nstype_paramsconfig_wrapper
gen_schemaschemar5   r8   return_typer,   r   r*   r!   __init__   sf   





	

zValidateCallWrapper.__init__argsr   kwargsr&   c                 O  s(   | j t||}| jr| |S |S r(   )r   r)   pydantic_core
ArgsKwargsr<   )r=   rF   rG   resr   r   r!   __call___   s   
zValidateCallWrapper.__call__N)r   r   r   r   r   r   r   r   )rF   r   rG   r   r&   r   )r   r/   r   __doc__	__slots__rE   rK   r   r   r   r!   r      s
    
Er   )
__future__r   _annotationsr7   	functoolsr   typingr   r   r   rH   r   r   plugin._schema_validatorr	    r   r   _configr   r   r   r   r   r!   <module>   s    