
    f j#q                      U d Z ddlmZ ddlZddlZddl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 ddlmZmZmZmZmZ dd	lmZmZ ej        d
k     rddlmZ nddlmZ ej        dk     rddlmZmZmZ n
ddlmZmZmZ erddl m!Z! n	 ddl m!Z! n# e"$ r  e#            Z!Y nw xY wed         Z$ G d ded          Z%dZ&de'd<    eddd          Z( G d dee(                   Z) G d de)e(         e          Z* G d d ee(                   Z+ed!         Z, G d" d#ed          Z-dd'Z.eegef         Z/eee)e         gef         Z0eeegef         Z1eeee*e         gef         Z2ee/e0e1e2f         Z3ed(         Z4	  G d) d*ed          Z5dddd+d,dd6Z6 G d7 d8e          Z7eee7gef         Z8eee7e)e         gef         Z9eeee7gef         Z:eeee7e*e         gef         Z;ee8e9e:e;f         Z< G d9 d:ed          Z=ddddd+d;dd>Z> G d? d@ed          Z?dAdBddEZ@ G dF dGed          ZAdAdBddHZB G dI dJed          ZCd dNZDee-e5e=e?eAeCf         ZE G dO dPed          ZFdddUZG G dV dWed          ZHddddXdd]ZI G d^ d_ed          ZJdddd`ddcZK G dd deed          ZLdddd`ddfZM G dg dhed          ZN	 	 	 	 dddjZO G dk dled          ZPddddddddddm	ddtZQ G du dved          ZRdddddddddddw
d	dzZS G d{ d|ed          ZTddddddddddddd}d
dZU G d ded          ZVdddddddZW G d ded          ZXdddddddddddddddZY G d ded          ZZdddddddddZ[ G d ded          Z\ddddddddddd
ddZ] G d ded          Z^ddddddddddd
ddZ_ G d ded          Z`dddddddddddddddZa G d ded          Zbdddddddddd	ddZc G d ded          Zddddd`ddZe G d ded          ZfdddddddddZg G dÄ ded          Zh	 	 dddńZied         Zj G dǄ ded          Zkdddddɜdd˄Zl G d̄ ded          Zmdddddɜdd΄Zn G dτ ded          Zodddd`ddфZp G d҄ ded          ZqddddddԜddׄZr G d؄ ded          ZsdddڜddބZteeseEf         Zu G d߄ ded          Zv	 dddddddddddZwddddddddZx	 ddddddddddZy G d ded          ZzdddddddddddZ{ G d ded          Z|	 dddddddddddZ} G d ded          Z~	 dddddddddd dZ G d ded          Z	 dddddddd!dZeeeef                  Z G d ded          Zdddڜd"dZeeeEf         Z G d d ed          Z	 	 dddddddddd#dZeegef         Z G d de          Zeee+e         gef         Z G d ded          Zeeef         Z G d d	ed          Z G d
 ded          Zdddddd$dZddddddd%dZ G d ded          Zdddddd&dZdddddd'dZ G d de          Zeeegef         Z G d de          Zeeee+e         gef         Z G d ded          Zeeef         Z G d d ed          Zdddddd(d"Zdddddd#d)d%Z G d& d'ed          Zdddddd*d(Zddddddd+d)Z G d* d+ed          Ze!ddddddddd,	d,d4Z G d5 d6ed          Zdddddd-d7Z G d8 d9ed          Zddddddddd:d.dDZ G dE dFed          ZdddddddddGd/dMZ G dN dOed          Zdddd`d0dQZ G dR dSed          Zdddddd1dVZ G dW dXed          Zdddd`d2d[Z G d\ d]ed          Zddddddd^d3ddZ G de dfed          Zddddddddddddgd4dsZ G dt dued          Zdddddddvd5dxZ G dy dzed          Zddddddddddd{
d6dZ G d ded          Zdddddddddddddd7dZ G d ded          Zdddddddddd	d8dZ G d ded          Zdddddddd9dZ G d ded          Zddddddddddddd:dZ G d ded          Zdddd;dZed         Zde'd<    G d ded          Zdddddddddd<dZ G d ded          Zdddd=dZ G d ded          Zdddddddd>dZ G d ded          Zddddddd?dZ G d ded          ZddddddĜd@dńZ G dƄ ded          Z	 ddddd`dAdȄZ G dɄ ded          Zdddddddddddd˜dBdӄZ G dԄ ded          Zdddddddddddd˜dCdքZ G dׄ ded          ZԐdDdڄZ G dۄ ded          Z	 	 	 dEdFdބZdZesreg eFeJeLeNePeReTeXeZe\e^e`ebedehefekemeoeveze|e~eeeeeeeeeeeeeeeeeeeđeȑeʑȇeΑeБeґeԑe֑eqeVR          Zn	 ed         Zed         Zed         ZܐdGdZݐdHdZ ed          dId            Z ed          d             Z ed          dId            Z ed          d             Z ed          dJd            Z ed          d             Z ed          dKd            Z ed          d             Ze+eeedZere+ZdLdZdS (M  ze
This module contains definitions to build schemas which `pydantic_core` can
validate and serialize.
    )annotationsN)	GeneratorHashableMapping)datedatetimetime	timedelta)Decimal)Pattern)TYPE_CHECKINGAnyCallableLiteralUnion)TypeVar
deprecated)      )	TypedDict)r      )ProtocolRequired	TypeAlias)PydanticUndefined)allowforbidignorec                  6   e Zd ZU dZded<   ded<   ded<   ded<   ded	<   ded
<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded <   d!ed"<   d#ed$<   ded%<   ded&<   ded'<   ded(<   ded)<   d*S )+
CoreConfigau  
    Base class for schema configuration options.

    Attributes:
        title: The name of the configuration.
        strict: Whether the configuration should strictly adhere to specified rules.
        extra_fields_behavior: The behavior for handling extra fields.
        typed_dict_total: Whether the TypedDict should be considered total. Default is `True`.
        from_attributes: Whether to use attributes for models, dataclasses, and tagged union keys.
        loc_by_alias: Whether to use the used alias (or first alias for "field required" errors) instead of
            `field_names` to construct error `loc`s. Default is `True`.
        revalidate_instances: Whether instances of models and dataclasses should re-validate. Default is 'never'.
        validate_default: Whether to validate default values during validation. Default is `False`.
        str_max_length: The maximum length for string fields.
        str_min_length: The minimum length for string fields.
        str_strip_whitespace: Whether to strip whitespace from string fields.
        str_to_lower: Whether to convert string fields to lowercase.
        str_to_upper: Whether to convert string fields to uppercase.
        allow_inf_nan: Whether to allow infinity and NaN values for float fields. Default is `True`.
        ser_json_timedelta: The serialization option for `timedelta` values. Default is 'iso8601'.
            Note that if ser_json_temporal is set, then this param will be ignored.
        ser_json_temporal: The serialization option for datetime like values. Default is 'iso8601'.
            The types this covers are datetime, date, time and timedelta.
            If this is set, it will take precedence over ser_json_timedelta
        ser_json_bytes: The serialization option for `bytes` values. Default is 'utf8'.
        ser_json_inf_nan: The serialization option for infinity and NaN values
            in float fields. Default is 'null'.
        val_json_bytes: The validation option for `bytes` values, complementing ser_json_bytes. Default is 'utf8'.
        hide_input_in_errors: Whether to hide input data from `ValidationError` representation.
        validation_error_cause: Whether to add user-python excs to the __cause__ of a ValidationError.
            Requires exceptiongroup backport pre Python 3.11.
        coerce_numbers_to_str: Whether to enable coercion of any `Number` type to `str` (not applicable in `strict` mode).
        regex_engine: The regex engine to use for regex pattern validation. Default is 'rust-regex'. See `StringSchema`.
        cache_strings: Whether to cache strings. Default is `True`, `True` or `'all'` is required to cache strings
            during general validation since validators don't know if they're in a key or a value.
        validate_by_alias: Whether to use the field's alias when validating against the provided input data. Default is `True`.
        validate_by_name: Whether to use the field's name when validating against the provided input data. Default is `False`. Replacement for `populate_by_name`.
        serialize_by_alias: Whether to serialize by alias. Default is `False`, expected to change to `True` in V3.
        polymorphic_serialization: Whether to enable polymorphic serialization for models and dataclasses. Default is `False`.
        url_preserve_empty_path: Whether to preserve empty URL paths when validating values for a URL type. Defaults to `False`.
    strtitleboolstrictExtraBehaviorextra_fields_behaviortyped_dict_totalfrom_attributesloc_by_alias0Literal['always', 'never', 'subclass-instances']revalidate_instancesvalidate_defaultintstr_max_lengthstr_min_lengthstr_strip_whitespacestr_to_lowerstr_to_upperallow_inf_nanzLiteral['iso8601', 'float']ser_json_timedeltaz-Literal['iso8601', 'seconds', 'milliseconds']ser_json_temporalz Literal['utf8', 'base64', 'hex']ser_json_bytesz'Literal['null', 'constants', 'strings']ser_json_inf_nanval_json_byteshide_input_in_errorsvalidation_error_causecoerce_numbers_to_str"Literal['rust-regex', 'python-re']regex_enginez+Union[bool, Literal['all', 'keys', 'none']]cache_stringsvalidate_by_aliasvalidate_by_nameserialize_by_aliaspolymorphic_serializationurl_preserve_empty_pathN)__name__
__module____qualname____doc____annotations__     mC:\Users\Terasoftware\OneDrive\Desktop\faahhh\fyndo\fyndo\venv\Lib\site-packages\pydantic_core/core_schema.pyr    r    +   sy        ( (T JJJLLL(((( JJJJ 3333DDDD4444====4444    4444>>>>####!!!!!!rJ   r    F)totalz2set[int | str] | dict[int | str, IncExCall] | Noner   	IncExCallContextTTz
Any | None)	covariantdefaultc                  J   e Zd ZdZedd            Zedd            Zedd            Zedd	            Zedd            Z	edd            Z
edd            Zedd            Zedd            Zedd            Zedd            Zedd            ZddZddZddZdS )SerializationInfoz%Extra data used during serialization.returnrM   c                    dS )z0The `include` argument set during serialization.NrI   selfs    rK   includezSerializationInfo.include   	     	rJ   c                    dS )z0The `exclude` argument set during serialization.NrI   rU   s    rK   excludezSerializationInfo.exclude   rX   rJ   rN   c                    dS )z"The current serialization context.NrI   rU   s    rK   contextzSerializationInfo.context   rX   rJ   Literal['python', 'json'] | strc                    dS )z0The serialization mode set during serialization.NrI   rU   s    rK   modezSerializationInfo.mode   rX   rJ   r#   c                    dS )z1The `by_alias` argument set during serialization.NrI   rU   s    rK   by_aliaszSerializationInfo.by_alias   rX   rJ   c                    dS )z6The `exclude_unset` argument set during serialization.NrI   rU   s    rK   exclude_unsetzSerializationInfo.exclude_unset   rX   rJ   c                    dS )z9The `exclude_defaults` argument set during serialization.NrI   rU   s    rK   exclude_defaultsz"SerializationInfo.exclude_defaults   rX   rJ   c                    dS )z5The `exclude_none` argument set during serialization.NrI   rU   s    rK   exclude_nonezSerializationInfo.exclude_none   rX   rJ   c                    dS )z@The `exclude_computed_fields` argument set during serialization.NrI   rU   s    rK   exclude_computed_fieldsz)SerializationInfo.exclude_computed_fields   rX   rJ   c                    dS )z9The `serialize_as_any` argument set during serialization.NrI   rU   s    rK   serialize_as_anyz"SerializationInfo.serialize_as_any   rX   rJ   bool | Nonec                    dS )zJThe `polymorphic_serialization` argument set during serialization, if any.NrI   rU   s    rK   rB   z+SerializationInfo.polymorphic_serialization   rX   rJ   c                    dS )z3The `round_trip` argument set during serialization.NrI   rU   s    rK   
round_tripzSerializationInfo.round_trip   rX   rJ   c                    d S NrI   rU   s    rK   mode_is_jsonzSerializationInfo.mode_is_json         rJ   r!   c                    d S rq   rI   rU   s    rK   __str__zSerializationInfo.__str__   rs   rJ   c                    d S rq   rI   rU   s    rK   __repr__zSerializationInfo.__repr__   rs   rJ   N)rS   rM   rS   rN   )rS   r]   )rS   r#   )rS   rl   rS   r!   )rD   rE   rF   rG   propertyrW   rZ   r\   r_   ra   rc   re   rg   ri   rk   rB   ro   rr   ru   rw   rI   rJ   rK   rR   rR      s       //   X    X    X    X    X    X    X    X    X    X    X    X ('''!!!!""""""rJ   rR   c                  *    e Zd ZdZedd            ZdS )FieldSerializationInfoz+Extra data used during field serialization.rS   r!   c                    dS )z/The name of the current field being serialized.NrI   rU   s    rK   
field_namez!FieldSerializationInfo.field_name   rX   rJ   Nry   )rD   rE   rF   rG   rz   r~   rI   rJ   rK   r|   r|      s8        55   X  rJ   r|   c                      e Zd ZdZedd            Zedd            Zedd            Zedd
            Zedd            Z	dS )ValidationInfoz"Extra data used during validation.rS   rN   c                    dS )zThe current validation context.NrI   rU   s    rK   r\   zValidationInfo.context   rX   rJ   CoreConfig | Nonec                    dS )z/The CoreConfig that applies to this validation.NrI   rU   s    rK   configzValidationInfo.config   rX   rJ   Literal['python', 'json']c                    dS )z3The type of input data we are currently validating.NrI   rU   s    rK   r_   zValidationInfo.mode   rX   rJ   dict[str, Any]c                    dS )z(The data being validated for this model.NrI   rU   s    rK   datazValidationInfo.data   rX   rJ   
str | Nonec                    dS )zw
        The name of the current field being validated if this validator is
        attached to a model field.
        NrI   rU   s    rK   r~   zValidationInfo.field_name   s	     	rJ   Nrx   )rS   r   )rS   r   )rS   r   )rS   r   )
rD   rE   rF   rG   rz   r\   r   r_   r   r~   rI   rJ   rK   r   r      s        ,,   X    X    X    X    X  rJ   r   )noner-   r#   floatr!   bytes	bytearraylisttupleset	frozenset	generatordictr   r   r	   r
   urlmulti-host-urljsonuuidanyc                      e Zd ZU ded<   dS )SimpleSerSchemaz$Required[ExpectedSerializationTypes]typeNrD   rE   rF   rH   rI   rJ   rK   r   r     s         ......rJ   r   r   ExpectedSerializationTypesrS   c                "    t          |           S )z{
    Returns a schema for serialization with a custom type.

    Args:
        type: The type to use for serialization
    r   )r   r   s    rK   simple_ser_schemar     s     %%%%rJ   )alwayszunless-noner   json-unless-nonec                  L    e Zd ZU ded<   ded<   ded<   ded<   ded	<   d
ed<   dS ) PlainSerializerFunctionSerSchema#Required[Literal['function-plain']]r   zRequired[SerializerFunction]functionr#   is_field_serializerinfo_arg
CoreSchemareturn_schemaWhenUsed	when_usedNr   rI   rJ   rK   r   r   6  sW         ----****NNNrJ   r   r   )r   r   r   r   r   SerializerFunctionr   rl   r   r   CoreSchema | Noner   r   c               <    |dk    rd}t          d| ||||          S )a  
    Returns a schema for serialization with a function, can be either a "general" or "field" function.

    Args:
        function: The function to use for serialization
        is_field_serializer: Whether the serializer is for a field, e.g. takes `model` as the first argument,
            and `info` includes `field_name`
        info_arg: Whether the function takes an `info` argument
        return_schema: Schema to use for serializing return value
        when_used: When the function should be called
    r   Nfunction-plain)r   r   r   r   r   r   _dict_not_none)r   r   r   r   r   s        rK   $plain_serializer_function_ser_schemar   ?  s?    & H 	/#   rJ   c                      e Zd Zdd	dZdS )
SerializerFunctionWrapHandlerNinput_valuer   	index_keyint | str | NonerS   c                   d S rq   rI   )rV   r   r   s      rK   __call__z&SerializerFunctionWrapHandler.__call__`  rs   rJ   rq   )r   r   r   r   rS   r   rD   rE   rF   r   rI   rJ   rK   r   r   _  s        [[[[[[[rJ   r   c                  V    e Zd ZU ded<   ded<   ded<   ded<   ded	<   ded
<   ded<   dS )WrapSerializerFunctionSerSchema"Required[Literal['function-wrap']]r   z Required[WrapSerializerFunction]r   r#   r   r   r   schemar   r   r   Nr   rI   rJ   rK   r   r   s  sc         ,,,,....NNNrJ   r   )r   r   r   r   r   WrapSerializerFunctionr   c          	     >    |dk    rd}t          d| |||||          S )aE  
    Returns a schema for serialization with a wrap function, can be either a "general" or "field" function.

    Args:
        function: The function to use for serialization
        is_field_serializer: Whether the serializer is for a field, e.g. takes `model` as the first argument,
            and `info` includes `field_name`
        info_arg: Whether the function takes an `info` argument
        schema: The schema to use for the inner serialization
        return_schema: Schema to use for serializing return value
        when_used: When the function should be called
    r   Nfunction-wrap)r   r   r   r   r   r   r   r   )r   r   r   r   r   r   s         rK   #wrap_serializer_function_ser_schemar   }  sB    * H 	/#   rJ   c                  .    e Zd ZU ded<   ded<   ded<   dS )FormatSerSchemazRequired[Literal['format']]r   Required[str]formatting_stringr   r   Nr   rI   rJ   rK   r   r     s6         %%%%$$$$rJ   r   r   )r   r   r!   c               6    |dk    rd}t          d| |          S )z
    Returns a schema for serialization using python's `format` method.

    Args:
        formatting_string: String defining the format to use
        when_used: Same meaning as for [general_function_plain_ser_schema], but with a different default
    r   Nformat)r   r   r   r   )r   r   s     rK   format_ser_schemar     s.     && 	x;LXabbbbrJ   c                  $    e Zd ZU ded<   ded<   dS )ToStringSerSchemazRequired[Literal['to-string']]r   r   r   Nr   rI   rJ   rK   r   r     s*         ((((rJ   r   c                <    t          d          }| dk    r| |d<   |S )z
    Returns a schema for serialization using python's `str()` / `__str__` method.

    Args:
        when_used: Same meaning as for [general_function_plain_ser_schema], but with a different default
    z	to-stringr   r   r   )r   )r   ss     rK   to_string_ser_schemar     s0     	+A&& #"+HrJ   c                  .    e Zd ZU ded<   ded<   ded<   dS )ModelSerSchemaRequired[Literal['model']]r   Required[type[Any]]clsRequired[CoreSchema]r   Nr   rI   rJ   rK   r   r     s6         $$$$      rJ   r   r   	type[Any]r   c                &    t          d| |          S )z
    Returns a schema for serialization using a model.

    Args:
        cls: The expected class type, used to generate warnings if the wrong type is passed
        schema: Internal schema to use to serialize the model dict
    model)r   r   r   )r   )r   r   s     rK   model_ser_schemar     s     wC????rJ   c                  8    e Zd ZU ded<   ded<   ded<   ded<   d	S )
InvalidSchemazRequired[Literal['invalid']]r   r!   refr   metadata	SerSchemaserializationNr   rI   rJ   rK   r   r     sA         &&&&HHH rJ   r   r   r   r   dict[str, Any] | Nonec                &    t          d| |          S )a%  
    Returns an invalid schema, used to indicate that a schema is invalid.

    Args:
        ref: optional unique identifier of the schema, used to reference the schema in other places
        metadata: Any other information you want to include with the schema, not used by pydantic-core
    invalid)r   r   r   r   )r   r   s     rK   invalid_schemar     s     ycHEEEErJ   c                  L    e Zd ZU ded<   ded<   ded<   ded<   d	ed
<   ded<   dS )ComputedFieldz#Required[Literal['computed-field']]r   r   property_namer   r   r!   aliasCallable[[Any], bool]serialization_exclude_ifr   r   Nr   rI   rJ   rK   r   r     sW         ----    ''''JJJ3333rJ   r   )r   r   r   r   r   r   Callable[[Any], bool] | Nonec               ,    t          d| ||||          S )a  
    ComputedFields are properties of a model or dataclass that are included in serialization.

    Args:
        property_name: The name of the property on the model or dataclass
        return_schema: The schema used for the type returned by the computed field
        alias: The name to use in the serialized output
        metadata: Any other information you want to include with the schema, not used by pydantic-core
    computed-field)r   r   r   r   r   r   r   )r   r   r   r   r   s        rK   computed_fieldr      s-    " ##!9   rJ   c                  8    e Zd ZU ded<   ded<   ded<   ded<   d	S )
	AnySchemazRequired[Literal['any']]r   r!   r   r   r   r   r   Nr   rI   rJ   rK   r   r     s?         """"HHHrJ   r   r   r   r   r   SerSchema | Nonec                (    t          d| ||          S )a  
    Returns a schema that matches any value, e.g.:

    ```py
    from pydantic_core import SchemaValidator, core_schema

    schema = core_schema.any_schema()
    v = SchemaValidator(schema)
    assert v.validate_python(1) == 1
    ```

    Args:
        ref: optional unique identifier of the schema, used to reference the schema in other places
        metadata: Any other information you want to include with the schema, not used by pydantic-core
        serialization: Custom serialization schema
    r   r   r   r   r   r   r   s      rK   
any_schemar   "  s    & u#P]^^^^rJ   c                  8    e Zd ZU ded<   ded<   ded<   ded<   d	S )

NoneSchemazRequired[Literal['none']]r   r!   r   r   r   r   r   Nr   rI   rJ   rK   r   r   8  s?         ####HHHrJ   r   c                (    t          d| ||          S )a  
    Returns a schema that matches a None value, e.g.:

    ```py
    from pydantic_core import SchemaValidator, core_schema

    schema = core_schema.none_schema()
    v = SchemaValidator(schema)
    assert v.validate_python(None) is None
    ```

    Args:
        ref: optional unique identifier of the schema, used to reference the schema in other places
        metadata: Any other information you want to include with the schema, not used by pydantic-core
        serialization: Custom serialization schema
    r   r   r   r   s      rK   none_schemar   ?  s    & v3Q^____rJ   c                  B    e Zd ZU ded<   ded<   ded<   ded<   d	ed
<   dS )
BoolSchemazRequired[Literal['bool']]r   r#   r$   r!   r   r   r   r   r   Nr   rI   rJ   rK   r   r   U  sH         ####LLLHHHrJ   r   r$   c                *    t          d| |||          S )ae  
    Returns a schema that matches a bool value, e.g.:

    ```py
    from pydantic_core import SchemaValidator, core_schema

    schema = core_schema.bool_schema()
    v = SchemaValidator(schema)
    assert v.validate_python('True') is True
    ```

    Args:
        strict: Whether the value should be a bool or a value that can be converted to a bool
        ref: optional unique identifier of the schema, used to reference the schema in other places
        metadata: Any other information you want to include with the schema, not used by pydantic-core
        serialization: Custom serialization schema
    r#   r   r$   r   r   r   r   r$   r   r   r   s       rK   bool_schemar   ]  s    . vf#`mnnnnrJ   c                  t    e Zd ZU ded<   ded<   ded<   ded<   ded<   ded<   d	ed
<   ded<   ded<   ded<   dS )	IntSchemazRequired[Literal['int']]r   r-   multiple_oflegeltgtr#   r$   r!   r   r   r   r   r   Nr   rI   rJ   rK   r  r  w  sx         """"GGGGGGGGGGGGLLLHHHrJ   r  	r  r  r  r  r  r$   r   r   r   r  
int | Noner  r  r  r  c        	        4    t          d| ||||||||
  
        S )a  
    Returns a schema that matches a int value, e.g.:

    ```py
    from pydantic_core import SchemaValidator, core_schema

    schema = core_schema.int_schema(multiple_of=2, le=6, ge=2)
    v = SchemaValidator(schema)
    assert v.validate_python('4') == 4
    ```

    Args:
        multiple_of: The value must be a multiple of this number
        le: The value must be less than or equal to this number
        ge: The value must be greater than or equal to this number
        lt: The value must be strictly less than this number
        gt: The value must be strictly greater than this number
        strict: Whether the value should be a int or a value that can be converted to a int
        ref: optional unique identifier of the schema, used to reference the schema in other places
        metadata: Any other information you want to include with the schema, not used by pydantic-core
        serialization: Custom serialization schema
    r-   )
r   r  r  r  r  r  r$   r   r   r   r   r  s	            rK   
int_schemar    s:    D #   rJ   c                  ~    e Zd ZU ded<   ded<   ded<   ded<   ded<   ded	<   ded
<   ded<   ded<   ded<   ded<   dS )FloatSchemazRequired[Literal['float']]r   r#   r3   r   r  r  r  r  r  r$   r!   r   r   r   r   r   Nr   rI   rJ   rK   r  r    s         $$$$IIIIIIIIIIIILLLHHHrJ   r  
r3   r  r  r  r  r  r$   r   r   r   r3   float | Nonec        
        6    t          d| |||||||||	          S )a  
    Returns a schema that matches a float value, e.g.:

    ```py
    from pydantic_core import SchemaValidator, core_schema

    schema = core_schema.float_schema(le=0.8, ge=0.2)
    v = SchemaValidator(schema)
    assert v.validate_python('0.5') == 0.5
    ```

    Args:
        allow_inf_nan: Whether to allow inf and nan values
        multiple_of: The value must be a multiple of this number
        le: The value must be less than or equal to this number
        ge: The value must be greater than or equal to this number
        lt: The value must be strictly less than this number
        gt: The value must be strictly greater than this number
        strict: Whether the value should be a float or a value that can be converted to a float
        ref: optional unique identifier of the schema, used to reference the schema in other places
        metadata: Any other information you want to include with the schema, not used by pydantic-core
        serialization: Custom serialization schema
    r   )r   r3   r  r  r  r  r  r$   r   r   r   r   r  s
             rK   float_schemar    s=    H ##   rJ   c                      e Zd ZU ded<   ded<   ded<   ded<   ded<   ded	<   ded
<   ded<   ded<   ded<   ded<   ded<   ded<   dS )DecimalSchemazRequired[Literal['decimal']]r   r#   r3   r   r  r  r  r  r  r-   
max_digitsdecimal_placesr$   r!   r   r   r   r   r   Nr   rI   rJ   rK   r  r    s         &&&&KKKKKKKKKKKKOOOLLLHHHrJ   r  r3   r  r  r  r  r  r  r  r$   r   r   r   Decimal | Noner  r  c                :    t          d|||||||| ||	|
|          S )a  
    Returns a schema that matches a decimal value, e.g.:

    ```py
    from decimal import Decimal
    from pydantic_core import SchemaValidator, core_schema

    schema = core_schema.decimal_schema(le=0.8, ge=0.2)
    v = SchemaValidator(schema)
    assert v.validate_python('0.5') == Decimal('0.5')
    ```

    Args:
        allow_inf_nan: Whether to allow inf and nan values
        multiple_of: The value must be a multiple of this number
        le: The value must be less than or equal to this number
        ge: The value must be greater than or equal to this number
        lt: The value must be strictly less than this number
        gt: The value must be strictly greater than this number
        max_digits: The maximum number of decimal digits allowed
        decimal_places: The maximum number of decimal places allowed
        strict: Whether the value should be a float or a value that can be converted to a float
        ref: optional unique identifier of the schema, used to reference the schema in other places
        metadata: Any other information you want to include with the schema, not used by pydantic-core
        serialization: Custom serialization schema
    decimal)r   r  r  r  r  r  r  r  r3   r$   r   r   r   r   r  s               rK   decimal_schemar    sC    R %##   rJ   c                  B    e Zd ZU ded<   ded<   ded<   ded<   d	ed
<   dS )ComplexSchemazRequired[Literal['complex']]r   r#   r$   r!   r   r   r   r   r   Nr   rI   rJ   rK   r  r  ?  sH         &&&&LLLHHHrJ   r  r   c                *    t          d| |||          S )a  
    Returns a schema that matches a complex value, e.g.:

    ```py
    from pydantic_core import SchemaValidator, core_schema

    schema = core_schema.complex_schema()
    v = SchemaValidator(schema)
    assert v.validate_python('1+2j') == complex(1, 2)
    assert v.validate_python(complex(1, 2)) == complex(1, 2)
    ```

    Args:
        strict: Whether the value should be a complex object instance or a value that can be converted to a complex object
        ref: optional unique identifier of the schema, used to reference the schema in other places
        metadata: Any other information you want to include with the schema, not used by pydantic-core
        serialization: Custom serialization schema
    complexr   r   r   s       rK   complex_schemar  G  s*    2 #   rJ   c                      e Zd ZU ded<   ded<   ded<   ded<   ded	<   ded
<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   dS )StringSchemazRequired[Literal['str']]r   zUnion[str, Pattern[str]]patternr-   
max_length
min_lengthr#   strip_whitespaceto_lowerto_upperr<   r=   r$   r;   r!   r   r   r   r   r   Nr   rI   rJ   rK   r!  r!  i  s         """"%%%%OOOOOONNNNNN4444LLLHHHrJ   r!  r"  r#  r$  r%  r&  r'  r=   r$   r;   r   r   r   r"  str | Pattern[str] | Noner#  r$  r%  r&  r'  r=   )Literal['rust-regex', 'python-re'] | Noner;   c                :    t          d| |||||||||	|
|          S )aC  
    Returns a schema that matches a string value, e.g.:

    ```py
    from pydantic_core import SchemaValidator, core_schema

    schema = core_schema.str_schema(max_length=10, min_length=2)
    v = SchemaValidator(schema)
    assert v.validate_python('hello') == 'hello'
    ```

    Args:
        pattern: A regex pattern that the value must match
        max_length: The value must be at most this length
        min_length: The value must be at least this length
        strip_whitespace: Whether to strip whitespace from the value
        to_lower: Whether to convert the value to lowercase
        to_upper: Whether to convert the value to uppercase
        regex_engine: The regex engine to use for pattern validation. Default is 'rust-regex'.
            - `rust-regex` uses the [`regex`](https://docs.rs/regex) Rust
              crate, which is non-backtracking and therefore more DDoS
              resistant, but does not support all regex features.
            - `python-re` use the [`re`](https://docs.python.org/3/library/re.html) module,
              which supports all regex features, but may be slower.
        strict: Whether the value should be a string or a value that can be converted to a string
        coerce_numbers_to_str: Whether to enable coercion of any `Number` type to `str` (not applicable in `strict` mode).
        ref: optional unique identifier of the schema, used to reference the schema in other places
        metadata: Any other information you want to include with the schema, not used by pydantic-core
        serialization: Custom serialization schema
    r!   )r   r"  r#  r$  r%  r&  r'  r=   r$   r;   r   r   r   r   r(  s               rK   
str_schemar,  y  sC    Z )!3#   rJ   c                  V    e Zd ZU ded<   ded<   ded<   ded<   ded	<   d
ed<   ded<   dS )BytesSchemazRequired[Literal['bytes']]r   r-   r#  r$  r#   r$   r!   r   r   r   r   r   Nr   rI   rJ   rK   r.  r.    sZ         $$$$OOOOOOLLLHHHrJ   r.  r#  r$  r$   r   r   r   c           	     .    t          d| |||||          S )a  
    Returns a schema that matches a bytes value, e.g.:

    ```py
    from pydantic_core import SchemaValidator, core_schema

    schema = core_schema.bytes_schema(max_length=10, min_length=2)
    v = SchemaValidator(schema)
    assert v.validate_python(b'hello') == b'hello'
    ```

    Args:
        max_length: The value must be at most this length
        min_length: The value must be at least this length
        strict: Whether the value should be a bytes or a value that can be converted to a bytes
        ref: optional unique identifier of the schema, used to reference the schema in other places
        metadata: Any other information you want to include with the schema, not used by pydantic-core
        serialization: Custom serialization schema
    r   )r   r#  r$  r$   r   r   r   r   r/  s         rK   bytes_schemar1    s0    8 #   rJ   c                  ~    e Zd ZU ded<   ded<   ded<   ded<   ded<   ded	<   d
ed<   ded<   ded<   ded<   ded<   dS )
DateSchemazRequired[Literal['date']]r   r#   r$   r   r  r  r  r  Literal['past', 'future']now_opr-   now_utc_offsetr!   r   r   r   r   r   Nr   rI   rJ   rK   r3  r3    s         ####LLLHHHHHHHHHHHH%%%% HHHrJ   r3  
r$   r  r  r  r  r5  r6  r   r   r   date | Noner5   Literal['past', 'future'] | Noner6  c        
        6    t          d| |||||||||	          S )a  
    Returns a schema that matches a date value, e.g.:

    ```py
    from datetime import date
    from pydantic_core import SchemaValidator, core_schema

    schema = core_schema.date_schema(le=date(2020, 1, 1), ge=date(2019, 1, 1))
    v = SchemaValidator(schema)
    assert v.validate_python(date(2019, 6, 1)) == date(2019, 6, 1)
    ```

    Args:
        strict: Whether the value should be a date or a value that can be converted to a date
        le: The value must be less than or equal to this date
        ge: The value must be greater than or equal to this date
        lt: The value must be strictly less than this date
        gt: The value must be strictly greater than this date
        now_op: The value must be in the past or future relative to the current date
        now_utc_offset: The value must be in the past or future relative to the current date with this utc offset
        ref: optional unique identifier of the schema, used to reference the schema in other places
        metadata: Any other information you want to include with the schema, not used by pydantic-core
        serialization: Custom serialization schema
    r   )r   r$   r  r  r  r  r5  r6  r   r   r   r   r7  s
             rK   date_schemar;    s=    J %#   rJ   c                  ~    e Zd ZU ded<   ded<   ded<   ded<   ded<   ded	<   d
ed<   ded<   ded<   ded<   ded<   dS )
TimeSchemazRequired[Literal['time']]r   r#   r$   r	   r  r  r  r  %Union[Literal['aware', 'naive'], int]tz_constraintLiteral['truncate', 'error']microseconds_precisionr!   r   r   r   r   r   Nr   rI   rJ   rK   r=  r=  ,  s         ####LLLHHHHHHHHHHHH88888888HHHrJ   r=  truncate
r$   r  r  r  r  r?  rA  r   r   r   time | Noner?  &Literal['aware', 'naive'] | int | NonerA  r@  c        
        6    t          d| |||||||||	          S )a  
    Returns a schema that matches a time value, e.g.:

    ```py
    from datetime import time
    from pydantic_core import SchemaValidator, core_schema

    schema = core_schema.time_schema(le=time(12, 0, 0), ge=time(6, 0, 0))
    v = SchemaValidator(schema)
    assert v.validate_python(time(9, 0, 0)) == time(9, 0, 0)
    ```

    Args:
        strict: Whether the value should be a time or a value that can be converted to a time
        le: The value must be less than or equal to this time
        ge: The value must be greater than or equal to this time
        lt: The value must be strictly less than this time
        gt: The value must be strictly greater than this time
        tz_constraint: The value must be timezone aware or naive, or an int to indicate required tz offset
        microseconds_precision: The behavior when seconds have more than 6 digits or microseconds is too large
        ref: optional unique identifier of the schema, used to reference the schema in other places
        metadata: Any other information you want to include with the schema, not used by pydantic-core
        serialization: Custom serialization schema
    r	   )r   r$   r  r  r  r  r?  rA  r   r   r   r   rC  s
             rK   time_schemarG  :  s=    J #5#   rJ   c                      e Zd ZU ded<   ded<   ded<   ded<   ded<   ded	<   d
ed<   ded<   ded<   ded<   ded<   ded<   ded<   dS )DatetimeSchemazRequired[Literal['datetime']]r   r#   r$   r   r  r  r  r  r4  r5  r>  r?  r-   r6  r@  rA  r!   r   r   r   r   r   Nr   rI   rJ   rK   rI  rI  n  s         ''''LLLLLLLLLLLLLLL%%%%8888 8888HHHrJ   rI  r$   r  r  r  r  r5  r?  r6  rA  r   r   r   datetime | Nonec                :    t          d| |||||||||	|
|          S )a  
    Returns a schema that matches a datetime value, e.g.:

    ```py
    from datetime import datetime
    from pydantic_core import SchemaValidator, core_schema

    schema = core_schema.datetime_schema()
    v = SchemaValidator(schema)
    now = datetime.now()
    assert v.validate_python(str(now)) == now
    ```

    Args:
        strict: Whether the value should be a datetime or a value that can be converted to a datetime
        le: The value must be less than or equal to this datetime
        ge: The value must be greater than or equal to this datetime
        lt: The value must be strictly less than this datetime
        gt: The value must be strictly greater than this datetime
        now_op: The value must be in the past or future relative to the current datetime
        tz_constraint: The value must be timezone aware or naive, or an int to indicate required tz offset
            TODO: use of a tzinfo where offset changes based on the datetime is not yet supported
        now_utc_offset: The value must be in the past or future relative to the current datetime with this utc offset
        microseconds_precision: The behavior when seconds have more than 6 digits or microseconds is too large
        ref: optional unique identifier of the schema, used to reference the schema in other places
        metadata: Any other information you want to include with the schema, not used by pydantic-core
        serialization: Custom serialization schema
    r   )r   r$   r  r  r  r  r5  r?  r6  rA  r   r   r   r   rJ  s               rK   datetime_schemarM    sC    V #%5#   rJ   c                  t    e Zd ZU ded<   ded<   ded<   ded<   ded<   ded	<   d
ed<   ded<   ded<   ded<   dS )TimedeltaSchemazRequired[Literal['timedelta']]r   r#   r$   r
   r  r  r  r  r@  rA  r!   r   r   r   r   r   Nr   rI   rJ   rK   rO  rO    sx         ((((LLLMMMMMMMMMMMM8888HHHrJ   rO  	r$   r  r  r  r  rA  r   r   r   timedelta | Nonec        	        4    t          d| ||||||||
  
        S )a]  
    Returns a schema that matches a timedelta value, e.g.:

    ```py
    from datetime import timedelta
    from pydantic_core import SchemaValidator, core_schema

    schema = core_schema.timedelta_schema(le=timedelta(days=1), ge=timedelta(days=0))
    v = SchemaValidator(schema)
    assert v.validate_python(timedelta(hours=12)) == timedelta(hours=12)
    ```

    Args:
        strict: Whether the value should be a timedelta or a value that can be converted to a timedelta
        le: The value must be less than or equal to this timedelta
        ge: The value must be greater than or equal to this timedelta
        lt: The value must be strictly less than this timedelta
        gt: The value must be strictly greater than this timedelta
        microseconds_precision: The behavior when seconds have more than 6 digits or microseconds is too large
        ref: optional unique identifier of the schema, used to reference the schema in other places
        metadata: Any other information you want to include with the schema, not used by pydantic-core
        serialization: Custom serialization schema
    r
   )
r   r$   r  r  r  r  rA  r   r   r   r   rP  s	            rK   timedelta_schemarS    s:    F 5#   rJ   c                  B    e Zd ZU ded<   ded<   ded<   ded<   d	ed
<   dS )LiteralSchemazRequired[Literal['literal']]r   Required[list[Any]]expectedr!   r   r   r   r   r   Nr   rI   rJ   rK   rU  rU    sK         &&&&!!!!HHHrJ   rU  rW  	list[Any]c               *    t          d| |||          S )a[  
    Returns a schema that matches a literal value, e.g.:

    ```py
    from pydantic_core import SchemaValidator, core_schema

    schema = core_schema.literal_schema(['hello', 'world'])
    v = SchemaValidator(schema)
    assert v.validate_python('hello') == 'hello'
    ```

    Args:
        expected: The value must be one of these values
        ref: optional unique identifier of the schema, used to reference the schema in other places
        metadata: Any other information you want to include with the schema, not used by pydantic-core
        serialization: Custom serialization schema
    literal)r   rW  r   r   r   r   )rW  r   r   r   s       rK   literal_schemar[    s    0 y8xgtuuuurJ   c                  j    e Zd ZU ded<   ded<   ded<   ded<   d	ed
<   ded<   ded<   ded<   ded<   dS )
EnumSchemazRequired[Literal['enum']]r   Required[Any]r   rV  memberszLiteral['str', 'int', 'float']sub_typezCallable[[Any], Any]missingr#   r$   r!   r   r   r   r   r   Nr   rI   rJ   rK   r]  r]    sx         ####    ,,,,!!!!LLLHHHrJ   r]  )r`  ra  r$   r   r   r   r   r_  r`  %Literal['str', 'int', 'float'] | Nonera  Callable[[Any], Any] | Nonec               2    t          d| |||||||	  	        S )a  
    Returns a schema that matches an enum value, e.g.:

    ```py
    from enum import Enum
    from pydantic_core import SchemaValidator, core_schema

    class Color(Enum):
        RED = 1
        GREEN = 2
        BLUE = 3

    schema = core_schema.enum_schema(Color, list(Color.__members__.values()))
    v = SchemaValidator(schema)
    assert v.validate_python(2) is Color.GREEN
    ```

    Args:
        cls: The enum class
        members: The members of the enum, generally `list(MyEnum.__members__.values())`
        sub_type: The type of the enum, either 'str' or 'int' or None for plain enums
        missing: A function to use when the value is not found in the enum, from `_missing_`
        strict: Whether to use strict mode, defaults to False
        ref: optional unique identifier of the schema, used to reference the schema in other places
        metadata: Any other information you want to include with the schema, not used by pydantic-core
        serialization: Custom serialization schema
    enum)	r   r   r_  r`  ra  r$   r   r   r   r   )r   r_  r`  ra  r$   r   r   r   s           rK   enum_schemarf  )  s7    L #
 
 
 
rJ   c                  .    e Zd ZU ded<   ded<   ded<   dS )MissingSentinelSchemaz%Required[Literal['missing-sentinel']]r   r   r   r   r   Nr   rI   rJ   rK   rh  rh  \  s6         ////rJ   rh  c                &    t          d| |          S )z,Returns a schema for the `MISSING` sentinel.missing-sentinel)r   r   r   r   )r   r   s     rK   missing_sentinel_schemark  b  s$     #   rJ   )nullr#   r-   r   r!   r   r   c                  L    e Zd ZU ded<   ded<   ded<   ded<   ded	<   d
ed<   dS )IsInstanceSchemaz Required[Literal['is-instance']]r   r^  r   r!   cls_reprr   r   r   r   r   Nr   rI   rJ   rK   rn  rn  s  sT         ****MMMHHHrJ   rn  )ro  r   r   r   ro  c               ,    t          d| ||||          S )a  
    Returns a schema that checks if a value is an instance of a class, equivalent to python's `isinstance` method, e.g.:

    ```py
    from pydantic_core import SchemaValidator, core_schema

    class A:
        pass

    schema = core_schema.is_instance_schema(cls=A)
    v = SchemaValidator(schema)
    v.validate_python(A())
    ```

    Args:
        cls: The value must be an instance of this class
        cls_repr: If provided this string is used in the validator name instead of `repr(cls)`
        ref: optional unique identifier of the schema, used to reference the schema in other places
        metadata: Any other information you want to include with the schema, not used by pydantic-core
        serialization: Custom serialization schema
    is-instancer   r   ro  r   r   r   r   r   ro  r   r   r   s        rK   is_instance_schemart  |  s)    : hC(bo   rJ   c                  L    e Zd ZU ded<   ded<   ded<   ded<   ded	<   d
ed<   dS )IsSubclassSchemaz Required[Literal['is-subclass']]r   r   r   r!   ro  r   r   r   r   r   Nr   rI   rJ   rK   rv  rv    sT         ****MMMHHHrJ   rv  c               ,    t          d| ||||          S )a  
    Returns a schema that checks if a value is a subtype of a class, equivalent to python's `issubclass` method, e.g.:

    ```py
    from pydantic_core import SchemaValidator, core_schema

    class A:
        pass

    class B(A):
        pass

    schema = core_schema.is_subclass_schema(cls=A)
    v = SchemaValidator(schema)
    v.validate_python(B)
    ```

    Args:
        cls: The value must be a subclass of this class
        cls_repr: If provided this string is used in the validator name instead of `repr(cls)`
        ref: optional unique identifier of the schema, used to reference the schema in other places
        metadata: Any other information you want to include with the schema, not used by pydantic-core
        serialization: Custom serialization schema
    is-subclassrr  r   rs  s        rK   is_subclass_schemary    s*    @ hC(bo   rJ   c                  8    e Zd ZU ded<   ded<   ded<   ded<   d	S )
CallableSchemazRequired[Literal['callable']]r   r!   r   r   r   r   r   Nr   rI   rJ   rK   r{  r{    s?         ''''HHHrJ   r{  c                (    t          d| ||          S )a,  
    Returns a schema that checks if a value is callable, equivalent to python's `callable` method, e.g.:

    ```py
    from pydantic_core import SchemaValidator, core_schema

    schema = core_schema.callable_schema()
    v = SchemaValidator(schema)
    v.validate_python(min)
    ```

    Args:
        ref: optional unique identifier of the schema, used to reference the schema in other places
        metadata: Any other information you want to include with the schema, not used by pydantic-core
        serialization: Custom serialization schema
    callabler   r   r   s      rK   callable_schemar~    s    & zsXUbccccrJ   c                  L    e Zd ZU ded<   ded<   ded<   ded<   d	ed
<   ded<   dS )
UuidSchemazRequired[Literal['uuid']]r   zLiteral[1, 3, 4, 5, 7]versionr#   r$   r!   r   r   r   r   r   Nr   rI   rJ   rK   r  r    sT         ########LLLHHHrJ   r  r  r$   r   r   r   r  #Literal[1, 3, 4, 5, 6, 7, 8] | Nonec                ,    t          d| ||||          S )Nr   )r   r  r$   r   r   r   r   r  s        rK   uuid_schemar    s)     WVx_l   rJ   c                  .    e Zd ZU ded<   ded<   ded<   dS )IncExSeqSerSchemaz-Required[Literal['include-exclude-sequence']]r   zset[int]rW   rZ   Nr   rI   rJ   rK   r  r    s6         7777rJ   r  rW   rZ   rW   set[int] | NonerZ   c                &    t          d| |          S )Nzinclude-exclude-sequencer   rW   rZ   r   r  s     rK   filter_seq_schemar    s    97T[\\\\rJ   c                  j    e Zd ZU ded<   ded<   ded<   ded<   ded	<   ded
<   ded<   ded<   ded<   dS )
ListSchemazRequired[Literal['list']]r   r   items_schemar-   r$  r#  r#   	fail_fastr$   r!   r   r   r   IncExSeqOrElseSerSchemar   Nr   rI   rJ   rK   r  r    so         ####OOOOOOOOOLLLHHH******rJ   r  )r$  r#  r  r$   r   r   r   r  r  IncExSeqOrElseSerSchema | Nonec               2    t          d| |||||||	  	        S )a  
    Returns a schema that matches a list value, e.g.:

    ```py
    from pydantic_core import SchemaValidator, core_schema

    schema = core_schema.list_schema(core_schema.int_schema(), min_length=0, max_length=10)
    v = SchemaValidator(schema)
    assert v.validate_python(['4']) == [4]
    ```

    Args:
        items_schema: The value must be a list of items that match this schema
        min_length: The value must be a list with at least this many items
        max_length: The value must be a list with at most this many items
        fail_fast: Stop validation on the first error
        strict: The value must be a list with exactly this many items
        ref: optional unique identifier of the schema, used to reference the schema in other places
        metadata: Any other information you want to include with the schema, not used by pydantic-core
        serialization: Custom serialization schema
    r   	r   r  r$  r#  r  r$   r   r   r   r   r  r$  r#  r  r$   r   r   r   s           rK   list_schemar    s7    @ !#
 
 
 
rJ   )extras_schemar$   r   r   r   list[CoreSchema]r  TupleSchemac               `    |t          |           }| |gz   } nd}t          | |||||          S )a  
    Returns a schema that matches a tuple of schemas, e.g.:

    ```py
    from pydantic_core import SchemaValidator, core_schema

    schema = core_schema.tuple_positional_schema(
        [core_schema.int_schema(), core_schema.str_schema()]
    )
    v = SchemaValidator(schema)
    assert v.validate_python((1, 'hello')) == (1, 'hello')
    ```

    Args:
        items_schema: The value must be a tuple with items that match these schemas
        extras_schema: The value must be a tuple with items that match this schema
            This was inspired by JSON schema's `prefixItems` and `items` fields.
            In python's `typing.Tuple`, you can't specify a type for "extra" items -- they must all be the same type
            if the length is variable. So this field won't be set from a `typing.Tuple` annotation on a pydantic model.
        strict: The value must be a tuple with exactly this many items
        ref: optional unique identifier of the schema, used to reference the schema in other places
        metadata: Any other information you want to include with the schema, not used by pydantic-core
        serialization: Custom serialization schema
    N)r  variadic_item_indexr$   r   r   r   )lentuple_schema)r  r  r$   r   r   r   r  s          rK   tuple_positional_schemar  F  sX    B  #!,//#}o5"!/#   rJ   )r$  r#  r$   r   r   r   c          
     N    t          | pt                      gd||||||          S )a  
    Returns a schema that matches a tuple of a given schema, e.g.:

    ```py
    from pydantic_core import SchemaValidator, core_schema

    schema = core_schema.tuple_variable_schema(
        items_schema=core_schema.int_schema(), min_length=0, max_length=10
    )
    v = SchemaValidator(schema)
    assert v.validate_python(('1', 2, 3)) == (1, 2, 3)
    ```

    Args:
        items_schema: The value must be a tuple with items that match this schema
        min_length: The value must be a tuple with at least this many items
        max_length: The value must be a tuple with at most this many items
        strict: The value must be a tuple with exactly this many items
        ref: Optional unique identifier of the schema, used to reference the schema in other places
        metadata: Any other information you want to include with the schema, not used by pydantic-core
        serialization: Custom serialization schema
    r   )r  r  r$  r#  r$   r   r   r   )r  r   )r  r$  r#  r$   r   r   r   s          rK   tuple_variable_schemar  w  s@    @ "2jll3#	 	 	 	rJ   c                  t    e Zd ZU ded<   ded<   ded<   ded<   ded<   d	ed
<   d	ed<   ded<   ded<   ded<   dS )r  zRequired[Literal['tuple']]r   Required[list[CoreSchema]]r  r-   r  r$  r#  r#   r  r$   r!   r   r   r   r  r   Nr   rI   rJ   rK   r  r    s{         $$$$,,,,OOOOOOOOOLLLHHH******rJ   )r  r$  r#  r  r$   r   r   r   r  c               4    t          d| ||||||||
  
        S )a  
    Returns a schema that matches a tuple of schemas, with an optional variadic item, e.g.:

    ```py
    from pydantic_core import SchemaValidator, core_schema

    schema = core_schema.tuple_schema(
        [core_schema.int_schema(), core_schema.str_schema(), core_schema.float_schema()],
        variadic_item_index=1,
    )
    v = SchemaValidator(schema)
    assert v.validate_python((1, 'hello', 'world', 1.5)) == (1, 'hello', 'world', 1.5)
    ```

    Args:
        items_schema: The value must be a tuple with items that match these schemas
        variadic_item_index: The index of the schema in `items_schema` to be treated as variadic (following PEP 646)
        min_length: The value must be a tuple with at least this many items
        max_length: The value must be a tuple with at most this many items
        fail_fast: Stop validation on the first error
        strict: The value must be a tuple with exactly this many items
        ref: Optional unique identifier of the schema, used to reference the schema in other places
        metadata: Any other information you want to include with the schema, not used by pydantic-core
        serialization: Custom serialization schema
    r   )
r   r  r  r$  r#  r  r$   r   r   r   r   )	r  r  r$  r#  r  r$   r   r   r   s	            rK   r  r    s:    J !/#   rJ   c                  j    e Zd ZU ded<   ded<   ded<   ded<   ded	<   ded
<   ded<   ded<   ded<   dS )	SetSchemazRequired[Literal['set']]r   r   r  r-   r$  r#  r#   r  r$   r!   r   r   r   r   r   Nr   rI   rJ   rK   r  r    so         """"OOOOOOOOOLLLHHHrJ   r  c               2    t          d| |||||||	  	        S )a  
    Returns a schema that matches a set of a given schema, e.g.:

    ```py
    from pydantic_core import SchemaValidator, core_schema

    schema = core_schema.set_schema(
        items_schema=core_schema.int_schema(), min_length=0, max_length=10
    )
    v = SchemaValidator(schema)
    assert v.validate_python({1, '2', 3}) == {1, 2, 3}
    ```

    Args:
        items_schema: The value must be a set with items that match this schema
        min_length: The value must be a set with at least this many items
        max_length: The value must be a set with at most this many items
        fail_fast: Stop validation on the first error
        strict: The value must be a set with exactly this many items
        ref: optional unique identifier of the schema, used to reference the schema in other places
        metadata: Any other information you want to include with the schema, not used by pydantic-core
        serialization: Custom serialization schema
    r   r  r   r  s           rK   
set_schemar    s7    D !#
 
 
 
rJ   c                  j    e Zd ZU ded<   ded<   ded<   ded<   ded	<   ded
<   ded<   ded<   ded<   dS )FrozenSetSchemazRequired[Literal['frozenset']]r   r   r  r-   r$  r#  r#   r  r$   r!   r   r   r   r   r   Nr   rI   rJ   rK   r  r    so         ((((OOOOOOOOOLLLHHHrJ   r  c               2    t          d| |||||||	  	        S )a   
    Returns a schema that matches a frozenset of a given schema, e.g.:

    ```py
    from pydantic_core import SchemaValidator, core_schema

    schema = core_schema.frozenset_schema(
        items_schema=core_schema.int_schema(), min_length=0, max_length=10
    )
    v = SchemaValidator(schema)
    assert v.validate_python(frozenset(range(3))) == frozenset({0, 1, 2})
    ```

    Args:
        items_schema: The value must be a frozenset with items that match this schema
        min_length: The value must be a frozenset with at least this many items
        max_length: The value must be a frozenset with at most this many items
        fail_fast: Stop validation on the first error
        strict: The value must be a frozenset with exactly this many items
        ref: optional unique identifier of the schema, used to reference the schema in other places
        metadata: Any other information you want to include with the schema, not used by pydantic-core
        serialization: Custom serialization schema
    r   r  r   r  s           rK   frozenset_schemar  *  s7    D !#
 
 
 
rJ   c                  V    e Zd ZU ded<   ded<   ded<   ded<   ded	<   d
ed<   ded<   dS )GeneratorSchemazRequired[Literal['generator']]r   r   r  r-   r$  r#  r!   r   r   r   r  r   Nr   rI   rJ   rK   r  r  Y  s]         ((((OOOOOOHHH******rJ   r  )r$  r#  r   r   r   c          	     .    t          d| |||||          S )a  
    Returns a schema that matches a generator value, e.g.:

    ```py
    from typing import Iterator
    from pydantic_core import SchemaValidator, core_schema

    def gen() -> Iterator[int]:
        yield 1

    schema = core_schema.generator_schema(items_schema=core_schema.int_schema())
    v = SchemaValidator(schema)
    v.validate_python(gen())
    ```

    Unlike other types, validated generators do not raise ValidationErrors eagerly,
    but instead will raise a ValidationError when a violating value is actually read from the generator.
    This is to ensure that "validated" generators retain the benefit of lazy evaluation.

    Args:
        items_schema: The value must be a generator with items that match this schema
        min_length: The value must be a generator that yields at least this many items
        max_length: The value must be a generator that yields at most this many items
        ref: optional unique identifier of the schema, used to reference the schema in other places
        metadata: Any other information you want to include with the schema, not used by pydantic-core
        serialization: Custom serialization schema
    r   )r   r  r$  r#  r   r   r   r   )r  r$  r#  r   r   r   s         rK   generator_schemar  c  s1    H !#   rJ   c                  .    e Zd ZU ded<   ded<   ded<   dS )IncExDictSerSchemaz)Required[Literal['include-exclude-dict']]r   	IncExDictrW   rZ   Nr   rI   rJ   rK   r  r    s6         3333rJ   r  IncExDict | Nonec                &    t          d| |          S )Nzinclude-exclude-dictr  r   r  s     rK   filter_dict_schemar    s    5wPWXXXXrJ   c                  t    e Zd ZU ded<   ded<   ded<   ded<   ded<   d	ed
<   d	ed<   ded<   ded<   ded<   dS )
DictSchemazRequired[Literal['dict']]r   r   keys_schemavalues_schemar-   r$  r#  r#   r  r$   r!   r   r   r   IncExDictOrElseSerSchemar   Nr   rI   rJ   rK   r  r    s{         ####OOOOOOOOOLLLHHH++++++rJ   r  r  r  c               4    t          d| ||||||||
  
        S )a7  
    Returns a schema that matches a dict value, e.g.:

    ```py
    from pydantic_core import SchemaValidator, core_schema

    schema = core_schema.dict_schema(
        keys_schema=core_schema.str_schema(), values_schema=core_schema.int_schema()
    )
    v = SchemaValidator(schema)
    assert v.validate_python({'a': '1', 'b': 2}) == {'a': 1, 'b': 2}
    ```

    Args:
        keys_schema: The value must be a dict with keys that match this schema
        values_schema: The value must be a dict with values that match this schema
        min_length: The value must be a dict with at least this many items
        max_length: The value must be a dict with at most this many items
        fail_fast: Stop validation on the first error
        strict: Whether the keys and values should be validated with strict mode
        ref: optional unique identifier of the schema, used to reference the schema in other places
        metadata: Any other information you want to include with the schema, not used by pydantic-core
        serialization: Custom serialization schema
    r   )
r   r  r  r$  r#  r  r$   r   r   r   r   )	r  r  r$  r#  r  r$   r   r   r   s	            rK   dict_schemar    s:    H ##   rJ   c                  $    e Zd ZU ded<   ded<   dS )NoInfoValidatorFunctionSchemaLiteral['no-info']r   NoInfoValidatorFunctionr   Nr   rI   rJ   rK   r  r    s*         %%%%%%rJ   r  c                  .    e Zd ZU ded<   ded<   ded<   dS )WithInfoValidatorFunctionSchemaRequired[Literal['with-info']]r   z#Required[WithInfoValidatorFunction]r   r!   r~   Nr   rI   rJ   rK   r  r    s1         ((((1111OOOOOrJ   r  c                  B    e Zd ZU ded<   ded<   ded<   ded<   d	ed
<   dS )_ValidatorFunctionSchemaRequired[ValidationFunction]r   r   r   r!   r   r   r   r   r   Nr   rI   rJ   rK   r  r    sK         ****    HHHrJ   r  c                  $    e Zd ZU ded<   ded<   dS )BeforeValidatorFunctionSchemaz$Required[Literal['function-before']]r   r   json_schema_input_schemaNr   rI   rJ   rK   r  r    s*         ....((((((rJ   r  )r   r  r   r   r  r  c          	     4    t          dd| d|||||          S )a=  
    Returns a schema that calls a validator function before validating, no `info` argument is provided, e.g.:

    ```py
    from pydantic_core import SchemaValidator, core_schema

    def fn(v: bytes) -> str:
        return v.decode() + 'world'

    func_schema = core_schema.no_info_before_validator_function(
        function=fn, schema=core_schema.str_schema()
    )
    schema = core_schema.typed_dict_schema({'a': core_schema.typed_dict_field(func_schema)})

    v = SchemaValidator(schema)
    assert v.validate_python({'a': b'hello '}) == {'a': 'hello world'}
    ```

    Args:
        function: The validator function to call
        schema: The schema to validate the output of the validator function
        ref: optional unique identifier of the schema, used to reference the schema in other places
        json_schema_input_schema: The core schema to be used to generate the corresponding JSON Schema input type
        metadata: Any other information you want to include with the schema, not used by pydantic-core
        serialization: Custom serialization schema
    function-beforeno-infor   r   r   r   r   r   r  r   r   r   r   r   r   r  r   r   s         rK   !no_info_before_validator_functionr    s9    F #::!9#   rJ   )r~   r   r  r   r   WithInfoValidatorFunctionr~   c          	         |t          j        dt          d           t          dt          d| |          |||||          S )	a!  
    Returns a schema that calls a validator function before validation, the function is called with
    an `info` argument, e.g.:

    ```py
    from pydantic_core import SchemaValidator, core_schema

    def fn(v: bytes, info: core_schema.ValidationInfo) -> str:
        assert info.data is not None
        assert info.field_name is not None
        return v.decode() + 'world'

    func_schema = core_schema.with_info_before_validator_function(
        function=fn, schema=core_schema.str_schema()
    )
    schema = core_schema.typed_dict_schema({'a': core_schema.typed_dict_field(func_schema)})

    v = SchemaValidator(schema)
    assert v.validate_python({'a': b'hello '}) == {'a': 'hello world'}
    ```

    Args:
        function: The validator function to call
        field_name: The name of the field this validator is applied to, if any (deprecated)
        schema: The schema to validate the output of the validator function
        ref: optional unique identifier of the schema, used to reference the schema in other places
        json_schema_input_schema: The core schema to be used to generate the corresponding JSON Schema input type
        metadata: Any other information you want to include with the schema, not used by pydantic-core
        serialization: Custom serialization schema
    NzThe `field_name` argument on `with_info_before_validator_function` is deprecated, it will be passed to the function through `ValidationState` instead.   
stacklevelr  	with-infor   r   r~   r  warningswarnDeprecationWarningr   )r   r   r~   r   r  r   r   s          rK   #with_info_before_validator_functionr  2  sp    P  
 e	
 	
 	
 	
 [8PZ[[[!9#   rJ   c                      e Zd ZU ded<   dS )AfterValidatorFunctionSchemaz#Required[Literal['function-after']]r   Nr   rI   rJ   rK   r  r  l  s         ------rJ   r  c          	     4    t          dd| d|||||          S )a)  
    Returns a schema that calls a validator function after validating, no `info` argument is provided, e.g.:

    ```py
    from pydantic_core import SchemaValidator, core_schema

    def fn(v: str) -> str:
        return v + 'world'

    func_schema = core_schema.no_info_after_validator_function(fn, core_schema.str_schema())
    schema = core_schema.typed_dict_schema({'a': core_schema.typed_dict_field(func_schema)})

    v = SchemaValidator(schema)
    assert v.validate_python({'a': b'hello '}) == {'a': 'hello world'}
    ```

    Args:
        function: The validator function to call after the schema is validated
        schema: The schema to validate before the validator function
        ref: optional unique identifier of the schema, used to reference the schema in other places
        json_schema_input_schema: The core schema to be used to generate the corresponding JSON Schema input type
        metadata: Any other information you want to include with the schema, not used by pydantic-core
        serialization: Custom serialization schema
    function-afterr  r  r  r   r  s         rK    no_info_after_validator_functionr  p  s9    B #::!9#   rJ   )r~   r   r   r   c                   |t          j        dt          d           t          dt          d| |          ||||          S )	a  
    Returns a schema that calls a validator function after validation, the function is called with
    an `info` argument, e.g.:

    ```py
    from pydantic_core import SchemaValidator, core_schema

    def fn(v: str, info: core_schema.ValidationInfo) -> str:
        assert info.data is not None
        assert info.field_name is not None
        return v + 'world'

    func_schema = core_schema.with_info_after_validator_function(
        function=fn, schema=core_schema.str_schema()
    )
    schema = core_schema.typed_dict_schema({'a': core_schema.typed_dict_field(func_schema)})

    v = SchemaValidator(schema)
    assert v.validate_python({'a': b'hello '}) == {'a': 'hello world'}
    ```

    Args:
        function: The validator function to call after the schema is validated
        schema: The schema to validate before the validator function
        field_name: The name of the field this validator is applied to, if any (deprecated)
        ref: optional unique identifier of the schema, used to reference the schema in other places
        metadata: Any other information you want to include with the schema, not used by pydantic-core
        serialization: Custom serialization schema
    NzThe `field_name` argument on `with_info_after_validator_function` is deprecated, it will be passed to the function through `ValidationState` instead.r  r  r  r  r  )r   r   r   r   r   r   r  )r   r   r~   r   r   r   s         rK   "with_info_after_validator_functionr    sm    L  
 d	
 	
 	
 	
 [8PZ[[[#   rJ   c                      e Zd Zdd	dZdS )
ValidatorFunctionWrapHandlerNr   r   outer_locationstr | int | NonerS   c                   d S rq   rI   )rV   r   r  s      rK   r   z%ValidatorFunctionWrapHandler.__call__  s    rJ   rq   )r   r   r  r  rS   r   r   rI   rJ   rK   r  r    s-              rJ   r  c                  $    e Zd ZU ded<   ded<   dS )!NoInfoWrapValidatorFunctionSchemar  r   NoInfoWrapValidatorFunctionr   Nr   rI   rJ   rK   r  r    s*         ))))))rJ   r  c                  .    e Zd ZU ded<   ded<   ded<   dS )#WithInfoWrapValidatorFunctionSchemar  r   z'Required[WithInfoWrapValidatorFunction]r   r!   r~   Nr   rI   rJ   rK   r  r    s1         ((((5555OOOOOrJ   r  c                  V    e Zd ZU ded<   ded<   ded<   ded<   d	ed
<   ded<   ded<   dS )WrapValidatorFunctionSchemar   r   zRequired[WrapValidatorFunction]r   r   r   r!   r   r   r  r   r   r   r   Nr   rI   rJ   rK   r  r    sc         ,,,,----    HHH((((rJ   r  r  c          	     4    t          dd| d|||||          S )a  
    Returns a schema which calls a function with a `validator` callable argument which can
    optionally be used to call inner validation with the function logic, this is much like the
    "onion" implementation of middleware in many popular web frameworks, no `info` argument is passed, e.g.:

    ```py
    from pydantic_core import SchemaValidator, core_schema

    def fn(
        v: str,
        validator: core_schema.ValidatorFunctionWrapHandler,
    ) -> str:
        return validator(input_value=v) + 'world'

    schema = core_schema.no_info_wrap_validator_function(
        function=fn, schema=core_schema.str_schema()
    )
    v = SchemaValidator(schema)
    assert v.validate_python('hello ') == 'hello world'
    ```

    Args:
        function: The validator function to call
        schema: The schema to validate the output of the validator function
        ref: optional unique identifier of the schema, used to reference the schema in other places
        json_schema_input_schema: The core schema to be used to generate the corresponding JSON Schema input type
        metadata: Any other information you want to include with the schema, not used by pydantic-core
        serialization: Custom serialization schema
    r   r  r  r   r   r   r  r   r   r   r   r  s         rK   no_info_wrap_validator_functionr    s9    L #::!9#   rJ   )r~   r  r   r   r   WithInfoWrapValidatorFunctionc          	         |t          j        dt          d           t          dt          d| |          |||||          S )	ag  
    Returns a schema which calls a function with a `validator` callable argument which can
    optionally be used to call inner validation with the function logic, this is much like the
    "onion" implementation of middleware in many popular web frameworks, an `info` argument is also passed, e.g.:

    ```py
    from pydantic_core import SchemaValidator, core_schema

    def fn(
        v: str,
        validator: core_schema.ValidatorFunctionWrapHandler,
        info: core_schema.ValidationInfo,
    ) -> str:
        return validator(input_value=v) + 'world'

    schema = core_schema.with_info_wrap_validator_function(
        function=fn, schema=core_schema.str_schema()
    )
    v = SchemaValidator(schema)
    assert v.validate_python('hello ') == 'hello world'
    ```

    Args:
        function: The validator function to call
        schema: The schema to validate the output of the validator function
        field_name: The name of the field this validator is applied to, if any (deprecated)
        json_schema_input_schema: The core schema to be used to generate the corresponding JSON Schema input type
        ref: optional unique identifier of the schema, used to reference the schema in other places
        metadata: Any other information you want to include with the schema, not used by pydantic-core
        serialization: Custom serialization schema
    NzThe `field_name` argument on `with_info_wrap_validator_function` is deprecated, it will be passed to the function through `ValidationState` instead.r  r  r   r  r  r  r  )r   r   r~   r  r   r   r   s          rK   !with_info_wrap_validator_functionr  )	  sp    R  
 c	
 	
 	
 	
 [8PZ[[[!9#   rJ   c                  L    e Zd ZU ded<   ded<   ded<   ded<   d	ed
<   ded<   dS )PlainValidatorFunctionSchemar   r   r  r   r!   r   r   r  r   r   r   r   Nr   rI   rJ   rK   r  r  d	  sW         ----****HHH((((rJ   r  c               2    t          dd| d||||          S )a[  
    Returns a schema that uses the provided function for validation, no `info` argument is passed, e.g.:

    ```py
    from pydantic_core import SchemaValidator, core_schema

    def fn(v: str) -> str:
        assert 'hello' in v
        return v + 'world'

    schema = core_schema.no_info_plain_validator_function(function=fn)
    v = SchemaValidator(schema)
    assert v.validate_python('hello ') == 'hello world'
    ```

    Args:
        function: The validator function to call
        ref: optional unique identifier of the schema, used to reference the schema in other places
        json_schema_input_schema: The core schema to be used to generate the corresponding JSON Schema input type
        metadata: Any other information you want to include with the schema, not used by pydantic-core
        serialization: Custom serialization schema
    r   r  r  r   r   r   r  r   r   r   )r   r   r  r   r   s        rK    no_info_plain_validator_functionr  m	  s5    < #::!9#   rJ   c                   |t          j        dt          d           t          dt          d| |          ||||          S )	a  
    Returns a schema that uses the provided function for validation, an `info` argument is passed, e.g.:

    ```py
    from pydantic_core import SchemaValidator, core_schema

    def fn(v: str, info: core_schema.ValidationInfo) -> str:
        assert 'hello' in v
        return v + 'world'

    schema = core_schema.with_info_plain_validator_function(function=fn)
    v = SchemaValidator(schema)
    assert v.validate_python('hello ') == 'hello world'
    ```

    Args:
        function: The validator function to call
        field_name: The name of the field this validator is applied to, if any (deprecated)
        ref: optional unique identifier of the schema, used to reference the schema in other places
        json_schema_input_schema: The core schema to be used to generate the corresponding JSON Schema input type
        metadata: Any other information you want to include with the schema, not used by pydantic-core
        serialization: Custom serialization schema
    NzThe `field_name` argument on `with_info_plain_validator_function` is deprecated, it will be passed to the function through `ValidationState` instead.r  r  r   r  r  r  r  )r   r~   r   r  r   r   s         rK   "with_info_plain_validator_functionr  	  sm    @  
 d	
 	
 	
 	
 [8PZ[[[!9#   rJ   c                  ~    e Zd ZU ded<   ded<   ded<   ded<   d	ed
<   ded<   d	ed<   d	ed<   ded<   ded<   ded<   dS )WithDefaultSchemazRequired[Literal['default']]r   r   r   r   rP   z9Union[Callable[[], Any], Callable[[dict[str, Any]], Any]]default_factoryr#   default_factory_takes_dataz#Literal['raise', 'omit', 'default']on_errorr,   r$   r!   r   r   r   r   r   Nr   rI   rJ   rK   r  r  	  s         &&&&    LLLNNNN$$$$1111LLLHHHrJ   r  )	rP   r  r   r  r,   r$   r   r   r   rP   r  ?Union[Callable[[], Any], Callable[[dict[str, Any]], Any], None]r   r  *Literal['raise', 'omit', 'default'] | Noner,   c       	        T    t          d| ||||||||	
  
        }
|t          ur||
d<   |
S )a  
    Returns a schema that adds a default value to the given schema, e.g.:

    ```py
    from pydantic_core import SchemaValidator, core_schema

    schema = core_schema.with_default_schema(core_schema.str_schema(), default='hello')
    wrapper_schema = core_schema.typed_dict_schema(
        {'a': core_schema.typed_dict_field(schema)}
    )
    v = SchemaValidator(wrapper_schema)
    assert v.validate_python({}) == v.validate_python({'a': 'hello'})
    ```

    Args:
        schema: The schema to add a default value to
        default: The default value to use
        default_factory: A callable that returns the default value to use
        default_factory_takes_data: Whether the default factory takes a validated data argument
        on_error: What to do if the schema validation fails. One of 'raise', 'omit', 'default'
        validate_default: Whether the default value should be validated
        strict: Whether the underlying schema should be validated with strict mode
        ref: optional unique identifier of the schema, used to reference the schema in other places
        metadata: Any other information you want to include with the schema, not used by pydantic-core
        serialization: Custom serialization schema
    rP   )
r   r   r  r   r  r,   r$   r   r   r   )r   r   )r   rP   r  r   r  r,   r$   r   r   r   r   s              rK   with_default_schemar  	  sU    N 	'#=)#	 	 	A '' )HrJ   c                  L    e Zd ZU ded<   ded<   ded<   ded<   d	ed
<   ded<   dS )NullableSchemazRequired[Literal['nullable']]r   r   r   r#   r$   r!   r   r   r   r   r   Nr   rI   rJ   rK   r  r  
  sT         ''''    LLLHHHrJ   r  c               ,    t          d| ||||          S )a  
    Returns a schema that matches a nullable value, e.g.:

    ```py
    from pydantic_core import SchemaValidator, core_schema

    schema = core_schema.nullable_schema(core_schema.str_schema())
    v = SchemaValidator(schema)
    assert v.validate_python(None) is None
    ```

    Args:
        schema: The schema to wrap
        strict: Whether the underlying schema should be validated with strict mode
        ref: optional unique identifier of the schema, used to reference the schema in other places
        metadata: Any other information you want to include with the schema, not used by pydantic-core
        serialization: Custom serialization schema
    nullable)r   r   r$   r   r   r   r   )r   r$   r   r   r   s        rK   nullable_schemar
  
  s)    4 v3an   rJ   c                  ~    e Zd ZU ded<   ded<   ded<   ded<   ded	<   d
ed<   ded<   ded<   ded<   ded<   ded<   dS )UnionSchemazRequired[Literal['union']]r   z9Required[list[Union[CoreSchema, tuple[CoreSchema, str]]]]choicesr#   auto_collapser!   custom_error_typecustom_error_message!dict[str, Union[str, int, float]]custom_error_contextz!Literal['smart', 'left_to_right']r_   r$   r   r   r   r   r   Nr   rI   rJ   rK   r  r  4
  s         $$$$FFFF;;;;++++LLLHHHrJ   r  )r  r  r  r  r_   r   r   r   r  )list[CoreSchema | tuple[CoreSchema, str]]r  r  r  r  dict[str, str | int] | Noner_   (Literal['smart', 'left_to_right'] | Nonec               4    t          d| ||||||||
  
        S )a?  
    Returns a schema that matches a union value, e.g.:

    ```py
    from pydantic_core import SchemaValidator, core_schema

    schema = core_schema.union_schema([core_schema.str_schema(), core_schema.int_schema()])
    v = SchemaValidator(schema)
    assert v.validate_python('hello') == 'hello'
    assert v.validate_python(1) == 1
    ```

    Args:
        choices: The schemas to match. If a tuple, the second item is used as the label for the case.
        auto_collapse: whether to automatically collapse unions with one element to the inner validator, default true
        custom_error_type: The custom error type to use if the validation fails
        custom_error_message: The custom error message to use if the validation fails
        custom_error_context: The custom error context to use if the validation fails
        mode: How to select which choice to return
            * `smart` (default) will try to return the choice which is the closest match to the input value
            * `left_to_right` will return the first choice in `choices` which succeeds validation
        ref: optional unique identifier of the schema, used to reference the schema in other places
        metadata: Any other information you want to include with the schema, not used by pydantic-core
        serialization: Custom serialization schema
    union)
r   r  r  r  r  r  r_   r   r   r   r   )	r  r  r  r  r  r_   r   r   r   s	            rK   union_schemar  C
  s:    J #+11#   rJ   c                  ~    e Zd ZU ded<   ded<   ded<   ded<   ded	<   d
ed<   ded<   ded<   ded<   ded<   ded<   dS )TaggedUnionSchemaz!Required[Literal['tagged-union']]r   z$Required[dict[Hashable, CoreSchema]]r  zcRequired[Union[str, list[Union[str, int]], list[list[Union[str, int]]], Callable[[Any], Hashable]]]discriminatorr!   r  r  r  r  r#   r$   r(   r   r   r   r   r   Nr   rI   rJ   rK   r  r  v
  s         ++++1111vvvv;;;;LLLHHHrJ   r  )r  r  r  r$   r(   r   r   r   dict[Any, CoreSchema]r  Dstr | list[str | int] | list[list[str | int]] | Callable[[Any], Any]#dict[str, int | str | float] | Noner(   c               6    t          d| |||||||||	          S )a
  
    Returns a schema that matches a tagged union value, e.g.:

    ```py
    from pydantic_core import SchemaValidator, core_schema

    apple_schema = core_schema.typed_dict_schema(
        {
            'foo': core_schema.typed_dict_field(core_schema.str_schema()),
            'bar': core_schema.typed_dict_field(core_schema.int_schema()),
        }
    )
    banana_schema = core_schema.typed_dict_schema(
        {
            'foo': core_schema.typed_dict_field(core_schema.str_schema()),
            'spam': core_schema.typed_dict_field(
                core_schema.list_schema(items_schema=core_schema.int_schema())
            ),
        }
    )
    schema = core_schema.tagged_union_schema(
        choices={
            'apple': apple_schema,
            'banana': banana_schema,
        },
        discriminator='foo',
    )
    v = SchemaValidator(schema)
    assert v.validate_python({'foo': 'apple', 'bar': '123'}) == {'foo': 'apple', 'bar': 123}
    assert v.validate_python({'foo': 'banana', 'spam': [1, 2, 3]}) == {
        'foo': 'banana',
        'spam': [1, 2, 3],
    }
    ```

    Args:
        choices: The schemas to match
            When retrieving a schema from `choices` using the discriminator value, if the value is a str,
            it should be fed back into the `choices` map until a schema is obtained
            (This approach is to prevent multiple ownership of a single schema in Rust)
        discriminator: The discriminator to use to determine the schema to use
            * If `discriminator` is a str, it is the name of the attribute to use as the discriminator
            * If `discriminator` is a list of int/str, it should be used as a "path" to access the discriminator
            * If `discriminator` is a list of lists, each inner list is a path, and the first path that exists is used
            * If `discriminator` is a callable, it should return the discriminator when called on the value to validate;
              the callable can return `None` to indicate that there is no matching discriminator present on the input
        custom_error_type: The custom error type to use if the validation fails
        custom_error_message: The custom error message to use if the validation fails
        custom_error_context: The custom error context to use if the validation fails
        strict: Whether the underlying schemas should be validated with strict mode
        from_attributes: Whether to use the attributes of the object to retrieve the discriminator value
        ref: optional unique identifier of the schema, used to reference the schema in other places
        metadata: Any other information you want to include with the schema, not used by pydantic-core
        serialization: Custom serialization schema
    tagged-union)r   r  r  r  r  r  r$   r(   r   r   r   r   )
r  r  r  r  r  r$   r(   r   r   r   s
             rK   tagged_union_schemar!  
  s=    H #+11'#   rJ   c                  B    e Zd ZU ded<   ded<   ded<   ded<   d	ed
<   dS )ChainSchemazRequired[Literal['chain']]r   r  stepsr!   r   r   r   r   r   Nr   rI   rJ   rK   r#  r#  
  sK         $$$$%%%%HHHrJ   r#  r$  c               *    t          d| |||          S )a_  
    Returns a schema that chains the provided validation schemas, e.g.:

    ```py
    from pydantic_core import SchemaValidator, core_schema

    def fn(v: str, info: core_schema.ValidationInfo) -> str:
        assert 'hello' in v
        return v + ' world'

    fn_schema = core_schema.with_info_plain_validator_function(function=fn)
    schema = core_schema.chain_schema(
        [fn_schema, fn_schema, fn_schema, core_schema.str_schema()]
    )
    v = SchemaValidator(schema)
    assert v.validate_python('hello') == 'hello world world world'
    ```

    Args:
        steps: The schemas to chain
        ref: optional unique identifier of the schema, used to reference the schema in other places
        metadata: Any other information you want to include with the schema, not used by pydantic-core
        serialization: Custom serialization schema
    chain)r   r$  r   r   r   r   )r$  r   r   r   s       rK   chain_schemar'  
  s    > wex_lmmmmrJ   c                  V    e Zd ZU ded<   ded<   ded<   ded<   ded	<   d
ed<   ded<   dS )LaxOrStrictSchemaz"Required[Literal['lax-or-strict']]r   r   
lax_schemastrict_schemar#   r$   r!   r   r   r   r   r   Nr   rI   rJ   rK   r)  r)    s`         ,,,,$$$$''''LLLHHHrJ   r)  r*  r+  c          	     .    t          d| |||||          S )a  
    Returns a schema that uses the lax or strict schema, e.g.:

    ```py
    from pydantic_core import SchemaValidator, core_schema

    def fn(v: str, info: core_schema.ValidationInfo) -> str:
        assert 'hello' in v
        return v + ' world'

    lax_schema = core_schema.int_schema(strict=False)
    strict_schema = core_schema.int_schema(strict=True)

    schema = core_schema.lax_or_strict_schema(
        lax_schema=lax_schema, strict_schema=strict_schema, strict=True
    )
    v = SchemaValidator(schema)
    assert v.validate_python(123) == 123

    schema = core_schema.lax_or_strict_schema(
        lax_schema=lax_schema, strict_schema=strict_schema, strict=False
    )
    v = SchemaValidator(schema)
    assert v.validate_python('123') == 123
    ```

    Args:
        lax_schema: The lax schema to use
        strict_schema: The strict schema to use
        strict: Whether the strict schema should be used
        ref: optional unique identifier of the schema, used to reference the schema in other places
        metadata: Any other information you want to include with the schema, not used by pydantic-core
        serialization: Custom serialization schema
    lax-or-strict)r   r*  r+  r$   r   r   r   r   )r*  r+  r$   r   r   r   s         rK   lax_or_strict_schemar.    s1    V ##   rJ   c                  L    e Zd ZU ded<   ded<   ded<   ded<   ded	<   d
ed<   dS )JsonOrPythonSchemaz#Required[Literal['json-or-python']]r   r   json_schemapython_schemar!   r   r   r   r   r   Nr   rI   rJ   rK   r0  r0  A  sW         ----%%%%''''HHHrJ   r0  r1  r2  c               ,    t          d| ||||          S )a  
    Returns a schema that uses the Json or Python schema depending on the input:

    ```py
    from pydantic_core import SchemaValidator, ValidationError, core_schema

    v = SchemaValidator(
        core_schema.json_or_python_schema(
            json_schema=core_schema.int_schema(),
            python_schema=core_schema.int_schema(strict=True),
        )
    )

    assert v.validate_json('"123"') == 123

    try:
        v.validate_python('123')
    except ValidationError:
        pass
    else:
        raise AssertionError('Validation should have failed')
    ```

    Args:
        json_schema: The schema to use for Json inputs
        python_schema: The schema to use for Python inputs
        ref: optional unique identifier of the schema, used to reference the schema in other places
        metadata: Any other information you want to include with the schema, not used by pydantic-core
        serialization: Custom serialization schema
    json-or-python)r   r1  r2  r   r   r   r   )r1  r2  r   r   r   s        rK   json_or_python_schemar5  J  s.    L ##   rJ   c                  `    e Zd ZU ded<   ded<   ded<   ded<   d	ed
<   ded<   ded<   ded<   dS )TypedDictFieldz%Required[Literal['typed-dict-field']]r   r   r   r#   required>Union[str, list[Union[str, int]], list[list[Union[str, int]]]]validation_aliasr!   serialization_aliasserialization_excluder   r   r   r   Nr   rI   rJ   rK   r7  r7  z  so         ////    NNNTTTT333333rJ   r7  )r8  r:  r;  r<  r   r   r8  r:  4str | list[str | int] | list[list[str | int]] | Noner;  r<  c          
     0    t          d| ||||||          S )aO  
    Returns a schema that matches a typed dict field, e.g.:

    ```py
    from pydantic_core import core_schema

    field = core_schema.typed_dict_field(schema=core_schema.int_schema(), required=True)
    ```

    Args:
        schema: The schema to use for the field
        required: Whether the field is required, otherwise uses the value from `total` on the typed dict
        validation_alias: The alias(es) to use to find the field in the validation data
        serialization_alias: The alias to use as a key when serializing
        serialization_exclude: Whether to exclude the field when serializing
        serialization_exclude_if: A callable that determines whether to exclude the field when serializing based on its value.
        metadata: Any other information you want to include with the schema, not used by pydantic-core
    typed-dict-field)r   r   r8  r:  r;  r<  r   r   r   )r   r8  r:  r;  r<  r   r   s          rK   typed_dict_fieldr@    s3    8 )/3!9	 	 	 	rJ   c                      e Zd ZU ded<   ded<   ded<   ded<   d	ed
<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   dS )TypedDictSchemazRequired[Literal['typed-dict']]r   z#Required[dict[str, TypedDictField]]fieldsr   r   r!   cls_namelist[ComputedField]computed_fieldsr#   r$   r   r  r%   extra_behaviorrL   r   r   r   r   r   r    r   Nr   rI   rJ   rK   rB  rB    s         ))))////NNNMMM((((LLL!!!!KKKHHHrJ   rB  )r   rD  rF  r$   r  rG  rL   r   r   r   r   rC  dict[str, TypedDictField]type[Any] | NonerD  rF  list[ComputedField] | NonerG  ExtraBehavior | NonerL   r   r   c               :    t          d| |||||||||	|
|          S )an  
    Returns a schema that matches a typed dict, e.g.:

    ```py
    from typing_extensions import TypedDict

    from pydantic_core import SchemaValidator, core_schema

    class MyTypedDict(TypedDict):
        a: str

    wrapper_schema = core_schema.typed_dict_schema(
        {'a': core_schema.typed_dict_field(core_schema.str_schema())}, cls=MyTypedDict
    )
    v = SchemaValidator(wrapper_schema)
    assert v.validate_python({'a': 'hello'}) == {'a': 'hello'}
    ```

    Args:
        fields: The fields to use for the typed dict
        cls: The class to use for the typed dict
        cls_name: The name to use in error locations. Falls back to `cls.__name__`, or the validator name if no class
            is provided.
        computed_fields: Computed fields to use when serializing the model, only applies when directly inside a model
        strict: Whether the typed dict is strict
        extras_schema: The extra validator to use for the typed dict
        ref: optional unique identifier of the schema, used to reference the schema in other places
        metadata: Any other information you want to include with the schema, not used by pydantic-core
        extra_behavior: The extra behavior to use for the typed dict
        total: Whether the typed dict is total, otherwise uses `typed_dict_total` from config
        serialization: Custom serialization schema
    
typed-dict)r   rC  r   rD  rF  r$   r  rG  rL   r   r   r   r   r   )rC  r   rD  rF  r$   r  rG  rL   r   r   r   r   s               rK   typed_dict_schemarN    sC    ^ '#%#   rJ   c                  `    e Zd ZU ded<   ded<   ded<   ded<   d	ed
<   ded<   d	ed<   ded<   dS )
ModelFieldz Required[Literal['model-field']]r   r   r   r9  r:  r!   r;  r#   r<  r   r   frozenr   r   Nr   rI   rJ   rK   rP  rP    so         ****    TTTT3333LLLrJ   rP  )r:  r;  r<  r   rQ  r   rQ  c          
     0    t          d| ||||||          S )a  
    Returns a schema for a model field, e.g.:

    ```py
    from pydantic_core import core_schema

    field = core_schema.model_field(schema=core_schema.int_schema())
    ```

    Args:
        schema: The schema to use for the field
        validation_alias: The alias(es) to use to find the field in the validation data
        serialization_alias: The alias to use as a key when serializing
        serialization_exclude: Whether to exclude the field when serializing
        serialization_exclude_if: A Callable that determines whether to exclude a field during serialization based on its value.
        frozen: Whether the field is frozen
        metadata: Any other information you want to include with the schema, not used by pydantic-core
    model-field)r   r   r:  r;  r<  r   rQ  r   r   )r   r:  r;  r<  r   rQ  r   s          rK   model_fieldrT  	  s3    8 )/3!9	 	 	 	rJ   c                      e Zd ZU ded<   ded<   ded<   ded<   d	ed
<   ded<   ded<   ded<   d	ed<   ded<   ded<   ded<   dS )ModelFieldsSchemaz!Required[Literal['model-fields']]r   zRequired[dict[str, ModelField]]rC  r!   
model_namerE  rF  r#   r$   r   r  extras_keys_schemar%   rG  r(   r   r   r   r   r   Nr   rI   rJ   rK   rV  rV  1  s         ++++++++OOO((((LLL""""!!!!HHHrJ   rV  )
rW  rF  r$   r  rX  rG  r(   r   r   r   dict[str, ModelField]rW  rX  c       
        8    t          d| |||||||||	|
          S )a   
    Returns a schema that matches the fields of a Pydantic model, e.g.:

    ```py
    from pydantic_core import SchemaValidator, core_schema

    wrapper_schema = core_schema.model_fields_schema(
        {'a': core_schema.model_field(core_schema.str_schema())}
    )
    v = SchemaValidator(wrapper_schema)
    print(v.validate_python({'a': 'hello'}))
    #> ({'a': 'hello'}, None, {'a'})
    ```

    Args:
        fields: The fields of the model
        model_name: The name of the model, used for error messages, defaults to "Model"
        computed_fields: Computed fields to use when serializing the model, only applies when directly inside a model
        strict: Whether the model is strict
        extras_schema: The schema to use when validating extra input data
        extras_keys_schema: The schema to use when validating the keys of extra input data
        ref: optional unique identifier of the schema, used to reference the schema in other places
        metadata: Any other information you want to include with the schema, not used by pydantic-core
        extra_behavior: The extra behavior to use for the model fields
        from_attributes: Whether the model fields should be populated from attributes
        serialization: Custom serialization schema
    model-fields)r   rC  rW  rF  r$   r  rX  rG  r(   r   r   r   r   )rC  rW  rF  r$   r  rX  rG  r(   r   r   r   s              rK   model_fields_schemar\  @  s@    R '#-%'#   rJ   c                      e Zd ZU ded<   ded<   ded<   ded<   d	ed
<   d	ed<   ded<   ded<   d	ed<   d	ed<   ded<   ded<   ded<   ded<   ded<   dS )ModelSchemar   r   r   r   r   generic_originr   r   r#   custom_init
root_modelr!   	post_initr*   r+   r$   rQ  r%   rG  r    r   r   r   r   r   r   Nr   rI   rJ   rK   r^  r^  y  s         $$$$    NNNJJJJLLLLLL!!!!HHHrJ   r^  )r_  r`  ra  rb  r+   r$   rQ  rG  r   r   r   r   r_  r`  ra  rb  r+   7Literal['always', 'never', 'subclass-instances'] | Nonec               >    t          d| |||||||||	|
|||          S )a(  
    A model schema generally contains a typed-dict schema.
    It will run the typed dict validator, then create a new class
    and set the dict and fields set returned from the typed dict validator
    to `__dict__` and `__pydantic_fields_set__` respectively.

    Example:

    ```py
    from pydantic_core import CoreConfig, SchemaValidator, core_schema

    class MyModel:
        __slots__ = (
            '__dict__',
            '__pydantic_fields_set__',
            '__pydantic_extra__',
            '__pydantic_private__',
        )

    schema = core_schema.model_schema(
        cls=MyModel,
        config=CoreConfig(str_max_length=5),
        schema=core_schema.model_fields_schema(
            fields={'a': core_schema.model_field(core_schema.str_schema())},
        ),
    )
    v = SchemaValidator(schema)
    assert v.isinstance_python({'a': 'hello'}) is True
    assert v.isinstance_python({'a': 'too long'}) is False
    ```

    Args:
        cls: The class to use for the model
        schema: The schema to use for the model
        generic_origin: The origin type used for this model, if it's a parametrized generic. Ex,
            if this model schema represents `SomeModel[int]`, generic_origin is `SomeModel`
        custom_init: Whether the model has a custom init method
        root_model: Whether the model is a `RootModel`
        post_init: The call after init to use for the model
        revalidate_instances: whether instances of models and dataclasses (including subclass instances)
            should re-validate defaults to config.revalidate_instances, else 'never'
        strict: Whether the model is strict
        frozen: Whether the model is frozen
        extra_behavior: The extra behavior to use for the model, used in serialization
        config: The config to use for the model
        ref: optional unique identifier of the schema, used to reference the schema in other places
        metadata: Any other information you want to include with the schema, not used by pydantic-core
        serialization: Custom serialization schema
    r   )r   r   r_  r   r`  ra  rb  r+   r$   rQ  rG  r   r   r   r   r   )r   r   r_  r`  ra  rb  r+   r$   rQ  rG  r   r   r   r   s                 rK   model_schemare    sI    D %1%#   rJ   c                      e Zd ZU ded<   ded<   ded<   ded<   ded	<   ded
<   ded<   ded<   ded<   ded<   ded<   ded<   dS )DataclassFieldz$Required[Literal['dataclass-field']]r   r   namer   r   r#   kw_onlyinit	init_onlyrQ  r9  r:  r!   r;  r<  r   r   r   r   Nr   rI   rJ   rK   rg  rg    s         ....    MMMJJJOOOLLLTTTT333333rJ   rg  )	ri  rj  rk  r:  r;  r<  r   r   rQ  rh  ri  rj  rk  c       	        8    t          d| ||||||||	||
          S )a6  
    Returns a schema for a dataclass field, e.g.:

    ```py
    from pydantic_core import SchemaValidator, core_schema

    field = core_schema.dataclass_field(
        name='a', schema=core_schema.str_schema(), kw_only=False
    )
    schema = core_schema.dataclass_args_schema('Foobar', [field])
    v = SchemaValidator(schema)
    assert v.validate_python({'a': 'hello'}) == ({'a': 'hello'}, None)
    ```

    Args:
        name: The name to use for the argument parameter
        schema: The schema to use for the argument parameter
        kw_only: Whether the field can be set with a positional argument as well as a keyword argument
        init: Whether the field should be validated during initialization
        init_only: Whether the field should be omitted  from `__dict__` and passed to `__post_init__`
        validation_alias: The alias(es) to use to find the field in the validation data
        serialization_alias: The alias to use as a key when serializing
        serialization_exclude: Whether to exclude the field when serializing
        serialization_exclude_if: A callable that determines whether to exclude the field when serializing based on its value.
        metadata: Any other information you want to include with the schema, not used by pydantic-core
        frozen: Whether the field is frozen
    dataclass-field)r   rh  r   ri  rj  rk  r:  r;  r<  r   r   rQ  r   )rh  r   ri  rj  rk  r:  r;  r<  r   r   rQ  s              rK   dataclass_fieldrn    s@    R )/3!9   rJ   c                  j    e Zd ZU ded<   ded<   ded<   ded<   d	ed
<   ded<   ded<   ded<   ded<   dS )DataclassArgsSchemaz#Required[Literal['dataclass-args']]r   r   dataclass_namezRequired[list[DataclassField]]rC  rE  rF  r#   collect_init_onlyr!   r   r   r   r   r   r%   rG  Nr   rI   rJ   rK   rp  rp  (  s{         ----!!!!****((((HHH!!!!!!rJ   rp  )rF  rr  r   r   r   rG  rq  list[DataclassField]rr  c               2    t          d| |||||||	  	        S )a  
    Returns a schema for validating dataclass arguments, e.g.:

    ```py
    from pydantic_core import SchemaValidator, core_schema

    field_a = core_schema.dataclass_field(
        name='a', schema=core_schema.str_schema(), kw_only=False
    )
    field_b = core_schema.dataclass_field(
        name='b', schema=core_schema.bool_schema(), kw_only=False
    )
    schema = core_schema.dataclass_args_schema('Foobar', [field_a, field_b])
    v = SchemaValidator(schema)
    assert v.validate_python({'a': 'hello', 'b': True}) == ({'a': 'hello', 'b': True}, None)
    ```

    Args:
        dataclass_name: The name of the dataclass being validated
        fields: The fields to use for the dataclass
        computed_fields: Computed fields to use when serializing the dataclass
        collect_init_only: Whether to collect init only fields into a dict to pass to `__post_init__`
        ref: optional unique identifier of the schema, used to reference the schema in other places
        metadata: Any other information you want to include with the schema, not used by pydantic-core
        serialization: Custom serialization schema
        extra_behavior: How to handle extra fields
    dataclass-args)	r   rq  rC  rF  rr  r   r   r   rG  r   )rq  rC  rF  rr  r   r   r   rG  s           rK   dataclass_args_schemarv  4  s7    L %'+#%
 
 
 
rJ   c                      e Zd ZU ded<   ded<   ded<   ded<   d	ed
<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   dS )DataclassSchemazRequired[Literal['dataclass']]r   r   r   r   r_  r   r   zRequired[list[str]]rC  r!   rD  r#   rb  r*   r+   r$   rQ  r   r   r   r   r   slotsr    r   Nr   rI   rJ   rK   rx  rx  g  s         ((((    MMMOOOJJJJLLLLLLHHHKKKrJ   rx  )r_  rD  rb  r+   r$   r   r   r   rQ  ry  r   	list[str]ry  c               >    t          d| |||||||||	|
|||          S )a  
    Returns a schema for a dataclass. As with `ModelSchema`, this schema can only be used as a field within
    another schema, not as the root type.

    Args:
        cls: The dataclass type, used to perform subclass checks
        schema: The schema to use for the dataclass fields
        fields: Fields of the dataclass, this is used in serialization and in validation during re-validation
            and while validating assignment
        generic_origin: The origin type used for this dataclass, if it's a parametrized generic. Ex,
            if this model schema represents `SomeDataclass[int]`, generic_origin is `SomeDataclass`
        cls_name: The name to use in error locs, etc; this is useful for generics (default: `cls.__name__`)
        post_init: Whether to call `__post_init__` after validation
        revalidate_instances: whether instances of models and dataclasses (including subclass instances)
            should re-validate defaults to config.revalidate_instances, else 'never'
        strict: Whether to require an exact instance of `cls`
        ref: optional unique identifier of the schema, used to reference the schema in other places
        metadata: Any other information you want to include with the schema, not used by pydantic-core
        serialization: Custom serialization schema
        frozen: Whether the dataclass is frozen
        slots: Whether `slots=True` on the dataclass, means each field is assigned independently, rather than
            simply setting `__dict__`, default false
    	dataclass)r   r   r_  rC  rD  r   rb  r+   r$   r   r   r   rQ  ry  r   r   )r   r   rC  r_  rD  rb  r+   r$   r   r   r   rQ  ry  r   s                 rK   dataclass_schemar}  y  sI    P %1#   rJ   c                  8    e Zd ZU ded<   ded<   ded<   ded<   d	S )
ArgumentsParameterr   rh  r   r   zCLiteral['positional_only', 'positional_or_keyword', 'keyword_only']r_   r9  r   Nr   rI   rJ   rK   r  r    sB             MMMMIIIIIIrJ   r  )r_   r   JLiteral['positional_only', 'positional_or_keyword', 'keyword_only'] | Nonec               (    t          | |||          S )a  
    Returns a schema that matches an argument parameter, e.g.:

    ```py
    from pydantic_core import SchemaValidator, core_schema

    param = core_schema.arguments_parameter(
        name='a', schema=core_schema.str_schema(), mode='positional_only'
    )
    schema = core_schema.arguments_schema([param])
    v = SchemaValidator(schema)
    assert v.validate_python(('hello',)) == (('hello',), {})
    ```

    Args:
        name: The name to use for the argument parameter
        schema: The schema to use for the argument parameter
        mode: The mode to use for the argument parameter
        alias: The alias to use for the argument parameter
    rh  r   r_   r   r   r  s       rK   arguments_parameterr    s    6 tFUKKKKrJ   )uniformzunpacked-typed-dictVarKwargsModec                  t    e Zd ZU ded<   ded<   ded<   ded<   ded	<   d
ed<   ded<   ded<   ded<   ded<   dS )ArgumentsSchemazRequired[Literal['arguments']]r   z"Required[list[ArgumentsParameter]]arguments_schemar#   r@   r?   r   var_args_schemar  var_kwargs_modevar_kwargs_schemar!   r   r   r   r   r   Nr   rI   rJ   rK   r  r    s         ((((8888""""!!!!HHHrJ   r  )r@   r?   r  r  r  r   r   r   	argumentslist[ArgumentsParameter]r@   r?   r  r  VarKwargsMode | Noner  c               4    t          d| ||||||||
  
        S )aD  
    Returns a schema that matches an arguments schema, e.g.:

    ```py
    from pydantic_core import SchemaValidator, core_schema

    param_a = core_schema.arguments_parameter(
        name='a', schema=core_schema.str_schema(), mode='positional_only'
    )
    param_b = core_schema.arguments_parameter(
        name='b', schema=core_schema.bool_schema(), mode='positional_only'
    )
    schema = core_schema.arguments_schema([param_a, param_b])
    v = SchemaValidator(schema)
    assert v.validate_python(('hello', True)) == (('hello', True), {})
    ```

    Args:
        arguments: The arguments to use for the arguments schema
        validate_by_name: Whether to populate by the parameter names, defaults to `False`.
        validate_by_alias: Whether to populate by the parameter aliases, defaults to `True`.
        var_args_schema: The variable args schema to use for the arguments schema
        var_kwargs_mode: The validation mode to use for variadic keyword arguments. If `'uniform'`, every value of the
            keyword arguments will be validated against the `var_kwargs_schema` schema. If `'unpacked-typed-dict'`,
            the `var_kwargs_schema` argument must be a [`typed_dict_schema`][pydantic_core.core_schema.typed_dict_schema]
        var_kwargs_schema: The variable kwargs schema to use for the arguments schema
        ref: optional unique identifier of the schema, used to reference the schema in other places
        metadata: Any other information you want to include with the schema, not used by pydantic-core
        serialization: Custom serialization schema
    r  )
r   r  r@   r?   r  r  r  r   r   r   r   )	r  r@   r?   r  r  r  r   r   r   s	            rK   r  r    s:    T ")+''+#   rJ   c                  8    e Zd ZU ded<   ded<   ded<   ded<   d	S )
ArgumentsV3Parameterr   rh  r   r   zLiteral['positional_only', 'positional_or_keyword', 'keyword_only', 'var_args', 'var_kwargs_uniform', 'var_kwargs_unpacked_typed_dict']r_   r9  r   Nr   rI   rJ   rK   r  r  !  sM                 JIIIIIrJ   r  Literal['positional_only', 'positional_or_keyword', 'keyword_only', 'var_args', 'var_kwargs_uniform', 'var_kwargs_unpacked_typed_dict'] | Nonec               (    t          | |||          S )a  
    Returns a schema that matches an argument parameter, e.g.:

    ```py
    from pydantic_core import SchemaValidator, core_schema

    param = core_schema.arguments_v3_parameter(
        name='a', schema=core_schema.str_schema(), mode='positional_only'
    )
    schema = core_schema.arguments_v3_schema([param])
    v = SchemaValidator(schema)
    assert v.validate_python({'a': 'hello'}) == (('hello',), {})
    ```

    Args:
        name: The name to use for the argument parameter
        schema: The schema to use for the argument parameter
        mode: The mode to use for the argument parameter
        alias: The alias to use for the argument parameter
    r  r   r  s       rK   arguments_v3_parameterr  /  s    F tFUKKKKrJ   c                  `    e Zd ZU ded<   ded<   ded<   ded<   ded	<   d
ed<   ded<   ded<   dS )ArgumentsV3Schemaz!Required[Literal['arguments-v3']]r   z$Required[list[ArgumentsV3Parameter]]r  r#   r@   r?   zLiteral['forbid', 'ignore']rG  r!   r   r   r   r   r   Nr   rI   rJ   rK   r  r  U  so         ++++::::////HHHrJ   r  )r@   r?   rG  r   r   r   list[ArgumentsV3Parameter]"Literal['forbid', 'ignore'] | Nonec          
     0    t          d| ||||||          S )a4  
    Returns a schema that matches an arguments schema, e.g.:

    ```py
    from pydantic_core import SchemaValidator, core_schema

    param_a = core_schema.arguments_v3_parameter(
        name='a', schema=core_schema.str_schema(), mode='positional_only'
    )
    param_b = core_schema.arguments_v3_parameter(
        name='kwargs', schema=core_schema.bool_schema(), mode='var_kwargs_uniform'
    )
    schema = core_schema.arguments_v3_schema([param_a, param_b])
    v = SchemaValidator(schema)
    assert v.validate_python({'a': 'hi', 'kwargs': {'b': True}}) == (('hi',), {'b': True})
    ```

    This schema is currently not used by other Pydantic components. In V3, it will most likely
    become the default arguments schema for the `'call'` schema.

    Args:
        arguments: The arguments to use for the arguments schema.
        validate_by_name: Whether to populate by the parameter names, defaults to `False`.
        validate_by_alias: Whether to populate by the parameter aliases, defaults to `True`.
        extra_behavior: The extra behavior to use.
        ref: optional unique identifier of the schema, used to reference the schema in other places.
        metadata: Any other information you want to include with the schema, not used by pydantic-core.
        serialization: Custom serialization schema.
    arguments-v3)r   r  r@   r?   rG  r   r   r   r   )r  r@   r?   rG  r   r   r   s          rK   arguments_v3_schemar  `  s4    N ")+%#	 	 	 	rJ   c                  `    e Zd ZU ded<   ded<   ded<   ded<   d	ed
<   ded<   ded<   ded<   dS )
CallSchemazRequired[Literal['call']]r   r   r  zRequired[Callable[..., Any]]r   r!   function_namer   r   r   r   r   r   r   Nr   rI   rJ   rK   r  r    so         ####********HHHrJ   r  )r  r   r   r   r   Callable[..., Any]r  c          
     0    t          d| ||||||          S )a-  
    Returns a schema that matches an arguments schema, then calls a function, e.g.:

    ```py
    from pydantic_core import SchemaValidator, core_schema

    param_a = core_schema.arguments_parameter(
        name='a', schema=core_schema.str_schema(), mode='positional_only'
    )
    param_b = core_schema.arguments_parameter(
        name='b', schema=core_schema.bool_schema(), mode='positional_only'
    )
    args_schema = core_schema.arguments_schema([param_a, param_b])

    schema = core_schema.call_schema(
        arguments=args_schema,
        function=lambda a, b: a + str(not b),
        return_schema=core_schema.str_schema(),
    )
    v = SchemaValidator(schema)
    assert v.validate_python((('hello', True))) == 'helloFalse'
    ```

    Args:
        arguments: The arguments to use for the arguments schema
        function: The function to use for the call schema
        function_name: The function name to use for the call schema, if not provided `function.__name__` is used
        return_schema: The return schema to use for the call schema
        ref: optional unique identifier of the schema, used to reference the schema in other places
        metadata: Any other information you want to include with the schema, not used by pydantic-core
        serialization: Custom serialization schema
    call)r   r  r   r  r   r   r   r   r   )r  r   r  r   r   r   r   s          rK   call_schemar    s4    T "###	 	 	 	rJ   c                  `    e Zd ZU ded<   ded<   ded<   ded<   d	ed
<   ded<   ded<   ded<   dS )CustomErrorSchemaz!Required[Literal['custom-error']]r   r   r   r   r  r!   r  r  r  r   r   r   r   r   Nr   rI   rJ   rK   r  r    so         ++++    $$$$;;;;HHHrJ   r  )r  r  r   r   r   c          
     0    t          d| ||||||          S )a  
    Returns a schema that matches a custom error value, e.g.:

    ```py
    from pydantic_core import SchemaValidator, core_schema

    schema = core_schema.custom_error_schema(
        schema=core_schema.int_schema(),
        custom_error_type='MyError',
        custom_error_message='Error msg',
    )
    v = SchemaValidator(schema)
    v.validate_python(1)
    ```

    Args:
        schema: The schema to use for the custom error schema
        custom_error_type: The custom error type to use for the custom error schema
        custom_error_message: The custom error message to use for the custom error schema
        custom_error_context: The custom error context to use for the custom error schema
        ref: optional unique identifier of the schema, used to reference the schema in other places
        metadata: Any other information you want to include with the schema, not used by pydantic-core
        serialization: Custom serialization schema
    custom-error)r   r   r  r  r  r   r   r   r   )r   r  r  r  r   r   r   s          rK   custom_error_schemar    s4    D +11#	 	 	 	rJ   c                  B    e Zd ZU ded<   ded<   ded<   ded<   d	ed
<   dS )
JsonSchemazRequired[Literal['json']]r   r   r   r!   r   r   r   r   r   Nr   rI   rJ   rK   r  r    sK         ####HHHrJ   r  c               *    t          d| |||          S )a  
    Returns a schema that matches a JSON value, e.g.:

    ```py
    from pydantic_core import SchemaValidator, core_schema

    dict_schema = core_schema.model_fields_schema(
        {
            'field_a': core_schema.model_field(core_schema.str_schema()),
            'field_b': core_schema.model_field(core_schema.bool_schema()),
        },
    )

    class MyModel:
        __slots__ = (
            '__dict__',
            '__pydantic_fields_set__',
            '__pydantic_extra__',
            '__pydantic_private__',
        )
        field_a: str
        field_b: bool

    json_schema = core_schema.json_schema(schema=dict_schema)
    schema = core_schema.model_schema(cls=MyModel, schema=json_schema)
    v = SchemaValidator(schema)
    m = v.validate_python('{"field_a": "hello", "field_b": true}')
    assert isinstance(m, MyModel)
    ```

    Args:
        schema: The schema to use for the JSON schema
        ref: optional unique identifier of the schema, used to reference the schema in other places
        metadata: Any other information you want to include with the schema, not used by pydantic-core
        serialization: Custom serialization schema
    r   )r   r   r   r   r   r   )r   r   r   r   s       rK   r1  r1    s    V vf#`mnnnnrJ   c                  ~    e Zd ZU ded<   ded<   ded<   ded<   d	ed
<   ded<   d	ed<   ded<   d	ed<   ded<   ded<   dS )	UrlSchemazRequired[Literal['url']]r   r-   r#  rz  allowed_schemesr#   host_requiredr!   default_hostdefault_portdefault_pathr$   r   r   r   r   r   Nr   rI   rJ   rK   r  r  C  s         """"OOOLLLHHHrJ   r  r#  r  r  r  r  r  preserve_empty_pathr$   r   r   r   r  list[str] | Noner  r  r  r  r  c                8    t          d| |||||||||	|
          S )aB  
    Returns a schema that matches a URL value, e.g.:

    ```py
    from pydantic_core import SchemaValidator, core_schema

    schema = core_schema.url_schema()
    v = SchemaValidator(schema)
    print(v.validate_python('https://example.com'))
    #> https://example.com/
    ```

    Args:
        max_length: The maximum length of the URL
        allowed_schemes: The allowed URL schemes
        host_required: Whether the URL must have a host
        default_host: The default host to use if the URL does not have a host
        default_port: The default port to use if the URL does not have a port
        default_path: The default path to use if the URL does not have a path
        preserve_empty_path: Whether to preserve an empty path or convert it to '/', default False
        strict: Whether to use strict URL parsing
        ref: optional unique identifier of the schema, used to reference the schema in other places
        metadata: Any other information you want to include with the schema, not used by pydantic-core
        serialization: Custom serialization schema
    r   r   r#  r  r  r  r  r  r  r$   r   r   r   r   r  s              rK   
url_schemar  Q  s@    N '#!!!/#   rJ   c                  ~    e Zd ZU ded<   ded<   ded<   ded<   d	ed
<   ded<   d	ed<   ded<   d	ed<   ded<   ded<   dS )MultiHostUrlSchemaz#Required[Literal['multi-host-url']]r   r-   r#  rz  r  r#   r  r!   r  r  r  r$   r   r   r   r   r   Nr   rI   rJ   rK   r  r    s         ----OOOLLLHHHrJ   r  c                8    t          d| |||||||||	|
          S )a  
    Returns a schema that matches a URL value with possibly multiple hosts, e.g.:

    ```py
    from pydantic_core import SchemaValidator, core_schema

    schema = core_schema.multi_host_url_schema()
    v = SchemaValidator(schema)
    print(v.validate_python('redis://localhost,0.0.0.0,127.0.0.1'))
    #> redis://localhost,0.0.0.0,127.0.0.1
    ```

    Args:
        max_length: The maximum length of the URL
        allowed_schemes: The allowed URL schemes
        host_required: Whether the URL must have a host
        default_host: The default host to use if the URL does not have a host
        default_port: The default port to use if the URL does not have a port
        default_path: The default path to use if the URL does not have a path
        preserve_empty_path: Whether to preserve an empty path or convert it to '/', default False
        strict: Whether to use strict URL parsing
        ref: optional unique identifier of the schema, used to reference the schema in other places
        metadata: Any other information you want to include with the schema, not used by pydantic-core
        serialization: Custom serialization schema
    r   r  r   r  s              rK   multi_host_url_schemar    s@    N '#!!!/#   rJ   c                  B    e Zd ZU ded<   ded<   ded<   ded<   d	ed
<   dS )DefinitionsSchemaz Required[Literal['definitions']]r   r   r   r  definitionsr   r   r   r   Nr   rI   rJ   rK   r  r    sN         ****    ++++rJ   r  r  c                &    t          d| |          S )ab  
    Build a schema that contains both an inner schema and a list of definitions which can be used
    within the inner schema.

    ```py
    from pydantic_core import SchemaValidator, core_schema

    schema = core_schema.definitions_schema(
        core_schema.list_schema(core_schema.definition_reference_schema('foobar')),
        [core_schema.int_schema(ref='foobar')],
    )
    v = SchemaValidator(schema)
    assert v.validate_python([1, 2, '3']) == [1, 2, 3]
    ```

    Args:
        schema: The inner schema
        definitions: List of definitions which can be referenced within inner schema
    r  )r   r   r  )r  )r   r  s     rK   definitions_schemar    s    ( -KXXXXrJ   c                  B    e Zd ZU ded<   ded<   ded<   ded<   d	ed
<   dS )DefinitionReferenceSchemaz#Required[Literal['definition-ref']]r   r   
schema_refr!   r   r   r   r   r   Nr   rI   rJ   rK   r  r    sK         ----HHHrJ   r  r  c                *    t          d| |||          S )aw  
    Returns a schema that points to a schema stored in "definitions", this is useful for nested recursive
    models and also when you want to define validators separately from the main schema, e.g.:

    ```py
    from pydantic_core import SchemaValidator, core_schema

    schema_definition = core_schema.definition_reference_schema('list-schema')
    schema = core_schema.definitions_schema(
        schema=schema_definition,
        definitions=[
            core_schema.list_schema(items_schema=schema_definition, ref='list-schema'),
        ],
    )
    v = SchemaValidator(schema)
    assert v.validate_python([()]) == [[]]
    ```

    Args:
        schema_ref: The schema ref to use for the definition reference schema
        metadata: Any other information you want to include with the schema, not used by pydantic-core
        serialization: Custom serialization schema
    definition-ref)r   r  r   r   r   r   )r  r   r   r   s       rK   definition_reference_schemar    s'    : *#`m   rJ   )4r   r   r   r#   r-   r   r  r!   r   r   r	   r   r
   rZ  rj  re  rq  rx  r}  r   r   r   r   r   r   r  r  r   r   rP   r	  r  r   r&  r-  r4  rM  r[  r   ru  r|  r  r  r  r  r   r   r   r  r  r   r  )rS  rm  r?  r   )hno_such_attributejson_invalid	json_typeneeds_python_objectrecursion_loopra  frozen_fieldfrozen_instanceextra_forbiddeninvalid_keyget_attribute_error
model_typemodel_attributes_typedataclass_typedataclass_exact_typedefault_factory_not_callednone_requiredgreater_thangreater_than_equal	less_thanless_than_equalr  finite_number	too_shorttoo_longiterable_typeiteration_errorstring_typestring_sub_typestring_unicodestring_too_shortstring_too_longstring_pattern_mismatchstring_not_asciire  	dict_typemapping_type	list_type
tuple_typeset_typeset_item_not_hashable	bool_typebool_parsingint_typeint_parsingint_parsing_sizeint_from_float
float_typefloat_parsing
bytes_typebytes_too_shortbytes_too_longbytes_invalid_encodingvalue_errorassertion_errorliteral_errormissing_sentinel_error	date_typedate_parsingdate_from_datetime_parsingdate_from_datetime_inexact	date_pastdate_future	time_typetime_parsingdatetime_typedatetime_parsingdatetime_object_invaliddatetime_from_date_parsingdatetime_pastdatetime_futuretimezone_naivetimezone_awaretimezone_offsettime_delta_typetime_delta_parsingfrozen_set_typeis_instance_ofis_subclass_ofcallable_typeunion_tag_invalidunion_tag_not_foundarguments_typemissing_argumentunexpected_keyword_argumentmissing_keyword_only_argumentunexpected_positional_argument missing_positional_only_argumentmultiple_argument_valuesurl_typeurl_parsingurl_syntax_violationurl_too_long
url_scheme	uuid_typeuuid_parsinguuid_versiondecimal_typedecimal_parsingdecimal_max_digitsdecimal_max_placesdecimal_whole_digitscomplex_typecomplex_str_parsingkwargsc                 >    d |                                  D             S )Nc                    i | ]
\  }}|||S rq   rI   ).0kvs      rK   
<dictcomp>z"_dict_not_none.<locals>.<dictcomp>  s#    ===TQq=Aq===rJ   )items)r,  s    rK   r   r     s    ==V\\^^====rJ   r  Generator[CoreSchema]c              #  h   K   | d         D ]&}t          |t                    r|d         V  "|V  'dS )z/Iterate over the choices of a `'union'` schema.r  r   N)
isinstancer   )r  choices     rK   iter_union_choicesr8    sP      y)  fe$$ 	)OOOOLLLL	 rJ   c`field_before_validator_function` is deprecated, use `with_info_before_validator_function` instead.c                V    t          j        dt                     t          | |fd|i|S )Nr9  r~   r  r  r  r  r   r~   r   r,  s       rK   field_before_validator_functionr=    s<    Mm   /xaaJaZ`aaarJ   e`general_before_validator_function` is deprecated, use `with_info_before_validator_function` instead.c                 N    t          j        dt                     t          | i |S )Nr>  r;  argsr,  s     rK   !general_before_validator_functionrB    s1    Mo   /????rJ   a`field_after_validator_function` is deprecated, use `with_info_after_validator_function` instead.c                V    t          j        dt                     t          | |fd|i|S )NrC  r~   r  r  r  r  r<  s       rK   field_after_validator_functionrF  !  s<    Mk   .h``:`Y_```rJ   c`general_after_validator_function` is deprecated, use `with_info_after_validator_function` instead.c                 N    t          j        dt                     t          | i |S )NrG  rE  r@  s     rK    general_after_validator_functionrI  *  1    Mm   .t>v>>>rJ   _`field_wrap_validator_function` is deprecated, use `with_info_wrap_validator_function` instead.c                V    t          j        dt                     t          | |fd|i|S )NrK  r~   r  r  r  r  r<  s       rK   field_wrap_validator_functionrN  3  s>     Mi   -Xv__*_X^___rJ   a`general_wrap_validator_function` is deprecated, use `with_info_wrap_validator_function` instead.c                 N    t          j        dt                     t          | i |S )NrO  rM  r@  s     rK   general_wrap_validator_functionrQ  >  s1    Mk   -d=f===rJ   a`field_plain_validator_function` is deprecated, use `with_info_plain_validator_function` instead.c                T    t          j        dt                     t          | fd|i|S )NrR  r~   r  r  r  r  )r   r~   r,  s      rK   field_plain_validator_functionrU  G  s:    Mk   .hXX:XQWXXXrJ   c`general_plain_validator_function` is deprecated, use `with_info_plain_validator_function` instead.c                 N    t          j        dt                     t          | i |S )NrV  rT  r@  s     rK    general_plain_validator_functionrX  P  rJ  rJ   )FieldValidationInfoFieldValidatorFunctionGeneralValidatorFunctionFieldWrapValidatorFunction	attr_nameobjectc                    t                               |           }|t          d|  d          dd l}d|  d|j         d} |j        |t          d           |S )	Nz)module 'pydantic_core' has no attribute ''r   `z` is deprecated, use `z
` instead.   r  )_deprecated_import_lookupgetAttributeErrorr  rD   r  r  )r]  new_attrr  msgs       rK   __getattr__rh  d  sz    (,,Y77H UUUUVVVP)PP83DPPPc-!<<<<rJ   )r   r   rS   r   )r   r   r   rl   r   rl   r   r   r   r   rS   r   )r   r   r   rl   r   rl   r   r   r   r   r   r   rS   r   )r   r!   r   r   rS   r   )r   r   rS   r   )r   r   r   r   rS   r   )NN)r   r   r   r   rS   r   )r   r!   r   r   r   r   r   r   r   r   rS   r   )r   r   r   r   r   r   rS   r   )r   r   r   r   r   r   rS   r   )NNNN)
r$   rl   r   r   r   r   r   r   rS   r   )r  r	  r  r	  r  r	  r  r	  r  r	  r$   rl   r   r   r   r   r   r   rS   r  )r3   rl   r  r  r  r  r  r  r  r  r  r  r$   rl   r   r   r   r   r   r   rS   r  )r3   rl   r  r  r  r  r  r  r  r  r  r  r  r	  r  r	  r$   rl   r   r   r   r   r   r   rS   r  )
r$   rl   r   r   r   r   r   r   rS   r  )r"  r)  r#  r	  r$  r	  r%  rl   r&  rl   r'  rl   r=   r*  r$   rl   r;   rl   r   r   r   r   r   r   rS   r!  )r#  r	  r$  r	  r$   rl   r   r   r   r   r   r   rS   r.  )r$   rl   r  r8  r  r8  r  r8  r  r8  r5  r9  r6  r	  r   r   r   r   r   r   rS   r3  )r$   rl   r  rD  r  rD  r  rD  r  rD  r?  rE  rA  r@  r   r   r   r   r   r   rS   r=  )r$   rl   r  rK  r  rK  r  rK  r  rK  r5  r9  r?  rE  r6  r	  rA  r@  r   r   r   r   r   r   rS   rI  )r$   rl   r  rQ  r  rQ  r  rQ  r  rQ  rA  r@  r   r   r   r   r   r   rS   rO  )
rW  rX  r   r   r   r   r   r   rS   rU  )r   r   r_  rX  r`  rb  ra  rc  r$   rl   r   r   r   r   r   r   rS   r]  )r   r   r   r   rS   rh  )r   r   ro  r   r   r   r   r   r   r   rS   rn  )r   r   ro  r   r   r   r   r   r   r   rS   rn  )r   r   r   r   r   r   rS   r{  )r  r  r$   rl   r   r   r   r   r   r   rS   r  )rW   r  rZ   r  rS   r  rq   )r  r   r$  r	  r#  r	  r  rl   r$   rl   r   r   r   r   r   r  rS   r  )r  r  r  r   r$   rl   r   r   r   r   r   r  rS   r  )r  r   r$  r	  r#  r	  r$   rl   r   r   r   r   r   r  rS   r  )r  r  r  r	  r$  r	  r#  r	  r  rl   r$   rl   r   r   r   r   r   r  rS   r  )r  r   r$  r	  r#  r	  r  rl   r$   rl   r   r   r   r   r   r   rS   r  )r  r   r$  r	  r#  r	  r  rl   r$   rl   r   r   r   r   r   r   rS   r  )r  r   r$  r	  r#  r	  r   r   r   r   r   r  rS   r  )rW   r  rZ   r  rS   r  )r  r   r  r   r$  r	  r#  r	  r  rl   r$   rl   r   r   r   r   r   r   rS   r  )r   r  r   r   r   r   r  r   r   r   r   r   rS   r  )r   r  r   r   r~   r   r   r   r  r   r   r   r   r   rS   r  )r   r  r   r   r   r   r  r   r   r   r   r   rS   r  )r   r  r   r   r~   r   r   r   r   r   r   r   rS   r  )r   r  r   r   r   r   r  r   r   r   r   r   rS   r  )r   r  r   r   r~   r   r  r   r   r   r   r   r   r   rS   r  )r   r  r   r   r  r   r   r   r   r   rS   r  )r   r  r~   r   r   r   r  r   r   r   r   r   rS   r  )r   r   rP   r   r  r  r   rl   r  r  r,   rl   r$   rl   r   r   r   r   r   r   rS   r  )r   r   r$   rl   r   r   r   r   r   r   rS   r  )r  r  r  rl   r  r   r  r   r  r  r_   r  r   r   r   r   r   r   rS   r  )r  r  r  r  r  r   r  r   r  r  r$   rl   r(   rl   r   r   r   r   r   r   rS   r  )
r$  r  r   r   r   r   r   r   rS   r#  )r*  r   r+  r   r$   rl   r   r   r   r   r   r   rS   r)  )r1  r   r2  r   r   r   r   r   r   r   rS   r0  )r   r   r8  rl   r:  r=  r;  r   r<  rl   r   r   r   r   rS   r7  )rC  rH  r   rI  rD  r   rF  rJ  r$   rl   r  r   rG  rK  rL   rl   r   r   r   r   r   r   r   r   rS   rB  )r   r   r:  r=  r;  r   r<  rl   r   r   rQ  rl   r   r   rS   rP  )rC  rY  rW  r   rF  rJ  r$   rl   r  r   rX  r   rG  rK  r(   rl   r   r   r   r   r   r   rS   rV  )r   r   r   r   r_  rI  r`  rl   ra  rl   rb  r   r+   rc  r$   rl   rQ  rl   rG  rK  r   r   r   r   r   r   r   r   rS   r^  )rh  r!   r   r   ri  rl   rj  rl   rk  rl   r:  r=  r;  r   r<  rl   r   r   r   r   rQ  rl   rS   rg  )rq  r!   rC  rs  rF  rJ  rr  rl   r   r   r   r   r   r   rG  rK  rS   rp  )r   r   r   r   rC  rz  r_  rI  rD  r   rb  rl   r+   rc  r$   rl   r   r   r   r   r   r   rQ  rl   ry  rl   r   r   rS   rx  )
rh  r!   r   r   r_   r  r   r=  rS   r  )r  r  r@   rl   r?   rl   r  r   r  r  r  r   r   r   r   r   r   r   rS   r  )
rh  r!   r   r   r_   r  r   r=  rS   r  )r  r  r@   rl   r?   rl   rG  r  r   r   r   r   r   r   rS   r  )r  r   r   r  r  r   r   r   r   r   r   r   r   r   rS   r  )r   r   r  r!   r  r   r  r   r   r   r   r   r   r   rS   r  )
r   r   r   r   r   r   r   r   rS   r  )r#  r	  r  r  r  rl   r  r   r  r	  r  r   r  rl   r$   rl   r   r   r   r   r   r   rS   r  )r#  r	  r  r  r  rl   r  r   r  r	  r  r   r  rl   r$   rl   r   r   r   r   r   r   rS   r  )r   r   r  r  rS   r  )NNN)
r  r!   r   r   r   r   r   r   rS   r  )r,  r   rS   r   )r  r  rS   r4  )r   r  r~   r!   r   r   )r   r  r~   r!   r   r   )r   r  r~   r!   )r]  r!   rS   r^  )rG   
__future__r   _annotationssysr  collections.abcr   r   r   r   r   r	   r
   r  r   rer   typingr   r   r   r   r   typing_extensionsr   r   version_infor   r   r   r   pydantic_corer   ImportErrorr^  r%   r    rM   rH   rN   rR   r|   r   r   r   r   $GeneralPlainNoInfoSerializerFunction"GeneralPlainInfoSerializerFunction"FieldPlainNoInfoSerializerFunction FieldPlainInfoSerializerFunctionr   r   r   r   r   #GeneralWrapNoInfoSerializerFunction!GeneralWrapInfoSerializerFunction!FieldWrapNoInfoSerializerFunctionFieldWrapInfoSerializerFunctionr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r!  r,  r.  r1  r3  r;  r=  rG  rI  rM  rO  rS  rU  r[  r]  rf  rh  rk  JsonTypern  rt  rv  ry  r{  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r-   r!   r  r  r  r  r  r  r  r  r  r  ValidationFunctionr  r  r  r  r  r  r  r  r  r  r  r  WrapValidatorFunctionr  r  r  r  r  r  r  r  r  r
  r  r  r  r!  r#  r'  r)  r.  r0  r5  r7  r@  rB  rN  rP  rT  rV  r\  r^  re  rg  rn  rp  rv  rx  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r1  r  r  r  r  r  r  r  r  MYPYr   CoreSchemaTypeCoreSchemaFieldType	ErrorTyper   r8  r=  rB  rF  rI  rN  rQ  rU  rX  rc  rY  rh  rI   rJ   rK   <module>r     s%    
 3 2 2 2 2 2 



  8 8 8 8 8 8 8 8 8 8 4 4 4 4 4 4 4 4 4 4 4 4             ? ? ? ? ? ? ? ? ? ? ? ? ? ? 1 1 1 1 1 1 1 1g !+++++++      g 5???????????4444444444 	%///////
%3333333 % % %"FHH% 34R" R" R" R" R"% R" R" R" R"j L	 K K K K7:|DDDC# C# C# C# C#* C# C# C#L    .x8(       Xh'   @ % 4/ / / / /iu / / / /& & & & (0s
'; $%-s4Ec4J.KS.P%Q "%-sCj#o%> "#+S#7Mc7R,SUX,X#Y  (&&$&  FG    y     (, '+"     @\ \ \ \ \H \ \ \
 '/5R/SUX/X&Y #$,c3PRcdgRh-ikn-n$o !$,c38U-VX[-[$\ !"*C6SUkloUp+qsv+v"w '%%#%     iu     (,  $'+"           F    iu     HZ c c c c c c    	    
 3E      ! ! ! ! !Ye ! ! ! !@ @ @ @ $#	    IU    	F 	F 	F 	F 	F    IU     =A&*     6    	     im_ _ _ _ _ _,    %     im` ` ` ` ` `,    %     &*&*	o o o o o4
 
 
 
 
	 
 
 
 
 #&*&*- - - - - -`    )5      "& $&*&*0 0 0 0 0 0f    IU    $ "&"&!!%&*&*7 7 7 7 7 7t    IU     &*&*     D    9E    $ *.!!$(  >B)-&*&*; ; ; ; ; ;|    )5     "!&*&*$ $ $ $ $ $N    %    $ /3!%&*&*1 1 1 1 1 1h    %      <@;E&*&*1 1 1 1 1 1h    Ye    ( /3<@!%;E&*&*9 9 9 9 9 9x
 
 
 
 
iu 
 
 
 
 ;E&*&*. . . . . .b    IU     &*&*v v v v v v6	 	 	 	 	% 	 	 	 	  7;+/&*&*0 0 0 0 0 0f    IU     '+&*
 
 
 
 
 HI    y      &*&*     D    y      &*&*" " " " " "J    Ye     imd d d d d d,    %     48&*&*
 
 
 
 
 
    	     59UY ] ] ] ] ] ]   19 <= 	+ 	+ 	+ 	+ 	+% 	+ 	+ 	+ 	+ '+* "!!&*48* * * * * *b (,&*48- - - - - -d '+) "!&*48) ) ) ) ) )X
+ 
+ 
+ 
+ 
+)5 
+ 
+ 
+ 
+  '+!!!&*480 0 0 0 0 0f	 	 	 	 		 	 	 	 	 '+, "!!&*&*, , , , , ,^	 	 	 	 	iu 	 	 	 	 '+, "!!&*&*, , , , , ,^+ + + + +iu + + + + '+, "!&*48, , , , , ,^ c3h 	    %     7;X\ Y Y Y Y Y Y !!3Y!>? 
, 
, 
, 
, 
,% 
, 
, 
, 
, &*'+/ "!!&*&*/ / / / / /f #C5#:. & & & & &I & & & %c>#+>%?%DE     iu     8:YYZ     y    ) ) ) ) )$<E ) ) ) ) 26&*&*+ + + + + +d "26&*&*7 7 7 7 7 7t. . . . .#;5 . . . . 26&*&*) ) ) ) ) )` "&*&*4 4 4 4 4 4n    8    '-I'JC'OP * * * * *	 * * * !)#/K^\_M`)acf)f g     )5     ?Adde     )5     26&*&*. . . . . .j "26&*&*8 8 8 8 8 8v    9E     26&*&*% % % % % %V "26&*&*. . . . . .b    	    " %W[.2;?$(&*&*5 5 5 5 5 5p    Ye     &*&*     >    )5    $ "&$('+8<59&*&*0 0 0 0 0 0f    	    $ %)'+@D#'&*&*P P P P P Pf    )5     &*&*n n n n n nD    	     &*&*3 3 3 3 3 3l    %     &*&*- - - - - -`4 4 4 4 4Ye 4 4 4 4 !MQ&*)-&*=A% % % % % %P    iu    ( !26'++/&*&* $= = = = = =@    %     NR&*)-=A&*% % % % % %P    	    $ "26'+,0+/#'&*&*6 6 6 6 6 6r    )5    , (,#" TX+/ $&*&*R R R R R Rj4 4 4 4 4Ye 4 4 4 4&  !MQ&*)-&*=A6 6 6 6 6 6r	" 	" 	" 	" 	")5 	" 	" 	" 	"  37%)&*&*+/0 0 0 0 0 0f    iu    . (,!TX&*&* $8 8 8 8 8 8vJ J J J J% J J J J X\BFL L L L L L< ##CD D D D D
 
 
 
 
iu 
 
 
 
  %)%))-,0+/&*&*5 5 5 5 5 5pJ J J J J9E J J J J4 BF#L #L #L #L #L #LL    	     %)%)9=&*&*0 0 0 0 0 0f    %     !%'+&*&*3 3 3 3 3 3l    	     (,26&*&*+ + + + + +\    %     !%+o &*&*+o +o +o +o +o +o\    	      "(,!%###'+&*&*4 4 4 4 4 4n    %      "(,!%###'+&*&*4 4 4 4 4 4n    	    Y Y Y Y.    	     &*&*	    D   8.3	 3	3	3	 	3	 		3	
 	3	 	3	 	3	 	3	 	3	 	3	 	3	 	3	 	3	 	3	 	3	  	!3	" 	#3	$ 	%3	& 	'3	( 	)3	* 	+3	, 	-3	. 	/3	0 	13	2 	%33	4 	&53	6 	$73	8 	%93	: 	;3	< 	=3	> 	?3	@ 	A3	B 	C3	D 	E3	F 	G3	H 	I3	J 	K3	L 	M3	N 	O3	P 	Q3	R 	S3	T 	U3	V 	W3	X 	Y3	Z 	[3	\ 	]3	^ 	_3	` 	a3	b 	"c3	d 	e3	f 	g3	 3	5JJl.
 35n de 
 gi	X> > > >    qrrb b b srb stt@ @ ut@ oppa a a qpa qrr? ? sr? mnn` ` ` on` opp> > qp> oppY Y Y qpY qrr? ? sr? *7 9"?	    )(	 	 	 	 	 	s   B B%$B%