o
    h{                     @  s   d dl mZ d dlZd dlm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 eG dd dZG dd dZdS )    )annotationsN)	dataclass)partial)Any	AwaitableCallable   )
ConfigDict)create_schema_validator   )_generate_schema_typing_extra)ConfigWrapperc                   @  s   e Zd ZU ded< ded< dS )
CallMarkerCallable[..., Any]functionboolvalidate_returnN)__name__
__module____qualname____annotations__ r   r   W/var/www/html/ai/venv/lib/python3.10/site-packages/pydantic/_internal/_validate_call.pyr      s   
 r   c                   @  sP   e Zd ZdZdZd!d	d
Zd"ddZd#d$ddZd%ddZd&ddZ	dd  Z
dS )'ValidateCallWrapperaQ  This is a wrapper around a function that validates the arguments passed to it, and optionally the return value.

    It's partially inspired by `wraps` which in turn uses `partial`, but extended to be a descriptor so
    these functions can be applied to instance methods, class methods, static methods, as well as normal functions.
    )
raw_function_config_validate_return__pydantic_core_schema____pydantic_validator____signature__r   r   r   __dict__r   r   configConfigDict | Noner   r   c                   s  || _ || _|| _t|| _t|tr6|j}|}d|j	 d| _	d|j
 d| _
|j| _|j| _|j| _n|}|j	| _	|j
| _
|j| _|j| _|j| _t|d }t|}t||}|||}	|	| _|| }
t|	|| j| j
d|
|j| _| jr| jj| jjur| jjnt}t||}|||}	|	| _t|	|| j| j
d|
|j t| j rd
 fdd	}|| _n j | _nd | _d | _d | _!d S )Nzpartial()validate_callawAwaitable[Any]returnNonec                   s     | I d H S N)validate_python)r&   	validatorr   r   return_val_wrapperd   s   z8ValidateCallWrapper.__init__.<locals>.return_val_wrapper)r&   r'   r(   r)   )"r   r   r   inspect	signaturer    
isinstancer   funcr   r   r   r   __doc__r   add_module_globalsr   r   GenerateSchemaclean_schemagenerate_schemar   core_configr
   plugin_settingsr   return_annotationemptyr   __return_pydantic_core_schema__iscoroutinefunction__return_pydantic_validator__r+   _name)selfr   r"   r   r2   schema_type	namespaceconfig_wrapper
gen_schemaschemar8   return_typer.   r   r,   r   __init__*   sr   



	

zValidateCallWrapper.__init__argsr   kwargsr(   c                 O  s(   | j t||}| jr| |S |S r*   )r   r+   pydantic_core
ArgsKwargsr>   )r@   rH   rI   resr   r   r   __call__p   s   
zValidateCallWrapper.__call__Nobjobjtypetype[Any] | Nonec                 C  s   |du rz| || jW S  ty   Y nw | j||}| || j| j}t|ds0t|dr2|S | jdurM|durEt	
|| j| |S t	
|| j| |S )zKBind the raw function and return another ValidateCallWrapper wrapping that.N	__slots__)__getattribute__r?   AttributeErrorr   __get__	__class__r   r   hasattrobject__setattr__)r@   rN   rO   bound_functionresultr   r   r   rT   v   s    
zValidateCallWrapper.__get__ownernamestrr)   c                 C  s
   || _ d S r*   )r?   )r@   r[   r\   r   r   r   __set_name__   s   
z ValidateCallWrapper.__set_name__c                 C  s   d| j  dS )NzValidateCallWrapper(r$   r   )r@   r   r   r   __repr__   s   zValidateCallWrapper.__repr__c                 C  s   | j |j kS r*   r_   )r@   otherr   r   r   __eq__   s   zValidateCallWrapper.__eq__)r   r   r"   r#   r   r   )rH   r   rI   r   r(   r   r*   )rN   r   rO   rP   r(   r   )r[   r   r\   r]   r(   r)   )r(   r]   )r   r   r   r3   rQ   rG   rM   rT   r^   r`   rb   r   r   r   r   r      s    

F

r   )
__future__r   _annotationsr/   dataclassesr   	functoolsr   typingr   r   r   rJ   r"   r	   plugin._schema_validatorr
    r   r   r   r   r   r   r   r   r   r   <module>   s    