
     @g             
         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,m-Z-m.Z. ddlm/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z< ddl=m>Z> ddlm?Z? ddl@Z@ddlAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZI ddl@mJZJmKZKmLZLmMZMmNZNmOZO ddlPmQZQmRZRmSZS ddlTmUZUmVZV ddlWmXZXmYZYmZZZm[Z[ ddl\m]Z]m^Z^m_Z_ ddl`maZambZbmcZcmdZdmeZe ddlfmgZg ddlhmiZi ddlmjZj ddlkmlZlmmZmmnZnmoZompZp ddlqmrZrmsZs dd ltmuZu dd!llmvZvmwZwmxZxmyZymzZzm{Z{m|Z|m}Z} dd"lmm~Z~mZmZmZmZmZmZmZmZmZmZmZ 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    Ze:eeef         Z e9d2e3          Ze:e~e         e~e         e~e         f         ZeUZe1e0egeHjB        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j2        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j7        ej        ej        j7        ej        j        ej        e@j        ej        ej        ej        ej        g
Zej        ej        gZd4ed=<   e:e-e,e.e*e+ef         Z eMeئ          Zebeaedeed>Zd?ed@<   ddGZddMZddQZddXZdd[Ze2e8e0         eZf         ZddaZdddZ G de df          Zdg dh di dj dk dl dm dn doZdpedq<   ddtZddvZddzZdd}ZddZ G d deL          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)BuiltinFunctionTypeBuiltinMethodType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      W/var/www/piapp/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_fieldsrE   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_validatorsr\   r1   
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   r2   r   itemsjson_schema_extra)r   json_schema_updatess     r   )_extract_json_schema_info_from_field_infor     s~     '4?++Lt"/DL&t}55	  ZY,?,E,E,G,GYYY'4)?@@r   json_encodersJsonEncoders | Nonetpr   r+   c                *   | s|S d|v r|S |gt          |d|j        j                  dd         R D ]`}|                     |          }|t	          j        dt                       dt                     t          j	        |d          |d<   |c S |S )	a  Iterate over the json_encoders and add the first matching encoder to the schema.

    Args:
        json_encoders: A dictionary of types and their encoder functions.
        tp: The type to check for a matching encoder.
        schema: The schema to add the encoder to.
    serialization__mro__Nz=`json_encoders` is deprecated. See https://docs.pydantic.dev/z</concepts/serialization/#custom-serializers for alternativesjson	when_used)
getattr	__class__r   r   warningsr*   rL   rM   r1   $plain_serializer_function_ser_schema)r   r   r   baseencoders        r   ,_add_custom_serialization_from_json_encodersr     s      &   Hgb)R\-ABB3B3GHH  ##D))? ZMOO  Z  Z  Z%	
 	
 	
 #."RSZfl"m"m"mMr   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   7  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_wrapperrT   ns_resolverNsResolver | Nonetypevars_mapdict[Any, Any] | Noner   r   c                    t          |          | _        |pt                      | _        || _        t                      | _        t                      | _        t                      | _
        d S r   )rU   r   rw   r   r   _FieldNameStackr   _ModelTypeStackr   _Definitionsr   )selfr   r   r   s       r   __init__zGenerateSchema.__init__L  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.r9   )
stacklevel)super__init_subclass__r   r*   UserWarning)clsr   s    r   r	  z GenerateSchema.__init_subclass__Z  sE    !!###s	
 	
 	
 	
 	
 	
r   c                    | j         j        S r   )r   tailr  s    r   _config_wrapperzGenerateSchema._config_wrapperb  s    )..r   rv   c                    | j         j        S r   )r   types_namespacer  s    r   _types_namespacezGenerateSchema._types_namespacef  s     00r   r   c                    | j         j        S r   )r  arbitrary_types_allowedr  s    r   _arbitrary_typeszGenerateSchema._arbitrary_typesj  s    #;;r   
items_typer   r+   c                P    t          j        |                     |                    S r   )r1   list_schemagenerate_schemar  r  s     r   _list_schemazGenerateSchema._list_schemap  s!    &t';';J'G'GHHHr   	keys_typevalues_typec                x    t          j        |                     |          |                     |                    S r   )r1   dict_schemar  )r  r  r  s      r   _dict_schemazGenerateSchema._dict_schemas  s2    &t';';I'F'FH\H\]hHiHijjjr   c                P    t          j        |                     |                    S r   )r1   
set_schemar  r  s     r   _set_schemazGenerateSchema._set_schemav  s!    %d&:&::&F&FGGGr   c                P    t          j        |                     |                    S r   )r1   frozenset_schemar  r  s     r   _frozenset_schemaz GenerateSchema._frozenset_schemay  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   rK   c                r     ||           }|                     |          }|                               |S r   )resolve_ref_schemaupdate)r   r1  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)r;  r=  )r1   enum_schemar3  r4  )	_r1  r5  r6  casesenum_refr'  r7  r;  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+   r1  r>   r   rK   )r1  r>   r   rK   )list__members__valuesrZ   __doc__inspectcleandoc__name__r   
issubclassr+  r1   simple_ser_schemar   r,  r   r   	_missing_r   r9  rA  r  use_enum_values no_info_after_validator_functionr   is_instance_schema)r  r'  r   value_ser_typer8  default_missingrA  rE  rC  rD  r7  r;  s    `      @@@@r   _enum_schemazGenerateSchema._enum_schema|  sG   	 5 < < > >??	**"+"3\dd9I)J[9\9\,,,K(1+NN
KKz'7'7'9'9KKK
:>i%% 	[H4?4QRW4X4XNN	3'' 		[H(:5AANN	5)) 	[H(:7CCNN )MkkZZN +	# # # # # # &i&9:tLLPTP^PggO%1! /HY5H1O3DE  K #3 )Jw''N   # # # # # # # # # # 114L3MN   r   r   c                   ddl m}m} t          dt          dt
          dt          dt          dt          didfd}t          j
        t          j        |                   t          j        t          j        t          j                              t          j                            t          j        |dd          dfdgi          S )NrN   )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   r5  python_schemaTalways)info_argr   r:  c                    d         dS )Nstringr   formatr   )_1_2ip_type_json_schema_formatr   s     r   r0  z+GenerateSchema._ip_schema.<locals>.<lambda>  s    (VpqsVt9u9u r   
lax_schemastrict_schemar   r>  )r`  r   r   ra  r   rb  )_validatorsrX  rY  r   r   r   r   r   r   r1   lax_or_strict_schema no_info_plain_validator_functionjson_or_python_schemarR  
str_schemarS  r   )r  r   rX  rY  rg  rr  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].rN   )fraction_validatorrh  rj  r   r:  c                    dddS )Nrm  fractionrn  r   rp  rq  s     r   r0  z1GenerateSchema._fraction_schema.<locals>.<lambda>  s    \f?g?g r   rs  )	rv  r}  r1   rw  rx  ry  rS  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`.)re  r   r*   r
  r1   r   rS  )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.)rC   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   )rQ   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)rM  
__module____qualname__r   r   r   CollectedInvalidr    s        r   r  c                    |                      |          }t          |          }t          |          r|                                 t	          j        |          }t          |          }|S r   )collect_definitionsr]   rW   r  rQ   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   definitionsr1   definition_reference_schemadefinitions_schemarG  rI  )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>  r:  )r   
setdefaultappend)r  r  r  r>  r:  s        r   _add_js_functionzGenerateSchema._add_js_function6  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_schemaA  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, ...]`requiredrN   __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_validatorsrI  r  
validatorskeysrT   model_configcore_configrM  model_validatorsr   pushr   r   r   objectre  r   rS   eval_type_backport_make_forward_refr  r7   r   r   rC    _get_args_resolving_forward_refsis_anyr  __pydantic_root_model___common_field_schemaapply_model_validatorsr1   model_schemamodel_fields_schemar   r   root_validatorsrX   rq   _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_schemap  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   rE   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   r1   "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=  )rS   is_selfr  r   r  r   rx   r  hasattrr  r   re  ru   pydantic.v1r~   rN  r*   rM  r
  rM   r1   chain_schemar  r[   poprY   r  r  )r  r  r  rB  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 )rS   r  r  	NameErrorrD   from_name_errorre  r    __forward_arg__r   rr   )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   )re  r   rS   r  )r   r   s     r   	<genexpr>zBGenerateSchema._get_args_resolving_forward_refs.<locals>.<genexpr>J  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   )re  r    r  )r   r   r  s     r   r  zBGenerateSchema._get_args_resolving_forward_refs.<locals>.<genexpr>K  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)r6   sysversion_infotypesr  re  r   r   )r  r  r  argsr  s   `    r   r  z/GenerateSchema._get_args_resolving_forward_refsB  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_anyP  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 )Nr9   z Expected two type arguments for z, got 1r   rN   )r  r   lenr7   r   )r  r  r   r  s       r   _get_first_two_args_or_anyz)GenerateSchema._get_first_two_args_or_anyV  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)rS   is_annotated_annotated_schemare  r   r   r    r  r  rs   ry   r   r  r  rn   r1   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   r1   rz  bytesbytes_schemar+  
int_schemar,  float_schemar   bool_schemacomplexcomplex_schemarS   r  r  r   datetimedatedate_schemadatetime_schematimetime_schema	timedeltatimedelta_schemar   decimal_schemar)   uuid_schemar0   
url_schemar	   r  r,   multi_host_url_schemaNoneTypenone_schemar   r{  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_schemar8   _typed_dict_schemais_namedtuple_namedtuple_schemais_new_typer  __supertype__rePattern_pattern_schemais_hashable_hashable_schemare  typingr%   _unsubstituted_typevar_schemais_finalvarr   r"  VALIDATE_CALL_SUPPORTED_TYPES_call_schemarK  isclassrN  r   rV  is_zoneinfo_type_zoneinfo_schemadataclassesis_dataclass_dataclass_schemar7   _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_typex  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`  rS   rM  rN  r  rE  rF  origin_is_union_union_schemar   rC  r   r  r"  r   r#  r   r&  r   r   r&  r8   rL  rV  r$   r   _subclass_schemar   rD  r!   collectionsabc	Generator_iterable_schemarQ  rR  rS  rb  rc  r  r  r  )r  r  r  r  rd  re  r   s          r   ra  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_infor|   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  rr  rs  rt  r>  )r  r1   typed_dict_fieldis_required)r  rn  ro  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   rr  rs  rt  frozenr>  rr  rs  rt  r{  r>  )r  r1   model_fieldr  rn  ro  r   rw  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   NFrr  rs  rt  r{  r>  )init	init_onlykw_onlyrr  rs  rt  r{  r>  )r  r1   dataclass_fieldr  init_varr  r~  s        r   _generate_dc_field_schemaz(GenerateSchema._generate_dc_field_schema;  s     00z:NN*" )1T&.9DDE"./F"G)*<= ,-B C)!*-
 
 
 	
r   alias_generator%Callable[[str], str] | AliasGeneratorr   c                   |j         !|j         dk    s|j        |j        |j        !d\  }}}t	          | t
                    r|                     |          \  }}}nOt	          | t                    r: | |          }t	          |t                    st          d|  d|j
                   |j         |j         dk    rd|_         |j         dk    r1t          ||          |_        t          ||          |_        ||_        |j        ||_        |j        t          ||          |_        |j        t          ||          |_        dS dS dS )a  Apply an alias_generator to aliases on a FieldInfo instance if appropriate.

        Args:
            alias_generator: A callable that takes a string and returns a string, or an AliasGenerator instance.
            field_info: The FieldInfo instance to which the alias_generator is (maybe) applied.
            field_name: The name of the field from which to generate the alias.
        NrN   NNNalias_generator  must return str, not )alias_priorityaliasrs  rt  re  r;   generate_aliasesr   r   r   r   r   )r  ro  r   r  rs  rt  s         r   $_apply_alias_generator_to_field_infoz3GenerateSchema._apply_alias_generator_to_field_infoP  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_infor{   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.
        NrN   r  r  r  )
r  r  re  r;   r  r   r   r   r   r   )r  r  r  r  rs  rt  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   re  r   r   r   )r   ro  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                      }t          j        t          t          f          rt          j        j        g j        R ddi}t          | j	                  }|j        urt          |t                    ss |j        |          }|j        _        |j                                        D ](\  }}|j        vr|j        vrt          ||           )g |j        j        _        j        j        }
}	d fd}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                                        |          }t=          |          rd_        d |D             fd	|D             }tA          ||          }tC          |||          }"                                stG          |          } $                    |t#          |j%                                        |                    } &                     j'        |           tQ                    \  }}i }tS          |||
            j'        j*        }| +                    ||           tY          j-        t\          t^          f          rj-        0                                }nj-        }tc          |j2        rdnd |j3        j4        |          S )NlenientTr   r+   r   c                >                         | j                  } | S r   )r  r  )r   ro  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_extrar|  r   r+   r   r+   )5rt   rp   
annotationr    r   rS   	eval_typer  rr   r   rn   from_annotation_attributes_setr   metadata_lookupsetattrr>  r   r  rI  r  r   r   rf  _from_decoratorr   r  r  rc  r  $_validators_require_validate_defaultvalidate_defaultr   r   rv  wrap_default_apply_field_serializersr  r  r  r   rV   r  r  re  rs  r:   r<   convert_to_aliases_common_fieldexcludert  r{  )r  rn  ro  r   r|   	evaluatednew_field_infor   r   re  r   r  validators_from_decorators	decoratorr   this_field_validatorsr  r  core_metadatar  rs  r   s   ` `                  @r   r  z#GenerateSchema._common_field_schema  sN    -..	
 5
C7HII 	W%/
0ElH]lllgkllI%i1CDDI
 555>RS\^r>s>s5!:!:9!E!E(6(A
% +:@@BB 2 2DAq
 
 :::q
Hb?b?b
Aq111 'W(?&V*BU&V
##-#8*:M[	 	 	 	 	 	 	
 &("=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   =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  FNrN   r   r>  )r  rS   rA  r  r  r%  r   rO   TAGGED_UNION_TAG_KEYr1   union_schemanullable_schema)
r  r  r   choicesr   argr  choices_with_tagschoicetags
             r   rh  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   r4   c                ,   | j                             |          5 \  }}||cd d d            S t          |          p|}|j        }t	          |          }| j                            |          5  t          j        |g| j	        R ddi}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  Tr   r  r=  )r   r  r7   	__value__ro   r   r  rS   r  r  rr   r  r  r1   r  )r  r  r=  r  r  r  r   r   s           r   rF  z&GenerateSchema._type_alias_type_schema=  s   Y((-- 	@1D#|'#	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ %/sOO$:sF)J4S99L"''// $ $*4Zf$BWfffaeff
*:|DD
--j99f~6666 #u$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ *0DI!#&:3??!	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@s<   D	AD	0ACD	C	D	C	%D		DDliteral_typec                    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   )re  r   r  s     r   r  z1GenerateSchema._literal_schema.<locals>.<genexpr>V  s-      7^7^PQ
1d8K8K7^7^7^7^7^7^r   c                >    t          | t                    r| j        n| S r   )re  r   r?  )r   s    r   r0  z0GenerateSchema._literal_schema.<locals>.<lambda>X  s    Z4%8%8?!''a r   )rS   literal_valuesr1   literal_schemar  rQ  anyrR  )r  r  expectedr   s       r   rK  zGenerateSchema._literal_schemaP  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        d
          }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
        NrV  zXPlease use `typing_extensions.TypedDict` instead of `typing.TypedDict` on Python < 3.12.ztyped-dict-versionr   __pydantic_config__r  T)use_inspectFr   r  r  r   c                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).rt   r   r  r   r  ro   _SUPPORTS_TYPEDDICTr   r  rE   rg   AttributeErrorr   r  r  rM  __required_keys__r`   builduse_attribute_docstringsrk   rS   get_cls_type_hintsr   r  rD   r  r   rr   rv  r  is_not_requiredr  r   r  rx  r1   typed_dict_schemar  rI  r  r  r  r  r  r  )r  r  r  r|   typed_dict_refr  r   r  r  required_keysr   field_docstringsr   r  r   r  r  ro  	td_schemar   r   s   `                   @r   rL  z!GenerateSchema._typed_dict_schema]  s     -..	"''77 X	O X	O9T9TUc9d9d X	O i
'#X	O X	O X	O X	O X	O X	O X	O X	O X	O X	O X	O X	O X	O X	O X	O 5^DDL!!'& 4+?+?+Jh+V+V'n-   
 -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&D4Eu# # #KK ! 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NA@O @O @O @O @O @O @O1X	O X	O X	O X	O X	O X	O X	O X	O X	O X	O X	O X	O X	O X	O X	O0@O @O @O @O @O @O @O @O @O1X	O X	O X	O X	O X	O X	O X	O X	O X	O X	O X	O X	O X	O X	O X	O X	O X	O X	O X	O X	O X	O X	O X	O X	O X	O X	O X	O X	O X	O X	O X	O X	O X	Os   N
M2N
&AM2*B;:M2;C
M2	C

M2'AME#"M#
F	-F	F	F.M5M2N
MM2!M"M2&N
2M6	6N
9M6	:N

NNnamedtuple_clsc                     j                                       5   j                                      5 \  }}||cddd           cddd           S t	                    ||	 t          j         j        d          }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.NFr  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   rr   )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_argumentsTrF  )r=  )r   r  r   r  ro   rS   r  r   r  rD   r  _fieldsr   r1   arguments_schemacall_schema)	r  r  r  namedtuple_refr  r   r  r  r   s	   ``      @r   rN  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+>"0A5    L L L1A!DD!KL W.V.V~?U.V.V.V    2=2C2C2E2E  
  +;     3>2C2C2E2E   DTJ
  
  
  *+;^Q_```K%	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3E$E	E$E	E$$E(+E(r  	type[Any]r  rf  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 schemarf  r  )rt   r   r  r  from_annotated_attributer  r   r  rc  rv  r  r1   arguments_parameterr  r  r  re  r;   r   )
r  rn  r  r  rf  r|   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   r9   z&Variable tuples can only have one typerN   r   c                :    g | ]}                     |          S r   )r  )r   r  r  s     r   r   z0GenerateSchema._tuple_schema.<locals>.<listcomp>0  s'    ,],],]UT-A-A%-H-H,],],]r   )ro   r  r   r   r1   tuple_schemar   Ellipsisr%  r  
ValueError)r  r  paramsr   s   `  @r   rC  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)r1   custom_error_schemarS  r   r  s    r   rG  zGenerateSchema._type_schema2  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?  )re  r  r   r-   )r?  r  r	  s    r   validate_str_is_valid_iana_tzzFGenerateSchema._zoneinfo_schema.<locals>.validate_str_is_valid_iana_tzB  sn    %** ix&):yA i i i).:UX_afWghhhis	   
  &Ar:  c                    dddS )Nrm  zoneinforn  r   r  s     r   r0  z1GenerateSchema._zoneinfo_schema.<locals>.<lambda>J  s    hZd=e=e r   r   r>  )r?  r   r   r  )r  r  r  r  r	  r1   rx  r  )r  r  r>  r  r	  s      @@r   r]  zGenerateSchema._zoneinfo_schema9  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  rV  r$   )r   r   r  s     r   r   z<GenerateSchema._union_is_subclass_schema.<locals>.<listcomp>T  s/    (b(b(bUY)=)=fk$>O)P)P(b(b(br   )r  r1   r  )r  r  r   s   `  r   _union_is_subclass_schemaz(GenerateSchema._union_is_subclass_schemaQ  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>h  s-    ^^^aT))&+a.99^^^r   zExpected a class, got )r"  rS   annotated_typer  rG  rE  r  rV  r$   r  re  r%   	__bound__rg  r7   r  r1   is_subclass_schema__constraints__r  r  r  rK  r[  r   )r  r  
type_params   `  r   ri  zGenerateSchema._subclass_schemaV  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]`.rN   )serialize_sequence_via_listSequence)cls_repr)sequence_validatorT)r   rk  )r5  ri  r   )_serializersr  r  r1   r  rz   rS  rV  r  rS   r  rv  r!  r  no_info_wrap_validator_function#wrap_serializer_function_ser_schemary  )	r  r  r  item_type_schemar  r5  ri  r!  r   s	            r   rD  zGenerateSchema._sequence_schemav  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"  r1   generator_schemar  )r  r  	item_types      r   rm  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          )NrN   )rv  r:  c                    dddS )Nrm  regexrn  r   r  s     r   r0  z0GenerateSchema._pattern_schema.<locals>.<lambda>  s    hZa=b=b r   patternr   )r   return_schemar  Tr  r   r  r   )r   rv  r1   r   r   rz  rV  rR  rQ  rx  pattern_either_validatorr  r   pattern_str_validatorr.  pattern_bytes_validatorrC   )r  r*  rv  r>  serr  s         r   rS  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 )Nrh  rT  zInput should be hashable)r   r  r  )	r1   r  ry  r  r   rS  rj  rk  Hashabler  s    r   rU  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  r9   )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   r0  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   )rn  )r   r   s     r   r   z4GenerateSchema._dataclass_schema.<locals>.<listcomp>  s    RRR5EJRRRr   )r  r  r=  r   slotsr  r{  r  ),r   r  r   r  ro   r   r^  r:  r   r   r   r  rI  apply_typevars_mapr  rl   r  extrar   r  rE   r  r   r`   r  sortedr  r1   dataclass_args_schemarM  r  r   r  r  r  r  dataclass_schemar   r  r{  r  r  r  r  )r  r6  r  dataclass_refr  r   r  r:  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          |          }t          j        dt          j        dt          j        di}g }d}d}d}|j                                        D ]-\  }}	|	j        |j        u r t          j
        t          t                    }
nOt          |	j        t                    rt          j        |	j                  n|	j        }
|                     |
          }
|                    |	j                  }|3|                     ||
|	j        |          }|                    |           |	j        t          j        k    r|                     |
          }|	j        t          j        k    sJ |	j                    t          j        |
          }|t5          |          st7          d|j        d          d |j                                        D             }|                    |j                  }|r^t7          d	|j        d
t?          |          dk    rdnd dd                     d tC          |          D                        d          d}| "                    |d          }d}|                     |
          }/d}| j#        }|j$        r%|j%        }||j        ur|                     |          }tM          j'        tM          j(        |||||j)                  ||          S )zsGenerate schema for a Callable.

        TODO support functional validators once we support them in Config
        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   rn  ps      r   	<setcomp>z.GenerateSchema._call_schema.<locals>.<setcomp>A  s3     0 0 0!(qafPYPiFiFiFiFiFir   zTyped dictionary z overlaps with parameterr9   r  r    z, c              3  4   K   | ]}t          |          V  d S r   )repr)r   rY  s     r   r  z.GenerateSchema._call_schema.<locals>.<genexpr>I  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   rX  POSITIONAL_OR_KEYWORDKEYWORD_ONLY
parametersr   r  r  rV  r'   r   re  r   rS   r  r  r   rW  r  r  r  VAR_POSITIONALr  VAR_KEYWORDunpack_typer8   rE   rM  intersectionr  r%  joinrG  rL  r  validate_returnreturn_annotationr1   r  r  rb  )r  rO  sigmode_lookuparguments_listr_  ra  r`  rn  rY  r  parameter_mode
arg_schemarh  non_pos_only_param_namesoverlapping_paramsr/  r   return_hints                      r   rZ  zGenerateSchema._call_schema  s_   
 !! %'8+-D"Nr
 @B9=;?<@~++-- +	I +	IGD!|sy((#[c22

 FPPQP\^aEbEbtM3ALAAAhiht  "66zBB
(__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   rN   zZPydantic does not support mixing more than one of TypeVar bounds, constraints and defaultsc                     ||           S r   r   )r/  hs     r   r0  z>GenerateSchema._unsubstituted_typevar_schema.<locals>.<lambda>~  s    QQqTT r   )r   r   )re  rV  r%   r  r  has_defaultr  r   r%  NotImplementedErrorr  rx  rh  r&   r1   r$  r   )r  ru  r   constraintstypevar_has_defaultr   s         r   rW  z,GenerateSchema._unsubstituted_typevar_schemaf  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localnszComputed 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>  )rP   get_function_return_typefuncr   r  r  localsr  rD   r  r/   rE   rr   r   r^  replacer  r  r   rI  r   r  r  r  r  r   rV   r1   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  )rt   r  rc  re  r  )r  r  r|   re  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 )NrN   ))deque_schema_prepare_pydantic_annotations)mapping_like_prepare_pydantic_annotations(path_schema_prepare_pydantic_annotations)
_std_types_schemar  r  r  hashr   r7   r   r   MAPPING_TYPES)r  r  r   r  r  r  
obj_origins          r   rb  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   r0  zGenerateSchema.<lambda>  s    q r   re  	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  re  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+   )rG  rR   expand_grouped_metadatarb  r   rx   _get_wrapped_inner_schemar  rV   r   r  r   )r  re  r   r  rd  r  r  get_inner_schemar  r   r  s   `` `       r   rc  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=  rB  definition-refr(  )rt   re  r>  _apply_single_annotationr  r  r   r1   r   r   r]  r   r  rR   apply_known_metadata)
r  r   r>  r|   field_metadatar  r6  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  )rt   re  r>  $_apply_single_annotation_json_schemar   r  rV   )r  r   r>  r|   r  r  r  r  s           r   r  z3GenerateSchema._apply_single_annotation_json_schema=  s     -..	h	** 	"*"3 [ [BB6>ZZ5^_g5h5h2!2"--j"==M 3FZk    r   r  r=   r  list[GetJsonSchemaFunction]rx   c                h     t          dd           pd d fd}t          |           S )	Nr  c                     ||           S r   r   )r  r1  s     r   r0  z:GenerateSchema._get_wrapped_inner_schema.<locals>.<lambda>T  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_handlerW  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   rx   )r  r  r  r  r  r  s   ```` @r   r  z(GenerateSchema._get_wrapped_inner_schemaM  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_serializerrk  r/  r   r   r   )r   r  rV  r'   r   r   r  r1   r  rh   r  r   rf  rP   r  r  r  r  r  rD   r  r/   r  r$  r   r   )r  r   r  r   r=  
serializerr  rk  r  r  r/  s              r   r  z'GenerateSchema._apply_field_serializersc  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   )rk  r/  r   r   )r  rG  ri   r  r   rf  rP   r  r  r  r  r  rD   r  r/   r  r1   r$  r   r   )
r  r   r  r=  r  rk  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   rT   r   r   r   r   r   r   r   r   )r   rT   )r   rv   )r   r   )r  r   r   r+   )r  r   r  r   r   r+   )r'  r(  r   r+   )r   r   r   r+   )r   r+   r  )r   r+   r  r  r   r+   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+   )
rn  r   ro  r|   r   r`   r  r   r   rp  )rn  r   ro  r|   r   r`   r   ry  )rn  r   ro  r|   r   r`   r   r  )r  r  ro  r|   r   r   r   r   )r  r  r  r{   r  r   )r   rT   ro  r   r   r   r   r   )rn  r   ro  r|   r   r`   r   r  )r  r   r   r   )r  r4   r   r+   )r  r   r   r+   )r  r   r  r   r   r   )r  r   r  r   r   r   )
rn  r   r  r  r  r   rf  r  r   r  )r  r   r   r   )r   r   )r  r   r   r   )r  r   r   r   )r  r   r   r&  )r*  r   r   r   )r6  r7  r  r8  r   r   )rO  rP  r   rQ  )ru  rv  r   r   )r  r  r  r  r   r  )r  r   r   r   )r  r   r   r  r   r  )re  r   r   r  r  r  r   r+   )r   r   r>  r   r   r   )r  r=   r  r   r  r  r   rx   )r   r   r  r  r   r   )r   r   r  r  r   r   )MrM  r  r  rJ  r@  r  r	  propertyr  r  r  r  r   r#  r&  rV  r{  r  r  r  r  	Exceptionr  r  r  r  r  r  r  r  r  r  r(   r  r"  r&  r  r,  ra  rx  r  r  staticmethodr  r  r  r  rh  rF  rK  rL  rN  r   r  r  rC  rG  r]  r  ri  rD  rm  rS  rU  r`  rZ  rW  r  r*  rb  rc  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 % % % \%*]
 ]
 ]
 ]
~   6@ @ @ @&   jO jO jO jOX'a 'a 'a 'aZ ![_              D_ _ _ _<
 
 
 

 
 
 
0d d d d
> > > >@
 
 
 
.M M M Mr r r r8

 

 

 

WN WN WN WNrP
 P
 P
 P
d, , , ,<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   )r1   !no_info_before_validator_functionfr   rB  s      r   r0  r0    s    0]^_ag0h0h r   c                ,    t          j        | |          S r   )r1   rR  r  s      r   r0  r0    s    {/[\]_e/f/f r   c                *    t          j        |           S r   )r1   rx  )r  rp  rq  s      r   r0  r0    s    K,XYZ,[,[ r   c                ,    t          j        | |          S r   )r1   r#  r  s      r   r0  r0    s    k.YZ[]c.d.d r   c                0    t          j        | ||          S N)r   )r1   #with_info_before_validator_functionr  r   r   s      r   r0  r0    s    ;;j	6j< < < r   c                0    t          j        | ||          S r  )r1   "with_info_after_validator_functionr  s      r   r0  r0    s    +:h	6j; ; ; r   c                .    t          j        | |          S r  r   )r  rB  r   s      r   r0  r0    s    [5c	j6 6 6 r   c                0    t          j        | ||          S r  )r1   !with_info_wrap_validator_functionr  s      r   r0  r0    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  )rj   r  r   rf  r  )r   r  r   	validatorrk  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   rj  )r  r  s     r   r  r    s1        	>  	44	5r   0Iterable[Decorator[ModelValidatorDecoratorInfo]]rf   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   )rO  r   r   )r  r   rf  rj   r  r1   r  r#  r  r  r  rR  )r   r  rf  r=  r  rk  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   ro  r|   c                    | j         r4t          j        || j         t          | j                   | j                  S | j        t          ur!t          j        || j        | j                  S |S )a  Wrap schema with default schema if default value or `default_factory` are available.

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

    Returns:
        Updated schema by default value or `default_factory`.
    )default_factorydefault_factory_takes_datar  )r  r  )r  r1   with_default_schemarm   r  r  r/   )ro  r   s     r   r  r  8	  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__r9  rM  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  rs   r  r9  rE   rS   r)  r  r  )r   r   js_modify_functionr~   has_custom_v2_modify_js_funccls_names         r   r  r  Q	  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]] | Noners  r   rt  bool | Nonerr  r{  zdict[str, Any]r>  N)rM  r  r  r  r   r   r   r  r  p	  sZ         """"JJJJ####&&&&r   r  )rs  rt  rr  r{  r>  rs  r  rt  rr  r  r{  r>  c                   | |||||dS )Nr   rs  rt  rr  r{  r>  r   r  s         r   r  r  y	  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)rZ   r  r  r1   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  )rM  r  r  rJ  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   rM  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  rf  r  r   r   )ro  r|   r   r   r   r   )r   r   r   r+   r   r  )r   r   rs  r  rt  r   rr  r  r{  r  r>  r   r   r  )r   r+   r  r  r   r  )rJ  
__future__r   _annotationscollections.abcrj  r^  r5  rK  ospathlibrQ  r  rV  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&   r'   r(   uuidr)   r*   typing_extensionspydantic_corer+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   aliasesr:   r;   r<   annotated_handlersr=   r>   r  r?   r@   rA   rB   errorsrC   rD   rE   functional_validatorsrF   rG   rH   rI   rJ   r5  rK   versionrL   rM   r   rO   rP   rQ   rR   rS   _configrT   rU   _core_metadatarV   rW   rX   rY   rZ   r[   r\   r]   r^   r_   r`   ra   rb   rc   rd   re   rf   rg   rh   ri   rj   _docs_extractionrk   r  rl   rm   _forward_refrn   	_genericsro   rp   rq   rr   _import_utilsrs   rt   _mock_val_serru   _namespace_utilsrv   rw   _schema_generation_sharedrx   _utilsry   rz   r   r{   r|   mainr~   r   _dataclassesr   r   r  r  r   r   AnyFieldDecoratorModifyCoreSchemaWrapHandlerGetCoreSchemaFunctionr   Tupler   r  rG  Listrk  MutableSequencer   r   Set
MutableSetr   	frozenset	FrozenSetr   r   r   r   r  r   PathLikePathPurePath	PosixPathPurePosixPathPureWindowsPathr   MutableMappingOrderedDictDefaultDictdefaultdictCounterr  dequeDequer   rP  rY  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>r@     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             ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^                                                	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 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% % % %D D D D D D D DV< ihff[[dd          2   2    , , , ,^   2   >    9    NR&*)-     &$' $' $' $' $' $' $' $'N          &         r   