
    R}bg&              
         U d Z ddlmZ ddlmZmZ ddlmZ ddl	m
Z
mZmZmZmZmZ ddlmZ ddlmZmZmZ dd	lmZmZ dd
lmZ ddlmZ dZe
r G d de          Z G d de          Z G d de          Z G d de          Z  G d de          Z! G d de          Z"eeeee e!ej#        ej$        ej%        ej&        f	         Z'ee"ej(        f         Z)ee*eeef         e+eef         ee         f         Z,de-d<    ede'e,          Z. edej(        e"e,          Z/neZ0ddddddd9d,Z1ed-d.d:d2            Z2ed-d.d;d3            Z2ed-d.d<d5            Z2dddd6d=d8Z2dS )>zCOld `@validator` and `@root_validator` function validators from V1.    )annotations)partialpartialmethod)FunctionType)TYPE_CHECKINGAnyCallableTypeVarUnionoverload)warn)LiteralProtocol	TypeAlias   )_decorators_decorators_v1)PydanticUserError)PydanticDeprecatedSince20zQ`allow_reuse` is deprecated and will be ignored; it should no longer be necessaryc                      e Zd ZddZdS )_OnlyValueValidatorClsMethod!_OnlyValueValidatorClsMethod__clsr   #_OnlyValueValidatorClsMethod__valuereturnc                    d S N )selfr   r   s      w/home/e360mart.nyusoft.in/public_html/e360mart_env/lib/python3.11/site-packages/pydantic/deprecated/class_validators.py__call__z%_OnlyValueValidatorClsMethod.__call__       C    N)r   r   r   r   r   r   __name__
__module____qualname__r    r   r"   r   r   r      (        	 	 	 	 	 	r"   r   c                      e Zd Zd	dZdS )
_V1ValidatorWithValuesClsMethod$_V1ValidatorWithValuesClsMethod__clsr   &_V1ValidatorWithValuesClsMethod__valuevaluesdict[str, Any]r   c                    d S r   r   )r   r*   r+   r,   s       r   r    z(_V1ValidatorWithValuesClsMethod.__call__   r!   r"   N)r*   r   r+   r   r,   r-   r   r   r#   r   r"   r   r)   r)      r'   r"   r)   c                      e Zd Zd	dZdS )
%_V1ValidatorWithValuesKwOnlyClsMethod*_V1ValidatorWithValuesKwOnlyClsMethod__clsr   ,_V1ValidatorWithValuesKwOnlyClsMethod__valuer,   r-   r   c                   d S r   r   )r   r1   r2   r,   s       r   r    z._V1ValidatorWithValuesKwOnlyClsMethod.__call__   r!   r"   N)r1   r   r2   r   r,   r-   r   r   r#   r   r"   r   r0   r0      r'   r"   r0   c                      e Zd ZddZdS )_V1ValidatorWithKwargsClsMethod$_V1ValidatorWithKwargsClsMethod__clsr   kwargsr   c                    d S r   r   )r   r6   r7   s      r   r    z(_V1ValidatorWithKwargsClsMethod.__call__"   r!   r"   N)r6   r   r7   r   r   r   r#   r   r"   r   r5   r5   !   r'   r"   r5   c                      e Zd Zd	dZdS )
(_V1ValidatorWithValuesAndKwargsClsMethod-_V1ValidatorWithValuesAndKwargsClsMethod__clsr   r,   r-   r7   r   c                    d S r   r   )r   r;   r,   r7   s       r   r    z1_V1ValidatorWithValuesAndKwargsClsMethod.__call__&   r!   r"   N)r;   r   r,   r-   r7   r   r   r   r#   r   r"   r   r:   r:   %   r'   r"   r:   c                      e Zd ZddZdS )	_V1RootValidatorClsMethod_V1RootValidatorClsMethod__clsr   !_V1RootValidatorClsMethod__values"_decorators_v1.RootValidatorValuesr   c                    d S r   r   )r   r?   r@   s      r   r    z"_V1RootValidatorClsMethod.__call__*   s	     Cr"   N)r?   r   r@   rA   r   rA   r#   r   r"   r   r>   r>   )   s(        	 	 	 	 	 	r"   r>   r   _PartialClsOrStaticMethod_V1ValidatorType_V1RootValidatorFunctionTypeFN)pre	each_itemalwayscheck_fieldsallow_reuse__fieldstrfieldsrF   boolrG   rH   rI   bool | NonerJ   r   .Callable[[_V1ValidatorType], _V1ValidatorType]c               p   |du rt          t          t                     t          | gR           t	          d         t
                    rt          dd          t          d D                       st          dd          t          d	t          d
           |du rdnddfd}|S )a  Decorate methods on the class indicating that they should be used to validate fields.

    Args:
        __field (str): The first field the validator should be called on; this is separate
            from `fields` to ensure an error is raised if you don't pass at least one.
        *fields (str): Additional field(s) the validator should be called on.
        pre (bool, optional): Whether this validator should be called before the standard
            validators (else after). Defaults to False.
        each_item (bool, optional): For complex objects (sets, lists etc.) whether to validate
            individual elements rather than the whole object. Defaults to False.
        always (bool, optional): Whether this method and other validators should be called even if
            the value is missing. Defaults to False.
        check_fields (bool | None, optional): Whether to check that the fields actually exist on the model.
            Defaults to None.
        allow_reuse (bool, optional): Whether to track and raise an error if another validator refers to
            the decorated function. Defaults to False.

    Returns:
        Callable: A decorator that can be used to decorate a
            function to be used as a validator.
    Tr   z`@validator` should be used with fields and keyword arguments, not bare. E.g. usage should be `@validator('<field_name>', ...)`zvalidator-no-fieldscodec              3  @   K   | ]}t          |t                    V  d S r   )
isinstancerL   ).0fields     r   	<genexpr>zvalidator.<locals>.<genexpr>y   s,      <<EE3''<<<<<<r"   z`@validator` fields should be passed as separate string args. E.g. usage should be `@validator('<field_name_1>', '<field_name_2>', ...)`zvalidator-invalid-fieldszPydantic V1 style `@validator` validators are deprecated. You should migrate to Pydantic V2 style `@field_validator` validators, see the migration guide for more detailsr   
stacklevelbeforeafterfr   r   (_decorators.PydanticDescriptorProxy[Any]c                    t          j        |           rt          dd          t          j        |           } t          j        }t          j                  }t          j        | ||          S )Nz2`@validator` cannot be applied to instance methodszvalidator-instance-methodrR   )rM   moderG   rH   rI   shim)r   is_instance_method_from_sigr   %ensure_classmethod_based_on_signaturer   make_generic_v1_field_validatorValidatorDecoratorInfoPydanticDescriptorProxy)r]   wrapvalidator_wrapper_inforH   rI   rG   rM   r`   s      r   deczvalidator.<locals>.dec   s    2155 	#DKf    =a@@=!,!C%"
 "
 "
 216LSWXXXXr"   )r]   r   r   r^   )r   _ALLOW_REUSE_WARNING_MESSAGEDeprecationWarningtuplerU   r   r   all)	rK   rF   rG   rH   rI   rJ   rM   rj   r`   s	     ``` ` @r   	validatorro   R   s1   < d)+=>>>G%f%%&&F&)\** 
E&
 
 
 	

 <<V<<<<< 
Y+
 
 
 	
 		4 	    47$;;xxGDY Y Y Y Y Y Y Y Y Y" Jr"   .)rJ   skip_on_failureLiteral[True]FCallable[[_V1RootValidatorFunctionType], _V1RootValidatorFunctionType]c                    d S r   r   )rp   rJ   s     r   root_validatorrt      	     Cr"   c                    d S r   r   )rF   rJ   s     r   rt   rt      ru   r"   Literal[False]c                    d S r   r   rF   rp   rJ   s      r   rt   rt      s	     Cr"   ry   r   c                    t          dt          d           |r t                      | S |du rt          t          t                     | du rdnd| du r|durt	          dd	
          t          t          j        |           dfd}|S )a  Decorate methods on a model indicating that they should be used to validate (and perhaps
    modify) data either before or after standard model parsing/validation is performed.

    Args:
        pre (bool, optional): Whether this validator should be called before the standard
            validators (else after). Defaults to False.
        skip_on_failure (bool, optional): Whether to stop validation and return as soon as a
            failure is encountered. Defaults to False.
        allow_reuse (bool, optional): Whether to track and raise an error if another validator
            refers to the decorated function. Defaults to False.

    Returns:
        Any: A decorator that can be used to decorate a function to be used as a root_validator.
    zPydantic V1 style `@root_validator` validators are deprecated. You should migrate to Pydantic V2 style `@model_validator` validators, see the migration guide for more detailsr   rY   Tr[   r\   FzIf you use `@root_validator` with pre=False (the default) you MUST specify `skip_on_failure=True`. Note that `@root_validator` is deprecated and should be replaced with `@model_validator`.zroot-validator-pre-skiprR   )rF   r]   HCallable[..., Any] | classmethod[Any, Any, Any] | staticmethod[Any, Any]r   r   c                    t          j        |           rt          d          t          j        |           }t          j                  }t          j        ||          S )Nz7`@root_validator` cannot be applied to instance methods)r`   ra   )r   rc   	TypeErrorrd   RootValidatorDecoratorInforg   )r]   resdec_infor`   rh   s      r   rj   zroot_validator.<locals>.dec   sa    2155 	WUVVV?BB9tDDD23tLLLLr"   )r]   r{   r   r   )r   rl   rt   rk   r   r   r   make_v1_generic_root_validator)rF   rp   rJ   __argsrj   r`   rh   s        @@r   rt   rt      s    ( 		4 	     )~((d)+=>>>36$;;xxGD
e||t33i*
 
 
 	
 >@cJJJDM M M M M M M Jr"   )rK   rL   rM   rL   rF   rN   rG   rN   rH   rN   rI   rO   rJ   rN   r   rP   )rp   rq   rJ   rN   r   rr   )rF   rq   rJ   rN   r   rr   )rF   rw   rp   rq   rJ   rN   r   rr   )rF   rN   rp   rN   rJ   rN   r   r   )3__doc__
__future__r   _annotations	functoolsr   r   typesr   typingr   r   r	   r
   r   r   warningsr   typing_extensionsr   r   r   	_internalr   r   errorsr   r   rk   r   r)   r0   r5   r:   r>   V1ValidatorWithValuesV1ValidatorWithValuesKwOnlyV1ValidatorWithKwargsV1ValidatorWithValuesAndKwargsV1ValidatorV1RootValidatorFunctionV1RootValidatorclassmethodstaticmethodrC   __annotations__rD   rE   rl   ro   rt   r   r"   r   <module>r      s   I I I 2 2 2 2 2 2 , , , , , , , ,       I I I I I I I I I I I I I I I I       : : : : : : : : : : 3 3 3 3 3 3 3 3 & & & & & & 0 0 0 0 0 0r   <3    x       (              (       8       H    $'-'0,2,5	7
K !.	0O
 ,1S#s]1K\Z]_bZbMcersvew1w+xxxxx
 w1;@YZZ#*7&.!!	$ $   3  $I I I I I IX 
 
 
 
 
 
 

 
 
 
 
 
 
 

 
      
  !	4 4 4 4 4 4 4 4r"   