
    ]f             	         U d Z ddlmZ ddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlmZmZ ddlmZmZ ddlmZ ddlmZ ddl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 ddl
m Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z- ddlm.Z. ddl/m0Z0m1Z1m2Z2m3Z3 ddl4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z; ddl<m=Z= ddl>m?Z?m@Z@ ddlAmBZBmCZCmDZD ddlEmFZFmGZGmHZH ddlImJZJ ddlKmLZL ddlmMZM ddlNmOZOmPZPmQZQmRZRmSZS ddlTmUZUmVZV ddlWmXZXmYZY ddlOmZZZm[Z[m\Z\m]Z]m^Z^m_Z_m`Z`maZambZb ddlPmcZcmdZdmeZemfZfmgZgmhZhmiZimjZjmkZkmlZlmmZmmnZn ddlompZp ddlqmrZrmsZs dd ltmuZu dd!lvmwZwmxZxmyZymzZz dd"l{m|Z| dd#l}m~Z~ dd$lSmZmZ dd%lmZ e r&dd&lmZmZ dd'lmZ dd(lmZ dd)lmZ dd*lmZ dd+l}mZ e	j        d,k    Z ee5ed-f                   Ze+ejefeef         Z e*d.e/          Ze+ecej         ecef         ecee         f         Ze?Ze"e!ege2j0        f         Zee
j        gZd0ed1<   ee
j        ej        j        gZd0ed2<   ee
j        ej        j        gZd0ed3<   ee
j        ej        j        gZd0ed4<   ee
j#        ej        j        ej        j(        gZd0ed5<   dd<ZddBZddFZddMZddNddWZe#e)e!         eDf         Zdd\Ze+e#ee!f         df         Z G d] d^          ZddaZ G db dc          Zdd de df dg dh di dj dk dlZdmedn<   ddqZddsZddwZddzZdd|ZddZddZ G d de8          ZddddddddZ G d d          ZddZ G d d          Z G d d          ZdS )z-Convert python types to pydantic-core schema.    )annotationsN)	ExitStackcontextmanager)copydeepcopy)Enum)partial)	Parameter_ParameterKind	signature)chain)
attrgetter)FunctionType
LambdaType
MethodType)TYPE_CHECKINGAnyCallableDictFinal
ForwardRefIterableIteratorMappingTypeTypeVarUnioncastoverload)warn)
CoreSchemaPydanticUndefinedcore_schemato_jsonable_python)	AnnotatedLiteralTypeAliasType	TypedDictget_args
get_originis_typeddict   )AliasGenerator)GetCoreSchemaHandlerGetJsonSchemaHandler)
ConfigDictJsonDictJsonEncoder)PydanticSchemaGenerationErrorPydanticUndefinedAnnotationPydanticUserError)JsonSchemaValue)version_short)PydanticDeprecatedSince20   )_core_utils_decorators_discriminated_union_known_annotated_metadata_typing_extra)ConfigWrapperConfigWrapperStack)CoreMetadataHandlerbuild_metadata_dict)	CoreSchemaOrFieldcollect_invalid_schemasdefine_expected_missing_refsget_refget_type_refis_function_with_inner_schema%is_list_like_schema_with_items_schemasimplify_schema_referencesvalidate_core_schema)	DecoratorDecoratorInfosFieldSerializerDecoratorInfoFieldValidatorDecoratorInfoModelSerializerDecoratorInfoModelValidatorDecoratorInfoRootValidatorDecoratorInfoValidatorDecoratorInfoget_attribute_from_basesinspect_field_serializerinspect_model_serializerinspect_validator)extract_docstrings_from_cls)collect_dataclass_fieldsget_type_hints_infer_globalns)PydanticRecursiveRef)get_standard_typevars_maphas_instance_in_typerecursively_defined_type_refsreplace_types)MockCoreSchema)CallbackGetCoreSchemaHandler)is_finalvaris_self_type)lenient_issubclass)ComputedFieldInfo	FieldInfo	BaseModel)Discriminator)FieldValidatorModes)StandardDataclass)GetJsonSchemaFunction)      {   FieldDecoratorInfoType)boundz
list[type]TUPLE_TYPES
LIST_TYPES	SET_TYPESFROZEN_SET_TYPES
DICT_TYPESinfoFieldDecoratorInfofieldstrreturnboolc                B    d| j         v rdS | j         D ]}||k    r dS dS )zCheck if field name is in validator fields.

    Args:
        info: The field info.
        field: The field name to check.

    Returns:
        `True` if field name is in validator fields, `False` otherwise.
    *TF)fields)rw   ry   v_field_names      U/var/www/html/env/lib/python3.11/site-packages/pydantic/_internal/_generate_schema.py)check_validator_fields_against_field_namer   r   sC     dkt  5  44 !5    
decoratorsIterable[AnyFieldDecorator]r   Iterable[str]Nonec           	         t          |          }| D ]U}d|j        j        v r|j        j        du r |j        j        D ](}||vr"t	          d|j         d|j         dd          )VdS )	av  Check if the defined fields in decorators exist in `fields` param.

    It ignores the check for a decorator if the decorator has `*` as field or `check_fields=False`.

    Args:
        decorators: An iterable of decorators.
        fields: An iterable of fields name.

    Raises:
        PydanticUserError: If one of the field names does not exist in `fields` param.
    r~   Fz*Decorators defined with incorrect fields: .zO (use check_fields=False if you're inheriting from the model and intended this)zdecorator-missing-fieldcodeN)setrw   r   check_fieldsr5   cls_refcls_var_name)r   r   decry   s       r   check_decorator_fields_existr      s     [[F  #(/!!8 E))X_ 	 	EF""'f f fsO_ f f f2    #	 r   validator_functions+Iterable[Decorator[FieldDecoratorInfoType]]'list[Decorator[FieldDecoratorInfoType]]c                     fd| D             S )Nc                >    g | ]}t          |j                  |S  )r   rw   ).0r   ry   s     r   
<listcomp>z8filter_field_decorator_info_by_field.<locals>.<listcomp>   s.    mmmC2[\_\dfk2l2lmCmmmr   r   )r   ry   s    `r   $filter_field_decorator_info_by_fieldr      s!     nmmm.mmmmr   schemacore_schema.CoreSchemaeach_item_validators'list[Decorator[ValidatorDecoratorInfo]]
field_name
str | Nonec                T   | d         dk    rt          | d         ||          | d<   | S | d         dk    r>|                     d          x}&t          | d         |         ||          | d         |<   nt          |           r@|                     dd           }|t	          j                    }t          |||          | d<   nf| d         dk    r@|                     dd           }|t	          j                    }t          |||          | d<   n|rt          d	| d                    | S )
Ntypenullabler   tuplevariadic_item_indexitems_schemadictvalues_schemazO`@validator(..., each_item=True)` cannot be applied to fields with a schema of )apply_each_item_validatorsgetapply_validatorsrI   r#   
any_schema	TypeError)r   r   r   r   inner_schemas        r   r   r      sf    f~##5fX6FH\^hiix	7	"	"#)::.C#D#DDQ:J~&':;=QS]; ;F>"#67 
/v	6	6 
zz.$77&133L!1,@TV`!a!a~	6	!	! zz/488&133L"2<AUWa"b"b	 
n^dek^lnn
 
 	
 Mr   )titleschema_or_fieldrC   handlerr/   clsr   r   r6   c                  ddl m} ddlm} ddlm} ddlm}  ||           }|                    |          }	d|	v r$|	d         }
|		                                 d|
ig|	d<   |||	d
<   nd
|	vr
|j
        |	d
<   ||u s ||          s ||          rd	n|j        }|rd|	vrt          j        |          |	d<   n7t          ||          r'|j        d         j        r|j        d         j        |	d<   |S )a  Add title and description for model-like classes' JSON schema.

    Args:
        schema_or_field: The schema data to generate a JSON schema from.
        handler: The `GetCoreSchemaHandler` instance.
        cls: The model-like class.
        title: The title to set for the model's schema, defaults to the model's name

    Returns:
        JsonSchemaValue: The updated JSON schema.
    r,   is_pydantic_dataclassrg   )	RootModelr9   )is_builtin_dataclassz$refallOfNr   descriptionroot)dataclassesr   mainrh   
root_modelr   _dataclassesr   resolve_ref_schemaclear__name____doc__inspectcleandoc
issubclassmodel_fieldsr   )r   r   r   r   r   rh   r   r   json_schemaoriginal_schemaref	docstrings               r   modify_model_json_schemar      su   $ 433333      &&&&&&222222'/**K00==O  f%%+SM? #(  		'	'#&< y((,@,@,E,E(I^I^_bIcIc(ilitI N]/99)0)9))D)D&&	C	#	# N(8(@(L N),)9&)A)M&r   json_encodersJsonEncoders | Nonetpr!   c                *   | s|S d|v r|S |gt          |d|j        j                  dd         R D ]`}|                     |          }|t	          j        dt                       dt                     t          j	        |d          |d<   |c S |S )	a  Iterate over the json_encoders and add the first matching encoder to the schema.

    Args:
        json_encoders: A dictionary of types and their encoder functions.
        tp: The type to check for a matching encoder.
        schema: The schema to add the encoder to.
    serialization__mro__Nz=`json_encoders` is deprecated. See https://docs.pydantic.dev/z</concepts/serialization/#custom-serializers for alternativesjson)	when_used)
getattr	__class__r   r   warningsr    r7   r8   r#   $plain_serializer_function_ser_schema)r   r   r   baseencoders        r   ,_add_custom_serialization_from_json_encodersr      s      &   Hgb)R\-ABB3B3GHH  ##D))? ZMOO  Z  Z  Z%	
 	
 	
 #."RSZfl"m"m"mMr   c                  J    e Zd ZdZddZedd            Zedd	            Zd
S )TypesNamespaceStackzA stack of types namespaces.types_namespaceTypesNamespacec                    |g| _         d S N_types_namespace_stack)selfr   s     r   __init__zTypesNamespaceStack.__init__#  s    =L<M###r   r{   c                    | j         d         S Nr   r   r   s    r   tailzTypesNamespaceStack.tail&  s    *2..r   for_type	type[Any]c              #     K   i t          j        |          | j        pi }| j                            |           	 d V  | j                                         d S # | j                                         w xY wr   )r>   get_cls_types_namespacer   r   appendpop)r   r   r   s      r   pushzTypesNamespaceStack.push*  s      b]B8LLbQUQZQ`^`b#**?;;;	.EEE'++-----D'++----s   A A7N)r   r   )r{   r   )r   r   )	r   
__module____qualname__r   r   propertyr   r   r   r   r   r   r   r      sr        &&N N N N / / / X/ . . . ^. . .r   r   abc                    | | n|S )aB  Return the first argument if it is not None, otherwise return the second argument.

    Use case: serialization_alias (argument a) and alias (argument b) are both defined, and serialization_alias is ''.
    This function will return serialization_alias, which is the first argument, even though it is an empty string.
    r   )r   r   s     r   _get_first_non_nullr   4  s     111$r   c                     e Zd ZdZdZ	 dddZedd            Zedd            Z	edd            Z
edd            Zedd            ZddZdd Zdd#Zdd$Zdd%Zdd&Zdd(Zdd,Z G d- d.e          Zdd/Zdd0Zdd4Z	 ddd8Zdd;Ze	 ddd@            ZddAZddDZddEZ e!ddI            Z"e!ddK            Z"dddMZ"ddNZ#ddPZ$ddQZ%ddRZ&ddTZ'd5dUdd]Z(dd_Z)ddaZ*edde            Z+eddi            Z,eddk            Z-ddmZ.ddoZ/ddpZ0ddrZ1ddtZ2ddvZ3e4j5        dfdd}Z6ddZ7ddZ8ddZ9ddZ:ddZ;ddZ<ddZ=ddZ>ddZ?ddZ@ddZAddZBddZCddZDd fddZEddZFddZGddZH	 dddZIddZJdS )GenerateSchemaz\Generate core schema for a Pydantic model, dataclass and types like `str`, `datetime`, ... .)_config_wrapper_stackr   _typevars_mapfield_name_stackmodel_type_stackdefsNconfig_wrapperr?   r   dict[str, Any] | Nonetypevars_mapdict[Any, Any] | Noner{   r   c                    t          |          | _        t          |          | _        || _        t                      | _        t                      | _        t                      | _
        d S r   )r@   r   r   r   r   _FieldNameStackr   _ModelTypeStackr   _Definitionsr   )r   r   r   r  s       r   r   zGenerateSchema.__init__I  sW     &8%G%G"&9/&J&J#) / 1 1 / 1 1 NN			r   config_wrapper_stackr@   types_namespace_stackr   r   r  r   r  c                    |                      |           }||_        ||_        ||_        ||_        t                      |_        ||_        |S r   )__new__r   r   r   r   r  r   r   )r   r  r  r   r  r   objs          r   __from_parentzGenerateSchema.__from_parentW  sO     kk#$8!%:"/(.00
r   c                    | j         j        S r   )r   r   r   s    r   _config_wrapperzGenerateSchema._config_wrapperi  s    )..r   c                    | j         j        S r   )r   r   r   s    r   _types_namespacezGenerateSchema._types_namespacem  s    *//r   c                    | j         j        pt          }|                    | j        | j        | j        | j        | j                  S r   )	r  schema_generatorr   _GenerateSchema__from_parentr   r   r   r   r   )r   r   s     r   _current_generate_schemaz'GenerateSchema._current_generate_schemaq  sG    "3E~  &'!I
 
 	
r   r|   c                    | j         j        S r   )r  arbitrary_types_allowedr   s    r   _arbitrary_typeszGenerateSchema._arbitrary_types|  s    #;;r   r!   c                (    t          j                    S )zGenerate a CoreSchema for `str`)r#   
str_schemar   s    r   r  zGenerateSchema.str_schema  s    %'''r   r   r   
items_typec                P    t          j        |                     |                    S r   )r#   list_schemagenerate_schemar   r   r  s      r   _list_schemazGenerateSchema._list_schema  s!    &t';';J'G'GHHHr   	keys_typevalues_typec                x    t          j        |                     |          |                     |                    S r   )r#   dict_schemar  )r   r   r   r!  s       r   _dict_schemazGenerateSchema._dict_schema  s2    &t';';I'F'FH\H\]hHiHijjjr   c                P    t          j        |                     |                    S r   )r#   
set_schemar  r  s      r   _set_schemazGenerateSchema._set_schema  s!    %d&:&::&F&FGGGr   c                P    t          j        |                     |                    S r   )r#   frozenset_schemar  r  s      r   _frozenset_schemaz GenerateSchema._frozenset_schema  s!    +D,@,@,L,LMMMr   c                    t          |t                    s+t          |dt                     t	          j                    S t	          j        |          S )Na   is not a Python type (it may be an instance of an object), Pydantic will allow any object with no validation since we cannot even enforce that the input is an instance of the given type. To get rid of this error wrap the type with `pydantic.SkipValidation`.)
isinstancer   r    UserWarningr#   r   is_instance_schema)r   r   s     r   _arbitrary_type_schemaz%GenerateSchema._arbitrary_type_schema  sb    "d## 	, Z Z Z    )+++-b111r   r  c                (    t          d|d          )N,Unable to generate pydantic-core schema for a  . Set `arbitrary_types_allowed=True` in the model_config to ignore this error or implement `__get_pydantic_core_schema__` on your type to fully support it.

If you got this error by calling handler(<some type>) within `__get_pydantic_core_schema__` then you likely need to call `handler.generate_schema(<some type>)` since we do not call `__get_pydantic_core_schema__` on `<some type>` otherwise to avoid infinite recursion.)r3   r   r  s     r   _unknown_type_schemaz#GenerateSchema._unknown_type_schema  s.    +f3 f f f
 
 	
r   r   discriminatorstr | Discriminator | Nonec                    ||S 	 t          j        ||          S # t           j        $ r t          j        ||           |cY S w xY wr   )r<   apply_discriminatorMissingDefinitionForUnionRefset_discriminator_in_metadata)r   r   r4  s      r   _apply_discriminator_to_unionz,GenerateSchema._apply_discriminator_to_union  su      M	';   $@ 	 	 	 >   MMM	s    &AAc                      e Zd ZdS )GenerateSchema.CollectedInvalidN)r   r   r   r   r   r   CollectedInvalidr<    s        r   r=  c                    |                      |          }t          |          }t          |          r|                                 t	          j        |          }t          |          }|S r   )collect_definitionsrJ   rD   r=  r<   apply_discriminatorsrK   )r   r   s     r   clean_schemazGenerateSchema.clean_schema  sf    ))&11+F33"6** 	*'')))%:6BB%f--r   c                $   t          d|                    dd                     }|r|| j        j        |<   d|v rt	          j        |d                   }t	          j        |t          | j        j                                                            S )Nr   r   )	r   r   r   definitionsr#   definition_reference_schemadefinitions_schemalistvalues)r   r   r   s      r   r?  z"GenerateSchema.collect_definitions  s    <E4!8!899 	0)/DI!#&F?? <VE]KKF-&--//00
 
 	
r   metadata_schemajs_functionCallable[..., Any]c                    t          |          j        }|                    dg           }||vr|                    |           d S d S )Npydantic_js_functions)rA   metadata
setdefaultr   )r   rH  rI  rM  rL  s        r   _add_js_functionzGenerateSchema._add_js_function  sY    &77@ ( 3 34KR P P 333!((55555 43r   Tfrom_dunder_get_core_schemar   c                .   d}|r|                      ||          }||}||                     |          }t          ||          }|2t          || j        j                  }|r|                     ||           t          | j        j	        ||          }|S )a  Generate core schema.

        Args:
            obj: The object to generate core schema for.
            from_dunder_get_core_schema: Whether to generate schema from either the
                `__get_pydantic_core_schema__` function or `__pydantic_core_schema__` property.

        Returns:
            The generated core schema.

        Raises:
            PydanticUndefinedAnnotation:
                If it is not possible to evaluate forward reference.
            PydanticSchemaGenerationError:
                If it is not possible to generate pydantic-core schema.
            TypeError:
                - If `alias_generator` returns a disallowed type (must be str, AliasPath or AliasChoices).
                - If V1 style validator with `each_item=True` applied on a wrong field.
            PydanticUserError:
                - If `typing.TypedDict` is used instead of `typing_extensions.TypedDict` on Python < 3.12.
                - If `__modify_schema__` method is used instead of `__get_pydantic_json_schema__`.
        N)
_generate_schema_from_property_generate_schema_inner!_extract_get_pydantic_json_schemaresolve_original_schemar   rC  rO  r   r  r   )r   r  rP  r   from_propertymetadata_js_functionrH  s          r   r  zGenerateSchema.generate_schema  s    6 %)& 	' ??SIIM(&>0055F@fMM+5fdi>STTO M%%o7KLLL=d>R>`begmnnr   r   type[BaseModel]c                	     j                             |          5 \  }}||cddd           S |j        }|j        j        }t          t          j                                        j	                                        j
                                                  h |                                |                                           t          |j        d          }|                    |          }                     ||          }t!          t#          t$          ||          g          }	j                                        }
d}|                    d          dk    r|j        d         |u sJ |j        d	         t,          u sJ |j        dd	         D ]}t/          |d
i                               dd          }|t1          |t2                    r/t5          j        t5          j        |dd           j                  }t=          |          }|t>          t@          fvrtC          d           "                    |d          d         }|tF          ur $                    |          } nى j%        &                    |          5   j'        &                    |          5   j(         |j)        rq *                    d|d                   }|d         }tW          ||
d          }tY          j-        ||t/          |dd          dt/          |dd          |||	          }ntY          j.         fd|/                                D              fd|                                D             ||j0                  }tc          |j2                                        d          }tg          |ti                                }||}tW          ||
d          }tY          j-        ||t/          |dd          dt/          |dd          |||	          } 5                    |j6                                                  }tW          ||
d          }| j         j7        |<   tY          j8        |          cddd           cddd           cddd           S # 1 swxY w Y   ddd           n# 1 swxY w Y   ddd           dS # 1 swxY w Y   dS )z%Generate schema for a Pydantic model.NF)checkr   r   js_functionsextra_fields_behaviorallowr   r   __annotations____pydantic_extra__T)is_argumentis_classzEThe type annotation for `__pydantic_extra__` must be `Dict[str, ...]`requiredr9   r   r   inner__pydantic_custom_init____pydantic_post_init__)custom_initr   	post_initconfigr   rM  c                F    i | ]\  }}|                     ||          S r   )_generate_md_field_schemar   kvr   r   s      r   
<dictcomp>z0GenerateSchema._model_schema.<locals>.<dictcomp>O  s4    hhhQUQRTUD::1aLLhhhr   c                F    g | ]}                     |j                  S r   _computed_field_schemafield_serializersr   dr   r   s     r   r   z0GenerateSchema._model_schema.<locals>.<listcomp>P  s<     ) ) ) ! !77:;WXX) ) )r   )computed_fieldsextras_schema
model_nameouter)9r   get_schema_or_refr   __pydantic_decorators__rx  r   r   field_validatorsrG  ru  
validatorskeysr?   model_configcore_config_get_model_title_from_configrB   r	   r   model_validatorsr   r   objectr   r,  rz   r>   eval_type_backport_make_forward_refr  r*   r   r   r3    _get_args_resolving_forward_refsr   r  r   r   r   r  __pydantic_root_model___common_field_schemaapply_model_validatorsr#   model_schemamodel_fields_schemaitemsr   r   root_validatorsrE   r^   _apply_model_serializersmodel_serializersrC  rD  )r   r   	model_refmaybe_schemar   rx  r   r  r   rM  r  ry  candidate_clsextras_annotationr   extra_items_type
root_fieldr   r  fields_schemanew_inner_schemar   r   s   `                     @r   _model_schemazGenerateSchema._model_schema  s   Y((-- ]	J1J)\'#]	J ]	J ]	J ]	J ]	J ]	J ]	J ]	J %F4J(8O(/668807799)0022 
 :&++--9/"6"6"8"89   +3+;5IIIN(44S99K55c>JJE*AY_bjo9p9p9p8qrrrH):AACC M6777BB{1~,,,,{2&0000%(["%5 " "M(/?PRT(U(U(Y(YZnpt(u(u%(4%&7== 0=0P - ?@Q_dos t t t $ 51 1- ((9::dD\11"? g# #  ,0+P+P-%) ,Q , , ,( ,366,0,@,@AQ,R,RM!E+00@@ .J .J$B]BbBbcfBgBg .J .J4. '!%!:!:66&>S]!^!^J#-h#7L#9,HXZa#b#bL#.#;$$+C1KT$R$R#'")#/G"N"N*%!)	$ 	$ 	$LL =H<[hhhhhY_YeYeYgYghhh) ) ) ) )%4%;%;%=%=) ) ) '4#&<= = =M $4M:C]CdCdCfCfhl#m#mL'CLRoRqRq'r'r$'3'7#9,HXZa#b#bL#.#;$$+C1KT$R$R#(")#/G"N"N*%!)	$ 	$ 	$L 66|ZEaEhEhEjEjkk/8H'RR39	%i0">yII].J .J .J .J .J .J .J .J .J .J .J .J .J .J_]	J ]	J ]	J ]	J ]	J ]	J ]	J ]	J^.J .J .J .J .J .J .J .J .J .J .J .J .J .J .J .J .J .J .J .J .J .J .J_]	J ]	J ]	J ]	J ]	J ]	J ]	J ]	J ]	J ]	J ]	J ]	J ]	J ]	J ]	J ]	J ]	J ]	Jsf   SI&SR<2GR% R<S%R))R<,R)-R<0S<S 	 SS 	SSSmodel#type[BaseModel | StandardDataclass]ConfigWrapper | Noner   c                    |dS |j         r|j         S |j        }|r< ||           }t          |t                    st	          d| d|j                   |S dS )zfGet the title of a model if `model_title_generator` or `title` are set in the config, else return NoneNzmodel_title_generator  must return str, not )r   model_title_generatorr,  rz   r   r   )r  r   r  r   s       r   r  z+GenerateSchema._get_model_title_from_configm  s    
 !4 	(!'' . D  	))%00EeS)) y w9N w wfkfu w wxxxLtr   c                    d
d|d         dk    r9| j         j                            fd|d         D                        |d	         }|S )zuUnpack all 'definitions' schemas into `GenerateSchema.defs.definitions`
        and return the inner schema.
        sr!   r{   rz   c                    | d         S )Nr   r   )r  s    r   rF   z1GenerateSchema._unpack_refs_defs.<locals>.get_ref  s    U8Or   r   rC  c                (    i | ]} |          |S r   r   )r   r  rF   s     r   rq  z4GenerateSchema._unpack_refs_defs.<locals>.<dictcomp>  s#    )W)W)WA''!**a)W)W)Wr   r   )r  r!   r{   rz   )r   rC  update)r   r   rF   s     @r   _unpack_refs_defsz GenerateSchema._unpack_refs_defs  sj    
	 	 	 	 &>]**I!(()W)W)W)WAV)W)W)WXXXH%Fr   sourcecore_schema.CoreSchema | Nonec                   t          |          r| j                                        }| j                            |          5 \  }}||cddd           S 	 ddd           n# 1 swxY w Y   ||u rd}nd}t          |dd          x}Xt          t          j        |          j	                  dk    r ||          }n ||t          | j        | |                    }nt          |dd          x}2t          |t                    s|                    dd          |k    r|}nQt          |d	d          x}	<t          d
t                     t!          j        d  |	            D                       }ndS |                     |          }t'          |          r$|d                             dd          }
|
r|
|d<   nt+          |          }
|
r#|| j        j        |
<   t!          j        |
          S |S )a0  Try to generate schema from either the `__get_pydantic_core_schema__` function or
        `__pydantic_core_schema__` property.

        Note: `__get_pydantic_core_schema__` takes priority so it can
        decide whether to use a `__pydantic_core_schema__` attribute, or generate a fresh schema.
        Nunpackzto-def__get_pydantic_core_schema__r9   )ref_mode__pydantic_core_schema__r   __get_validators__zc`__get_validators__` is deprecated and will be removed, use `__get_pydantic_core_schema__` instead.c                6    g | ]}t          j        |          S r   r#   "with_info_plain_validator_functionr   rp  s     r   r   zAGenerateSchema._generate_schema_from_property.<locals>.<listcomp>  s%    .w.w.wef{/]^_/`/`.w.w.wr   r   r   )rc   r   r   r   r|  r   lenr   r   
parametersra   rS  r,  r`   r    r8   r#   chain_schemar  rH   r   rF   rC  rD  )r   r  r  _r  r  
get_schemar   existing_schemar  r   s              r   rR  z-GenerateSchema._generate_schema_from_property  s     	.'++--CY((-- 	$1B!\'#	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$'	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ &==HHH "#'EtLLLJY7$Z00;<<AA#F++#89TVZemnnn 
 !(-G N NN_[?? \##E400C77$FF#C)=tDDDjQu)   !-.w.wjtjtjvjv.w.w.wxxFF 4''//(00 	""&&ud33C $ #u&//C 	@)/DI!#&:3???s   A$$A(+A(c                    	 t          j        || j                  }n'# t          $ r}t	          j        |          |d }~ww xY wt          |t                    rt	          |j        d|           | j	        rt          || j	                  }|S )N)globalnsz%Unable to evaluate forward reference )r>   r  r  	NameErrorr4   from_name_errorr,  r   __forward_arg__r   r_   )r   r  es      r   _resolve_forward_refz#GenerateSchema._resolve_forward_ref  s    	H23AVWWWCC 	H 	H 	H-=a@@aG	H c:&& 	r-c.ACpknCpCpqqq 	9T%788C
s    
A=Are  Literal[True]tuple[Any, ...]c                    d S r   r   )r   r  re  s      r   r  z/GenerateSchema._get_args_resolving_forward_refs  s    fifir   tuple[Any, ...] | Nonec                    d S r   r   r2  s     r   r  z/GenerateSchema._get_args_resolving_forward_refs  s    TWTWr   Fc                     t          |          }|rt           fd|D                       }n|rt          d| d          |S )Nc                h    g | ].}t          |t                    r                    |          n|/S r   )r,  r   r  )r   r   r   s     r   r   zCGenerateSchema._get_args_resolving_forward_refs.<locals>.<listcomp>  s=    iii_`*Q
:S:SZ$33A666YZiiir   z	Expected z+ to have generic parameters but it had none)r)   r   r   )r   r  re  argss   `   r   r  z/GenerateSchema._get_args_resolving_forward_refs  sd    }} 	ZiiiidhiiijjDD 	ZXXXXYYYr   c                N    |                      |          }|st          S |d         S )Nr   )r  r   )r   r  r  s      r   _get_first_arg_or_anyz$GenerateSchema._get_first_arg_or_any  s+    44S99 	JAwr   tuple[Any, Any]c                    |                      |          }|st          t          fS t          |          dk     r"t          |          }t	          d| d          |d         |d         fS )Nr,   z Expected two type arguments for z, got 1r   r9   )r  r   r  r*   r   )r   r  r  origins       r   _get_first_two_args_or_anyz)GenerateSchema._get_first_two_args_or_any  sn    44S99 	:t99q==__FNvNNNOOOAwQr   c                   t          |t                    r|                     |          S t          |t                    r|S t          |t                    rt          |          }t          |t
                    r(|                     |                     |                    S ddlm	} t          ||          rG| j                            |          5  |                     |          cd d d            S # 1 swxY w Y   t          |t                    rt          j        |j                  S |                     |          S )Nr,   rg   )
schema_ref)r,  _AnnotatedType_annotated_schemar   rz   r   r  r  r   rh   rd   r   r   r  r[   r#   rD  type_ref
match_type)r   r  rh   s      r   rS  z%GenerateSchema._generate_schema_inner  su   c>** 	/))#...c4   	Jc3 	"S//Cc:&& 	H''(A(A#(F(FGGG$$$$$$c9-- 	/&++C00 / /))#../ / / / / / / / / / / / / / / / c/00 	T:clSSSSs###s   C55C9<C9c                	   |t           u r|                                 S |t          u rt          j                    S |t
          u rt          j                    S |t          u rt          j                    S |t          u rt          j
                    S |t          u s	|t          u rt          j                    S ||t          j        u rt          j                    S |t"          v r|                     |          S |t&          v r)|                     ||                     |                    S |t,          v r)|                     ||                     |                    S |t0          v r)|                     ||                     |                    S |t4          v r! | j        |g|                     |          R  S t;          |t<                    r|                     |          S |t@          u r| !                                S t          j"        |          rt          j#                    S t          j$        |          r| %                    |          S tM          |          r| '                    |d          S t          j(        |          r| )                    |d          S t          j*        |          r| +                    |j,                  S |tZ          j.        k    r| /                    |          S |t`          j1        j2        u s|tf          j2        u r| 4                                S t;          |tf          j5                  r| 6                    |          S to          |          rD|tp          u rt          j                    S | +                    |                     |                    S t;          |tr          tt          tv          tx          f          r| =                    |          S t}          j?        |          r1t          |t                    rddlBmC}  ||| jD        jE                  S t          jF        |          r| G                    |d          S | H                    |d          }||\  }}| I                    ||          S t          |          }|| K                    ||          S | jL        r| M                    |          S | N                    |          S )a  Main mapping of types to schemas.

        The general structure is a series of if statements starting with the simple cases
        (non-generic primitive types) and then handling generics and other more complex cases.

        Each case either generates a schema directly, calls into a public user-overridable method
        (like `GenerateSchema.tuple_variable_schema`) or calls into a private method that handles some
        boilerplate before calling into the user-facing method (e.g. `GenerateSchema._tuple_schema`).

        The idea is that we'll evolve this into adding more and more user facing methods over time
        as they get requested and we figure out what the right API for them is.
        Nr9   )get_enum_core_schemar   )Orz   r  bytesr#   bytes_schemaint
int_schemafloatfloat_schemar|   bool_schemar   r  r   r>   NoneTypenone_schemarr   _tuple_schemars   r  r  rt   r'  ru   r*  rv   r$  r  r,  r'   _type_alias_type_schemar   _type_schemais_callable_typecallable_schemais_literal_type_literal_schemar+   _typed_dict_schemais_namedtuple_namedtuple_schemais_new_typer  __supertype__rePattern_pattern_schemacollectionsabcHashabletyping_hashable_schemar   _unsubstituted_typevar_schemarb   r   r   r   r   r	   _callable_schemar   isclassr   r   _std_types_schemar  r  config_dictis_dataclass_dataclass_schema0_get_prepare_pydantic_annotations_for_known_type_apply_annotationsr*   _match_generic_typer  r/  r3  )r   r  r  ressource_typer   r  s          r   r  zGenerateSchema.match_type  s    #::??$$$E\\+---CZZ)+++E\\+---D[[*,,,CZZ3&==)+++[C=#999*,,,K%%c***J$$S$*D*DS*I*IJJJI##C)C)CC)H)HIII$$$))#t/I/I#/N/NOOOJ$4$SP4+J+J3+O+OPPPP]++  	O//444D[[$$&&&+C00 	O.000*3// 	O'',,,# 	O**3555(-- 	O**3555&s++ 	O''(9:::BJ'',,,KO,,,v0F0F((***V^,, 	O55c::: 	Oe||"-///''**3//   lJ
GLMM 	O((---_S!! 	Ojd&;&; 	O??????''T-A-MNNN%c** 	5))#t444CCCLL?'*$K**;DDDC++C888  	4..s333((---r   r  c                   t          |t                    r|                     |          S t          j        |          r|                     ||          S t          j        |          r|                     ||          S |                     ||          }||S t          j	        |          r| 
                    |          S |t          v r|                     |          S |t          v r)|                     ||                     |                    S |t           v r)|                     ||                     |                    S |t$          v r)|                     ||                     |                    S |t(          v r! | j        |g|                     |          R  S t/          |          r|                     ||          S |t2          j        t6          fv r|                     |          S |t2          j        t<          j        j        hv r|                      |          S |t2          j!        t<          j        j!        t2          j"        t<          j        j"        hv r| #                    |          S |tH          j%        t2          j%        fv r| &                    |          S | j'        r| (                    |          S | )                    |          S r   )*r,  r'   r  r>   r  r  r  r  rR  origin_is_union_union_schemarr   r  rs   r  r  rt   r'  ru   r*  rv   r$  r  r+   r  r  r   r   _subclass_schemaSequencer  r  _sequence_schemar   	Generator_iterable_schemar  r  r  r  r/  r3  )r   r  r  rV  s       r   r  z"GenerateSchema._match_generic_typem  s   fm,, 	5//444 %f-- 	7))#v666&v.. 	8**3777;;FCHH$  (00 	-%%c***{""%%c***z!!$$S$*D*DS*I*IJJJy  ##C)C)CC)H)HIII'''))#t/I/I#/N/NOOOz!!$4$SP4+J+J3+O+OPPPP&!! 		-**3777T***((---)ABBB((---)A6CSU`UdUnooo((---
FN333'',,,  	7..v666((---r   rd  namerz   
field_inforf   r   rM   core_schema.TypedDictFieldc          	         |                      |||          }t          j        |d         |                                sdn||d         |d         |d         |d                   S )zAPrepare a TypedDictField to represent a model or typeddict field.r   Fserialization_excludevalidation_aliasserialization_aliasrM  )re  r  r  r  rM  )r  r#   typed_dict_fieldis_required)r   r  r  r   re  common_fields         r   _generate_td_field_schemaz(GenerateSchema._generate_td_field_schema  sx     00z:NN+"","8"8":":HUU"./F"G)*<= ,-B C!*-
 
 
 	
r   core_schema.ModelFieldc           	         |                      |||          }t          j        |d         |d         |d         |d         |d         |d                   S )z0Prepare a ModelField to represent a model field.r   r  r  r  frozenrM  r  r  r  r  rM  )r  r#   model_fieldr   r  r  r   r  s        r   rm  z(GenerateSchema._generate_md_field_schema  sh     00z:NN&""./F"G)*<= ,-B C)!*-
 
 
 	
r   core_schema.DataclassFieldc                    |                      |||          }t          j        ||d         |j        |j        pd|j        rdnd|d         |d         |d         |d         |d         	
  
        S )
zJPrepare a DataclassField to represent the parameter/field, of a dataclass.r   NFr  r  r  r  rM  )init	init_onlykw_onlyr  r  r  r  rM  )r  r#   dataclass_fieldr  init_varr  r  s        r   _generate_dc_field_schemaz(GenerateSchema._generate_dc_field_schema  s     00z:NN*" )1T&.9DDE"./F"G)*<= ,-B C)!*-
 
 
 	
r   alias_generator%Callable[[str], str] | AliasGeneratorr   c                   |j         !|j         dk    s|j        |j        |j        !d\  }}}t	          | t
                    r|                     |          \  }}}nOt	          | t                    r: | |          }t	          |t                    st          d|  d|j
                   |j         |j         dk    rd|_         |j         dk    r1t          ||          |_        t          ||          |_        ||_        |j        ||_        |j        t          ||          |_        |j        t          ||          |_        dS dS dS )a  Apply an alias_generator to aliases on a FieldInfo instance if appropriate.

        Args:
            alias_generator: A callable that takes a string and returns a string, or an AliasGenerator instance.
            field_info: The FieldInfo instance to which the alias_generator is (maybe) applied.
            field_name: The name of the field from which to generate the alias.
        Nr9   NNNalias_generator r  )alias_priorityaliasr  r  r,  r-   generate_aliasesr   rz   r   r   r   )r   r  r   r&  r  r  s         r   $_apply_alias_generator_to_field_infoz3GenerateSchema._apply_alias_generator_to_field_info  s    %-(A--'*2-5;K8E#%8/>:: q?N?_?_`j?k?k<')<)<OX66 q'
33!%-- q#$o$o$o^c^m$o$oppp
 (0J4MQR4R4R,-
) (A--1DEXZ_1`1`
..ABRTY.Z.Z
+#(
  '#(
 -51DEXZ_1`1`
.*2.ABRTY.Z.Z
+++; 658 32r   computed_field_infore   computed_field_namec                   |j         |j         dk    s|j        d\  }}}t          | t                    r|                     |          \  }}}nOt          | t
                    r: | |          }t          |t                    st          d|  d|j                   |j         |j         dk    rd|_         |j         dk    rt          ||          |_        dS dS dS )a  Apply an alias_generator to alias on a ComputedFieldInfo instance if appropriate.

        Args:
            alias_generator: A callable that takes a string and returns a string, or an AliasGenerator instance.
            computed_field_info: The ComputedFieldInfo instance to which the alias_generator is (maybe) applied.
            computed_field_name: The name of the computed field from which to generate the alias.
        Nr9   r#  r$  r  )
r%  r&  r,  r-   r'  r   rz   r   r   r   )r   r)  r*  r&  r  r  s         r   -_apply_alias_generator_to_computed_field_infoz<GenerateSchema._apply_alias_generator_to_computed_field_info  s   $  .6"1Q66"(0;K8E#%8/>:: q?N?_?_`s?t?t<')<)<OX66 q'(;<<!%-- q#$o$o$o^c^m$o$oppp
 #19=P=_cd=d=d56#2
 #1Q66,?@SUZ,[,[#)))+ 10( 76r   FieldInfo | ComputedFieldInfoc                    |j         p| j         }|dS |j        D |||          }t          |t                    st	          d| d|j                   ||_        dS dS )ae  Apply a field_title_generator on a FieldInfo or ComputedFieldInfo instance if appropriate
        Args:
            config_wrapper: The config of the model
            field_info: The FieldInfo or ComputedField instance to which the title_generator is (maybe) applied.
            field_name: The name of the field from which to generate the title.
        Nzfield_title_generator r  )field_title_generatorr   r,  rz   r   r   )r   r  r   r/  r   s        r   *_apply_field_title_generator_to_field_infoz9GenerateSchema._apply_field_title_generator_to_field_info/  s     !+ @ hNDh (F#))*jAAEeS)) y w9N w wfkfu w wxxx$J $#r   _CommonFieldc                    ddl m}m} ddlm} t          j        t          t          f          r j	        } j
        rL|pi                                 }|                    d  j
                                        D                        t          j        j        |          }|j        urt          |t                     ss |j        |          }	|	j        _        |	j                                        D ](\  }
}|
j        vr|
j        vrt)          |
|           )g |	j        j        _        j        j        }}d fd} j                            |          5  j                             |||	          }n                     ||          }d d d            n# 1 swxY w Y   t5          |j                                        |          }t;          |          rd
_        d |D             fd|D             }t?          ||          }tA          |t5          ||          |          }tA          |t5          |j!                                        |          |          }"                                stG          |          } $                    |t5          |j%                                        |                    } &                     j'        |           j(        j)        tU          j+                  pj+        dk    pd tY          j-                  d}d |                                D             }j.        }t_          ta          ||          g          } j'        j1        }| 2                    ||           tg          j4        ||f          rj4        5                                }nj4        }tm          |j7        rd
nd |j8        j9        |          S )Nr,   )AliasChoices	AliasPathrf   c                $    i | ]\  }}|j         |S r   )r   r   ro  rp  s      r   rq  z7GenerateSchema._common_field_schema.<locals>.<dictcomp>Q  s     ']']']$!Q
A']']']r   r   r!   r{   c                >                         | j                  } | S r   )r:  r4  )r   r  r   s    r   set_discriminatorz>GenerateSchema._common_field_schema.<locals>.set_discriminatorf  s     77
@XYYFMr   )transform_inner_schemaTc                .    g | ]}|j         j        d u |S T)rw   	each_itemr  s     r   r   z7GenerateSchema._common_field_schema.<locals>.<listcomp>z  s(    ]]]aAFDTX\D\D\D\D\D\r   c                    g | ]}|v|	S r   r   )r   rp  r   s     r   r   z7GenerateSchema._common_field_schema.<locals>.<listcomp>{  s$     c c cqQNbEbEbEbEbEbr    )r   r   
deprecatedexamplesc                    i | ]
\  }}|||S r   r   r7  s      r   rq  z7GenerateSchema._common_field_schema.<locals>.<dictcomp>  s    ]]]1q}q!}}}r   js_annotation_functionsr  r   r!   r{   r!   ):r?  r3  r4  r   rf   r]   
annotationr   rz   r  r   r   r  r  r>   eval_type_lenientr[   from_annotation_attributes_setmetadata_lookupsetattrrM  r   r   r4  r  r   r  rG  $_validators_require_validate_defaultvalidate_defaultr   r   r~  r  wrap_default_apply_field_serializersru  r0  r  r   r   r|   r@  r$   rA  json_schema_extrarB   get_json_schema_update_funcr   r(  r,  r  convert_to_aliases_common_fieldexcluder  r  )r   r  r  r   r3  r4  rf   r   	evaluatednew_field_inforo  rp  r  r   r9  r   this_field_validatorsjson_schema_updatesrP  rM  r   r  r   s   ` `                   @r   r  z#GenerateSchema._common_field_schemaE  s    	/.......&&&&&&
 5
C7HII 	W"3O! _#2#8b">">"@"@&&']']$BTBZBZB\B\']']']^^^%7
8M__I
 555>RS\^r>s>s5!:!:9!E!E(6(A
% +:@@BB 2 2DAq
 
 :::q
Hb?b?b
Aq111 'W(?&V*BU&V
##-#8*:M[	 	 	 	 	 	 	 "''-- 	 	'300kbs0tt00 		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 !EZEZEaEaEcEcei j j/0EFF 	/*.J']]+@]]] c c c c,A c c c+F4H$OO!&*NOdfj*k*kmqrr!89T9[9[9]9]_cddfj
 
 %%'' 	6!*f55F..89U9\9\9^9^`dee
 
 	778LjZ^___  %%1z455\9NRT9T\X\*:+>??	
 
 ^]0C0I0I0K0K]]]&8&%@ATVg%h%h$i
 
 
 .>&55ozSWXXXj1L)3LMM 	;):MMOO):*4*<"F$$$- * >$
 
 
 	
s   (7F++F/2F/
union_typec                   |                      |d          }g }d}|D ]=}||t          j        u rd}|                    |                     |                     >t          |          dk    r	|d         }n}g }|D ]d}|                    di                               t          j                  }	|	|                    ||	f           O|                    |           et          j
        |          }|rt          j        |          }|S )zGenerate schema for a Union.Trd  FNr9   r   rM  )r  r>   r  r   r  r  r   r:   TAGGED_UNION_TAG_KEYr#   union_schemanullable_schema)
r   rY  r  choicesr   argr  choices_with_tagschoicetags
             r   r  zGenerateSchema._union_schema  s)   44Z$4OO$& 	: 	:C{c]%;;;t33C889999w<<1
AAKM! 5 5jjR0044[5UVV?%,,fc];;;;%,,V4444():;;A 	/+A..Ar   c                ,   | j                             |          5 \  }}||cd d d            S t          |          p|}|j        }t	          |          }| j                            |          5  t          j        || j	                  }t          ||          }|                     |          }|d         dk    sJ ||d<   d d d            n# 1 swxY w Y   || j         j        |<   t          j        |          cd d d            S # 1 swxY w Y   d S )Nr   rC  r   )r   r|  r*   	__value__r\   r   r   r>   rG  r  r_   r  rC  r#   rD  )r   r  r   r  r  rF  r  r   s           r   r  z&GenerateSchema._type_alias_type_schema  s    Y((-- 	@1D#|'#	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@  __+F)J4S99L,11&99 $ $*<ZI^__
*:|DD
--j99f~6666 #u$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ *0DI!#&:3??!	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@s<   D	AD	0ACD	C	D	C	%D		DDliteral_typec                p    t          j        |          }|sJ d|             t          j        |          S )zGenerate schema for a Literal.z(literal "expected" cannot be empty, obj=)r>   all_literal_valuesr#   literal_schema)r   re  expecteds      r   r  zGenerateSchema._literal_schema  s?     3LAARRRLRRRRx)(333r   typed_dict_clsc                    ddl m}  j                            |          5   j                            |          5 \  }}||cddd           cddd           S t          |          }||}t          s)t          |          j	        dk    rt          dd          	 t          |d          }n# t          $ r d}Y nw xY w j                            |          5   j                            |          5   j                            |          } j         |j        }	i }
t'          j        |           j        j        rt-          |d	
          }nd}t/          | j        d	                                          D ]\  }}t5          ||          }||	v }t7          |          t8          j        k    r d	}                     |d	          d         }n<t7          |          t8          j        k    rd}                     |d	          d         } |j         |          }||j!        ||v r||         |_!         "                     j        ||            #                    |||          |
|<    $                    |tK          |                    }tM          tO          tP          ||          g|          }tS          j*        |
 fdj+        ,                                D             |||          } -                    |j.        ,                                          }t_          |j0        ,                                d          }| j        j1        |<   tS          j2        |          cddd           cddd           cddd           cddd           S # 1 swxY w Y   ddd           n# 1 swxY w Y   ddd           n# 1 swxY w Y   ddd           dS # 1 swxY w Y   dS )a  Generate schema for a TypedDict.

        It is not possible to track required/optional keys in TypedDict without __required_keys__
        since TypedDict.__new__ erases the base classes (it replaces them with just `dict`)
        and thus we can track usage of total=True/False
        __required_keys__ was added in Python 3.9
        (https://github.com/miss-islington/cpython/blob/1e9939657dd1f8eb9f596f77c1084d2d351172fc/Doc/library/typing.rst?plain=1#L1546-L1548)
        however it is buggy
        (https://github.com/python/typing_extensions/blob/ac52ac5f2cb0e00e7988bae1e2a1b8257ac88d6d/src/typing_extensions.py#L657-L666).

        On 3.11 but < 3.12 TypedDict does not preserve inheritance information.

        Hence to avoid creating validators that do not do what users expect we only
        support typing.TypedDict on Python >= 3.12 or typing_extension.TypedDict on all versions
        r,   r5  Nr  zXPlease use `typing_extensions.TypedDict` instead of `typing.TypedDict` on Python < 3.12.ztyped-dict-versionr   __pydantic_config__T)use_inspect)localnsinclude_extrasrd  r   Fr[  )r]  rj  c                F    g | ]}                     |j                  S r   rs  rv  s     r   r   z5GenerateSchema._typed_dict_schema.<locals>.<listcomp>C  <     % % % 33Az7STT% % %r   )rx  r   rM  rk  all)3r   rf   r   r   r   r|  r\   _SUPPORTS_TYPEDDICTr   r   r5   rT   AttributeErrorr   r   r  r  r  __required_keys__rM   builduse_attribute_docstringsrX   rZ   r  r  r_   r*   r>   Requiredr  NotRequiredrH  r   r0  r  r  r?   rB   r	   r   r#   typed_dict_schemarx  rG  r  r  r  r  rC  rD  )r   rj  r  rf   typed_dict_refr  r  rk  r  required_keysr   field_docstringsr   rF  re  r  r   rM  	td_schemar   r   s   `                   @r   r  z!GenerateSchema._typed_dict_schema  s     	'&&&&&"''77 X	O X	O9T9TUc9d9d X	O i
'#X	O X	O X	O X	O X	O X	O X	O X	O X	O X	O X	O X	O X	O X	O X	O 5^DDL!!'& 4+?+?+Jh+V+V'n-   
,D^Uj,k,k!    +0088 BO BO$:U:Z:Z[i:j:j BO BO"2>>~NN40>0P@B+1.AA
'@ ,'B>_c'd'd'd$$'+$.K"D,ARV/ / /%'' *J
 "/z<!H!HJ)]:H!*--1GGG#'%)%J%J&%) &K & & &

 $J//=3LLL#(%)%J%J&%) &K & & &

 ";!::!F!FJ(4&2:&*:::1A*1M
.CCDDXZdfpqqq)-)G)G"J
X *H * *F:&& 99.-X^J_J_``.")*B^c"d"d"d!e#1   (9% % % % %!+!;!B!B!D!D% % % '%&	 	 		 66y*B^BeBeBgBghh/
8S8Z8Z8\8\^cdd8>	%n5">~NNEBO BO BO BO BO BO BO BO BO BO BO BO BO BO-X	O X	O X	O X	O X	O X	O X	O X	O X	O X	O X	O X	O X	O X	O X	O,BO BO BO BO BO BO BO BO BO BO BO BO BO BO BO BO BO BO BO BO BO BO BO-X	O X	O X	O X	O X	O X	O X	O X	O X	O X	O X	O X	O X	O X	O X	O X	O X	O X	O X	O X	O X	O X	O X	O X	O X	O X	O X	O X	O X	O X	O X	O X	O X	Os   O,OO,AO"B32O3C?OCON=:I;N&	5N=OO,&N**N=-N*.N=1O=OOOOO,O	O,O	O,,O03O0namedtuple_clsc                     j                                       5   j                                      5 \  }}||cddd           cddd           S t	                    ||t          d j                  }|sd j        D             }r fd|                                D             }t          j
         fd|                                D             t          d                    }t          j        ||	          cddd           cddd           S # 1 swxY w Y   ddd           dS # 1 swxY w Y   dS )
z!Generate schema for a NamedTuple.NT)ro  rn  c                    i | ]
}|t           S r   )r   )r   ro  s     r   rq  z5GenerateSchema._namedtuple_schema.<locals>.<dictcomp>b  s    FFF!q#FFFr   c                8    i | ]\  }}|t          |          S r   r_   )r   r   rF  r  s      r   rq  z5GenerateSchema._namedtuple_schema.<locals>.<dictcomp>e  s9       .
J j, G G  r   c           
         g | ]@\  }}                     ||j                            |t          j                             AS ))default)_generate_parameter_schema_field_defaultsr   r
   empty)r   r   rF  r  r   s      r   r   z5GenerateSchema._namedtuple_schema.<locals>.<listcomp>k  sc        /
J 33"J8V8Z8Z[egpgv8w8w 4    r   )js_prefer_positional_arguments)rM  )r   )r   r   r   r|  r\   rZ   r  _fieldsr  r#   arguments_schemarB   call_schema)r   r  r  namedtuple_refr  r   r  r  s   ``     @r   r  z!GenerateSchema._namedtuple_schemaQ  s   "''77  	a  	a9T9TUc9d9d  	a i
'# 	a  	a  	a  	a  	a  	a  	a  	a  	a  	a  	a  	a  	a  	a  	a 5^DDL!!'*GtT=R+ + +K  GFF~/EFFF    2=2C2C2E2E  
  +;     3>2C2C2E2E	   -DQQQ      *+;^Q_```A 	a  	a  	a  	a  	a  	a  	a  	a  	a  	a  	a  	a  	a  	a  	a  	a  	a  	a  	a  	a  	a  	a  	a  	a  	a  	a  	a  	a  	a  	a  	a  	a  	a  	a  	a  	a  	a  	a  	a  	a  	asA   ED* EB8D*E*D.	.E1D.	2EE	ErF  r   r  modeJLiteral['positional_only', 'positional_or_keyword', 'keyword_only'] | Nonecore_schema.ArgumentsParameterc                   ddl m} |t          j        u r |j        |          }n |j        ||          }|j        
J d            |j        |j        }}| j        	                    |          5  | 
                    ||          }	ddd           n# 1 swxY w Y   |                                st          ||	          }	t          j        ||	          }
|||
d<   |j        |j        |
d<   nd| j        j        }t%          |t&                    r |j        |                    |          |
d<   n#t%          |t(                    r ||          |
d<   |
S )zXPrepare a ArgumentsParameter to represent a field in a namedtuple or function signature.r,   r5  Nz<field.annotation should not be None when generating a schemar  r&  )r   rf   r
   r  rH  from_annotated_attributerF  rM  r   r   r  r  rN  r#   arguments_parameterr&  r  r   r,  r-   r   )r   r  rF  r  r  rf   ry   r  r   r   parameter_schemar   s               r   r  z)GenerateSchema._generate_parameter_schemau  s    	'&&&&&io%%-I-j99EE6I6z7KKE++-k+++#(#3U^["''-- 	G 	G,,[+FFF	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G   "" 	1!%00F&:4HH'+V$;"(-W%%"2BO/>:: B?T?`,;,A,A$,G,G ))OX66 B,;OD,A,A )s   0BBB
tuple_typec                    t          |                               |          }r|rt          fd|D                       }|sE|t          v r(t	          j        t	          j                    gd          S t	          j        g           S |d         t          u rRt          |          dk    r0t	          j         	                    |d                   gd          S t          d          t          |          dk    r |d         dk    rt	          j        g           S t	          j         fd	|D                       S )
zIGenerate schema for a Tuple, e.g. `tuple[int, str]` or `tuple[int, ...]`.c              3  8   K   | ]}t          |          V  d S r   r  )r   paramr  s     r   	<genexpr>z/GenerateSchema._tuple_schema.<locals>.<genexpr>  s-      RR%===RRRRRRr   r   )r   r   r,   z&Variable tuples can only have one typer9   r   c                :    g | ]}                     |          S r   )r  )r   r  r   s     r   r   z0GenerateSchema._tuple_schema.<locals>.<listcomp>  s'    ,],],]UT-A-A%-H-H,],],]r   )r\   r  r   rr   r#   tuple_schemar   Ellipsisr  r  
ValueError)r   r  paramsr  s   `  @r   r  zGenerateSchema._tuple_schema  sY    1<<66zBB 	SF 	SRRRR6RRRRRF  	_[(("/1G1I1I0J`abbbb #/333BZ8##6{{a"/1E1EfQi1P1P0Qghiiii !!IJJJ[[A&)r// +B///+,],],],]V\,],],]^^^r   c                ^    t          j        t          j        t                    dd          S )Nis_typezInput should be a typecustom_error_typecustom_error_message)r#   custom_error_schemar.  r   r   s    r   r  zGenerateSchema._type_schema  s0    .*400'!9
 
 
 	
r   c                r                           |d          }t          j         fd|D                       S )z*Generate schema for `Type[Union[X, ...]]`.Trd  c                Z    g | ]'}                     t          j        |                   (S r   r  r  r   )r   r  r   s     r   r   z<GenerateSchema._union_is_subclass_schema.<locals>.<listcomp>  s/    (b(b(bUY)=)=fk$>O)P)P(b(b(br   )r  r#   r\  )r   rY  r  s   `  r   _union_is_subclass_schemaz(GenerateSchema._union_is_subclass_schema  sB    44Z$4OO'(b(b(b(b]a(b(b(bcccr   type_c                t                          |          }|t          k    r                                 S t          |t          j                  r|j        rYt          j        t          |j                            r 
                    |j                  S t          j        |j                  S |j        r%t          j         fd|j        D                       S                                  S t          j        t          |                    r 
                    |          S t          j        |          S )z-Generate schema for a Type, e.g. `Type[int]`.c                Z    g | ]'}                     t          j        |                   (S r   r  )r   cr   s     r   r   z3GenerateSchema._subclass_schema.<locals>.<listcomp>  s-    ^^^aT))&+a.99^^^r   )r  r   r  r,  r  r   	__bound__r>   r   r*   r  r#   is_subclass_schema__constraints__r\  )r   r  
type_params   `  r   r  zGenerateSchema._subclass_schema  s*   //66
$$&&&
FN33 	># 	+ 0J<P1Q1QRR P99*:NOOO"5j6JKKK+ +"/^^^^:C]^^^   ((****:j+A+ABB 	>11*===1*===r   sequence_typec                   ddl m} |                     |          }|                     |          }t	          j        |          }t	          j        t          j        d          }|t          k    r/ddl
m} t	          j        |t	          j        ||          g          }t	          j        ||d          }t	          j        |||          S )	z5Generate schema for a Sequence, e.g. `Sequence[int]`.r9   )serialize_sequence_via_listr  )cls_repr)sequence_validatorT)r   info_arg)r   python_schemar   )r  r  r  r  r#   r  r.  r  r  r   _validatorsr  r  no_info_wrap_validator_function#wrap_serializer_function_ser_schemajson_or_python_schema)	r   r  r  	item_typeitem_type_schemar  r  r  r   s	            r   r  zGenerateSchema._sequence_schema  s    BBBBBB..}==	//	::!-.>??#6vQ[\\\777777'4 KL^`k l lm M $G'0@4
 
 
 0#=P]
 
 
 	
r   core_schema.GeneratorSchemac                z    |                      |          }t          j        |                     |                    S )z$Generate a schema for an `Iterable`.)r  r#   generator_schemar  )r   r  r  s      r   r  zGenerateSchema._iterable_schema  s4    ..u55	+D,@,@,K,KLLLr   pattern_typec                   ddl m} t          d g          }t          j        t          d          dt          j                              }|t          j        k    s|t          j        k    rt          j
        |j        ||          S |                     |d	
          d         }|t          u rt          j
        |j        ||          S |t          u rt          j
        |j        ||          S t#          d|d          )Nr9   )r  c                    dddS )Nstringregex)r   formatr   )_1_2s     r   <lambda>z0GenerateSchema._pattern_schema.<locals>.<lambda>  s    XahDiDi r   r\  patternr   )r   return_schema)r   rM  Trd  r   r1  r   )r?  r  rB   r#   r   r   r  r  r  r   no_info_plain_validator_functionpattern_either_validatorr  rz   pattern_str_validatorr  pattern_bytes_validatorr3   )r   r  r  rM  serr  s         r   r  zGenerateSchema._pattern_schema  sB   !!!!!!&5i5i4jkkk>y!!V;CYC[C[
 
 
 6>))\RZ-G-G?4CRZ    55 6 
 
  C<<?1x    e^^?33QY    00p_k0p0p0pqqqr   c                r    t          j        t          j        t          j        j                  dd          S )Nis_hashablezInput should be hashabler  )r#   r  r.  r  r  r  r   s    r   r  zGenerateSchema._hashable_schema  s5    .*;?+CDD+!;
 
 
 	
r   	dataclasstype[StandardDataclass]type[StandardDataclass] | Nonec                     j                             |          5   j                            |          5 \  }}||cddd           cddd           S t	          |          }||}t                      5 }|j        D ]C}t          j        |          r-|	                     j
                            |                     Dd}t          |j                  D ]T}t          j        |          r>t          |dd          }|	                     j                            |                     U j                            |          }	 j         ddlm}
  |
|          rIt%          |j                  }|r2|                                D ]}|                    | j                   nt/          | j        |          } j        j        j        dk    r8|                                D ]#\  }}|j        du rt9          d| d	d
          $|j                            d          pt?          j         |          tC           fd|                                D             d           }tE          |d          }tE          |d          }tG          j$        |j%        | fdj&                                        D             |          }tO          |j(                                        d          }j)                                        }tU          ||d          } +                    |tY          |                    }t[          t]          t^          ||          g          }tG          j0        ||||d t          j1        |          D             ||	|          } 2                    |j3                                                  }tU          ||d          }| j        j4        |<   tG          j5        |          cddd           cddd           cddd           S # 1 swxY w Y   J d            # 1 swxY w Y   ddd           dS # 1 swxY w Y   dS )z Generate schema for a dataclass.Nrl  r,   r   )r  r_  FzField zd has `init=False` and dataclass has config setting `extra="allow"`. This combination is not allowed.z dataclass-init-false-extra-allowr   r}  c              3  L   K   | ]\  }}                     ||          V  d S r   )r  rn  s      r   r  z3GenerateSchema._dataclass_schema.<locals>.<genexpr>T  s9      aa$!QT33Aq*EEaaaaaar   c                0    |                      d          duS )Nr  Fr   )r   s    r   r  z2GenerateSchema._dataclass_schema.<locals>.<lambda>U  s    !%%	"2"2%"? r   )key__post_init__	__slots__c                F    g | ]}                     |j                  S r   rs  rv  s     r   r   z4GenerateSchema._dataclass_schema.<locals>.<listcomp>]  rq  r   )rx  collect_init_onlyrf  r[  r\  c                    g | ]	}|j         
S r   )r  )r   ry   s     r   r   z4GenerateSchema._dataclass_schema.<locals>.<listcomp>s  s    RRR5EJRRRr   )rj  r   r   slotsrk  rM  r{  Unreachable)6r   r   r   r|  r\   r   r   r   r  enter_contextr   reversedr   r   r  r  r  r   r   __pydantic_fields__rG  apply_typevars_mapr  rY   r   extrar  r  r5   __dict__r   rM   rv  sortedhasattrr#   dataclass_args_schemar   rx  r   r  r  r  r  r?   rB   r	   r   dataclass_schemar   r  r  rC  rD  )r   r  r  dataclass_refr  r  dataclass_bases_stackdataclass_baserk  r  r   r   ry   r   r  has_post_init	has_slotsargs_schemar   r  r   rM  	dc_schemar   r   s   `                       @r   r  z GenerateSchema._dataclass_schema  s]    "''	22 d	( d	(DI4O4OPY4Z4Z d	( _
'#d	( d	( d	( d	( d	( d	( d	( d	( d	( d	( d	( d	( d	( d	( d	( 5Y??L!"	 UN 5&/&7 n nN"/?? n-;;D<W<\<\]k<l<lmmm &.y/@&A&A e eN"/?? e!(9NPT!U!U-;;D<V<[<[\b<c<cddd"2>>yII4??????((33 
%i&CDDF# Z%+]]__ Z ZE!44\4CXYYYY5!-%1  F -28GCC-3\\^^  )
E :.."3!D !D !D !D%G# # #  / '/334MNNqR`RfgpRqRq
 aaaaaRXR^R^R`R`aaa??   !(	? C C#I{;;	)?&% % % % %!+!;!B!B!D!D% % % '4    0Z=W=^=^=`=`bfgg#-#>#E#E#G#G 5lDTV]^^99)]SYEZEZ[[.")*B	Y^"_"_"_!`   (8 +%RRK4Fy4Q4QRRR#&%	 	 		 66y*B^BeBeBgBghh/8H'RR7=	%m4">}MMkUN UN UN UN UN UN UNd	( d	( d	( d	( d	( d	( d	( d	( d	( d	( d	( d	( d	( d	( d	(UN UN UN UN UN UN UN UNr (-''5Id	( d	( d	( d	( d	( d	( d	( d	( d	( d	( d	( d	( d	( d	( d	( d	( d	( d	( d	( d	( d	( d	( d	( d	( d	( d	(sd   QP<Q!P<9N	P'P<Q'P++P<.P+/P<<Q 	 QQ 	QQQfunctioncore_schema.CallSchemac                   t          |          }t          j        || j                  }t          j        dt          j        dt          j        di}g }d}d}|j        	                                D ]\  }}	|	j
        |j        u r t          j        t          t                    }
n||         }
|                    |	j                  }|3|                     ||
|	j        |          }|                    |           |	j        t          j        k    r|                     |
          }|	j        t          j        k    sJ |	j                    |                     |
          }d}| j        }|j        r,|                    d          }||                     |          }t3          j        t3          j        ||||j                  ||          S )	zsGenerate schema for a Callable.

        TODO support functional validators once we support them in Config
        )r   positional_onlypositional_or_keywordkeyword_onlyNr{   )var_args_schemavar_kwargs_schemapopulate_by_name)r  )r   r>   get_function_type_hintsr  r
   POSITIONAL_ONLYPOSITIONAL_OR_KEYWORDKEYWORD_ONLYr  r  rF  r  r  r   r   r   kindr  r  r   VAR_POSITIONALr  VAR_KEYWORDr  validate_returnr#   r  r  r  )r   r  sig
type_hintsmode_lookuparguments_listr  r  r  prF  parameter_mode
arg_schemar  r   return_hints                   r   r  zGenerateSchema._callable_schema  s   
 !!":8UYUjkkk
 %'8+-D"Nr
 @B9=;?~++-- 	E 	EGD!|sy((#[c22

'-
(__QV44N)!<<T:qyZhii
%%j11119333"&"6"6z"B"Bv!6666666$($8$8$D$D!!7;-) 	B$..22K& $ 4 4[ A A&( /"3!/!@	   '	
 	
 	
 		
r   typevartyping.TypeVarc                X   t          |t          j                  sJ |j        }|j        }	 |                                }n## t          $ r t          |dd           d u}Y nw xY w|d ut          |          dk    z   |z   dk    rt          d          |r| 
                    |j                  S |r%|                     t          j        |                   S |rB| 
                    |          }t          j        d t          j                              |d<   |S t          j                    S )N__default__r   r9   zZPydantic does not support mixing more than one of TypeVar bounds, constraints and defaultsc                     ||           S r   r   )xhs     r   r  z>GenerateSchema._unsubstituted_typevar_schema.<locals>.<lambda>  s    QQqTT r   )r   r   )r,  r  r   r  r  has_defaultrt  r   r  NotImplementedErrorr  r  r  r   r#   r  r   )r   r  rq   constraintstypevar_has_defaultr   s         r   r  z,GenerateSchema._unsubstituted_typevar_schema  sc   '6>22222!-	T")"5"5"7"7 	T 	T 	T")'=$"G"Gt"S	T #k"2"2a"78;NNQRRR%l    	,''(;<<< 		,%%fl;&?@@@ 	,))%00F&1&U!!+*@*B*B' ' 'F?# M)+++s   A A! A!rw  Decorator[ComputedFieldInfo]ru  2dict[str, Decorator[FieldSerializerDecoratorInfo]]core_schema.ComputedFieldc                   	 t          j        j        j        j        | j                  }n'# t          $ r}t          j        |          |d }~ww xY w|t          u rt          dd          t          || j                  }t          j        j        |          _        |                     |          }|                     |t#          |                                j                  d          }| j        j        }|"|                     |j        j                   |                     | j        j        j                   dfd}t1          |g          }t3          j        j        |j        j        |          S )NzComputed field is missing return type annotation or specifying `return_type` to the `@computed_field` decorator (e.g. `@computed_field(return_type=int|str)`)zmodel-field-missing-annotationr   )return_typeTcomputed_field)r   r)  r*  r   rC   r   r/   r{   r6   c                2    ||           }d|d<   j         j        }|||d<   j         j        }|||d<   j         j        sj         j        dk    rd|d<   j         j        }|t          |          |d<   j         j        }|t          ||           |S )NTreadOnlyr   r   r?  r@  rA  )rw   r   r   r@  rA  r$   rP  add_json_schema_extra)r   r   r   r   r   rA  rP  rw  s          r   set_computed_field_metadatazJGenerateSchema._computed_field_schema.<locals>.set_computed_field_metadata  s    !'&//K&*K
#FLE ',G$&,K&-8M*v  1AF$5$;$;,0L)vH#*<X*F*FJ' ! 8 ,%k3DEEEr   rC  )r  r&  rM  )r   rC   r   r/   r{   r6   )r;   get_function_return_typefuncrw   r  r  r  r4   r  r"   r5   r_   r   r   replacer  rO  r   rG  r   r  r   r,  r0  rB   r#   r  r&  )	r   rw  ru  r  r  return_type_schemar   r!  rM  s	    `       r   rt  z%GenerateSchema._computed_field_schema  s   
	H%>qvqvGY[_[pqqKK 	H 	H 	H-=a@@aG	H+++#d5    $K1CDD $QVEEE!11+>>!::01B1I1I1K1KQ^\\ ; 
 
 .>&>> /QVabao ?    	778LafVWVdeee	 	 	 	 	 	4 '@[?\]]])N*<AFL[c
 
 
 	
s   *. 
AAAannotated_typec                    ddl m} |                     |d          ^}}|                     ||          }|D ]"}t	          ||          rt          ||          }#|S )zdGenerate schema for an Annotated type, e.g. `Annotated[int, Field(...)]` or `Annotated[int, Gt(0)]`.r,   r5  Trd  )r   rf   r  r  r,  rN  )r   r&  rf   r  r   r   rF  s          r   r  z GenerateSchema._annotated_schema  s    &&&&&&$($I$I %J %
 %
!k ((kBB & 	: 	:J*i00 :%j&99r   r   tuple[Any, list[Any]] | Nonec                    ddl m} 	 t          |           n# t          $ r Y d S w xY w|D ]} |||| j        j                  }||c S  d S )Nr9   )PREPARE_METHODS)r  r*  hashr   r  r  )r   r  r   r*  genr  s         r   r  z?GenerateSchema._get_prepare_pydantic_annotations_for_known_type&  s     	766666	IIII 	 	 	44	 # 	 	C#c;(<(HIIC


  ts    
&&c                    | S r   r   )r  s    r   r  zGenerateSchema.<lambda>=  s    q r   r  	list[Any]r:  "Callable[[CoreSchema], CoreSchema]c                    t          t          j        |                    }                     t	          |                    }||\  }g }d fd}t          |           }|D ]}|                     |||          } |          }	|r=t          |	          j        }
|
	                    dg           
                    |           t           j        j        |	          S )	a  Apply arguments from `Annotated` or from `FieldInfo` to a schema.

        This gets called by `GenerateSchema._annotated_schema` but differs from it in that it does
        not expect `source_type` to be an `Annotated` object, it expects it to be  the first argument of that
        (in other words, `GenerateSchema._annotated_schema` just unpacks `Annotated`, this process it).
        Nr  r   r{   r!   c                                        |           }|                    |           }n|}t          | |          }|2t          |j        j                  }|                    ||            |          S r   )rR  rS  rT  rU  r   rC  rO  )r  rV  r   rW  rH  r   r  r:  s        r   inner_handlerz8GenerateSchema._apply_annotations.<locals>.inner_handlerL  s     ??[QQM$44S99&#DS&#Q#Q #/"9&$)BW"X"X".))/;OPPP))&111r    pydantic_js_annotation_functionsr  r   r{   r!   )rF  r=   expand_grouped_metadatar  r   ra   _get_wrapped_inner_schemarA   rM  rN  extendr   r  r   )r   r  r   r:  r  r3  r2  get_inner_schemarF  r   rM  s   `` `       r   r  z!GenerateSchema._apply_annotations9  s2    4L[YYZZCCKQVWbQcQcdd?'*$KHJ(	2 	2 	2 	2 	2 	2 	2 	2 8tLL% 	 	J!#== *.N    "!+..+ 	q*622;H BBGGNNOoppp;D<P<^`kmstttr   rM  c                   ddl m} t          ||          rD|j        D ]}|                     ||          }|j        |                     ||j                  }|S |d         dk    rF|                    dt          j	                              }|                     ||          }|r||d<   |S |}|                    dd           }|O|
                                }|dt          |           z   }|| j        j        v r| j        j        |         S ||d<   n|d         dk    rt|d	         }|| j        j        v r^| j        j        |         
                                }|dt          |           z   }|| j        j        v r| j        j        |         S ||d<   t          j        ||
                                          }	|	|	S |S )
Nr,   r5  r   r   r   r   r  definition-refr  )r   rf   r,  rM  _apply_single_annotationr4  r:  r   r#   r   r   reprr   rC  r=   apply_known_metadata)
r   r   rM  rf   field_metadatarf  r   r   new_refmaybe_updated_schemas
             r   r;  z'GenerateSchema._apply_single_annotationh  s   &&&&&&h	** 	"*"3 O O66v~NN%1;;FHDZ[[M&>Z''JJx)?)A)ABBE11%BBE )#(x M jj%%?[[]]F0X000G$)///y,W55#F5MMF^///&Cdi+++.s388:: 4DNN 4 44di3339099 'u8MhX^XcXcXeXeff+''r   c                   ddl m} t          ||          r|j        D ]}|                     ||          }i }|j        r
|j        |d<   |j        r
|j        |d<   |j        rt          |j                  |d<   |j	        }|s|rIt          |          j                            dg                               t          ||                     |S )Nr,   r5  r   r   rA  r3  )r   rf   r,  rM  $_apply_single_annotation_json_schemar   r   rA  r$   rP  rA   rN  r   rQ  )r   r   rM  rf   r>  json_schema_updaterP  s          r   rB  z3GenerateSchema._apply_single_annotation_json_schema  s    	'&&&&&h	** 	"*"3 [ [BB6>ZZ24~ =.6n"7+# I4<4H"=1  W1CHDU1V1V":. ( :! %6 #F++4??@bdfggnn/0BDUVV   r   r8  r.   r3  list[GetJsonSchemaFunction]ra   c                h     t          dd           pd d fd}t          |           S )	Nr  c                     ||           S r   r   )r  r   s     r   r  z:GenerateSchema._get_wrapped_inner_schema.<locals>.<lambda>  s    GGFOO r   r  r   r{   r   c                     |           }                     |          }                    |          }t          |          }|                    |           |S r   )r;  rB  rT  r   )r  r   rW  rF  r8  metadata_get_schemar3  r   s      r   new_handlerz=GenerateSchema._get_wrapped_inner_schema.<locals>.new_handler  sq    ((1ABBF226:FFF>>vzRRF#DZQW#X#X #/0778LMMMMr   )r  r   r{   r   )r   ra   )r   r8  rF  r3  rI  rH  s   ```` @r   r6  z(GenerateSchema._get_wrapped_inner_schema  sn     6=ZIgim5n5n 6
33 		 	 	 	 	 	 	 	 	 	 ,K>>>r   serializers-list[Decorator[FieldSerializerDecoratorInfo]]r  c                8   |rt          |          }|d         dk    r#|d         }|                     ||          |d<   |S t          j        d|                    dd                    }|t          j        |          }|d         }t          |j        |j	        j
        |          \  }}	 t          j        |j        |j	        j        | j                  }	n'# t          $ r}
t!          j        |
          |
d}
~
ww xY w|	t$          u rd}n|                     |	          }|j	        j
        d	k    r,t          j        |j        ||||j	        j        
          |d<   n=|j	        j
        dk    sJ t          j        |j        ||||j	        j        
          |d<   |S )z$Apply field serializers to a schema.r   rC  r   zstr|Noner   Nr   r  wrap)is_field_serializerr  r  r   r   plain)r   rO  r  r   r   r#   rD  rU   r#  rw   r  r;   r"  r  r  r  r4   r  r"   r  r  r   r   )r   r   rJ  r  r   r   
serializerrN  r  r  r  r  s               r   rO  z'GenerateSchema._apply_field_serializers  s     -	&\\Ff~..%h/#'#@#@{#[#[x k*fjj.E.EFF?(DSIIF %RJ,D!5n- - -)L)BOZ_%@$BW   L L L1A!DD!KL /// $ $ 4 4[ A A#v--*5*YO(;%"/(o7+ + +'' "+w6666*5*ZO(;%"/(o7+ + +' s   .*C 
C=#C88C=1Iterable[Decorator[ModelSerializerDecoratorInfo]]c                ^   |                     dd          }|rt          |          d         }t          |j        |j        j                  }	 t          j        |j        |j        j        | j	                  }n'# t          $ r}t          j        |          |d}~ww xY w|t          u rd}n|                     |          }|j        j        dk    r(t          j        |j        |||j        j                  }	n't          j        |j        |||j        j                  }	|	|d<   |r||d<   |S )z$Apply model serializers to a schema.r   Nr   rM  )r  r  r   r   )r   rF  rV   r#  rw   r  r;   r"  r  r  r  r4   r  r"   r  r#   r  r   r   )
r   r   rJ  r   rP  r  r  r  r  
ser_schemas
             r   r  z'GenerateSchema._apply_model_serializers  sZ    !**UD11 	1k**2.J/
AUVVHL)BOZ_%@$BW   L L L1A!DD!KL/// $ $ 4 4[ A A#v--4?4cO%"/(o7	5 5 5

 )MO%"/(o7	  
 '1F?# 	 F5Ms   *A: :
BBB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   r   r  r   r{   r!   )r   r   r   r   r!  r   r{   r!   )r   r   r{   r!   r4  )r   r!   r4  r5  r{   r!   rE  )rH  r!   rI  rJ  r{   r   r<  )r  r   rP  r|   r{   r   )r   rX  r{   r   )r  r  r   r  r{   r   )r  r   r  r   r{   r  )r  r   r{   r   )r  r   re  r  r{   r  )r  r   r{   r  )F)r  r   re  r|   r{   r  )r  r   r{   r  )r  r   r{   r   )r  r   r  r   r{   r!   )
r  rz   r  rf   r   rM   re  r|   r{   r	  )r  rz   r  rf   r   rM   r{   r  )r  rz   r  rf   r   rM   r{   r  )r   r!  r  rf   r   rz   r{   r   )r   r!  r)  re   r*  rz   )r   r?   r  r-  r   rz   r{   r   )r  rz   r  rf   r   rM   r{   r1  )rY  r   r{   r   )re  r   r{   r!   )rj  r   r  r   r{   r   )r  r   r  r   r{   r   )
r  rz   rF  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  r  r{   r   )r  rJ  r{   r  )r  r  r{   r   )rw  r  ru  r  r{   r  )r&  r   r{   r   )r  r   r   r  r{   r(  )r  r   r   r.  r:  r/  r{   r!   )r   r   rM  r   r{   r   )r8  r.   rF  r   r3  rD  r{   ra   )r   r   rJ  rK  r  r|   r{   r   )r   r   rJ  rQ  r{   r   )Kr   r   r   r   r  r   classmethodr  r   r  r  r  r  r  r  r$  r'  r*  r/  r3  r:  	Exceptionr=  rA  r?  rO  r  r  staticmethodr  r  rR  r  r   r  r  r  rS  r  r  r  rm  r  r(  r,  r0  r  r  r  r  r  r  r
   r  r  r  r  r  r  r  r  r  r  r  r  r  rt  r  r  r  r;  rB  r6  rO  r  r   r   r   r   r   =  sz       ffI /3	# # # # #    [" / / / X/ 0 0 0 X0 
 
 
 X
 < < < X<( ( ( (I I I Ik k k kH H H HN N N N
2 
2 
2 
2	
 	
 	
 	
   $    9      	
 	
 	
 	
	6 	6 	6 	6 -1- - - - -^_J _J _J _JB [_    \&   ; ; ; ;z   , iii XiWWW XW              $ $ $ $2T. T. T. T.l*. *. *. *.d 
 
 
 
 
 
&
 
 
 
"
 
 
 
* /[ /[ /[ \/[b (\ (\ (\ \(\T % % % \%*g
 g
 g
 g
R   6@ @ @ @,4 4 4 4jO jO jO jOX"a "a "a "aP ![_!  !  !  !  ! F_ _ _ _<
 
 
 
d d d d
> > > >*
 
 
 
.M M M Mr r r r8
 
 
 
h( h( h( h(T3
 3
 3
 3
j, , , ,<@
 @
 @
 @
D       . FQ[	-u -u -u -u -u^( ( ( (T   .? ? ? ?4  %	5 5 5 5 5n& & & & & &r   r   c                ,    t          j        | |          S r   )r#   !no_info_before_validator_functionfr   r  s      r   r  r  #  s    0]^_ag0h0h r   c                ,    t          j        | |          S r   )r#    no_info_after_validator_functionrY  s      r   r  r  $  s    {/[\]_e/f/f r   c                *    t          j        |           S r   )r#   r  )rZ  r  r  s      r   r  r  %  s    K,XYZ,[,[ r   c                ,    t          j        | |          S r   )r#   r  rY  s      r   r  r  &  s    k.YZ[]c.d.d r   c                0    t          j        | ||          S N)r   )r#   #with_info_before_validator_functionrZ  r   r   s      r   r  r  '  s    ;;j	6j< < < r   c                0    t          j        | ||          S r`  )r#   "with_info_after_validator_functionrb  s      r   r  r  *  s    +:h	6j; ; ; r   c                .    t          j        | |          S r`  r  )rZ  r  r   s      r   r  r  -  s    [5c	j6 6 6 r   c                0    t          j        | ||          S r`  )r#   !with_info_wrap_validator_functionrb  s      r   r  r  0  s    9f	6j: : : r   ))beforeno-info)afterri  )rO  ri  )rM  ri  )rh  	with-info)rj  rk  )rO  rk  )rM  rk  zMapping[tuple[FieldValidatorModes, Literal['no-info', 'with-info']], Callable[[Callable[..., Any], core_schema.CoreSchema, str | None], core_schema.CoreSchema]]_VALIDATOR_F_MATCHr  Iterable[Decorator[RootValidatorDecoratorInfo]] | Iterable[Decorator[ValidatorDecoratorInfo]] | Iterable[Decorator[FieldValidatorDecoratorInfo]]c                    |D ]O}t          |j        |j        j                  }|rdnd}t	          |j        j        |f         |j        | |          } P| S )a  Apply validators to a schema.

    Args:
        schema: The schema to apply validators on.
        validators: An iterable of validators.
        field_name: The name of the field if validators are being applied to a model field.

    Returns:
        The updated schema.
    rk  ri  )rW   r#  rw   r  rl  )r   r  r   	validatorr  val_types         r   r   r   6  sd    "   i i	$Y^Y^5HII"*9;;	#Y^%8($CDY^U[]ghhMr   +Iterable[Decorator[ValidatorDecoratorInfo]]c                .    | D ]}|j         j        r dS dS )a?  In v1, if any of the validators for a field had `always=True`, the default value would be validated.

    This serves as an auxiliary function for re-implementing that logic, by looping over a provided
    collection of (v1-style) ValidatorDecoratorInfo's and checking if any of them have `always=True`.

    We should be able to drop this function and the associated logic calling it once we drop support
    for v1-style validator decorators. (Or we can extend it and keep it if we add something equivalent
    to the v1-validator `always` kwarg to `field_validator`.)
    TF)rw   always)r  ro  s     r   rL  rL  O  s1        	>  	44	5r   0Iterable[Decorator[ModelValidatorDecoratorInfo]]r   Literal['inner', 'outer', 'all']c                   |                      dd          }|D ]0}|dk    r|j        j        dk    r|dk    r|j        j        dk    r1t          |j        |j        j                  }|j        j        dk    r:|rt          j        |j        |           } ~t          j        |j        |           } |j        j        dk    r:|rt          j        |j        |           } t          j	        |j        |           } |j        j        dk    sJ |rt          j
        |j        |           } t          j        |j        |           } 2|r|| d<   | S )	a  Apply model validators to a schema.

    If mode == 'inner', only "before" validators are applied
    If mode == 'outer', validators other than "before" are applied
    If mode == 'all', all validators are applied

    Args:
        schema: The schema to apply validators on.
        validators: An iterable of validators.
        mode: The validator mode.

    Returns:
        The updated schema.
    r   Nrf  rh  r{  rM  )r  r   rj  )r   rw   r  rW   r#  r#   rg  r  ra  rX  rd  r\  )r   r  r  r   ro  r  s         r   r  r  _  s   & jj--C n n	7??y~2h>>7??y~2h>>$Y^Y^5HII>&(( m$FPYP^gmnnn$Dineklll^ H,, o$HR[R`ioppp$FPYP^gmnnn>&'1111 n$GQZQ_hnooo$Ey~flmmm
 uMr   r  rf   c                    | j         r!t          j        || j         | j                  S | j        t
          ur!t          j        || j        | j                  S |S )a  Wrap schema with default schema if default value or `default_factory` are available.

    Args:
        field_info: The field info object.
        schema: The schema to apply default on.

    Returns:
        Updated schema by default value or `default_factory`.
    )default_factoryrM  )r  rM  )rx  r#   with_default_schemarM  r  r"   )r  r   s     r   rN  rN    sv     ! 	.J$>Q[Ql
 
 
 	
 
	#4	4	4.J.A\
 
 
 	
 r   GetJsonSchemaFunction | Nonec                   t          | dd          }t          | d          rYddlm} |duo|j        j        |t          |dd          fv}|s.t          | dd          }t          d|rd	| d
nd dd          t          | d          rDt          | t          t          t          df                             st          | j        |          S |dS |S )z`Extract `__get_pydantic_json_schema__` from a type, handling the deprecated `__modify_schema__`.__get_pydantic_json_schema__N__modify_schema__r   rg   __func__r   zjThe `__modify_schema__` method is not supported in Pydantic v2. Use `__get_pydantic_json_schema__` insteadz in class ``r?  r   zcustom-json-schemar   
__origin__placeholder)r   r  pydanticrh   r|  r~  r5   r,  r   r%   r  rT  r  )r   r   js_modify_functionrh   has_custom_v2_modify_js_funccls_names         r   rT  rT    s7    %CTJJr&'' &&&&&& d* W6?&0BJPT(U(UVW 	% , 	r:t44H#nZb=j=V8=V=V=V=Vhjn n n)    r<   HBYsMGY=Z8[8[)\)\ H0GGG!tr   rC  rP  3JsonDict | typing.Callable[[JsonDict], None] | Nonerl   c                     d fd}|S )	Ncore_schema_or_fieldrC   r   r/   r{   r6   c                F    i  ||           }t          |           |S r   )r   )r  r   r   rP  rC  s      r   json_schema_update_funcz<get_json_schema_update_func.<locals>.json_schema_update_func  s8     N!566M:LMk+<===r   )r  rC   r   r/   r{   r6   r   )rC  rP  r  s   `` r   rQ  rQ    s/           #"r   r   c                    t          |t                    r$|                     t          |                     d S t	          |          r ||            d S d S r   )r,  r   r  r$   callable)r   rP  s     r   r   r     sm     #T** '-.?@@AAAAA	#	$	$ '+&&&&&' '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 )r1  r   r   4str | list[str | int] | list[list[str | int]] | Noner  r   r  bool | Noner  r  zdict[str, Any]rM  N)r   r   r   r`  r   r   r   r1  r1    sZ         """"JJJJ####&&&&r   r1  )r  r  r  r  rM  r  r  r  r  r  r  rM  c                   | |||||dS )Nr   r  r  r  r  rM  r   r  s         r   rS  rS    s%     ,2!6  r   c                  2    e Zd ZdZd
dZedd            Zd	S )r  z*Keeps track of references and definitions.r{   r   c                :    t                      | _        i | _        d S r   )r   seenrC  r   s    r   r   z_Definitions.__init__  s    !ee	>@r   r   r   3Iterator[tuple[str, None] | tuple[str, CoreSchema]]c              #  4  K   t          |          }|| j        v s	|| j        v r|t          j        |          fV  dS | j                            |           	 |dfV  | j                            |           dS # | j                            |           w xY w)ao  Get a definition for `tp` if one exists.

        If a definition exists, a tuple of `(ref_string, CoreSchema)` is returned.
        If no definition exists yet, a tuple of `(ref_string, None)` is returned.

        Note that the returned `CoreSchema` will always be a `DefinitionReferenceSchema`,
        not the actual definition itself.

        This should be called for any type that can be identified by reference.
        This includes any recursive types.

        At present the following types can be named/recursive:

        - BaseModel
        - Dataclasses
        - TypedDict
        - TypeAliasType
        N)rG   r  rC  r#   rD  adddiscard)r   r   r   s      r   r|  z_Definitions.get_schema_or_ref  s      ( 2$)sd&666?DDEEEEEEIMM#'Dk!!!	!!#&&&&&	!!#&&&&s   A; ;BNr{   r   )r   r   r{   r  )r   r   r   r   r   r   r|  r   r   r   r  r    sR        44A A A A ' ' ' ^' ' 'r   r  rC  dict[str, CoreSchema]CoreSchema | Nonec                ~    | d         dk    r|                     | d         d           S | d         dk    r| d         S | S )Nr   r:  r  rC  r   r  )r   rC  s     r   rU  rU  	  sJ    f~)))vl3T:::	=	(	(hr   c                  :    e Zd ZdZddZedd            Zdd
ZdS )r  _stackr{   r   c                    g | _         d S r   r  r   s    r   r   z_FieldNameStack.__init__(	  s    !#r   r   rz   Iterator[None]c              #  x   K   | j                             |           d V  | j                                          d S r   r  r   r   )r   r   s     r   r   z_FieldNameStack.push+	  s=      :&&&r   r   c                .    | j         r| j         d         S d S r   r  r   s    r   r   z_FieldNameStack.get1	      ; 	;r?"4r   Nr  )r   rz   r{   r  )r{   r   r   r   r   r  r   r   r   r   r   r   r   r  r  %	  sa        I$ $ $ $    ^
     r   r  c                  :    e Zd ZdZddZedd            Zdd
ZdS )r  r  r{   r   c                    g | _         d S r   r  r   s    r   r   z_ModelTypeStack.__init__;	  s    "$r   type_objr   r  c              #  x   K   | j                             |           d V  | j                                          d S r   r  )r   r  s     r   r   z_ModelTypeStack.push>	  s=      8$$$r   type | Nonec                .    | j         r| j         d         S d S r   r  r   s    r   r   z_ModelTypeStack.getD	  r  r   Nr  )r  r   r{   r  )r{   r  r  r   r   r   r  r  8	  sa        I% % % %    ^
     r   r  )rw   rx   ry   rz   r{   r|   )r   r   r   r   r{   r   )r   r   ry   rz   r{   r   )r   r   r   r   r   r   r{   r   )
r   rC   r   r/   r   r   r   r   r{   r6   )r   r   r   r   r   r!   r{   r!   )r   r   r   r   r{   r   )r   r   r  rm  r   r   r{   r   )r  rq  r{   r|   )r   r   r  rt  r  ru  r{   r   )r  rf   r   r   r{   r   )r   r   r   r!   r{   rz  )rC  r6   rP  r  r{   rl   )r   r6   rP  r  )r   r   r  r  r  r   r  r  r  r  rM  r   r{   r1  )r   r!   rC  r  r{   r  )r   
__future__r   _annotationscollections.abcr  r   r   r  sysr  r   
contextlibr   r   r   r   enumr   	functoolsr	   r
   r   r   	itertoolsr   operatorr   typesr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    pydantic_corer!   r"   r#   r$   typing_extensionsr%   r&   r'   r(   r)   r*   r+   aliasesr-   annotated_handlersr.   r/   rk  r0   r1   r2   errorsr3   r4   r5   r   r6   versionr7   r8   r?  r:   r;   r<   r=   r>   _configr?   r@   _core_metadatarA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   _docs_extractionrX   r  rY   rZ   _forward_refr[   	_genericsr\   r]   r^   r_   _mock_val_serr`   _schema_generation_sharedra   rb   rc   _utilsrd   r   re   rf   r   rh   ri   r  rj   r   rk   rl   version_infors  r   r  r  rx   rp   AnyFieldDecoratorModifyCoreSchemaWrapHandlerGetCoreSchemaFunctionr   Tuplerr   r`  rF  Listr  MutableSequencers   r   Set
MutableSetrt   	frozenset	FrozenSetru   r   MutableMappingrv   r   r   r   r   r   JsonEncodersr   rz   r   r   r   r   rl  r   rL  r  rN  rT  rQ  r   r1  rS  r  rU  r  r  r   r   r   <module>r     s	   3 3 3 2 2 2 2 2 2          				 



   0 0 0 0 0 0 0 0                     8 8 8 8 8 8 8 8 8 8             6 6 6 6 6 6 6 6 6 6                                       X X X X X X X X X X X X n n n n n n n n n n n n n n n n n n $ $ $ $ $ $ K K K K K K K K 6 6 6 6 6 6 6 6 6 6 b b b b b b b b b b ) ) ) ) ) ) # # # # # # 0 0 0 0 0 0 f f f f f f f f f f f f f f 6 6 6 6 6 6 6 6 D D D D D D D D
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
                            : 9 9 9 9 9 L L L L L L L L . . . . . . t t t t t t t t t t t t ) ) ) ) ) ) C C C C C C 4 4 4 4 4 4 4 4 & & & & & & A55555555      %%%%%%000000//////@@@@@@&'1 iS)**13NPllm  !9ASTTT $%)**+-  3  #'B!C[E[![\  &,/ / / / /[_-LM
 M M M Mfj+/*DE	 E E E E )6+;[_=PQ  Q Q Q Q[_-K[_Mde
 e e e e   *   6n n n n" " " "T ( ( ( ( ( (V DI{*+   D tCH~t+,. . . . . . . .(% % % %_ _ _ _ _ _ _ _L7 ihff[[dd          .   2    , , , ,^   ,   >
# 
# 
# 
#' ' ' '    9    NR&*)-     &$' $' $' $' $' $' $' $'N          &         r   