
    9Cgqp                    8   U d Z 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mZmZmZmZ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 d
dlmZmZmZmZ d
dl m!Z! d
dl"m#Z# ej$        dk     rddlm%Z% nddl
m%Z% ej&        Z' ej(        d`ddiej)         G d d                      Z* ej(        d`ddiej)         G d d                      Z+ ej(        d`ddiej)         G d d                      Z, ej(        d`ddiej)         G d d                      Z-er G d de%          Z. G d de%          Z/ G d de%          Z0 G d  d!e%          Z1ee/ej2        e.ej3        f         Z4ee1ej5        e0ej6        f         Z7ee8eeef         e9eef         ee         f         Z:d"e;d#<    ed$ee4e:f         %          Z< ed&ee7e:f         %          Z=ed'         Z>d"e;d(<   ed)d)d*dad6            Z?ed)d)d*dbd9            Z?ed)d)d:dcd<            Z?d=ded>ddd@Z? edA          Z@ edBdC          ZA G dD dEejB        e%eA                   ZC G dF dGe%e@                   ZD G dH dIe%e@                   ZE G dJ dKe%          ZF G dL dMe%          ZG G dN dOe%          ZH G dP dQe%          ZIee@ge@f         ZJ	 ee@ejK        ge@f         ZL	 eeEe@         eDe@         f         ZMeeHeIeFeGf         ZNeeLe@         eJe@         f         ZOededS            ZPedfdV            ZPedgdX            ZPdhdZZP ed[          ZQereeQd)f         ZRn% ej(        d`i ej)         G d\ d]                      ZRereeQd)f         ZSdS  ej(        d`i ej)         G d^ d_                      ZSdS )izBThis module contains related classes and functions for validation.    )annotationsN)partialmethod)FunctionType)TYPE_CHECKINGAnyCallableTypeVarUnioncastoverload)PydanticUndefinedcore_schema)r   )	AnnotatedLiteralSelf	TypeAlias   )_core_metadata_decorators	_generics_internal_dataclass)GetCoreSchemaHandler)PydanticUserError)      )ProtocolfrozenTc                  >    e Zd ZU dZded<   dd
Zedd            ZdS )AfterValidatora8  Usage docs: https://docs.pydantic.dev/2.9/concepts/validators/#annotated-validators

    A metadata class that indicates that a validation should be applied **after** the inner validation logic.

    Attributes:
        func: The validator function.

    Example:
        ```py
        from typing_extensions import Annotated

        from pydantic import AfterValidator, BaseModel, ValidationError

        MyInt = Annotated[int, AfterValidator(lambda v: v + 1)]

        class Model(BaseModel):
            a: MyInt

        print(Model(a=1).a)
        #> 2

        try:
            Model(a='a')
        except ValidationError as e:
            print(e.json(indent=2))
            '''
            [
              {
                "type": "int_parsing",
                "loc": [
                  "a"
                ],
                "msg": "Input should be a valid integer, unable to parse string as an integer",
                "input": "a",
                "url": "https://errors.pydantic.dev/2/v/int_parsing"
              }
            ]
            '''
        ```
    Kcore_schema.NoInfoValidatorFunction | core_schema.WithInfoValidatorFunctionfuncsource_typer   handlerr   returncore_schema.CoreSchemac                &    ||          }t          | j        d          }|r;t          t          j        | j                  }t          j        |||j                  S t          t          j        | j                  }t          j        ||          S )Nafter)schema
field_name)r(   )	_inspect_validatorr!   r   r   WithInfoValidatorFunction"with_info_after_validator_functionr)   NoInfoValidatorFunction no_info_after_validator_function)selfr"   r#   r(   info_argr!   s         P/var/www/api/venv/lib/python3.11/site-packages/pydantic/functional_validators.py__get_pydantic_core_schema__z+AfterValidator.__get_pydantic_core_schema__H   s    %%%di99 	U=tyIIDA$vbibtuuuu;TYGGD?VTTTT    	decorator>_decorators.Decorator[_decorators.FieldValidatorDecoratorInfo]r   c                $     | |j                   S )Nr!   r7   clsr4   s     r1   _from_decoratorzAfterValidator._from_decoratorR   s    s	''''r3   Nr"   r   r#   r   r$   r%   r4   r5   r$   r   )__name__
__module____qualname____doc____annotations__r2   classmethodr:    r3   r1   r   r      sh         ' 'R VUUUU U U U ( ( ( [( ( (r3   r   c                  L    e Zd ZU dZded<   eZded<   ddZedd            Z	dS )BeforeValidatorad  Usage docs: https://docs.pydantic.dev/2.9/concepts/validators/#annotated-validators

    A metadata class that indicates that a validation should be applied **before** the inner validation logic.

    Attributes:
        func: The validator function.
        json_schema_input_type: The input type of the function. This is only used to generate the appropriate
            JSON Schema (in validation mode).

    Example:
        ```py
        from typing_extensions import Annotated

        from pydantic import BaseModel, BeforeValidator

        MyInt = Annotated[int, BeforeValidator(lambda v: v + 1)]

        class Model(BaseModel):
            a: MyInt

        print(Model(a=1).a)
        #> 2

        try:
            Model(a='a')
        except TypeError as e:
            print(e)
            #> can only concatenate str (not "int") to str
        ```
    r    r!   r   json_schema_input_typer"   r#   r   r$   r%   c                    ||          }| j         t          u rd n|                    | j                   }t          j        |          }t          | j        d          }|r<t          t          j	        | j                  }t          j
        |||j        |          S t          t          j        | j                  }t          j        |||          S )Njs_input_core_schemabeforer(   r)   metadatar(   rL   )rF   r   generate_schemar   build_metadata_dictr*   r!   r   r   r+   #with_info_before_validator_functionr)   r-   !no_info_before_validator_functionr/   r"   r#   r(   input_schemarL   r0   r!   s           r1   r2   z,BeforeValidator.__get_pydantic_core_schema__{   s    %% *.??? D(()DEE 	
 "5<XXX%di:: 
	i=tyIIDB"-!	    ;TYGGD@f_ghhhhr3   r4   r5   r   c                :     | |j         |j        j                  S N)r!   rF   r!   inforF   r8   s     r1   r:   zBeforeValidator._from_decorator   (    s#,>#H
 
 
 	
r3   Nr;   r<   
r=   r>   r?   r@   rA   r   rF   r2   rB   r:   rC   r3   r1   rE   rE   W   sy          > VUUU"33333i i i i, 
 
 
 [
 
 
r3   rE   c                  L    e Zd ZU dZded<   eZded<   ddZedd            Z	dS )PlainValidatora  Usage docs: https://docs.pydantic.dev/2.9/concepts/validators/#annotated-validators

    A metadata class that indicates that a validation should be applied **instead** of the inner validation logic.

    Attributes:
        func: The validator function.
        json_schema_input_type: The input type of the function. This is only used to generate the appropriate
            JSON Schema (in validation mode). If not provided, will default to `Any`.

    Example:
        ```py
        from typing_extensions import Annotated

        from pydantic import BaseModel, PlainValidator

        MyInt = Annotated[int, PlainValidator(lambda v: int(v) + 1)]

        class Model(BaseModel):
            a: MyInt

        print(Model(a='1').a)
        #> 2
        ```
    r    r!   r   rF   r"   r#   r   r$   r%   c           
     0   ddl m} 	  ||          }|                    dt          j        d ||                    |                              }n# |$ r d }Y nw xY w|                    | j                  }t          j        |          }t          | j
        d          }|r<t          t          j        | j
                  }	t          j        |	|j        ||          S t          t          j        | j
                  }	t          j        |	||	          S )
Nr   PydanticSchemaGenerationErrorserializationc                     ||           S NrC   vhs     r1   <lambda>z=PlainValidator.__get_pydantic_core_schema__.<locals>.<lambda>       !!A$$ r3   )functionr(   return_schemarH   plain)r)   r_   rL   )r_   rL   )pydanticr^   getr   #wrap_serializer_function_ser_schemarN   rF   r   rO   r*   r!   r   r+   "with_info_plain_validator_functionr)   r-    no_info_plain_validator_function)
r/   r"   r#   r^   r(   r_   rS   rL   r0   r!   s
             r1   r2   z+PlainValidator.__get_pydantic_core_schema__   sS    	;:::::	!W[))F #JJ?..!")"9"9+"F"F   MM - 	! 	! 	! MMM	! ..t/JKK!5<XXX%di99 	=tyIIDA"-+!	    ;TYGGD?+!   s   A
A AAr4   r5   r   c                :     | |j         |j        j                  S rU   rV   r8   s     r1   r:   zPlainValidator._from_decorator   rX   r3   Nr;   r<   )
r=   r>   r?   r@   rA   r   rF   r2   rB   r:   rC   r3   r1   r[   r[      sv          2 VUUU"%%%%%) ) ) )V 
 
 
 [
 
 
r3   r[   c                  L    e Zd ZU dZded<   eZded<   ddZedd            Z	dS )WrapValidatora  Usage docs: https://docs.pydantic.dev/2.9/concepts/validators/#annotated-validators

    A metadata class that indicates that a validation should be applied **around** the inner validation logic.

    Attributes:
        func: The validator function.
        json_schema_input_type: The input type of the function. This is only used to generate the appropriate
            JSON Schema (in validation mode).

    ```py
    from datetime import datetime

    from typing_extensions import Annotated

    from pydantic import BaseModel, ValidationError, WrapValidator

    def validate_timestamp(v, handler):
        if v == 'now':
            # we don't want to bother with further validation, just return the new value
            return datetime.now()
        try:
            return handler(v)
        except ValidationError:
            # validation failed, in this case we want to return a default value
            return datetime(2000, 1, 1)

    MyTimestamp = Annotated[datetime, WrapValidator(validate_timestamp)]

    class Model(BaseModel):
        a: MyTimestamp

    print(Model(a='now').a)
    #> 2032-01-02 03:04:05.000006
    print(Model(a='invalid').a)
    #> 2000-01-01 00:00:00
    ```
    zScore_schema.NoInfoWrapValidatorFunction | core_schema.WithInfoWrapValidatorFunctionr!   r   rF   r"   r#   r   r$   r%   c                    ||          }| j         t          u rd n|                    | j                   }t          j        |          }t          | j        d          }|r<t          t          j	        | j                  }t          j
        |||j        |          S t          t          j        | j                  }t          j        |||          S )NrH   wraprK   rM   )rF   r   rN   r   rO   r*   r!   r   r   WithInfoWrapValidatorFunction!with_info_wrap_validator_functionr)   NoInfoWrapValidatorFunctionno_info_wrap_validator_functionrR   s           r1   r2   z*WrapValidator.__get_pydantic_core_schema__  s    %% *.??? D(()DEE 	
 "5<XXX%di88 	A49MMD@"-!	    ?KKD>!   r3   r4   r5   r   c                :     | |j         |j        j                  S rU   rV   r8   s     r1   r:   zWrapValidator._from_decorator/  rX   r3   Nr;   r<   rY   rC   r3   r1   rq   rq      sv         $ $L ^]]]"33333   4 
 
 
 [
 
 
r3   rq   c                      e Zd ZddZdS )_OnlyValueValidatorClsMethodr9   r   valuer$   c                   d S ra   rC   r/   r9   r{   s      r1   __call__z%_OnlyValueValidatorClsMethod.__call__:        r3   Nr9   r   r{   r   r$   r   r=   r>   r?   r~   rC   r3   r1   rz   rz   9  s        ??????r3   rz   c                      e Zd Zd	dZdS )
_V2ValidatorClsMethodr9   r   r{   rW   _core_schema.ValidationInfor$   c                   d S ra   rC   r/   r9   r{   rW   s       r1   r~   z_V2ValidatorClsMethod.__call__=  r   r3   Nr9   r   r{   r   rW   r   r$   r   r   rC   r3   r1   r   r   <  s        bbbbbbr3   r   c                      e Zd Zd	dZdS )
 _OnlyValueWrapValidatorClsMethodr9   r   r{   r#   )_core_schema.ValidatorFunctionWrapHandlerr$   c                   d S ra   rC   r/   r9   r{   r#   s       r1   r~   z)_OnlyValueWrapValidatorClsMethod.__call__@  r   r3   N)r9   r   r{   r   r#   r   r$   r   r   rC   r3   r1   r   r   ?  s        ssssssr3   r   c                      e Zd Zdd	Zd
S )_V2WrapValidatorClsMethodr9   r   r{   r#   r   rW   r   r$   c                   d S ra   rC   r/   r9   r{   r#   rW   s        r1   r~   z"_V2WrapValidatorClsMethod.__call__C  s	     #r3   N)
r9   r   r{   r   r#   r   rW   r   r$   r   r   rC   r3   r1   r   r   B  s(        	 	 	 	 	 	r3   r   r   _PartialClsOrStaticMethod"_V2BeforeAfterOrPlainValidatorType)bound_V2WrapValidatorType)rJ   r'   rs   ri   FieldValidatorModes.)check_fieldsrF   fieldstrfieldsmodeLiteral['wrap']r   bool | NonerF   r   r$   6Callable[[_V2WrapValidatorType], _V2WrapValidatorType]c                  d S ra   rC   r   r   r   rF   r   s        r1   field_validatorr   e  s
     >ASr3   Literal['before', 'plain']RCallable[[_V2BeforeAfterOrPlainValidatorType], _V2BeforeAfterOrPlainValidatorType]c                  d S ra   rC   r   s        r1   r   r   p  s     Z]Y\r3   )r   r   Literal['after']c                  d S ra   rC   )r   r   r   r   s       r1   r   r   {  s     Z]Y\r3   r'   )r   r   rF   Callable[[Any], Any]c              :   t          | t                    rt          dd          dvrt          urt          dd          t          u rdk    rt          | gR t          d D                       st          d	d
          dfd}|S )a1  Usage docs: https://docs.pydantic.dev/2.9/concepts/validators/#field-validators

    Decorate methods on the class indicating that they should be used to validate fields.

    Example usage:
    ```py
    from typing import Any

    from pydantic import (
        BaseModel,
        ValidationError,
        field_validator,
    )

    class Model(BaseModel):
        a: str

        @field_validator('a')
        @classmethod
        def ensure_foobar(cls, v: Any):
            if 'foobar' not in v:
                raise ValueError('"foobar" not found in a')
            return v

    print(repr(Model(a='this is foobar good')))
    #> Model(a='this is foobar good')

    try:
        Model(a='snap')
    except ValidationError as exc_info:
        print(exc_info)
        '''
        1 validation error for Model
        a
          Value error, "foobar" not found in a [type=value_error, input_value='snap', input_type=str]
        '''
    ```

    For more in depth examples, see [Field Validators](../concepts/validators.md#field-validators).

    Args:
        field: The first field the `field_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: Additional field(s) the `field_validator` should be called on.
        mode: Specifies whether to validate the fields before or after validation.
        check_fields: Whether to check that the fields actually exist on the model.
        json_schema_input_type: The input type of the function. This is only used to generate
            the appropriate JSON Schema (in validation mode) and can only specified
            when `mode` is either `'before'`, `'plain'` or `'wrap'`.

    Returns:
        A decorator that can be used to decorate a function to be used as a field_validator.

    Raises:
        PydanticUserError:
            - If `@field_validator` is used bare (with no fields).
            - If the args passed to `@field_validator` as fields are not strings.
            - If `@field_validator` applied to instance methods.
    z`@field_validator` should be used with fields and keyword arguments, not bare. E.g. usage should be `@validator('<field_name>', ...)`zvalidator-no-fieldscode)rJ   ri   rs   z;`json_schema_input_type` can't be used when mode is set to zvalidator-input-typeri   c              3  @   K   | ]}t          |t                    V  d S ra   )
isinstancer   ).0r   s     r1   	<genexpr>z"field_validator.<locals>.<genexpr>  s,      ::%z%%%::::::r3   z`@field_validator` fields should be passed as separate string args. E.g. usage should be `@validator('<field_name_1>', '<field_name_2>', ...)`zvalidator-invalid-fieldsfHCallable[..., Any] | staticmethod[Any, Any] | classmethod[Any, Any, Any]r$   (_decorators.PydanticDescriptorProxy[Any]c                    t          j        |           rt          dd          t          j        |           } t          j                  }t          j        | |          S )Nz8`@field_validator` cannot be applied to instance methodszvalidator-instance-methodr   )r   r   r   rF   )r   is_instance_method_from_sigr   %ensure_classmethod_based_on_signatureFieldValidatorDecoratorInfoPydanticDescriptorProxy)r   dec_infor   r   rF   r   s     r1   deczfield_validator.<locals>.dec  s}     2155 	#JQl   
 =a@@:<Xn
 
 
 21h???r3   )r   r   r$   r   )r   r   r   r   r   all)r   r   r   rF   r   r   s    ```` r1   r   r     s   F %&& 
E&
 
 
 	
 ...3IQb3b3bR$RR'
 
 
 	

 !222tw!$^V^^F::6::::: 
Y+
 
 
 	
@ @ @ @ @ @ @ @ @  Jr3   
_ModelType_ModelTypeCo)	covariantc                      e Zd ZdZ	 d
dd	ZdS )ModelWrapValidatorHandlerz]`@model_validator` decorated function handler argument type. This is used when `mode='wrap'`.Nr{   r   outer_locationstr | int | Noner$   r   c                   d S ra   rC   )r/   r{   r   s      r1   r~   z"ModelWrapValidatorHandler.__call__  s	     	r3   ra   )r{   r   r   r   r$   r   r=   r>   r?   r@   r~   rC   r3   r1   r   r     s8        gg
 ,0      r3   r   c                      e Zd ZdZdd
ZdS )ModelWrapValidatorWithoutInfozA `@model_validator` decorated function signature.
    This is used when `mode='wrap'` and the function does not have info argument.
    r9   type[_ModelType]r{   r   r#   %ModelWrapValidatorHandler[_ModelType]r$   r   c                   d S ra   rC   r   s       r1   r~   z&ModelWrapValidatorWithoutInfo.__call__  s	     Sr3   N)r9   r   r{   r   r#   r   r$   r   r   rC   r3   r1   r   r     s2         	 	 	 	 	 	r3   r   c                      e Zd ZdZddZdS )ModelWrapValidatorzSA `@model_validator` decorated function signature. This is used when `mode='wrap'`.r9   r   r{   r   r#   r   rW   r   r$   r   c                   d S ra   rC   r   s        r1   r~   zModelWrapValidator.__call__  s	     Sr3   N)
r9   r   r{   r   r#   r   rW   r   r$   r   r   rC   r3   r1   r   r     s.        ]]
 
 
 
 
 
r3   r   c                      e Zd ZdZddZdS )#FreeModelBeforeValidatorWithoutInfoA `@model_validator` decorated function signature.
    This is used when `mode='before'` and the function does not have info argument.
    r{   r   r$   c                   d S ra   rC   )r/   r{   s     r1   r~   z,FreeModelBeforeValidatorWithoutInfo.__call__)  s	     cr3   N)r{   r   r$   r   r   rC   r3   r1   r   r   $  s2              r3   r   c                      e Zd ZdZddZdS )	ModelBeforeValidatorWithoutInfor   r9   r   r{   r$   c                   d S ra   rC   r}   s      r1   r~   z(ModelBeforeValidatorWithoutInfo.__call__8  	     cr3   Nr   r   rC   r3   r1   r   r   3  s2              r3   r   c                      e Zd ZdZd	dZdS )
FreeModelBeforeValidatorUA `@model_validator` decorated function signature. This is used when `mode='before'`.r{   r   rW   r   r$   c                   d S ra   rC   )r/   r{   rW   s      r1   r~   z!FreeModelBeforeValidator.__call__F  r   r3   N)r{   r   rW   r   r$   r   r   rC   r3   r1   r   r   C  s.        __     r3   r   c                      e Zd ZdZd
dZd	S )ModelBeforeValidatorr   r9   r   r{   rW   r   r$   c                   d S ra   rC   r   s       r1   r~   zModelBeforeValidator.__call__T  s	     cr3   Nr   r   rC   r3   r1   r   r   Q  s.        __	 	 	 	 	 	r3   r   |Callable[[_AnyModelWrapValidator[_ModelType]], _decorators.PydanticDescriptorProxy[_decorators.ModelValidatorDecoratorInfo]]c                    d S ra   rC   r   s    r1   model_validatorr   o  	     3r3   Literal['before']rCallable[[_AnyModelBeforeValidator], _decorators.PydanticDescriptorProxy[_decorators.ModelValidatorDecoratorInfo]]c                    d S ra   rC   r   s    r1   r   r   x  r   r3   }Callable[[_AnyModelAfterValidator[_ModelType]], _decorators.PydanticDescriptorProxy[_decorators.ModelValidatorDecoratorInfo]]c                    d S ra   rC   r   s    r1   r   r     r   r3   "Literal['wrap', 'before', 'after']c                     d fd}|S )a"  Usage docs: https://docs.pydantic.dev/2.9/concepts/validators/#model-validators

    Decorate model methods for validation purposes.

    Example usage:
    ```py
    from typing_extensions import Self

    from pydantic import BaseModel, ValidationError, model_validator

    class Square(BaseModel):
        width: float
        height: float

        @model_validator(mode='after')
        def verify_square(self) -> Self:
            if self.width != self.height:
                raise ValueError('width and height do not match')
            return self

    s = Square(width=1, height=1)
    print(repr(s))
    #> Square(width=1.0, height=1.0)

    try:
        Square(width=1, height=2)
    except ValidationError as e:
        print(e)
        '''
        1 validation error for Square
          Value error, width and height do not match [type=value_error, input_value={'width': 1, 'height': 2}, input_type=dict]
        '''
    ```

    For more in depth examples, see [Model Validators](../concepts/validators.md#model-validators).

    Args:
        mode: A required string literal that specifies the validation mode.
            It can be one of the following: 'wrap', 'before', or 'after'.

    Returns:
        A decorator that can be used to decorate a function to be used as a model validator.
    r   r   r$   r   c                    t          j        |           } t          j                  }t          j        | |          S )Nr   )r   r   ModelValidatorDecoratorInfor   )r   r   r   s     r1   r   zmodel_validator.<locals>.dec  s9    =a@@:EEE21h???r3   )r   r   r$   r   rC   )r   r   s   ` r1   r   r     s/    `@ @ @ @ @ @ Jr3   AnyTypec                  P    e Zd ZdZedd            Zedd            Zej        ZdS )
InstanceOfu  Generic type for annotating a type that is an instance of a given class.

        Example:
            ```py
            from pydantic import BaseModel, InstanceOf

            class Foo:
                ...

            class Bar(BaseModel):
                foo: InstanceOf[Foo]

            Bar(foo=Foo())
            try:
                Bar(foo=42)
            except ValidationError as e:
                print(e)
                """
                [
                │   {
                │   │   'type': 'is_instance_of',
                │   │   'loc': ('foo',),
                │   │   'msg': 'Input should be an instance of Foo',
                │   │   'input': 42,
                │   │   'ctx': {'class': 'Foo'},
                │   │   'url': 'https://errors.pydantic.dev/0.38.0/v/is_instance_of'
                │   }
                ]
                """
            ```
        itemr   r$   c                0    t           | |             f         S ra   )r   r9   r   s     r1   __class_getitem__zInstanceOf.__class_getitem__  s    T3355[))r3   sourcer   r#   r   r%   c                    ddl m} t          j        t	          j        |          p|          }	  ||          }t          j        d |          |d<   t          j        ||          S # |$ r |cY S w xY w)Nr   r]   c                     ||           S ra   rC   rb   s     r1   re   z9InstanceOf.__get_pydantic_core_schema__.<locals>.<lambda>  rf   r3   rg   r(   r_   )python_schemajson_schema)rj   r^   r   is_instance_schemar   
get_originrl   json_or_python_schema)r9   r   r#   r^   instance_of_schemaoriginal_schemas         r1   r2   z'InstanceOf.__get_pydantic_core_schema__  s    >>>>>> "-!?	@TU[@\@\@f`f!g!gx")'&// 7B6e..7 7 7"?3 #8GYgvwwww 1 * * *))))*s   A+ +A54A5N)r   r   r$   r   r   r   r#   r   r$   r%   )	r=   r>   r?   r@   rB   r   r2   object__hash__rC   r3   r1   r   r     sf        	 	@ 
	* 	* 	* 
	* 
	x 	x 	x 
	x& ?r3   r   c                  @    e Zd ZdZddZedd
            Zej        ZdS )SkipValidationa  If this is applied as an annotation (e.g., via `x: Annotated[int, SkipValidation]`), validation will be
            skipped. You can also use `SkipValidation[int]` as a shorthand for `Annotated[int, SkipValidation]`.

        This can be useful if you want to use a type annotation for documentation/IDE/type-checking purposes,
        and know that it is safe to skip validation for one or more of the fields.

        Because this converts the validation schema to `any_schema`, subsequent annotation-applied transformations
        may not have the expected effects. Therefore, when used, this annotation should generally be the final
        annotation applied to a type.
        r   r   r$   c                8    t           |t                      f         S ra   )r   r   r   s     r1   r   z SkipValidation.__class_getitem__  s    T>#3#3344r3   r   r#   r   r%   c                     ||          t          j        fdg          }t          j        |t          j        d                     S )Nc                     |          S ra   rC   )_crd   r   s     r1   re   z=SkipValidation.__get_pydantic_core_schema__.<locals>.<lambda>   s    ababcrasas r3   )js_annotation_functionsc                     ||           S ra   rC   rb   s     r1   re   z=SkipValidation.__get_pydantic_core_schema__.<locals>.<lambda>$  rf   r3   r   )rL   r_   )r   rO   r   
any_schemarl   )r9   r   r#   rL   r   s       @r1   r2   z+SkipValidation.__get_pydantic_core_schema__  sj    %gfooO%9SsSsSsSsRtuuuH)!)M..     r3   N)r   r   r$   r   r   )	r=   r>   r?   r@   r   rB   r2   r   r   rC   r3   r1   r   r     sU        		 			5 	5 	5 	5 
	 	 	 
	 ?r3   r   rC   )r   r   r   r   r   r   r   r   rF   r   r$   r   )r   r   r   r   r   r   r   r   rF   r   r$   r   )
r   r   r   r   r   r   r   r   r$   r   )r   r   r   r   r   r   r   r   rF   r   r$   r   )r   r   r$   r   )r   r   r$   r   )r   r   r$   r   )r   r   r$   r   )Tr@   
__future__r   _annotationsdataclassessys	functoolsr   typesr   typingr   r   r   r	   r
   r   r   pydantic_corer   r   _core_schematyping_extensionsr   r   r   r   	_internalr   r   r   r   annotated_handlersr   errorsr   version_infor   inspect_validatorr*   	dataclass
slots_truer   rE   r[   rq   rz   r   r   r   r+   r-   _V2Validatorrt   rv   _V2WrapValidatorrB   staticmethodr   rA   r   r   r   r   r   r   ValidatorFunctionWrapHandlerr   r   r   r   r   r   r   ModelAfterValidatorWithoutInfoValidationInfoModelAfterValidator_AnyModelWrapValidator_AnyModelBeforeValidator_AnyModelAfterValidatorr   r   r   r   rC   r3   r1   <module>r      s   H H H 2 2 2 2 2 2     



 # # # # # #       O O O O O O O O O O O O O O O O O O 8 8 8 8 8 8 8 8 5 5 5 5 5 5 A A A A A A A A A A A A R R R R R R R R R R R R 4 4 4 4 4 4 % % % % % %g******* 2  EEdE&9&DEE8( 8( 8( 8( 8( 8( 8( FE8(v EEdE&9&DEE>
 >
 >
 >
 >
 >
 >
 FE>
B EEdE&9&DEEM
 M
 M
 M
 M
 M
 M
 FEM
` EEdE&9&DEEI
 I
 I
 I
 I
 I
 I
 FEI
X  )u@ @ @ @ @x @ @ @c c c c c c c ct t t t t8 t t t    H    .$,	.L !2(0	2 ,1S#s]1K\Z]_bZbMcersvew1w+xxxxx)0,L";;<* * *& #7#9GWYrGrAsttt!()K!L  L L L L 
 !$"%A A A A A 
A 
 !$"%] ] ] ] ] 
] 

 ! #] ] ] ] ] 
] !( $"3k k k k k k\ W\""
w~666	 	 	 	 	 I8T`Ka 	 	 	    HZ$8   "    *-        (       h        x       8    "*:,
*B!C  
L,GH*TU  Z1*=?\]g?hhi  24WYxx    3J ?A_`jAk kl  
   
 
   
 
   
6 6 6 6r ')

  @#7C<(JJ [<<0;<<9# 9# 9# 9# 9# 9# 9# =<9#x  #w|,NNN [<<0;<<# # # # # # # =<# # #r3   