o
    Ci*                     @   s  d dl Z d dlmZ d dlmZmZmZmZmZm	Z	m
Z
mZmZmZmZmZ d dlmZ ddlmZm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 esXeZdZ eruedef Z!ede!dZ"edee ee#ef f Z$eededd!dddddddedgdf fddZ%eededd"ddZ%d!ddde
d dddefddZ%dZ&dZ'dZ(dZ)G dd  d Z*dS )#    N)wraps)TYPE_CHECKINGAnyCallableDictListMappingOptionalTupleTypeTypeVarUnionoverload)
deprecated   )_config_typing_extra)	to_pascal)PydanticUserError)field_validator)	BaseModelcreate_model)PydanticDeprecatedSince20)validate_arguments.AnyCallableT)boundKThe `validate_arguments` method is deprecated; use `validate_call` instead.)categoryconfigfuncr   
ConfigTypereturnc                C      d S N )r    r   r%   r%   u/var/www/html/fyndo/python/python_agents/rag_suite/venv/lib/python3.10/site-packages/pydantic/deprecated/decorator.pyr         r   c                 C   r#   r$   r%   )r    r%   r%   r&   r   $   r'   c                   s.   t jdtdd d
 fdd}| r|| S |S )z9Decorator to validate the arguments passed to a function.r   r   )
stacklevel_funcAnyCallabler"   c                    sN   t |  t| dtdtdtf fdd} |_ j|_ j|_ j|_|S )Nargskwargsr"   c                     s    j | i |S r$   )call)r+   r,   vdr%   r&   wrapper_function5   s   z>validate_arguments.<locals>.validate.<locals>.wrapper_function)ValidatedFunctionr   r   r/   init_model_instancevalidateraw_functionmodel)r)   r0   r   r.   r&   r3   2   s   
z$validate_arguments.<locals>.validateN)r)   r*   r"   r*   )warningswarnDeprecationWarning)r    r   r3   r%   r   r&   r   ,   s   v__args	v__kwargsv__positional_onlyv__duplicate_kwargsc                
   @   s   e Zd ZdddZdeded	efd
dZdeded	efddZdeedf de	e
ef d	e	e
ef fddZded	efddZde	e
ef dededdd	df
ddZdS )r1   functionr*   r   r!   c                 C   s>  ddl m}m} ||j}| tttth@ r.t	dt dt dt dt dt
j dd d|| _i | _t | _d	| _d
| _tj|dd}d}d}i }	t| D ]\}
\}}|j|ju r`t}n|| }|j|ju rldn|j}|j|jkr|| j|
< ||f|	|< tt d f|	t< | j| qQ|j|jkr|| j|
< ||f|	|< tt d f|	t< qQ|j|j kr||f|	|< qQ|j|j!kr|| _t"|df d f|	|< d}qQ|j|j#ksJ |j|| _t$t|f d f|	|< d}qQ|s| j|	v rt| _|s| j|	v rt| _|stt d f|	| j< |st$ttf d f|	| j< | %|	||| d S )Nr   )	Parameter	signature"z", "z" and "z6" are not permitted as argument names when using the "z" decoratorcoder+   r,   T)include_extrasF.)&inspectr>   r?   
parameterskeys
ALT_V_ARGSALT_V_KWARGSV_POSITIONAL_ONLY_NAMEV_DUPLICATE_KWARGSr   r   __name__r4   arg_mappingsetpositional_only_argsv_args_namev_kwargs_namer   get_type_hints	enumerateitems
annotationemptyr   defaultkindPOSITIONAL_ONLYr   straddPOSITIONAL_OR_KEYWORDKEYWORD_ONLYVAR_POSITIONALr
   VAR_KEYWORDr   r   )selfr=   r   r>   r?   rE   
type_hints
takes_argstakes_kwargsfieldsinameprT   rV   r%   r%   r&   __init__L   sf   


zValidatedFunction.__init__r+   r,   r"   c                 O   s   |  ||}| jdi |S )Nr%   )build_valuesr5   )r_   r+   r,   valuesr%   r%   r&   r2      s   z%ValidatedFunction.init_model_instancec                 O   s   | j |i |}| |S r$   )r2   execute)r_   r+   r,   mr%   r%   r&   r-      s   
zValidatedFunction.call.c                    s4  i }|r9t |}	 zt|\}}W n	 ty   Y nw  j|}|d ur*|||< n|gdd |D  | j< nq	i }g }	g }
 fdd jj D }t	 jj j j
h }| D ](\}}||v sh||v r| jv rr|	| ||v r{|
| |||< q\|||< q\|r|| j
< |	r|	|t< |
r|
|t< |S )NTc                 S   s   g | ]\}}|qS r%   r%   ).0_ar%   r%   r&   
<listcomp>   s    z2ValidatedFunction.build_values.<locals>.<listcomp>c                    s&   g | ]\}}| j  jfvr|jqS r%   )rO   rP   alias)rl   re   fieldr_   r%   r&   ro      s
    )rR   nextStopIterationrL   getrO   r5   model_fieldsrS   rM   rP   rN   appendrI   rJ   )r_   r+   r,   ri   arg_iterrd   rn   arg_name
var_kwargswrong_positional_argsduplicate_kwargsfields_aliasnon_var_fieldskvr%   rr   r&   rh      sJ   








zValidatedFunction.build_valuesrk   c           	         s    fdd j  D }|| ji }| j|v rIg }d}i }| D ]\}}|r-|||< q"|| jkr9||7 }d}q"|| q"| j|i ||S | jrrg }i }| D ]\}}|| jv rc|| qT|||< qT| j|i ||S | jdi ||S )Nc                    s,   i | ]\}}| j v s j| jr||qS r%   )__pydantic_fields_set__rv   default_factory)rl   r   r   rk   r%   r&   
<dictcomp>   s   , z-ValidatedFunction.execute.<locals>.<dictcomp>FTr%   )__dict__rS   poprP   rO   rw   r4   rN   )	r_   rk   drz   args_	in_kwargsr,   re   valuer%   r   r&   rj      s.   




zValidatedFunction.executerc   ra   rb   Nc                    sx   t jt|  jrtdd d jd u rd jd< G  fdddt}t	t
jjfd|i|_d S )NztSetting the "alias_generator" property on custom Config for @validate_arguments is not yet supported, please remove.rA   forbidextrac                	       s   e Zd Zejddedeee  deee  ffddZ	ej
ddedeeeef  deeeef  ffddZeeddedeee  dd	fd
dZeeddedeee  dd	fddZ jZd	S )z:ValidatedFunction.create_model.<locals>.DecoratorBaseModelF)check_fieldsr   r"   c                    s,   s|d u r|S t   d t|  d)Nz# positional arguments expected but z given)	TypeErrorlen)clsr   )pos_argsra   r%   r&   
check_args   s   zEValidatedFunction.create_model.<locals>.DecoratorBaseModel.check_argsc                    sL    s|d u r|S t |dkrdnd}dtt| }td| d| )N    s, zunexpected keyword argument: )r   joinmapreprrF   r   r   r   pluralrF   )rb   r%   r&   check_kwargs   s
   zGValidatedFunction.create_model.<locals>.DecoratorBaseModel.check_kwargsNc                 S   sJ   |d u rd S t |dkrdnd}dtt|}td| d| d| )Nr   r   r   r   zpositional-only argumentz passed as keyword argumentr   r   r   r   r   r   r   r%   r%   r&   check_positional_only  s
   zPValidatedFunction.create_model.<locals>.DecoratorBaseModel.check_positional_onlyc                 S   sD   |d u rd S t |dkrdnd}dtt|}td| d| )Nr   r   r   r   zmultiple values for argumentr   r   r   r%   r%   r&   check_duplicate_kwargs  s
   zQValidatedFunction.create_model.<locals>.DecoratorBaseModel.check_duplicate_kwargs)rK   
__module____qualname__r   rO   classmethodr	   r   r   r   rP   r   rY   r   rI   r   rJ   r   config_dictmodel_configr%   config_wrapperr   r_   ra   rb   r%   r&   DecoratorBaseModel   s    ,2


r   __base__)r   rL   r   ConfigWrapperalias_generatorr   r   r   r   r   r   r4   rK   r5   )r_   rc   ra   rb   r   r   r%   r   r&   r      s   



")zValidatedFunction.create_model)r=   r*   r   r!   )rK   r   r   rg   r   r   r2   r-   r
   r   rY   rh   rj   boolr   r%   r%   r%   r&   r1   K   s    
D.+*r1   r$   )r    r   r"   r   )+r6   	functoolsr   typingr   r   r   r   r   r   r	   r
   r   r   r   r   typing_extensionsr   	_internalr   r   alias_generatorsr   errorsr   functional_validatorsr   mainr   r   r   r8   __all__r*   r   rY   r!   r   rG   rH   rI   rJ   r1   r%   r%   r%   r&   <module>   sB    8,"