
    gƽ             
      	   % S r SSKJr  SSKrSSKrSSKrSSKrSSK	r	SSK
r
SSKrSSKrSSKrSSKrSSKJr  SSKJrJr  SSKJr  SSKJr  SSKJr  SS	KJr  SS
KJrJrJr  SSKJrJ r J!r!J"r"J#r#J$r$  SSK%J&r&  SSK'J(r(  SSK)J*r*J+r+J,r,  SSKJ-r-J.r.J/r/J0r0J1r1J2r2J3r3J4r4J5r5J6r6J7r7J8r8J9r9J:r:  SSK;J<r<  SSKJ=r=  SSK>r>SSK?J@r@JArAJBrBJCrCJDrDJErEJFrFJGrG  SSK>JHrHJIrIJJrJJKrKJLrLJMrM  SSKNJOrOJPrPJQrQ  SSKRJSrSJTrT  SSKUJVrVJWrWJXrXJYrY  SSKZJ[r[J\r\J]r]  SSK^J_r_J`r`JaraJbrbJcrc  SSKdJere  SSKfJgrg  SSKJhrh  SSKiJjrjJkrkJlrlJmrmJnrn  SSKoJprpJqrq  SS KrJsrs  SS!KjJtrtJuruJvrvJwrwJxrxJyryJzrzJ{r{  SS"KkJ|r|J}r}J~r~JrJrJrJrJrJrJrJrJr  SS#KJr  SS$KJrJr  SS%KJr  SS&KJrJrJrJr  SS'KJrJr  SS(KJr  SS)KJrJr  SS*KJr  SS+KJrJr  \-(       a   SS,KJrJr  SS-KJr  SS.K)Jr  SS/KJr  SS0KJr  \GRT                  S1:  r\8\\\~4   r\7" S2\S39r\8\|\   \|\   \|\~   4   r\Sr\/\.\/\FR                  4   r\\GRd                  /rS4\S5'   \\GRl                  \GRn                  GRp                  /rS4\S6'   \\GRv                  \GRn                  GRx                  /rS4\S7'   \\GR~                  \GRn                  GRv                  /rS4\S8'   \\R`                  /rS4\S9'   \\ \!\"\#\$/rS4\S:'   \GR                  \GRn                  GR                  /rS4\S;'   \	GR                  \
GR                  \
GR                  \
GR                  \
GR                  \
GR                  /rS4\S<'   \Rj                  \GR                  \GRn                  Rj                  \GRn                  GR                  \GR                  \>GR                  \GR                  \GR                  \GR                  \GR                  /
r\GR                  \GR                  /rS4\S='   \8\+\*\,\4   r\K" \5      r\`\_\b\cS>.rS?\S@'         SeSA jrSfSB jr      SgSC jr        ShSD jr    SiSE jr\0\6\.   \X4   r        SjSF jrSkSG jr " SH SI5      rSJ SK SL SM SN SO SP SQ SR.rSS\ST'           SlSU jrSmSV jr        SnSW jrSoSX jrSpSY jr " SZ S[\J5      rSSSSSS\.             SqS] jjr " S^ S_5      rSrS` jr " Sa Sb5      r " Sc Sd5      rg)sz-Convert python types to pydantic-core schema.    )annotationsN)contextmanager)copydeepcopy)Decimal)Enum)Fraction)partial)	Parameter_ParameterKind	signature)IPv4AddressIPv4InterfaceIPv4NetworkIPv6AddressIPv6InterfaceIPv6Network)chain)
attrgetter)FunctionType
LambdaType
MethodType)TYPE_CHECKINGAnyCallableDictFinal
ForwardRefIterableIteratorMappingTypeTypeVarUnioncastoverload)UUID)warn)
CoreSchemaMultiHostUrlPydanticCustomError$PydanticSerializationUnexpectedValuePydanticUndefinedUrlcore_schemato_jsonable_python)LiteralTypeAliasType	TypedDictget_args
get_originis_typeddict   )AliasChoicesAliasGenerator	AliasPath)GetCoreSchemaHandlerGetJsonSchemaHandler)
ConfigDictJsonDictJsonEncoderJsonSchemaExtraCallable)PydanticSchemaGenerationErrorPydanticUndefinedAnnotationPydanticUserError)AfterValidatorBeforeValidatorFieldValidatorModesPlainValidatorWrapValidator)JsonSchemaValue)version_short)PydanticDeprecatedSince20   )_core_utils_decorators_discriminated_union_known_annotated_metadata_typing_extra)ConfigWrapperConfigWrapperStack)update_core_metadata)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takes_validated_data_argument)PydanticRecursiveRef)get_standard_typevars_maphas_instance_in_typerecursively_defined_type_refsreplace_types)import_cached_base_modelimport_cached_field_info)MockCoreSchema)NamespacesTuple
NsResolver)CallbackGetCoreSchemaHandler)lenient_issubclasssmart_deepcopy)ComputedFieldInfo	FieldInfo	BaseModel)Discriminator)StandardDataclass)GetJsonSchemaFunction)      FieldDecoratorInfoType)boundz
list[type]TUPLE_TYPES
LIST_TYPES	SET_TYPESFROZEN_SET_TYPES
DICT_TYPESIP_TYPESSEQUENCE_TYPES
PATH_TYPESDEQUE_TYPES)beforeafterplainwrapzbdict[FieldValidatorModes, type[BeforeValidator | AfterValidator | PlainValidator | WrapValidator]]_mode_to_validatorc                Z    SU R                   ;   a  gU R                    H
  nX!:X  d  M
    g   g)zCheck if field name is in validator fields.

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

Returns:
    `True` if field name is in validator fields, `False` otherwise.
*TF)fields)infofieldv_field_names      \/home/matz/Project1/venv/lib/python3.13/site-packages/pydantic/_internal/_generate_schema.py)check_validator_fields_against_field_namer      s/     dkk  $     c           	     (   [        U5      nU  H  nSUR                  R                  ;   a  M  UR                  R                  SL a  M:  UR                  R                   H-  nX1;  d  M
  [	        SUR
                   SUR                   S3SS9e   M     g)	aZ  Check if the defined fields in decorators exist in `fields` param.

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

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

Raises:
    PydanticUserError: If one of the field names does not exist in `fields` param.
r   Fz*Decorators defined with incorrect fields: .zO (use check_fields=False if you're inheriting from the model and intended this)zdecorator-missing-fieldcodeN)setr   r   check_fieldsrC   cls_refcls_var_name)
decoratorsr   decr   s       r   check_decorator_fields_existr      s     [F#((//!88  E)XX__E"'@QsO_O_N`ef2  % r   c                l    U  Vs/ s H"  n[        UR                  U5      (       d  M   UPM$     sn$ s  snf N)r   r   )validator_functionsr   r   s      r   $filter_field_decorator_info_by_fieldr      s0     /m.C2[\_\d\dfk2lC.mmms   11c                   U(       d  U $ U S   S:X  a  [        U S   X5      U S'   U $ U S   S:X  a/  U R                  S5      =nb  [        U S   U   UU5      U S   U'   U $ [        U 5      (       a6  U R                  S[        R
                  " 5       5      n[        XAU5      U S'   U $ U S   S:X  a6  U R                  S[        R
                  " 5       5      n[        XAU5      U S'   U $ [        S	U S    35      e)
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_validatorsrZ   r/   
any_schema	TypeError)r   each_item_validators
field_namer   inner_schemas        r   r   r      s(     
 f~#5fX6FH\ix	7	"#)::.C#DDQ:J~&':;$;F>"#67 M 
/v	6	6zz.+2H2H2JK!1,V`!a~ M 
6	!zz/;3I3I3KL"2<Wa"b
 M ]^dek^l]mn
 	
r   c                N   U R                   U R                  [        U R                  5      =(       d    U R                  S:H  =(       d    S [	        U R
                  5      S.nUR                  5        VVs0 s H  u  p#Uc  M
  X#_M     nnnU=(       d    S U R                  4$ s  snnf )N )titledescription
deprecatedexamples)r   r   boolr   r0   r   itemsjson_schema_extra)r   json_schema_updateskvs       r   )_extract_json_schema_info_from_field_infor     s     ''4??+Lt"/DL&t}}5	 -@,E,E,GY,GDA1414,GY'4)?)?@@ Zs   4	B!B!c                4   U (       d  U$ SU;   a  U$ U/[        USUR                  R                  5      SS Q7 HZ  nU R                  U5      nUc  M  [        R
                  " S[        5        S3[        5        [        R                  " USS9US'   Us  $    U$ )	zIterate over the json_encoders and add the first matching encoder to the schema.

Args:
    json_encoders: A dictionary of types and their encoder functions.
    tp: The type to check for a matching encoder.
    schema: The schema to add the encoder to.
serialization__mro__Nz=`json_encoders` is deprecated. See https://docs.pydantic.dev/z</concepts/serialization/#custom-serializers for alternativesjson	when_used)
getattr	__class__r   r   warningsr(   rJ   rK   r/   $plain_serializer_function_ser_schema)json_encoderstpr   baseencoders        r   ,_add_custom_serialization_from_json_encodersr     s     &  Hgb)R\\-A-AB3BGH##D)?KMOK\  ]Y  Z%	
 #."R"RSZfl"m I Mr   c                    U b  U $ U$ )a6  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.
 )abs     r   _get_first_non_nullr   5  s     1$1$r   c                  l  ^  \ rS rSrSrSr  SM       SNS jjrSOU 4S jjr\SPS j5       r	\SQS j5       r
\SRS	 j5       rSSS
 jrSTS jrSSS jrSSS jrSUS jrSVS jrSWS jrSVS jrSXS jr      SYS jr " S S\5      rSZS jrSZS jrS[S jr S\     S]S jjrS^S jrSZS jrS_S jrS`S jrS_S jr \!SaS  j5       r"\!SbS! j5       r"ScSdS" jjr"S_S# jr#SeS$ jr$SfS% jr%SfS& jr&SgS' jr'SS(.         ShS) jjr(        SiS* jr)        SjS+ jr*\+        SkS, j5       r,\+      SlS- j5       r-\+        SmS. j5       r.        SnS/ jr/SoS0 jr0SpS1 jr1SqS2 jr2SrS3 jr3SsS4 jr4\5Rl                  S4         StS5 jjr7SuS6 jr8SvS7 jr9SvS8 jr:SoS9 jr;SwS: jr<SxS; jr=SyS< jr>SzS= jr?SvS> jr@      S{S? jrAS|S@ jrBS}SA jrC      S~SB jrDSSC jrE      SSD jrFSE 4       SSF jjrGSSG jrH      SSH jrI        SSI jrJ      SSJ jrK      SSK jrLSLrMU =rN$ )GenerateSchemai>  z\Generate core schema for a Pydantic model, dataclass and types like `str`, `datetime`, ... .)_config_wrapper_stack_ns_resolver_typevars_mapfield_name_stackmodel_type_stackdefsNc                    [        U5      U l        U=(       d
    [        5       U l        X0l        [        5       U l        [        5       U l        [        5       U l
        g r   )rS   r   ru   r   r   _FieldNameStackr   _ModelTypeStackr   _Definitionsr   )selfconfig_wrapperns_resolvertypevars_maps       r   __init__GenerateSchema.__init__J  sE     &8%G"'7:<) / 1 / 1 N	r   c                V   > [         TU ]  5         [        R                  " S[        SS9  g )NzeSubclassing `GenerateSchema` is not supported. The API is highly subject to change in minor versions.r7   )
stacklevel)super__init_subclass__r   r(   UserWarning)clsr   s    r   r    GenerateSchema.__init_subclass__X  s#    !#s	
r   c                .    U R                   R                  $ r   )r   tailr   s    r   _config_wrapperGenerateSchema._config_wrapper`  s    ))...r   c                .    U R                   R                  $ r   )r   types_namespacer   s    r   _types_namespaceGenerateSchema._types_namespaced  s      000r   c                .    U R                   R                  $ r   )r   arbitrary_types_allowedr   s    r   _arbitrary_typesGenerateSchema._arbitrary_typesh  s    ##;;;r   c                L    [         R                  " U R                  U5      5      $ r   )r/   list_schemagenerate_schemar   
items_types     r   _list_schemaGenerateSchema._list_scheman  s    &&t';';J'GHHr   c                l    [         R                  " U R                  U5      U R                  U5      5      $ r   )r/   dict_schemar  )r   	keys_typevalues_types      r   _dict_schemaGenerateSchema._dict_schemaq  s,    &&t';';I'FH\H\]hHijjr   c                L    [         R                  " U R                  U5      5      $ r   )r/   
set_schemar  r  s     r   _set_schemaGenerateSchema._set_schemat  s    %%d&:&::&FGGr   c                L    [         R                  " U R                  U5      5      $ r   )r/   frozenset_schemar  r  s     r   _frozenset_schema GenerateSchema._frozenset_schemaw  s    ++D,@,@,LMMr   c           	     >  ^^
^^^ [        TR                  R                  5       5      m
[        T5      mTR                  (       d  S O[
        R                  " TR                  5      nUS:X  a  S nTR                  US.mTR                  5        VVs0 s H  u  p4Uc  M
  X4_M     snnmS m[        T[        5      (       a  Sm[        R                  " S5      nOs[        T[        5      (       a  Sm[        R                  " S5      nOE[        T[        5      (       a  Sm[        R                  " S5      nO[        R                  " S 5      nT
(       a  SU4S jjn[!        TR"                  SS 5      [$        R"                  R&                  L n[        R(                  " TT
TU(       a  S OTR"                  TS	U/0S
9nU R*                  R,                  (       a  [        R.                  " [1        S5      XS9nU$ SU
UUUU4S jjn	[        R2                  " TS	U	/0S9$ s  snnf )NzAn enumeration.)r   r   intstrfloatc                    U $ r   r   xs    r   <lambda>-GenerateSchema._enum_schema.<locals>.<lambda>  s    XYr   c                \   > U" U 5      nUR                  U5      nUR                  T5        U$ r   )resolve_ref_schemaupdate)r   handlerjson_schemaoriginal_schema
js_updatess       r   get_json_schema4GenerateSchema._enum_schema.<locals>.get_json_schema  s0    %fo")"<"<["I&&z2""r   __func__pydantic_js_functions)sub_typemissingrefmetadatavalue)r   c           	        > U" [         R                  " TTTTS95      nUR                  U5      nUR                  T5        U$ )N)r,  r.  )r/   enum_schemar"  r#  )	_r$  r%  r&  casesenum_ref	enum_typer'  r,  s	       r   get_json_schema_no_cases=GenerateSchema._enum_schema.<locals>.get_json_schema_no_cases  sD    %k&=&=iYago&pq")"<"<["I&&z2""r   r/  )r   r)   r$  r<   returnrI   )r$  r<   r:  rI   )list__members__valuesrX   __doc__inspectcleandoc__name__r   
issubclassr  r/   simple_ser_schemar  r  r   r   	_missing_r   r*  r2  r   use_enum_values no_info_after_validator_functionr   is_instance_schema)r   r6  r   r   r   value_ser_typer(  default_missingr2  r7  r4  r5  r'  r,  s    `        @@@@r   _enum_schemaGenerateSchema._enum_schemaz  s   	 5 5 < < >?	*"+"3"3d9I9I)J[J[9\,,K(11+N
'1'7'7'9K'9tqQdad'9K
:>i%%H4?4Q4QRW4XN	3''H(::5AN	5))H(::7CN )MMkZN# &i&9&9:tLPTP^P^PgPggO%11! /Y5H5H1O3DEK ##33)JJw' # # 1114L3MN s Ls   	HHc                  ^^ SSK JnJn  [        S[        S[
        S[        S[        S[        S0mSU4S	 jjn[        R                  " [        R                  " UT   5      [        R                  " [        R                  " T[        R                  " 5       5      [        R                  " T5      S
9[        R                   " USSS9SUU4S j/0S9$ )NrL   )IP_VALIDATOR_LOOKUPIpTypeipv4ipv4networkipv4interfaceipv6ipv6networkipv6interfacec           	        > [        U T[        45      (       d  [        ST S[        U 5       SU  S35      eUR                  S:X  a  U $ [        U 5      $ )Nz
Expected `z` but got `z` with value `'z-'` - serialized value may not be as expected.python)
isinstancer  r,   r   mode)ipr   r   s     r   ser_ip)GenerateSchema._ip_schema.<locals>.ser_ip  sZ    b2s),,: KRzLyz  yyH$	r7Nr   r%  python_schemaTalways)info_argr   r+  c                   > STT   S.$ )Nstringr   formatr   )_1_2ip_type_json_schema_formatr   s     r   r  +GenerateSchema._ip_schema.<locals>.<lambda>  s    (VpqsVt9ur   
lax_schemastrict_schemar   r/  )rY  r   r   zcore_schema.SerializationInfor:  zstr | IpType)_validatorsrM  rN  r   r   r   r   r   r   r/   lax_or_strict_schema no_info_plain_validator_functionjson_or_python_schemarF  
str_schemarG  r   )r   r   rM  rN  rZ  rf  s    `   @r   
_ip_schemaGenerateSchema._ip_schema  s    < ???
"	 //"CCDWXZD[\%;;'HH[McMcMef)<<R@ &JJ6\`ltu'*u)v

 
	
r   c           	        SSK Jn  [        R                  " [        R                  " U5      [        R
                  " [        R                  " U5      [        R                  " [        5      S9[        R                  " SS9SS /0S9$ )	z7Support for [`fractions.Fraction`][fractions.Fraction].rL   )fraction_validatorr\  r^  r   r+  c                    SSS.$ )Nra  fractionrb  r   rd  re  s     r   r  1GenerateSchema._fraction_schema.<locals>.<lambda>  s
    \f?gr   rh  )	rk  rs  r/   rl  rm  rn  rG  r	   to_string_ser_schema)r   rs  s     r   _fraction_schemaGenerateSchema._fraction_schema  sp    3 //"CCDVW%;;'HHI[\)<<XF
 &::XN-0g/hi	
 		
r   c                    [        U[        5      (       d)  [        U< S3[        5        [        R
                  " 5       $ [        R                  " U5      $ )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`.)rW  r   r(   r   r/   r   rG  )r   r   s     r   _arbitrary_type_schema%GenerateSchema._arbitrary_type_schema  sO    "d##& Z Z  ))++--b11r   c                "    [        SU< S35      e)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.)rA   r   objs     r   _unknown_type_schema#GenerateSchema._unknown_type_schema   s#    +:3' Bf f
 	
r   c                    Uc  U$  [         R                  " UU5      $ ! [         R                   a    [         R                  " UU5        Us $ f = fr   )rO   apply_discriminatorMissingDefinitionForUnionRefset_discriminator_in_metadata)r   r   discriminators      r   _apply_discriminator_to_union,GenerateSchema._apply_discriminator_to_union  s_      M	';;  $@@ 	 >> M	s    -AAc                      \ rS rSrSrg)GenerateSchema.CollectedInvalidi  r   N)rA  
__module____qualname____firstlineno____static_attributes__r   r   r   CollectedInvalidr    s    r   r  c                    U R                  U5      n[        U5      n[        U5      (       a  U R                  5       e[        R
                  " U5      n[        U5      nU$ r   )collect_definitionsr[   rU   r  rO   apply_discriminatorsr\   )r   r   s     r   clean_schemaGenerateSchema.clean_schema   sU    ))&1+F3"6**''))%::6B%f-r   c                :   [        SUR                  SS 5      5      nU(       a  XR                  R                  U'   SU;   a  [        R
                  " US   5      n[        R                  " U[        U R                  R                  R                  5       5      5      $ )N
str | Noner.  )	r%   r   r   definitionsr/   definition_reference_schemadefinitions_schemar;  r=  )r   r   r.  s      r   r  "GenerateSchema.collect_definitions)  sz    <E4!89)/II!!#&F? <<VE]KF--&&--/0
 	
r   c                    UR                  S0 5      nUR                  S/ 5      nX$;  a  UR                  U5        X1S'   g )Nr/  r+  )r   
setdefaultappend)r   metadata_schemajs_functionr/  r+  s        r   _add_js_functionGenerateSchema._add_js_function4  sF    "&&z26 ( 3 34KR P
 3!((5&.
#r   Tc                6   SnU(       a  U R                  X5      nUb  UnUc  U R                  U5      n[        X5      nUb7  [        X0R                  R
                  5      nU(       a  U R                  Xe5        [        U R                  R                  X5      nU$ )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  r  r   r   r   )r   r  from_dunder_get_core_schemar   from_propertymetadata_js_functionr  s          r   r  GenerateSchema.generate_schema?  s    6 %)& ??IM(&>005F@M+5fii>S>STO%%oL=d>R>R>`>`benr   c                	   U R                   R                  U5       u  p#Ub  UsSSS5        $ [        US0 5      nUR                  nUR                  n[        [        UR                  R                  5       UR                  R                  5       UR                  R                  5       5      1 UR                  5       kUR                  5       k5        [        UR                  SS9nUR                  UR                  S9nUR                   R                  5       n	U R"                  R%                  U5         U R&                  R%                  U5         Sn
UR)                  S5      S:X  Ga  UR*                  S   UL d   eUR*                  S	   [,        L d   eUR*                  SS	  H  n[        US
0 5      R)                  SS5      nUc  M%  [/        U[0        5      (       a5  [2        R4                  " [2        R6                  " USSS9/U R8                  Q76 n[;        U5      nU[<        [>        4;  a  [A        S5      eU RC                  USS9S   n[2        RD                  " U5      (       a  M  U RG                  U5      n
  O   [        US0 5      R)                  S5      nURH                  (       a[  U RK                  SUS   U5      nUS   n[M        UU	S5      n[N        RP                  " UUU[        USS5      S[        USS5      UUS9nGO[N        RR                  " URU                  5        VVs0 s H  u  nnUU RW                  UUU5      _M     snnUR                  5        Vs/ s H  nU RY                  UUR                  5      PM!     snU
UR                  S9n[[        UUR\                  R                  5       S5      n[_        U[a        5       5      nUb  Un[M        UU	S5      n[N        RP                  " UUU[        USS5      S[        USS5      UUS9nU Rc                  UURd                  R                  5       5      n[M        UU	S5      nUU R                   Rf                  U'   [N        Rh                  " U5      sSSS5        sSSS5        sSSS5        $ s  snnf s  snf ! , (       d  f       O= fSSS5        O! , (       d  f       O= fSSS5        g! , (       d  f       g= f)z%Generate schema for a Pydantic model.N__pydantic_fields__F)checkr   extra_fields_behaviorallowr   r   __annotations____pydantic_extra__T)is_argumentis_classzEThe type annotation for `__pydantic_extra__` must be `Dict[str, ...]`requiredrL   __pydantic_generic_metadata__originrootr   inner__pydantic_custom_init____pydantic_post_init__)generic_origincustom_init
root_model	post_initconfigr.  )computed_fieldsextras_schema
model_nameouter)5r   get_schema_or_refr   __pydantic_decorators__r  r   r   field_validatorsr=  field_serializers
validatorskeysrR   model_configcore_configrA  model_validatorsr   pushr   r   r   objectrW  r  rQ   eval_type_backport_make_forward_refr   r5   r   r   rA    _get_args_resolving_forward_refsis_anyr  __pydantic_root_model___common_field_schemaapply_model_validatorsr/   model_schemamodel_fields_schemar   _generate_md_field_schema_computed_field_schemar   root_validatorsrV   ro   _apply_model_serializersmodel_serializersr  r  )r   r   	model_refmaybe_schemar   r   r  r   r  r  r  candidate_clsextras_annotationr   extra_items_typer  
root_fieldr   r  r   r   dfields_schemanew_inner_schemar   s                            r   _model_schemaGenerateSchema._model_scheman  s   YY((-1J)'# .- S"7<F44J(88O(//66800779))002
 :&++-9/"6"6"89 +3+;+;5IN(443<<4HK)::AAC++00@$BSBSBXBXY\B] $??#:;wF;;q>S000;;r?f444),Sb)9,3MCTVX,Y,],]0$-) -8)*;SAA4A4T4T$1$C$C(9uW[%&5" &*%:%:	5" 1 ",,=!>B!$5&C$k'" !" 04/T/T 1)- 0U 0  0!, $1#7#78H#I#I040D0DEU0V %/ *:2 :AFegi9j9n9now9x..!%!:!:66&>S]!^J#-h#7L#9,HXZa#bL#.#;#;$'5$+C1KT$R#'")#/G"N*%	$L =H<[<[Y_YeYeYghYgQUQRTUD::1aLLYgh &5%;%;%=)%= !77:;W;WX%=) '4#&<<=M $4M:C]C]CdCdCfhl#mL'CLRoRq'r$'3'7#9,HXZa#bL#.#;#;$'5$+C1KT$R#(")#/G"N*%	$L 66|ZEaEaEhEhEjk/8H'R39		%%i0">>yIY C^B]@@' .-F i)c C^B]@@@' .--su   SDS3R7A5RBR(C R(!R	R&RC2R6	R7?	SR
R+'R7.	S7
S	S
Sc                t    US   S:X  a.  U R                   R                  nUS    H
  nX2US   '   M     US   $ U$ )zeUnpack all 'definitions' schemas into `GenerateSchema.defs.definitions`
and return the inner schema.
r   r  r.  r   )r   r  )r   r   r  ss       r   _unpack_refs_defs GenerateSchema._unpack_refs_defs  sJ     &>]*))//KM*()AeH% +(##r   c                T    U R                   R                  5       nUc
  [        SSS9eU$ )Nz(`typing.Self` is invalid in this contextzinvalid-self-typer   )r   r   rC   r  s     r   _resolve_self_type!GenerateSchema._resolve_self_type  s/    ##'');#$NUhii
r   c           	         [         R                  " U5      (       a  U R                  U5      nU R                  R	                  U5       u  p4Ub  UsSSS5        $  SSS5        XL a  SnOSn[        USS5      =nb  U" U[        U R                  XS95      nO[        US5      (       a6  UR                  R                  S5      =nb  [        U[        5      (       d  UnO[        USS5      =n	b  S	S
KJn
  [        X5      (       a  [!        SUR"                   S3[$        5        O[!        S[&        5        [(        R*                  " U	" 5        Vs/ s H  n[(        R,                  " U5      PM     sn5      nOgU R/                  U5      n[1        U5      (       a!  US   R3                  SS5      nU(       a  XS'   O[5        U5      nU(       a.  XpR                  R6                  U'   [(        R8                  " U5      $ U$ ! , (       d  f       GN= fs  snf )a  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__)ref_mode__dict____pydantic_core_schema____get_validators__r   r{   zeMixing V1 models and V2 models (or constructs, like `TypeAdapter`) is not supported. Please upgrade `z` to V2.zc`__get_validators__` is deprecated and will be removed, use `__get_pydantic_core_schema__` instead.r   r.  )rQ   is_selfr  r   r  r   rv   r  hasattrr  r   rW  rs   pydantic.v1r|   rB  r(   rA  r   rK   r/   chain_schema"with_info_plain_validator_functionr  rY   poprW   r  r  )r   r  sourcer3  r  r  
get_schemar   existing_schemar  BaseModelV1r   r.  s                r   r  -GenerateSchema._generate_schema_from_property  s      %%))#.CYY((-1B!'# .-' . =HH "#'EtLLJY4T5P5PRVjF C$$ %(LL$4$45O$PP]??$F#C)=tDDjQ<#++{|  }I  }I  |J  JR  S
 y- !--jtjv.wjvef{/]/]^_/`jv.wxF ''/(00"&&ud3C #u&/C)/II!!#&::3??m .-H /xs   G9 H9
Hc                D    [         R                  " U/U R                  Q76 n[        U[        5      (       a  [	        UR                  SU 35      eU R                  (       a  [        XR                  5      nU$ ! [         a  n[        R
                  " U5      UeS nAff = f)Nz%Unable to evaluate forward reference )rQ   r  r   	NameErrorrB   from_name_errorrW  r   __forward_arg__r   rp   )r   r  es      r   _resolve_forward_ref#GenerateSchema._resolve_forward_ref$  s    	H223O9N9NOC
 c:&&-c.A.AEjknjoCpqq%7%78C
  	H-==a@aG	Hs   !A9 9
BBBc                    g r   r   )r   r  r  s      r   r  /GenerateSchema._get_args_resolving_forward_refs:  s    fir   c                    g r   r   r  s     r   r  r  =  s    TWr   c                   ^  [        U5      nU(       aJ  [        R                  S:  a  SSKJn  [        X5      (       a	  S U 5       n[        U 4S jU 5       5      nU$ U(       a  [        SU S35      eU$ )Nr   	   r   )GenericAliasc              3  |   #    U  H2  n[        U[        5      (       a  [        R                  " U5      OUv   M4     g 7fr   )rW  r  rQ   r  ).0r   s     r   	<genexpr>BGenerateSchema._get_args_resolving_forward_refs.<locals>.<genexpr>H  s1     jei`a*QPSBTBTM;;A>Z[[eis   :<c              3  t   >#    U  H-  n[        U[        5      (       a  TR                  U5      OUv   M/     g 7fr   )rW  r   r
  )r  r   r   s     r   r  r  I  s1     hcg^_Az9R9R2215XYYcgs   58z	Expected z+ to have generic parameters but it had none)r4   sysversion_infotypesr  rW  r   r   )r   r  r  argsr  s   `    r   r  r  @  sm    }6).c00jeijDhcghhD  iu,WXYYr   c                H    U R                  U5      nU(       d  [        $ US   $ )Nr   )r  r   )r   r  r  s      r   _get_first_arg_or_any$GenerateSchema._get_first_arg_or_anyN  s#    44S9JAwr   c                    U R                  U5      nU(       d  [        [        4$ [        U5      S:  a  [        U5      n[	        SU S35      eUS   US   4$ )Nr7   z Expected two type arguments for z, got 1r   rL   )r  r   lenr5   r   )r   r  r  r  s       r   _get_first_two_args_or_any)GenerateSchema._get_first_two_args_or_anyT  s[    44S9:t9q=_F>vhgNOOAwQr   c                |   [         R                  " U5      (       a  U R                  U5      $ [        U[        5      (       a  U$ [        U[
        5      (       a  [        U5      n[        U[        5      (       a   U R                  U R                  U5      5      $ [        5       n[        X5      (       a6  U R                  R                  U5         U R                  U5      sS S S 5        $ [        U[        5      (       a  [        R                   " UR"                  S9$ U R%                  U5      $ ! , (       d  f       NR= f)N)
schema_ref)rQ   is_annotated_annotated_schemarW  r   r  r   r  r
  rq   rw   r   r  r  rl   r/   r  type_ref
match_type)r   r  r|   s      r   r  %GenerateSchema._generate_schema_inner]  s    %%c**))#..c4  Jc3S/Cc:&&''(A(A#(FGG,.	c--&&++C0))#. 10 c/00::cllSSs## 10s   D--
D;c                   U[         L a  [        R                  " 5       $ U[        L a  [        R                  " 5       $ U[
        L a  [        R                  " 5       $ U[        L a  [        R                  " 5       $ U[        L a  [        R                  " 5       $ U[        L a  [        R                  " 5       $ [        R                  " U5      (       d	  U[        L a  [        R                   " 5       $ U["        R$                  L a  [        R&                  " 5       $ U["        R"                  L a  [        R(                  " 5       $ U["        R*                  L a  [        R,                  " 5       $ U["        R.                  L a  [        R0                  " 5       $ U[2        L a  [        R4                  " 5       $ U[6        L a  [        R8                  " 5       $ U[:        L a  [        R<                  " 5       $ U[>        L a  U RA                  5       $ U[B        L a  [        RD                  " 5       $ Ub  U[        RF                  L a  [        RH                  " 5       $ U[J        ;   a  U RM                  U5      $ U[N        ;   a  U RQ                  U5      $ U[R        ;   a  U RU                  [V        5      $ U[X        ;   a  U R[                  [V        5      $ U[\        ;   a  U R_                  [V        5      $ U[`        ;   a  U Rc                  [V        5      $ U[d        ;   a  U Rg                  [V        [V        5      $ [        Rh                  " U5      (       a  U Rk                  U5      $ U[l        L a  U Ro                  5       $ [        Rp                  " U5      (       a  [        Rr                  " 5       $ [        Rt                  " U5      (       a  U Rw                  U5      $ [y        U5      (       a  U R{                  US5      $ [        R|                  " U5      (       a  U R                  US5      $ [        R                  " U5      (       a  U R                  UR                  5      $ U[        R                  L a  U R                  U5      $ [        R                  " U5      (       a  U R                  5       $ [        U[        R                  5      (       a  U R                  U5      $ [        R                  " U5      (       a>  U[        L a  [        R                   " 5       $ U R                  U R                  U5      5      $ [        U[        5      (       a  U R                  U5      $ [        R                  " U5      (       a&  [        U[        5      (       a  U R                  U5      $ [        R                  " U5      (       a  U R                  5       $ [        R                  " U5      (       a  U R                  US5      $ [        U5      nUb  U R                  X5      $ U R                  US5      nUb  Uu  pEU R                  XE5      $ U R                  (       a  U R                  U5      $ U R                  U5      $ )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.
Nr   )br  r/   ro  bytesbytes_schemar  
int_schemar  float_schemar   bool_schemacomplexcomplex_schemarQ   r  r  r   datetimedatedate_schemadatetime_schematimetime_schema	timedeltatimedelta_schemar   decimal_schemar'   uuid_schemar.   
url_schemar	   ry  r*   multi_host_url_schemaNoneTypenone_schemar   rp  r   _tuple_schemar   r  r   r   r  r   r  r   _sequence_schemar   r  is_type_alias_type_type_alias_type_schemar   _type_schemais_callablecallable_schema
is_literal_literal_schemar6   _typed_dict_schemais_namedtuple_namedtuple_schemais_new_typer  __supertype__rePattern_pattern_schemais_hashable_hashable_schemarW  typingr#   _unsubstituted_typevar_schemais_finalvarr   r  VALIDATE_CALL_SUPPORTED_TYPES_call_schemar?  isclassrB  r   rJ  is_zoneinfo_type_zoneinfo_schemadataclassesis_dataclass_dataclass_schemar5   _match_generic_type0_get_prepare_pydantic_annotations_for_known_type_apply_annotationsr  r|  r  )r   r  r  ressource_typer   s         r   r(  GenerateSchema.match_typev  s    #:))++E\++--CZ))++E\++--D[**,,G^--//!!#&&#-))++HMM!**,,H%%%..00HMM!**,,H&&&//11G^--//D[**,,CZ))++H_((**L 4466[C=#9#99**,,H_??3''K%%c**J$$S))I##C(($$))#..N"((--J$$S#..--c22//44D[$$&&&&s++..00%%c**'',,#**355((--**355&&s++''(9(9::BJJ'',,&&s++((**V^^,,55c::&&s++e|"--//''**3/  :;;$$S))__S!!jd&;&;$$S))++C00((**##C(())#t44C++C88CCCL?'*$K**;DD  ..s33((--r   c                   [         R                  " U5      (       a  U R                  X5      $ [        R                  " U5      (       a  U R                  X5      $ U R                  X!5      nUb  U$ [        R                  " U5      (       a  U R                  U5      $ [        R                  " U5      (       a  U R                  U5      $ U[        ;   a  U R                  U5      $ U[        ;   a   U R                  U R                  U5      5      $ U[         ;   a   U R#                  U R                  U5      5      $ U[$        ;   a   U R'                  U R                  U5      5      $ U[(        ;   a  U R*                  " U R-                  U5      6 $ [/        U5      (       a  U R1                  X5      $ U[2        R4                  [6        4;   a  U R9                  U5      $ U[:        ;   a   U R=                  U R                  U5      5      $ U[2        R>                  [@        RB                  R>                  [2        RD                  [@        RB                  RD                  1;   a  U RG                  U5      $ U[H        RJ                  [2        RJ                  4;   a  U RM                  U5      $ U RO                  US5      nUb  Uu  pVU RQ                  XV5      $ U RR                  (       a  U RU                  U5      $ U RW                  U5      $ )Nr   ),r[  r\  r]  rQ   rJ  rK  r  rB  rC  origin_is_union_union_schemar   r@  r   r  r  r   r  r   r  r   r  r!  r6   rI  rS  r"   r   _subclass_schemar   rA  r   collectionsabc	Generator_iterable_schemarN  rO  rP  r_  r`  r  r|  r  )r   r  r  r  ra  rb  r   s          r   r^  "GenerateSchema._match_generic_type  sx   
 ##F++))#66&&v..**377;;FH$  ++F33//44**622%%c**{"%%c**z!$$T%?%?%DEEy ##D$>$>s$CDD''))$*D*DS*IJJz!$$d&E&Ec&JKK&!!**377T**((--~%(()C)CC)HII)A)A6CSCSU`UdUdUnUnoo((--

FNN33'',,CCCL?'*$K**;DD  ..v66((--r   r  c          	         U R                  XU5      n[        R                  " US   UR                  5       (       d  SOUUS   US   US   US   S9$ )zAPrepare a TypedDictField to represent a model or typeddict field.r   Fserialization_excludevalidation_aliasserialization_aliasr/  )r  rn  ro  rp  r/  )r  r/   typed_dict_fieldis_required)r   name
field_infor   r  common_fields         r   _generate_td_field_schema(GenerateSchema._generate_td_field_schema  sg     00:N++"","8"8":":U"./F"G)*<= ,-B C!*-
 	
r   c           	     |    U R                  XU5      n[        R                  " US   US   US   US   US   US   S9$ )z0Prepare a ModelField to represent a model field.r   rn  ro  rp  frozenr/  rn  ro  rp  ry  r/  )r  r/   model_fieldr   rs  rt  r   ru  s        r   r  (GenerateSchema._generate_md_field_schema(  s\     00:N&&""./F"G)*<= ,-B C)!*-
 	
r   c                    U R                  XU5      n[        R                  " UUS   UR                  UR                  =(       d    SUR
                  (       a  SOSUS   US   US   US   US   S	9
$ )
zJPrepare a DataclassField to represent the parameter/field, of a dataclass.r   NFrn  ro  rp  ry  r/  )init	init_onlykw_onlyrn  ro  rp  ry  r/  )r  r/   dataclass_fieldr  init_varr  r|  s        r   _generate_dc_field_schema(GenerateSchema._generate_dc_field_schema9  s     00:N**" ))1T&..DE"./F"G)*<= ,-B C)!*-
 	
r   c                   UR                   b8  UR                   S::  d(  UR                  b  UR                  b  UR                  Gc%  Su  p4n[	        U [
        5      (       a  U R                  U5      u  p4nOM[	        U [        5      (       a8  U " U5      n[	        U[        5      (       d  [        SU  SUR                   35      eUR                   b  UR                   S::  a  SUl         UR                   S:X  a&  [        XS5      Ul        [        XC5      Ul        X1l        UR                  c  X1l        UR                  c  [        XS5      Ul        UR                  c  [        XC5      Ul        ggg)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.
NrL   NNNalias_generator  must return str, not )alias_priorityaliasro  rp  rW  r9   generate_aliasesr   r  r   r   r   )alias_generatorrt  r   r  ro  rp  s         r   $_apply_alias_generator_to_field_info3GenerateSchema._apply_alias_generator_to_field_infoN  s`    %%-((A-'**2--5;K8E%8/>::?N?_?_`j?k<)<OX66'
3!%--#&66GG]^c^m^m]n$opp
 ((0J4M4MQR4R,-
) ((A-1DEX1`
..ABR.Z
+#(  '#( --51DEX1`
.**2.ABR.Z
+ 39 6r   c                   UR                   b  UR                   S::  d  UR                  c  Su  p4n[        U [        5      (       a  U R	                  U5      u  p4nOM[        U [
        5      (       a8  U " U5      n[        U[        5      (       d  [        SU  SUR                   35      eUR                   b  UR                   S::  a  SUl         UR                   S:X  a  [        XS5      Ul        ggg)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.
NrL   r  r  r  )
r  r  rW  r9   r  r   r  r   r   r   )r  computed_field_infocomputed_field_namer  ro  rp  s         r   -_apply_alias_generator_to_computed_field_info<GenerateSchema._apply_alias_generator_to_computed_field_info  s    $  ..6"11Q6"((0;K8E%8/>::?N?_?_`s?t<)<OX66'(;<!%--#&66GG]^c^m^m]n$opp
 #119=P=_=_cd=d56#2
 #11Q6,?@S,[#) 7) 1r   c                    UR                   =(       d    U R                   nUc  gUR                  c?  U" X!5      n[        U[        5      (       d  [	        SU SUR
                   35      eXAl        gg)a=  Apply a field_title_generator on a FieldInfo or ComputedFieldInfo instance if appropriate
Args:
    config_wrapper: The config of the model
    field_info: The FieldInfo or ComputedField instance to which the title_generator is (maybe) applied.
    field_name: The name of the field from which to generate the title.
Nzfield_title_generator r  )field_title_generatorr   rW  r  r   r   )r   rt  r   r  r   s        r   *_apply_field_title_generator_to_field_info9GenerateSchema._apply_field_title_generator_to_field_info  sv     !+ @ @ hNDhDh (#)*AEeS))"89N8OOefkfufuev wxx$ $r   c           	       ^ ^ [        5       nTR                  (       d   [        R                  " TR                  /T R
                  Q76 n[        UT R                  5      nSTl        [        U[        5      (       d  UR                  " U5      nUR                  Tl        UR                  R                  5        H5  u  pUTR                  ;  d  M  UTR                   ;  d  M)  [#        TX5        M7     / UR$                  QTR$                  QTl        TR                  TR$                  pSUU 4S jjn/ n['        UR(                  R+                  5       U5       H>  nUR-                  [.        UR0                  R2                     R5                  U5      5        M@     T R6                  R9                  U5         TR:                  b  T R=                  XU-   US9nOT R=                  U
X-   5      nS S S 5        ['        UR>                  R+                  5       U5      n[A        U5      (       a  STl!        U V	s/ s H  oR0                  RD                  SL d  M  U	PM!     nn	U V	s/ s H  oU;  d  M
  U	PM     nn	[G        WUU5      n[I        UUU5      nTRK                  5       (       d  [M        TU5      nT RO                  U['        URP                  R+                  5       U5      5      nT RS                  T RT                  TU5        [W        T5      u  nn0 n[Y        UUUS9  T RT                  RZ                  nUb  T R]                  UTU5        [_        TR`                  [b        [d        45      (       a  TR`                  Rg                  5       nOTR`                  n[i        UTRj                  (       a  SOS UTRl                  TRn                  US9$ ! [         a  n[        R                  " U5      UeS nAff = f! , (       d  f       GN= fs  sn	f s  sn	f )NTc                @   > TR                  U TR                  5      n U $ r   )r  r  )r   rt  r   s    r   set_discriminator>GenerateSchema._common_field_schema.<locals>.set_discriminator  s     77
@X@XYFMr   )transform_inner_schemapydantic_js_updatespydantic_js_extrarz  r   r)   r:  r)   )8rr   	evaluatedrQ   	eval_type
annotationr   r  rB   r  rp   r   rn   rl   from_annotation_attributes_setr   metadata_lookupsetattrr/  r   r  r=  r  r   r   rX  _from_decoratorr   r  r  r`  r  $_validators_require_validate_defaultvalidate_default	each_itemr   r   rr  wrap_default_apply_field_serializersr  r  r   r   rT   r  r  rW  ro  r8   r:   convert_to_aliases_common_fieldexcluderp  ry  )r   rs  rt  r   rz   evaluated_typer	  new_field_infor   r   rb  r   r  validators_from_decorators	decoratorr   this_field_validatorsr   r  r  core_metadatar  ro  s   ` `                    r   r  #GenerateSchema._common_field_schema  s    -.	##L!.!8!89N9N!gQUQfQf!g +>4;M;MNN#'J '8LMM!*!:!:>!J(6(A(A
% +::@@BDA
 
 : ::q
HbHb?b
A1 C 'W(?(?&V*BUBU&V
##-#8#8*:M:M[	 	
 &("=j>Y>Y>`>`>bdhiI&--.@ATAT.U.e.efo.pq j ""''-''300/I!Ibs 1  00< . !EZEZEZEaEaEcei j/0EFF*.J'+@]+@aFFDTDTX\D\+@],A c,AqNbEb,A c+F4H$O!&*?F
 %%''!*f5F..89U9U9\9\9^`de
 	778L8LjZ^_1Z[e1f..(*/BVg	
 ..>>&55ozSWXj11L)3LMM)::MMO)::*4*<*<$$- * > >$$"
 	
c  L1AA!D!KL> .-$  ^ cs;   +O 46O/1PP	P*P
O,O''O,/
O>c                   U R                  USS9n/ nSnU H=  nUb  U[        R                  L a  SnM  UR                  U R	                  U5      5        M?     [        U5      S:X  a  US   nOx/ nU HZ  nUR                  S0 5      R                  [        R                  5      n	U	b  UR                  X45        MI  UR                  U5        M\     [        R                  " U5      nU(       a  [        R                  " U5      nU$ )zGenerate schema for a Union.Tr  FrL   r   r/  )r  rQ   r>  r  r  r   r   rM   TAGGED_UNION_TAG_KEYr/   union_schemanullable_schema)
r   
union_typer  choicesr   argr  choices_with_tagschoicetags
             r   rf  GenerateSchema._union_schema$  s    44Z$4O$&C{c]%;%;;t33C89	  w<1
AKM!jjR044[5U5UV?%,,f];%,,V4 " (():;A++A.Ar   c                   U R                   R                  U5       u  p#Ub  UsS S S 5        $ [        U5      =(       d    Un[        U5      nU R                  R                  U5          [        R                  " UR                  /U R                  Q76 n[        Xe5      nU R                  U5      nUS   S:w  d   eX(S'   S S S 5        WU R                   R                  U'   [         R"                  " U5      sS S S 5        $ ! [         a  n[        R                  " U5      UeS nAff = f! , (       d  f       No= f! , (       d  f       g = f)Nr   r  r.  )r   r  r5   rm   r   r  rQ   r  	__value__r   r  rB   r  rp   r  r  r/   r  )	r   r  r.  r  r  r   r  r	  r   s	            r   rC  &GenerateSchema._type_alias_type_schema?  s   YY((-1D#'# .- %/sO$:sF4S9L""''/P!.!8!89I9I!bDLaLa!bJ +:D
--j9f~666 #u 0 *0DII!!#&::3?# .- ! P5EEaHaOP 0/ .-sL   D9:D9'D()+C?+D(?6D9?
D%	D  D%%D((
D6	2D99
Ec                   [         R                  " U5      nU(       d
   SU 35       e[        R                  " U5      nU R                  R
                  (       a/  [        S U 5       5      (       a  [        R                  " S U5      nU$ )zGenerate schema for a Literal.z(literal "expected" cannot be empty, obj=c              3  B   #    U  H  n[        U[        5      v   M     g 7fr   )rW  r   )r  r   s     r   r  1GenerateSchema._literal_schema.<locals>.<genexpr>Y  s     7^U]PQ
1d8K8KU]s   c                H    [        U [        5      (       a  U R                  $ U $ r   )rW  r   r0  )r   s    r   r  0GenerateSchema._literal_schema.<locals>.<lambda>[  s    Z4%8%8!''?a?r   )rQ   literal_valuesr/   literal_schemar   rE  anyrF  )r   literal_typeexpectedr   s       r   rH  GenerateSchema._literal_schemaS  ss     //=RCL>RRx++H5//C7^U]7^4^4^ AA?F r   c                r   [        5       nU R                  R                  U5         U R                  R	                  U5       u  nnUb  UsSSS5        sSSS5        $ [        U5      nUb  Un[        (       d#  [        U5      R                  S:X  a
  [        SSS9e [        US5      nU R                  R                  U5         U R                  R                  UR                  S9nUR                   n	0 n
["        R$                  " U5      nU R                  R&                  (       a  [)        USS	9nOSn [*        R,                  " XR.                  S
9nUR7                  5        H  u  nn[9        UU5      nX;   n[*        R:                  " U5      (       a  SnU R=                  USS9S   nO0[*        R>                  " U5      (       a  SnU R=                  USS9S   nUR@                  " U5      nUb  URB                  c  X;   a	  X   Ul!        U RE                  U R                  UU5        U RG                  UUUUS9X'   M     [H        RJ                  " U
UURL                  RO                  5        Vs/ s H  nU RQ                  UURR                  5      PM!     snUUS9nU RU                  UURV                  RO                  5       5      n[Y        UURZ                  RO                  5       S5      nUU R                  R\                  U'   [H        R^                  " U5      sSSS5        sSSS5        sSSS5        $ ! [         a    Sn GNf = f! [0         a  n[2        R4                  " U5      UeSnAff = fs  snf ! , (       d  f       O= f SSS5        O! , (       d  f       O= fSSS5        g! , (       d  f       g= f)a2  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
NrS  zXPlease use `typing_extensions.TypedDict` instead of `typing.TypedDict` on Python < 3.12.ztyped-dict-versionr   __pydantic_config__r  T)use_inspectr   r  r   F)r   r  r.  r  all)0rr   r   r  r   r  rm   _SUPPORTS_TYPEDDICTr   r  rC   re   AttributeErrorr   r   r  rA  __required_keys__r^   builduse_attribute_docstringsri   rQ   get_cls_type_hintsr   r  rB   r  r   rp   rr  r  is_not_requiredr  r   r  rv  r/   typed_dict_schemar  r=  r  r  r  r  r  r  r  r  )r   typed_dict_clsr  rz   typed_dict_refr  r   r  r  required_keysr   r   field_docstringsr   r	  r   r  r  rt  r  	td_schemar   s                         r   rI  !GenerateSchema._typed_dict_schema`  s     -.	""''79T9TUc9d i
'# :e9d77 5^DL!!'&&4+?+J+Jh+V'n- 
 -E^Uj,k ++008"22>>^E\E\>]0>0P0P@B+11.A
''@@'B>_c'd$'+$P"/"B"B>_p_p"qK /:.?.?.A*J
!.z<!HJ):H$00<<#'%)%J%J&%) &K & &
 '66zBB#(%)%J%J&%) &K & &

 "+!:!::!FJ(4&22:&:1A1M
.CCDDXDXZdfpq)-)G)G"J
X *H *F&3 /B: (99& ",!;!;!B!B!D%!DA 33Az7S7ST!D% '&		 66y*B^B^BeBeBgh/
8S8S8Z8Z8\^cd8>		%%n5">>~N} 981 :e9d77* " & ! P5EEaHaOPF%g 9881 :e9d9d777s   N(N
	N(>NL2(NA0M34MDM3,&M.BM3	N	N(2M>NMN
M+	M&	&M+	+M33
N=N	N(
N	N((
N6c                   U R                   R                  U5         U R                  R                  U5       u  nnUb  UsSSS5        sSSS5        $ [	        U5      nUb  Un [
        R                  " XR                  S9nU(       d   UR                   Vs0 s H	  o[        _M     nnU(       a.  UR                  5        V	V
s0 s H  u  pU	[        X5      _M     nn	n
[        R                   " UR                  5        V	V
s/ s H>  u  pU R#                  U	U
UR$                  R'                  U	[(        R*                  5      S9PM@     sn
n	SS0S9n[        R,                  " XUS9sSSS5        sSSS5        $ ! [         a  n[        R                  " U5      UeSnAff = fs  snf s  sn
n	f s  sn
n	f ! , (       d  f       O= fSSS5        g! , (       d  f       g= f)z!Generate schema for a NamedTuple.Nr  )default'pydantic_js_prefer_positional_argumentsTr9  )r.  )r   r  r   r  rm   rQ   r  r   r  rB   r  _fieldsr   r   rp   r/   arguments_schema_generate_parameter_schema_field_defaultsr   r   emptycall_schema)r   namedtuple_clsr  namedtuple_refr  r   r   r	  r   r   r  r  s               r   rK  !GenerateSchema._namedtuple_schema  s   ""''79T9TUc9d i
'# :e9d77 5^DL!!'L+>>~[l[lm ?M?U?U.V?U!#v?U.V 3>2C2C2E2E.
 j GG2E  
  +;; 3>2C2C2E 3F.
 33"" . > > B B:y _ 4 
 3F DTJ
  **+;Q_`G :e9d77  L1AA!D!KL /W3 :e9d777sw   G
F0 	G
F0$E6F0F'F0F$
&F0AF*F0#	G
6
F FFF00
F>	:G


Gc                   [        5       nU[        R                  L a  UR                  " U5      nOUR                  " X#5      nUR
                  c   S5       eU R                  R                  U5         U R                  UR
                  U/5      nSSS5        UR                  5       (       d  [        UW5      n[        R                  " UW5      nUb  XHS'   UR                  b  UR                  US'   U$ U R                  R                  n	[!        U	["        5      (       a#  U	R                  b  U	R                  U5      US'   U$ [!        U	[$        5      (       a  U	" U5      US'   U$ ! , (       d  f       N= f)zXPrepare a ArgumentsParameter to represent a field in a namedtuple or function signature.Nz<field.annotation should not be None when generating a schemarX  r  )rr   r   r  r  from_annotated_attributer  r   r  r`  rr  r  r/   arguments_parameterr  r   r  rW  r9   r   )
r   rs  r  r  rX  rz   r   r   parameter_schemar  s
             r   r  )GenerateSchema._generate_parameter_schema  sY    -.	ioo%--j9E66zKE+k-kk+""''-,,U-=-=wGF .   ""!%0F&::4H'+V$;;"(-W%   #22BBO/>::?T?T?`,;,A,A$,G )   OX66,;D,A )# .-s   2E%%
E3c                  ^ [        U5      mU R                  U5      nT(       a  U(       a  [        U4S jU 5       5      nU(       dI  U[        ;   a)  [        R
                  " [        R                  " 5       /SS9$ [        R
                  " / 5      $ US   [        L aB  [        U5      S:X  a(  [        R
                  " U R                  US   5      /SS9$ [        S5      e[        U5      S:X  a  US   S:X  a  [        R
                  " / 5      $ [        R
                  " U Vs/ s H  o0R                  U5      PM     sn5      $ s  snf )	zIGenerate schema for a Tuple, e.g. `tuple[int, str]` or `tuple[int, ...]`.c              3  <   >#    U  H  n[        UT5      v   M     g 7fr   )rp   )r  paramr   s     r   r  /GenerateSchema._tuple_schema.<locals>.<genexpr>  s     R6%===6s   r   )r   r   r7   z&Variable tuples can only have one typerL   r   )rm   r  r   r   r/   tuple_schemar   Ellipsisr   r  
ValueError)r   
tuple_typeparamsr  r   s       @r   r@  GenerateSchema._tuple_schema  s    1<66zBFR6RRF [("//1G1G1I0J`abb #//33BZ8#6{a"//1E1EfQi1P0Qghii !!IJJ[A&)r/ ++B//++V\,]V\U-A-A%-HV\,]^^,]s   !Ec                ^    [         R                  " [         R                  " [        5      SSS9$ )Nis_typezInput should be a type)custom_error_typecustom_error_message)r/   custom_error_schemarG  r   r   s    r   rD  GenerateSchema._type_schema1  s)    ..**40'!9
 	
r   c                   ^^ [         R                  S:  a   S5       eSSKJmJm  S	UU4S jjnSS /0n[
        R                  " U[
        R                  " 5       US9$ )
z/Generate schema for a zone_info.ZoneInfo objectr  Unreachabler   )ZoneInfoZoneInfoNotFoundErrorc                  > [        U T5      (       a  U $  T" U 5      $ ! T[        [        4 a    [        SSSU 05      ef = f)Nzoneinfo_strzinvalid timezone: {value}r0  )rW  r  r   r+   )r0  r  r	  s    r   validate_str_is_valid_iana_tzFGenerateSchema._zoneinfo_schema.<locals>.validate_str_is_valid_iana_tzA  sT    %**i&):yA i).:UX_afWghhis    !?r+  c                    SSS.$ )Nra  zoneinforb  r   rv  s     r   r  1GenerateSchema._zoneinfo_schema.<locals>.<lambda>I  s
    hZd=er   r   r/  )r0  r   r:  r  )r  r  r  r  r	  r/   rm  rx  )r   r  r/  r  r	  s      @@r   rZ  GenerateSchema._zoneinfo_schema8  sc     f$'-'5 	=	i 	i ,.e-fg;;)%::<
 	
r   c           	         U R                  USS9n[        R                  " U Vs/ s H$  o R                  [        R
                  U   5      PM&     sn5      $ s  snf )z*Generate schema for `Type[Union[X, ...]]`.Tr  )r  r/   r  r  rS  r"   )r   r  r  s      r   _union_is_subclass_schema(GenerateSchema._union_is_subclass_schemaP  sP    44Z$4O'']a(b]aUY)=)=fkk$>O)P]a(bcc(bs   +Ac           	        U R                  U5      n[        R                  " U5      =(       d    Un[        R                  " U5      (       a  U R	                  5       $ [        R
                  " U5      (       a,  U R                  [        R                  UR                     5      $ [        U[        R                  5      (       a  UR                  (       ai  [        R                  " [        UR                  5      5      (       a  U R                  UR                  5      $ [         R"                  " UR                  5      $ UR$                  (       aP  [         R&                  " UR$                   Vs/ s H$  o0R                  [        R                  U   5      PM&     sn5      $ U R	                  5       $ [        R                  " [        U5      5      (       a  U R                  U5      $ [        R(                  " U5      (       a  U R+                  U5      n[,        R.                  " U5      (       d  [1        SU< 35      e[         R"                  " U5      $ s  snf )z-Generate schema for a Type, e.g. `Type[int]`.zExpected a class, got )r  rQ   annotated_typer  rD  rB  r  rS  r"   r  rW  r#   	__bound__re  r5   r  r/   is_subclass_schema__constraints__r  r  r  r?  rX  r   )r   type_
type_paramcs       r   rg  GenerateSchema._subclass_schemaU  s   //6
 #11*=K

++$$&&--j99''J4H4H(IJJ
FNN33## 00J<P<P1QRR99*:N:NOO"55j6J6JKK++"//CMC]C]^C]a))&++a.9C]^  ((****:j+ABB11*==$$Z00!44Z@
??:.."8 GHH11*== _s   ++Ic                   SSK Jn  U R                  U5      n[        R                  " U5      n[        U5      n[        R                  " [        R                  SS9n[        R                  " U5      (       d2  SSKJn  [        R                  " U[        R                  " Xt5      /5      n[        R                  " X#SS9n[        R                   " XVUS9$ )	z5Generate schema for a Sequence, e.g. `Sequence[int]`.rL   )serialize_sequence_via_listSequence)cls_repr)sequence_validatorT)r   r_  )r%  r]  r   )_serializersr   r  r/   r  rx   rG  rS  r!  rQ   r  rk  r#  r  no_info_wrap_validator_function#wrap_serializer_function_ser_schemarn  )	r   r  r   item_type_schemar  r%  r]  r#  r   s	            r   rA  GenerateSchema._sequence_schemau  s    =//
;!--.>?$[1#66vQ[\##J//7'44 K KL^ lmM $GG'4
 00#P]
 	
r   c                n    U R                  U5      n[        R                  " U R                  U5      5      $ )z$Generate a schema for an `Iterable`.)r  r/   generator_schemar  )r   r  	item_types      r   rk  GenerateSchema._iterable_schema  s.    ..u5	++D,@,@,KLLr   c                   SSK Jn  SS /0n[        R                  " [	        S5      S[        R
                  " 5       S9nU[        R                  L d  U[        R                  L a  [        R                  " UR                  XCS9$ U R                  US	S
9S   nU[        L a  [        R                  " UR                  XCS9$ U[        L a  [        R                  " UR                  XCS9$ [!        SU< S35      e)NrL   )rk  r+  c                    SSS.$ )Nra  regexrb  r   rv  s     r   r  0GenerateSchema._pattern_schema.<locals>.<lambda>  s
    hZa=br   patternr   )r   return_schemar  Tr  r   r  r   )r   rk  r/   r   r   ro  rS  rO  rN  rm  pattern_either_validatorr  r  pattern_str_validatorr+  pattern_bytes_validatorrA   )r   pattern_typerk  r/  serr  s         r   rP  GenerateSchema._pattern_schema  s    !+.b-cd>>y!V;CYCYC[
 6>>)\RZZ-G??44C  55 6 
  C<??11  e^??333  02^_k^nno0pqqr   c           
     V   [         R                  " [         R                  " [         R                  " [         R                  " 5       [         R
                  " [        R                  R                  5      /5      [         R
                  " [        R                  R                  5      S9SSS9$ )Nr\  rQ  zInput should be hashable)r   r  r  )	r/   r  rn  r  r   rG  rh  ri  Hashabler   s    r   rR  GenerateSchema._hashable_schema  sy    ..44'44 ++-{/M/MkooNfNf/gh *<<[__=U=UV	 ,!;	
 		
r   c                  ^ ^ T R                   R                  U5         T R                  R                  U5       u  nnUb  UsSSS5        sSSS5        $ [	        U5      nUb  Un[        USS5      nSSKJn  T R                  R                  U5         T R                  R                  U5         U" U5      (       aQ  [        UR                  5      nU(       a4  UR                  5        H   n	U	R                  " U/T R                  Q76   M"     O
[        UUS9nT R                   R"                  S:X  a6  UR%                  5        H"  u  pU	R&                  SL d  M  [)        SU
 S	3S
S9e   UR*                  R-                  S5      =(       d    [.        R0                  " U5      m[3        UU 4S jUR%                  5        5       S S9n[5        US5      n[5        US5      n[6        R8                  " UR:                  UTR<                  R                  5        Vs/ s H  nT R?                  UTR@                  5      PM!     snUS9n[C        UTRD                  R                  5       S5      nTRF                  R                  5       n[I        UUS5      nT R                   RK                  UR:                  S9n[6        RL                  " UUUUU[        RN                  " U5       V	s/ s H  oRP                  PM     sn	UUT R                  RR                  RT                  S9	nT RW                  UTRX                  R                  5       5      n[I        UUS5      nUT R                  RZ                  U'   [6        R\                  " U5      sSSS5        sSSS5        sSSS5        sSSS5        $ s  snf s  sn	f ! , (       d  f       O= fSSS5        O! , (       d  f       O= fSSS5        O! , (       d  f       O= fSSS5        g! , (       d  f       g= f)z Generate schema for a dataclass.Nr  r7   )is_pydantic_dataclass)r   r  FzField zd has `init=False` and dataclass has config setting `extra="allow"`. This combination is not allowed.z dataclass-init-false-extra-allowr   r  c              3  L   >#    U  H  u  pTR                  XT5      v   M     g 7fr   )r  )r  r   r   r   r   s      r   r  3GenerateSchema._dataclass_schema.<locals>.<genexpr>  s%     aR`$!T33A*EER`s   !$c                (    U R                  S5      SL$ )Nr  Fr   )r   s    r   r  2GenerateSchema._dataclass_schema.<locals>.<lambda>  s    !%%	"2%"?r   )key__post_init__	__slots__)r  collect_init_onlyr  r  )r  r  r.  r   slotsr  ry  r  )/r   r  r   r  rm   r   r[  r=  r   r   r   r  r=  apply_typevars_mapr   rj   r   extrar   r  rC   r  r   r^   r  sortedr  r/   dataclass_args_schemarA  r  r  r  r   r  r  r  r  dataclass_schemar   rs  r   ry  r  r  r  r  )r   	dataclassr  dataclass_refr  r   r  r=  r   r   r   r  has_post_init	has_slotsr  args_schemar   r  r  	dc_schemar   r   s   `                    @r   r]   GenerateSchema._dataclass_schema  s    ""''	2DII4O4OPY4Z _
'# 5[4Z22 5Y?L!"	
 Y(=tDF;""''	2D4N4N4S4STZ4[(33%i&C&CDF#%+]]_E!44\ZDDYDYZ &5 6!%1F
 ''--8-3\\^)
 ::."3"( 5C !D%G#  .< '//334MNqR`RfRfgpRq
 aRXR^R^R`a? !(	? C#I{;	)??&& ",!;!;!B!B!D%!DA 33Az7S7ST!D% '4  0Z=W=W=^=^=`bfg#-#>#>#E#E#G 5lDTV]^"22>>YEWEW>X'88 #)+%4?4F4Fy4QR4Q5JJ4QR#&  55::AA	 66y*B^B^BeBeBgh/8H'R7=		%%m4">>}MC 5\4[22% 5[4Z22j%( So 5\4[222% 5[4Z4Z222s   O9O	O9>OO/B%N+	B<N+	&N!:B"N+	N&1BN+	<	O	O	O9!
N+	+
N95O<	O
OO	O9
O-	)O99
Pc                R   [        U5      nU R                  u  p4[        R                  " XUS9n[        R
                  S[        R                  S[        R                  S0n/ nSnSn	Sn
UR                  R                  5        GH  u  pUR                  UR                  L a   [        R                  " [        [        5      nOX[   nUR                  UR                   5      nUb0  U R#                  XUR$                  U5      nUR'                  U5        M  UR                   [        R(                  :X  a  U R+                  U5      nM  UR                   [        R,                  :X  d   UR                   5       e[        R.                  " U5      nUb  [1        U5      (       d  [3        SUR4                  < 3SS9eUR                  R                  5        VVs1 s H'  u  pUR                   [        R
                  :w  d  M%  UiM)     nnnUR7                  UR8                  5      nU(       aN  [3        S	UR4                  < S
[;        U5      S:  a  SOS SSR=                  S [?        U5       5       5       3SS9eSn
U RA                  US5      n	GM  Sn
U R+                  U5      n	GM     SnU RB                  nURD                  (       a,  URF                  nUUR                  La  U R+                  U5      n[H        RJ                  " [H        RL                  " UUU
U	URN                  S9UUS9$ s  snnf )zcGenerate schema for a Callable.

TODO support functional validators once we support them in Config
)globalnslocalnspositional_onlypositional_or_keywordkeyword_onlyNz"Expected a `TypedDict` class, got zunpack-typed-dictr   zTyped dictionary z overlaps with parameterr7   r  r    z, c              3  8   #    U  H  n[        U5      v   M     g 7fr   )repr)r  ps     r   r  .GenerateSchema._call_schema.<locals>.<genexpr>D  s     (U:TQa:Ts   zoverlapping-unpack-typed-dictzunpacked-typed-dictuniform)var_args_schemavar_kwargs_modevar_kwargs_schemapopulate_by_name)r2  )(r   r   rQ   get_function_type_hintsr   POSITIONAL_ONLYPOSITIONAL_OR_KEYWORDKEYWORD_ONLY
parametersr   r  r  rS  r%   r   r   kindr  r  r  VAR_POSITIONALr  VAR_KEYWORDunpack_typer6   rC   rA  intersectionr  r   joinrJ  rI  r   validate_returnreturn_annotationr/   r  r  rc  )r   functionsigrU  rV  
type_hintsmode_lookuparguments_listr`  rb  ra  rs  r]  r  parameter_mode
arg_schemarl  non_pos_only_param_namesoverlapping_paramsr2  r   return_hints                         r   rW  GenerateSchema._call_schema  s   
 ! 11"::8`gh
 %%'8++-D""Nr
 @B9=;?<@~~++-GD||syy(#[[c2
'-
(__QVV4N)!<<TqyyZhi
%%j19333"&"6"6z"Bvv!6!66>>6+77
C*'44/@AUAU@XY`s  -0NN,@,@,B0,BaffPYPiPiFi,B - 0 *B)N)N{OjOj)k&)//0D0D/GG_&)*<&=&BsK1#yy(U&AS:T(UUVX "A	  '<O(,(?(?T(R%&/O(,(<(<Z(H%K .N 8<--))//K#))+ $ 4 4[ A&&(( / /"3!/!@!@ '

 
	
30s   $L#:L#c                j   [        U[        R                  5      (       d   eUR                  nUR                  n UR                  5       nUS L[        U5      S:g  -   U-   S:  a  [        S5      eU(       a  U R                  UR                  5      $ U(       a"  U R                  [        R                  U   5      $ U(       a?  U R                  U5      n[        R                  " S [        R                   " 5       S9US'   U$ [        R                   " 5       $ ! [         a    [        USS 5      S Ln Nf = f)N__default__r   rL   zZPydantic does not support mixing more than one of TypeVar bounds, constraints and defaultsc                    U" U 5      $ r   r   )r  hs     r   r  >GenerateSchema._unsubstituted_typevar_schema.<locals>.<lambda>y  s    QqTr   )r   r   )rW  rS  r#   r  r  has_defaultr  r   r   NotImplementedErrorr  r}  rf  r$   r/   r&  r   )r   typevarr   constraintstypevar_has_defaultr   s         r   rT  ,GenerateSchema._unsubstituted_typevar_schemaa  s%   '6>>2222!!--	T")"5"5"7
 #k"2a"78;NNQRR%l  ''(;(;<<%%fll;&?@@))%0F&1&U&U!+*@*@*B'F?# M))++)  	T")'=$"Gt"S	Ts   D D21D2c                    [         R                  " UR                  UR                  R                  U R
                  R                  S9nU[        L a
  [        SSS9e[        X0R                  5      n[        R                  " UR                  US9Ul        U R!                  U5      nU R#                  U[%        UR'                  5       UR(                  5      5      nU R*                  R,                  nUb$  U R/                  XaR                  UR(                  S9  U R1                  U R*                  UR                  UR(                  5        [3        UR                  5      u  px0 n	[5        U	SS0U(       a  UO0 EUS	9  [6        R8                  " UR(                  XQR                  R:                  U	S
9$ ! [         a  n[        R                  " U5      UeS nAff = f)NrV  zComputed 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_type)r  r  r  readOnlyTr  )r2  r  r/  )rN   get_function_return_typefuncr   r  r   localsr  rB   r  r-   rC   rp   r   r[  replacer  r  r   r=  r   r   r  r  r  r   rT   r/   computed_fieldr  )
r   r  r  r  r	  return_type_schemar  r  r  r  s
             r   r  %GenerateSchema._computed_field_schema  s   
	H &>>**D4I4I4P4PK
 ++#d5  $K1C1CD $$QVVE!11+>!::01B1I1I1KQ^^\

 ..>>&>> /VVabaoao ?  	778L8LaffVWVdVde1Z[\[a[a1b.(*!+T jM`6Ifh j/	

 ))NN*<FFLL[h
 	
E  	H-==a@aG	Hs   AF. .
G8GGc                    [        5       nU R                  USS9tp4U R                  X45      nU H   n[        Xb5      (       d  M  [	        Xe5      nM"     U$ )zdGenerate schema for an Annotated type, e.g. `Annotated[int, Field(...)]` or `Annotated[int, Gt(0)]`.Tr  )rr   r  r`  rW  r  )r   r  rz   rb  r   r   r  s          r   r&   GenerateSchema._annotated_schema  sc    ,.	$($I$I %J %
! ((B &J*00%j9 & r   c                    SSK JnJnJn   [	        U5        [        U5      =(       d    UnU[        ;   a  U" X5      $ U[        ;   a  U" X5      $ U[        ;   a  U" X5      $ g ! [
         a     g f = f)NrL   ))deque_schema_prepare_pydantic_annotations)mapping_like_prepare_pydantic_annotations(path_schema_prepare_pydantic_annotations)
_std_types_schemar  r  r  hashr   r5   r   r   MAPPING_TYPES)r   r  r   r  r  r  
obj_origins          r   r_  ?GenerateSchema._get_prepare_pydantic_annotations_for_known_type  sx    	
 	
	I  _+
#;CMM;&<SNN=(<SNN!  		s   A" "
A/.A/c                    U $ r   r   r  s    r   r  GenerateSchema.<lambda>  s    qr   c                  ^ ^^ [        [        R                  " U5      5      nT R                  T[	        U5      5      nUb  Uu  mn/ nSU UU4S jjn[        UT 5      nU H  nUc  M  T R                  XxU5      nM     U" T5      n	U(       a  U	R                  S0 5      n
[        XS9  [        T R                  R                  TU	5      $ )ad  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                   > TR                  U T5      nUc  TR                  U 5      nOUn[        X5      nUb4  [        UTR                  R
                  5      nUb  TR                  XC5        T" U5      $ r   )r  r  r  r  r   r  r  )r  r  r   r  r  r   rb  r  s        r   inner_handler8GenerateSchema._apply_annotations.<locals>.inner_handler  sv     ??[QM$44S9&#DS#Q #/"9&$))BWBW"X".))/P)&11r   r/  ) pydantic_js_annotation_functionsr  r   r:  r)   )r;  rP   expand_grouped_metadatar_  r   rv   _get_wrapped_inner_schemar  rT   r   r   r   )r   rb  r   r  ra  r  r  get_inner_schemar  r   r  s   `` `       r   r`  !GenerateSchema._apply_annotations  s     4LL[YZCCKQVWbQcd?'*$KHJ(	2 	2 8tL%J!#== .N  & "+.+"--j"=M r;D<P<P<^<^`kmsttr   c                   [        5       n[        X#5      (       aN  UR                   H  nU R                  X5      nM     UR                  b  U R                  XR                  5      nU$ US   S:X  aC  UR                  S[        R                  " 5       5      nU R                  XR5      nU(       a  XQS'   U$ UnUR                  SS 5      nUbX  UR                  5       nUS[        U5       3-   nXR                  R                  ;   a  U R                  R                  U   $ XS'   OUS   S:X  a  US   nXpR                  R                  ;   an  U R                  R                  U   R                  5       nUS[        U5       3-   nXR                  R                  ;   a  U R                  R                  U   $ XS'   [        R                  " X!R                  5       5      n	U	b  U	$ U$ )Nr   r   r   r.  r3  definition-refr$  )rr   rW  r/  _apply_single_annotationr  r  r   r/   r   r   r\  r   r  rP   apply_known_metadata)
r   r   r/  rz   field_metadatar  r&  r.  new_refmaybe_updated_schemas
             r   r  'GenerateSchema._apply_single_annotation  s   ,.	h**"*"3"366vN #4 %%1;;FDZDZ[M&>Z'JJx)?)?)ABE11%BE#(x M jj%?[[]FaX/00G))///yy,,W55#5MF^//&Cii+++..s388:!DN#3 44ii333990099 'u8MMhXcXcXef+''r   c                    [        5       n[        X#5      (       aM  UR                   H  nU R                  X5      nM     [	        U5      u  pVUR                  S0 5      n[        XuUS9  U$ )Nr/  r  )rr   rW  r/  $_apply_single_annotation_json_schemar   r  rT   )r   r   r/  rz   r  r  r  r  s           r   r  3GenerateSchema._apply_single_annotation_json_schema8  sp     -.	h**"*"3"3BB6Z #4 6__g5h2"--j"=M Zk r   c                j   ^ ^^^^ [        TSS 5      =(       d    S mSUUUUU 4S jjn[        UT 5      $ )Nr  c                    U" U 5      $ r   r   )r   r$  s     r   r  :GenerateSchema._get_wrapped_inner_schema.<locals>.<lambda>O  s    GFOr   c                   > T" U T5      nTR                  UT5      nTR                  UT5      n[        TU5      nUb  TR                  U5        U$ r   )r  r  r  r  )r   r   r  r  r  metadata_get_schemar  r   s      r   new_handler=GenerateSchema._get_wrapped_inner_schema.<locals>.new_handlerR  s\    (1ABF226:FF>>vzRF#DZQW#X #/0778LMMr   )r   r   r:  core_schema.CoreSchema)r   rv   )r   r  r  r  r  r  s   ```` @r   r  (GenerateSchema._get_wrapped_inner_schemaH  s9     6=ZIgim5n 6
3 		 	 ,K>>r   c                   U(       Ga  [        U5      nUS   S:X  a  US   nU R                  X25      US'   U$ [        R                  " SUR	                  SS5      5      nUb.  XR
                  R                  U'   [        R                  " U5      nUS   n[        UR                  UR                  R                  5      u  pg [        R                  " UR                  UR                  R                  U R                   R"                  S9nU[*        L a  Sn
OU R-                  U5      n
UR                  R                  S	:X  a;  [        R.                  " UR                  UUU
UR                  R0                  S
9US'   U$ UR                  R                  S:X  d   e[        R2                  " UR                  UUU
UR                  R0                  S
9US'   U$ ! [$         a  n	[&        R(                  " U	5      U	eSn	A	ff = f)z$Apply field serializers to a schema.r   r  r   zstr|Noner.  Nr   r  r   )is_field_serializerr_  r2  r   r   r   )r   r  rS  r%   r   r   r  r/   r  rf   r  r   rX  rN   r  r  r   r  r  rB   r  r-   r  r&  r   r   )r   r   serializersr   r.  
serializerr  r_  r  r	  r2  s              r   r  'GenerateSchema._apply_field_serializers^  s    &\Ff~.%h/#'#@#@#[x kk*fjj.EF?17II))#.(DDSIF %RJ,DZ__V`VeVeVjVj,k)L *BBOOZ__%@%@$J_J_JfJf // $ $ 4 4[ A##v-*5*Y*YOO(;%"/(oo77+'   "++w666*5*Z*ZOO(;%"/(oo77+' 3  L1AA!D!KLs   AG 
G9G44G9c                   UR                  SS5      nU(       Ga'  [        U5      S   n[        UR                  UR                  R
                  5      n [        R                  " UR                  UR                  R                  U R                  R                  S9nU[        L a  SnOU R                  U5      nUR                  R
                  S:X  a6  [         R"                  " UR                  UUUR                  R$                  S9n	O5[         R&                  " UR                  UUUR                  R$                  S9n	XS'   U(       a  X1S'   U$ ! [         a  n[        R                  " U5      UeSnAff = f)z$Apply model serializers to a schema.r.  Nr   r  r   )r_  r2  r   r   )r  r;  rg   r  r   rX  rN   r  r  r   r  r  rB   r  r-   r  r/   r&  r   r   )
r   r   r  r.  r  r_  r  r	  r2  
ser_schemas
             r   r  'GenerateSchema._apply_model_serializers  sA    !**UD1k*2.J/
AUAUVHL *BBOOZ__%@%@$J_J_JfJf
 // $ $ 4 4[ A##v-4?4c4cOO%"/(oo77	5
 )MMOO%"/(oo77	
 '1?#5M3  L1AA!D!KLs   AE 
E5E00E5)r   r   r   r   r   r   )NN)r   rR   r   zNsResolver | Noner   zdict[Any, Any] | Noner:  Noner:  r  )r:  rR   )r:  rt   )r:  r   )r  r   r:  r)   )r  r   r  r   r:  r)   )r6  z
type[Enum]r:  r)   )r   r   r:  r)   )r:  r)   r  )r   r)   r  zstr | Discriminator | Noner:  r)   r  )r  r)   r  zCallable[..., Any]r:  r  )T)r  r   r  r   r:  r  )r   ztype[BaseModel]r:  r  )r  r   r:  r   )r  r   r   r   r:  zcore_schema.CoreSchema | None)r  r   r  zLiteral[True]r:  tuple[Any, ...])r  r   r:  tuple[Any, ...] | None)F)r  r   r  r   r:  r  )r  r   r:  ztuple[Any, Any])r  r   r:  r  )r  r   r  r   r:  r)   )
rs  r  rt  rz   r   r^   r  r   r:  zcore_schema.TypedDictField)rs  r  rt  rz   r   r^   r:  zcore_schema.ModelField)rs  r  rt  rz   r   r^   r:  zcore_schema.DataclassField)r  %Callable[[str], str] | AliasGeneratorrt  rz   r   r  r:  r  )r  r  r  ry   r  r  )r   rR   rt  FieldInfo | ComputedFieldInfor   r  r:  r  )rs  r  rt  rz   r   r^   r:  _CommonField)r  r   r:  r  )r  r2   r:  r)   )r  r   r:  r)   )r  r   r  r   r:  r  )r  r   r  r   r:  r  )
rs  r  r  z	type[Any]r  r   rX  zJLiteral['positional_only', 'positional_or_keyword', 'keyword_only'] | Noner:  zcore_schema.ArgumentsParameter)r  r   r:  r  )r:  r  )r  r   r:  r  )r  r   r:  r  )r  r   r:  zcore_schema.GeneratorSchema)r6  r   r:  r  )rM  ztype[StandardDataclass]r  ztype[StandardDataclass] | Noner:  r  )rq  ValidateCallSupportedTypesr:  zcore_schema.CallSchema)r  ztyping.TypeVarr:  r  )r  zDecorator[ComputedFieldInfo]r  z2dict[str, Decorator[FieldSerializerDecoratorInfo]]r:  zcore_schema.ComputedField)r  r   r:  r  )r  r   r   r  r:  ztuple[Any, list[Any]] | None)rb  r   r   z	list[Any]r  z"Callable[[CoreSchema], CoreSchema]r:  r)   )r   r  r/  r   r:  r  )r  r;   r  r   r  zlist[GetJsonSchemaFunction]r:  rv   )r   r  r  z-list[Decorator[FieldSerializerDecoratorInfo]]r:  r  )r   r  r  z1Iterable[Decorator[ModelSerializerDecoratorInfo]]r:  r  )OrA  r  r  r  r>  rE  r   r   propertyr   r   r  r  r  r  r  rJ  rp  ry  r|  r  r  	Exceptionr  r  r  r  r  r  r  r  r  r
  r&   r  r  r!  r  r(  r^  rv  r  r  staticmethodr  r  r  r  rf  rC  rH  rI  rK  r   r  r  r@  rD  rZ  r  rg  rA  rk  rP  rR  r]  rW  rT  r  r&  r_  r`  r  r  r  r  r  r  __classcell__)r   s   @r   r   r   >  s   fI *..2	#%# '# ,	#
 
#
 / / 1 1 < <
IkHNFP
B
"
2	
 1K	$9 	
	/ -1-- &*- 
 	-^aJF	@D, i iW W $2m.^..l 

 
 #	
 
 
$
&

 
 #	

 
 
"

 
 #	

 
$
* /[>/[LU/[cf/[	/[ /[b (\>(\.(\ !(\ (\T %%%3P%^a%	% %*a
a
%.a
<Ja
	a
F6@(hOT%aV ![_        	  
 Y   
(  D_<

0d
>@
.Mr8

WN0WN:XWN	WNrL
\,<0
'0
 N0
 
#	0
d %4	%D FQ	-u-u -u !C	-u
 
-u^(T,8;	 ?.? ? +F	?
 
&?,6&6 C6 
 	6p),);l)	) )r   r   c                .    [         R                  " X5      $ r   )r/   !no_info_before_validator_functionfr   r3  s      r   r  r    s    0]0]^_0hr   c                .    [         R                  " X5      $ r   )r/   rF  r  s      r   r  r    s    {/[/[\]/fr   c                .    [         R                  " U 5      $ r   )r/   rm  )r  rd  re  s      r   r  r    s    K,X,XYZ,[r   c                .    [         R                  " X5      $ r   )r/   r%  r  s      r   r  r    s    k.Y.YZ[.dr   c                ,    [         R                  " XUS9$ N)r   )r/   #with_info_before_validator_functionr  r   r   s      r   r  r    s    ;;j;j	j<r   c                ,    [         R                  " XUS9$ r  )r/   "with_info_after_validator_functionr  s      r   r  r    s    +:h:h	j;r   c                *    [         R                  " XS9$ r  )r/   r  )r  r3  r   s      r   r  r    s    [5c5c	6r   c                ,    [         R                  " XUS9$ r  )r/   !with_info_wrap_validator_functionr  s      r   r  r    s    9f9f	j:r   ))r   no-info)r   r  )r   r  )r   r  )r   	with-info)r   r  )r   r  )r   r  zMapping[tuple[FieldValidatorModes, Literal['no-info', 'with-info']], Callable[[Callable[..., Any], core_schema.CoreSchema, str | None], core_schema.CoreSchema]]_VALIDATOR_F_MATCHc                    U Hh  n[        UR                  UR                  R                  5      nU(       a  SOSn[        UR                  R                  U4   " UR                  X5      n Mj     U $ )zApply 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  )rh   r  r   rX  r  )r   r  r   	validatorr_  val_types         r   r   r     s]    "  	$Y^^Y^^5H5HI"*;	#Y^^%8%8($CDY^^U[h	  
 Mr   c                P    U  H   nUR                   R                  (       d  M     g   g)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)r   r^  )r  r  s     r   r  r    s&      	>>      r   c                   U R                  SS5      nU GH  nUS:X  a  UR                  R                  S:w  a  M&  US:X  a  UR                  R                  S:X  a  MH  [        UR                  UR                  R                  5      nUR                  R                  S:X  aI  U(       a!  [
        R                  " UR                  U S9n M  [
        R                  " UR                  U S9n M  UR                  R                  S:X  aK  U(       a"  [
        R                  " UR                  U S9n GM  [
        R                  " UR                  U S9n GM:  UR                  R                  S:X  d   eU(       a"  [
        R                  " UR                  U S9n GM  [
        R                  " UR                  U S9n GM     U(       a  X0S'   U $ )	ak  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.  Nr  r   r  r   )rq  r   r   )r  r   rX  rh   r  r/   r  r%  r  r  r  rF  )r   r  rX  r.  r  r_  s         r   r  r  	  sZ   & jj-C	7?y~~22h>7?y~~22h>$Y^^Y^^5H5HI>>&($FFPYP^P^gmn$DDinnekl^^  H,$HHR[R`R`iop$FFPYP^P^gmn>>&&'111$GGQZQ_Q_hno$EEy~~flm+  , uMr   c                   U R                   (       a>  [        R                  " UU R                   [        U R                   5      U R                  S9$ U R
                  [        La)  [        R                  " XR
                  U R                  S9$ U$ )zWrap 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_factorydefault_factory_takes_datar  )r  r  )r  r/   with_default_schemark   r  r  r-   )rt  r   s     r   r  r  3	  s     !!..&66'DZE_E_'`'88	
 	
 
		#4	4....A\A\
 	
 r   c                   [        U SS5      n[        U S5      (       aj  [        5       nUSL=(       a&    UR                  R                  U[        USS5      4;  nU(       d(  [        U SS5      n[        SU(       a  SU S3OS	 S
3SS9e[        U S5      (       a1  [        R                  " U 5      (       d  [        U R                  U5      $ Uc  gU$ )z`Extract `__get_pydantic_json_schema__` from a type, handling the deprecated `__modify_schema__`.__get_pydantic_json_schema__N__modify_schema__r*  rA  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__)
r   r  rq   r  r*  rC   rQ   r%  r  r  )r   r   js_modify_functionr|   has_custom_v2_modify_js_funccls_names         r   r  r  L	  s     %CTJr&'',.	 d* W66??&0BJPT(UVW 	% ,r:t4H#=Zb{8*TU=Vhj<kkln)  r<  )C)CB)G)G0GG!r   c                  R    \ rS rSr% S\S'   S\S'   S\S'   S\S	'   S\S
'   S\S'   Srg)r  ik	  r  r   4str | list[str | int] | list[list[str | int]] | Nonero  r  rp  bool | Nonern  ry  zdict[str, Any]r/  r   N)rA  r  r  r  r  r  r   r   r   r  r  k	  s&    ""JJ##&&r   r  )ro  rp  rn  ry  r/  c                   U UUUUUS.$ )Nr   ro  rp  rn  ry  r/  r   r  s         r   r  r  t	  s      ,2!6 r   c                  6    \ rS rSrSrSS jr\SS j5       rSrg)	r   i	  z*Keeps track of references and definitions.c                0    [        5       U l        0 U l        g r   )r   seenr  r   s    r   r   _Definitions.__init__	  s    !e	>@r   c              #  N  #    [        U5      nX R                  ;   d  X R                  ;   a  U[        R                  " U5      4v   gU R                  R                  U5         US4v   U R                  R                  U5        g! U R                  R                  U5        f = f7f)a  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)rX   r  r  r/   r  adddiscard)r   r   r.  s      r   r  _Definitions.get_schema_or_ref	  s     ( 2))s&6&66??DEEIIMM#'Dk!		!!#&		!!#&s   A B%#B )B%B""B%)r  r  Nr  )r   r   r:  z3Iterator[tuple[str, None] | tuple[str, CoreSchema]])	rA  r  r  r  r>  r   r   r  r  r   r   r   r   r   	  s    4A ' 'r   r   c                ^    U S   S:X  a  UR                  U S   S 5      $ U S   S:X  a  U S   $ U $ )Nr   r  r$  r  r   rA  )r   r  s     r   r  r  	  sA    f~))vl3T::	=	(hr   c                  @    \ rS rSrSrSS jr\SS j5       rS	S jrSr	g)
r   i	  _stackc                    / U l         g r   r  r   s    r   r   _FieldNameStack.__init__	  s	    !#r   c              #  ~   #    U R                   R                  U5        S v   U R                   R                  5         g 7fr   r  r  r  )r   r   s     r   r  _FieldNameStack.push	  s(     :&   ;=c                D    U R                   (       a  U R                   S   $ g Nr   r  r   s    r   r   _FieldNameStack.get	      ;;;;r?"r   Nr  )r   r  r:  Iterator[None])r:  r  
rA  r  r  r  rE  r   r   r  r   r  r   r   r   r   r   	  s%    I$  
r   r   c                  @    \ rS rSrSrSS jr\SS j5       rS	S jrSr	g)
r   i	  r  c                    / U l         g r   r  r   s    r   r   _ModelTypeStack.__init__	  s	    "$r   c              #  ~   #    U R                   R                  U5        S v   U R                   R                  5         g 7fr   r	  )r   type_objs     r   r  _ModelTypeStack.push	  s(     8$r  c                D    U R                   (       a  U R                   S   $ g r  r  r   s    r   r   _ModelTypeStack.get	  r  r   Nr  )r  r   r:  r  )r:  ztype | Noner  r   r   r   r   r   	  s%    I%  
r   r   )r   FieldDecoratorInfor   r  r:  r   )r   zIterable[AnyFieldDecorator]r   zIterable[str]r:  r  )r   z+Iterable[Decorator[FieldDecoratorInfoType]]r   r  r:  z'list[Decorator[FieldDecoratorInfoType]])r   r  r   z'list[Decorator[ValidatorDecoratorInfo]]r   r  r:  r  )r   r  r:  zAtuple[JsonDict | None, JsonDict | JsonSchemaExtraCallable | None])r   zJsonEncoders | Noner   r   r   r)   r:  r)   )r   r   r   r   r:  r   )r   r  r  zIterable[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]]rX  z Literal['inner', 'outer', 'all']r:  r  )rt  rz   r   r  r:  r  )r   r   r   r)   r:  zGetJsonSchemaFunction | None)r   r  ro  r  rp  r  rn  r  ry  r  r/  r   r:  r  )r   r)   r  zdict[str, CoreSchema]r:  zCoreSchema | None)r>  
__future__r   _annotationscollections.abcrh  r[  r2  r?  ospathlibrN  r  rS  r   
contextlibr   r   r   decimalr   enumr   	fractionsr	   	functoolsr
   r   r   r   	ipaddressr   r   r   r   r   r   	itertoolsr   operatorr   r  r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   uuidr'   r(   typing_extensionspydantic_corer)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   aliasesr8   r9   r:   annotated_handlersr;   r<   r  r=   r>   r?   r@   errorsrA   rB   rC   functional_validatorsrD   rE   rF   rG   rH   r%  rI   versionrJ   rK   r   rM   rN   rO   rP   rQ   _configrR   rS   _core_metadatarT   rU   rV   rW   rX   rY   rZ   r[   r\   r]   r^   r_   r`   ra   rb   rc   rd   re   rf   rg   rh   _docs_extractionri   r  rj   rk   _forward_refrl   	_genericsrm   rn   ro   rp   _import_utilsrq   rr   _mock_val_serrs   _namespace_utilsrt   ru   _schema_generation_sharedrv   _utilsrw   rx   r   ry   rz   mainr|   r}   _dataclassesr~   r   r  r  r  r   AnyFieldDecoratorModifyCoreSchemaWrapHandlerGetCoreSchemaFunctionr   Tupler   r  r;  Listri  MutableSequencer   r   Set
MutableSetr   	frozenset	FrozenSetr   r   r   r   r!  r   PathLikePathPurePath	PosixPathPurePosixPathPureWindowsPathr   MutableMappingOrderedDictDefaultDictdefaultdictCounterr  dequeDequer   r  rV  r   r   r   r   r   r   JsonEncodersr   r   r   r  r   r  r  r  r  r  r  r   r  r   r   r   r   r   <module>rT     sW   3 2     	  	 
   %      8 8 f f   6 6       	 	 	 d c = = K O O b b w w ) # 0 f f 6 0	 	 	    : L . t t M ) 9 C 65 %/@&&'1 13NPllm  !9AST $%)**+-  3  #'B!C[E[E[![\  &,,/Z /[__-L-LM
J Mfjj+//*D*DE	: E )6+;+;[__=P=PQ * Q,
J ,#]Km]hi* i$oo{/G/GH
 HKKLL
J  NN
OOOO""!!

NN ',,fll;Z ; #  !))C D  .Zgh   i

 
*6nDnMPn,n"""A" " 	"J
A
'
AF
A DI{*+&,/9CD%A AP< if[d   2"7
  2 ,",@, +, 	,^2>9  NR&*)-" K $	
 '   &$' $'N & r   