o
    $6d*                     @   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%   tC:\Users\jesus\OneDrive\Desktop\erpjis_fastapi\backend\jisbackend\Lib\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   Zv__argsZ	v__kwargsZv__positional_onlyZ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   )selfr9   r   r:   r;   rA   Z
type_hints
takes_argstakes_kwargsfieldsinameprP   rR   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%   )rK   rL   alias)rg   r`   fieldr[   r%   r&   rj      s
    )rN   nextStopIterationrH   getrK   r5   model_fieldsrO   rI   rL   rJ   appendrE   rF   )r[   r+   r,   rd   Zarg_iterr_   ri   Zarg_name
var_kwargsZwrong_positional_argsZduplicate_kwargsZfields_aliasZnon_var_fieldskvr%   rm   r&   rc      sJ   








zValidatedFunction.build_valuesrf   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%   )Z__pydantic_fields_set__rq   default_factory)rg   rt   ru   rf   r%   r&   
<dictcomp>   s   , z-ValidatedFunction.execute.<locals>.<dictcomp>FTr%   )__dict__rO   poprL   rK   rr   r4   rJ   )	r[   rf   drs   args_Z	in_kwargsr,   r`   valuer%   rw   r&   re      s.   




zValidatedFunction.executer^   r\   r]   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.r=   Z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)Zcheck_fieldsru   r"   c                    s,   s|d u r|S t   d t|  d)Nz# positional arguments expected but z given)	TypeErrorlen)clsru   )pos_argsr\   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reprrB   r   r   ru   pluralrB   )r]   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)rG   
__module____qualname__r   rK   classmethodr	   r   r   r   rL   r   rU   r   rE   r   rF   r   config_dictZmodel_configr%   Zconfig_wrapperr   r[   r\   r]   r%   r&   DecoratorBaseModel   s    ,2


r   __base__)r   rH   r   ZConfigWrapperZalias_generatorr   r~   r   r   r   r   r4   rG   r5   )r[   r^   r\   r]   r   r   r%   r   r&   r      s   



")zValidatedFunction.create_model)r9   r*   r   r!   )rG   r   r   rb   r   r   r2   r-   r
   r   rU   rc   re   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   Ztyping_extensionsr   	_internalr   r   Zalias_generatorsr   errorsr   Zfunctional_validatorsr   mainr   r   r   r8   __all__r*   r   rU   r!   r   rC   rD   rE   rF   r1   r%   r%   r%   r&   <module>   sB    8,"