Ë
    RPfï� ã            	      ó\  — 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#lSm}Z}m~Z~ dd$lm€Z€ e r&dd%l�m‚Z‚mƒZƒ dd&l„m…Z… dd'lm†Z† dd(l‡mˆZˆ dd)l‰mŠZŠ dd*l{m‹Z‹ e	�j                  d+k\  Z� eŽe5e�d,f   «      Z�e+ejefeef   Z‘ e*d-e‘¬.«      Z’e+ecej   ecef   ecee   f   Z“e?Z”e"e!e”ge2j`                  f   Z•e–e
�j.                  gZ˜d/e™d0<   eše
�j6                  e�j8                  �j:                  gZžd/e™d1<   eŸe
�j@                  e�j8                  �jB                  gZ¢d/e™d2<   e£e
�jH                  e�j8                  �j@                  gZ¥d/e™d3<   e¦e
jF                  e�j8                  �jN                  e�j8                  jP                  gZ¨d/e™d4<   	 	 	 	 	 	 d]d5„Z©d^d6„Zª	 	 	 	 	 	 d_d7„Z«	 	 	 	 	 	 	 	 d`d8„Z¬	 	 	 	 	 	 	 	 dad9„Z­e#e)e!   eDf   Z®	 	 	 	 	 	 	 	 dbd:„Z¯e+e#e°e!f   df   Z± G d;„ d<«      Z²dcd=„Z³ G d>„ d?«      Z´d@„ dA„ dB„ dC„ dD„ dE„ dF„ dG„ dHœZµdIe™dJ<   	 	 	 	 	 	 	 	 dddK„Z¶dedL„Z·	 	 	 	 	 	 	 	 dfdM„Z¸dgdN„Z¹dhdO„Zº	 	 	 	 	 	 didP„Z»	 	 	 	 djdQ„Z¼ G dR„ dSe8«      Z½ddddddTœ	 	 	 	 	 	 	 	 	 	 	 	 	 dkdU„Z¾ G dV„ dW«      Z¿dldX„ZÀ G dY„ dZ«      ZÁ G d[„ d\«      ZÂy)mz-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)Ú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_TYPESc                óR   — d| j                   v ry| j                   D ]	  }||k(  sŒ	 y y)z×Check 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)ÚinfoÚfieldÚv_field_names      ú]/var/www/fastapitest/venv/lib/python3.12/site-packages/pydantic/_internal/_generate_schema.pyÚ)check_validator_fields_against_field_namer}   q   s6   € ð ˆd�k‰kÑØØŸ™ò ˆØ˜5Ó Ùðð ó    c           	     ó  — t        |«      }| D ]{  }d|j                  j                  v rŒ|j                  j                  du rŒ5|j                  j                  D ].  }||vsŒt	        d|j
                  › d|j                  › d�d¬«      ‚ Œ} y)	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.
    rw   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)Úsetry   rx   Úcheck_fieldsr5   Úcls_refÚcls_var_name)Ú
decoratorsrx   Údecrz   s       r|   Úcheck_decorator_fields_existr‰   †   s”   € ô �‹[€FØò ˆØ�#—(‘(—/‘/Ñ!ØØ�8‰8× Ñ  EÑ)ØØ—X‘X—_‘_ò 	ˆEØ˜FÒ"Ü'Ø@ÀÇÁÀÈQÈs×O_ÑO_ÐN`Øeðfà2ôð ñ	ñr~   c                óZ   — | D �cg c]  }t        |j                  |«      sŒ|‘Œ c}S c c}w ©N)r}   ry   )Úvalidator_functionsrz   rˆ   s      r|   Ú$filter_field_decorator_info_by_fieldr�   ¡   s*   € ð /Öm�CÔ2[Ð\_×\dÑ\dÐfkÕ2lŠCÒmÐmùÒms   …(¡(c                óà  — | d   dk(  rt        | d   ||«      | d<   | S | d   dk(  r.| j                  d«      x}�t        | d   |   ||«      | d   |<   | S t        | «      r:| j                  dd «      }|€t	        j
                  «       }t        |||«      | d<   | S | d   dk(  r:| j                  dd «      }|€t	        j
                  «       }t        |||«      | d<   | S |rt        d	| d   › �«      ‚| S )
NÚtypeÚnullableÚschemaÚ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‘   Úeach_item_validatorsÚ
field_namer“   Úinner_schemas        r|   r—   r—   §   sF  € ð ˆf�~˜Ò#Ü5°f¸XÑ6FÐH\Ð^hÓiˆˆxÑØˆØ	�‰˜7Ò	"Ø#)§:¡:Ð.CÓ#DÐDÐÐQÜ:JØ�~Ñ&Ð':Ñ;Ð=QÐS]ó;ˆF�>Ñ"Ð#6Ñ7ð& €Mô! 
/¨vÔ	6Ø—z‘z .°$Ó7ˆØÐÜ&×1Ñ1Ó3ˆLÜ!1°,Ð@TÐV`Ó!aˆˆ~Ñð €Mð 
�‰˜6Ò	!ð —z‘z /°4Ó8ˆØÐÜ&×1Ñ1Ó3ˆLÜ"2°<ÐAUÐWaÓ"bˆˆÑð
 €Mñ	 
ÜØ]Ð^dÐekÑ^lÐ]mÐnó
ð 	
ð €Mr~   c               óž  — ddl m} ddlm}  || «      }|j	                  |«      }d|v r|d   }|j                  «        d|ig|d<   d|vr|j                  |d<   ||u rdn|j                  }|rd|vrt        j                  |«      |d<   |S t        ||«      r5|j                  d	   j                  r|j                  d	   j                  |d<   |S )
a0  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.

    Returns:
        JsonSchemaValue: The updated JSON schema.
    r,   rf   )Ú	RootModelz$refÚallOfÚtitleNÚdescriptionÚroot)Úmainrg   Ú
root_modelr    Úresolve_ref_schemaÚclearÚ__name__Ú__doc__ÚinspectÚcleandocÚ
issubclassÚmodel_fieldsr£   )	Úschema_or_fieldÚhandlerÚclsrg   r    Újson_schemaÚoriginal_schemaÚrefÚ	docstrings	            r|   Úmodify_model_json_schemar¶   Ì   sá   € õ !Ý&á˜/Ó*€KØ×0Ñ0°Ó=€Oà�Ñ Ø˜fÑ%ˆØ×ÑÔØ%+¨S M ?ˆ˜Ñ Ø�oÑ%Ø#&§<¡<ˆ˜Ñ à˜yÑ(‘¨c¯k©k€IÙ�]¨/Ñ9Ü)0×)9Ñ)9¸)Ó)Dˆ˜Ñ&ð Ðô 
�C˜Ô	#¨×(8Ñ(8¸Ñ(@×(LÒ(LØ),×)9Ñ)9¸&Ñ)A×)MÑ)Mˆ˜Ñ&ØÐr~   c                ó"  — | s|S d|v r|S |gt        |d|j                  j                  «      dd ¢­D ]Y  }| j                  |«      }|€Œ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__Néÿÿÿÿz=`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)Újson_encodersÚtpr‘   ÚbaseÚencoders        r|   Ú,_add_custom_serialization_from_json_encodersrÅ   ñ   s±   € ñ ØˆØ˜&Ñ Øˆð ÐH”g˜b )¨R¯\©\×-AÑ-AÓBÀ3ÀBÐGÑHò ˆØ×#Ñ# DÓ)ˆØˆ?Øä�‰ØKÌMËOÐK\ð  ]Yð  ZÜ%ô	
ô #.×"RÑ"RÐSZÐflÔ"mˆˆÑØŠðð €Mr~   c                  ó<   — e Zd ZdZdd„Zedd„«       Zedd„«       Zy)	ÚTypesNamespaceStackzA stack of types namespaces.c                ó   — |g| _         y r‹   ©Ú_types_namespace_stack)ÚselfÚtypes_namespaces     r|   Ú__init__zTypesNamespaceStack.__init__  s   € Ø=LÐ<MˆÕ#r~   c                ó    — | j                   d   S ©Nrº   rÉ   ©rË   s    r|   ÚtailzTypesNamespaceStack.tail  s   € à×*Ñ*¨2Ñ.Ð.r~   c              #  ó  K  — i t        j                  |«      ¥| j                  xs i ¥}| j                  j	                  |«       	 d –— | j                  j                  «        y # | j                  j                  «        w xY w­wr‹   )r>   Úget_cls_types_namespacerÑ   rÊ   ÚappendÚpop)rË   Úfor_typerÌ   s      r|   ÚpushzTypesNamespaceStack.push   sm   è ø€ àbœ]×BÑBÀ8ÓLÐbÐQU×QZÑQZÒQ`Ð^`ÐbˆØ×#Ñ#×*Ñ*¨?Ô;ð	.Ûà×'Ñ'×+Ñ+Õ-øˆD×'Ñ'×+Ñ+Õ-üs   ‚ABÁA% Á
BÁ%BÂBN)rÌ   ÚTypesNamespace)ÚreturnrØ   )rÖ   ú	type[Any])	r©   Ú
__module__Ú__qualname__rª   rÍ   ÚpropertyrÑ   r   r×   © r~   r|   rÇ   rÇ     s3   „ Ù&óNð ò/ó ð/ð ò.ó ñ.r~   rÇ   c                ó   — | �| S |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Þ   )ÚaÚbs     r|   Ú_get_first_non_nullrâ   *  s   € ð �ˆ1Ð$ 1Ð$r~   c                  óÄ  — e Zd ZdZdZ	 dG	 	 	 	 	 	 	 dHd„Ze	 	 	 	 	 	 	 	 	 	 	 	 dId„«       ZedJd„«       Z	edKd„«       Z
edLd„«       ZedMd	„«       ZdNd
„ZdOd„ZdPd„ZdOd„ZdOd„ZdQd„ZdRd„Z	 	 	 	 	 	 dSd„Z G d„ de«      ZdTd„ZdTd„ZdUd„Z	 dV	 	 	 	 	 dWd„ZdXd„ZdTd„ZdYd„ZdZd„Zed[d„«       Z ed\d„«       Z d]d^d„Z dZd „Z!d_d!„Z"d`d"„Z#d`d#„Z$dad$„Z%dd%œ	 	 	 	 	 	 	 	 	 dbd&„Z&	 	 	 	 	 	 	 	 dcd'„Z'	 	 	 	 	 	 	 	 ddd(„Z(e)	 	 	 	 	 	 	 	 ded)„«       Z*e)	 	 	 	 	 	 dfd*„«       Z+	 	 	 	 	 	 	 	 dgd+„Z,dhd,„Z-	 	 	 	 dRd-„Z.did.„Z/djd/„Z0dkd0„Z1e2jf                  df	 	 	 	 	 	 	 	 	 dld1„Z4dmd2„Z5dnd3„Z6dhd4„Z7dod5„Z8dpd6„Z9dqd7„Z:drd8„Z;dnd9„Z<	 	 	 	 	 	 dsd:„Z=dtd;„Z>dud<„Z?	 	 	 	 	 	 dvd=„Z@dwd>„ZA	 	 	 	 	 	 dxd?„ZBd@„ f	 	 	 	 	 	 	 dydA„ZCdzdB„ZD	 	 	 	 	 	 dzdC„ZE	 	 	 	 	 	 	 	 d{dD„ZF	 d]	 	 	 	 	 	 	 d|dE„ZG	 	 	 	 	 	 d}dF„ZHy)~Ú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ÚdefsNc                ó¬   — t        |«      | _        t        |«      | _        || _        t        «       | _        t        «       | _        t        «       | _
        y r‹   )r@   rå   rÇ   rÊ   ræ   Ú_FieldNameStackrç   Ú_ModelTypeStackrè   Ú_Definitionsré   )rË   Úconfig_wrapperrÌ   Útypevars_maps       r|   rÍ   zGenerateSchema.__init__?  sE   € ô &8¸Ó%GˆÔ"Ü&9¸/Ó&JˆÔ#Ø)ˆÔÜ /Ó 1ˆÔÜ /Ó 1ˆÔÜ “Nˆ�	r~   c                óŒ   — | j                  | «      }||_        ||_        ||_        ||_        t        «       |_        ||_        |S r‹   )Ú__new__rå   rÊ   rè   ræ   rë   rç   ré   )r±   Úconfig_wrapper_stackÚtypes_namespace_stackrè   rï   ré   Úobjs          r|   Ú__from_parentzGenerateSchema.__from_parentM  sI   € ð �k‰k˜#ÓˆØ$8ˆÔ!Ø%:ˆÔ"Ø/ˆÔØ(ˆÔÜ.Ó0ˆÔØˆŒØˆ
r~   c                ó.   — | j                   j                  S r‹   )rå   rÑ   rÐ   s    r|   Ú_config_wrapperzGenerateSchema._config_wrapper_  s   € à×)Ñ)×.Ñ.Ð.r~   c                ó.   — | j                   j                  S r‹   )rÊ   rÑ   rÐ   s    r|   Ú_types_namespacezGenerateSchema._types_namespacec  s   € à×*Ñ*×/Ñ/Ð/r~   c                óÌ   — | j                   j                  xs t        }|j                  | 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_schemag  sV   € à×"Ñ"×3Ñ3ÒE´~ˆØ× Ñ Ø×&Ñ&Ø×'Ñ'Ø×!Ñ!Ø×ÑØ�I‰Ió
ð 	
r~   c                ó.   — | j                   j                  S r‹   )r÷   Úarbitrary_types_allowedrÐ   s    r|   Ú_arbitrary_typeszGenerateSchema._arbitrary_typesr  s   € à×#Ñ#×;Ñ;Ð;r~   c                ó*   — t        j                  «       S )zGenerate a CoreSchema for `str`)r#   Ú
str_schemarÐ   s    r|   r  zGenerateSchema.str_schemav  s   € ä×%Ñ%Ó'Ð'r~   c                óJ   — t        j                  | j                  |«      «      S r‹   )r#   Úlist_schemaÚgenerate_schema©rË   rÂ   Ú
items_types      r|   Ú_list_schemazGenerateSchema._list_schema|  s   € Ü×&Ñ& t×';Ñ';¸JÓ'GÓHÐHr~   c                ój   — t        j                  | j                  |«      | j                  |«      «      S r‹   )r#   Údict_schemar  )rË   rÂ   Ú	keys_typeÚvalues_types       r|   Ú_dict_schemazGenerateSchema._dict_schema  s,   € Ü×&Ñ& t×';Ñ';¸IÓ'FÈ×H\ÑH\Ð]hÓHiÓjÐjr~   c                óJ   — t        j                  | j                  |«      «      S r‹   )r#   Ú
set_schemar  r  s      r|   Ú_set_schemazGenerateSchema._set_schema‚  s   € Ü×%Ñ% d×&:Ñ&:¸:Ó&FÓGÐGr~   c                óJ   — t        j                  | j                  |«      «      S r‹   )r#   Úfrozenset_schemar  r  s      r|   Ú_frozenset_schemaz GenerateSchema._frozenset_schema…  s   € Ü×+Ñ+¨D×,@Ñ,@ÀÓ,LÓ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ˆ  sL   € Ü˜"œdÔ#ÜØ�&ð Zð Zô ôô ×)Ñ)Ó+Ð+Ü×-Ñ-¨bÓ1Ð1r~   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#   € Ü+Ø:¸3¸'ð Bfð fó
ð 	
r~   c                óš   — |€|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‘   Údiscriminators      r|   Ú_apply_discriminator_to_unionz,GenerateSchema._apply_discriminator_to_unionŸ  s_   € ð Ð ØˆMð	Ü'×;Ñ;ØØóð øô $×@Ñ@ò 	ä ×>Ñ>ØØôð ŠMð	ús   † œ+A
Á	A
c                  ó   — e Zd Zy)úGenerateSchema.CollectedInvalidN)r©   rÛ   rÜ   rÞ   r~   r|   ÚCollectedInvalidr$  ±  s   „ Ør~   r%  c                ó´   — | j                  |«      }t        |«      }t        |«      r| j                  «       ‚t	        j
                  |«      }t        |«      }|S r‹   )Úcollect_definitionsrJ   rD   r%  r<   Úapply_discriminatorsrK   )rË   r‘   s     r|   Úclean_schemazGenerateSchema.clean_schema´  sR   € Ø×)Ñ)¨&Ó1ˆÜ+¨FÓ3ˆÜ" 6Ô*Ø×'Ñ'Ó)Ð)Ü%×:Ñ:¸6ÓBˆÜ% fÓ-ˆØˆr~   c                ó*  — t        d|j                  dd «      «      }|r|| j                  j                  |<   d|v rt	        j
                  |d   «      }t	        j                  |t        | j                  j                  j                  «       «      «      S )Nú
str | Noner´   )	r   r˜   ré   Údefinitionsr#   Údefinition_reference_schemaÚdefinitions_schemaÚlistÚvalues)rË   r‘   r´   s      r|   r'  z"GenerateSchema.collect_definitions½  s|   € Ü�< §¡¨E°4Ó!8Ó9ˆÙØ)/ˆD�I‰I×!Ñ! #Ñ&Ø�F‰?Ü ×<Ñ<¸VÀE¹]ÓKˆFÜ×-Ñ-ØÜ�—‘×&Ñ&×-Ñ-Ó/Ó0ó
ð 	
r~   c                ó~   — t        |«      j                  }|j                  dg «      }||vr|j                  |«       y y )NÚpydantic_js_functions)rA   ÚmetadataÚ
setdefaultrÔ   )rË   Úmetadata_schemaÚjs_functionr3  r2  s        r|   Ú_add_js_functionzGenerateSchema._add_js_functionÈ  sD   € Ü& Ó7×@Ñ@ˆØ (× 3Ñ 3Ð4KÈRÓ PÐð Ð3Ñ3Ø!×(Ñ(¨Õ5ð 4r~   Tc                ó&  — d}|r| j                  ||«      }|�|}|€| j                  |«      }t        ||«      }|�4t        || j                  j
                  «      }|r| j                  ||«       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é   r,  r7  rÅ   r÷   rÁ   )rË   rô   Úfrom_dunder_get_core_schemar‘   Úfrom_propertyÚmetadata_js_functionr5  s          r|   r  zGenerateSchema.generate_schemaÓ  sœ   € ð6 %)ˆá&Ø ×?Ñ?ÀÀSÓIˆMØÐ(Ø&�àˆ>Ø×0Ñ0°Ó5ˆFä@ÀÀfÓMÐØÐ+Ü5°f¸d¿i¹i×>SÑ>SÓTˆOÙØ×%Ñ% oÐ7KÔLä=¸d×>RÑ>R×>`Ñ>`ÐbeÐgmÓnˆàˆr~   c                óh	  — | j                   j                  |«      5 \  }}|�|cddd«       S |j                  }|j                  }|j                  }t        t        |j                  j                  «       |j                  j                  «       |j                  j                  «       «      h |j                  «       £|j                  «       £«       t        |j                  d¬«      }|j                  |«      }t        t!        t"        |¬«      g¬«      }	|j$                  j                  «       }
d}|j'                  d«      dk(  rù|j(                  d   |u sJ ‚|j(                  d	   t*        u sJ ‚|j(                  dd	 D ]½  }t-        |d
i «      j'                  dd«      }|€Œ#t/        |t0        «      r6t3        j4                  t3        j6                  |dd¬«      | j8                  «      }t;        |«      }|t<        t>        fvrtA        d«      ‚| jC                  |d¬«      d   }|tD        usŒ¬| jG                  |«      } n | jH                  jK                  |«      5  | jL                  jK                  |«      5  | jN                  } |jP                  r]| jS                  d|d   |«      }|d   }tU        ||
d«      }tW        jX                  ||t-        |dd«      dt-        |dd«      |||	¬«      }�n	tW        jZ                  |j]                  «       D ��ci c]  \  }}|| j_                  |||«      “Œ c}}|j                  «       D �cg c]  }| ja                  ||j                  «      ‘Œ  c}||jb                  ¬«      }te        ||jf                  j                  «       d«      }ti        |tk        «       «      }|�|}tU        ||
d«      }tW        jX                  ||t-        |dd«      dt-        |dd«      |||	¬«      }| jm                  ||jn                  j                  «       «      }tU        ||
d«      }|| j                   jp                  |<   tW        jr                  |«      cddd«       cddd«       cddd«       S c c}}w c c}w # 1 sw Y   nxY wddd«       n# 1 sw Y   nxY wddd«       y# 1 sw Y   yxY w)z%Generate schema for a Pydantic model.NF)Úcheck©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´   r3  )Úcomputed_fieldsÚextras_schemaÚ
model_nameÚouter):ré   Úget_schema_or_refr®   Ú__pydantic_decorators__rS  r‰   r   Úfield_validatorsr0  Úfield_serializersÚ
validatorsÚkeysr?   Úmodel_configÚcore_configrB   r	   r¶   Úmodel_validatorsr˜   r¹   Úobjectr½   r  Ústrr>   Ú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ÚitemsÚ_generate_md_field_schemaÚ_computed_field_schemar©   r™   Úroot_validatorsrE   r^   Ú_apply_model_serializersÚmodel_serializersr,  r-  )rË   r±   Ú	model_refÚmaybe_schemarx   r‡   rS  rî   r^  r3  r_  rT  Úcandidate_clsÚextras_annotationrÂ   Úextra_items_typeÚ
root_fieldrž   rh  ÚkÚvÚdÚfields_schemaÚnew_inner_schemar‘   s                            r|   Ú_model_schemazGenerateSchema._model_schema  s»  € à�Y‰Y×(Ñ(¨Ó-ð \	JÑ1J°)¸\ØÐ'Ø#÷\	Jñ \	Jð ×%Ñ%ˆFØ×4Ñ4ˆJØ(×8Ñ8ˆOÜ(ÜØ×/Ñ/×6Ñ6Ó8Ø×0Ñ0×7Ñ7Ó9Ø×)Ñ)×0Ñ0Ó2óð
 :�&—+‘+“-Ð9 /×"6Ñ"6Ó"8Ð9ôô +¨3×+;Ñ+;À5ÔIˆNØ(×4Ñ4°SÓ9ˆKÜ*¼ÔAYÐ_bÔ9cÐ8dÔeˆHà)×:Ñ:×AÑAÓCÐà ˆMØ�‰Ð6Ó7¸7ÒBØ—{‘{ 1‘~¨Ñ,Ð,Ð,Ø—{‘{ 2‘¬&Ñ0Ð0Ð0Ø%(§[¡[°°"Ð%5ò "�MÜ(/°Ð?PÐRTÓ(U×(YÑ(YÐZnÐptÓ(uÐ%Ø(Ñ4Ü%Ð&7¼Ô=Ü0=×0PÑ0PÜ -× ?Ñ ?Ð@QÐ_dÐosÔ tØ $× 5Ñ 5ó1Ð-ô (Ð(9Ó:˜Ø¤d¬D \Ñ1Ü"?Ø gó#ð ð ,0×+PÑ+PØ-Ø%)ð ,Qó ,ð ñ,Ð(ð ,´3Ò6Ø,0×,@Ñ,@ÐAQÓ,R˜MÙ!ð'"ð* ×+Ñ+×0Ñ0°Ó@ñ .JÀ$×B]ÑB]×BbÑBbÐcfÓBgñ .JØ×4Ñ4�Ø×.Ò.Ø!%×!:Ñ!:¸6À6È&Á>ÐS]Ó!^�JØ#-¨hÑ#7�LÜ#9¸,ÐHXÐZaÓ#b�LÜ#.×#;Ñ#;ØØ$Ü$+¨CÐ1KÈTÓ$RØ#'Ü")¨#Ð/GÈÓ"NØ*Ø%Ø!)ô	$’Lô =H×<[Ñ<[ØY_×YeÑYeÓYg×hÑQUÐQRÐTU˜˜D×:Ñ:¸1¸aÀÓLÑLÓhð &5×%;Ñ%;Ó%=ö)à !ð !×7Ñ7¸¸:×;WÑ;WÕXò)ð '4Ø#&§<¡<ô=�Mô $4°MÀ:×C]ÑC]×CdÑCdÓCfÐhlÓ#m�LÜ'CÀLÔRoÓRqÓ'rÐ$Ø'Ð3Ø'7˜Ü#9¸,ÐHXÐZaÓ#b�Lä#.×#;Ñ#;ØØ$Ü$+¨CÐ1KÈTÓ$RØ#(Ü")¨#Ð/GÈÓ"NØ*Ø%Ø!)ô	$�Lð ×6Ñ6°|ÀZ×EaÑEa×EhÑEhÓEjÓk�Ü/°Ð8HÈ'ÓR�Ø39�—	‘	×%Ñ% iÑ0Ü"×>Ñ>¸yÓI÷].J÷ .Jñ .J÷]\	Jñ \	Jùó@ iùò)÷'.Jð .Jú÷ .J÷ .Jñ .Jú÷]\	J÷ \	Jñ \	Júst   œR(­E2R(Æ BR(È)/R(ÉRÉ4BQ>ÌQ3Ì*Q>Ì?#Q9Í"C5Q>Ñ	RÑ 	R(Ñ3Q>Ñ>RÒRÒ
	R(ÒR	ÒR(Ò(R1c                ó¬   — dd„}|d   dk(  rB| j                   j                  j                  |d   D �ci c]  } ||«      |“Œ c}«       |d   }|S c c}w )zuUnpack all 'definitions' schemas into `GenerateSchema.defs.definitions`
        and return the inner schema.
        c                ó   — | d   S )Nr´   rÞ   )Úss    r|   rF   z1GenerateSchema._unpack_refs_defs.<locals>.get_refg  s   € Ø�U‘8ˆOr~   r�   r,  r‘   )r~  r!   rÙ   ra  )ré   r,  Úupdate)rË   r‘   rF   r~  s       r|   Ú_unpack_refs_defsz GenerateSchema._unpack_refs_defsb  sZ   € ó
	ð �&‰>˜]Ò*Ø�I‰I×!Ñ!×(Ñ(ÀÈÑAVÖ)W¸A©'°!«*°a©-Ò)WÔXØ˜HÑ%ˆFØˆùò *Xs   ³Ac                ó¤  — t        |«      r| j                  j                  «       }| j                  j	                  |«      5 \  }}|�|cddd«       S 	 ddd«       ||u rd}nd}t        |dd«      x}�Tt        t        j                  |«      j                  «      dk(  r	 ||«      }n£ ||t        | j                  | |¬«      «      }nƒt        |dd«      x}�|j                  dd«      |k(  r|}n\t        |d	d«      x}	�Lt        d
t        «       t        j                   |	«       D �
cg c]  }
t        j                   |
«      ‘Œ c}
«      }ny| j#                  |«      }t%        |«      r|d   j'                  dd«      }|r||d<   nt)        |«      }|r.|| j                  j*                  |<   t        j,                  |«      S |S # 1 sw Y   �ŒoxY wc c}
w )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.r‘   r´   )rb   rè   r˜   ré   rW  r½   Úlenr«   r   Ú
parametersr`   r:  r    r8   r#   Úchain_schemaÚ"with_info_plain_validator_functionr€  rH   rÕ   rF   r,  r-  )rË   rô   ÚsourceÚ_rq  r„  Ú
get_schemar‘   Úexisting_schemar[  rw  r´   s               r|   r9  z-GenerateSchema._generate_schema_from_propertyo  sß  € ô ˜ÔØ×'Ñ'×+Ñ+Ó-ˆCØ�Y‰Y×(Ñ(¨Ó-ð 	$Ñ1B°!°\ØÐ'Ø#÷	$ñ 	$Ø'÷	$ð �&‰=Ø‰HàˆHô " #Ð'EÀtÓLÐLˆJÐYÜ”7×$Ñ$ ZÓ0×;Ñ;Ó<ÀÒAá# FÓ+‘á#ØÔ8¸×9TÑ9TÐVZÐemÔnó‘ô ")¨Ð.HÈ$Ó!OÐOˆoÐ\Ðap×atÑatØ�4ób
àòbð %‰Fä# CÐ)=¸tÓDÐDˆjÐQÜØuÜ)ôô !×-Ñ-ÑjtÓjvÖ.wÐef¬{×/]Ñ/]Ð^_Õ/`Ò.wÓx‰Fð à×'Ñ'¨Ó/ˆä(¨Ô0Ø˜Ñ"×&Ñ& u¨dÓ3ˆCÙØ #��u’ä˜&“/ˆCáØ)/ˆD�I‰I×!Ñ! #Ñ&Ü×:Ñ:¸3Ó?Ð?àˆ÷_	$ñ 	$üò: /xs   ÁG Ä%GÇ G
c                ó.  — 	 t        j                  || j                  ¬«      }t        |t        «      rt	        |j                  d|› �«      ‚| j                  rt        || j                  «      }|S # t        $ r}t	        j
                  |«      |‚d }~ww xY w)N)Úglobalnsz%Unable to evaluate forward reference )r>   rb  rù   Ú	NameErrorr4   Úfrom_name_errorr  r   Ú__forward_arg__ræ   r_   )rË   rô   Úes      r|   Ú_resolve_forward_refz#GenerateSchema._resolve_forward_refª  s�   € ð	HÜ×2Ñ2°3À×AVÑAVÔWˆCô
 �cœ:Ô&Ü-¨c×.AÑ.AÐEjÐknÐjoÐCpÓqÐqà×ÒÜ  T×%7Ñ%7Ó8ˆCàˆ
øô ò 	HÜ-×=Ñ=¸aÓ@ÀaÐGûð	Hús   ‚!A0 Á0	BÁ9BÂBc                 ó   — y r‹   rÞ   )rË   rô   rL  s      r|   rd  z/GenerateSchema._get_args_resolving_forward_refsÀ  ó   € àr~   c                 ó   — y r‹   rÞ   r  s     r|   rd  z/GenerateSchema._get_args_resolving_forward_refsÄ  r—  r~   c           	     óÄ   — t        |«      }|r<t        |D �cg c]%  }t        |t        «      r| j	                  |«      n|‘Œ' c}«      }|S |rt        d|› d�«      ‚|S c c}w )Nz	Expected z+ to have generic parameters but it had none)r)   r’   r  r   r•  r›   )rË   rô   rL  Úargsrà   s        r|   rd  z/GenerateSchema._get_args_resolving_forward_refsÈ  sk   € Ü˜‹}ˆÙÜÐdhÖiÐ_`¼*ÀQÌ
Ô:S˜$×3Ñ3°AÔ6ÐYZÑZÒiÓjˆDð ˆñ Ü˜i¨ uÐ,WÐXÓYÐYØˆùò js   —*Ac                ó>   — | j                  |«      }|st        S |d   S )Nr   )rd  r   )rË   rô   rš  s      r|   Ú_get_first_arg_or_anyz$GenerateSchema._get_first_arg_or_anyÐ  s#   € Ø×4Ñ4°SÓ9ˆÙÜˆJØ�A‰wˆr~   c                ó¤   — | j                  |«      }|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   )rd  r   r‡  r*   r›   )rË   rô   rš  Úorigins       r|   Ú_get_first_two_args_or_anyz)GenerateSchema._get_first_two_args_or_anyÖ  s[   € Ø×4Ñ4°SÓ9ˆÙÜœ�:ÐÜˆt‹9�qŠ=Ü “_ˆFÜÐ>¸v¸hÀgÐNÓOÐOØ�A‰w˜˜Q™ÐÐr~   c                ó(  — t        |t        «      r| j                  |«      S t        |t        «      r|S t        |t        «      rt        |«      }t        |t
        «      r | j                  | j                  |«      «      S ddlm	} t        ||«      r6| j                  j                  |«      5  | j                  |«      cd d d «       S t        |t        «      r t        j                   |j"                  ¬«      S | j%                  |«      S # 1 sw Y   ŒJxY w)Nr,   rf   )Ú
schema_ref)r  Ú_AnnotatedTypeÚ_annotated_schemar•   ra  r   r  r•  r¥   rg   rc   rè   r×   r{  r[   r#   r-  Útype_refÚ
match_type)rË   rô   rg   s      r|   r:  z%GenerateSchema._generate_schema_innerß  sß   € Ü�cœ>Ô*Ø×)Ñ)¨#Ó.Ð.ä�cœ4Ô àˆJä�cœ3ÔÜ˜S“/ˆCä�cœ:Ô&Ø×'Ñ'¨×(AÑ(AÀ#Ó(FÓGÐGå$ä˜c 9Ô-Ø×&Ñ&×+Ñ+¨CÓ0ñ /Ø×)Ñ)¨#Ó.÷/ñ /ô �cÔ/Ô0Ü×:Ñ:ÀcÇlÁlÔSÐSà�‰˜sÓ#Ð#÷/ð /ús   Â,DÄDc                óø  — |t         u r| j                  «       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| j%                  |«      S |t&        v r!| j)                  || j+                  |«      «      S |t,        v r!| j/                  || j+                  |«      «      S |t0        v r!| j3                  || j+                  |«      «      S |t4        v r" | j6                  |g| j9                  |«      ¢­Ž S t;        |t<        «      r| j?                  |«      S |t@        k(  r| jC                  «       S t        jD                  |«      rt        jF                  «       S t        jH                  |«      r| jK                  |«      S tM        |«      r| jO                  |d«      S t        jP                  |«      r| jS                  |d«      S t        jT                  |«      r| jW                  |jX                  «      S |tZ        j\                  k(  r| j_                  |«      S |t`        jb                  jd                  u s|tf        jd                  u r| ji                  «       S t;        |tf        jj                  «      r| jm                  |«      S to        |«      r<|tp        u rt        j                  «       S | jW                  | j+                  |«      «      S t;        |tr        tt        tv        tx        f«      r| j{                  |«      S t}        j~                  |«      r3t�        |t‚        «      r#ddlBmC}  ||| jˆ                  jŠ                  «      S t        jŒ                  |«      r| j�                  |d«      S | j‘                  |d«      }|�|\  }}| j“                  ||«      S t•        |«      }|�| j—                  ||«      S | j˜                  r| j›                  |«      S | j�                  |«      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Þ   )Ora  r  Úbytesr#   Úbytes_schemaÚintÚ
int_schemaÚfloatÚfloat_schemaÚboolÚbool_schemar   r`  rš   r>   ÚNoneTypeÚnone_schemarq   Ú_tuple_schemarr   r  rœ  rs   r  rt   r  ru   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_schemara   r   r   r   r   r	   Ú_callable_schemar«   Úisclassr­   r   Ú_std_types_schemar§  r÷   Úconfig_dictÚis_dataclassÚ_dataclass_schemaÚ0_get_prepare_pydantic_annotations_for_known_typeÚ_apply_annotationsr*   Ú_match_generic_typer   r  r  )rË   rô   r§  ÚresÚsource_typer   rž  s          r|   r¥  zGenerateSchema.match_typeø  sÒ  € ð ”#‰:Ø—?‘?Ó$Ð$Ø”E‰\Ü×+Ñ+Ó-Ð-Ø”C‰ZÜ×)Ñ)Ó+Ð+Ø”E‰\Ü×+Ñ+Ó-Ð-Ø”D‰[Ü×*Ñ*Ó,Ð,Ø”C‰Z˜3¤&™=Ü×)Ñ)Ó+Ð+Øˆ[˜C¤=×#9Ñ#9Ñ9Ü×*Ñ*Ó,Ð,Ø”KÑØ×%Ñ% cÓ*Ð*Ø”JÑØ×$Ñ$ S¨$×*DÑ*DÀSÓ*IÓJÐJØ”IÑØ×#Ñ# C¨×)CÑ)CÀCÓ)HÓIÐIØÔ$Ñ$Ø×)Ñ)¨#¨t×/IÑ/IÈ#Ó/NÓOÐOØ”JÑØ$�4×$Ñ$ SÐP¨4×+JÑ+JÈ3Ó+OÒPÐPÜ˜œ]Ô+Ø×/Ñ/°Ó4Ð4Ø”DŠ[Ø×$Ñ$Ó&Ð&Ü×+Ñ+¨CÔ0Ü×.Ñ.Ó0Ð0Ü×*Ñ*¨3Ô/Ø×'Ñ'¨Ó,Ð,Ü˜#ÔØ×*Ñ*¨3°Ó5Ð5Ü×(Ñ(¨Ô-Ø×*Ñ*¨3°Ó5Ð5Ü×&Ñ& sÔ+à×'Ñ'¨×(9Ñ(9Ó:Ð:Ø”B—J‘JÒØ×'Ñ'¨Ó,Ð,Ø”K—O‘O×,Ñ,Ñ,°´v·±Ñ0FØ×(Ñ(Ó*Ð*Ü˜œVŸ^™^Ô,Ø×5Ñ5°cÓ:Ð:Ü˜ÔØ”e‰|Ü"×-Ñ-Ó/Ð/Ø×'Ñ'Ø×*Ñ*¨3Ó/óð ô ˜œl¬J¼
ÄGÐLÔMØ×(Ñ(¨Ó-Ð-Ü�_‰_˜SÔ!¤j°´dÔ&;Ý?á'¨¨T×-AÑ-A×-MÑ-MÓNÐNä×%Ñ% cÔ*Ø×)Ñ)¨#¨tÓ4Ð4Ø×CÑCÀCÈÓLˆØˆ?Ø'*Ñ$ˆK˜Ø×*Ñ*¨;¸ÓDÐDä˜C“ˆØÐØ×+Ñ+¨C°Ó8Ð8à× Ò Ø×.Ñ.¨sÓ3Ð3Ø×(Ñ(¨Ó-Ð-r~   c                óf  — t        |t        «      r| j                  |«      S t        j                  |«      r| j                  ||«      S t        j                  |«      r| j                  ||«      S | j                  ||«      }|�|S t        j                  |«      r| j                  |«      S |t        v r| j                  |«      S |t        v r!| j                  || j                  |«      «      S |t         v r!| j#                  || j                  |«      «      S |t$        v r!| j'                  || j                  |«      «      S |t(        v r" | j*                  |g| j-                  |«      ¢­Ž S t/        |«      r| j1                  ||«      S |t2        j4                  t6        fv r| j9                  |«      S |t2        j:                  t<        j>                  j:                  hv r| jA                  |«      S |t2        jB                  t<        j>                  jB                  t2        jD                  t<        j>                  jD                  hv r| jG                  |«      S |tH        jJ                  t2        jJ                  fv r| jM                  |«      S | jN                  r| jQ                  |«      S | jS                  |«      S r‹   )*r  r'   r³  r>   rË  rÌ  rº  r»  r9  Úorigin_is_unionÚ_union_schemarq   r²  rr   r  rœ  rs   r  rt   r  ru   r  rŸ  r+   r¹  rÄ  r   r�   Ú_subclass_schemaÚSequencerÁ  rÂ  Ú_sequence_schemar   Ú	GeneratorÚ_iterable_schemar¾  r¿  rÀ  r   r  r  )rË   rô   rž  r>  s       r|   rÏ  z"GenerateSchema._match_generic_typeN  sR  € Ü�fœmÔ,Ø×/Ñ/°Ó4Ð4ô ×%Ñ% fÔ-Ø×)Ñ)¨#¨vÓ6Ð6Ü×&Ñ& vÔ.Ø×*Ñ*¨3°Ó7Ð7à×;Ñ;¸FÀCÓHˆØÐ$Ø Ð ä×(Ñ(¨Ô0Ø×%Ñ% cÓ*Ð*Ø”{Ñ"Ø×%Ñ% cÓ*Ð*Ø”zÑ!Ø×$Ñ$ S¨$×*DÑ*DÀSÓ*IÓJÐJØ”yÑ Ø×#Ñ# C¨×)CÑ)CÀCÓ)HÓIÐIØÔ'Ñ'Ø×)Ñ)¨#¨t×/IÑ/IÈ#Ó/NÓOÐOØ”zÑ!Ø$�4×$Ñ$ SÐP¨4×+JÑ+JÈ3Ó+OÒPÐPÜ˜&Ô!Ø×*Ñ*¨3°Ó7Ð7ØœŸ™¤TÐ*Ñ*Ø×(Ñ(¨Ó-Ð-ØœŸ™¬¯©×)AÑ)AÐBÑBØ×(Ñ(¨Ó-Ð-ØœŸ™¬¯©×)AÑ)AÄ6×CSÑCSÔU`×UdÑUd×UnÑUnÐoÑoØ×(Ñ(¨Ó-Ð-ØœŸ
™
¤F§N¡NÐ3Ñ3Ø×'Ñ'¨Ó,Ð,à× Ò Ø×.Ñ.¨vÓ6Ð6Ø×(Ñ(¨Ó-Ð-r~   rK  c          	     ó    — | j                  |||«      }t        j                  |d   |j                  «       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_aliasr3  )rL  rÛ  rÜ  rÝ  r3  )rf  r#   Útyped_dict_fieldÚis_required)rË   ÚnameÚ
field_infor‡   rL  Úcommon_fields         r|   Ú_generate_td_field_schemaz(GenerateSchema._generate_td_field_schemaz  sf   € ð ×0Ñ0°°zÀ:ÓNˆÜ×+Ñ+Ø˜Ñ"Ø",×"8Ñ"8Ô":‘UÀØ".Ð/FÑ"GØ)Ð*<Ñ=Ø ,Ð-BÑ CØ! *Ñ-ô
ð 	
r~   c           	     ó‚   — | j                  |||«      }t        j                  |d   |d   |d   |d   |d   |d   ¬«      S )z0Prepare a ModelField to represent a model field.r‘   rÛ  rÜ  rÝ  Úfrozenr3  ©rÛ  rÜ  rÝ  rå  r3  )rf  r#   Úmodel_field©rË   rà  rá  r‡   râ  s        r|   rk  z(GenerateSchema._generate_md_field_schema�  s^   € ð ×0Ñ0°°zÀ:ÓNˆÜ×&Ñ&Ø˜Ñ"Ø".Ð/FÑ"GØ)Ð*<Ñ=Ø ,Ð-BÑ CØ Ñ)Ø! *Ñ-ô
ð 	
r~   c                óÖ   — | j                  |||«      }t        j                  ||d   |j                  |j                  xs 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å  r3  )ÚinitÚ	init_onlyÚkw_onlyrÛ  rÜ  rÝ  rå  r3  )rf  r#   Údataclass_fieldrê  Úinit_varrì  rè  s        r|   Ú_generate_dc_field_schemaz(GenerateSchema._generate_dc_field_schemaž  sƒ   € ð ×0Ñ0°°zÀ:ÓNˆÜ×*Ñ*ØØ˜Ñ"Ø—‘Ø ×)Ñ)Ò1¨TØ&×.Ò.‘D°EØ".Ð/FÑ"GØ)Ð*<Ñ=Ø ,Ð-BÑ CØ Ñ)Ø! *Ñ-ô
ð 	
r~   c                ó´  — |j                   �4|j                   dk  s%|j                  �|j                  �|j                  �€d\  }}}t	        | t
        «      r| j                  |«      \  }}}nCt	        | t        «      r3 | |«      }t	        |t        «      st        d| › d|j                  › �«      ‚|j                   �|j                   dk  rd|_         |j                   dk(  r)t        ||«      |_        t        ||«      |_        ||_        |j                  €||_        |j                  €t        ||«      |_        |j                  €t        ||«      |_        yyy)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 ú must return str, not )Úalias_priorityÚaliasrÜ  rÝ  r  r-   Úgenerate_aliasesr   ra  r›   r¾   râ   )Úalias_generatorrá  r�   rõ  rÜ  rÝ  s         r|   Ú$_apply_alias_generator_to_field_infoz3GenerateSchema._apply_alias_generator_to_field_info³  sm  € ð ×%Ñ%Ð-Ø×(Ñ(¨AÒ-Ø×ÑÐ'Ø×*Ñ*Ð2Ø×-Ñ-Ñ5à;KÑ8ˆEÐ#Ð%8ä˜/¬>Ô:Ø?N×?_Ñ?_Ð`jÓ?kÑ<�Ð'Ñ)<Ü˜O¬XÔ6Ù'¨
Ó3�Ü! %¬Ô-Ü#Ð&6°Ð6GÐG]Ð^c×^mÑ^mÐ]nÐ$oÓpÐpð
 ×(Ñ(Ð0°J×4MÑ4MÐQRÒ4RØ,-�
Ô)ð ×(Ñ(¨AÒ-Ü1DÐEXÐZ_Ó1`�
Ô.Ü.AÐBRÐTYÓ.Z�
Ô+Ø#(�
Ô ð ×ÑÐ'Ø#(�
Ô Ø×-Ñ-Ð5Ü1DÐEXÐZ_Ó1`�
Ô.Ø×*Ñ*Ð2Ü.AÐBRÐTYÓ.Z�
Õ+ð 3ð9 6r~   c                ó¸  — |j                   �|j                   dk  s|j                  €³d\  }}}t        | t        «      r| j	                  |«      \  }}}nCt        | t
        «      r3 | |«      }t        |t        «      st        d| › d|j                  › �«      ‚|j                   �|j                   dk  rd|_         |j                   dk(  rt        ||«      |_        yyy)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   ra  r›   r¾   râ   )r÷  Úcomputed_field_infoÚcomputed_field_namerõ  rÜ  rÝ  s         r|   Ú-_apply_alias_generator_to_computed_field_infoz<GenerateSchema._apply_alias_generator_to_computed_field_infoå  sð   € ð$  ×.Ñ.Ð6Ø"×1Ñ1°QÒ6Ø"×(Ñ(Ð0à;KÑ8ˆEÐ#Ð%8ä˜/¬>Ô:Ø?N×?_Ñ?_Ð`sÓ?tÑ<�Ð'Ñ)<Ü˜O¬XÔ6Ù'Ð(;Ó<�Ü! %¬Ô-Ü#Ð&6°Ð6GÐG]Ð^c×^mÑ^mÐ]nÐ$oÓpÐpð
 #×1Ñ1Ð9Ð=P×=_Ñ=_ÐcdÒ=dØ56Ð#Ô2ð
 #×1Ñ1°QÒ6Ü,?Ð@SÐUZÓ,[Ð#Õ)ð 7ð) 1r~   c                ó¸  ‡ ‡— ddl m}m} ddlm} t        ‰j                  t        t        f«      �r@‰ j                  }‰ j                  r[|xs i j                  «       }|j                  ‰ j                  j                  «       D ��	ci c]  \  }}	|j                  |	“Œ c}	}«       t        j                   ‰j                  |«      }
|
‰j                  urŸt        |
t"        «      s� |j$                  |
«      }|j                  ‰_        |j&                  j                  «       D ]0  \  }}	|‰j&                  vsŒ|‰j(                  vsŒ$t+        ‰||	«       Œ2 g |j,                  ¢‰j,                  ¢‰_        ‰j                  ‰j,                  }}dˆˆ fd„}‰ j.                  j1                  |«      5  ‰j2                  �‰ j5                  |||¬«      }n‰ j5                  ||«      }d d d «       t7        |j8                  j;                  «       |«      }t=        |«      rd‰_        |D �	cg c]  }	|	j@                  jB                  du sŒ|	‘Œ }}	|D �	cg c]	  }	|	|vsŒ|	‘Œ }}	tE        ||«      }tG        |t7        ||«      |«      }tG        |t7        |jH                  j;                  «       |«      |«      }‰jK                  «       stM        ‰|«      }‰ jO                  |t7        |jP                  j;                  «       |«      «      }‰jR                  ‰jT                  tW        ‰jX                  «      xs ‰jX                  dk(  xs d t[        ‰j\                  «      dœ}|j                  «       D ��	ci c]  \  }}	|	€Œ	||	“Œ }}}	‰j^                  }ta        tc        ||«      g¬	«      }‰ jd                  jf                  }|�‰ ji                  |‰|«       tk        ‰jl                  ||f«      r‰jl                  jo                  «       }n‰jl                  }tq        |‰jr                  rdnd |‰jt                  ‰jv                  |¬
«      S c c}	}w # 1 sw Y   �ŒaxY wc c}	w c c}	w c c}	}w )Nr,   )ÚAliasChoicesÚ	AliasPath©re   c                ó@   •— ‰j                  | ‰j                  «      } | S r‹   )r"  r!  )r‘   rá  rË   s    €€r|   Úset_discriminatorz>GenerateSchema._common_field_schema.<locals>.set_discriminator1  s    ø€ Ø×7Ñ7¸À
×@XÑ@XÓYˆFØˆMr~   )Útransform_inner_schemaTÚ )r¢   r£   Ú
deprecatedÚexamples©Újs_annotation_functionsræ  ©r‘   r!   rÙ   r!   )<r  rþ  rÿ  rx   re   r]   Ú
annotationr   ra  rù   ræ   r   r  rj  r©   r>   Úeval_type_lenientr[   Úfrom_annotationÚ_attributes_setÚmetadata_lookupÚsetattrr3  rç   r×   r!  rÎ  r�   r[  r0  Ú$_validators_require_validate_defaultÚvalidate_defaultry   Ú	each_itemr—   r™   rY  rß  Úwrap_defaultÚ_apply_field_serializersrZ  r¢   r£   r®  r  r$   r  Újson_schema_extrarB   Úget_json_schema_update_funcr÷   r÷  rø  r  rÜ  Úconvert_to_aliasesÚ_common_fieldÚexcluderÝ  rå  )rË   rà  rá  r‡   rþ  rÿ  re   rÌ   rv  rw  Ú	evaluatedÚnew_field_inforÑ  r   r  r‘   Úthis_field_validatorsrœ   Újson_schema_updatesr  r3  r÷  rÜ  s   ` `                    r|   rf  z#GenerateSchema._common_field_schema  s  ù€ ÷ 	/Ý&ä 
× 5Ñ 5¼
ÄCÐ7HÕIØ"×3Ñ3ˆOØ×!Ò!Ø#2Ò#8°b×">Ñ">Ó"@�à×&Ñ&À$×BTÑBT×BZÑBZÓB\×']¹$¸!¸Q¨¯
©
°A©Ó']Ô^ä%×7Ñ7¸
×8MÑ8MÈÓ_ˆIØ 
× 5Ñ 5Ñ5Ô>RÐS\Ô^rÔ>sØ!: ×!:Ñ!:¸9Ó!E�Ø(6×(AÑ(A�
Ô%ð +×:Ñ:×@Ñ@ÓBò 2‘D�A�qð
  
× :Ñ :Ò:¸qÈ
×HbÑHbÒ?bÜ 
¨A¨qÕ1ð2ð 'W¨×(?Ñ(?Ð&VÀ*×BUÑBUÐ&V�
Ô#à#-×#8Ñ#8¸*×:MÑ:M�[ˆö	ð ×"Ñ"×'Ñ'¨Ó-ñ 	Ø×'Ñ'Ð3Ø×0Ñ0°¸kÐbsÐ0Ót‘à×0Ñ0ØØó�÷		ô !EÀZ×EZÑEZ×EaÑEaÓEcÐeiÓ jÐÜ/Ð0EÔFØ*.ˆJÔ'Ø+@Ö] aÀAÇFÁF×DTÑDTÐX\ÒD\¢Ð]ÐÐ]Ø,AÖ c qÀQÐNbÒEb¢Ð cÐÐ cÜ+¨FÐ4HÈ$ÓOˆä! &Ô*NÐOdÐfjÓ*kÐmqÓrˆÜ!ØÔ8¸×9TÑ9T×9[Ñ9[Ó9]Ð_cÓdÐfjó
ˆð ×%Ñ%Ô'Ü! *¨fÓ5ˆFà×.Ñ.ØÔ8¸×9UÑ9U×9\Ñ9\Ó9^Ð`dÓeó
ˆð  ×%Ñ%Ø%×1Ñ1Ü˜z×4Ñ4Ó5Ò\¸×9NÑ9NÐRTÑ9TÒ\ÐX\Ü*¨:×+>Ñ+>Ó?ñ	
Ðð 1D×0IÑ0IÓ0K×]©¨¨1ÈqÉ}˜q !™tÐ]ÐÑ]à&×8Ñ8Ðä&Ü%@ÐATÐVgÓ%hÐ$iô
ˆð ×.Ñ.×>Ñ>ˆØÐ&Ø×5Ñ5°oÀzÐSWÔXä�j×1Ñ1°LÀ)Ð3LÔMØ)×:Ñ:×MÑMÓOÑà)×:Ñ:ÐäØØ*4×*<Ò*<¡$À$Ø-Ø *× >Ñ >Ø×$Ñ$Øô
ð 	
ùóe (^÷2	ñ 	üò   ^ùÚ cùó. ^s6   ÂP9
Æ,4P?È"QÉ QÉ
	QÉQÍ&
QÍ1QÐ?Q	c                óî  — | j                  |d¬«      }g }d}|D ]9  }|�|t        j                  u rd}Œ|j                  | j	                  |«      «       Œ; t        |«      dk(  r|d   }ntg }|D ]X  }|j                  di «      j                  t        j                  «      }	|	�|j                  ||	f«       ŒH|j                  |«       ŒZ t        j                  |«      }|rt        j                  |«      }|S )zGenerate schema for a Union.TrK  Fr9   r   r3  )rd  r>   r°  rÔ   r  r‡  r˜   r:   ÚTAGGED_UNION_TAG_KEYr#   Úunion_schemaÚnullable_schema)
rË   Ú
union_typerš  Úchoicesr�   Úargr~  Úchoices_with_tagsÚchoiceÚtags
             r|   rÔ  zGenerateSchema._union_schemaw  sû   € à×4Ñ4°ZÈ$Ð4ÓOˆØ$&ˆØˆØò 	:ˆCØˆ{˜c¤]×%;Ñ%;Ñ;Ø‘à—‘˜t×3Ñ3°CÓ8Õ9ð		:ô ˆw‹<˜1ÒØ˜‘
‰AàKMÐØ!ò 5�Ø—j‘j ¨RÓ0×4Ñ4´[×5UÑ5UÓV�Ø�?Ø%×,Ñ,¨f°c¨]Õ;à%×,Ñ,¨VÕ4ð5ô ×(Ñ(Ð):Ó;ˆAáÜ×+Ñ+¨AÓ.ˆAØˆr~   c                ó$  — | j                   j                  |«      5 \  }}|�|cd d d «       S t        |«      xs |}|j                  }t	        |«      }| j
                  j                  |«      5  t        j                  || j                  «      }t        ||«      }| j                  |«      }|d   dk7  sJ ‚||d<   d d d «       | j                   j                  |<   t        j                  |«      cd d d «       S # 1 sw Y   Œ@xY w# 1 sw Y   y xY w)Nr�   r,  r´   )ré   rW  r*   Ú	__value__r\   rÊ   r×   r>   r  rù   r_   r  r,  r#   r-  )rË   rô   r´   rq  rž  r
  rï   r‘   s           r|   r³  z&GenerateSchema._type_alias_type_schema’  s  € ð �Y‰Y×(Ñ(¨Ó-ð 	@Ñ1D°#°|ØÐ'Ø#÷	@ñ 	@ô   “_Ò+¨ˆFà×)Ñ)ˆJÜ4°SÓ9ˆLà×,Ñ,×1Ñ1°&Ó9ñ $Ü*×<Ñ<¸ZÈ×I^ÑI^Ó_�
Ü*¨:°|ÓD�
Ø×-Ñ-¨jÓ9�Ø˜f‘~¨Ò6Ð6Ð6Ø #��u‘÷$ð *0ˆD�I‰I×!Ñ! #Ñ&Ü×:Ñ:¸3Ó?÷!	@ñ 	@÷$ð $ú÷	@ð 	@ús*   œD­ADÁ.AC:Â;5DÃ:D	Ã?DÄDc                ón   — 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Ë   Úliteral_typeÚexpecteds      r|   r¸  zGenerateSchema._literal_schema¨  s8   € ä ×3Ñ3°LÓAˆÙÐRÐCÀLÀ>ÐRÓRˆxÜ×)Ñ)¨(Ó3Ð3r~   c                ó\  — ddl m} | j                  j                  |«      5  | j                  j                  |«      5 \  }}|�|cddd«       cddd«       S t        |«      }|�|}t        s%t        |«      j                  dk(  rt        dd¬«      ‚	 t        |d«      }| j                  j                  |«      5  | j                  j                  |«      5  | j                  j!                  |«      }| j"                  } |j$                  }	i }
t'        j(                  |«      }| j                  j*                  rt-        |d	¬
«      }nd}t/        || j0                  d	¬«      j3                  «       D ]Ä  \  }}t5        ||«      }||	v }t7        |«      t8        j:                  k(  rd	}| j=                  |d	¬«      d   }n4t7        |«      t8        j>                  k(  rd}| j=                  |d	¬«      d   } |j@                  |«      }|�|jB                  €||v r
||   |_!        | jE                  ||||¬«      |
|<   ŒÆ tG        tI        tJ        |¬«      g|¬«      }tM        jN                  |
|jP                  jS                  «       D �cg c]  }| jU                  ||jV                  «      ‘Œ  c}|||¬«      }| jY                  ||jZ                  jS                  «       «      }t]        ||j^                  jS                  «       d«      }|| j                  j`                  |<   tM        jb                  |«      cddd«       cddd«       cddd«       cddd«       S # t        $ r d}Y �Œ»w xY wc c}w # 1 sw Y   nxY wddd«       n# 1 sw Y   nxY wddd«       n# 1 sw Y   nxY wddd«       y# 1 sw Y   yxY w)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,   r   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_extrasrK  r   FrB  )rD  Útyped_dict_cls)rS  r´   r3  rR  Úall)2rx   re   rè   r×   ré   rW  r\   Ú_SUPPORTS_TYPEDDICTr�   rÛ   r5   rT   ÚAttributeErrorrå   rÊ   r÷   r^  rý   Ú__required_keys__rM   ÚbuildÚuse_attribute_docstringsrX   rZ   rù   rj  r_   r*   r>   ÚRequiredrd  ÚNotRequiredr  r£   rã  rB   r	   r¶   r#   Útyped_dict_schemarS  r0  rl  rZ  rn  ro  rg  r_  r,  r-  )rË   r4  rž  re   Útyped_dict_refrq  rï   rR  r^  Úrequired_keysrx   r‡   Úfield_docstringsr�   r
  rL  rá  r3  rx  Ú	td_schemar‘   s                        r|   r¹  z!GenerateSchema._typed_dict_schema®  sè  € õ  	'à×"Ñ"×'Ñ'¨Ó7ñ V	O¸¿¹×9TÑ9TÐUcÓ9dð V	Oñ i
ØØàÐ'Ø#÷V	O÷ V	Oò V	Oô 5°^ÓDˆLØÐ!Ø!'�å&¬4°Ó+?×+JÑ+JÈhÒ+VÜ'ØnØ-ôð ð
Ü,DÀ^ÐUjÓ,k�ð ×+Ñ+×0Ñ0°Ó8ñ @O¸$×:UÑ:U×:ZÑ:ZÐ[iÓ:jñ @OØ"×2Ñ2×>Ñ>¸~ÓN�à×4Ñ4�à0>×0PÑ0P�à@B�ä+×1Ñ1°.ÓA�
à×'Ñ'×@Ò@Ü'BÀ>Ð_cÔ'dÑ$à'+Ð$ä.KØ"¨D×,AÑ,AÐRVô/ç‘%“'òÑ*�J 
ô "/¨z¸<Ó!H�JØ)¨]Ð:�Hä! *Ó-´×1GÑ1GÒGØ#'˜Ø%)×%JÑ%JØ&Ø%)ð &Kó &ð ñ&™
ô $ JÓ/´=×3LÑ3LÒLØ#(˜Ø%)×%JÑ%JØ&Ø%)ð &Kó &ð ñ&˜
ð
 "; ×!:Ñ!:¸:Ó!F�Jà(Ð4Ø&×2Ñ2Ð:Ø&Ð*:Ñ:à1AÀ*Ñ1M˜
Ô.Ø)-×)GÑ)GØ" J°
ÀXð *Hó *�F˜:Ò&ð5ô< /Ü")Ô*BÈÔ"WÐ!XÐiwô�ô (×9Ñ9Øð ",×!;Ñ!;×!BÑ!BÓ!Dö%àð ×3Ñ3°A°z×7SÑ7SÕTò%ð 'Ø%Ø&ô	�	ð ×6Ñ6°yÀ*×B^ÑB^×BeÑBeÓBgÓh�Ü/°¸
×8SÑ8S×8ZÑ8ZÓ8\Ð^cÓd�Ø8>�—	‘	×%Ñ% nÑ5Ü"×>Ñ>¸~ÓN÷A@O÷ @Oñ @O÷-V	O÷ V	Oò V	Oøô& "ò Ø“ðüòn%÷i@Oð @Oú÷ @O÷ @Oñ @Oú÷-V	O÷ V	Oñ V	Oú÷ V	O÷ V	Oñ V	Oús¢   ¢N"¾NÁ	N"Á:NÂMÂNÂ:M8ÃF'M#	É=#MÊ BM#	Ì'	M8Ì0	NÌ9	N"ÍMÍNÍMÍNÍM#	Í#M,Í(M8Í/	NÍ8NÍ=NÎ	N"ÎN	ÎN"Î"N+c                ó@  — | j                   j                  |«      5  | j                  j                  |«      5 \  }}|�|cddd«       cddd«       S t	        |«      }|�|}t        |d| j                  ¬«      }|s|j                  D �ci c]	  }|t        “Œ }}|r-|j                  «       D ��	ci c]  \  }}	|t        |	|«      “Œ }}}	t        j                  |j                  «       D ��	cg c]A  \  }}	| j                  ||	|j                  j                  |t         j"                  «      ¬«      ‘ŒC c}	}t%        d¬«      ¬«      }
t        j&                  |
||¬«      cddd«       cddd«       S c c}w c c}	}w c c}	}w # 1 sw Y   nxY wddd«       y# 1 sw Y   yxY w)z!Generate schema for a NamedTuple.NT)r3  r2  )Údefault)Újs_prefer_positional_arguments)r3  )r´   )rè   r×   ré   rW  r\   rZ   rù   Ú_fieldsr   rj  r_   r#   Úarguments_schemaÚ_generate_parameter_schemaÚ_field_defaultsr˜   r
   ÚemptyrB   Úcall_schema)rË   Únamedtuple_clsrž  Únamedtuple_refrq  rï   r   rv  r�   r
  rF  s              r|   r»  z!GenerateSchema._namedtuple_schema  sµ  € à×"Ñ"×'Ñ'¨Ó7ñ  	a¸¿¹×9TÑ9TÐUcÓ9dð  	añ i
ØØàÐ'Ø#÷ 	a÷  	aò  	aô 5°^ÓDˆLØÐ!Ø!'�ä*GØ¨t¸T×=RÑ=Rô+ˆKñ à/=×/EÑ/EÖF¨!˜q¤#™vÐF�ÐFáð 3>×2CÑ2CÓ2E÷á.˜
 Jð ¤¨j¸,Ó GÑGð�ñ ô
  +×;Ñ;ð
 3>×2CÑ2CÓ2E÷	ñ /˜
 Jð ×3Ñ3Ø" J¸×8VÑ8V×8ZÑ8ZÐ[eÔgp×gvÑgvÓ8wð 4õ óô -ÈDÔQô Ðô ×*Ñ*Ð+;¸^ÐQ_Ô`÷A 	a÷  	aò  	aùò Gùóùó÷1 	að  	aú÷  	a÷  	añ  	aúsX   œF¸E?¿	FÁ7E?Â	E.ÂE?Â.E3
Ã%E?Ã*AE9Ä0+E?Å	FÅ.E?Å?F	ÆFÆFc                óÎ  — ddl m} |t        j                  u r |j                  |«      }n |j
                  ||«      }|j                  €J d«       ‚|j                  |j                  }}| j                  j                  |«      5  | j                  ||«      }	ddd«       |j                  «       st        |	«      }	t        j                  |	«      }
|�||
d<   |j                  �|j                  |
d<   |
S | j                   j"                  }t%        |t&        «      r"|j                  �|j                  |«      |
d<   |
S t%        |t(        «      r ||«      |
d<   |
S # 1 sw Y   ŒÄxY w)zXPrepare a ArgumentsParameter to represent a field in a namedtuple or function signature.r,   r   Nz<field.annotation should not be None when generating a schemaÚmoderõ  )rx   re   r
   rI  r  Úfrom_annotated_attributer
  r3  rç   r×   rÎ  rß  r  r#   Úarguments_parameterrõ  r÷   r÷  r  r-   r   )rË   rà  r
  rC  rN  re   rz   rÑ  r   r‘   Úparameter_schemar÷  s               r|   rG  z)GenerateSchema._generate_parameter_schema<  sj  € õ 	'à”i—o‘oÑ%Ø-�I×-Ñ-¨jÓ9‰Eà6�I×6Ñ6°zÀ7ÓKˆEØ×ÑÐ+ÐkÐ-kÓkÐ+Ø#(×#3Ñ#3°U·^±^�[ˆØ×"Ñ"×'Ñ'¨Ó-ñ 	GØ×,Ñ,¨[¸+ÓFˆF÷	Gð × Ñ Ô"Ü! %¨Ó0ˆFä&×:Ñ:¸4ÀÓHÐØÐØ'+Ð˜VÑ$Ø�;‰;Ð"Ø(-¯©Ð˜WÑ%ð  Ðð #×2Ñ2×BÑBˆOÜ˜/¬>Ô:¸×?TÑ?TÐ?`Ø,;×,AÑ,AÀ$Ó,GÐ  Ñ)ð  Ðô ˜O¬XÔ6Ù,;¸DÓ,AÐ  Ñ)ØÐ÷#	Gð 	Gús   ÂEÅE$c                ó^  ‡— t        |«      Š| j                  |«      }‰r|rt        ˆfd„|D «       «      }|sG|t        v r*t	        j
                  t	        j                  «       gd¬«      S t	        j
                  g «      S |d   t        u rCt        |«      dk(  r*t	        j
                  | j                  |d   «      gd¬«      S t        d«      ‚t        |«      dk(  r|d   dk(  rt	        j
                  g «      S t	        j
                  |D �cg c]  }| j                  |«      ‘Œ c}«      S c c}w )	zIGenerate schema for a Tuple, e.g. `tuple[int, str]` or `tuple[int, ...]`.c              3  ó6   •K  — | ]  }t        |‰«      –— Œ y ­wr‹   )r_   )Ú.0Úparamrï   s     €r|   ú	<genexpr>z/GenerateSchema._tuple_schema.<locals>.<genexpr>f  s   øè ø€ ÒRÀ%œ=¨°×=ÑRùs   ƒr   )r“   rº   r,   z&Variable tuples can only have one typer9   rÞ   )r\   rd  r’   rq   r#   Útuple_schemarš   ÚEllipsisr‡  r  Ú
ValueError)rË   Ú
tuple_typeÚparamsrU  rï   s       @r|   r²  zGenerateSchema._tuple_schema_  s  ø€ ô 1°Ó<ˆØ×6Ñ6°zÓBˆá™FÜÓRÈ6ÔRÓRˆFñ Øœ[Ñ(Ü"×/Ñ/´×1GÑ1GÓ1IÐ0JÐ`aÔbÐbô #×/Ñ/°Ó3Ð3Ø�B‰Zœ8Ñ#Ü�6‹{˜aÒÜ"×/Ñ/°×1EÑ1EÀfÈQÁiÓ1PÐ0QÐghÔiÐiô !Ð!IÓJÐJÜ�‹[˜AÒ &¨¡)¨r¢/ô ×+Ñ+¨BÓ/Ð/ä×+Ñ+ÐV\Ö,]ÈU¨T×-AÑ-AÀ%Õ-HÒ,]Ó^Ð^ùÒ,]s   ÄD*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}  s)   € Ü×.Ñ.Ü×*Ñ*¬4Ó0Ø'Ø!9ô
ð 	
r~   c           	     ó¸   — | j                  |d¬«      }t        j                  |D �cg c]$  }| j                  t        j
                  |   «      ‘Œ& c}«      S c c}w )z*Generate schema for `Type[Union[X, ...]]`.TrK  )rd  r#   r   r  rÄ  r   )rË   r"  rš  s      r|   Ú_union_is_subclass_schemaz(GenerateSchema._union_is_subclass_schema„  sL   € à×4Ñ4°ZÈ$Ð4ÓOˆÜ×'Ñ'Ð]aÖ(bÐUY¨×)=Ñ)=¼f¿k¹kÈ$Ñ>OÕ)PÒ(bÓcÐcùÒ(bs   §)Ac           	     óÊ  — | j                  |«      }|t        k(  r| j                  «       S t        |t        j
                  «      r×|j                  rbt        j                  t        |j                  «      «      r| j                  |j                  «      S t        j                  |j                  «      S |j                  rMt        j                  |j                  D �cg c]$  }| j                  t        j                   |   «      ‘Œ& c}«      S | j                  «       S t        j                  t        |«      «      r| j                  |«      S t        j                  |«      S c c}w )z-Generate schema for a Type, e.g. `Type[int]`.)rœ  r   r´  r  rÄ  r   Ú	__bound__r>   rÓ  r*   rc  r#   Úis_subclass_schemaÚ__constraints__r   r  r   )rË   Útype_Ú
type_paramÚcs       r|   rÕ  zGenerateSchema._subclass_schema‰  s  € à×/Ñ/°Ó6ˆ
ØœÒØ×$Ñ$Ó&Ð&Ü˜
¤F§N¡NÔ3Ø×#Ò#Ü ×0Ñ0´¸J×<PÑ<PÓ1QÔRØ×9Ñ9¸*×:NÑ:NÓOÐOÜ"×5Ñ5°j×6JÑ6JÓKÐKØ×+Ò+Ü"×/Ñ/ØCM×C]ÑC]Ö^¸a�T×)Ñ)¬&¯+©+°a©.Õ9Ò^óð ð ×(Ñ(Ó*Ð*Ü×*Ñ*¬:°jÓ+AÔBØ×1Ñ1°*Ó=Ð=ä×1Ñ1°*Ó=Ð=ùò _s   Ã)E c                óš  — ddl m} | j                  |«      }| j                  |«      }t	        j
                  |«      }t	        j                  t        j                  d¬«      }|t        k7  r1d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É  rl  rœ  r  r#   r  r  rÄ  rÖ  r   Ú_validatorsrn  r‰  Úno_info_wrap_validator_functionÚ#wrap_serializer_function_ser_schemaÚjson_or_python_schema)	rË   Úsequence_typerl  Ú	item_typeÚitem_type_schemar  rp  rn  r¸   s	            r|   r×  zGenerateSchema._sequence_schemaž  s·   € åBà×.Ñ.¨}Ó=ˆ	Ø×/Ñ/°	Ó:ÐÜ!×-Ñ-Ð.>Ó?ˆä#×6Ñ6´v·±ÐQ[Ô\ˆØœÒÝ7ä'×4Ñ4Ø¤× KÑ KÐL^Ð`kÓ lÐmóˆMô $×GÑGØ'Ð0@È4ô
ˆô ×0Ñ0Ø#°=ÐP]ô
ð 	
r~   c                ól   — | j                  |«      }t        j                  | j                  |«      «      S )z$Generate a schema for an `Iterable`.)rœ  r#   Úgenerator_schemar  )rË   rh  rv  s      r|   rÙ  zGenerateSchema._iterable_schemaµ  s.   € à×.Ñ.¨uÓ5ˆ	ä×+Ñ+¨D×,@Ñ,@ÀÓ,KÓLÐLr~   c                ó  — 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 | j                  |d	¬
«      d   }|t        k(  r"t        j                  |j                  ||¬«      S |t        k(  r"t        j                  |j                   ||¬«      S t#        d|›d�«      ‚)Nr9   )rq  c                ó   — dddœS )NÚstringÚregex)r�   ÚformatrÞ   )Ú_1Ú_2s     r|   ú<lambda>z0GenerateSchema._pattern_schema.<locals>.<lambda>¾  s   € ÈXÐahÑDi€ r~   rC  Úpatternr»   )r¼   Úreturn_schema)r¸   r3  TrK  r   r  r€   )r  rq  rB   r#   rÀ   r   r  rÄ  r¿  r¾  Ú no_info_plain_validator_functionÚpattern_either_validatorrd  ra  Úpattern_str_validatorr¨  Úpattern_bytes_validatorr3   )rË   Úpattern_typerq  r3  ÚserrU  s         r|   rÀ  zGenerateSchema._pattern_schema»  s  € Ý!ä&Ñ5iÐ4jÔkˆÜ×>Ñ>Ü�yÓ!¨VÄ;×CYÑCYÓC[ô
ˆð œ6Ÿ>™>Ò)¨\¼R¿Z¹ZÒ-Gä×?Ñ?Ø×4Ñ4ÀCÐRZôð ð ×5Ñ5ØØð 6ó 
ð ñˆð ”CŠ<Ü×?Ñ?Ø×1Ñ1ÀÈxôð ð ”eŠ^Ü×?Ñ?Ø×3Ñ3À3ÐQYôð ô 0Ð2^Ð_kÐ^nÐnoÐ0pÓqÐqr~   c                óˆ   — t        j                  t        j                  t        j                  j
                  «      dd¬«      S )NÚis_hashablezInput should be hashabler^  )r#   ra  r  rÁ  rÂ  rÃ  rÐ   s    r|   rÅ  zGenerateSchema._hashable_schema×  s3   € Ü×.Ñ.Ü×*Ñ*¬;¯?©?×+CÑ+CÓDØ+Ø!;ô
ð 	
r~   c                ót  ‡ ‡— ‰ j                   j                  |«      5  ‰ j                  j                  |«      5 \  }}|�|cddd«       cddd«       S t	        |«      }|�|}t        «       5 }|j                  D ]B  }t        j                  |«      sŒ|j                  ‰ j                  j                  |«      «       ŒD t        |j                  «      D ]O  }t        j                  |«      sŒt        |dd«      }|j                  ‰ j                  j                  |«      «       ŒQ ‰ j                  j                  |«      }	‰ j                   Š ddlm}
  |
|«      rIt%        |j&                  «      }|rJ|j)                  «       D ]  }|j+                  |‰ j,                  «       Œ  nt/        |‰ j,                  |¬«      }‰ j                  j0                  j2                  dk(  r7|j5                  «       D ]$  \  }}|j6                  du sŒt9        d|› d	�d
¬«      ‚ |j:                  j=                  d«      xs t?        j@                  |«      ŠtC        ˆˆ fd„|j5                  «       D «       d„ ¬«      }tE        |d«      }tE        |d«      }tG        jH                  |jJ                  |‰jL                  j)                  «       D �cg c]  }‰ jO                  |‰jP                  «      ‘Œ  c}|¬«      }tS        |‰jT                  j)                  «       d«      }‰jV                  j)                  «       }tY        ||d«      }tG        jZ                  ||||t        j\                  |«      D �cg c]  }|j^                  ‘Œ c}||	¬«      }‰ ja                  |‰jb                  j)                  «       «      }tY        ||d«      }|‰ j                  jd                  |<   tG        jf                  |«      cddd«       cddd«       cddd«       S c c}w c c}w # 1 sw Y   nxY wJ d«       ‚# 1 sw Y   nxY wddd«       y# 1 sw Y   yxY w)z Generate schema for a dataclass.Nr0  r,   )Úis_pydantic_dataclass)rï   rF  FzField zd has `init=False` and dataclass has config setting `extra="allow"`. This combination is not allowed.z dataclass-init-false-extra-allowr�   rX  c              3  óJ   •K  — | ]  \  }}‰j                  ||‰«      –— Œ y ­wr‹   )rï  )rT  rv  rw  r‡   rË   s      €€r|   rV  z3GenerateSchema._dataclass_schema.<locals>.<genexpr>  s$   øè ø€ ÒaÉ$È!ÈQ�T×3Ñ3°A°q¸*×EÑaùs   ƒ #c                ó(   — | j                  d«      duS )Nrì  F©r˜   )rà   s    r|   r�  z2GenerateSchema._dataclass_schema.<locals>.<lambda>  s   €  !§%¡%¨	Ó"2¸%Ð"?€ r~   )ÚkeyÚ__post_init__Ú	__slots__)rS  Úcollect_init_onlyrM  )rQ  r´   rx   ÚslotsrR  rV  ÚUnreachable)4rè   r×   ré   rW  r\   r   r¹   ÚdataclassesrË  Úenter_contextrÊ   Úreversedr½   rå   r÷   r^  rý   r�  r   Ú__pydantic_fields__r0  Úapply_typevars_maprù   rY   rÑ   Úextrarj  rê  r5   Ú__dict__r˜   rM   r9  ÚsortedÚhasattrr#   Údataclass_args_schemar©   rS  rl  rZ  r™   rm  r_  rg  Údataclass_schemarx   rà  rn  ro  r,  r-  )rË   Ú	dataclassrž  Údataclass_refrq  rï   Údataclass_bases_stackÚdataclass_baserR  r^  r�  rx   rz   r�   rš  Úhas_post_initÚ	has_slotsrx  Úargs_schemarž   r_  Ú	dc_schemar‘   r‡   s   `                      @r|   rÌ  z GenerateSchema._dataclass_schemaÞ  s  ù€ ð ×"Ñ"×'Ñ'¨	Ó2ñ ]	(°D·I±I×4OÑ4OÐPYÓ4Zð ]	(ñ _
ØØàÐ'Ø#÷]	(÷ ]	(ò ]	(ô 5°YÓ?ˆLØÐ!Ø"�	ä“ð NNÐ 5à&/×&7Ñ&7ò n�NÜ"×/Ñ/°Õ?Ø-×;Ñ;¸D×<WÑ<W×<\Ñ<\Ð]kÓ<lÕmðnô
 '/¨y×/@Ñ/@Ó&Aò e�NÜ"×/Ñ/°Õ?Ü!(¨Ð9NÐPTÓ!U˜Ø-×;Ñ;¸D×<VÑ<V×<[Ñ<[Ð\bÓ<cÕdðeð
 #×2Ñ2×>Ñ>¸yÓI�à×4Ñ4�å?á(¨Ô3Ü% i×&CÑ&CÓD�FÙ#Ø%+§]¡]£_ò Z˜EØ!×4Ñ4°\À4×CXÑCXÕYñZô 6Ø!Ø×-Ñ-Ø%1ô�Fð ×-Ñ-×2Ñ2×8Ñ8¸GÒCà-3¯\©\«^ò Ñ)˜
 EØ Ÿ:™:¨Ò.Ü"3Ø"(¨¨ð 5Cð !Dà%Gô#ð ðð '×/Ñ/×3Ñ3Ð4MÓNÒqÔR`×RfÑRfÐgpÓRq�
ô ÜaÐRX×R^ÑR^ÓR`ÔaÙ?ô�ô !(¨	°?Ó C�Ü# I¨{Ó;�	ä)×?Ñ?Ø×&Ñ&Øð ",×!;Ñ!;×!BÑ!BÓ!Dö%àð ×3Ñ3°A°z×7SÑ7SÕTò%ð '4ô�ô  0°¸Z×=WÑ=W×=^Ñ=^Ó=`ÐbfÓg�à#-×#>Ñ#>×#EÑ#EÓ#GÐ Ü5°lÐDTÐV]Ó^�ä'×8Ñ8ØØ Ø+Ø%Ü4?×4FÑ4FÀyÓ4QÖR¨5˜EŸJ›JÒRØ#Ø&ô�	ð ×6Ñ6°yÀ*×B^ÑB^×BeÑBeÓBgÓh�Ü/°Ð8HÈ'ÓR�Ø7=�—	‘	×%Ñ% mÑ4Ü"×>Ñ>¸}ÓM÷]NNð NN÷]	(÷ ]	(ò ]	(ùòB%ùò" S÷ONNð NNúðd (˜-Ó'�5÷{]	(ð ]	(ú÷ ]	(÷ ]	(ñ ]	(ús{   žP.ºPÁ	P.ÁPÁ-%PÂAPÃ-DPÈB9PÊ=#O<Ë A?PÍPÍ2A.PÏ 	PÏ)	P.Ï<
PÐPÐPÐP"	ÐP.Ð.P7c                ó¢  — t        |«      }t        j                  |«      }t        j                  dt        j
                  dt        j                  di}g }d}d}|j                  j                  «       D ]ä  \  }}	|	j                  |j                  u rt        }
n||   }
|j                  |	j                  «      }|�0| j                  ||
|	j                  |«      }|j!                  |«       Œw|	j                  t        j"                  k(  r| j%                  |
«      }Œ¦|	j                  t        j&                  k(  sJ |	j                  «       ‚| j%                  |
«      }Œæ d}| j(                  }|j*                  r$|j                  d«      }|�| j%                  |«      }t-        j.                  t-        j0                  ||||j2                  ¬«      ||¬«      S )zsGenerate schema for a Callable.

        TODO support functional validators once we support them in Config
        Úpositional_onlyÚpositional_or_keywordÚkeyword_onlyNrÙ   )Úvar_args_schemaÚvar_kwargs_schemaÚpopulate_by_name)rƒ  )r   r>   Úget_function_type_hintsr
   ÚPOSITIONAL_ONLYÚPOSITIONAL_OR_KEYWORDÚKEYWORD_ONLYrˆ  rj  r
  rI  r   r˜   ÚkindrG  rC  rÔ   ÚVAR_POSITIONALr  ÚVAR_KEYWORDr÷   Úvalidate_returnr#   rJ  rF  r°  )rË   ÚfunctionÚsigÚ
type_hintsÚmode_lookupÚarguments_listr®  r¯  rà  Úpr
  Úparameter_modeÚ
arg_schemarƒ  rî   Úreturn_hints                   r|   rÇ  zGenerateSchema._callable_schemaA  s¯  € ô
 ˜Ó!ˆä"×:Ñ:¸8ÓDˆ
ô ×%Ñ%Ð'8Ü×+Ñ+Ð-DÜ×"Ñ" Nðr
ˆð @BˆØ9=ˆØ;?Ðà—~‘~×+Ñ+Ó-ò 	E‰GˆD�!Ø�|‰|˜sŸy™yÑ(Ü ‘
à'¨Ñ-�
à(Ÿ_™_¨Q¯V©VÓ4ˆNØÐ)Ø!×<Ñ<¸TÀ:ÈqÏyÉyÐZhÓi�
Ø×%Ñ% jÕ1Ø—‘œ9×3Ñ3Ò3Ø"&×"6Ñ"6°zÓ"B‘à—v‘v¤×!6Ñ!6Ò6Ð>¸¿¹Ó>Ð6Ø$(×$8Ñ$8¸Ó$DÑ!ð	Eð  8<ˆØ×-Ñ-ˆØ×)Ò)Ø$Ÿ.™.¨Ó2ˆKØÐ&Ø $× 4Ñ 4°[Ó A�ä×&Ñ&Ü×(Ñ(ØØ /Ø"3Ø!/×!@Ñ!@ô	ð Ø'ô	
ð 		
r~   c                óê  — t        |t        j                  «      sJ ‚|j                  }|j                  }t        |dd «      }|d ut        |«      dk7  z   |d uz   dkD  rt        d«      ‚|�| j                  |«      S |r"| j                  t        j                  |   «      S |r@| j                  |«      }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
   € ™Q˜q›T€ r~   )r‘   r¸   )r  rÄ  r   re  rg  r½   r‡  ÚNotImplementedErrorr  rÔ  r   r#   rs  rš   )rË   Útypevarrp   ÚconstraintsrC  r‘   s         r|   rÆ  z,GenerateSchema._unsubstituted_typevar_schemav  só   € Ü˜'¤6§>¡>Ô2Ð2Ð2à×!Ñ!ˆØ×-Ñ-ˆÜ˜' =°$Ó7ˆà˜Ð¤# kÓ"2°aÑ"7Ñ8¸GÈ4Ð<OÑPÐSTÒTÜ%Ølóð ð ÐØ×'Ñ'¨Ó0Ð0ÙØ×%Ñ%¤f§l¡l°;Ñ&?Ó@Ð@ÙØ×)Ñ)¨%Ó0ˆFÜ&1×&UÑ&UÙ!¬+×*@Ñ*@Ó*Bô'ˆF�?Ñ#ð ˆMä×)Ñ)Ó+Ð+r~   c                ó  ‡— 	 t        j                  ‰j                  ‰j                  j                  | j
                  «      }|t        u rt        dd¬«      ‚t        || j                  «      }t        j                  ‰j                  |¬«      ‰_        | j                  |«      }| j!                  |t#        |j%                  «       ‰j&                  «      d¬«      }| j(                  j*                  }|�(| j-                  |‰j                  ‰j&                  ¬«       dˆfd„}t/        |g¬	«      }t1        j2                  ‰j&                  |‰j                  j4                  |¬
«      S # t        $ r}t        j                  |«      |‚d }~ww xY w)Nz�Computed 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û  c                ó’  •—  || «      }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  r  )ry   r¢   r£   r  r  r$   r  Úadd_json_schema_extra)r‘   r°   r²   r¢   r£   r  r  rx  s          €r|   Úset_computed_field_metadatazJGenerateSchema._computed_field_schema.<locals>.set_computed_field_metadata±  sÃ   ø€ Ù! &›/ˆKà&*ˆK˜
Ñ#à—F‘F—L‘LˆEØÐ Ø',�˜GÑ$àŸ&™&×,Ñ,ˆKØÐ&Ø-8�˜MÑ*à�v‰v× Ò  A§F¡F×$5Ñ$5¸Ò$;Ø,0�˜LÑ)à—v‘v—‘ˆHØÐ#Ü*<¸XÓ*F�˜JÑ'à !§¡× 8Ñ 8ÐØ Ð,Ü% kÐ3DÔEàÐr~   r  )rƒ  rõ  r3  )r‘   rC   r°   r/   rÙ   r6   )r;   Úget_function_return_typeÚfuncry   rË  rù   r‘  r4   r’  r"   r5   r_   ræ   r—  Úreplacer  r  r�   r0  r†   r÷   r÷  rü  rB   r#   rÍ  rõ  )	rË   rx  rZ  rË  r”  Úreturn_type_schemar÷  rÑ  r3  s	    `       r|   rl  z%GenerateSchema._computed_field_schema�  sk  ø€ ð
	HÜ%×>Ñ>¸q¿v¹vÀqÇvÁv×GYÑGYÐ[_×[pÑ[pÓqˆKð Ô+Ñ+Ü#ðdà5ôð ô $ K°×1CÑ1CÓDˆô ×$Ñ$ Q§V¡V¸ÔEˆŒØ!×1Ñ1°+Ó>Ðà!×:Ñ:ØÜ0Ð1B×1IÑ1IÓ1KÈQÏ^É^Ó\Øð ;ó 
Ðð ×.Ñ.×>Ñ>ˆØÐ&Ø×>Ñ>Ø /ÀQÇVÁVÐab×aoÑaoð ?ô õ	ô4 'Ð@[Ð?\Ô]ˆÜ×)Ñ)Ø�N‰NÐ*<ÀAÇFÁFÇLÁLÐ[cô
ð 	
øôm ò 	HÜ-×=Ñ=¸aÓ@ÀaÐGûð	Hús   ƒ?E$ Å$	FÅ-FÆFc                ó    — ddl m} | j                  |d¬«      ^}}| j                  ||«      }|D ]  }t	        ||«      sŒt        ||«      }Œ |S )zdGenerate schema for an Annotated type, e.g. `Annotated[int, Field(...)]` or `Annotated[int, Gt(0)]`.r,   r   TrK  )rx   re   rd  rÎ  r  r  )rË   Úannotated_typere   rÑ  r   r‘   r
  s          r|   r£  z GenerateSchema._annotated_schemaÐ  sh   € å&à$(×$IÑ$IØØð %Jó %
Ð!ˆ�kð ×(Ñ(¨°kÓBˆð &ò 	:ˆJÜ˜* iÕ0Ü% j°&Ó9‘ð	:ð ˆr~   c                óœ   — ddl m} 	 t        |«       |D ]&  } |||| j                  j
                  «      }|€Œ$|c S  y # t        $ r Y y w xY w)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à  sa   € õ 	7ð	Ü�ŒIð
 #ò 	ˆCÙ�c˜;¨×(<Ñ(<×(HÑ(HÓIˆCØ‰Ø’
ð	ð
 øô ò 	áð	ús   ˆ? ¿	AÁ
Ac                ó   — | S r‹   rÞ   )rÅ  s    r|   r�  zGenerateSchema.<lambda>÷  s   € Èq€ r~   c                ó¬  ‡ ‡— t        t        j                  |«      «      }‰ j                  |t	        |«      «      }|�|\  }}g }dˆ ˆfd„}t        |‰ «      }|D ]  }|€Œ‰ j                  |||«      }Œ  ||«      }	|r6t        |	«      j                  }
|
j                  dg «      j                  |«       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).
        c                óè   •— ‰j                  | | «      }|€‰j                  | «      }n|}t        | |«      }|�4t        |‰j                  j
                  «      }|�‰j                  ||«        ‰|«      S r‹   )r9  r:  r;  r<  ré   r,  r7  )rô   r>  r‘   r?  r5  rË   r  s        €€r|   Úinner_handlerz8GenerateSchema._apply_annotations.<locals>.inner_handler  s{   ø€ Ø ×?Ñ?ÀÀSÓIˆMØÐ$Ø×4Ñ4°SÓ9‘à&�Ü#DÀSÈ&Ó#QÐ Ø#Ð/Ü"9¸&À$Ç)Á)×BWÑBWÓ"X�Ø"Ð.Ø×)Ñ)¨/Ð;OÔPÙ)¨&Ó1Ð1r~   Ú pydantic_js_annotation_functions©rô   r   rÙ   r!   )r/  r=   Úexpand_grouped_metadatarÍ  r’   r`   Ú_get_wrapped_inner_schemarA   r3  r4  ÚextendrÅ   r÷   rÁ   )rË   rÑ  r   r  rÐ  rà  rß  Úget_inner_schemar
  r‘   r3  s   `  `       r|   rÎ  z!GenerateSchema._apply_annotationsó  sç   ù€ ô Ô4×LÑLÈ[ÓYÓZˆØ×CÑCÀKÔQVÐWbÓQcÓdˆØˆ?Ø'*Ñ$ˆK˜àHJÐ(ö	2ô 8¸ÀtÓLÐà%ò 	ˆJØÐ!ØØ#×=Ñ=Ø  *Ð.Nó Ñð	ñ " +Ó.ˆÙ+Ü*¨6Ó2×;Ñ;ˆHØ×ÑÐ BÀBÓG×NÑNÐOoÔpÜ;¸D×<PÑ<P×<^Ñ<^Ð`kÐmsÓtÐtr~   c                ó¤  — ddl m} t        ||«      rM|j                  D ]  }| j	                  ||«      }Œ |j
                  �| j                  ||j
                  «      }|S |d   dk(  r?|j                  dt        j                  «       «      }| j	                  ||«      }|r||d<   |S |}|j                  dd «      }|�X|j                  «       }|dt        |«      › �z   }|| j                  j                  v r| j                  j                  |   S ||d<   n“|d   dk(  r‹|d	   }|| j                  j                  v rn| j                  j                  |   j                  «       }|dt        |«      › �z   }|| j                  j                  v r| j                  j                  |   S ||d<   t        j                  ||j                  «       «      }	|	�|	S |S )
Nr,   r   r�   r�   r‘   r´   rŒ  údefinition-refr¡  )rx   re   r  r3  Ú_apply_single_annotationr!  r"  r˜   r#   rš   r   Úreprré   r,  r=   Úapply_known_metadata)
rË   r‘   r3  re   Úfield_metadatarM  r³   r´   Únew_refÚmaybe_updated_schemas
             r|   rè  z'GenerateSchema._apply_single_annotation"  sÒ  € Ý&ä�h 	Ô*Ø"*×"3Ñ"3ò O�Ø×6Ñ6°v¸~ÓN‘ðOð ×%Ñ%Ð1Ø×;Ñ;¸FÀH×DZÑDZÓ[�ØˆMà�&‰>˜ZÒ'à—J‘J˜x¬×)?Ñ)?Ó)AÓBˆEØ×1Ñ1°%¸ÓBˆEÙØ#(��xÑ ØˆMà ˆØ�j‰j˜ Ó%ˆØˆ?Ø—[‘[“]ˆFØ˜a¤ X£Ð/Ð0Ñ0ˆGØ˜$Ÿ)™)×/Ñ/Ñ/Ø—y‘y×,Ñ,¨WÑ5Ð5Ø#ˆF�5ŠMØ�F‰^Ð/Ò/Ø˜Ñ&ˆCØ�d—i‘i×+Ñ+Ñ+ØŸ™×.Ñ.¨sÑ3×8Ñ8Ó:�Ø !¤D¨£NÐ#3Ð 4Ñ4�Ø˜dŸi™i×3Ñ3Ñ3ØŸ9™9×0Ñ0°Ñ9Ð9Ø '��u‘ä8×MÑMÈhÐX^×XcÑXcÓXeÓfÐàÐ+Ø'Ð'ØÐr~   c                óÄ  — ddl m} t        ||«      rÍ|j                  D ]  }| j	                  ||«      }Œ i }|j
                  r|j
                  |d<   |j                  r|j                  |d<   |j                  rt        |j                  «      |d<   |j                  }|s|r>t        |«      j                  j                  dg «      j                  t        ||«      «       |S )Nr,   r   r¢   r£   r  rà  )rx   re   r  r3  Ú$_apply_single_annotation_json_schemar¢   r£   r  r$   r  rA   r4  rÔ   r  )rË   r‘   r3  re   rë  Újson_schema_updater  s          r|   rï  z3GenerateSchema._apply_single_annotation_json_schemaL  sÜ   € õ 	'ä�h 	Ô*Ø"*×"3Ñ"3ò [�Ø×BÑBÀ6È>ÓZ‘ð[à24ÐØ�~Š~Ø.6¯n©nÐ" 7Ñ+Ø×#Ò#Ø4<×4HÑ4HÐ" =Ñ1Ø× Ò Ü1CÀH×DUÑDUÓ1VÐ" :Ñ.à (× :Ñ :ÐÙ!Ñ%6Ü# FÓ+×4Ñ4×?Ñ?Ð@bÐdfÓg×nÑnÜ/Ð0BÐDUÓVôð ˆr~   c                ó\   ‡ ‡‡‡‡— t        ‰dd «      xs d„ Šdˆˆˆˆˆ fd„}t        |‰ «      S )Nrƒ  c                ó   —  || «      S r‹   rÞ   )r‹  r°   s     r|   r�  z:GenerateSchema._get_wrapped_inner_schema.<locals>.<lambda>j  s
   € ¡G¨F£O€ r~   c                ó    •—  ‰| ‰«      }‰j                  |‰«      }‰j                  |‰«      }t        ‰|«      }|�‰j                  |«       |S r‹   )rè  rï  r;  rÔ   )r‹  r‘   r?  r
  rå  Úmetadata_get_schemarà  rË   s      €€€€€r|   Únew_handlerz=GenerateSchema._get_wrapped_inner_schema.<locals>.new_handlerm  s\   ø€ Ù(¨Ð1AÓBˆFØ×2Ñ2°6¸:ÓFˆFØ×>Ñ>¸vÀzÓRˆFä#DÀZÐQWÓ#XÐ Ø#Ð/Ø0×7Ñ7Ð8LÔMØˆMr~   )r‹  r   rÙ   úcore_schema.CoreSchema)r½   r`   )rË   rå  r
  rà  rõ  rô  s   ```` @r|   rã  z(GenerateSchema._get_wrapped_inner_schemac  s9   ü€ ô 6=¸ZÐIgÐimÓ5nò 6
Ù3ð 	÷	ñ 	ô ,¨K¸Ó>Ð>r~   c                óª  — |�r¨t        |«      }|d   dk(  r|d   }| j                  ||«      |d<   |S t        j                  d|j	                  dd«      «      }|�t        j                  |«      }|d   }t        |j                  |j                  j                  |¬«      \  }}	 t        j                  |j                  |j                  j                  | j                  «      }	|	t$        u rd}n| j'                  |	«      }|j                  j                  d	k(  r=t        j(                  |j                  ||||j                  j*                  ¬
«      |d<   |S |j                  j                  dk(  sJ ‚t        j,                  |j                  ||||j                  j*                  ¬
«      |d<   |S # t        $ r}
t!        j"                  |
«      |
‚d}
~
ww xY w)z$Apply field serializers to a schema.r�   r,  r‘   zstr|Noner´   Nrº   rÌ  Úwrap)Úis_field_serializerro  rƒ  r¼   r¸   Úplain)r   r  rÄ  r   r˜   r#   r-  rU   rÓ  ry   rN  r;   rÒ  rË  rù   r‘  r4   r’  r"   r  rs  r¼   rÀ   )rË   r‘   ÚserializersrÍ  rž   r´   Ú
serializerrù  ro  rË  r”  rƒ  s               r|   r  z'GenerateSchema._apply_field_serializersy  s¸  € ò Ü˜&“\ˆFØ�f‰~ Ò.Ø% hÑ/�Ø#'×#@Ñ#@ÀÈ{Ó#[��xÑ Ø�ä—k‘k *¨f¯j©j¸ÀÓ.EÓF�Ø�?Ü(×DÑDÀSÓI�Fð % R™ˆJÜ,DØ—‘ §¡×!5Ñ!5Ànô-Ñ)Ð ðLÜ)×BÑBØ—O‘O Z§_¡_×%@Ñ%@À$×BWÑBWó�ð Ô/Ñ/Ø $‘à $× 4Ñ 4°[Ó A�à�‰×#Ñ# vÒ-Ü*5×*YÑ*YØ—O‘OØ(;Ø%Ø"/Ø(Ÿo™o×7Ñ7ô+��Ñ'ð  ˆð "—‘×+Ñ+¨wÒ6Ð6Ð6Ü*5×*ZÑ*ZØ—O‘OØ(;Ø%Ø"/Ø(Ÿo™o×7Ñ7ô+��Ñ'ð ˆøô3 ò LÜ1×AÑAÀ!ÓDÈ!ÐKûðLús   Â%?F. Æ.	GÆ7GÇGc                óÎ  — |j                  dd«      }|�r!t        |«      d   }t        |j                  |j                  j
                  «      }	 t        j                  |j                  |j                  j                  | j                  «      }|t        u rd}n| j                  |«      }|j                  j
                  dk(  r8t        j                   |j                  |||j                  j"                  ¬«      }	n7t        j$                  |j                  |||j                  j"                  ¬«      }	|	|d<   |r||d<   |S # t        $ r}t        j                  |«      |‚d}~ww xY w)z$Apply model serializers to a schema.r´   Nrº   rø  )ro  rƒ  r¼   r¸   )rÕ   r/  rV   rÓ  ry   rN  r;   rÒ  rË  rù   r‘  r4   r’  r"   r  r#   rs  r¼   rÀ   )
rË   r‘   rû  r´   rü  ro  rË  r”  rƒ  Ú
ser_schemas
             r|   rn  z'GenerateSchema._apply_model_serializers°  s=  € ð !Ÿ*™* U¨DÓ1ˆÚÜ˜kÓ*¨2Ñ.ˆJÜ/°
·±ÀÇÁ×AUÑAUÓVˆHðLÜ)×BÑBØ—O‘O Z§_¡_×%@Ñ%@À$×BWÑBWó�ð
 Ô/Ñ/Ø $‘à $× 4Ñ 4°[Ó A�à�‰×#Ñ# vÒ-Ü4?×4cÑ4cØ—O‘OØ%Ø"/Ø(Ÿo™o×7Ñ7ô	5‘
ô )×MÑMØ—O‘OØ%Ø"/Ø(Ÿo™o×7Ñ7ô	�
ð '1ˆF�?Ñ#ÙØˆF�5‰MØˆøô3 ò LÜ1×AÑAÀ!ÓDÈ!ÐKûðLús   Á?E  Å 	E$Å	EÅE$r‹   )rî   r?   rÌ   údict[str, Any] | Nonerï   údict[Any, Any] | NonerÙ   ÚNone)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!  zstr | Discriminator | NonerÙ   r!   r	  )r5  r!   r6  úCallable[..., Any]rÙ   r  )T)rô   r   r=  r®  rÙ   rö  )r±   ztype[BaseModel]rÙ   rö  )rô   r   r‹  r   rÙ   zcore_schema.CoreSchema | None)rô   r   rÙ   r   )rô   r   rL  zLiteral[True]rÙ   útuple[Any, ...])rô   r   rÙ   útuple[Any, ...] | None)F)rô   r   rL  r®  rÙ   r  )rô   r   rÙ   ztuple[Any, Any])rô   r   rÙ   rö  )rô   r   rž  r   rÙ   r!   )
rà  ra  rá  re   r‡   rM   rL  r®  rÙ   zcore_schema.TypedDictField)rà  ra  rá  re   r‡   rM   rÙ   zcore_schema.ModelField)rà  ra  rá  re   r‡   rM   rÙ   zcore_schema.DataclassField)r÷  ú%Callable[[str], str] | AliasGeneratorrá  re   r�   ra  rÙ   r  )r÷  r  rú  rd   rû  ra  )rà  ra  rá  re   r‡   rM   rÙ   Ú_CommonField)r"  r   rÙ   rö  )r-  r   rÙ   r!   )r4  r   rž  r   rÙ   rö  )rK  r   rž  r   rÙ   rö  )
rà  ra  r
  rÚ   rC  r   rN  zJLiteral['positional_only', 'positional_or_keyword', 'keyword_only'] | NonerÙ   zcore_schema.ArgumentsParameter)rZ  r   rÙ   rö  )rÙ   rö  )rh  r   rÙ   rö  )ru  r   rÙ   rö  )rh  r   rÙ   zcore_schema.GeneratorSchema)rˆ  r   rÙ   rö  )r¢  ztype[StandardDataclass]rž  ztype[StandardDataclass] | NonerÙ   rö  )r¹  r  rÙ   zcore_schema.CallSchema)rÈ  ztyping.TypeVarrÙ   rö  )rx  zDecorator[ComputedFieldInfo]rZ  z2dict[str, Decorator[FieldSerializerDecoratorInfo]]rÙ   zcore_schema.ComputedField)r×  r   rÙ   rö  )rô   r   r   r  rÙ   ztuple[Any, list[Any]] | None)rÑ  r   r   z	list[Any]r  z"Callable[[CoreSchema], CoreSchema]rÙ   r!   )r‘   rö  r3  r   rÙ   rö  )rå  r.   r
  r   rà  zlist[GetJsonSchemaFunction]rÙ   r`   )r‘   rö  rû  z-list[Decorator[FieldSerializerDecoratorInfo]]rÍ  r®  rÙ   rö  )r‘   rö  rû  z1Iterable[Decorator[ModelSerializerDecoratorInfo]]rÙ   rö  )Ir©   rÛ   rÜ   rª   r“  rÍ   Úclassmethodrü   rÝ   r÷   rù   rý   r   r  r  r  r  r  r  r  r"  Ú	Exceptionr%  r)  r'  r7  r  r{  r€  r9  r•  r   rd  rœ  rŸ  r:  r¥  rÏ  rã  rk  rï  Ústaticmethodrø  rü  rf  rÔ  r³  r¸  r¹  r»  r
   rI  rG  r²  r´  rc  rÕ  r×  rÙ  rÀ  rÅ  rÌ  rÇ  rÆ  rl  r£  rÍ  rÎ  rè  rï  rã  r  rn  rÞ   r~   r|   rä   rä   3  sÖ  „ Ùfð€Ið /3ð	#à%ð#ð /ð#ð ,ð	#ð
 
ó#ð ðà0ðð  3ðð *ð	ð
 ,ðð ðð 
òó ðð" ò/ó ð/ð ò0ó ð0ð ò
ó ð
ð ò<ó ð<ó(óIókóHóNó
2ó	
ðØ ðØ1Kðà	óô$˜9ô óó	
ó	6ð -1ð-àð-ð &*ð-ð 
 ó	-ó^^Jó@ó9óvð, òó ðð òó ðôóó ó$ó2T.ól*.ðd ñ
àð
ð ð
ð #ð	
ð ð
ð 
$ó
ð&
àð
ð ð
ð #ð	
ð
 
 ó
ð"
àð
ð ð
ð #ð	
ð
 
$ó
ð* ð/[Ø>ð/[ØLUð/[Øcfð/[à	ò/[ó ð/[ðb ð(\Ø>ð(\à.ð(\ð !ò(\ó ð(\ðTe
Øðe
Ø%.ðe
Ø<Jðe
à	óe
óNð6@àð@ð 
ó@ó,4óhOóT"aðP !—‘Ø[_ð! àð! ð ð! ð ð	! ð
 Yð! ð 
(ó! óF_ó<
ódó
>ó*
ó.Móró8
ða(Ø0ða(Ø:Xða(à	óa(óF3
ój,ð2?
à'ð?
ð Nð?
ð 
#ó	?
óBð ØðØ%4ðà	%óñ. FQð	-uàð-uð ð-uð !Cð	-uð
 
ó-uó^(ðTØ,ðØ8;ðà	óð.?à.ð?ð ð?ð +Fð	?ð
 
&ó?ð4  %ð	5à&ð5ð Cð5ð ð	5ð
 
 ó5ðn&Ø,ð&Ø;lð&à	ô&r~   rä   c                ó.   — t        j                  | |«      S r‹   )r#   Ú!no_info_before_validator_function©Úfr‘   rŒ  s      r|   r�  r�  Ý  s   € ´×0]Ñ0]Ð^_ÐagÓ0h€ r~   c                ó.   — t        j                  | |«      S r‹   )r#   Ú no_info_after_validator_functionr  s      r|   r�  r�  Þ  s   € ¬{×/[Ñ/[Ð\]Ð_eÓ/f€ r~   c                ó,   — t        j                  | «      S r‹   )r#   r„  )r  r  r€  s      r|   r�  r�  ß  s   € ¬K×,XÑ,XÐYZÓ,[€ r~   c                ó.   — t        j                  | |«      S r‹   )r#   rr  r  s      r|   r�  r�  à  s   € ¬k×.YÑ.YÐZ[Ð]cÓ.d€ r~   c                ó2   — t        j                  | ||¬«      S ©N)r�   )r#   Ú#with_info_before_validator_function©r  r‘   r�   s      r|   r�  r�  á  s   € ¼;×;jÑ;jØ	ˆ6˜jô<€ r~   c                ó2   — t        j                  | ||¬«      S r  )r#   Ú"with_info_after_validator_functionr  s      r|   r�  r�  ä  s   € ¼+×:hÑ:hØ	ˆ6˜jô;€ r~   c                ó0   — t        j                  | |¬«      S r  )r#   rŠ  )r  rŒ  r�   s      r|   r�  r�  ç  s   € ´[×5cÑ5cØ	�jô6€ r~   c                ó2   — t        j                  | ||¬«      S r  )r#   Ú!with_info_wrap_validator_functionr  s      r|   r�  r�  ê  s   € ¼×9fÑ9fØ	ˆ6˜jô:€ r~   ))Úbeforeúno-info)Úafterr  )rú  r  )rø  r  )r  ú	with-info)r  r  )rú  r  )rø  r  z Mapping[tuple[FieldValidatorModes, Literal['no-info', 'with-info']], Callable[[Callable[..., Any], core_schema.CoreSchema, str | None], core_schema.CoreSchema]]Ú_VALIDATOR_F_MATCHc                óÔ   — |D ]b  }t        |j                  |j                  j                  «      }|rdnd}t	        |j                  j                  |f   |j                  | |«      } Œd | 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.
    r  r  )rW   rÓ  ry   rN  r  )r‘   r[  r�   Ú	validatorro  Úval_types         r|   r™   r™   ð  sg   € ð"  ò iˆ	Ü$ Y§^¡^°Y·^±^×5HÑ5HÓIˆÙ"*‘;°	ˆä# Y§^¡^×%8Ñ%8¸(Ð$CÑDÀYÇ^Á^ÐU[Ð]gÓh‰ð	ið
 €Mr~   c                óB   — | D ]  }|j                   j                  sŒ y y)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)ry   Úalways)r[  r!  s     r|   r  r  	  s(   € ð  ò ˆ	Ø�>‰>× Ó Ùðð r~   c                ó\  — | j                  dd«      }|D �]Œ  }|dk(  r|j                  j                  dk7  rŒ#|dk(  r|j                  j                  dk(  rŒBt        |j                  |j                  j                  «      }|j                  j                  dk(  rF|r"t        j                  |j                  | ¬«      } Œ©t        j                  |j                  | ¬«      } ŒË|j                  j                  dk(  rH|r#t        j                  |j                  | ¬«      } �Œ	t        j                  |j                  | ¬«      } �Œ,|j                  j                  dk(  sJ ‚|r#t        j                  |j                  | ¬«      } �Œlt        j                  |j                  | ¬«      } �Œ� |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´   NrM  r  rV  rø  )r¹  r‘   r  )rÕ   ry   rN  rW   rÓ  r#   r  rr  r  r  r  r  )r‘   r[  rN  r´   r!  ro  s         r|   rg  rg    sc  € ð& —j‘j ¨Ó-€CØó nˆ	Ø�7Š?˜yŸ~™~×2Ñ2°hÒ>ØØ�7Š?˜yŸ~™~×2Ñ2°hÒ>ØÜ$ Y§^¡^°Y·^±^×5HÑ5HÓIˆØ�>‰>×Ñ &Ò(ÙÜ$×FÑFÐPY×P^ÑP^ÐgmÔn‘ä$×DÑDÈiÏnÉnÐekÔl‘Ø�^‰^× Ñ  HÒ,ÙÜ$×HÑHÐR[×R`ÑR`ÐioÔp’ä$×FÑFÐPY×P^ÑP^ÐgmÔn’à—>‘>×&Ñ&¨'Ò1Ð1Ð1ÙÜ$×GÑGÐQZ×Q_ÑQ_ÐhnÔo’ä$×EÑEÈyÏ~É~ÐflÔm’ð+nñ, Øˆˆu‰Ø€Mr~   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_factoryr  )rC  r  )r'  r#   Úwith_default_schemar  rC  r"   )rá  r‘   s     r|   r  r  H  sr   € ð ×!Ò!Ü×.Ñ.Ø J×$>Ñ$>ÐQ[×QlÑQlô
ð 	
ð 
×	Ñ	Ô#4Ñ	4Ü×.Ñ.Ø˜J×.Ñ.À×A\ÑA\ô
ð 	
ð ˆr~   c                óx  — t        | dd«      }t        | d«      rYddlm} |duxr% |j                  j
                  |t        |dd«      fv}|s&t        | dd«      }t        d|rd	|› d
�nd› d�d¬«      ‚t        | d«      r8t        | t        t        t        df   «      «      st        | j                  |«      S |€y|S )z`Extract `__get_pydantic_json_schema__` from a type, handling the deprecated `__modify_schema__`.Ú__get_pydantic_json_schema__NÚ__modify_schema__r   rf   Ú__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Ÿ  Úpydanticrg   r*  r,  r5   r  r�   r%   rª  r;  r.  )rÂ   r‘   Újs_modify_functionrg   Úhas_custom_v2_modify_js_funcÚcls_names         r|   r;  r;  ^  sç   € ä  Ð%CÀTÓJÐäˆrÐ&Ô'Ý&ð  dÐ*ò WØ×6Ñ6×?Ñ?Ø&¬Ð0BÀJÐPTÓ(UÐVðWð 	%ñ ,Ü˜r :¨tÓ4ˆHÜ#ð=ÙZb¸{È8È*ÐTUÑ=VÐhjÐ<kÐklðnà)ôð ô ˆr�<Ô ¬°B¼¼YÄsÈMÐGYÑ=ZÓ8[Ô)\Ü0°·±ÀÓGÐGàÐ!ØàÐr~   c                ó$   ‡ ‡— 	 	 	 	 	 	 dˆˆ fd„}|S )Nc                ó8   •— i  || «      ¥‰¥}t        |‰«       |S r‹   )rÐ  )Úcore_schema_or_fieldr°   r²   r  rð  s      €€r|   Újson_schema_update_funcz<get_json_schema_update_func.<locals>.json_schema_update_func€  s-   ø€ ð N™Ð!5Ó6ÐMÐ:LÐMˆÜ˜kÐ+<Ô=ØÐr~   )r6  rC   r°   r/   rÙ   r6   rÞ   )rð  r  r7  s   `` r|   r  r  }  s(   ù€ ðØ/ðØ:Nðà	öð #Ð"r~   c                ó‚   — t        |t        «      r| j                  t        |«      «       y t	        |«      r	 || «       y y r‹   )r  r•   r  r$   Úcallable)r²   r  s     r|   rÐ  rÐ  Š  s:   € ô Ð#¤TÔ*Ø×ÑÔ-Ð.?Ó@ÕAÜ	Ð#Ô	$Ù˜+Õ&ð 
%r~   c                  óJ   — e Zd ZU ded<   ded<   ded<   ded<   ded	<   d
ed<   y)r  rö  r‘   ú4str | list[str | int] | list[list[str | int]] | NonerÜ  r+  rÝ  úbool | NonerÛ  rå  zdict[str, Any]r3  N)r©   rÛ   rÜ   rG  rÞ   r~   r|   r  r  “  s&   … Ø"Ó"ØJÓJØ#Ó#Ø&Ó&ØÓØÔr~   r  )rÜ  rÝ  rÛ  rå  r3  c               ó   — | |||||dœS )N©r‘   rÜ  rÝ  rÛ  rå  r3  rÞ   r>  s         r|   r  r  œ  s    € ð Ø,Ø2Ø!6ØØñð r~   c                  ó*   — e Zd ZdZdd„Zedd„«       Zy)rí   z*Keeps track of references and definitions.c                ó0   — t        «       | _        i | _        y r‹   )rƒ   Úseenr,  rÐ   s    r|   rÍ   z_Definitions.__init__²  s   € Ü!›eˆŒ	Ø>@ˆÕr~   c              #  óH  K  — t        |«      }|| j                  v s|| j                  v r|t        j                  |«      f–— y| j                  j                  |«       	 |df–— | j                  j                  |«       y# | j                  j                  |«       w xY w­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   rA  r,  r#   r-  ÚaddÚdiscard)rË   rÂ   r´   s      r|   rW  z_Definitions.get_schema_or_ref¶  s„   è ø€ ô( ˜2Óˆà�$—)‘)Ñ˜s d×&6Ñ&6Ñ6Øœ×?Ñ?ÀÓDÐEÓEà�I‰I�M‰M˜#Ôð'Ø˜D�kÒ!à—	‘	×!Ñ! #Õ&ø�—	‘	×!Ñ! #Õ&üs   ‚AB"Á B Á&B"ÂBÂB"N©rÙ   r  )rÂ   r   rÙ   z3Iterator[tuple[str, None] | tuple[str, CoreSchema]])r©   rÛ   rÜ   rª   rÍ   r   rW  rÞ   r~   r|   rí   rí   ¯  s   „ Ù4óAð ò'ó ñ'r~   rí   c                óZ   — | d   dk(  r|j                  | d   d «      S | d   dk(  r| d   S | S )Nr�   rç  r¡  r,  r‘   r�  )r‘   r,  s     r|   r<  r<  Ö  sA   € Øˆf�~Ð)Ò)Ø�‰˜v lÑ3°TÓ:Ð:Ø	�‰˜=Ò	(Ø�hÑÐàˆr~   c                  ó2   — e Zd ZdZdd„Zedd„«       Zdd„Zy)	rë   ©Ú_stackc                ó   — g | _         y r‹   rH  rÐ   s    r|   rÍ   z_FieldNameStack.__init__â  s	   € Ø!#ˆ�r~   c              #  ó~   K  — | j                   j                  |«       d –— | j                   j                  «        y ­wr‹   ©rI  rÔ   rÕ   )rË   r�   s     r|   r×   z_FieldNameStack.pushå  s)   è ø€ à�‰×Ñ˜:Ô&ÛØ�‰�‰Õùó   ‚;=c                ó:   — | j                   r| j                   d   S y rÏ   rH  rÐ   s    r|   r˜   z_FieldNameStack.getë  ó   € Ø�;Š;Ø—;‘;˜r‘?Ð"àr~   NrE  )r�   ra  rÙ   úIterator[None])rÙ   r+  ©r©   rÛ   rÜ   r“  rÍ   r   r×   r˜   rÞ   r~   r|   rë   rë   ß  s%   „ Ø€Ió$ð òó ðô
r~   rë   c                  ó2   — e Zd ZdZdd„Zedd„«       Zdd„Zy)	rì   rH  c                ó   — g | _         y r‹   rH  rÐ   s    r|   rÍ   z_ModelTypeStack.__init__õ  s	   € Ø"$ˆ�r~   c              #  ó~   K  — | j                   j                  |«       d –— | j                   j                  «        y ­wr‹   rL  )rË   Útype_objs     r|   r×   z_ModelTypeStack.pushø  s)   è ø€ à�‰×Ñ˜8Ô$ÛØ�‰�‰ÕùrM  c                ó:   — | j                   r| j                   d   S y rÏ   rH  rÐ   s    r|   r˜   z_ModelTypeStack.getþ  rO  r~   NrE  )rU  r�   rÙ   rP  )rÙ   ztype | NonerQ  rÞ   r~   r|   rì   rì   ò  s%   „ Ø€Ió%ð òó ðô
r~   rì   )ry   ÚFieldDecoratorInforz   ra  rÙ   r®  )r‡   zIterable[AnyFieldDecorator]rx   zIterable[str]rÙ   r  )rŒ   z+Iterable[Decorator[FieldDecoratorInfoType]]rz   ra  rÙ   z'list[Decorator[FieldDecoratorInfoType]])r‘   rö  rœ   z'list[Decorator[ValidatorDecoratorInfo]]r�   r+  rÙ   rö  )r¯   rC   r°   r/   r±   r   rÙ   r6   )rÁ   zJsonEncoders | NonerÂ   r   r‘   r!   rÙ   r!   )rà   r   rá   r   rÙ   r   )r‘   rö  r[  z�Iterable[Decorator[RootValidatorDecoratorInfo]] | Iterable[Decorator[ValidatorDecoratorInfo]] | Iterable[Decorator[FieldValidatorDecoratorInfo]]r�   r+  rÙ   rö  )r[  z+Iterable[Decorator[ValidatorDecoratorInfo]]rÙ   r®  )r‘   rö  r[  z0Iterable[Decorator[ModelValidatorDecoratorInfo]]rN  z Literal['inner', 'outer', 'all']rÙ   rö  )rá  re   r‘   rö  rÙ   rö  )rÂ   r   r‘   r!   rÙ   zGetJsonSchemaFunction | None)rð  r6   r  ú3JsonDict | typing.Callable[[JsonDict], None] | NonerÙ   rk   )r²   r6   r  rX  )r‘   rö  rÜ  r;  rÝ  r+  rÛ  r<  rå  r<  r3  r   rÙ   r  )r‘   r!   r,  zdict[str, CoreSchema]rÙ   zCoreSchema | None)Ã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/   rR  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   rE  rY   rZ   Ú_forward_refr[   Ú	_genericsr\   r]   r^   r_   Ú_schema_generation_sharedr`   ra   rb   Ú_utilsrc   rx   rd   re   r¥   rg   rh   r[  ri   Ú_dataclassesrj   rk   Úversion_infor6  r�   rª  r¢  rW  ro   ÚAnyFieldDecoratorÚModifyCoreSchemaWrapHandlerÚGetCoreSchemaFunctionr’   ÚTuplerq   rG  r/  ÚListrÂ  ÚMutableSequencerr   rƒ   ÚSetÚ
MutableSetrs   Ú	frozensetÚ	FrozenSetrt   r•   ÚMutableMappingru   r}   r‰   r�   r—   r¶   ÚJsonEncodersrÅ   ra  rØ   rÇ   râ   rä   r  r™   r  rg  r  r;  r  rÐ  r  r  rí   r<  rë   rì   rÞ   r~   r|   ú<module>r~     su  ðÚ 3Ý 2ã Û Û Û 	Û 
Û Û ß 0ß Ý Ý ß 8Ñ 8Ý Ý ß 6Ñ 6÷÷ ÷ ÷ õ  ç XÓ Xß n× nÑ nå $ß Kß 6Ñ 6ß bÑ bÝ )Ý #Ý 0ß fÕ fß 6ß D÷
÷ 
õ 
÷÷ ÷ ó õ :ß LÝ .ß tÓ tÝ Cß 4Ý &áß5Ý Ý%Ý0Ý/Ý@à×&Ò&¨'Ñ1Ð Ù�i  S Ñ)Ó*€àÐ1Ð3NÐPlÐlÑmÐ Ù Ð!9ÐASÔTÐ ØØÐ$Ñ%ØÐ)Ñ*ØÐ*Ñ+ð-ñÐ ð 3Ð Ø  #Ð'BÐ!CÀ[×E[ÑE[Ð![Ñ\Ð ð ! &§,¢,Ð/€ˆZÓ /Ø §¢¨[¯_ª_×-LÒ-LÐM€
ˆJÓ MØ˜fŸjšj¨+¯/ª/×*DÒ*DÐE€	ˆ:Ó EØ )¨6×+;Ò+;¸[¿_º_×=PÒ=PÐQÐ �*Ó QØ §¡¨[¯_ª_×-KÒ-KÈ[Ï_Ê_×MdÑMdÐe€
ˆJÓ eðØ
ðàðð 
óó*ð6nØDðnØMPðnà,ónð"Ø"ð"àAð"ð ð"ð ó	"ðJØ&ðØ1EðØORðàóðD �D˜‘I˜{Ð*Ñ+€ðØ&ðØ,/ðØ9CðàóðD �t˜C ˜H‘~ tÐ+Ñ,€÷.ñ .ó(%÷cñ cñT5 iÙfÙ[Ùdñññññð ð ó ð.Ø"ðð7ðð
 ðð óó2ð ,Ø"ð,à@ð,ð +ð,ð ó	,ó^ó,ð>
#Ø'ð
#Ø<oð
#àó
#ð'Ø ð'Ø5hó'ô�9ô ð NRØ&*Ø)-ØØñØ"ðð Kðð $ð	ð
 'ðð ðð ðð ó÷&$'ñ $'óN÷ñ ÷&ò r~   