
    Tgƽ             
         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 ddlmZmZ ddlmZ ddlmZ ddlmZ dd	lmZ dd
lmZ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, ddlm-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z: ddl;m<Z< ddlm=Z= ddl>Z>ddl?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZG ddl>mHZHmIZImJZJmKZKmLZLmMZM ddlNmOZOmPZPmQZQ ddlRmSZSmTZT ddlUmVZVmWZWmXZXmYZY ddlZm[Z[m\Z\m]Z] ddl^m_Z_m`Z`maZambZbmcZc ddldmeZe ddlfmgZg ddlmhZh ddlimjZjmkZkmlZlmmZmmnZn ddlompZpmqZq dd lrmsZs dd!ljmtZtmuZumvZvmwZwmxZxmyZymzZzm{Z{ dd"lkm|Z|m}Z}m~Z~mZmZmZmZmZmZmZmZmZ dd#lmZ dd$lmZmZ dd%lmZ dd&lmZmZmZmZ dd'lmZmZ dd(lmZ dd)lmZmZ dd*lmZ dd+lmZmZ e-r dd,lmZmZ dd-lmZ dd.l)mZ dd/lmZ dd0lmZ ej        d1k    Ze8eee~f         Z e7d2e3          Ze8e|e         e|e         e|e~         f         ZeSZe/e.egeFj@        f         Zeej        gZd4ed5<   eej        ej        j        gZd4ed6<   eej        ej        j        gZd4ed7<   eej        ej        j        gZd4ed8<   eej0        gZd4ed9<   ee e!e"e#e$gZd4ed:<   ej        ej        j        gZd4ed;<   e	j        e
j        e
j        e
j        e
j        e
j        gZd4ed<<   ej5        ej        ej        j5        ej        j        ej        e>j        ej        ej        ej        ej        g
Zej        ej        gZd4ed=<   e8e+e*e,ef         Z eKe֦          Ze`e_ebecd>Zd?ed@<   ddGZddMZddQZddXZdd[Ze0e6e.         eXf         ZddaZdddZ G de df          Zdg dh di dj dk dl dm dn doZdpedq<   ddtZddvZddzZdd}ZddZ G d deJ          ZddddddddZ G d d          ZddZ G d d          Z G d d          ZdS )z-Convert python types to pydantic-core schema.    )annotationsN)contextmanager)copydeepcopy)Decimal)Enum)Fraction)partial)	Parameter_ParameterKind	signature)IPv4AddressIPv4InterfaceIPv4NetworkIPv6AddressIPv6InterfaceIPv6Network)chain)
attrgetter)FunctionType
LambdaType
MethodType)TYPE_CHECKINGAnyCallableDictFinal
ForwardRefIterableIteratorMappingTypeTypeVarUnioncastoverload)UUID)warn)
CoreSchemaMultiHostUrlPydanticCustomError$PydanticSerializationUnexpectedValuePydanticUndefinedUrlcore_schemato_jsonable_python)LiteralTypeAliasType	TypedDictget_args
get_originis_typeddict   )AliasChoicesAliasGenerator	AliasPath)GetCoreSchemaHandlerGetJsonSchemaHandler)
ConfigDictJsonDictJsonEncoderJsonSchemaExtraCallable)PydanticSchemaGenerationErrorPydanticUndefinedAnnotationPydanticUserError)AfterValidatorBeforeValidatorFieldValidatorModesPlainValidatorWrapValidator)JsonSchemaValue)version_short)PydanticDeprecatedSince20   )_core_utils_decorators_discriminated_union_known_annotated_metadata_typing_extra)ConfigWrapperConfigWrapperStack)update_core_metadata)collect_invalid_schemasdefine_expected_missing_refsget_refget_type_refis_function_with_inner_schema%is_list_like_schema_with_items_schemasimplify_schema_referencesvalidate_core_schema)	DecoratorDecoratorInfosFieldSerializerDecoratorInfoFieldValidatorDecoratorInfoModelSerializerDecoratorInfoModelValidatorDecoratorInfoRootValidatorDecoratorInfoValidatorDecoratorInfoget_attribute_from_basesinspect_field_serializerinspect_model_serializerinspect_validator)extract_docstrings_from_cls)collect_dataclass_fieldstakes_validated_data_argument)PydanticRecursiveRef)get_standard_typevars_maphas_instance_in_typerecursively_defined_type_refsreplace_types)import_cached_base_modelimport_cached_field_info)MockCoreSchema)NamespacesTuple
NsResolver)CallbackGetCoreSchemaHandler)lenient_issubclasssmart_deepcopy)ComputedFieldInfo	FieldInfo	BaseModel)Discriminator)StandardDataclass)GetJsonSchemaFunction)      FieldDecoratorInfoType)boundz
list[type]TUPLE_TYPES
LIST_TYPES	SET_TYPESFROZEN_SET_TYPES
DICT_TYPESIP_TYPESSEQUENCE_TYPES
PATH_TYPESDEQUE_TYPES)beforeafterplainwrapzbdict[FieldValidatorModes, type[BeforeValidator | AfterValidator | PlainValidator | WrapValidator]]_mode_to_validatorinfoFieldDecoratorInfofieldstrreturnboolc                B    d| j         v rdS | j         D ]}||k    r dS dS )zCheck if field name is in validator fields.

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

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

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

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

    Raises:
        PydanticUserError: If one of the field names does not exist in `fields` param.
    r   Fz*Decorators defined with incorrect fields: .zO (use check_fields=False if you're inheriting from the model and intended this)zdecorator-missing-fieldcodeN)setr   r   check_fieldsrC   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]]
field_name
str | Nonec                H   |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_validatorsrZ   r/   
any_schema	TypeError)r   r   r   r   inner_schemas        r   r   r      sU      
 f~##5fX6FH\^hiix	7	"	"#)::.C#D#DDQ:J~&':;$; ;F>"#67
 
/v	6	6 	
zz.+2H2J2JKK!1,@TV`!a!a~	6	!	!zz/;3I3K3KLL"2<AUWa"b"b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description
deprecated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   r0   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   warningsr(   rJ   rK   r/   $plain_serializer_function_ser_schema)r   r   r   baseencoders        r   ,_add_custom_serialization_from_json_encodersr     s      &   Hgb)R\-ABB3B3GHH  ##D))? ZMOO  Z  Z  Z%	
 	
 	
 #."RSZfl"m"m"mMr   abc                    | | n|S )aB  Return the first argument if it is not None, otherwise return the second argument.

    Use case: serialization_alias (argument a) and alias (argument b) are both defined, and serialization_alias is ''.
    This function will return serialization_alias, which is the first argument, even though it is an empty string.
    r   )r   r   s     r   _get_first_non_nullr   5  s     111$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 G d) d*e          Zdd+Zdd,Zdd0Z	 ddd4Zdd7Zdd8Zdd9Zdd<Zdd=Ze ddA            Z!e ddC            Z!dddEZ!ddFZ"ddHZ#ddIZ$ddJZ%ddLZ&d1dMddUZ'ddWZ(ddYZ)e*dd]            Z+e*dda            Z,e*ddc            Z-ddeZ.ddgZ/ddiZ0ddkZ1ddmZ2ddoZ3e4j5        dfddvZ6ddxZ7ddyZ8ddzZ9dd{Z:dd}Z;dd~Z<ddZ=ddZ>ddZ?ddZ@ddZAddZBddZCddZDddZEd fddZFddZGddZHddZIddZJddZK xZLS )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_wrapperrR   ns_resolverNsResolver | Nonetypevars_mapdict[Any, Any] | Noner   r   c                    t          |          | _        |pt                      | _        || _        t                      | _        t                      | _        t                      | _
        d S r   )rS   r   ru   r   r   _FieldNameStackr   _ModelTypeStackr   _Definitionsr   )selfr   r   r   s       r   __init__zGenerateSchema.__init__J  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.r7   )
stacklevel)super__init_subclass__r   r(   UserWarning)clsr   s    r   r  z GenerateSchema.__init_subclass__X  sE    !!###s	
 	
 	
 	
 	
 	
r   c                    | j         j        S r   )r   tailr  s    r   _config_wrapperzGenerateSchema._config_wrapper`  s    )..r   rt   c                    | j         j        S r   )r   types_namespacer  s    r   _types_namespacezGenerateSchema._types_namespaced  s     00r   r   c                    | j         j        S r   )r  arbitrary_types_allowedr  s    r   _arbitrary_typeszGenerateSchema._arbitrary_typesh  s    #;;r   
items_typer   r)   c                P    t          j        |                     |                    S r   )r/   list_schemagenerate_schemar  r  s     r   _list_schemazGenerateSchema._list_scheman  s!    &t';';J'G'GHHHr   	keys_typevalues_typec                x    t          j        |                     |          |                     |                    S r   )r/   dict_schemar  )r  r  r  s      r   _dict_schemazGenerateSchema._dict_schemaq  s2    &t';';I'F'FH\H\]hHiHijjjr   c                P    t          j        |                     |                    S r   )r/   
set_schemar  r  s     r   _set_schemazGenerateSchema._set_schemat  s!    %d&:&::&F&FGGGr   c                P    t          j        |                     |                    S r   )r/   frozenset_schemar  r  s     r   _frozenset_schemaz GenerateSchema._frozenset_schemaw  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   rI   c                r     ||           }|                     |          }|                               |S r   )resolve_ref_schemaupdate)r   r/  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)r9  r;  )r/   enum_schemar1  r2  )	_r/  r3  r4  casesenum_refr%  r5  r9  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   r<  )r   r)   r/  r<   r   rI   )r/  r<   r   rI   )list__members__valuesrX   __doc__inspectcleandoc__name__r   
issubclassr)  r/   simple_ser_schemar   r*  r   r   	_missing_r   r7  r?  r  use_enum_values no_info_after_validator_functionr   is_instance_schema)r  r%  r   value_ser_typer6  default_missingr?  rC  rA  rB  r5  r9  s    `      @@@@r   _enum_schemazGenerateSchema._enum_schemaz  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 )NrL   )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)r^  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   r3  python_schemaTalways)info_argr   r8  c                    d         dS )Nstringr   formatr   )_1_2ip_type_json_schema_formatr   s     r   r.  z+GenerateSchema._ip_schema.<locals>.<lambda>  s    (VpqsVt9u9u r   
lax_schemastrict_schemar   r<  )r^  r   r   r_  r   r`  )_validatorsrV  rW  r   r   r   r   r   r   r/   lax_or_strict_schema no_info_plain_validator_functionjson_or_python_schemarP  
str_schemarQ  r   )r  r   rV  rW  re  rp  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   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].rL   )fraction_validatorrf  rh  r   r8  c                    dddS )Nrk  fractionrl  r   rn  ro  s     r   r.  z1GenerateSchema._fraction_schema.<locals>.<lambda>  s    \f?g?g r   rq  )	rt  r{  r/   ru  rv  rw  rQ  r	   to_string_ser_schema)r  r{  s     r   _fraction_schemazGenerateSchema._fraction_schema  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                    s+t          |dt                     t	          j                    S t	          j        |          S )Na   is not a Python type (it may be an instance of an object), Pydantic will allow any object with no validation since we cannot even enforce that the input is an instance of the given type. To get rid of this error wrap the type with `pydantic.SkipValidation`.)rc  r   r(   r  r/   r   rQ  )r  r   s     r   _arbitrary_type_schemaz%GenerateSchema._arbitrary_type_schema  sb    "d## 	, 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.)rA   r  r  s     r   _unknown_type_schemaz#GenerateSchema._unknown_type_schema   s.    +f3 f f f
 
 	
r   r   discriminatorstr | Discriminator | Nonec                    ||S 	 t          j        ||          S # t           j        $ r t          j        ||           |cY S w xY wr   )rO   apply_discriminatorMissingDefinitionForUnionRefset_discriminator_in_metadata)r  r   r  s      r   _apply_discriminator_to_unionz,GenerateSchema._apply_discriminator_to_union  su      M	';   $@ 	 	 	 >   MMM	s    &AAc                      e Zd ZdS )GenerateSchema.CollectedInvalidN)rK  
__module____qualname__r   r   r   CollectedInvalidr    s        r   r  c                    |                      |          }t          |          }t          |          r|                                 t	          j        |          }t          |          }|S r   )collect_definitionsr[   rU   r  rO   apply_discriminatorsr\   )r  r   s     r   clean_schemazGenerateSchema.clean_schema   sf    ))&11+F33"6** 	*'')))%:6BB%f--r   c                $   t          d|                    dd                     }|r|| j        j        |<   d|v rt	          j        |d                   }t	          j        |t          | j        j                                                            S )Nr   r;  )	r%   r   r   definitionsr/   definition_reference_schemadefinitions_schemarE  rG  )r  r   r;  s      r   r  z"GenerateSchema.collect_definitions)  s    <E4!8!899 	0)/DI!#&F?? <VE]KKF-&--//00
 
 	
r   metadata_schemajs_functionCallable[..., Any]c                    |                     di           }|                    dg           }||vr|                    |           ||d<   d S )Nr<  r8  )r   
setdefaultappend)r  r  r  r<  r8  s        r   _add_js_functionzGenerateSchema._add_js_function4  s`    "&&z266 ( 3 34KR P P
 333!((555&.
###r   Tfrom_dunder_get_core_schemar   c                .   d}|r|                      ||          }||}||                     |          }t          ||          }|2t          || j        j                  }|r|                     ||           t          | j        j	        ||          }|S )a  Generate core schema.

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

        Returns:
            The generated core schema.

        Raises:
            PydanticUndefinedAnnotation:
                If it is not possible to evaluate forward reference.
            PydanticSchemaGenerationError:
                If it is not possible to generate pydantic-core schema.
            TypeError:
                - If `alias_generator` returns a disallowed type (must be str, AliasPath or AliasChoices).
                - If V1 style validator with `each_item=True` applied on a wrong field.
            PydanticUserError:
                - If `typing.TypedDict` is used instead of `typing_extensions.TypedDict` on Python < 3.12.
                - If `__modify_schema__` method is used instead of `__get_pydantic_json_schema__`.
        N)
_generate_schema_from_property_generate_schema_inner!_extract_get_pydantic_json_schemaresolve_original_schemar   r  r  r   r  r   )r  r  r  r   from_propertymetadata_js_functionr  s          r   r  zGenerateSchema.generate_schema?  s    6 %)& 	' ??SIIM(&>0055F@fMM+5fdi>STTO M%%o7KLLL=d>R>`begmnnr   r	  type[BaseModel]c                	     j                             |          5 \  }}||cddd           S t          |di           }|j        j        }t          t          j                                        j	                                        j
                                                  h |                                |                                           t          |j        d          }|                    |j                  }j                                        } j                            |          5   j                            |          5  d}	|                    d          dk    r|j        d         |u sJ |j        d	         t,          u sJ |j        dd	         D ]}
t          |
d
i                               dd          }|t/          |t0                    r,t3          j        t3          j        |dd          g j        R  }t;          |          }|t<          t>          fvrtA          d           !                    |d          d         }t3          j"        |          s #                    |          }	 nt          |di                               d          }|j$        rq %                    d|d                   }|d         }tM          ||d          }tO          j(        |||t          |dd          dt          |dd          ||          }ntO          j)         fd|*                                D              fd|                                D             |	|j                  }tW          |j,                                        d          }t[          |t]                                }||}tM          ||d          }tO          j(        |||t          |dd          dt          |dd          ||          } /                    |j0                                                  }tM          ||d          }| j         j1        |<   tO          j2        |          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_fields__F)checkr   extra_fields_behaviorallowr   r   __annotations____pydantic_extra__T)is_argumentis_classzEThe type annotation for `__pydantic_extra__` must be `Dict[str, ...]`requiredrL   __pydantic_generic_metadata__originrootr   inner__pydantic_custom_init____pydantic_post_init__)generic_origincustom_init
root_model	post_initconfigr;  c                F    i | ]\  }}|                     ||          S r   )_generate_md_field_schemar   r   r   r   r  s      r   r   z0GenerateSchema._model_schema.<locals>.<dictcomp>  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>  s<     ) ) ) ! !77:;WXX) ) )r   )computed_fieldsextras_schema
model_nameouter)3r   get_schema_or_refr   __pydantic_decorators__r  r   r   field_validatorsrG  r  
validatorskeysrR   model_configcore_configrK  model_validatorsr   pushr   r   r   objectrc  r   rQ   eval_type_backport_make_forward_refr  r5   r   r   rA    _get_args_resolving_forward_refsis_anyr  __pydantic_root_model___common_field_schemaapply_model_validatorsr/   model_schemamodel_fields_schemar   r   root_validatorsrV   ro   _apply_model_serializersmodel_serializersr  r  )r  r	  	model_refmaybe_schemar   r  r   r  r  r  candidate_clsextras_annotationr   extra_items_typer  
root_fieldr   r  fields_schemanew_inner_schemar   r   s   `                    @r   _model_schemazGenerateSchema._model_scheman  s   Y((-- _	J1J)\'#_	J _	J _	J _	J _	J _	J _	J _	J S"7<<F4J(8O(/668807799)0022 
 :&++--9/"6"6"8"89   +3+;5IIIN(443<4HHK):AACC+00@@ LJ LJ$BSBXBXY\B]B] LJ LJ $??#:;;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!$55&C$k'" '" !" 04/T/T 1)- 0U 0 0  0!, $1#78H#I#I &040D0DEU0V0V %9@Fegi9j9j9n9now9x9x. '!%!:!:66&>S]!^!^J#-h#7L#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]CdCdCfCfhl#m#mL'CLRoRqRq'r'r$'3'7#9,HXZa#b#bL#.#;$'5$+C1KT$R$R#(")#/G"N"N*%	$ 	$ 	$L 66|ZEaEhEhEjEjkk/8H'RR39	%i0">yIIYLJ LJ LJ LJ LJ LJ LJ LJ LJ LJ LJ LJ LJ LJ'_	J _	J _	J _	J _	J _	J _	J _	J&LJ LJ LJ LJ LJ LJ LJ LJ LJ LJ LJ LJ LJ LJ LJ LJ LJ LJ LJ LJ LJ LJ LJ'_	J _	J _	J _	J _	J _	J _	J _	J _	J _	J _	J _	J _	J _	J _	J _	J _	J _	Jsf   SDS R5LR9R5SR""R5%R"&R5)S5R9	9S<R9	=SSSc                r    |d         dk    r*| j         j        }|d         D ]}|||d         <   |d         S |S )zuUnpack all 'definitions' schemas into `GenerateSchema.defs.definitions`
        and return the inner schema.
        r   r  r;  r   )r   r  )r  r   r  ss       r   _unpack_refs_defsz GenerateSchema._unpack_refs_defs  sR     &>]**)/KM* * *()AeH%%(##r   c                ^    | j                                         }|t          dd          |S )Nz(`typing.Self` is invalid in this contextzinvalid-self-typer   )r   r   rC   r  s     r   _resolve_self_typez!GenerateSchema._resolve_self_type  s5    #''));#$NUhiiii
r   sourcecore_schema.CoreSchema | Nonec                   t          j        |          r|                     |          }| j                            |          5 \  }}||cddd           S 	 ddd           n# 1 swxY w Y   ||u rd}nd}t          |dd          x}" ||t          | j        | |                    }nt          |d          r4|j	        
                    d          x}t          |t                    s|}nt          |dd          x}	qd	d
lm}
 t          ||
          rt!          d|j         dt$                     nt!          dt&                     t)          j        d  |	            D                       }ndS |                     |          }t/          |          r$|d                             dd          }|r||d<   nt3          |          }|r#|| j        j        |<   t)          j        |          S |S )a0  Try to generate schema from either the `__get_pydantic_core_schema__` function or
        `__pydantic_core_schema__` property.

        Note: `__get_pydantic_core_schema__` takes priority so it can
        decide whether to use a `__pydantic_core_schema__` attribute, or generate a fresh schema.
        Nunpackzto-def__get_pydantic_core_schema__)ref_mode__dict____pydantic_core_schema____get_validators__r   r{   zeMixing V1 models and V2 models (or constructs, like `TypeAdapter`) is not supported. Please upgrade `z` to V2.zc`__get_validators__` is deprecated and will be removed, use `__get_pydantic_core_schema__` instead.c                6    g | ]}t          j        |          S r   r/   "with_info_plain_validator_functionr   r   s     r   r   zAGenerateSchema._generate_schema_from_property.<locals>.<listcomp>  s%    .w.w.wef{/]^_/`/`.w.w.wr   r   r;  )rQ   is_selfr  r   r  r   rv   r  hasattrr  r   rc  rs   pydantic.v1r|   rL  r(   rK  r  rK   r/   chain_schemar  rY   poprW   r  r  )r  r  r  r@  r  r  
get_schemar   existing_schemar  BaseModelV1r;  s               r   r  z-GenerateSchema._generate_schema_from_property  s     %% 	/))#..CY((-- 	$1B!\'#	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$'	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ &==HHH "#'EtLLLJYZ4T5PRVaijjj FF C$$	
 %(L$4$45O$P$PP]?? ^ %FF#C)=tDDDjQ<<<<<<#{++ 	 S|  }I  S  S  S   
 y-   !-.w.wjtjtjvjv.w.w.wxxFF 4''//(00 	""&&ud33C $ #u&//C 	@)/DI!#&:3???s   A%%A),A)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 )rQ   r  r  	NameErrorrB   from_name_errorrc  r   __forward_arg__r   rp   )r  r  es      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          |          }|rNt          j        dk    r"ddlm} t          ||          rd |D             }t           fd|D                       }n|rt          d| d          |S )Nr   	   r   )GenericAliasc              3  l   K   | ]/}t          |t                    rt          j        |          n|V  0d S r   )rc  r   rQ   r  )r   r   s     r   	<genexpr>zBGenerateSchema._get_args_resolving_forward_refs.<locals>.<genexpr>H  sD      jj`a*QPSBTBT[M;A>>>Z[jjjjjjr   c              3  p   K   | ]0}t          |t                    r                    |          n|V  1d S r   )rc  r   r  )r   r   r  s     r   r  zBGenerateSchema._get_args_resolving_forward_refs.<locals>.<genexpr>I  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)r4   sysversion_infotypesr  rc  r   r   )r  r  r  argsr  s   `    r   r  z/GenerateSchema._get_args_resolving_forward_refs@  s    }} 		Z6))......c<00 kjjeijjjD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  r  s      r   _get_first_arg_or_anyz$GenerateSchema._get_first_arg_or_anyN  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 )Nr7   z Expected two type arguments for z, got 1r   rL   )r  r   lenr5   r   )r  r  r  r  s       r   _get_first_two_args_or_anyz)GenerateSchema._get_first_two_args_or_anyT  sn    44S99 	:t99q==__FNvNNNOOOAwQr   c                   t          j        |          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)rQ   is_annotated_annotated_schemarc  r   r   r   r  r  rq   rw   r   r  r  rl   r/   r  type_ref
match_type)r  r  r|   s      r   r  z%GenerateSchema._generate_schema_inner]  so   %c** 	/))#...c4   	Jc3 	"S//Cc:&& 	H''(A(A#(F(FGGG,..	c9-- 	/&++C00 / /))#../ / / / / / / / / / / / / / / / c/00 	T:clSSSSs###s   C<<D D c                P   |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 ||t          j#        u rt          j$                    S |tJ          v r| &                    |          S |tN          v r| (                    |          S |tR          v r| *                    tV                    S |tX          v r| -                    tV                    S |t\          v r| /                    tV                    S |t`          v r| 1                    tV                    S |td          v r | 3                    tV          tV                    S t          j4        |          r| 5                    |          S |tl          u r| 7                                S t          j8        |          rt          j9                    S t          j:        |          r| ;                    |          S ty          |          r| =                    |d          S t          j>        |          r| ?                    |d          S t          j@        |          r| A                    |jB                  S |t          jD        u r| E                    |          S t          jF        |          r| G                                S t          |t          jJ                  r| K                    |          S t          jL        |          rD|t          u rt          j                    S | A                    | N                    |                    S t          |t                    r| P                    |          S t          jR        |          r*t          |t                    r| U                    |          S t          jV        |          r| W                                S t          jY        |          r| Z                    |d          S t          |          }|| \                    ||          S | ]                    |d          }||\  }}| ^                    ||          S | j_        r| `                    |          S | a                    |          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.
        Nr   )br   r/   rx  bytesbytes_schemar)  
int_schemar*  float_schemar   bool_schemacomplexcomplex_schemarQ   r  r  r   datetimedatedate_schemadatetime_schematimetime_schema	timedeltatimedelta_schemar   decimal_schemar'   uuid_schemar.   
url_schemar	   r  r*   multi_host_url_schemaNoneTypenone_schemar   ry  r   _tuple_schemar   r  r   r   r!  r   r$  r   _sequence_schemar   r  is_type_alias_type_type_alias_type_schemar   _type_schemais_callablecallable_schema
is_literal_literal_schemar6   _typed_dict_schemais_namedtuple_namedtuple_schemais_new_typer  __supertype__rePattern_pattern_schemais_hashable_hashable_schemarc  typingr#   _unsubstituted_typevar_schemais_finalvarr   r   VALIDATE_CALL_SUPPORTED_TYPES_call_schemarI  isclassrL  r   rT  is_zoneinfo_type_zoneinfo_schemadataclassesis_dataclass_dataclass_schemar5   _match_generic_type0_get_prepare_pydantic_annotations_for_known_type_apply_annotationsr  r  r  )r  r  r  ressource_typer   s         r   r*  zGenerateSchema.match_typev  s    #::)+++E\\+---CZZ)+++E\\+---D[[*,,,G^^-///!#&& D	+#--)+++HM!!*,,,H%%%.000HM!!*,,,H&&&/111G^^-///D[[*,,,CZZ)+++H__((***L  4666[C=#999*,,,H__??3'''K%%c***J$$S)))I##C((($$$))#...N""((---J$$S#...-c22  	+//444D[[$$&&&&s++ 	+.000%c** 	+'',,,# 	+**3555(-- 	+**3555&s++ 	+''(9:::BJ'',,,&s++ 	+((***V^,, 	+55c:::&s++ 	+e||"-///''**3//   :;; 	+$$S)))_S!! 	+jd&;&; 	+$$S)))+C00 	+((***#C(( 	5))#t444C++C888CCCLL?'*$K**;DDD  	4..s333((---r   r  c                   t          j        |          r|                     ||          S t          j        |          r|                     ||          S |                     ||          }||S t          j        |          r|                     |          S t          j	        |          r| 
                    |          S |t          v r|                     |          S |t          v r(|                     |                     |                    S |t           v r(|                     |                     |                    S |t$          v r(|                     |                     |                    S |t(          v r | j        |                     |           S t/          |          r|                     ||          S |t2          j        t6          fv r|                     |          S |t:          v r(|                     |                     |                    S |t2          j        t@          j!        j        t2          j"        t@          j!        j"        hv r| #                    |          S |tH          j%        t2          j%        fv r| &                    |          S | '                    |d          }||\  }}| (                    ||          S | j)        r| *                    |          S | +                    |          S )Nr   ),r\  r]  r^  rQ   rK  rL  r  rC  rD  origin_is_union_union_schemar   rA  r   r  r   r   r!  r   r$  r   r  r$  r6   rJ  rT  r"   r   _subclass_schemar   rB  r   collectionsabc	Generator_iterable_schemarO  rP  rQ  r`  ra  r  r  r  )r  r  r  r  rb  rc  r   s          r   r_  z"GenerateSchema._match_generic_type  s   
 #F++ 	7))#v666&v.. 	8**3777;;FCHH$  +F33 	-//444*622 	-%%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&!! 		-**3777T***((---~%%(()C)CC)H)HIII)A6CSU`UdUnooo((---
FN333'',,,CCCLL?'*$K**;DDD  	7..v666((---r   r  namer   
field_inforz   r   r^   core_schema.TypedDictFieldc          	         |                      |||          }t          j        |d         |                                sdn||d         |d         |d         |d                   S )zAPrepare a TypedDictField to represent a model or typeddict field.r   Fserialization_excludevalidation_aliasserialization_aliasr<  )r  rp  rq  rr  r<  )r  r/   typed_dict_fieldis_required)r  rl  rm  r   r  common_fields         r   _generate_td_field_schemaz(GenerateSchema._generate_td_field_schema  sx     00z:NN+"","8"8":":HUU"./F"G)*<= ,-B C!*-
 
 
 	
r   core_schema.ModelFieldc           	         |                      |||          }t          j        |d         |d         |d         |d         |d         |d                   S )z0Prepare a ModelField to represent a model field.r   rp  rq  rr  frozenr<  rp  rq  rr  ry  r<  )r  r/   model_fieldr  rl  rm  r   ru  s        r   r  z(GenerateSchema._generate_md_field_schema(  sh     00z:NN&""./F"G)*<= ,-B C)!*-
 
 
 	
r   core_schema.DataclassFieldc                    |                      |||          }t          j        ||d         |j        |j        pd|j        rdnd|d         |d         |d         |d         |d         	
  
        S )
zJPrepare a DataclassField to represent the parameter/field, of a dataclass.r   NFrp  rq  rr  ry  r<  )init	init_onlykw_onlyrp  rq  rr  ry  r<  )r  r/   dataclass_fieldr  init_varr  r|  s        r   _generate_dc_field_schemaz(GenerateSchema._generate_dc_field_schema9  s     00z:NN*" )1T&.9DDE"./F"G)*<= ,-B C)!*-
 
 
 	
r   alias_generator%Callable[[str], str] | AliasGeneratorr   c                   |j         !|j         dk    s|j        |j        |j        !d\  }}}t	          | t
                    r|                     |          \  }}}nOt	          | t                    r: | |          }t	          |t                    st          d|  d|j
                   |j         |j         dk    rd|_         |j         dk    r1t          ||          |_        t          ||          |_        ||_        |j        ||_        |j        t          ||          |_        |j        t          ||          |_        dS dS dS )a  Apply an alias_generator to aliases on a FieldInfo instance if appropriate.

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

        Args:
            alias_generator: A callable that takes a string and returns a string, or an AliasGenerator instance.
            computed_field_info: The ComputedFieldInfo instance to which the alias_generator is (maybe) applied.
            computed_field_name: The name of the computed field from which to generate the alias.
        NrL   r  r  r  )
r  r  rc  r9   r  r   r   r   r   r   )r  r  r  r  rq  rr  s         r   -_apply_alias_generator_to_computed_field_infoz<GenerateSchema._apply_alias_generator_to_computed_field_info  s   $  .6"1Q66"(0;K8E#%8/>:: q?N?_?_`s?t?t<')<)<OX66 q'(;<<!%-- q#$o$o$o^c^m$o$oppp
 #19=P=_cd=d=d56#2
 #1Q66,?@SUZ,[,[#)))+ 10( 76r   r   c                    |j         p| j         }|dS |j        D |||          }t          |t                    st	          d| d|j                   ||_        dS dS )ae  Apply a field_title_generator on a FieldInfo or ComputedFieldInfo instance if appropriate
        Args:
            config_wrapper: The config of the model
            field_info: The FieldInfo or ComputedField instance to which the title_generator is (maybe) applied.
            field_name: The name of the field from which to generate the title.
        Nzfield_title_generator r  )field_title_generatorr   rc  r   r   r   )r   rm  r   r  r   s        r   *_apply_field_title_generator_to_field_infoz9GenerateSchema._apply_field_title_generator_to_field_info  s     !+ @ hNDh (F#))*jAAEeS)) y w9N w wfkfu w wxxx$J $#r   _CommonFieldc                .    t                      }j        s	 t          j        j        g j        R  }n'# t          $ r}t          j        |          |d }~ww xY wt          | j
                  }d_        t          |t                    ss |j        |          }|j        _        |j                                        D ](\  }}	|j        vr|j        vrt#          ||	           )g |j        j        _        j        j        }}
d fd}g }t'          |j                                        |          D ]?}|                    t.          |j        j                                     |                     @ j                            |          5  j                             |
||z   |          }n                     |
||z             }d d d            n# 1 swxY w Y   t'          |j                                        |          }tA          |          rd_!        d |D             fd|D             }tE          ||          }tG          |||          }$                                stK          |          } &                    |t'          |j'                                        |                    } (                     j)        |           tU                    \  }}i }tW          |||	            j)        j,        }| -                    ||           t]          j/        t`          tb          f          rj/        2                                }nj/        }tg          |j4        rdnd |j5        j6        |
          S )NTr   r)   r   c                >                         | j                  } | S r   )r  r  )r   rm  r  s    r   set_discriminatorz>GenerateSchema._common_field_schema.<locals>.set_discriminator  s     77
@XYYFMr   )transform_inner_schemac                .    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_extrarz  r   r)   r   r)   )7rr   	evaluatedrQ   	eval_type
annotationr  r
  rB   r  rp   r   rn   rl   from_annotation_attributes_setr   metadata_lookupsetattrr<  r   r  rG  r  r   r   rd  _from_decoratorr   r  r  ra  r  $_validators_require_validate_defaultvalidate_defaultr   r   rt  wrap_default_apply_field_serializersr  r  r  r   rT   r  r  rc  rq  r8   r:   convert_to_aliases_common_fieldexcluderr  ry  )r  rl  rm  r   rz   evaluated_typer  new_field_infor   r   rc  r   r  validators_from_decorators	decoratorr   this_field_validatorsr  r  core_metadatar  rq  r   s   ` `                   @r   r  z#GenerateSchema._common_field_schema  sq    -..	# 	WL!.!89N!gQUQf!g!g!g L L L1A!DD!KL*>4;MNNN#'J '8LMM W!:!:>!J!J(6(A
% +:@@BB 2 2DAq
 
 :::q
Hb?b?b
Aq111 'W(?&V*BU&V
##-#8*:M[	 	 	 	 	 	 	
 &("=j>Y>`>`>b>bdhii 	r 	rI&--.@AT.U.e.efo.p.pqqqq"''-- 		 		'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$OO!&*?FF
 %%'' 	6!*f55F..89U9\9\9^9^`dee
 
 	778LjZ^___1Z[e1f1f..(*/BVg	
 	
 	
 	
 .>&55ozSWXXXj1L)3LMM 	;):MMOO):*4*<"F$$$- * >$"
 
 
 	
s'   7 
AAA=G##G'*G'
union_typec                   |                      |d          }g }d}|D ]=}||t          j        u rd}|                    |                     |                     >t          |          dk    r	|d         }n}g }|D ]d}|                    di                               t          j                  }	|	|                    ||	f           O|                    |           et          j
        |          }|rt          j        |          }|S )zGenerate schema for a Union.Tr  FNrL   r   r<  )r  rQ   r?  r  r  r#  r   rM   TAGGED_UNION_TAG_KEYr/   union_schemanullable_schema)
r  r  r  choicesr   argr  choices_with_tagschoicetags
             r   rf  zGenerateSchema._union_schema$  s)   44Z$4OO$& 	: 	:C{c]%;;;t33C889999w<<1
AAKM! 5 5jjR0044[5UVV?%,,fc];;;;%,,V4444():;;A 	/+A..Ar   r2   c                t   | 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         j        |<   t!          j        |          cd d d            S # 1 swxY w Y   d S )Nr   r  r;  )r   r  r5   rm   r   r  rQ   r  	__value__r  r
  rB   r  rp   r  r  r/   r  )	r  r  r;  r  r  r   r  r  r   s	            r   rD  z&GenerateSchema._type_alias_type_schema?  s   Y((-- 	@1D#|'#	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ %/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$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ *0DI!#&:3??#	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@s^   D-:D-)C3+BC3
B,B''B,,;C3'D-3C7	7D-:C7	;%D--D14D1literal_typec                    t          j        |          }|sJ d|             t          j        |          }| j        j        r/t          d |D                       rt          j        d |          }|S )zGenerate schema for a Literal.z(literal "expected" cannot be empty, obj=c              3  @   K   | ]}t          |t                    V  d S r   )rc  r   r   s     r   r  z1GenerateSchema._literal_schema.<locals>.<genexpr>Y  s-      7^7^PQ
1d8K8K7^7^7^7^7^7^r   c                >    t          | t                    r| j        n| S r   )rc  r   r=  )r   s    r   r.  z0GenerateSchema._literal_schema.<locals>.<lambda>[  s    Z4%8%8?!''a r   )rQ   literal_valuesr/   literal_schemar  rO  anyrP  )r  r  expectedr   s       r   rI  zGenerateSchema._literal_schemaS  s     /==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        rt)          |d	          }nd}	 t+          j        | j        
          }n'# t0          $ r}t3          j        |          |d}~ww xY w|                                D ]\  }}t9          ||          }||	v }t+          j        |          r d}                     |d          d         }n3t+          j        |          rd}                     |d          d         } |j         |          }||j!        ||v r||         |_!         "                     j        ||            #                    |||          |
|<   tI          j%        |
| fdj&        '                                D             ||          } (                    |j)        '                                          }tU          |j+        '                                d          }| j        j,        |<   tI          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 schema for a TypedDict.

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

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

        Hence to avoid creating validators that do not do what users expect we only
        support typing.TypedDict on Python >= 3.12 or typing_extension.TypedDict on all versions
        NrT  zXPlease use `typing_extensions.TypedDict` instead of `typing.TypedDict` on Python < 3.12.ztyped-dict-versionr   __pydantic_config__r  T)use_inspectr   r  r   Fc                F    g | ]}                     |j                  S r   r  r  s     r   r   z5GenerateSchema._typed_dict_schema.<locals>.<listcomp>  <     % % % 33Az7STT% % %r   )r	  r  r;  r  all).rr   r   r  r   r  rm   _SUPPORTS_TYPEDDICTr   r  rC   re   AttributeErrorr   r  r  rK  __required_keys__r^   builduse_attribute_docstringsri   rQ   get_cls_type_hintsr   r
  rB   r  r   rp   rt  r  is_not_requiredr  r   r  rv  r/   typed_dict_schemar  rG  r  r  r  r  r  r  )r  r  r  rz   typed_dict_refr  r   r  r  required_keysr   field_docstringsr   r  r   r  r  rm  	td_schemar   r   s   `                   @r   rJ  z!GenerateSchema._typed_dict_schema`  s     -..	"''77 V	O V	O9T9TUc9d9d V	O i
'#V	O V	O V	O V	O V	O V	O V	O V	O V	O V	O V	O V	O V	O V	O V	O 5^DDL!!'& 4+?+?+Jh+V+V'n-   
 -E^Uj,k,k!    +0088 >O >O"2>>^E\>]]0>0P@B+1.AA
'@ ,'B>_c'd'd'd$$'+$P"/"B>_c_p"q"q"qKK  P P P5EaHHaOP /:.?.?.A.A  *J
!.z<!H!HJ)]:H$0<< #'%)%J%J&%) &K & & &

 '6zBB #(%)%J%J&%) &K & & &

 ";!::!F!FJ(4&2:&*:::1A*1M
.CCDDXZdfpqqq)-)G)G"J
X *H * *F:&& (9&% % % % %!+!;!B!B!D!D% % % '&	 	 		 66y*B^BeBeBgBghh/
8S8Z8Z8\8\^cdd8>	%n5">~NN}>O >O >O >O >O >O >O1V	O V	O V	O V	O V	O V	O V	O V	O V	O V	O V	O V	O V	O V	O V	O0>O >O >O >O >O >O >O >O >O1V	O V	O V	O V	O V	O V	O V	O V	O V	O V	O V	O V	O V	O V	O V	O V	O V	O V	O V	O V	O V	O V	O V	O V	O V	O V	O V	O V	O V	O V	O V	O V	O V	Os   N	M1N	&AM1*B;:M1;C
M1	C

M1'AME"!M"
F	,F	F	F.M4M1 N	MM1 M!M1%N	1M5	5N	8M5	9N		NN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d j        D             }r fd|                                D             }t          j         fd|                                D             ddi          }t          j        ||	          cddd           cddd           S # 1 swxY w Y   ddd           dS # 1 swxY w Y   dS )
z!Generate schema for a NamedTuple.Nr  c                    i | ]
}|t           S r   )r   )r   r   s     r   r   z5GenerateSchema._namedtuple_schema.<locals>.<dictcomp>  s    .V.V.V!q#.V.V.Vr   c                8    i | ]\  }}|t          |          S r   rp   )r   r   r  r   s      r   r   z5GenerateSchema._namedtuple_schema.<locals>.<dictcomp>  s9       .
J j, G G  r   c           
         g | ]@\  }}                     ||j                            |t          j                             AS ))default)_generate_parameter_schema_field_defaultsr   r   empty)r   r   r  r  r  s      r   r   z5GenerateSchema._namedtuple_schema.<locals>.<listcomp>  sb        /
J 33"" . > B B:y _ _ 4    r   'pydantic_js_prefer_positional_argumentsTrD  )r;  )r   r  r   r  rm   rQ   r  r   r
  rB   r  _fieldsr   r/   arguments_schemacall_schema)	r  r  r  namedtuple_refr  r   r  r  r   s	   ``      @r   rL  z!GenerateSchema._namedtuple_schema  s   "''77 #	a #	a9T9TUc9d9d #	a i
'##	a #	a #	a #	a #	a #	a #	a #	a #	a #	a #	a #	a #	a #	a #	a 5^DDL!!'L+>~[_[lmmm L L L1A!DD!KL W.V.V~?U.V.V.V    2=2C2C2E2E  
  +;     3>2C2C2E2E   DTJ
  
  
  *+;^Q_```G#	a #	a #	a #	a #	a #	a #	a #	a #	a #	a #	a #	a #	a #	a #	a #	a #	a #	a #	a #	a #	a #	a #	a #	a #	a #	a #	a #	a #	a #	a #	a #	a #	a #	a #	a #	a #	a #	a #	a #	a #	ase   E#E E#E-B	E	
B-B((B--BE2E#E	E#E	E##E'*E'r  	type[Any]r  rd  JLiteral['positional_only', 'positional_or_keyword', 'keyword_only'] | Nonecore_schema.ArgumentsParameterc                   t                      }|t          j        u r |j        |          }n |j        ||          }|j        
J d            | j                            |          5  |                     |j        |g          }ddd           n# 1 swxY w Y   |	                                st          ||          }t          j        ||          }|||d<   |j        |j        |d<   nd| j        j        }	t!          |	t"                    r |	j        |	                    |          |d<   n#t!          |	t$                    r |	|          |d<   |S )zXPrepare a ArgumentsParameter to represent a field in a namedtuple or function signature.Nz<field.annotation should not be None when generating a schemard  r  )rr   r   r  r  from_annotated_attributer  r   r  ra  rt  r  r/   arguments_parameterr  r  r  rc  r9   r   )
r  rl  r  r  rd  rz   r   r   parameter_schemar  s
             r   r  z)GenerateSchema._generate_parameter_schema  s    -..	io%%-I-j99EE6I6z7KKE++-k+++"''-- 	H 	H,,U-=wGGF	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H   "" 	1!%00F&:4HH'+V$;"(-W%%"2BO/>:: B?T?`,;,A,A$,G,G ))OX66 B,;OD,A,A )s   *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   r  z/GenerateSchema._tuple_schema.<locals>.<genexpr>  s-      RR%===RRRRRRr   r   )r   r   r7   z&Variable tuples can only have one typerL   r   c                :    g | ]}                     |          S r   )r  )r   r  r  s     r   r   z0GenerateSchema._tuple_schema.<locals>.<listcomp>/  s'    ,],],]UT-A-A%-H-H,],],]r   )rm   r  r   r   r/   tuple_schemar   Ellipsisr#  r  
ValueError)r  r  paramsr   s   `  @r   rA  zGenerateSchema._tuple_schema  sY    1<<66zBB 	SF 	SRRRR6RRRRRF  	_[(("/1G1I1I0J`abbbb #/333BZ8##6{{a"/1E1EfQi1P1P0Qghiiii !!IJJJ[[A&)r// +B///+,],],],]V\,],],]^^^r   c                ^    t          j        t          j        t                    dd          S )Nis_typezInput should be a type)custom_error_typecustom_error_message)r/   custom_error_schemarQ  r   r  s    r   rE  zGenerateSchema._type_schema1  s0    .*400'!9
 
 
 	
r   c                    t           j        dk     r
J d            ddlmm dfd
}dd gi}t          j        |t          j                    |          S )z/Generate schema for a zone_info.ZoneInfo objectr  FUnreachabler   )ZoneInfoZoneInfoNotFoundErrorr=  r   r   r  c                   t          |           r| S 	  |           S # t          t          f$ r t          ddd| i          w xY w)Nzoneinfo_strzinvalid timezone: {value}r=  )rc  r  r   r+   )r=  r  r  s    r   validate_str_is_valid_iana_tzzFGenerateSchema._zoneinfo_schema.<locals>.validate_str_is_valid_iana_tzA  sn    %** ix&):yA i i i).:UX_afWghhhis	   
  &Ar8  c                    dddS )Nrk  zoneinforl  r   r~  s     r   r.  z1GenerateSchema._zoneinfo_schema.<locals>.<lambda>I  s    hZd=e=e r   r   r<  )r=  r   r   r  )r  r  r  r  r  r/   rv  r  )r  r
  r<  r  r  s      @@r   r[  zGenerateSchema._zoneinfo_schema8  s     f$$'-''' 	=<<<<<<<	i 	i 	i 	i 	i 	i 	i ,.e.e-fg;)%:<<
 
 
 	
r   c                r                           |d          }t          j         fd|D                       S )z*Generate schema for `Type[Union[X, ...]]`.Tr  c                Z    g | ]'}                     t          j        |                   (S r   r  rT  r"   )r   r  r  s     r   r   z<GenerateSchema._union_is_subclass_schema.<locals>.<listcomp>S  s/    (b(b(bUY)=)=fk$>O)P)P(b(b(br   )r  r/   r  )r  r  r  s   `  r   _union_is_subclass_schemaz(GenerateSchema._union_is_subclass_schemaP  sB    44Z$4OO'(b(b(b(b]a(b(b(bcccr   type_c                                          |          }t          j        |          p|}t          j        |          r                                 S t          j        |          r*                     t          j        |j	                           S t          |t          j                  r|j        rYt          j        t          |j                            r                     |j                  S t!          j        |j                  S |j        r%t!          j         fd|j        D                       S                                  S t          j        t          |                    r                     |          S t          j        |          r                     |          }t-          j        |          st1          d|          t!          j        |          S )z-Generate schema for a Type, e.g. `Type[int]`.c                Z    g | ]'}                     t          j        |                   (S r   r  )r   cr  s     r   r   z3GenerateSchema._subclass_schema.<locals>.<listcomp>g  s-    ^^^aT))&+a.99^^^r   zExpected a class, got )r   rQ   annotated_typer  rE  rC  r  rT  r"   r  rc  r#   	__bound__re  r5   r  r/   is_subclass_schema__constraints__r  r  r  rI  rY  r   )r  r  
type_params   `  r   rg  zGenerateSchema._subclass_schemaU  s   //66
 #1*==K

++ 	>$$&&&-j99 	>''J4H(IJJJ
FN33 	># 	+ 0J<P1Q1QRR P99*:NOOO"5j6JKKK+ +"/^^^^:C]^^^   ((****:j+A+ABB 	>11*===$Z00 A!44Z@@
?:.. I 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]`.rL   )serialize_sequence_via_listSequence)cls_repr)sequence_validatorT)r   ri  )r3  rg  r   )_serializersr  r  r/   r  rx   rQ  rT  r  rQ   r  rt  r  r  no_info_wrap_validator_function#wrap_serializer_function_ser_schemarw  )	r  r  r  item_type_schemar  r3  rg  r  r   s	            r   rB  zGenerateSchema._sequence_schemau  s    ======//
;;!-.>??$[11#6vQ[\\\#J// 	777777'4 KL^`k l lm M $G'0@4
 
 
 0#=P]
 
 
 	
r   core_schema.GeneratorSchemac                z    |                      |          }t          j        |                     |                    S )z$Generate a schema for an `Iterable`.)r   r/   generator_schemar  )r  r  	item_types      r   rk  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          )NrL   )rt  r8  c                    dddS )Nrk  regexrl  r   r~  s     r   r.  z0GenerateSchema._pattern_schema.<locals>.<lambda>  s    hZa=b=b r   patternr   )r   return_schemar  Tr  r   r  r   )r   rt  r/   r   r   rx  rT  rP  rO  rv  pattern_either_validatorr  r   pattern_str_validatorr,  pattern_bytes_validatorrA   )r  r(  rt  r<  serr  s         r   rQ  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 )Nrf  rR  zInput should be hashable)r   r  r  )	r/   r  rw  r  r   rQ  rh  ri  Hashabler  s    r   rS  zGenerateSchema._hashable_schema  s    .4'4 +--{/MkoNf/g/gh  *<[_=UVV	   ,!;	
 	
 	
 		
r   	dataclasstype[StandardDataclass]type[StandardDataclass] | Nonec                v     j                             |          5   j                            |          5 \  }}||cddd           cddd           S t	          |          }||}t          |dd          }ddlm}  j                            |          5   j	                            |          5   ||          rAt          |j                  }|r*|                                D ]}	 |	j        |g j        R   nt          ||          } j        j        dk    r8|                                D ]#\  }
}	|	j        du rt)          d|
 d	d
          $|j                            d          pt/          j        |          t3           fd|                                D             d           }t5          |d          }t5          |d          }t7          j        |j        | fdj                                        D             |          }t?          |j                                         d          }j!                                        }tE          ||d          } j        #                    |j                  }t7          j$        |||||d t          j%        |          D             || j	        j&        j'        	  	        } (                    |j)                                                  }tE          ||d          }| j        j*        |<   t7          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  r7   )is_pydantic_dataclass)r   r  FzField zd has `init=False` and dataclass has config setting `extra="allow"`. This combination is not allowed.z dataclass-init-false-extra-allowr   r  c              3  L   K   | ]\  }}                     ||          V  d S r   )r  r  s      r   r  z3GenerateSchema._dataclass_schema.<locals>.<genexpr>  s9      aa$!QT33Aq*EEaaaaaar   c                0    |                      d          duS )Nr  Fr   )r   s    r   r.  z2GenerateSchema._dataclass_schema.<locals>.<lambda>  s    !%%	"2"2%"? r   )key__post_init__	__slots__c                F    g | ]}                     |j                  S r   r  r  s     r   r   z4GenerateSchema._dataclass_schema.<locals>.<listcomp>  r  r   )r  collect_init_onlyr  r  c                    g | ]	}|j         
S r   )rl  )r   r   s     r   r   z4GenerateSchema._dataclass_schema.<locals>.<listcomp>  s    RRR5EJRRRr   )r  r  r;  r   slotsr  ry  r  ),r   r  r   r  rm   r   r\  r8  r   r   r   r  rG  apply_typevars_mapr  rj   r  extrar   r  rC   r  r   r^   r  sortedr  r/   dataclass_args_schemarK  r  r   r  r  r  r  dataclass_schemar   r  ry  r  r  r  r  )r  r4  r  dataclass_refr  r   r  r8  r   r   r   r  has_post_init	has_slotsargs_schemar   r  r  	dc_schemar   r   s   `                   @r   r^  z GenerateSchema._dataclass_schema  s    "''	22 S	N S	NDI4O4OPY4Z4Z S	N _
'#S	N S	N S	N S	N S	N S	N S	N S	N S	N S	N S	N S	N S	N S	N S	N 5Y??L!"	
 Y(=tDDF;;;;;;"''	22 AN AND4N4S4STZ4[4[ AN AN((33 	%i&CDDF# [%+]]__ [ [E4E4\ZDDYZZZZZ5!%1  F
 '-88-3\\^^  )
E :.."3!D !D !D !D%G# # #  / '/334MNNqR`RfgpRqRq
 aaaaaRXR^R^R`R`aaa??   !(	? C C#I{;;	)?&% % % % %!+!;!B!B!D!D% % % '4    0Z=W=^=^=`=`bfgg#-#>#E#E#G#G 5lDTV]^^"2>>YEW>XX'8 #)+%RRK4Fy4Q4QRRR#&  5:A  	 66y*B^BeBeBgBghh/8H'RR7=	%m4">}MMCAN AN AN AN AN AN AN AN AN AN AN AN AN AN%S	N S	N S	N S	N S	N S	N S	N S	N S	N S	N S	N S	N S	N S	N S	N$AN AN AN AN AN AN AN AN AN AN AN AN AN AN AN AN AN AN AN AN AN AN AN%S	N S	N S	N S	N S	N S	N S	N S	N S	N S	N S	N S	N S	N S	N S	N S	N S	N S	N S	N S	N S	N S	N S	N S	N S	N S	N S	N S	N S	N S	N S	N S	N S	Ns   N.NN.ANM?7J M(	7M?NN.(M,,M?/M,0M?3N?NNNN
N.N	N.N	N..N25N2functionValidateCallSupportedTypescore_schema.CallSchemac                   t          |          }| j        \  }}t          j        |||          }t          j        dt          j        dt          j        di}g }d}d}	d}
|j        	                                D ]\  }}|j
        |j        u r t          j        t          t                    }n||         }|                    |j                  }|3|                     |||j        |          }|                    |           |j        t          j        k    r|                     |          }|j        t          j        k    sJ |j                    t          j        |          }|t1          |          st3          d|j        d          d	 |j        	                                D             }|                    |j                  }|r^t3          d
|j        dt;          |          dk    rdnd dd                    d t?          |          D                        d          d}
|                      |d          }	d}
|                     |          }	d}| j!        }|j"        r%|j#        }||j        ur|                     |          }tI          j%        tI          j&        |||
|	|j'                  ||          S )zsGenerate schema for a Callable.

        TODO support functional validators once we support them in Config
        )globalnslocalnspositional_onlypositional_or_keywordkeyword_onlyNz"Expected a `TypedDict` class, got zunpack-typed-dictr   c                B    h | ]\  }}|j         t          j        k    |S r   )kindr   POSITIONAL_ONLY)r   rl  ps      r   	<setcomp>z.GenerateSchema._call_schema.<locals>.<setcomp><  s3     0 0 0!(qafPYPiFiFiFiFiFir   zTyped dictionary z overlaps with parameterr7   r  r    z, c              3  4   K   | ]}t          |          V  d S r   )repr)r   rY  s     r   r  z.GenerateSchema._call_schema.<locals>.<genexpr>D  s(      (U(UQa(U(U(U(U(U(Ur   zoverlapping-unpack-typed-dictzunpacked-typed-dictuniform)var_args_schemavar_kwargs_modevar_kwargs_schemapopulate_by_name)r-  )(r   r  rQ   get_function_type_hintsr   rX  POSITIONAL_OR_KEYWORDKEYWORD_ONLY
parametersr   r  r  rT  r%   r   r   rW  r  r  r  VAR_POSITIONALr  VAR_KEYWORDunpack_typer6   rC   rK  intersectionr  r#  joinrE  rJ  r  validate_returnreturn_annotationr/   r  r  rb  )r  rM  sigrQ  rR  
type_hintsmode_lookuparguments_listr_  ra  r`  rl  rY  r  parameter_mode
arg_schemari  non_pos_only_param_namesoverlapping_paramsr-  r   return_hints                         r   rX  zGenerateSchema._call_schema  sC   
 !! 1'":8h`ghhh
 %'8+-D"Nr
 @B9=;?<@~++-- %	I %	IGD!|sy((#[c22

'-
(__QV44N)!<<T:qyZhii
%%j11119333"&"6"6z"B"Bv!6666666+7
CC*'44 /YAUYY`s   0 0,/N,@,@,B,B0 0 0, *B)N)N{Oj)k)k&) /X0D X X&)*<&=&=&B&BssX X#yy(U(U&AS:T:T(U(U(UUUX X "A	    '<O(,(?(?T(R(R%%&/O(,(<(<Z(H(H%%7;-) 	B/K#)++ $ 4 4[ A A&( / /"3!/!@   '

 

 

 
	
r   typevartyping.TypeVarc                X   t          |t          j                  sJ |j        }|j        }	 |                                }n## t          $ r t          |dd           d u}Y nw xY w|d ut          |          dk    z   |z   dk    rt          d          |r| 
                    |j                  S |r%|                     t          j        |                   S |rB| 
                    |          }t          j        d t          j                              |d<   |S t          j                    S )N__default__r   rL   zZPydantic does not support mixing more than one of TypeVar bounds, constraints and defaultsc                     ||           S r   r   )r-  hs     r   r.  z>GenerateSchema._unsubstituted_typevar_schema.<locals>.<lambda>y  s    QQqTT r   )r   r   )rc  rT  r#   r  r  has_defaultr  r   r#  NotImplementedErrorr  rz  rf  r$   r/   r"  r   )r  rw  r   constraintstypevar_has_defaultr   s         r   rU  z,GenerateSchema._unsubstituted_typevar_schemaa  sc   '6>22222!-	T")"5"5"7"7 	T 	T 	T")'=$"G"Gt"S	T #k"2"2a"78;NNQRRR%l    	,''(;<<< 		,%%fl;&?@@@ 	,))%00F&1&U!!+*@*B*B' ' 'F?# M)+++s   A A! A!r  Decorator[ComputedFieldInfo]r  2dict[str, Decorator[FieldSerializerDecoratorInfo]]core_schema.ComputedFieldc                R   	 t          j        |j        |j        j        | j        j                  }n'# t          $ r}t          j	        |          |d }~ww xY w|t          u rt          dd          t          || j                  }t          j        |j        |          |_        |                     |          }|                     |t%          |                                |j                            }| j        j        }|"|                     ||j        |j                   |                     | j        |j        |j                   t3          |j                  \  }}i }	t5          |	ddi|r|ni |	           t7          j        |j        ||j        j        |	
          S )NrR  zComputed field is missing return type annotation or specifying `return_type` to the `@computed_field` decorator (e.g. `@computed_field(return_type=int|str)`)zmodel-field-missing-annotationr   )return_type)r  r  r  readOnlyTr  )r-  r  r<  )rN   get_function_return_typefuncr   r  r  localsr
  rB   r  r-   rC   rp   r   r\  replacer  r  r   rG  r   r  r  r  r  r   rT   r/   computed_fieldr  )
r  r  r  r  r  return_type_schemar  r  r  r  s
             r   r  z%GenerateSchema._computed_field_schema  s   
	H &>*D4I4P  KK  	H 	H 	H-=a@@aG	H+++#d5    $K1CDD $QVEEE!11+>>!::01B1I1I1K1KQ^\\
 

 .>&>> /QVabao ?    	778LafVWVdeee1Z[\[a1b1b..(*!+T jM`6h6I6Ifh j/	
 	
 	
 	

 )N*<AFL[h
 
 
 	
s   03 
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  )rr   r  ra  rc  r  )r  r  rz   rc  r   r   r  s          r   r(  z GenerateSchema._annotated_schema  s    ,..	$($I$I %J %
 %
!k ((kBB & 	: 	:J*i00 :%j&99r   r   tuple[Any, list[Any]] | Nonec                    ddl m}m}m} 	 t	          |           n# t
          $ r Y d S w xY wt          |          p|}|t          v r |||          S |t          v r |||          S |t          v r |||          S d S )NrL   ))deque_schema_prepare_pydantic_annotations)mapping_like_prepare_pydantic_annotations(path_schema_prepare_pydantic_annotations)
_std_types_schemar  r  r  hashr   r5   r   r   MAPPING_TYPES)r  r  r   r  r  r  
obj_origins          r   r`  z?GenerateSchema._get_prepare_pydantic_annotations_for_known_type  s    	
 	
 	
 	
 	
 	
 	
 	
 	
 	
	IIII 	 	 	44	  __+
##;;CMMM;&&<<S+NNN=((<<S+NNN4s    
**c                    | S r   r   r,  s    r   r.  zGenerateSchema.<lambda>  s    q r   rc  	list[Any]r  "Callable[[CoreSchema], CoreSchema]c                    t          t          j        |                    }                     t	          |                    }||\  }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).
        Nr  r   r   r)   c                                        |           }|                    |           }n|}t          | |          }|2t          |j        j                  }|                    ||            |          S r   )r  r  r  r  r   r  r  )r  r  r   r  r  r  rc  r  s        r   inner_handlerz8GenerateSchema._apply_annotations.<locals>.inner_handler  s     ??[QQM$44S99&#DS&#Q#Q #/"9&$)BW"X"X".))/;OPPP))&111r   r<  ) pydantic_js_annotation_functionsr  r   r   r)   )rE  rP   expand_grouped_metadatar`  r   rv   _get_wrapped_inner_schemar  rT   r   r  r   )r  rc  r   r  rb  r  r  get_inner_schemar  r   r  s   `` `       r   ra  z!GenerateSchema._apply_annotations  s%    4L[YYZZCCKQVWbQcQcdd?'*$KHJ(	2 	2 	2 	2 	2 	2 	2 	2 8tLL% 	 	J!#== *.N    "!+..+ 	s"--j"==M Qqrrrr;D<P<^`kmstttr   r<  c                   t                      }t          ||          rD|j        D ]}|                     ||          }|j        |                     ||j                  }|S |d         dk    rF|                    dt          j                              }|                     ||          }|r||d<   |S |}|                    dd           }|O|	                                }|dt          |           z   }|| j        j        v r| j        j        |         S ||d<   n|d         dk    rt|d         }|| j        j        v r^| j        j        |         	                                }|dt          |           z   }|| j        j        v r| j        j        |         S ||d<   t          j        ||	                                          }	|	|	S |S )Nr   r   r   r;  r@  definition-refr&  )rr   rc  r<  _apply_single_annotationr  r  r   r/   r   r   r]  r   r  rP   apply_known_metadata)
r  r   r<  rz   field_metadatar  r4  r;  new_refmaybe_updated_schemas
             r   r  z'GenerateSchema._apply_single_annotation  s   ,..	h	** 	"*"3 O O66v~NN%1;;FHDZ[[M&>Z''JJx)?)A)ABBE11%BBE )#(x M jj%%?[[]]F0X000G$)///y,W55#F5MMF^///&Cdi+++.s388:: 4DNN 4 44di3339099 'u8MhX^XcXcXeXeff+''r   c                    t                      }t          ||          rZ|j        D ]}|                     ||          }t	          |          \  }}|                    di           }t          |||           |S )Nr<  r  )rr   rc  r<  $_apply_single_annotation_json_schemar   r  rT   )r  r   r<  rz   r  r  r  r  s           r   r  z3GenerateSchema._apply_single_annotation_json_schema8  s     -..	h	** 	"*"3 [ [BB6>ZZ5^_g5h5h2!2"--j"==M 3FZk    r   r  r;   r  list[GetJsonSchemaFunction]rv   c                h     t          dd           pd d fd}t          |           S )	Nr  c                     ||           S r   r   )r  r/  s     r   r.  z:GenerateSchema._get_wrapped_inner_schema.<locals>.<lambda>O  s    GGFOO r   r  r   r   r   c                     |           }                     |          }                    |          }t          |          }|                    |           |S r   )r  r  r  r  )r  r   r  r  r  metadata_get_schemar  r  s      r   new_handlerz=GenerateSchema._get_wrapped_inner_schema.<locals>.new_handlerR  sq    ((1ABBF226:FFF>>vzRRF#DZQW#X#X #/0778LMMMMr   )r  r   r   r   )r   rv   )r  r  r  r  r  r  s   ```` @r   r  z(GenerateSchema._get_wrapped_inner_schemaH  sn     6=ZIgim5n5n 6
33 		 	 	 	 	 	 	 	 	 	 ,K>>>r   serializers-list[Decorator[FieldSerializerDecoratorInfo]]c                ^   |rt          |          }|d         dk    r#|d         }|                     ||          |d<   |S t          j        d|                    dd                    }|#|| j        j        |<   t          j        |          }|d         }t          |j
        |j        j                  \  }}	 t          j        |j
        |j        j        | j        j                  }n'# t$          $ r}	t'          j        |	          |	d}	~	ww xY w|t*          u rd}
n|                     |          }
|j        j        d	k    r,t          j        |j
        |||
|j        j        
          |d<   n=|j        j        dk    sJ t          j        |j
        |||
|j        j        
          |d<   |S )z$Apply field serializers to a schema.r   r  r   zstr|Noner;  Nr   r  r   )is_field_serializerri  r-  r   r   r   )r   r  rT  r%   r   r   r  r/   r  rf   r  r   rd  rN   r  r  r  r  r
  rB   r  r-   r  r"  r   r   )r  r   r  r   r;  
serializerr  ri  r  r  r-  s              r   r  z'GenerateSchema._apply_field_serializers^  s     /	&\\Ff~..%h/#'#@#@{#[#[x k*fjj.E.EFF?17DI)#.(DSIIF %RJ,DZ_V`VeVj,k,k)L *BOZ_%@$J_Jf    L L L1A!DD!KL /// $ $ 4 4[ A A#v--*5*YO(;%"/(o7+ + +'' "+w6666*5*ZO(;%"/(o7+ + +' s   ;0C, ,
D6DD1Iterable[Decorator[ModelSerializerDecoratorInfo]]c                j   |                     dd          }|rt          |          d         }t          |j        |j        j                  }	 t          j        |j        |j        j        | j	        j
                  }n'# t          $ r}t          j        |          |d}~ww xY w|t          u rd}n|                     |          }|j        j        dk    r(t!          j        |j        |||j        j                  }	n't!          j        |j        |||j        j                  }	|	|d<   |r||d<   |S )z$Apply model serializers to a schema.r;  Nr   r  r   )ri  r-  r   r   )r  rE  rg   r  r   rd  rN   r  r  r  r  r
  rB   r  r-   r  r/   r"  r   r   )
r  r   r  r;  r  ri  r  r  r-  
ser_schemas
             r   r  z'GenerateSchema._apply_model_serializers  sd    !**UD11 !	1k**2.J/
AUVVHL *BOZ_%@$J_Jf    L L L1A!DD!KL/// $ $ 4 4[ A A#v--4?4cO%"/(o7	5 5 5

 )MO%"/(o7	  
 '1F?# 	 F5Ms   0B   
B$
BB$)NN)r   rR   r   r   r   r   r   r   r   r   )r   rR   )r   rt   )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   r  r   r   r  )r  r   r  r  r   r  )r  r   r   r  )F)r  r   r  r   r   r  )r  r   r   r!  )r  r   r   r   )r  r   r  r   r   r)   )
rl  r   rm  rz   r   r^   r  r   r   rn  )rl  r   rm  rz   r   r^   r   rw  )rl  r   rm  rz   r   r^   r   r}  )r  r  rm  rz   r   r   r   r   )r  r  r  ry   r  r   )r   rR   rm  r   r   r   r   r   )rl  r   rm  rz   r   r^   r   r  )r  r   r   r   )r  r2   r   r)   )r  r   r   r)   )r  r   r  r   r   r   )r  r   r  r   r   r   )
rl  r   r  r  r  r   rd  r  r   r  )r  r   r   r   )r   r   )r  r   r   r   )r  r   r   r   )r  r   r   r$  )r(  r   r   r   )r4  r5  r  r6  r   r   )rM  rN  r   rO  )rw  rx  r   r   )r  r  r  r  r   r  )r  r   r   r   )r  r   r   r  r   r  )rc  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   r   r  r  r   r   )MrK  r  r  rH  r>  r  r  propertyr  r  r  r  r  r!  r$  rT  ry  r  r  r  r  	Exceptionr  r  r  r  r  r  r  r  r  r  r&   r  r   r$  r  r*  r_  rv  r  r  staticmethodr  r  r  r  rf  rD  rI  rJ  rL  r   r  r  rA  rE  r[  r  rg  rB  rk  rQ  rS  r^  rX  rU  r  r(  r`  ra  r  r  r  r  r  __classcell__)r   s   @r   r   r   >  s       ffI *..2	# # # # #
 
 
 
 
 
 / / / 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
 
 
 
"
2 
2 
2 
2	
 	
 	
 	
   $    9      	
 	
 	
 	
	/ 	/ 	/ 	/ -1- - - - -^aJ aJ aJ aJF	 	 	 	   @ @ @ @D   , iii XiWWW XW              $ $ $ $2m. m. m. m.^.. .. .. ..l 
 
 
 
 
 
&
 
 
 
"
 
 
 
* /[ /[ /[ \/[b (\ (\ (\ \(\T % % % \%*a
 a
 a
 a
F   6@ @ @ @(   hO hO hO hOT%a %a %a %aV ![_              D_ _ _ _<
 
 
 

 
 
 
0d d d d
> > > >@
 
 
 
.M M M Mr r r r8

 

 

 

WN WN WN WNrL
 L
 L
 L
\, , , ,<0
 0
 0
 0
d       D FQ[	-u -u -u -u -u^( ( ( (T    ? ? ? ?,6 6 6 6p) ) ) ) ) ) ) )r   r   c                ,    t          j        | |          S r   )r/   !no_info_before_validator_functionfr   r@  s      r   r.  r.    s    0]^_ag0h0h r   c                ,    t          j        | |          S r   )r/   rP  r  s      r   r.  r.    s    {/[\]_e/f/f r   c                *    t          j        |           S r   )r/   rv  )r  rn  ro  s      r   r.  r.    s    K,XYZ,[,[ r   c                ,    t          j        | |          S r   )r/   r!  r  s      r   r.  r.    s    k.YZ[]c.d.d r   c                0    t          j        | ||          S N)r   )r/   #with_info_before_validator_functionr  r   r   s      r   r.  r.    s    ;;j	6j< < < r   c                0    t          j        | ||          S r  )r/   "with_info_after_validator_functionr  s      r   r.  r.    s    +:h	6j; ; ; r   c                .    t          j        | |          S r  r  )r  r@  r   s      r   r.  r.    s    [5c	j6 6 6 r   c                0    t          j        | ||          S r  )r/   !with_info_wrap_validator_functionr  s      r   r.  r.    s    9f	6j: : : r   ))r   no-info)r   r  )r   r  )r   r  )r   	with-info)r   r  )r   r  )r   r  zMapping[tuple[FieldValidatorModes, Literal['no-info', 'with-info']], Callable[[Callable[..., Any], core_schema.CoreSchema, str | None], core_schema.CoreSchema]]_VALIDATOR_F_MATCHr  Iterable[Decorator[RootValidatorDecoratorInfo]] | Iterable[Decorator[ValidatorDecoratorInfo]] | Iterable[Decorator[FieldValidatorDecoratorInfo]]c                    |D ]O}t          |j        |j        j                  }|rdnd}t	          |j        j        |f         |j        | |          } P| S )a  Apply validators to a schema.

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

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

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

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

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

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

    Returns:
        The updated schema.
    r;  Nr  r   r  r   )rM  r   r   )r  r   rd  rh   r  r/   r  r!  r  r  r  rP  )r   r  rd  r;  r  ri  s         r   r  r  	  s   & jj--C n n	7??y~2h>>7??y~2h>>$Y^Y^5HII>&(( m$FPYP^gmnnn$Dineklll^ H,, o$HR[R`ioppp$FPYP^gmnnn>&'1111 n$GQZQ_hnooo$Ey~flmmm
 uMr   rm  rz   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`.
    )default_factorydefault_factory_takes_datar  )r  r  )r  r/   with_default_schemark   r  r  r-   )rm  r   s     r   r  r  3	  s     ! .&6'DZE_'`'`'8	
 
 
 	
 
	#4	4	4.J.A\
 
 
 	
 r   GetJsonSchemaFunction | Nonec                   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          | d          r)t          j        |           st          | j	        |          S |dS |S )z`Extract `__get_pydantic_json_schema__` from a type, handling the deprecated `__modify_schema__`.__get_pydantic_json_schema__N__modify_schema__r7  rK  zjThe `__modify_schema__` method is not supported in Pydantic v2. Use `__get_pydantic_json_schema__` insteadz in class ``r   r   zcustom-json-schemar   
__origin__)
r   r  rq   r  r7  rC   rQ   r'  r  r  )r   r   js_modify_functionr|   has_custom_v2_modify_js_funccls_names         r   r  r  L	  s    %CTJJr&'' ,..	 d* W6?&0BJPT(U(UVW 	% , 	r:t44H#nZb=j=V8=V=V=V=Vhjn n n)    r<   H)CB)G)G H0GGG!tr   c                  L    e Zd ZU ded<   ded<   ded<   ded<   ded	<   d
ed<   dS )r  r   r   4str | list[str | int] | list[list[str | int]] | Nonerq  r   rr  bool | Nonerp  ry  zdict[str, Any]r<  N)rK  r  r  r  r   r   r   r  r  k	  sZ         """"JJJJ####&&&&r   r  )rq  rr  rp  ry  r<  rq  r  rr  rp  r  ry  r<  c                   | |||||dS )Nr   rq  rr  rp  ry  r<  r   r  s         r   r  r  t	  s%     ,2!6  r   c                  2    e Zd ZdZd
dZedd            Zd	S )r  z*Keeps track of references and definitions.r   r   c                :    t                      | _        i | _        d S r   )r   seenr  r  s    r   r  z_Definitions.__init__	  s    !ee	>@r   r   r   3Iterator[tuple[str, None] | tuple[str, CoreSchema]]c              #  4  K   t          |          }|| j        v s	|| j        v r|t          j        |          fV  dS | j                            |           	 |dfV  | j                            |           dS # | j                            |           w xY w)ao  Get a definition for `tp` if one exists.

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

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

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

        At present the following types can be named/recursive:

        - BaseModel
        - Dataclasses
        - TypedDict
        - TypeAliasType
        N)rX   r  r  r/   r  adddiscard)r  r   r;  s      r   r  z_Definitions.get_schema_or_ref	  s      ( 2$)sd&666?DDEEEEEEIMM#'Dk!!!	!!#&&&&&	!!#&&&&s   A; ;BNr  )r   r   r   r  )rK  r  r  rH  r  r   r  r   r   r   r  r  	  sR        44A A A A ' ' ' ^' ' 'r   r  r  dict[str, CoreSchema]CoreSchema | Nonec                ~    | d         dk    r|                     | d         d           S | d         dk    r| d         S | S )Nr   r  r&  r  r   r;  )r   r  s     r   r  r  	  sJ    f~)))vl3T:::	=	(	(hr   c                  :    e Zd ZdZddZedd            Zdd
ZdS )r   _stackr   r   c                    g | _         d S r   r  r  s    r   r  z_FieldNameStack.__init__	  s    !#r   r   r   Iterator[None]c              #  x   K   | j                             |           d V  | j                                          d S r   r  r  r  )r  r   s     r   r  z_FieldNameStack.push	  s=      :&&&r   r   c                .    | j         r| j         d         S d S Nr   r  r  s    r   r   z_FieldNameStack.get	      ; 	;r?"4r   Nr  )r   r   r   r  )r   r   rK  r  r  r>  r  r   r  r   r   r   r   r   r   	  sa        I$ $ $ $    ^
     r   r   c                  :    e Zd ZdZddZedd            Zdd
ZdS )r   r  r   r   c                    g | _         d S r   r  r  s    r   r  z_ModelTypeStack.__init__	  s    "$r   type_objr   r  c              #  x   K   | j                             |           d V  | j                                          d S r   r  )r  r  s     r   r  z_ModelTypeStack.push	  s=      8$$$r   type | Nonec                .    | j         r| j         d         S d S r  r  r  s    r   r   z_ModelTypeStack.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)   )r   r   r   r   r   r   )r   r   r  r  r   r   r   r   )r  r  r   r   )r   r   r  r  rd  r  r   r   )rm  rz   r   r   r   r   )r   r   r   r)   r   r  )r   r   rq  r  rr  r   rp  r  ry  r  r<  r   r   r  )r   r)   r  r  r   r  )rH  
__future__r   _annotationscollections.abcrh  r\  r3  rI  ospathlibrO  r  rT  r   
contextlibr   r   r   decimalr   enumr   	fractionsr	   	functoolsr
   r   r   r   	ipaddressr   r   r   r   r   r   	itertoolsr   operatorr   r  r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   uuidr'   r(   typing_extensionspydantic_corer)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   aliasesr8   r9   r:   annotated_handlersr;   r<   r  r=   r>   r?   r@   errorsrA   rB   rC   functional_validatorsrD   rE   rF   rG   rH   r3  rI   versionrJ   rK   r   rM   rN   rO   rP   rQ   _configrR   rS   _core_metadatarT   rU   rV   rW   rX   rY   rZ   r[   r\   r]   r^   r_   r`   ra   rb   rc   rd   re   rf   rg   rh   _docs_extractionri   r  rj   rk   _forward_refrl   	_genericsrm   rn   ro   rp   _import_utilsrq   rr   _mock_val_serrs   _namespace_utilsrt   ru   _schema_generation_sharedrv   _utilsrw   rx   r   ry   rz   mainr|   r}   _dataclassesr~   r   r  r  r   r   AnyFieldDecoratorModifyCoreSchemaWrapHandlerGetCoreSchemaFunctionr   Tupler   r  rE  Listri  MutableSequencer   r   Set
MutableSetr   	frozenset	FrozenSetr   r   r   r   r  r   PathLikePathPurePath	PosixPathPurePosixPathPureWindowsPathr   MutableMappingOrderedDictDefaultDictdefaultdictCounterr  dequeDequer   rN  rW  r   r   r   r   r   r   JsonEncodersr   r   r   r  r   r  r  r  r  r  r  r  r  r   r   r   r   r   <module>rA     s)   3 3 3 2 2 2 2 2 2           				  				 



   % % % % % %                                 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             6 6 6 6 6 6 6 6 6 6                                                	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d c c c c c c c c c c c c c c c = = = = = = = = = = 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 ) ) ) ) ) ) # # # # # # 0 0 0 0 0 0 f f f f f f f f f f f f f f 6 6 6 6 6 6 6 6 0 0 0 0 0 0	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	                            : 9 9 9 9 9 L L L L L L L L . . . . . . t t t t t t t t t t t t M M M M M M M M ) ) ) ) ) ) 9 9 9 9 9 9 9 9 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 $%)**+-  3  #'B!C[E[![\  &,/ / / / /[_-LM
 M M M Mfj+/*DE	 E E E E )6+;[_=PQ  Q Q Q Q,
 , , , ,#]Km]hi i i i i$o{/GH H H H HKL
     N
OO"!

N ',fl; ; ; ; ; #  !))C D D  .Zghh  i i i i
   *   6n n n n" " " "J
A 
A 
A 
A DI{*+   D% % % %A A A A A A A AP< ihff[[dd          2   2    , , , ,^   2   >    9    NR&*)-     &$' $' $' $' $' $' $' $'N          &         r   