
    o i9                   &	   U d Z ddlmZ ddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddlZddlZddlmZmZmZmZ ddlmZ ddlmZ ddlmZ ddlmZ dd	lmZ dd
lmZ ddlmZmZm Z  ddl!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z' ddl(m)Z) ddl*m+Z+ ddl,m-Z-m.Z.m/Z/m0Z0 ddlm1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z: ddl;m<Z< ddl=m>Z> ddl?Z?ddl@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZI ddl?mJZJmKZKmLZLmMZMmNZN ddlOmPZP ddlQmRZRmSZSmTZT ddlUmVZVmWZW ddlXmYZYmZZZ ddl[m\Z\m]Z]m^Z^m_Z_ ddl`maZambZbmcZc ddldmeZemfZfmgZgmhZhmiZi ddljmkZk ddllmmZm ddlmnZnmoZompZpmqZq d d!lrmsZsmtZtmuZumvZvmwZw d d"lxmyZymzZz d d#l{m|Z|m}Z} d d$l~mZmZmZ d d%lsmZmZmZmZmZmZmZmZmZmZmZmZ d d&lmZ d d'lmZmZmZmZmZ d d(lmZ d d)lmZmZ d d*lmZmZ d d+lmZ d d,lmZmZ d d-lmZmZ d d.lmZ d d/lmZmZ e1r dd0lmZmZ dd1lmZ dd2l,mZ d d3lmZ d d4lmZ ej        d5k    Ze8eeef         Z e7d6e7          Ze8ee         ee         ee         f         ZeYZd8ed9<   e3e2egeHjB        f         Zd8ed:<   d;Zd8ed<<   ej        egZd=ed><   ej        eej        j        gZd=ed?<   ej        eej        j        gZd=ed@<   ej        eej        j        gZd=edA<   ej        egZd=edB<   e"e#e$e%e&e'gZd=edC<   ej        ej        j        gZd=edD<   ej        ej        j        ej        ej        j        gZd=edE<   ej        egZd=edF<   ej        ej        gZd=edG<   e	j        e
j        e
j        e
j        e
j        e
j        gZd=edH<   ej        ej        ej        j        ej        j        ej        e?j        ej        ej        gZej        ej        gZej        ej        gZd=edI<   e8e/e-e0ef         Z eLe          ZdJdKdLdMeFfdNdOdPdQdRdSdTdUdVgZdWedX<   	 efeeeheidYZdZed[<   ddbZddhZddlZddqZddtZeee2         e^f         ZddzZ G d{ d|e          Z G d} d~          Zd d d d d d d d dZded<   ddZddZddZddZddZddZddZddZ G d d          Z  G d d          Z G d d          ZdS )z-Convert python types to pydantic-core schema.    )annotationsN)	GeneratorIterableIteratorMapping)contextmanagercopy)Decimal)Enum)Fraction)partial)	Parameter_ParameterKind	signature)IPv4AddressIPv4InterfaceIPv4NetworkIPv6AddressIPv6InterfaceIPv6Network)chain)
attrgetter)FunctionTypeGenericAlias
LambdaType
MethodType)
TYPE_CHECKINGAnyCallableFinal
ForwardRefLiteralTypeVarUnioncastoverload)UUID)ZoneInfo)	MISSING
CoreSchemaMultiHostUrlPydanticCustomError$PydanticSerializationUnexpectedValuePydanticUndefinedUrlcore_schemato_jsonable_python)	TypeAliasTypeAliasTypeget_args
get_originis_typeddict)typing_objects)AnnotationSourceget_literal_valuesis_union_origin   )AliasChoices	AliasPath)GetCoreSchemaHandlerGetJsonSchemaHandler)
ConfigDictJsonDictJsonEncoderJsonSchemaExtraCallable)PydanticSchemaGenerationErrorPydanticUndefinedAnnotationPydanticUserError)AfterValidatorBeforeValidatorFieldValidatorModesPlainValidatorWrapValidator)JsonSchemaValue)version_short)ArbitraryTypeWarningPydanticDeprecatedSince20TypedDictExtraConfigWarning UnsupportedFieldAttributeWarning   )_decorators_discriminated_union_known_annotated_metadata_repr_typing_extra)ConfigWrapperConfigWrapperStack)CoreMetadataupdate_core_metadata)get_refget_type_ref%is_list_like_schema_with_items_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rebuild_dataclass_fieldsrebuild_model_fieldstakes_validated_data_argumentupdate_field_from_config)PydanticRecursiveRef)get_standard_typevars_mapreplace_types)import_cached_base_modelimport_cached_field_info)MockCoreSchema)NamespacesTuple
NsResolver)MissingDefinitionErrorgather_schemas_for_cleaning)CallbackGetCoreSchemaHandler)lenient_issubclasssmart_deepcopy)ComputedFieldInfo	FieldInfo	BaseModel)Discriminator)StandardDataclass)GetJsonSchemaFunction)      FieldDecoratorInfoType)boundr3   ModifyCoreSchemaWrapHandlerGetCoreSchemaFunctionz1Callable[[int, str, Any], Literal['skip'] | None]ParametersCallbackz
list[type]TUPLE_TYPES
LIST_TYPES	SET_TYPESFROZEN_SET_TYPES
DICT_TYPESIP_TYPESSEQUENCE_TYPESITERABLE_TYPES
TYPE_TYPESPATTERN_TYPES
PATH_TYPESDEQUE_TYPES)aliasN)validation_aliasN)serialization_aliasNdefault)default_factoryN)excludeN)
deprecatedN)reprT)validate_defaultN)frozenN)initN)init_varN)kw_onlyNlist[tuple[str, Any]]+UNSUPPORTED_STANDALONE_FIELDINFO_ATTRIBUTES)beforeafterplainwrapzbdict[FieldValidatorModes, type[BeforeValidator | AfterValidator | PlainValidator | WrapValidator]]_mode_to_validatorinfoFieldDecoratorInfofieldstrreturnboolc                     | j         }d|v p||v S )zCheck if field name is in validator fields.

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

    Returns:
        `True` if field name is in validator fields, `False` otherwise.
    *)fields)r   r   r   s      Z/var/www/findabus/venv/lib/python3.11/site-packages/pydantic/_internal/_generate_schema.py)check_validator_fields_against_field_namer      s     [F&=+EVO+    
decoratorsIterable[AnyFieldDecorator]r   Iterable[str]Nonec           	         t          |          }| D ]U}d|j        j        v r|j        j        du r |j        j        D ](}||vr"t	          d|j         d|j         dd          )VdS )	av  Check if the defined fields in decorators exist in `fields` param.

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

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

    Raises:
        PydanticUserError: If one of the field names does not exist in `fields` param.
    r   Fz*Decorators defined with incorrect fields: .zO (use check_fields=False if you're inheriting from the model and intended this)zdecorator-missing-fieldcodeN)setr   r   check_fieldsrG   cls_refcls_var_name)r   r   decr   s       r   check_decorator_fields_existr      s     [[F  #(/!!8 E))X_ 	 	EF""'f f fsO_ f f f2    #	 r   validator_functions+Iterable[Decorator[FieldDecoratorInfoType]]'list[Decorator[FieldDecoratorInfoType]]c                     fd| D             S )Nc                >    g | ]}t          |j                  |S  )r   r   ).0r   r   s     r   
<listcomp>z8filter_field_decorator_info_by_field.<locals>.<listcomp>   s.    mmmC2[\_\dfk2l2lmCmmmr   r   )r   r   s    `r   $filter_field_decorator_info_by_fieldr      s!     nmmm.mmmmr   schemacore_schema.CoreSchemaeach_item_validators'list[Decorator[ValidatorDecoratorInfo]]c                @   |s| S | d         dk    rt          | d         |          | d<   | S | d         dk    r=|                     d          x}%t          | d         |         |          | d         |<   nt          |           r;|                     dt	          j                              }t          ||          | d<   n_| d         dk    r;|                     dt	          j                              }t          ||          | d<   nt          d	| d                    | S )
Ntypenullabler   tuplevariadic_item_indexitems_schemadictvalues_schemazO`@validator(..., each_item=True)` cannot be applied to fields with a schema of )apply_each_item_validatorsgetapply_validatorsr_   r1   
any_schema	TypeError)r   r   r   inner_schemas       r   r   r      sI      
 f~##5fX6FH\]]x	7	"	"#)::.C#D#DDQ:J~&':;$; ;F>"#67 
/v	6	6 	
zz.+2H2J2JKK!1,@T!U!U~	6	!	!zz/;3I3K3KLL"2<AU"V"Vn^dek^lnn
 
 	
 Mr   FieldInfo | ComputedFieldInfoAtuple[JsonDict | None, JsonDict | JsonSchemaExtraCallable | None]c                    | j         | j        t          | j                  p| j        dk    pd t	          | j                  d}d |                                D             }|pd | j        fS )N )titledescriptionr   examplesc                    i | ]
\  }}|||S Nr   r   kvs      r   
<dictcomp>z=_extract_json_schema_info_from_field_info.<locals>.<dictcomp>"  s    YYYDAq1=1a===r   )r   r   r   r   r2   r   itemsjson_schema_extra)r   json_schema_updatess     r   )_extract_json_schema_info_from_field_infor     s~     '4?++Lt"/DL&t}55	  ZY,?,E,E,G,GYYY'4)?@@r   json_encodersJsonEncoders | Nonetpr   r+   c                *   | s|S d|v r|S |gt          |d|j        j                  dd         R D ]`}|                     |          }|t	          j        dt                       dt                     t          j	        |d          |d<   |c S |S )	a  Iterate over the json_encoders and add the first matching encoder to the schema.

    Args:
        json_encoders: A dictionary of types and their encoder functions.
        tp: The type to check for a matching encoder.
        schema: The schema to add the encoder to.
    serialization__mro__Nz=`json_encoders` is deprecated. See https://docs.pydantic.dev/z</concepts/serialization/#custom-serializers for alternativesjson	when_used)
getattr	__class__r   r   warningswarnrN   rP   r1   $plain_serializer_function_ser_schema)r   r   r   baseencoders        r   ,_add_custom_serialization_from_json_encodersr  )  s      &   Hgb)R\-ABB3B3GHH  ##D))? ZMOO  Z  Z  Z%	
 	
 	
 #."RSZfl"m"m"mMr   c                      e Zd ZdZdS )InvalidSchemaErrorzThe core schema is invalid.N)__name__
__module____qualname____doc__r   r   r   r  r  K  s        %%%%r   r  c                      e Zd ZdZdZ	 	 dddZd fdZedd            Zedd            Z	edd            Z
ddZddZddZddZddZdd Zdd"Zdd#Zdd$Zdd%Zdd&Zdd(Zdd,Zdd-Zdd1Zdd3Zdd6Zdd7Zdd:Zdd;Zedd?            Z eddA            Z dddCZ ddDZ!ddFZ"ddGZ#ddHZ$ddJZ%dKdLddTZ&ddVZ'ddXZ(ddZZ)dd\Z*dd^Z+dd`Z,ddbZ-dddZ.e/j0        dfddlZ1e/j0        fddoZ2ddqZ3ddrZ4ddsZ5ddtZ6ddvZ7ddwZ8ddyZ9dd{Z:dd|Z;ddZ<ddZ=	 dddZ>	 dddZ?ddZ@ddZAddZBd dKfddZC	 dddZDddZEddZF	 dddZGddZHddZI xZJS )GenerateSchemaz\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defsNconfig_wrapperrY   ns_resolverNsResolver | Nonetypevars_mapMapping[TypeVar, Any] | Noner   r   c                    t          |          | _        |pt                      | _        || _        t                      | _        t                      | _        t                      | _
        d S r   )rZ   r  ry   r  r  _FieldNameStackr  _ModelTypeStackr  _Definitionsr  )selfr  r  r  s       r   __init__zGenerateSchema.__init__[  sX     &8%G%G"'7:<<) / 1 1 / 1 1 NN			r   c                    t                                                       t          j        dt          d           d S )NzeSubclassing `GenerateSchema` is not supported. The API is highly subject to change in minor versions.r<   )
stacklevel)super__init_subclass__r   r   UserWarning)clsr   s    r   r!  z GenerateSchema.__init_subclass__i  sE    !!###s	
 	
 	
 	
 	
 	
r   c                    | j         j        S r   )r  tailr  s    r   _config_wrapperzGenerateSchema._config_wrapperq  s    )..r   rx   c                    | j         j        S r   )r  types_namespacer&  s    r   _types_namespacezGenerateSchema._types_namespaceu  s     00r   r   c                    | j         j        S r   )r'  arbitrary_types_allowedr&  s    r   _arbitrary_typeszGenerateSchema._arbitrary_typesy  s    #;;r   
items_typer   r+   c                P    t          j        |                     |                    S r   )r1   list_schemagenerate_schemar  r.  s     r   _list_schemazGenerateSchema._list_schema  s!    &t';';J'G'GHHHr   	keys_typevalues_typec                x    t          j        |                     |          |                     |                    S r   )r1   dict_schemar1  )r  r4  r5  s      r   _dict_schemazGenerateSchema._dict_schema  s2    &t';';I'F'FH\H\]hHiHijjjr   c                P    t          j        |                     |                    S r   )r1   
set_schemar1  r2  s     r   _set_schemazGenerateSchema._set_schema  s!    %d&:&::&F&FGGGr   c                P    t          j        |                     |                    S r   )r1   frozenset_schemar1  r2  s     r   _frozenset_schemaz GenerateSchema._frozenset_schema  s!    +D,@,@,L,LMMMr   	enum_type
type[Enum]c           	       	
 t          j                                                  t                    	j        sd nt          j        j                  }|dk    rd }j        |d
d 
                                D             
d t          t                    rdt          j        d          }nmt          t                    rdt          j        d          }nAt          t                    rdt          j        d          }nt          j        d           }rd
fd}t!          j        dd           t$          j        j        u }t          j        |rd nj        	d|gi          }| j        j        r$t          j        t1          d          ||          }|S d	
fd}t          j        d|gi          S )NzAn enumeration.)r   r   c                    i | ]
\  }}|||S r   r   r   s      r   r   z/GenerateSchema._enum_schema.<locals>.<dictcomp>  s    KKKtq!Q]a]]]r   intr   floatc                    | S r   r   xs    r   <lambda>z-GenerateSchema._enum_schema.<locals>.<lambda>  s    XY r   r   r+   handlerr@   r   rM   c                r     ||           }|                     |          }|                               |S r   )resolve_ref_schemaupdate)r   rI  json_schemaoriginal_schema
js_updatess       r   get_json_schemaz4GenerateSchema._enum_schema.<locals>.get_json_schema  s=    %gfoo")"<"<["I"I&&z222""r   __func__pydantic_js_functions)sub_typemissingrefmetadatavalue)r   c                     |t          j                            }|                    |          }|                               |S )N)rS  rU  )r1   enum_schemarK  rL  )	_rI  rM  rN  casesenum_refr?  rO  rS  s	       r   get_json_schema_no_casesz=GenerateSchema._enum_schema.<locals>.get_json_schema_no_cases  sU    %gk&=iYago&p&p&pqq")"<"<["I"I&&z222""r   rV  )r   r+   rI  r@   r   rM   )rI  r@   r   rM   )list__members__valuesr^   r
  inspectcleandocr  r   
issubclassrC  r1   simple_ser_schemar   rD  r  r   	_missing_r   rQ  rY  r'  use_enum_values no_info_after_validator_functionr   is_instance_schema)r  r?  r   value_ser_typerP  default_missingrY  r]  r[  r\  rO  rS  s    `      @@@@r   _enum_schemazGenerateSchema._enum_schema  sG   	 5 < < > >??	**"+"3\dd9I)J[9\9\,,,K(1+NN
KKz'7'7'9'9KKK
:>i%% 	[H4?4QRW4X4XNN	3'' 		[H(:5AANN	5)) 	[H(:7CCNN )MkkZZN +	# # # # # # &i&9:tLLPTP^PggO%1! /HY5H1O3DE  K #3 )Jw''N   # # # # # # # # # # 114L3MN   r   r   c                   ddl m}m} t          dt          dt
          dt          dt          dt          didfd}t          j
        t          j        |                   t          j        t          j        t          j                              t          j                            t          j        |dd          dfdgi          S )NrS   )IP_VALIDATOR_LOOKUPIpTypeipv4ipv4networkipv4interfaceipv6ipv6networkipv6interfaceipr   r   core_schema.SerializationInfor   str | IpTypec           	         t          | t          f          s&t          d dt          |            d|  d          |j        dk    r| S t          |           S Nz
Expected `z` but got `z` with value `'z-'` - serialized value may not be as expected.python
isinstancer   r.   r   mode)rv  r   r   s     r   ser_ipz)GenerateSchema._ip_schema.<locals>.ser_ip  sn    b2s),, :zzzRzzzzz   yH$$	r77Nr   rM  python_schemaTalwaysinfo_argr   rR  c                    d         dS )Nstringr   formatr   )_1_2ip_type_json_schema_formatr   s     r   rH  z+GenerateSchema._ip_schema.<locals>.<lambda>  s    (VpqsVt9u9u r   
lax_schemastrict_schemar   rV  )rv  r   r   rw  r   rx  )_validatorsrn  ro  r   r   r   r   r   r   r1   lax_or_strict_schema no_info_plain_validator_functionjson_or_python_schemarh  
str_schemari  r  )r  r   rn  ro  r  r  s    `   @r   
_ip_schemazGenerateSchema._ip_schema  s   <<<<<<<< ???
"	 	 	 	 	 	 /"CDWXZD[\\%;'H[McMeMeff)<R@@   &J6\`ltuuu'*u*u*u*u*u)v

 

 

 
	
r   	path_typec           	       	 t           j        u r5t          t          hvr%t	          j                  st          dd          t           j        u rt          j        n	t          u rt          j
        d          nt          j        d          }t          u rt          j
                    nt          j                    }d	fd
}dfd}t          j        t          j        ||          t          j                            }t          j        t          j        |t          j        ||          gdd           |t          j        |dd          dd gi          }|S )Nz;`os.PathLike` can only be used with `str`, `bytes` or `Any`zschema-for-unknown-typer   Tstrictinput_valuestr | bytesr   os.PathLike[Any]c                z   	 t           u r^t          | t                     r9	 |                                 } nX# t          $ r}t	          dd          |d }~ww xY wt	          dd          t          | t
                    st	          dd           |           S # t          $ r}t	          dd          |d }~ww xY w)N
bytes_typezInput must be valid byteszInput must be bytesr  zInput is not a valid path)bytesr}  decodeUnicodeDecodeErrorr-   r   r   )r  epath_constructorr  s     r   path_validatorz3GenerateSchema._path_schema.<locals>.path_validator   s    [%%!+u55 Wh*5*<*<*>*>KK1 h h h"5lD_"`"`fggh 2,@UVVV#K55 X-k;VWWW''444 [ [ [)+7RSSYZZ[s8   B 7 B 
AAAAB 
B:$B55B:pathr   r   rw  str | os.PathLike[Any]c           	         t          | t          f          s&t          d dt          |            d|  d          |j        dk    r| S t          |           S rz  r|  )r  r   r   s     r   ser_pathz-GenerateSchema._path_schema.<locals>.ser_path  so    dRI.. :~~~T

~~4~~~   yH$$t99r   r  r  zInput is not a valid path for custom_error_typecustom_error_messager  r  rR  c                $    i  ||           ddiS )Nr  r  r   )sourcerI  s     r   rH  z-GenerateSchema._path_schema.<locals>.<lambda>*  s!    Hm77SY??Hm\dflHmHm r   r  )r  r  r   r  )r  r   r   rw  r   r  )osPathLiker   r  r8   is_anyrG   pathlibPurePathr1   bytes_schemar  r  rh  ri  r  union_schemar  )
r  r   r  strict_inner_schemalax_inner_schemar  r  instance_schemar   r  s
    ``      @r   _path_schemazGenerateSchema._path_schema  s   )C<"?"?H]^gHhHh"?#MTm    02R[/@/@7++b6?56H6HK$D1111{OemqOrOrOr 	 ;Du:L:L;3555S^SiSkSk	[ 	[ 	[ 	[ 	[ 	[ 	["	 	 	 	 	 	 &;#D^Ueff%8<<
 
 

 1"/#@Qdee #.%Jb%J%J   *%J8^bnvwww-0m0m/no
 
 
 r   c           	        ddl m} ddlm} |                     |          }t          j        |d          }t          j        |t          j        t          j
        d                    }t          j        ||          }t          j        |t          j        ||g          t          j        ||d	
                    S )NrS   serialize_sequence_via_list)deque_validatorFr  Dequecls_reprr  Tr   r  r  r  r   )_serializersr  r  r  r1  r1   r0  r  ri  collectionsdequeno_info_wrap_validator_functionr  chain_schema#wrap_serializer_function_ser_schema)r  r.  r  r  item_type_schemar0  check_instancer  s           r   _deque_schemazGenerateSchema._deque_schema.  s    ======000000//
;; "-.>uMMM$:#%89JU\]]]
 
 

 !@R]^^
/!%2NJ3OPP%I+4Dt  
 
 
 	
r   c           	        ddl m}m}m} ||         }|                     |          }t          j                    5  t          j        dt                     |                     |          }	d d d            n# 1 swxY w Y   t          j
        ||	d          }
|t          u r|
}nt          j        |
t          j        |                    }|t          j        u r5 ||          }t!          t          j        t!          ||                    }nt!          t          j        |          } ||
          }t          j        ||g          }t          j        ||t          j        d	 |
d
                    }|S )NrS   )MAPPING_ORIGIN_MAPdefaultdict_validator'get_defaultdict_default_default_factoryignorecategoryFr  r  )default_default_factoryc                     ||           S r   r   )r   hs     r   rH  z0GenerateSchema._mapping_schema.<locals>.<lambda>o  s    1 r   r  r  )r  r  r  r  r1  r   catch_warningssimplefilterrR   r1   r7  r   r  ri  r  defaultdictr   r  rh  r  r  r  )r  r   r4  r5  r  r  r  mapped_originkeys_schemar   r7  r   r  r  coerce_instance_wrapr  r  s                    r   _mapping_schemazGenerateSchema._mapping_schemaG  s   ssssssssss*2.**955$&& 	> 	> !(5UVVVV 00==M	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> "-k=QVWWWD   FF(>')<]KK  N
 [,,,*Q*QR]*^*^''.?1Kbccc( ($$
 (/{/[]j'k'k$--k::J'4nj5QRRM 5%+)M%%kE    F s   1A88A<?A<c           	     
   ddl m} t          j        t          j        |          t          j        t          j        |          t          j        t                              t          j        d          dd gi          S )	z7Support for [`fractions.Fraction`][fractions.Fraction].rS   )fraction_validatorr  r  r   rR  c                    dddS )Nr  fractionr  r   r  r  s     r   rH  z1GenerateSchema._fraction_schema.<locals>.<lambda>  s    \f?g?g r   r  )	r  r  r1   r  r  r  ri  r   to_string_ser_schema)r  r  s     r   _fraction_schemazGenerateSchema._fraction_schemau  s    333333 /"CDVWW%;'HI[\\)<XFF  
 &:XNNN-0g0g/hi	
 	
 	
 		
r   c                    t          |t                    s0t          j        |dt                     t          j                    S t          j        |          S )Na   is not a Python type (it may be an instance of an object), Pydantic will allow any object with no validation since we cannot even enforce that the input is an instance of the given type. To get rid of this error wrap the type with `pydantic.SkipValidation`.)r}  r   r   r   rO   r1   r   ri  )r  r   s     r   _arbitrary_type_schemaz%GenerateSchema._arbitrary_type_schema  sd    "d## 	,M Z Z Z %   )+++-b111r   objc                (    t          d|d          )N,Unable to generate pydantic-core schema for a  . Set `arbitrary_types_allowed=True` in the model_config to ignore this error or implement `__get_pydantic_core_schema__` on your type to fully support it.

If you got this error by calling handler(<some type>) within `__get_pydantic_core_schema__` then you likely need to call `handler.generate_schema(<some type>)` since we do not call `__get_pydantic_core_schema__` on `<some type>` otherwise to avoid infinite recursion.)rE   r  r  s     r   _unknown_type_schemaz#GenerateSchema._unknown_type_schema  s.    +f3 f f f
 
 	
r   r   discriminatorstr | Discriminator | Nonec                    ||S 	 t          j        ||| j        j                  S # t           j        $ r t          j        ||           |cY S w xY wr   )rU   apply_discriminatorr  _definitionsMissingDefinitionForUnionRefset_discriminator_in_metadata)r  r   r  s      r   _apply_discriminator_to_unionz,GenerateSchema._apply_discriminator_to_union  s}      M	';	&  
 $@ 	 	 	 >   MMM	s   & &AAc                6    | j                             |          S r   )r  finalize_schema)r  r   s     r   clean_schemazGenerateSchema.clean_schema  s    y((000r   metadata_schemajs_functionCallable[..., Any]c                    |                     di           }|                    dg           }||vr|                    |           ||d<   d S )NrV  rR  )r   
setdefaultappend)r  r  r  rV  rR  s        r   _add_js_functionzGenerateSchema._add_js_function  s`    "&&z266 ( 3 34KR P P
 333!((555&.
###r   r   c                   |                      ||          }||                     |          }t          |          }|-t          || j                  }|r|                     ||           t          | j        j        ||          }|S )aX  Generate core schema.

        Args:
            obj: The object to generate core schema for.

        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__`.
        )	'_generate_schema_from_get_schema_method_generate_schema_inner!_extract_get_pydantic_json_schemaresolve_original_schemar  r  r  r'  r   )r  r  r   metadata_js_functionr  s        r   r1  zGenerateSchema.generate_schema  s    0 ==c3GG>0055F@EE+5fdiHHO M%%o7KLLL=d>R>`begmnnr   r#  type[BaseModel]c                    t                      } j                            |          5 \  }}||cddd           S |j                            d          }|t          |t                    sk|d         dk    r j                            |          }t          |          }|r& j        	                    |          cddd           S |cddd           S t          |j        d          } j                            |          5   j                            |          5   j                            |j                  }|j        s||u rt'          |di           }	nud|j        vrt)          |j        d	|j        d
          	 t+          | j         j         j        pi           }	n'# t.          $ r}
t)          j        |
          |
d}
~
ww xY w|j        j        }t7          t9          j                                        j                                        j                                                   h |	!                                |!                                           j"                                        }d}d}|                    d          dk    r/|j#        d         |u sJ |j#        d         tH          u sJ |j#        dd         D ]}t'          |di                               dd          }|t          |tJ                    r,tM          j'        tM          j(        |dd          g j)        R  }tU          |          }|tV          vrtY          d           -                    |d          \  }}|tJ          ur .                    |          }t_          j0        |          s .                    |          }|| nt'          |di                               d          }|j1        rl 2                    d|	d                   \  }}tg          ||d          }ti          j5        |||t'          |dd          dt'          |dd          ||          }nti          j6         fd|	7                                D              fd|                                D             |||j                   }tq          |j9                                                  }tg          ||d          }ti          j5        |||t'          |dd          dt'          |dd          ||          } :                    |j;                                                  }tg          ||d!          } j        	                    |          cddd           cddd           cddd           S # 1 swxY w Y   ddd           n# 1 swxY w Y   ddd           dS # 1 swxY w Y   dS )"z%Generate schema for a Pydantic model.N__pydantic_core_schema__r   definitionsF)checkr   __pydantic_fields__zClass z is not defined)namemessager  r  r  extra_fields_behaviorallowr   r   __annotations____pydantic_extra__T)is_argumentis_classzEThe type annotation for `__pydantic_extra__` must be `dict[str, ...]`required__pydantic_generic_metadata__originrootinner__pydantic_custom_init____pydantic_post_init__)generic_origincustom_init
root_model	post_initconfigrU  c                F    i | ]\  }}|                     ||          S r   )_generate_md_field_schemar   r   r   r   r  s      r   r   z0GenerateSchema._model_schema.<locals>.<dictcomp>X  s4    hhhQUQRTUD::1aLLhhhr   c                F    g | ]}                     |j                  S r   _computed_field_schemafield_serializersr   dr   r  s     r   r   z0GenerateSchema._model_schema.<locals>.<listcomp>Y  s<     ) ) ) ! !77:;WXX) ) )r   )computed_fieldsextras_schemaextras_keys_schema
model_nameouter)<ru   r  get_schema_or_ref__dict__r   r}  rw   unpack_definitionsr]   "create_definition_reference_schemarY   model_configr  pushr  r'  core_configr  __pydantic_fields_complete__r   rF   ro   r  	NameErrorfrom_name_error__pydantic_decorators__r'  r   r   field_validatorsra  r$  
validatorskeysmodel_validatorsr   objectr   rX   eval_type_backport_make_forward_refr*  r6   r   rE    _get_args_resolving_forward_refsr1  r8   r  __pydantic_root_model___common_field_schemaapply_model_validatorsr1   model_schemamodel_fields_schemar   r   root_validators_apply_model_serializersmodel_serializers)r  r#  
BaseModel_	model_refmaybe_schemar   rU  r  r2  r   r  r'  r:  r(  r)  candidate_clsextras_annotationr   extra_keys_typeextra_items_typer  r   rZ  rB  fields_schemar   s   `                        @r   _model_schemazGenerateSchema._model_schema  s   -//
Y((-- H	L1J)\'#H	L H	L H	L H	L H	L H	L H	L H	L \%%&@AAF!*V^*L*L!&>]22!Y99&AAFfoo "9GGOOH	L H	L H	L H	L H	L H	L H	L H	L "H	L H	L H	L H	L H	L H	L H	L H	L +3+;5IIIN+00@@ xL xL$BSBXBXY\B]B] xL xL"2>>S\>RR3 Tsj7H7H$S*?DDFF,CL@@ :!$$LS\$L$L$L   T!5+/+?(,(9)-);)Ar	" " " % T T T9I!LLRSST !8
","<,"3::<<"4;;=="-4466 
 >fkkmm=o&:&:&<&<=   $.#>#E#E#G#G  $%)"??#:;;wFF;q>S0000;r?f4444),SbS)9 & &,3MCTVX,Y,Y,],]0$- -) -8)*;SAA "4A4T$1$C(9uW[%& %& %&5" &*%:	5" 5" 5" 1 ",,=!>!>B!33&C$k'" '" !" AE@e@e 1)- Af A A=O-=  /c99595I5I/5Z5Z 2#1#89I#J#J W040D0DEU0V0V1=AZ %9@Fegi9j9j9n9now9x9x. %&*&?&?vXb&c&cOL!#9,HXZa#b#bL#.#;$'5$+C1KT$R$R#'")#/G"N"N*%	$ 	$ 	$LL =H<[hhhhhY_YeYeYgYghhh) ) ) ) )%4%;%;%=%=) ) ) '4+=#&<	= 	= 	=M $4M:C]CdCdCfCf#g#gL#9,HXZa#b#bL#.#;$'5$+C1KT$R$R#(")#/G"N"N*%	$ 	$ 	$L 66|ZEaEhEhEjEjkk/8H'RRyCCFKKqxL xL xL xL xL xL xL xL xL xL xL xL xL xL!H	L H	L H	L H	L H	L H	L H	L H	L xL xL xL xL xL xL xL xL xL xL xL xL xL xL xL xL xL xL xL xL xL xL xL!H	L H	L H	L H	L H	L H	L H	L H	L H	L H	L H	L H	L H	L H	L H	L H	L H	L H	Ls   W)BW)W)0W)W&A&V:$F21V:2
G	<G	G	N?V:W!W):V>>WV>WW)W	W)W	W))W-0W-c                ^    | j                                         }|t          dd          |S )Nz(`typing.Self` is invalid in this contextzinvalid-self-typer   )r  r   rG   r  s     r   _resolve_self_typez!GenerateSchema._resolve_self_types  s5    #''));#$NUhiiii
r   r  core_schema.CoreSchema | Nonec                .   t                      }t          |dd           }t          |dd           |j        j        u }||s| j                            |          5 \  }}||cd d d            S 	 d d d            n# 1 swxY w Y   ||u rd}nd} ||t          | j        | |                    }	|	d         dk    r| j                            |	          }	t          |	          }
|
r| j        
                    |	          S |	S |t          |dd           x}|d	d
lm} t          ||          r$t          j        d|j         dt"                     nt          j        dt$                     t'          j        d  |            D                       S d S d S )N__get_pydantic_core_schema__rQ  unpackzto-def)ref_moder   r  __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.c                6    g | ]}t          j        |          S r   r1   "with_info_plain_validator_functionr   r   s     r   r   zJGenerateSchema._generate_schema_from_get_schema_method.<locals>.<listcomp>  s%    ,u,u,ucd[-[\]-^-^,u,u,ur   )ru   r   rT  rQ  r  r,  r|   r  r.  r]   r/  pydantic.v1r   rd  r   r   r  r"  rP   r1   r  )r  r  r  rG  
get_schemais_base_model_get_schemarZ  rI  rV  r   rU  r8  BaseModelV1s                r   r  z6GenerateSchema._generate_schema_from_get_schema_methody  sb   -//
S"@$GG
J
D11Z5\5ee 	!
 " - # ,,S11 (5Fa+'( ( ( ( ( ( ( (+( ( ( ( ( ( ( ( ( ( ( ( ( ( ( f}}##Z4T5PRVaijjj F f~..55f==&//C LyCCFKKK M>RTX1Y1Y#Y:"f<<<<<<#{++ 	 S|  }I  S  S  S   
 y-   +,u,uhrhrhtht,u,u,uvvv "f"fs   A<<B B c                   	 t          j        |g| j        R  }n'# t          $ r}t	          j        |          |d }~ww xY wt          |t                    rt	          |j        d|           | j	        rt          || j	                  }|S )Nz%Unable to evaluate forward reference )rX   r<  r*  r4  rF   r5  r}  r"   __forward_arg__r  rt   )r  r  r  s      r   _resolve_forward_refz#GenerateSchema._resolve_forward_ref  s    	H23O9NOOOCC 	H 	H 	H-=a@@aG	H c:&& 	r-c.ACpknCpCpqqq 	9T%788C
s    
>9>r  Literal[True]tuple[Any, ...]c                    d S r   r   )r  r  r  s      r   r>  z/GenerateSchema._get_args_resolving_forward_refs  s    fifir   tuple[Any, ...] | Nonec                    d S r   r   r  s     r   r>  z/GenerateSchema._get_args_resolving_forward_refs  s    TWTWr   Fc                     t          |          }|r=t          |t                    rd |D             }t           fd|D                       }n|rt	          d| d          |S )Nc              3  l   K   | ]/}t          |t                    rt          j        |          n|V  0d S r   )r}  r   rX   r=  )r   as     r   	<genexpr>zBGenerateSchema._get_args_resolving_forward_refs.<locals>.<genexpr>  sC      ff\]jC>P>PW7:::VWffffffr   c              3  p   K   | ]0}t          |t                    r                    |          n|V  1d S r   )r}  r"   rb  )r   rj  r  s     r   rk  zBGenerateSchema._get_args_resolving_forward_refs.<locals>.<genexpr>  sG      hh^_Az9R9RY221555XYhhhhhhr   z	Expected z+ to have generic parameters but it had none)r5   r}  r   r   r   )r  r  r  argss   `   r   r>  z/GenerateSchema._get_args_resolving_forward_refs  s    }} 	Z#|,, gffaefffhhhhcghhhhhDD 	ZXXXXYYYr   c                N    |                      |          }|st          S |d         S )Nr   )r>  r   )r  r  rm  s      r   _get_first_arg_or_anyz$GenerateSchema._get_first_arg_or_any  s+    44S99 	JAwr   tuple[Any, Any]c                    |                      |          }|st          t          fS t          |          dk     r"t          |          }t	          d| d          |d         |d         fS )Nr<   z Expected two type arguments for z, got 1r   rS   )r>  r   lenr6   r   )r  r  rm  r  s       r   _get_first_two_args_or_anyz)GenerateSchema._get_first_two_args_or_any  sn    44S99 	:t99q==__FNvNNNOOOAwQr   c                   t          j        |          r|                     |          }t          j        t	          |                    r|                     |          S t          |t                    r|S t          |t                    rt          |          }t          |t                    r(| 
                    |                     |                    S t                      }t          ||          rG| j                            |          5  |                     |          cd d d            S # 1 swxY w Y   t          |t"                    rt%          j        |j                  S |                     |          S )N)
schema_ref)r8   is_selfrQ  is_annotatedr6   _annotated_schemar}  r   r   r"   r1  rb  ru   r}   r  r1  rO  rr   r1   definition_reference_schematype_ref
match_type)r  r  r   s      r   r  z%GenerateSchema._generate_schema_inner  s   !#&& 	/))#..C&z#77 	/))#...c4   	Jc3 	"S//Cc:&& 	H''(A(A#(F(FGGG,..	c9-- 	/&++C00 / /))#../ / / / / / / / / / / / / / / / c/00 	T:clSSSSs###s   D22D69D6c                   |t           u rt          j                    S |t          u rt          j                    S |t
          u rt          j                    S |t          u rt          j                    S |t          u rt          j
                    S |t          u rt          j                    S t          j        |          s	|t          u rt          j                    S |t"          j        u rt          j                    S |t"          j        u rt          j                    S |t"          j        u rt          j                    S |t"          j        u rt          j                    S |t2          u rt          j                    S |t6          u rt          j                    S |t:          u rt          j                    S |t>          u r|                                  S |tB          u rt          j"                    S ||tF          j$        u rt          j%                    S |tL          u rt          j'                    S |tP          v r| )                    |          S |tT          v r| +                    |          S |tX          v r| -                    t\                    S |t^          v r| 0                    t\                    S |tb          v r| 2                    t\                    S |tf          v r| 4                    t\                    S |tj          v r| 6                    |          S |tn          v r | 8                    t\          t\                    S |tr          v r| :                    |t\                    S |tv          v r| <                    t\                    S |tz          v r!| >                    |t\          t\                    S |t~          v r!| >                    |t\          t
                    S t          j@        |          r| A                    |          S |t          u r| C                                S tG          jD        |          rt          jE                    S t          jF        t          |                    r| H                    |          S t          |          r| J                    |d          S tG          jK        |          r| L                    |d          S t          jM        |          r| N                    |jO                  S |t          v r| Q                    |          S tG          jR        |          r| S                                S t          |t          jV                  r| W                    |          S tG          jX        |          rD|t          u rt          j                    S | N                    | Z                    |                    S t          |t                    r| \                    |          S t          j^        |          r*t          |t                    r| a                    |          S |t          u r| c                                S t          je        |          r| f                    |d          S t          |          }|| g                    ||          S | jh        r| i                    |          S | j                    |          S )a  Main mapping of types to schemas.

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

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

        The idea is that we'll evolve this into adding more and more user facing methods over time
        as they get requested and we figure out what the right API for them is.
        N)kr   r1   r  r  r  rC  
int_schemarD  float_schemar   bool_schemacomplexcomplex_schemar8   r  r;  r   datetimedatedate_schemadatetime_schematimetime_schema	timedeltatimedelta_schemar   decimal_schemar(   uuid_schemar0   
url_schemar   r  r,   multi_host_url_schemarX   NoneTypenone_schemar*   missing_sentinel_schemar   r  r   _tuple_schemar   r3  r   r   r;  r   r>  r   _sequence_schemar   _iterable_schemar   r8  r   r  r   r  MAPPING_TYPESr  COUNTER_TYPESis_typealiastype_type_alias_type_schemar   _type_schemais_callablecallable_schema
is_literalr6   _literal_schemar7   _typed_dict_schemais_namedtuple_namedtuple_schema
is_newtyper1  __supertype__r   _pattern_schemais_hashable_hashable_schemar}  typingr$   _unsubstituted_typevar_schemais_finalvarr!   ro  VALIDATE_CALL_SUPPORTED_TYPES_call_schemarb  isclassrd  r   rl  r)   _zoneinfo_schemadataclassesis_dataclass_dataclass_schema_match_generic_typer-  r  r  )r  r  r  s      r   r{  zGenerateSchema.match_type  s-    #::)+++E\\+---CZZ)+++E\\+---D[[*,,,G^^-///"3'' 	-3&==)+++HM!!*,,,H%%%.000HM!!*,,,H&&&/111G^^-///D[[*,,,CZZ)+++H__((***L  4666[C=#999*,,,'>>6888H__??3'''K%%c***J$$S)))I##C((($$$))#...N""((---N""((---J$$S#...J$$S#...K%%c***M!!''S#666M!!''S#666,S11  	+//444D[[$$&&&&s++ 	+.000&z#77 	+'',,,# 	+**3555(-- 	+**3555&s++ 	+''(9:::M!!'',,,&s++ 	+((***V^,, 	+55c:::&s++ 	+e||"-///''**3//   :;; 	+$$S)))_S!! 	+jd&;&; 	+$$S)))H__((*** #C(( 	5))#t444C++C888  	4..s333((---r   r  c                r   t          j        |          r|                     ||          S t          j        |          r|                     ||          S |                     ||          }||S t          j        |          r| 	                    |          S t          |          r|                     |          S |t          v r|                     |          S |t          v r(|                     |                     |                    S |t"          v r(|                     |                     |                    S |t&          v r(|                     |                     |                    S |t*          v r | j        |                     |           S |t0          v r)|                     ||                     |                    S |t4          v r(|                     |                     |                    S |t8          v r! | j        |g|                     |          R  S |t<          v r/|                     ||                     |          t>                    S tA          |          r| !                    ||          S |tD          v r| #                    |          S |tH          v r(| %                    |                     |                    S |tL          v r| '                    |          S |tP          v r| )                    |          S | j*        r| +                    |          S | ,                    |          S r   )-r  r  r  rX   r  r  r  r8   r  r  r;   _union_schemar   r  r   r3  ro  r   r;  r   r>  r   r8  rs  r   r  r   r  r  r  r  rC  r7   r  r   _subclass_schemar   r  r   r  r   r  r-  r  r  )r  r  r  r   s       r   r  z"GenerateSchema._match_generic_type~  s7   
 #F++ 	7))#v666&v.. 	8**3777==fcJJM*622 	-//444V$$ 	-%%c***{""%%c***z!!$$T%?%?%D%DEEEy  ##D$>$>s$C$CDDD'''))$*D*DS*I*IJJJz!!$4$d&E&Ec&J&JKKz!!$$VT-G-G-L-LMMM{""%%d&@&@&E&EFFF}$$'4'V1P1PQT1U1UVVVV}$$''0J0J30O0OQTUUU&!! 		-**3777z!!((---~%%(()C)CC)H)HIII~%%((---}$$'',,,  	7..v666((---r   Tr  r  r   
field_infor   r   ra   core_schema.TypedDictFieldc          	         |                      |||          \  }}t          j        ||                                sdn||j        t          |j                  |j        |j        |          S )zAPrepare a TypedDictField to represent a model or typeddict field.F)r  serialization_excluder   r   serialization_exclude_ifrV  )	r@  r1   typed_dict_fieldis_requiredr   _convert_to_aliasesr   r   
exclude_if)r  r  r  r   r  r   rV  s          r   _generate_td_field_schemaz(GenerateSchema._generate_td_field_schema  sx      44T:zRR+","8"8":":HUU","401LMM * >%/%:
 
 
 	
r   core_schema.ModelFieldc           	         |                      |||          \  }}t          j        ||j        t	          |j                  |j        |j        |j        |          S )z0Prepare a ModelField to represent a model field.)r  r   r   r  r   rV  )	r@  r1   model_fieldr   r  r   r   r  r   r  r  r  r   r   rV  s         r   r  z(GenerateSchema._generate_md_field_schema  sf      44T:zRR&","401LMM * >%/%:$
 
 
 	
r   core_schema.DataclassFieldc                    |                      |||          \  }}t          j        |||j        |j        pd|j        rdnd|j        t          |j                  |j	        |j
        |j        |          S )zJPrepare a DataclassField to represent the parameter/field, of a dataclass.NF)	r   	init_onlyr   r  r   r   r  r   rV  )r@  r1   dataclass_fieldr   r   r   r   r  r   r   r  r   r  s         r   _generate_dc_field_schemaz(GenerateSchema._generate_dc_field_schema  s      44T:zRR* )1T&.9DDE","401LMM * >%/%:$
 
 
 	
r   !tuple[CoreSchema, dict[str, Any]]c                p    j         j        }}d fd}d t          |j                                        |          D             } j                            |          5  j                             |||z   |          }n                     |||z             }d d d            n# 1 swxY w Y   t          |j	                                        |          }	t          |	          rd_        d |	D             fd	|	D             }	t          |          }t          ||	          }                                st          |          }                     |t          |j                                        |                    }t%                    \  }
}i }t'          ||
|
           ||fS )Nr   r+   r   c                >                         | j                  } | S r   )r  r  )r   r  r  s    r   set_discriminatorz>GenerateSchema._common_field_schema.<locals>.set_discriminator  s     77
@XYYFMr   c                b    g | ],}t           |j        j                                     |          -S r   )r   r   r~  _from_decorator)r   	decorators     r   r   z7GenerateSchema._common_field_schema.<locals>.<listcomp>  s@     &
 &
 &
 y~23CCINN&
 &
 &
r   )transform_inner_schemaTc                .    g | ]}|j         j        d u |S T)r   	each_itemr[  s     r   r   z7GenerateSchema._common_field_schema.<locals>.<listcomp>  s(    ]]]aAFDTX\D\D\D\D\D\r   c                    g | ]}|v|	S r   r   )r   r   r   s     r   r   z7GenerateSchema._common_field_schema.<locals>.<listcomp>  s$     c c cqQNbEbEbEbEbEbr   pydantic_js_updatespydantic_js_extrar   r+   r   r+   )
annotationrV  r   r7  ra  r  r1  r  _apply_annotationsr8  $_validators_require_validate_defaultr   r   r   r  wrap_default_apply_field_serializersr$  r   r\   )r  r  r  r   source_typer   r  validators_from_decoratorsr   this_field_validatorsr  r  core_metadatar   s   ` `          @r   r@  z#GenerateSchema._common_field_schema  sf    $.#8*:M[	 	 	 	 	 	 	
&
 &
A*B]BdBdBfBfhlmm&
 &
 &
"
 "''-- 		 		'300/I!Ibs 1   00"<< 		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 !EZEZEaEaEcEcei j j/0EFF 	/*.J']]+@]]] c c c c,A c c c+F4HII!&*?@@
 %%'' 	6!*f55F..89U9\9\9^9^`dee
 
 2[[e1f1f..(*/BVg	
 	
 	
 	
 }$$s   $=B--B14B1
union_typec                ,   |                      |d          }g }d}|D ]=}||t          j        u rd}|                    |                     |                     >t          |          dk    r	|d         }ng }|D ]m}t          t          |                    di                                         d          }	|	|                    ||	f           X|                    |           nt          j
        |          }|rt          j        |          }|S )	zGenerate schema for a Union.Tr  FNrS   r   rV  pydantic_internal_union_tag_key)r>  rX   r  r  r1  rr  r&   r[   r   r1   r  nullable_schema)
r  r  rm  choicesr   argschoices_with_tagschoicetags
             r   r  zGenerateSchema._union_schema&  s1   44Z$4OO$& 	: 	:C{c]%;;;t33C889999w<<1
AAKM! 5 5<J)C)CDDHHIjkk?%,,fc];;;;%,,V4444():;;A 	/+A..Ar   r4   c                b   | j                             |          5 \  }}||cd d d            S t          |          p|}t          |          }| j                            |          5  	 t          j        |j        g| j	        R  }n'# t          $ r}t          j        |          |d }~ww xY wt          ||          }|                     |          }|d         dk    sJ ||d<   d d d            n# 1 swxY w Y   | j                             |          cd d d            S # 1 swxY w Y   d S )Nr   r  rU  )r  r,  r6   rs   r  r1  rX   	eval_type	__value__r*  r4  rF   r5  rt   r1  r/  )	r  r  rU  rI  r  r  r  r  r   s	            r   r  z&GenerateSchema._type_alias_type_schemaA  s   Y((-- 	H1D#|'#	H 	H 	H 	H 	H 	H 	H 	H %/sOO$:sF4S99L"''// $ $P!.!89I!bDLa!b!b!bJJ  P P P5EaHHaOP*:|DD
--j99f~6666 #u$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ 9??GG!	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	Hs^   D$:D$)C3+BC3
B,B''B,,;C3'D$3C7	7D$:C7	;D$$D(+D(literal_typec                    t          t          |dd                    }|sJ d|             t          j        |          }| j        j        r/t          d |D                       rt          j        d |          }|S )zGenerate schema for a Literal.Feager)
type_checkunpack_type_aliasesz(literal "expected" cannot be empty, obj=c              3  @   K   | ]}t          |t                    V  d S r   )r}  r   r[  s     r   rk  z1GenerateSchema._literal_schema.<locals>.<genexpr>Z  s-      7^7^PQ
1d8K8K7^7^7^7^7^7^r   c                >    t          | t                    r| j        n| S r   )r}  r   rW  )r   s    r   rH  z0GenerateSchema._literal_schema.<locals>.<lambda>\  s    Z4%8%8?!''a r   )r_  r:   r1   literal_schemar'  rg  anyrh  )r  r  expectedr   s       r   r  zGenerateSchema._literal_schemaT  s    *<E_fggghhRRRLRRRRR+H55/ 	C7^7^U]7^7^7^4^4^ 	 A?? F r   typed_dict_clsc                	    t                      } j                            |          5   j                            |          5 \  }}||cddd           cddd           S t          |          }||}t          s)t          |          j        dk    rt          dd          	 t          |d          }n# t          $ r d}Y nw xY w j                            |          5   j                            |j                  }|j        }	i }
t#          j        |                               j                    j        j        rt+          |d	          }nd}	 t-          j        | j        
          }n'# t2          $ r}t5          j        |          |d}~ww xY wg }|                                D ]\  }} |j        |t<          j                  }tA          |j!        |          |_!        ||	v pd|j"        v od|j"        v}d|j"        v r|#                    |           ||j$        ||v r||         |_$        tK           j        ||            &                    |||          |
|<   |rfd'                    d |D                       }tQ          |          dk    }tS          j*        d|rdnd d| d|j        d|rdnd d	tV                     d}d}tY          t[          |dd                    }t[          |dt\          j/                  }|rd}d}n9ta          j1        |          s%d } 2                    tA          ||                    } j        j3        x}d!v rn|r+|d k    r%tS          j*        d"|j4        d#tj          $           nAta          j1        |          s+|dk    r%tS          j*        d"|j4        d%tj          $           n|}tm          j7        |
| fd&j8        9                                D             ||||'          } :                    |j;        9                                          }ty          |j=        9                                d(          } j        >                    |          cddd           cddd           cddd           S # 1 swxY w Y   	 ddd           n# 1 swxY w Y   ddd           dS # 1 swxY w Y   dS ))a,  Generate a core schema for a `TypedDict` class.

        To be able to build a `DecoratorInfos` instance for the `TypedDict` class (which will include
        validators, serializers, etc.), we need to have access to the original bases of the class
        (see https://docs.python.org/3/library/types.html#types.get_original_bases).
        However, the `__orig_bases__` attribute was only added in 3.12 (https://github.com/python/cpython/pull/103698).

        For this reason, we require Python 3.12 (or using the `typing_extensions` backport).
        Nr  zXPlease use `typing_extensions.TypedDict` instead of `typing.TypedDict` on Python < 3.12.ztyped-dict-versionr   __pydantic_config__r  T)use_inspectr  _sourcer  not_required	read_onlyr  , c              3  4   K   | ]}t          |          V  d S r   r   )r   fs     r   rk  z4GenerateSchema._typed_dict_schema.<locals>.<genexpr>  s(      +M+MDGG+M+M+M+M+M+Mr   r<   Itemr  r    z on TypedDict class areiszk using the `ReadOnly` qualifier. Pydantic will not protect items from any mutation on dictionary instances.r  
__closed__F__extra_items__forbidr  )r  r	  zTypedDict class zk is closed, but 'extra' configuration is set to `'allow'`. The 'extra' configuration value will be ignored.r  zu allows extra items, but 'extra' configuration is set to `'forbid'`. The 'extra' configuration value will be ignored.c                F    g | ]}                     |j                  S r   r"  r%  s     r   r   z5GenerateSchema._typed_dict_schema.<locals>.<listcomp>  <     % % % 33Az7STT% % %r   )r#  r'  extra_behaviorr(  rU  r  all)?rv   r  r1  r  r,  rs   _SUPPORTS_TYPEDDICTr   r  rG   rh   AttributeErrorr  r'  r2  r  __required_keys__ra   buildupdate_from_configuse_attribute_docstringsrl   rX   get_cls_type_hintsr  r4  rF   r5  r   from_annotationr9   
TYPED_DICTrt   r  _qualifiersr  r   rq   r  joinrr  r   r   r"  r   r   typing_extensionsNoExtraItemsr8   is_noextraitemsr1  extrar	  rQ   r1   typed_dict_schemar'  ra  rE  rF  rA  r:  r/  )r  r  r  r   typed_dict_refrI  r  r  r2  required_keysr   field_docstringsr   r  readonly_fields
field_namer  r  r  fields_reprpluralr  r(  	is_closedextra_itemsconfig_extra	td_schemar   r   s   `                           @r   r  z!GenerateSchema._typed_dict_schemaa  s    -..	 !&&~66}	L }	LI''77}	L< '#}	L }	L }	L }	L }	L }	L }	L }	L }	L }	L }	L }	L }	L }	L }	L 5^DDL!!'& 4+?+?+Jh+V+V'n-   
 -E^Uj,k,k!    +0088 bL bL"2>>^E\>]]0>0P@B+1.AA
--d.BCCC'@ ,'B>_c'd'd'd$$'+$P"/"B>_c_p"q"q"qKK  P P P5EaHHaOP .0.9.?.?.A.A  *J
!:!::O_Oj!k!k!kJ,9*:OQ],^,^J) #m3[zZE[7[ G(
0FF  #j&<<<'..z::: )4&2:&*:::1A*1M
.,T-A:zZZZ)-)G)G"J
X *H * *F:&& # "&))+M+M_+M+M+M"M"MK 11Q6FMEf4ss" E E{ E EXfXo E E$*455E E E $	   =E37 !u!M!MNN	%n6GIZIghh c%-N$(MM'7DD c%,N$($8$8{T`9a9a$b$bM$($8$>>LCVVV  6\W%<%< d~/J d d d%@    
 ,;KHH 6\]eMeMe e~/J e e e%@     *6'9&% % % % %!+!;!B!B!D!D% % % $2"/&&  	 66y*B^BeBeBgBghh/
8S8Z8Z8\8\^cddyCCFKKEbL bL bL bL bL bL bL7}	L }	L }	L }	L }	L }	L }	L }	L }	L }	L }	L }	L }	L }	L }	L6bL bL bL bL bL bL bL bL bL7}	L }	L }	L }	L }	L }	L }	L }	L }	L }	L }	L }	L }	L }	L }	L }	L }	L }	L }	L }	L }	L }	L }	L }	L }	L }	L }	L }	L }	L }	L }	L }	L }	Ls   SSS&AS*B;:S;C
S	C

S'A8R* E<;R*<
F 	F	F 	 K%R*SS*R..S1R.2S6SS	S	S	
SS!Snamedtuple_clsc                <   	  j                                       5   j                                      5 \  }}||cddd           cddd           S t	                    	||	 t          j         j                  }n'# t          $ r}t          j
        |          |d}~ww xY w|s%t                              j        t                    }	r 	fd|                                D             }t!          j         fd|                                D             ddi          }t!          j        ||          } j                            |          cddd           cddd           S # 1 swxY w Y   ddd           dS # 1 swxY w Y   dS )	z!Generate schema for a NamedTuple.Nr  c                8    i | ]\  }}|t          |          S r   rt   )r   r"  r  r  s      r   r   z5GenerateSchema._namedtuple_schema.<locals>.<dictcomp>  s9       .
J j, G G  r   c                    g | ]K\  }}                     ||t          j        j                            |t
          j                             LS ))r  r   )_generate_parameter_schemar9   NAMED_TUPLE_field_defaultsr   r   empty)r   r"  r  r)  r  s      r   r   z5GenerateSchema._namedtuple_schema.<locals>.<listcomp>
  sh        /
J 33""/; . > B B:y _ _	 4    r   'pydantic_js_prefer_positional_argumentsTr^  )rU  )r  r1  r  r,  rs   rX   r  r  r4  rF   r5  r   fromkeys_fieldsr   r   r1   arguments_schemacall_schemar/  )
r  r)  r  namedtuple_refrI  r   r  r5  r   r  s
   ``       @r   r  z!GenerateSchema._namedtuple_schema  s    !&&~66(	H (	HI''77(	H< '#(	H (	H (	H (	H (	H (	H (	H (	H (	H (	H (	H (	H (	H (	H (	H 5^DDL!!'L+>~[_[lmmm L L L1A!DD!KL Y.2mmN<RTW.X.X    2=2C2C2E2E  
  +;     3>2C2C2E2E   DTJ      !,-=~SabbbF9??GGQ(	H (	H (	H (	H (	H (	H (	H (	H (	H (	H (	H (	H (	H (	H (	H (	H (	H (	H (	H (	H (	H (	H (	H (	H (	H (	H (	H (	H (	H (	H (	H (	H (	H (	H (	H (	H (	H (	H (	H (	H (	Hse   FE9 FE9-B	E9	
B-B((B--B3E9 F9E=	=F E=	FFFr  	type[Any]r9   r   r~  JLiteral['positional_only', 'positional_or_keyword', 'keyword_only'] | Nonecore_schema.ArgumentsParameterc                   t                      }|t          j        u r |j        ||          }n |j        |||          }|j        
J d            t          | j        ||           | j        	                    |          5  | 
                    |j        |gd          }ddd           n# 1 swxY w Y   |                                st          ||          }t          j        |||t          |j                            }	|	S )zGenerate the definition of a field in a namedtuple or a parameter in a function signature.

        This definition is meant to be used for the `'arguments'` core schema, which will be replaced
        in V3 by the `'arguments-v3`'.
        r  Nz<field.annotation should not be None when generating a schemaF'check_unsupported_field_info_attributes)r~  r   )rv   r   r1  r  from_annotated_attributer  rq   r'  r  r1  r  r  r  r1   arguments_parameterr  r   )
r  r  r  r  r   r~  r   r   r   parameter_schemas
             r   r.  z)GenerateSchema._generate_parameter_schema  sn    -..	io%%-I-j&IIIEE6I6z7TZ[[[E++-k+++ !5tUCCC"''-- 	 	,,  9> -  F	 	 	 	 	 	 	 	 	 	 	 	 	 	 	   "" 	1!%00F&:%e&<==	
 
 
  s   B//B36B3Literal['positional_only', 'positional_or_keyword', 'keyword_only', 'var_args', 'var_kwargs_uniform', 'var_kwargs_unpacked_typed_dict'] core_schema.ArgumentsV3Parameterc                   t                      }|t          j        u r |j        ||          }n |j        |||          }t          | j        ||           | j                            |          5  | 	                    |j
        |gd          }ddd           n# 1 swxY w Y   |                                st          ||          }t          j        |||t          |j                            }	|	S )zGenerate the definition of a parameter in a function signature.

        This definition is meant to be used for the `'arguments-v3'` core schema, which will replace
        the `'arguments`' schema in V3.
        r  Fr<  N)r  r   r~  r   )rv   r   r1  r  r>  rq   r'  r  r1  r  r  r  r  r1   arguments_v3_parameterr  r   )
r  r  r  r  r~  r   r   r   r   r@  s
             r   _generate_parameter_v3_schemaz,GenerateSchema._generate_parameter_v3_schemaE  sV   ( -..	io%%-I-j&IIIEE6I6z7TZ[[[E !5tUCCC"''-- 	 	,,  9> -  F	 	 	 	 	 	 	 	 	 	 	 	 	 	 	   "" 	1!%00F&=%e&<==	
 
 
  s   3BB"%B"
tuple_typec                    t          |                               |          }r|rt          fd|D                       }|sE|t          v r(t	          j        t	          j                    gd          S t	          j        g           S |d         t          u rRt          |          dk    r0t	          j         	                    |d                   gd          S t          d          t          |          dk    r |d         dk    rt	          j        g           S t	          j         fd	|D                       S )
zIGenerate schema for a Tuple, e.g. `tuple[int, str]` or `tuple[int, ...]`.c              3  8   K   | ]}t          |          V  d S r   r,  )r   paramr  s     r   rk  z/GenerateSchema._tuple_schema.<locals>.<genexpr>~  s-      RR%===RRRRRRr   r   )r   r   r<   z&Variable tuples can only have one typerS   r   c                :    g | ]}                     |          S r   )r1  )r   rI  r  s     r   r   z0GenerateSchema._tuple_schema.<locals>.<listcomp>  s'    ,],],]UT-A-A%-H-H,],],]r   )rs   r>  r   r   r1   tuple_schemar   Ellipsisrr  r1  
ValueError)r  rF  paramsr  s   `  @r   r  zGenerateSchema._tuple_schemaw  sY    1<<66zBB 	SF 	SRRRR6RRRRRF  	_[(("/1G1I1I0J`abbbb #/333BZ8##6{{a"/1E1EfQi1P1P0Qghiiii !!IJJJ[[A&)r// +B///+,],],],]V\,],],]^^^r   c                ^    t          j        t          j        t                    dd          S )Nis_typezInput should be a typer  )r1   custom_error_schemari  r   r&  s    r   r  zGenerateSchema._type_schema  s0    .*400'!9
 
 
 	
r   c                j    ddl m} dd gi}t          j        |t          j                    |          S )z/Generate schema for a zone_info.ZoneInfo objectrS   )validate_str_is_valid_iana_tzrR  c                    dddS )Nr  zoneinfor  r   r  s     r   rH  z1GenerateSchema._zoneinfo_schema.<locals>.<lambda>  s    hZd=e=e r   r   rV  )r  rS  r1   r  r  )r  rS  rV  s      r   r  zGenerateSchema._zoneinfo_schema  sQ    >>>>>>+.e.e-fg;)%:<<
 
 
 	
r   c                r                           |d          }t          j         fd|D                       S )z*Generate schema for `type[Union[X, ...]]`.Tr  c                P    g | ]"}                     t          |                   #S r   r1  r   )r   rm  r  s     r   r   z<GenerateSchema._union_is_subclass_schema.<locals>.<listcomp>  s+    ([([([d)=)=d4j)I)I([([([r   )r>  r1   r  )r  r  rm  s   `  r   _union_is_subclass_schemaz(GenerateSchema._union_is_subclass_schema  sB    44Z$4OO'([([([([VZ([([([\\\r   type_c           
     x                          |          }t          j        |          p|}t          j        |          r                                 S t          j        |          r%                     t          |j	                           S t          j
        |          r|j        rTt          t          |j                            r                     |j                  S t          j        |j                  S |j        r%t          j         fd|j        D                       S                                  S t          t          |                    r                     |          S t          j        |          r                     |          }t          j        |          r7t-          d|dt/          j        t          |                     dd          t3          j        |          s2|t          j        t          j                  S t9          d|          t          j        |          S )z-Generate schema for a type, e.g. `type[int]`.c                P    g | ]"}                     t          |                   #S r   rY  )r   cr  s     r   r   z3GenerateSchema._subclass_schema.<locals>.<listcomp>  s,    0s0s0sST1E1Ed1g1N1N0s0s0sr   z`Subscripting `type[]` with an already parametrized type is not supported. Instead of using type[z], use type[z].Nr   zExpected a class, got )ro  rX   annotated_typer8   r  r  r  r1  r   r  
is_typevar	__bound__r;   r6   rZ  r1   is_subclass_schema__constraints__r  rv  rQ  is_generic_aliasrG   rW   display_as_typerb  r  r  r   )r  r[  
type_params   `  r   r  zGenerateSchema._subclass_schema  sE   //66
 #1*==K
 ,, 	>$$&&&,Z88 	>''Z-A(BCCC&z22 	># +":j.B#C#CDD P99*:NOOO"5j6JKKK+ +"/0s0s0s0sXbXr0s0s0sttt((***Z
3344 	>11*===%j11 A!44Z@@
-j99 'y-7y yGLG\]ghr]s]sGtGty y y   
 ?:.. I %&9-:PQQQ G G GHHH1*===r   c                   ddl m} |                     |          }t          j        |          }t          |          }t          j        t          j        d          }t          j
        |          s/ddlm} t          j        |t          j        ||          g          }t          j        ||d          }t          j        |||          S )	z5Generate schema for a Sequence, e.g. `Sequence[int]`.rS   r  Sequencer  )sequence_validatorTr  )rM  r  r   )r  r  r1  r1   r0  r~   ri  r  rh  r8   r  r  ri  r  r  r  r  )	r  r.  r  r  r0  rM  r  ri  r   s	            r   r  zGenerateSchema._sequence_schema  s    ======//
;;!-.>??$[11#6vQ[\\\$Z00 	777777'4 KL^`k l lm M $G'0@4
 
 
 0#=P]
 
 
 	
r   core_schema.GeneratorSchemac                z    |                      |          }t          j        |                     |                    S )z$Generate a schema for an `Iterable`.)ro  r1   generator_schemar1  )r  r[  	item_types      r   r  zGenerateSchema._iterable_schema  s4    ..u55	+D,@,@,K,KLLLr   pattern_typec                   ddl m} dd gi}t          j        t	          d          dt          j                              }|t          j        u s|t          j        u rt          j	        |j
        ||          S |                     |d	
          d         }|t          u rt          j	        |j        ||          S |t          u rt          j	        |j        ||          S t!          d|d          )NrS   )r  rR  c                    dddS )Nr  regexr  r   r  s     r   rH  z0GenerateSchema._pattern_schema.<locals>.<lambda>  s    hZa=b=b r   patternr   )r   return_schemarV  Tr  r   r  r   )r   r  r1   r  r   r  r  Patternrer  pattern_either_validatorr>  r   pattern_str_validatorr  pattern_bytes_validatorrE   )r  rn  r  rV  serrI  s         r   r  zGenerateSchema._pattern_schema  s<   !!!!!!+.b.b-cd>y!!V;CYC[C[
 
 
 6>))\RZ-G-G?4CRZ    55 6 
 
  C<<?1x    e^^?33QY    00p_k0p0p0pqqqr   c           
     &   t          j        t          j        t          j        t          j                    t          j        t          j        j                  g          t          j        t          j        j                            dd          S )Nr  r  zInput should be hashable)r   r  r  )	r1   rQ  r  r  r   ri  r  abcHashabler&  s    r   r  zGenerateSchema._hashable_schema  s    .4'4 +--{/MkoNf/g/gh  *<[_=UVV	   ,!;	
 	
 	
 		
r   	dataclasstype[StandardDataclass]type[StandardDataclass] | Nonec                	     j                             |          5   j                            |          5 \  }}||cddd           cddd           S |j                            d          }|t          |t                    s|d         dk    r j                            |          }t          |          }|r2 j        
                    |          cddd           cddd           S |cddd           cddd           S t          |          }||}t          |dd          }ddlm}	  j                            |          5   j                            |          5   |	|          r|                                rPd |j                                        D             }
|r*|
                                D ]} |j        |g j        R   n_	 t/          | j         j        |pi 	          }
n># t2          $ r}t5          j        |          |d}~ww xY wt9          || j        
          }
 j        j        dk    r8|
                                D ]#\  }}|j        du rt?          d| dd          $|j                            d          .tA          j!        |          "                     j                   tG           fd|
                                D             d           }tI          |d          }tI          |d          }tK          j&        |j'        | fdj(                                        D             |          }tS          |j*                                                  }j+                                        }tY          ||d          } j        -                    |j'                  }tK          j.        |||||d t          j/        |          D             || j        j0        j1        	  	        } 2                    |j3                                                  }tY          ||d          } j        
                    |          cddd           cddd           cddd           cddd           S # 1 swxY w Y   ddd           n# 1 swxY w Y   ddd           n# 1 swxY w Y   ddd           dS # 1 swxY w Y   dS )z Generate schema for a dataclass.Nr  r   r  r  r<   )is_pydantic_dataclassc                4    i | ]\  }}|t          |          S r   r	   )r   f_namer  s      r   r   z4GenerateSchema._dataclass_schema.<locals>.<dictcomp>B  s3     " " "9KFD$4$4" " "r   r
  )r  r  r  FzField zd has `init=False` and dataclass has config setting `extra="allow"`. This combination is not allowed.z dataclass-init-false-extra-allowr   r6  c              3  L   K   | ]\  }}                     ||          V  d S r   )r  r   s      r   rk  z3GenerateSchema._dataclass_schema.<locals>.<genexpr>j  s9      aa$!QT33Aq*EEaaaaaar   c                0    |                      d          duS )Nr   F)r   )rj  s    r   rH  z2GenerateSchema._dataclass_schema.<locals>.<lambda>k  s    !%%	"2"2%"? r   )key__post_init__	__slots__c                F    g | ]}                     |j                  S r   r"  r%  s     r   r   z4GenerateSchema._dataclass_schema.<locals>.<listcomp>s  r  r   )r'  collect_init_onlyr  r  c                    g | ]	}|j         
S r   )r  )r   r   s     r   r   z4GenerateSchema._dataclass_schema.<locals>.<listcomp>  s    RRR5EJRRRr   )r  r  rU  r   slotsr  r   r+  )4r  r1  r  r,  r-  r   r}  rw   r.  r]   r/  rs   r   r  r  r  r  r3  r  r   ra  apply_typevars_mapr*  rn   r'  r4  rF   r5  rm   r  r   rG   ra   r  r  sortedhasattrr1   dataclass_args_schemar  r'  r   rD  r:  rA  r2  dataclass_schemar   r%  r   rE  rF  )r  r}  r  dataclass_refrI  r   rU  r  r  r  r   r   r  r"  rm  has_post_init	has_slotsargs_schemar   r:  r2  	dc_schemar   s   `                     @r   r  z GenerateSchema._dataclass_schema  s   
 !&&y11t	L t	LI''	22t	L7 '#t	L t	L t	L t	L t	L t	L t	L t	L t	L t	L t	L t	L t	L t	L t	L '++,FGGF!*V^*L*L!&>]22!Y99&AAFfoo "9GGOO!t	L t	L t	L t	L t	L t	L t	L t	L t	L t	L t	L t	L t	L t	L t	L$ "%t	L t	L t	L t	L t	L t	L t	L t	L t	L t	L t	L t	L t	L t	L t	L( 5Y??L!"	
 Y(=tDDF;;;;;;"''	22 UL ULD4N4S4STZ4[4[ UL UL((33  ==?? X
" "OXOlOrOrOtOt" " " ( _)/ _ _ 8 8 ^H] ^ ^ ^ ^ ^X%= )/3/C,0,=-9-?R	& & &FF  ) X X X"="Ma"P"PVWWX 6!%1'+';  F '-88-3\\^^  )
E :.."3!D !D !D !D%G# # #  / '/334MNN
%!/!5i!@!@J11$2FGGG aaaaaRXR^R^R`R`aaa??   !(	? C C#I{;;	)?&% % % % %!+!;!B!B!D!D% % % '4    0Z=W=^=^=`=`aa#-#>#E#E#G#G 5lDTV]^^"2>>YEW>XX'8 #)+%RRK4Fy4Q4QRRR#&  5:A  	 66y*B^BeBeBgBghh/8H'RRyCCFKKkUL UL UL UL UL UL UL UL UL UL UL UL UL UL?t	L t	L t	L t	L t	L t	L t	L t	L t	L t	L t	L t	L t	L t	L t	L>UL UL UL UL UL UL UL UL UL UL UL UL UL UL UL UL UL UL UL UL UL UL UL?t	L t	L t	L t	L t	L t	L t	L t	L t	L t	L t	L t	L t	L t	L t	L t	L t	L t	L t	L t	L t	L t	L t	L t	L t	L t	L t	L t	L t	L t	L t	L t	L t	Ls   S%SS%BSS%2S3S%ASR6+A0R	G<;R	<
H HH  IR	.R6:SS%R##R6&R#'R6*S6R::S=R:>SS%S	S%S	S%%S),S)functionValidateCallSupportedTypescore_schema.CallSchemac                4   |                      |          }d}| j        }|j        r]t          |          }|j        }||j        ur>| j        \  }}t          j        |||dh          }	| 	                    |	d                   }t          j        |||          S )zsGenerate schema for a Callable.

        TODO support functional validators once we support them in Config
        Nr   )globalnslocalnsinclude_keys)rs  )_arguments_schemar'  validate_returnr   return_annotationr1  r*  rX   get_function_type_hintsr1  r1   r6  )
r  r  r5  rs  r  sigreturn_hintr  r  
type_hintss
             r   r  zGenerateSchema._call_schema  s    
  11(;;7;-) 	KH%%C/K#)++$($9!'*BxPXz  
 !% 4 4Z5I J J&'
 
 
 	
r   parameters_callbackParametersCallback | Nonecore_schema.ArgumentsSchemac                   t           j        dt           j        dt           j        di}t	          |          }| j        \  }}t          j        |||          }g }d}	d}
d}t          |j	        
                                          D ]#\  }\  }}|j        |j        u r t          j        t          t                    }n||         }| ||||          }|dk    rU|                    |j                  }|>|                     ||t&          j        |j        |          }|                    |           |j        t           j        k    r|                     |          }	|j        t           j        k    sJ |j                    t          j        |          }|t7          |          p|}t9          |          st;          d|d	          d
 |j	        
                                D             }|                    |j                  }|r^t;          d|j         dtC          |          dk    rdnd dd"                    d tG          |          D                        d	          d}| $                    |t7          |                    }
d}|                     |          }
%tK          j&        ||	||
| j'        j(                  S )z Generate schema for a Signature.positional_onlypositional_or_keywordkeyword_onlyr  r  Nskip7Expected a `TypedDict` class inside `Unpack[...]`, got unpack-typed-dictr   c                B    h | ]\  }}|j         t          j        k    |S r   kindr   POSITIONAL_ONLYr   r  ps      r   	<setcomp>z3GenerateSchema._arguments_schema.<locals>.<setcomp>  3     0 0 0!(qafPYPiFiFiFiFiFir   Typed dictionary  overlaps with parameterr<   r  r   r  r  c              3  4   K   | ]}t          |          V  d S r   r  r   r  s     r   rk  z3GenerateSchema._arguments_schema.<locals>.<genexpr>  (      (U(UQa(U(U(U(U(U(Ur   overlapping-unpack-typed-dictzunpacked-typed-dictuniform)var_args_schemavar_kwargs_modevar_kwargs_schemavalidate_by_name))r   r  POSITIONAL_OR_KEYWORDKEYWORD_ONLYr   r*  rX   r  	enumerate
parametersr   r  r1  r  r&   r   r   r  r.  r9   FUNCTIONr   r  VAR_POSITIONALr1  VAR_KEYWORDunpack_typer6   r7   rG   intersectionr  r  rr  r  r  r  r1   r5  r'  r  )r  r  r  mode_lookupr  r  r  r  arguments_listr  r  r  ir  r  r  resultparameter_mode
arg_schemar  r  non_pos_only_param_namesoverlapping_paramss                          r   r  z GenerateSchema._arguments_schema  s<   
 %'8+-D"Nr
 !! 1'":8h`ghhh
?A9=;?<@%cn&:&:&<&<== .	I .	ILAya|sy((#[c22

'-
".,,QjAAV##(__QV44N)!<<*&6&?N 
 %%j11119333"&"6"6z"B"Bv!6666666+7
CC*'44CF'// /eVaee!4   0 0,/N,@,@,B,B0 0 0, *B)N)NvOe)f)f&) /X X X&)*<&=&=&B&BssX X#yy(U(U&AS:T:T(U(U(UUUX X "A	    '<O(,(?(?ZXcMdMd(e(e%%&/O(,(<(<Z(H(H%%+++/!1B
 
 
 	
r   core_schema.ArgumentsV3Schemac                   t           j        dt           j        dt           j        dt           j        di}t          |          }| j        \  }}t          j        |||          }g }t          |j
                                                  D ]\  }	\  }
}| ||	|
|j                  }|dk    r$|j        t           j        u r t          j        t           t                     }n||
         }|                    |j                  }||j        t           j        k    sJ |j                    t          j        |          }|t+          |          p|}t-          |          st/          d|d	          d
 |j
                                        D             }|                    |j                  }|r^t/          d|j        dt7          |          dk    rdnd dd                    d t;          |          D                        d	          d}|}nd}|                    |                     |
|t@          j!        ||j"                             tG          j$        || j%        j&                  S )Nr  r  var_argsr  r  r  r  r  r   c                B    h | ]\  }}|j         t          j        k    |S r   r  r  s      r   r  z6GenerateSchema._arguments_v3_schema.<locals>.<setcomp>  r  r   r  r  r<   r  r   r  r  c              3  4   K   | ]}t          |          V  d S r   r  r  s     r   rk  z6GenerateSchema._arguments_v3_schema.<locals>.<genexpr>'  r  r   r  var_kwargs_unpacked_typed_dictvar_kwargs_uniform)r   )r  )'r   r  r  r  r  r   r*  rX   r  r  r  r   r  r1  r  r&   r   r   r  r  r  r6   r7   rG   r  r  r  rr  r  r  r  rE  r9   r  r   r1   arguments_v3_schemar'  r  )r  r  r  r  r  r  r  r  parameters_listr  r  r  r  r  r  r  r  r  r  s                      r   _arguments_v3_schemaz#GenerateSchema._arguments_v3_schema  s    %'8+-D$j"N	
 	 !! 1'":8h`ghhh
BD%cn&:&:&<&<== +	 +	LAya".,,QalCCV##|y..#[c22

'-
(__QV44N%v!6666666+7
CC*'44CF'// /eVaee!4   0 0,/N,@,@,B,B0 0 0, *B)N)NvOe)f)f&) /X X X&)*<&=&=&B&BssX X#yy(U(U&AS:T:T(U(U(UUUX X "A	    &FN!,JJ%9N""22*&6&?YZYb 3      .!1B
 
 
 	
r   typevartyping.TypeVarc                v   	 |                                 }|r|                     |j                  S n# t          $ r Y nw xY w|j        x}r%|                     t          j        |                   S |j        x}r.|                     |          }t          j
        d          |d<   |S t          j                    S )Nr  r   )has_defaultr1  __default__r  rc  r  r  r%   ra  r1   re  r   )r  r  r  constraintsr   r   s         r   r  z,GenerateSchema._unsubstituted_typevar_schema:  s    	A!--//K
  A++G,?@@@A	  	 	 	D	 "11; 	A%%fl;&?@@@%%5 	))%00F&1&CE&J&JF?#M%'''s   3 
A A r&  Decorator[ComputedFieldInfo]r$  2dict[str, Decorator[FieldSerializerDecoratorInfo]]core_schema.ComputedFieldc                   |j         j        t          ur|j         j        }nN	 t          j        |j        | j        j                  }n'# t          $ r}t          j
        |          |d }~ww xY w|t          u rt          dd          t          || j                  }t          j        |j         |          |_         |                     |          }|                     |t%          |                                |j                            }t+          |j                   \  }}i }t-          |ddi|r|ni |           t/          j        |j        ||j         j        |	          S )
Nr  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readOnlyTr  )rs  r   rV  )r   r  r/   rT   get_callable_return_typefuncr*  localsr4  rF   r5  rG   rt   r  r  replacer1  r  r   ra  r   r   r\   r1   computed_fieldr   )	r  r&  r$  r  r  return_type_schemar  r  r  s	            r   r#  z%GenerateSchema._computed_field_schemaN  s   
 6%666&,KKL *B16SWShSoppp L L L1A!DD!KL+++#f5    $K1CDD $QVEEE!11+>>!::01B1I1I1K1KQ^\\
 

 2[[\[a1b1b..(*!+T jM`6h6I6Ifh j/	
 	
 	
 	

 )N*<AFL[h
 
 
 	
s   %A 
A,A''A,r_  c                    t                      }|                     |d          ^}}|                     ||          }|D ]"}t          ||          rt	          ||          }#|S )zdGenerate schema for an Annotated type, e.g. `Annotated[int, Field(...)]` or `Annotated[int, Gt(0)]`.Tr  )rv   r>  r  r}  r  )r  r_  r   r  r   r   r  s          r   rx  z GenerateSchema._annotated_schemaz  s    ,..	$($I$I %J %
 %
!k ((kBB & 	: 	:J*i00 :%j&99r   c                    | S r   r   rF  s    r   rH  zGenerateSchema.<lambda>  s    q r   r  r   	list[Any]r  "Callable[[CoreSchema], CoreSchema]r=  c                ^    t          t          j        |                    }g }d
 fd}t          |           }|D ]}|                     ||||          } |          }	|r'|	                    di           }
t          |
|	           t           j        j	        |	          S )a  Apply arguments from `Annotated` or from `FieldInfo` to a schema.

        This gets called by `GenerateSchema._annotated_schema` but differs from it in that it does
        not expect `source_type` to be an `Annotated` object, it expects it to be  the first argument of that
        (in other words, `GenerateSchema._annotated_schema` just unpacks `Annotated`, this process it).
        r  r   r   r+   c                                         |           }|                    |           }t          |           }|-t          |j                  }|                    ||            |          S r   )r  r  r  r  r  r  )r  r   r   r  r  r  r  s       r   inner_handlerz8GenerateSchema._apply_annotations.<locals>.inner_handler  s    AA#{SSF~44S99#DS#I#I #/"9&$)"L"L".))/;OPPP))&111r   Nr<  rV  ) pydantic_js_annotation_functionsr  r   r   r+   )
r_  rV   expand_grouped_metadatar|   _get_wrapped_inner_schemar  r\   r  r'  r   )r  r  r   r  r=  r  r  get_inner_schemar  r   r  s   `` `       r   r  z!GenerateSchema._apply_annotations  s     4L[YYZZHJ(	2 	2 	2 	2 	2 	2 	2 	2 8tLL% 	 	J!#== 08_	  >     "!+..+ 	s"--j"==M Qqrrrr;D<P<^`kmstttr   rV  c           
        t                      }t          ||          r|rt          |          |u r|                     |          x}D ]*\  }}t	          j        d|d|d|dt                     +|j        r8| j        	                                d|vrt	          j        dt                     |j
        D ]}|                     ||          }|j        |                     ||j                  }|S |d         d	k    rF|	                    d
t          j                              }	|                     |	|          }	|	r|	|d
<   |S |}
|	                    d          }|M|                                }|dt#          |           z   }| j                            |          x}|S ||d<   n||d         dk    rp|d         }| j                            |          x}L|                                }|dt#          |           z   }| j                            |          x}|S ||d<   t)          j        ||          }||S |
S )NzThe z attribute with value zY was provided to the `Field()` function, which has no effect in the context it was used. a   is field-specific metadata, and can only be attached to a model field using `Annotated` metadata or by assignment. This may have happened because an `Annotated` type alias using the `type` statement was used, or if the `Field()` function was attached to a single member of a union type.r  defaut_factoryzA 'default_factory' taking validated data as an argument was provided to the `Field()` function, but no validated data is available in the context it was used.r   r   r   rU  rZ  definition-refru  )rv   r}  r   &_get_unsupported_field_info_attributesr   r   rR   $default_factory_takes_validated_datar  r   rV  _apply_single_annotationr  r  r1   r   r
   r   r  get_schema_from_refrV   apply_known_metadata)r  r   rV  r=  r   unsupported_attributesattrrW  field_metadatar  rN  rU  new_refexistingreferenced_schemamaybe_updated_schemas                   r   r  z'GenerateSchema._apply_single_annotation  s    -..	h	** !	7 NNi//>B>i>ijr>s>s$s$:  KD%Mnt n nU n nKOn n n
 "B     A	-1133;(0FFFMY!A    #+"3 O O66v~NN%1;;FHDZ[[M&>Z''JJx)?)A)ABBE11%BBE )#(x M jj?[[]]F0X000G I99'BBBO#F5MMF^///&C%)Y%B%B3%G%GG!T*//11 4DNN 4 44 $	 = =g F FFHS#O 'u8MhX^__+''r   c                    t                      }t          ||          rZ|j        D ]}|                     ||          }t	          |          \  }}|                    di           }t          |||           |S )NrV  r  )rv   r}  rV  $_apply_single_annotation_json_schemar   r  r\   )r  r   rV  r   r  r  r  r  s           r   r  z3GenerateSchema._apply_single_annotation_json_schema	  s     -..	h	** 	"*"3 [ [BB6>ZZ5^_g5h5h2!2"--j"==M 3FZk    r   r   c                    g }t           D ]Z\  }}t          ||          x}|urA|dvs| j                                        $|dvs	d|j        vr|                    ||f           [|S )zoGet the list of unsupported `FieldInfo` attributes when not directly used in `Annotated` for field annotations.)r   r   N)r   r   r   )r   r   r  r   _attributes_setr  )r  r  unused_metadataunused_metadata_nameunset_valueunused_metadata_values         r   r   z5GenerateSchema._get_unsupported_field_info_attributes	  s    131\ 	V 	V- +*1*>R*S*SS&\ggg )0NNN,0022> )0[[[j&@@@  &&(<>S'TUUUr   r  r?   r  list[GetJsonSchemaFunction]r|   c                f     t          dd           d fd}t          |           S )NrT  r  r   r   r   c                     |           }n9 |           }                     |          }                    |          }t                    }|                    |           |S )Nr<  )r  r  r  r  )	r  r   r   r  annotation_get_schemar=  r  r  r  s	      r   new_handlerz=GenerateSchema._get_wrapped_inner_schema.<locals>.new_handler2	  s    $0..v7GHH))&1166<c 7  
 BB6:VV#DZ#P#P #/0778LMMMMr   )r  r   r   r   )r   r|   )r  r  r  r  r=  r  r  s   ````` @r   r  z(GenerateSchema._get_wrapped_inner_schema)	  sh     ?FjRprv>w>w	 	 	 	 	 	 	 	 	 	 	" ,K>>>r   serializers-list[Decorator[FieldSerializerDecoratorInfo]]c                (   |rt          |          }|d         dk    r#|d         }|                     ||          |d<   |S d|v r| j                            |          }|d         }t	          |j        |j        j                  \  }}|j        j        t          ur|j        j        }nN	 t          j        |j        | j        j                  }n'# t          $ r}t          j        |          |d}~ww xY w|t          u rd}	n|                     |          }	|j        j        dk    r,t%          j        |j        |||	|j        j        	          |d
<   n=|j        j        dk    sJ t%          j        |j        |||	|j        j        	          |d
<   |S )z$Apply field serializers to a schema.r   r  r   rU  r   r  Nr   )is_field_serializerr  rs  r   r   r   )r
   r  r  r/  ri   r  r   r~  r  r/   rT   r  r*  r  r4  rF   r5  r1  r1   r  r   r  )
r  r   r  r   
serializerr  r  r  r  rs  s
             r   r  z'GenerateSchema._apply_field_serializersE	  s     /	&\\Ff~..%h/#'#@#@{#[#[x &EEfMM %RJ,DZ_V`VeVj,k,k)*2CCC(o9P #."F"1F1M# # #KK ! P P P5EaHHaOP /// $ $ 4 4[ A A#v--*5*YO(;%"/(o7+ + +'' "+w6666*5*ZO(;%"/(o7+ + +' s   +%C 
C5C00C51Iterable[Decorator[ModelSerializerDecoratorInfo]]c                   |                     dd          }|r't          |          d         }t          |j        |j        j                  }|j        j        t          ur|j        j        }nN	 t          j	        |j        | j
        j                  }n'# t          $ r}t          j        |          |d}~ww xY w|t          u rd}n|                     |          }|j        j        dk    r(t!          j        |j        |||j        j                  }	n't!          j        |j        |||j        j                  }	|	|d<   |r||d<   |S )z$Apply model serializers to a schema.rU  Nr   r  r   )r  rs  r   r   )popr_  rj   r  r   r~  r  r/   rT   r  r*  r  r4  rF   r5  r1  r1   r  r   r  )
r  r   r  rU  r  r  r  r  rs  
ser_schemas
             r   rE  z'GenerateSchema._apply_model_serializers}	  s|    !**UD11 %	1k**2.J/
AUVVH*2CCC(o9P #."F"1F1M# # #KK ! P P P5EaHHaOP /// $ $ 4 4[ A A#v--4?4cO%"/(o7	5 5 5

 )MO%"/(o7	  
 '1F?# 	 F5Ms   /%B 
B9B44B9)NN)r  rY   r  r  r  r  r   r   r   r   )r   rY   )r   rx   )r   r   )r.  r   r   r+   )r4  r   r5  r   r   r+   )r?  r@  r   r+   )r   r   r   r+   )r   r   r  r   r   r+   )r   r   r4  r   r5  r   r   r+   )r   r+   r  )r   r+   r  r  r   r+   r  )r  r+   r  r  r   r   )r  r   r   r   )r#  r  r   r   )r  r   r   r   )r  r   r  r   r   rR  )r  r   r  rc  r   rd  )r  r   r   rf  )F)r  r   r  r   r   rf  )r  r   r   rp  )r  r   r  r   r   r+   )
r  r   r  r   r   ra   r  r   r   r  )r  r   r  r   r   ra   r   r  )r  r   r  r   r   ra   r   r  )r  r   r  r   r   ra   r   r  )r  r   r   r   )r  r4   r   r+   )r  r   r   r+   )r  r   r  r   r   r   )r)  r   r  r   r   r   )r  r   r  r8  r  r9   r   r   r~  r9  r   r:  )r  r   r  r   r  r9   r~  rA  r   r   r   rB  )rF  r   r   r   )r   r   )r[  r   r   r   )r.  r   r   r   )r[  r   r   rj  )rn  r   r   r   )r}  r~  r  r  r   r   )r  r  r   r  r   )r  r  r  r  r   r  )r  r  r  r  r   r  )r  r  r   r   )r&  r  r$  r  r   r  )r_  r   r   r   )
r  r   r   r  r  r  r=  r   r   r+   r  )r   r   rV  r   r=  r   r   r   )r   r   rV  r   r   r   )r  r   r   r   )
r  r?   r  r   r  r  r=  r   r   r|   )r   r   r  r  r   r   )r   r   r  r  r   r   )Kr  r  r	  r
  r  r  r!  propertyr'  r*  r-  r3  r8  r;  r>  rl  r  r  r  r  r  r  r  r  r  r  r1  rO  rQ  r  rb  r'   r>  ro  rs  r  r{  r  r  r  r  r@  r  r  r  r  r  r   r1  r.  rE  r  r  r  rZ  r  r  r  r  r  r  r  r  r  r  r#  rx  r  r  r  r   r  r  rE  __classcell__)r   s   @r   r  r  O  s       ffI *.59	# # # # #
 
 
 
 
 
 / / / X/ 1 1 1 X1 < < < X<
I I I Ik k k kH H H HN N N NF F F FP
 
 
 
B8 8 8 8t
 
 
 
2, , , ,\
 
 
 
"
2 
2 
2 
2	
 	
 	
 	
   &1 1 1 1	/ 	/ 	/ 	/% % % %NLL LL LL LL\   9w 9w 9w 9wv   , iii XiWWW XW	 	 	 	 	          $ $ $ $8v. v. v. v.p1. 1. 1. 1.r 
 
 
 
 
 
(
 
 
 
$
 
 
 
,7% 7% 7% 7%r   6H H H H&   IL IL IL ILV*H *H *H *Hb ![_+  +  +  +  + t !0  0  0  0  0 d_ _ _ _<
 
 
 
	
 	
 	
 	
] ] ] ]
%> %> %> %>N
 
 
 
.M M M Mr r r r8

 

 

 

xL xL xL xLt
 
 
 
4 fjI
 I
 I
 I
 I
X fjB
 B
 B
 B
 B
H( ( ( ((*
 *
 *
 *
X   & FQ[8<.u .u .u .u .uh 9=	H H H H HT       6 9>? ? ? ? ?86 6 6 6p- - - - - - - -r   r  c                ,    t          j        | |          S r   )r1   !no_info_before_validator_functionr  r   s     r   rH  rH  	      [-Z[\^d-e-e r   c                ,    t          j        | |          S r   )r1   rh  r'  s     r   rH  rH  	  s    K,XYZ\b,c,c r   c                *    t          j        |           S r   )r1   r  r  rZ  s     r   rH  rH  	  s    {'STU'V'V r   c                ,    t          j        | |          S r   )r1   r  r'  s     r   rH  rH  	  s    ;+VWXZ`+a+a r   c                ,    t          j        | |          S r   )r1   #with_info_before_validator_functionr'  s     r   rH  rH  	  s    {/^_`bh/i/i r   c                ,    t          j        | |          S r   )r1   "with_info_after_validator_functionr'  s     r   rH  rH  	  s    k.\]^`f.g.g r   c                *    t          j        |           S r   rY  r+  s     r   rH  rH  	  s    )WXY)Z)Z r   c                ,    t          j        | |          S r   )r1   !with_info_wrap_validator_functionr'  s     r   rH  rH  	  r(  r   ))r   no-info)r   r4  )r   r4  )r   r4  )r   	with-info)r   r5  )r   r5  )r   r5  zMapping[tuple[FieldValidatorModes, Literal['no-info', 'with-info']], Callable[[Callable[..., Any], core_schema.CoreSchema], core_schema.CoreSchema]]_VALIDATOR_F_MATCHr8  Iterable[Decorator[RootValidatorDecoratorInfo]] | Iterable[Decorator[ValidatorDecoratorInfo]] | Iterable[Decorator[FieldValidatorDecoratorInfo]]c                    |D ]P}t          |j        |j        j        d          }|rdnd}t	          |j        j        |f         |j        |           } Q| S )a  Apply validators to a schema.

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

    Returns:
        The updated schema.
    r   r~  r   r5  r4  )rk   r  r   r~  r6  )r   r8  	validatorr  val_types        r   r   r   	  si        ] ]	 %Y^).:MT[\\\"*9;;	#Y^%8($CDY^U[\\Mr   +Iterable[Decorator[ValidatorDecoratorInfo]]c                .    | D ]}|j         j        r dS dS )a?  In v1, if any of the validators for a field had `always=True`, the default value would be validated.

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

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

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

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

    Returns:
        The updated schema.
    rU  Nr  r   r+  modelr9  r   )r  r   r   )r   r   r~  rk   r  r1   r3  r  r.  r&  r0  rh  )r   r8  r~  rU  r:  r  s         r   rA  rA  	  s   & jj--C n n	7??y~2h>>7??y~2h>>$Y^).:MT[\\\>&(( m$FPYP^gmnnn$Dineklll^ H,, o$HR[R`ioppp$FPYP^gmnnn>&'1111 n$GQZQ_hnooo$Ey~flmmm
 uMr   r  r   c                    | j         r4t          j        || j         t          | j                   | j                  S | j        t          ur!t          j        || j        | j                  S |S )a  Wrap schema with default schema if default value or `default_factory` are available.

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

    Returns:
        Updated schema by default value or `default_factory`.
    )r   default_factory_takes_datar   )r   r   )r   r1   with_default_schemarp   r   r   r/   )r  r   s     r   r  r   
  s     ! .&6'DZE_'`'`'8	
 
 
 	
 
	#4	4	4.J.A\
 
 
 	
 r   GetJsonSchemaFunction | Nonec                R   t          | dd          }t          | d          rat                      }|duo|j        j        |t          |dd          fv}|s.t          | dd          }t          d|rd| dnd	 d
d          t          |           x}t          |          S |dS |S )z`Extract `__get_pydantic_json_schema__` from a type, handling the deprecated `__modify_schema__`.__get_pydantic_json_schema__N__modify_schema__rQ  r  zjThe `__modify_schema__` method is not supported in Pydantic v2. Use `__get_pydantic_json_schema__` insteadz in class ``r   r   zcustom-json-schemar   )r   r  ru   rK  rQ  rG   r6   r  )r   js_modify_functionr   has_custom_v2_modify_js_funccls_namer  s         r   r  r  9
  s    %CTJJr&'' ,..	 d* W6?&0BJPT(U(UVW 	% , 	r:t44H#nZb=j=V8=V=V=V=Vhjn n n)    R.. - 1888!tr   r  r  CoreSchema | Nonec                |    | d         dk    r|                     | d                   S | d         dk    r| d         S | S )Nr   r  ru  r  r   )r  r   r  s     r   r  r  Y
  sJ    f~)))..vl/CDDD	=	(	(hr   def_ref%core_schema.DefinitionReferenceSchema.Literal['inline', 'keep', 'preserve_metadata']c                v    d| v rdS |                      d          }|sdS t          |          dk    rd|v rdS dS )a  Determine the inlining behavior of the `'definition-ref'` schema.

    - If no `'serialization'` schema and no metadata is attached, the schema can safely be inlined.
    - If it has metadata but only related to the deferred discriminator application, it can be inlined
      provided that such metadata is kept.
    - Otherwise, the schema should not be inlined. Doing so would remove the `'serialization'` schema or metadata.
    r   keeprV  inlinerS   %pydantic_internal_union_discriminatorpreserve_metadata)r   rr  )rT  rV  s     r   _inlining_behaviorr\  b
  sY     '!!v{{:&&H x
8}}EQQ""6r   c                  t    e Zd ZU dZded<   	 ded<   	 ddZedd            ZddZddZ	d dZ
d!dZd"dZdS )#r  z*Keeps track of references and definitions.zset[str]_recursively_seenz!dict[str, core_schema.CoreSchema]r  r   r   c                :    t                      | _        i | _        d S r   )r   r^  r  r&  s    r   r  z_Definitions.__init__
  s    !$r   r   r   CGenerator[tuple[str, core_schema.DefinitionReferenceSchema | None]]c             #  4  K   t          |          }|| j        v s	|| j        v r|t          j        |          fV  dS | j                            |           	 |dfV  | j                            |           dS # | j                            |           w xY w)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:

        - Pydantic model
        - Pydantic and stdlib dataclasses
        - Typed dictionaries
        - Named tuples
        - `TypeAliasType` instances
        - Enums
        N)r^   r^  r  r1   ry  adddiscard)r  r   rU  s      r   r,  z_Definitions.get_schema_or_ref
  s      , 2$(((C43D,D,D?DDEEEEEE"&&s+++4Dk!!!&..s33333&..s3333s   A; ;BrU  r   rQ  c                6    | j                             |          S )z,Resolve the schema from the given reference.)r  r   )r  rU  s     r   r  z _Definitions.get_schema_from_ref
  s     $$S)))r   r   r+   rU  c                N    |d         }|| j         |<   t          j        |          S )zStore the schema as a definition and return a `'definition-reference'` schema pointing to it.

        The schema must have a reference attached to it.
        rU  )r  r1   ry  )r  r   rU  s      r   r/  z/_Definitions.create_definition_reference_schema
  s+    
 Um!'#6s;;;r   core_schema.DefinitionsSchemac                H    |d         D ]}|| j         |d         <   |d         S )zZStore the definitions of the `'definitions'` core schema and return the inner core schema.r  rU  r   )r  )r  r   
def_schemas      r   r.  z_Definitions.unpack_definitions
  s6     / 	> 	>J3=Dj/00hr   c                   | j         }	 t          ||          }n# t          $ r}t          |d}~ww xY wi }|d                                         D ]\  }}|t          |          x}dk    r|dk    r>|                                 |                    |                     ||                     `|dk    rW|	                    d          }	|                                 |                    |                     ||                     |	|d<   |                     ||          ||<   |d         D ]r}
|
d         	                    d	d          }|!t          j        |
                                ||          }|
                                 |
                    |           s|r*t          j        |g |                                
          }|S )zFinalize the core schema.

        This traverses the core schema and referenced definitions, replaces `'definition-ref'` schemas
        by the referenced definition if possible, and applies deferred discriminators.
        )r  Ncollected_referencesrX  rY  r[  rV  deferred_discriminator_schemasrZ  rS  )r  r{   rz   r  r   r\  clearrL  _resolve_definitionr   rU   r  r
   r1   definitions_schemara  )r  r   r  gather_resultr  remaining_defsrU  inlinable_def_refinlining_behaviormetacsr  applieds                r   r  z_Definitions.finalize_schema
  s!    '	,7'  MM & 	, 	, 	,$!+	, 13 '44J&K&Q&Q&S&S 	Q 	Q"C" ,GYZkGlGl2l2Cqw1w1w$00
 &++---%,,T-E-Ec;-W-WXXXX&*=== -00<<D%++---%,,T-E-Ec;-W-WXXX48%j1
 '+&>&>sK&P&Ps## @A 
	 
	B(*:(:(:;bdh(i(iM$ *>rwwyy-YghhGHHJJJIIg 	k 36OiQ_QfQfQhQhOijjjFs    
2-2r  dict[str, CoreSchema]c                P   ||         }|d         dk    r|S t                      }|d         dk    rot          |          dk    r\|d         }||v rt          | dd          |                    |           ||         }|d         dk    rt          |          dk    \i |d|iS )	Nr   r  rY  ru  z) contains a circular reference to itself.zcircular-reference-schemar   rU  )r   r\  rG   rb  )r  rU  r  
definitionvisitedru  s         r   rm  z _Definitions._resolve_definition
  s     %
f!111  EE $4449KJ9W9W[c9c9c#L1JW$$'EEELg    KK
###$Z0J  $4449KJ9W9W[c9c9c **)eS)))r   Nr"  )r   r   r   r`  )rU  r   r   rQ  )r   r+   r   rU  )r   rf  r   r+   r  )rU  r   r  rv  r   r+   )r  r  r	  r
  r  r  r   r,  r  r/  r.  r  rm  r   r   r   r  r  v
  s         44 4333    4 4 4 ^4@* * * *< < < <       8 8 8 8t* * * * * *r   c                  :    e Zd ZdZddZedd            Zdd
ZdS )r  _stackr   r   c                    g | _         d S r   r{  r&  s    r   r  z_FieldNameStack.__init__  s    !#r   r"  r   Iterator[None]c              #  x   K   | j                             |           d V  | j                                          d S r   r|  r  r   )r  r"  s     r   r1  z_FieldNameStack.push  s=      :&&&r   
str | Nonec                .    | j         r| j         d         S d S Nr   r{  r&  s    r   r   z_FieldNameStack.get      ; 	;r?"4r   Nr"  )r"  r   r   r~  )r   r  r  r  r	  r  r  r   r1  r   r   r   r   r  r    sa        I$ $ $ $    ^
     r   r  c                  :    e Zd ZdZddZedd            Zdd
ZdS )r  r{  r   r   c                    g | _         d S r   r{  r&  s    r   r  z_ModelTypeStack.__init__&  s    "$r   type_objr   r~  c              #  x   K   | j                             |           d V  | j                                          d S r   r  )r  r  s     r   r1  z_ModelTypeStack.push)  s=      8$$$r   type | Nonec                .    | j         r| j         d         S d S r  r{  r&  s    r   r   z_ModelTypeStack.get/  r  r   Nr"  )r  r   r   r~  )r   r  r  r   r   r   r  r  #  sa        I% % % %    ^
     r   r  )r   r   r   r   r   r   )r   r   r   r   r   r   )r   r   r   r   r   r   )r   r   r   r   r   r   )r   r   r   r   )r   r   r   r   r   r+   r   r+   )r   r   r8  r7  r   r   )r8  r<  r   r   )r   r>  r   r?  )r   r   r8  rB  r~  rC  r   r   )r  r   r   r   r   r   )r   r   r   rI  )r   r+   r  r  r   rQ  )rT  rU  r   rV  (  r
  
__future__r   _annotationscollections.abcr  r  r  rb  r  r  ru  sysr  r   r   r   r   r   
contextlibr   r
   decimalr   enumr   	fractionsr   	functoolsr   r   r   r   	ipaddressr   r   r   r   r   r   	itertoolsr   operatorr   typesr   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   uuidr(   rU  r)   r  pydantic_corer*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   typing_inspectionr8   typing_inspection.introspectionr9   r:   r;   aliasesr=   r>   annotated_handlersr?   r@   r  rA   rB   rC   rD   errorsrE   rF   rG   functional_validatorsrH   rI   rJ   rK   rL   rM  rM   versionrN   rO   rP   rQ   rR   r   rT   rU   rV   rW   rX   _configrY   rZ   _core_metadatar[   r\   _core_utilsr]   r^   r_   r`   ra   rb   rc   rd   re   rf   rg   rh   ri   rj   rk   _docs_extractionrl   r4  rm   rn   ro   rp   rq   _forward_refrr   	_genericsrs   rt   _import_utilsru   rv   _mock_val_serrw   _namespace_utilsrx   ry   _schema_gatherrz   r{   _schema_generation_sharedr|   _utilsr}   r~   r   r   r   mainr   r   _dataclassesr   r   version_infor  r   r   AnyFieldDecoratorr   r  r   r   Tupler   r   Listr_  r{  MutableSequencer   Setr   
MutableSetr   	FrozenSet	frozensetr   Dictr   r   r   rh  r   r   Typer   r   rt  r   r  Pathr  	PosixPathPurePosixPathPureWindowsPathr   MutableMappingOrderedDictDefaultDictr  r  Counterr  r  r  r   r  r  r   r   r   r   r   r   r   JsonEncodersr  	Exceptionr  r  r6  r   r  r  rA  r  r  r  r\  r  r  r  r   r   r   <module>r     sK   3 3 3 2 2 2 2 2 2           				  				 



   B B B B B B B B B B B B % % % % % %                               8 8 8 8 8 8 8 8 8 8 f f f f f f f f f f f f f f f f             D D D D D D D D D D D D                                       
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 [ Z Z Z Z Z Z Z Z Z Z Z Z Z , , , , , , a a a a a a a a a a - - - - - - - - K K K K K K K K O O O O O O O O O O O O b b b b b b b b b b w w w w w w w w w w w w w w ) ) ) ) ) ) # # # # # #            a ` ` ` ` ` ` ` ` ` ` ` ` ` 6 6 6 6 6 6 6 6 > > > > > > > >         
                            : 9 9 9 9 9              / . . . . . ? ? ? ? ? ? ? ? M M M M M M M M ) ) ) ) ) ) 9 9 9 9 9 9 9 9 O O O O O O O O C C C C C C 6 6 6 6 6 6 6 6 A55555555      %%%%%%//////@@@@@@&'1 13NPllm  !9ASTTT $%)**+-  *>  = = = =#+S2M,NP[Pf,f#g  g g g g S  S S S S!</ / / / / +t[_-LM
 M M M MS+/*DE	 E E E E & 0)[_=PQ  Q Q Q Q +t,
 , , , ,#]Km]hi i i i i$o{/GH H H H H$o{/GIY[f[j[tu u u u u +t,
 , , , ,#^RZ8 8 8 8 8KL
     N
OO"!
	 $fn5&,fl; ; ; ; ; #  !))C D D ! !"F +    " O .Zghh  i i i i
, , , ,"   6n n n n       F
A 
A 
A 
A DI{*+   D& & & & & & & &[! [! [! [! [! [! [! [!DC feccVVaaiiggZZee	 	     "   4       , , , ,^   2   @      (W* W* W* W* W* W* W* W*t       &         r   