
    Ki                        d dl mZ d dl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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lmZ ddZddZddZ G d d      Zy)    )annotationsN)	Awaitable)partial)AnyCallable   )
ConfigDict)create_schema_validator   )ConfigWrapper)GenerateSchemaValidateCallSupportedTypes)MappingNamespace
NsResolverns_for_function)signature_no_evalc                    t        | t        j                        rd| j                  j                   dS | j                  S )z:Extract the name of a `ValidateCallSupportedTypes` object.partial())
isinstance	functoolsr   func__name__r   s    m/home/jay/workspace/scripts/.codegraph-venv/lib/python3.12/site-packages/pydantic/_internal/_validate_call.pyextract_function_namer      s7    /9$	@Q@Q/RXdii(()+eX\XeXee    c                    t        | t        j                        rd| j                  j                   dS | j                  S )z>Extract the qualname of a `ValidateCallSupportedTypes` object.r   r   )r   r   r   r   __qualname__r   s    r   extract_function_qualnamer       s7    3=dIDUDU3VXdii,,-Q/m\`\m\mmr   c                    t        j                  |       rt        j                  |       fd       }nt        j                  |       fd       }t	        |       |_        t        |       |_        | |_        |S )ziUpdate the `wrapper` function with the attributes of the `wrapped` function. Return the updated function.c                 0   K    | i | d {   S 7 wN argskwargswrappers     r   wrapper_functionz3update_wrapper_attributes.<locals>.wrapper_function!   s      $1&1111s   c                      | i |S r#   r$   r%   s     r   r)   z3update_wrapper_attributes.<locals>.wrapper_function&   s    D+F++r   )	inspectiscoroutinefunctionr   wrapsr   r   r    r   raw_function)wrappedr(   r)   s    ` r   update_wrapper_attributesr0      sv    ""7+		!	2 
"	2 
	!	, 
"	, !6g >$=g$F!$+!r   c                  @    e Zd ZdZdZ	 	 	 	 	 	 	 	 	 	 ddZddZd	dZy)
ValidateCallWrapperzoThis is a wrapper around a function that validates the arguments passed to it, and optionally the return value.)
functionvalidate_returnschema_typemodulequalnamens_resolverconfig_wrapper__pydantic_complete____pydantic_validator____return_pydantic_validator__c                   || _         || _        t        |t              r-|j                  | _        |j                  j                  | _        n|| _        |j                  | _        t        |      | _	        t        t        | j
                  |            | _        t        |      | _        | j                  j                  s| j!                          y d| _        y )N)parent_namespace)namespaces_tupleF)r3   r4   r   r   r   r5   
__module__r6   r    r7   r   r   r8   r   r9   defer_build_create_validatorsr:   )selfr3   configr4   r>   s        r   __init__zValidateCallWrapper.__init__B   s     !.h('}}D"--22DK'D"--DK1(;%,T-=-=P`a
 ,F3""..##%).D&r   c           	        t        | j                  | j                        }|j                  |j	                  | j
                              }| j                  j                  | j                        }t        || j                  | j                  | j                  d|| j                  j                        | _        | j                  rt        | j
                        }|j                  |j                   ur|j                  nt"        }t        | j                  | j                        }|j                  |j	                  |            }t        || j                  | j                  | j                  d|| j                  j                        t%        j&                  | j
                        rdfd}|| _        d| _        y j*                  | _        d| _        y d | _        d| _        y )N)titlevalidate_callc                B   K   j                  |  d {         S 7 wr#   )validate_python)aw	validators    r   return_val_wrapperzBValidateCallWrapper._create_validators.<locals>.return_val_wrapperz   s     $442X>>Xs   	T)rK   zAwaitable[Any]returnNone)r   r9   r8   clean_schemagenerate_schemar3   core_configr7   r
   r5   r6   plugin_settingsr;   r4   r   return_annotationemptyr   r+   r,   r<   rJ   r:   )rC   
gen_schemaschemarR   	signaturereturn_typerM   rL   s          @r   rB   z&ValidateCallWrapper._create_validators\   s   #D$7$79I9IJ
(()C)CDMM)RS))55DMM5J&=KKMM//'
# )$--8I9B9T9T\e\k\k9k)55qtK'(;(;T=M=MNJ,,Z-G-G-TUF/  ##33I **4==9? 6H2 &*"	 6?5N5N2 &*" 26D.%)"r   c                    | j                   s| j                          | j                  j                  t	        j
                  ||            }| j                  r| j                  |      S |S r#   )r:   rB   r;   rJ   pydantic_core
ArgsKwargsr<   )rC   r&   r'   ress       r   __call__zValidateCallWrapper.__call__   s[    ))##%))99-:R:RSWY_:`a--55c::Jr   N)
r3   r   rD   zConfigDict | Noner4   boolr>   zMappingNamespace | NonerN   rO   )rN   rO   )r&   r   r'   r   rN   r   )r   r@   r   __doc__	__slots__rE   rB   r^   r$   r   r   r2   r2   2   sL    yI/,/ "/ 	/
 2/ 
/4'*Rr   r2   )r   r   rN   str)r/   r   r(   zCallable[..., Any])
__future__r   _annotationsr   r+   collections.abcr   r   typingr   r   r[   rD   r	   plugin._schema_validatorr
   _configr   _generate_schemar   r   _namespace_utilsr   r   r   _typing_extrar   r   r    r0   r2   r$   r   r   <module>rl      sL    2   %      > " H K K ,f
n
*[ [r   