Ë
    RPf-|  ã                  óú  — 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	m
Z
 ddlmZ ddlmZ ddlmZmZmZmZ ddlZddlmZmZ dd	lmZmZ d
dlmZmZ d
dlmZ d
dlmZmZ ddl m!Z! ddl"m#Z#m$Z$m%Z%m&Z& ddl'm(Z(m)Z)m*Z* ddl+m,Z, ddl-m.Z.m/Z/ ddl0m1Z1m2Z2 ddl3m4Z4 ddl5m6Z6 ddl7m8Z8m9Z9m:Z:m;Z; ddl<m=Z=m>Z> ddl?m@Z@ ej‚                  rd
dlBmCZD d
dlBmEZEmFZF d
dlGmHZH n	eZI eJ«       ZDeJj–                  ZL G d„ deM«      ZN edeDf¬ «       G d!„ d"e
«      «       ZOd3d#„ZPd4d$„ZQ	 	 	 	 	 	 	 	 	 	 d5d%„ZRd6d&„ZSd7d'„ZT	 	 	 	 	 	 	 	 	 	 d8d(„ZUddd)œ	 	 	 	 	 	 	 	 	 	 	 	 	 d9d*„ZVd:d+„ZW G d,„ d-«      ZX G d.„ d/«      ZYd;d0„ZZd;d1„Z[d<d2„Z\y)=z"Private logic for creating models.é    )ÚannotationsN)ÚABCMeta)Úpartial)ÚFunctionType)ÚAnyÚCallableÚGenericÚNoReturn)ÚPydanticUndefinedÚSchemaSerializer)Údataclass_transformÚ
deprecatedé   )ÚPydanticUndefinedAnnotationÚPydanticUserError)Úcreate_schema_validator)ÚGenericBeforeBaseModelWarningÚPydanticDeprecatedSince20é   )ÚConfigWrapper)ÚDecoratorInfosÚPydanticDescriptorProxyÚget_attribute_from_basesÚunwrap_wrapped_function)Úcollect_model_fieldsÚis_valid_field_nameÚis_valid_privateattr_name)ÚGenerateSchema)ÚPydanticGenericMetadataÚget_model_typevars_map)Ú
MockValSerÚset_model_mocks)ÚCallbackGetCoreSchemaHandler)Úgenerate_pydantic_signature)Úget_cls_types_namespaceÚis_annotatedÚis_classvarÚparent_frame_namespace)ÚClassAttributeÚSafeGetItemProxy)ÚValidateCallWrapper)ÚField)Ú	FieldInfoÚModelPrivateAttr©Ú	BaseModelc                  ó$   ‡ — e Zd ZdZdˆ fd„Zˆ xZS )Ú_ModelNamespaceDictz{A dictionary subclass that intercepts attribute setting on model classes and
    warns about overriding of decorators.
    c                óÔ   •— | j                  |d «      }|rD||ur@t        |t        «      r0t        j                  d|› d|j
                  j                  › d�«       t        ‰| �!  ||«      S )Nú`z"` overrides an existing Pydantic `z` decorator)	ÚgetÚ
isinstancer   ÚwarningsÚwarnÚdecorator_infoÚdecorator_reprÚsuperÚ__setitem__)ÚselfÚkÚvÚexistingÚ	__class__s       €ú`/var/www/fastapitest/venv/lib/python3.12/site-packages/pydantic/_internal/_model_construction.pyr<   z_ModelNamespaceDict.__setitem__3   sc   ø€ ØŸ™  DÓ)ˆÙ˜ Ñ)¬j¸ÔCZÔ.[Ü�M‰M˜A˜a˜SÐ BÀ8×CZÑCZ×CiÑCiÐBjÐjuÐvÔwä‰wÑ" 1 aÓ(Ð(ó    )r>   Ústrr?   ÚobjectÚreturnÚNone)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r<   Ú__classcell__©rA   s   @rB   r2   r2   .   s   ø„ ñ÷)ñ )rC   r2   T)Úkw_only_defaultÚfield_specifiersc                  óÎ   ‡ — e Zd Z	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dˆ fd„Zej
                  sdd„Zedd„«       Zdˆ fd„Z	e
dd„«       Ze edd¬«      dd	„«       «       Zdˆ fd
„Zˆ xZS )ÚModelMetaclassNc                ó  •‡‡ ‡!— |�r×| j                  |«      \  }}	}
t        j                  |||«      }|j                  |d<   t	        ||j
                  |	|«      }|s|
r#t        ||«      Š‰�d$ˆfd„}||d<   n	t        |d<   |	|d<   i |
¥|¥|d<   t        ‰"| �$  | |||fi |¤Ž}ddl
m} |j                  }t        |v rG|j                  t        «      |j                  |«      k  r t        j                   t#        d	«      d¬
«       t%        |j&                  dd«       |_        |j*                  |j*                  u rdnd|_        t/        j0                  |«      |_        |r	||_        �n[t%        |di «      j7                  dd«      Š!t%        |dd«      xs ‰!Š ‰ �r‰!�rt9        ˆ fd„‰!D «       «      �sddlm} t?        ˆ!fd„‰ D «       «      }|‰!v rZ|‰ vrVdjA                  |D �cg c]  }|jB                  ‘Œ c}«      }|jB                  › d|› d|jB                  › d|› d�}tG        |«      ‚‰!|z   }djA                  |D �cg c]  }tE        |«      ‘Œ c}«      }d|› d�}d|› d�}t        |vrCdjA                  |D �cg c]  }|jB                  ‘Œ c}|gz   «      }|d|jB                  › d|› d�z  }tG        |«      ‚dd‰ d œ|_        d|_$        |jK                  «       D ]  \  }}|jM                  ||«       Œ |rtO        tQ        «       «      |_)        t%        |d!d«      }tU        |tV        «      rtY        |«      }t[        ||«      }t]        ||||«       |j^                  rd"|vrta        ||«       tc        |||d||¬#«       |j2                  jd                  jK                  «       D ��ci c]  \  }}||jf                  “Œ c}}|_4        tk        |«       t        ||�Ú  di |¤Ž |S t        ‰"| �$  | |||fi |¤ŽS c c}w c c}w c c}w c c}}w )%a…  Metaclass for creating Pydantic models.

        Args:
            cls_name: The name of the class to be created.
            bases: The base classes of the class to be created.
            namespace: The attribute dictionary of the class to be created.
            __pydantic_generic_metadata__: Metadata for generic models.
            __pydantic_reset_parent_namespace__: Reset parent namespace.
            _create_model_module: The module of the class to be created, if created by `create_model`.
            **kwargs: Catch-all for any other keyword arguments.

        Returns:
            The new class created by the metaclass.
        Úmodel_configNc                ó0   •— t        | |«        ‰| |«       y)z�We need to both initialize private attributes and call the user-defined model_post_init
                        method.
                        N)Úinit_private_attributes)r=   Ú_ModelMetaclass__contextÚoriginal_model_post_inits     €rB   Úwrapped_model_post_initz7ModelMetaclass.__new__.<locals>.wrapped_model_post_inite   s   ø€ ô 0°°iÔ@Ù0°°yÕArC   Úmodel_post_initÚ__class_vars__Ú__private_attributes__r   r/   z�Classes should inherit from `BaseModel` before generic classes (e.g. `typing.Generic[T]`) for pydantic generics to work properly.©Ú
stacklevelÚ__pydantic_base_init__FÚ__pydantic_generic_metadata__Ú
parameters© Ú__parameters__c              3  ó&   •K  — | ]  }|‰v –— Œ
 y ­w©Nra   )Ú.0Úxr`   s     €rB   ú	<genexpr>z)ModelMetaclass.__new__.<locals>.<genexpr>Œ   s   øè ø€ Ò?kÐTUÀÀZÄÑ?kùs   ƒ)ÚRootModelRootTypec              3  ó,   •K  — | ]  }|‰vsŒ|–— Œ y ­wrd   ra   )re   rf   Úparent_parameterss     €rB   rg   z)ModelMetaclass.__new__.<locals>.<genexpr>�   s   øè ø€ Ò.c°QÈÐQbÒHb¬qÑ.cùs   ƒ	�z, zS is a subclass of `RootModel`, but does not include the generic type identifier(s) zL in its parameters. You should parametrize RootModel directly, e.g., `class z(RootModel[z	]): ...`.ztyping.Generic[ú]zJAll parameters must be present on typing.Generic; you should inherit from ú.z- Note: `typing.Generic` must go last: `class ú(z): ...`))ÚoriginÚargsr`   Ú__pydantic_parent_namespace__Ú__hash__)Úraise_errorsÚtypes_namespaceÚcreate_model_module)r=   r0   rV   r   rF   rG   )7Ú_collect_bases_datar   Ú	for_modelÚconfig_dictÚinspect_namespaceÚignored_typesÚget_model_post_initrU   r;   Ú__new__Úmainr0   Ú__mro__r	   Úindexr7   r8   r   ÚgetattrÚ__init__Ú__pydantic_custom_init__rY   Ú__pydantic_post_init__r   ÚbuildÚ__pydantic_decorators__r_   r5   ÚallÚ
root_modelrh   ÚtupleÚjoinrH   rD   Ú	TypeErrorÚ__pydantic_complete__ÚitemsÚ__set_name__Úbuild_lenient_weakvaluedictr(   rp   r6   ÚdictÚunpack_lenient_weakvaluedictr%   Úset_model_fieldsÚfrozenÚset_default_hash_funcÚcomplete_model_classÚcomputed_fieldsÚinfoÚmodel_computed_fieldsÚset_deprecated_descriptorsÚ__pydantic_init_subclass__)#ÚmcsÚcls_nameÚbasesÚ	namespacer_   Ú#__pydantic_reset_parent_namespace__Ú_create_model_moduleÚkwargsÚbase_field_namesÚ
class_varsÚbase_private_attributesÚconfig_wrapperÚprivate_attributesrX   Úclsr0   Úmrorh   Úmissing_parametersrf   Úparameters_strÚerror_messageÚcombined_parametersÚgeneric_type_labelÚ	bases_strÚnameÚobjÚparent_namespacers   r>   r?   rW   r`   rj   rA   s#                                  @@@€rB   r{   zModelMetaclass.__new__=   sz  û€ ò6 ØDG×D[ÑD[Ð\aÓDbÑAÐ˜jÐ*Aä*×4Ñ4°U¸IÀvÓNˆNØ(6×(BÑ(BˆI�nÑ%Ü!2Ø˜>×7Ñ7¸ÐEUó"Ðñ "Ñ%<Ü+>¸yÈ%Ó+PÐ(Ø+Ð7õBð 4K�IÐ/Ò0ä3J�IÐ/Ñ0à*4ˆIÐ&Ñ'Ø2cÐ5LÐ2cÐPbÐ2cˆIÐ.Ñ/ä#(¡7¡?°3¸À%ÈÑ#]ÐV\Ñ#]ˆCå(à—+‘+ˆCÜ˜#‰~ #§)¡)¬GÓ"4°s·y±yÀÓ7KÒ"KÜ—‘Ü1ðBóð  !õô 07°s·|±|ÐE]Ð_dÓ/eÐ+eˆCÔ(Ø14×1DÑ1DÈ	×HaÑHaÑ1a©ÐgxˆCÔ&ä*8×*>Ñ*>¸sÓ*CˆCÔ'ñ -Ø4Q�Ö1ä$+¨CÐ1PÐRTÓ$U×$YÑ$YÐZfÐhjÓ$kÐ!Ü$ SÐ*:¸DÓAÒVÐEV�
ÚÒ"3¼CÓ?kÐYjÔ?kÕ<kÝ>ä).Ó.c¸*Ô.cÓ)cÐ&Ø(Ð,=Ñ=ÐBSÐ[eÑBeð *.¯©ÐHZÖ3[À1°A·J³JÒ3[Ó)\˜à"Ÿ|™|˜nÐ,Ø-Ð.ð /WØWZ×WcÑWcÐVdÐdoÐp~Ðoð  @IðJð &ô, $ MÓ2Ð2ð! /@ÐBTÑ.TÐ+Ø)-¯©ÐDWÖ3X¸q´C¸µFÒ3XÓ)Y˜Ø/>¸~Ð>NÈaÐ-PÐ*ð8Ø8JÐ7KÈ1ðNð &ô #¨%Ñ/ð
 )-¯	©	ÀuÖ2MÀ!°1·:³:Ò2MÐQcÐPdÑ2dÓ(e˜IØ)Ø"OÐPS×P\ÑP\È~Ð]^Ð_hÐ^iÐiqÐ rñ˜Mô $ MÓ2Ð2ð #ØØ",ñ5�Ô1ð ).ˆCÔ%ð 0×5Ñ5Ó7ò ,‘	��cØ× Ñ   dÕ+ð,ñ 3Ü4OÔPfÓPhÓ4i�Ô1Ü& sÐ,KÈTÓRÐÜÐ*¬DÔ1Ü#?Ð@PÓ#QÐ ä5°cÐ;KÓLˆOÜ˜S %¨¸ÔIà×$Ò$¨¸9Ñ)DÜ% c¨5Ô1ä ØØØØ"Ø /Ø$8õð @C×?ZÑ?Z×?jÑ?j×?pÑ?pÓ?r×(s±t°q¸!¨¨A¯F©F©Ó(sˆCÔ%ä& sÔ+ô
 �#�sÑ6Ñ@¸Ò@ØˆJô ‘7‘? 3¨°%¸ÑMÀfÑMÐMùòQ 4\ùò 4Yùò 3NùóT )ts   Ç!O2È<O7É8O<Î#Pc                óä   — | j                   j                  d«      }|r	||v r||   S |dk(  r;t        | dd«      }t        |t        «      r|j                  «       }|�t        | d«      S t        |«      ‚)zNThis is necessary to keep attribute access working for class attribute access.r[   Ú__pydantic_core_schema__Ú__pydantic_validator__N)Ú__dict__r5   r   r6   r!   ÚrebuildÚAttributeError)r=   Úitemr¤   Úmaybe_mock_validatorÚrebuilt_validators        rB   Ú__getattr__zModelMetaclass.__getattr__å   s€   € à!%§¡×!2Ñ!2Ð3KÓ!LÐÙ! dÐ.@Ñ&@Ø)¨$Ñ/Ð/ØÐ1Ò1ä'.¨tÐ5MÈtÓ'TÐ$ÜÐ2´JÔ?Ø(<×(DÑ(DÓ(FÐ%Ø(Ð4ä& tÐ-GÓHÐHÜ  Ó&Ð&rC   c                ó   — t        «       S rd   )r2   )r¥   ro   rŸ   s      rB   Ú__prepare__zModelMetaclass.__prepare__ô   s   € ä"Ó$Ð$rC   c                ó>   •— t        |d«      xr t        ‰| �	  |«      S )zsAvoid calling ABC _abc_subclasscheck unless we're pretty sure.

        See #3829 and python/cpython#92810
        r²   )Úhasattrr;   Ú__instancecheck__)r=   ÚinstancerA   s     €rB   r¾   z ModelMetaclass.__instancecheck__ø   s#   ø€ ô
 �xÐ!9Ó:Òb¼u¹wÑ?XÐYaÓ?bÐbrC   c                ó6  — ddl m} t        «       }t        «       }i }| D ]t  }t        ||«      sŒ||usŒ|j	                  t        |di «      j                  «       «       |j	                  |j                  «       |j	                  |j                  «       Œv |||fS )Nr   r/   Úmodel_fields)	r|   r0   ÚsetÚ
issubclassÚupdater   ÚkeysrZ   r[   )r›   r0   Úfield_namesr¡   r¤   Úbases         rB   ru   z"ModelMetaclass._collect_bases_dataÿ   s“   € å$ä #£ˆÜ"›uˆ
Ø:<ÐØò 	GˆDÜ˜$ 	Õ*¨t¸9Ò/Dà×"Ñ"¤7¨4°ÀÓ#D×#IÑ#IÓ#KÔLØ×!Ñ! $×"5Ñ"5Ô6Ø"×)Ñ)¨$×*EÑ*EÕFð	Gð ˜JÐ(:Ð:Ð:rC   úEThe `__fields__` attribute is deprecated, use `model_fields` instead.)Úcategoryc                óN   — t        j                  dt        «       | j                  S )NrÈ   )r7   r8   r   rÁ   ©r=   s    rB   Ú
__fields__zModelMetaclass.__fields__  s$   € ô 	�‰ØSÔUnô	
ð × Ñ Ð rC   c                ó`   •— t        t        ‰| �	  «       «      }d|v r|j                  d«       |S )NrÌ   )Úlistr;   Ú__dir__Úremove)r=   Ú
attributesrA   s     €rB   rÏ   zModelMetaclass.__dir__  s0   ø€ Üœ%™'™/Ó+Ó,ˆ
Ø˜:Ñ%Ø×Ñ˜lÔ+ØÐrC   )NTN)rš   rD   r›   útuple[type[Any], ...]rœ   údict[str, Any]r_   zPydanticGenericMetadata | Noner�   Úboolrž   ú
str | NonerŸ   r   rF   Útype)r¶   rD   rF   r   )ro   r   rŸ   r   rF   zdict[str, object])r¿   r   rF   rÔ   )r›   rÒ   rF   z6tuple[set[str], set[str], dict[str, ModelPrivateAttr]])rF   zdict[str, FieldInfo])rF   z	list[str])rH   rI   rJ   r{   ÚtypingÚTYPE_CHECKINGr¹   Úclassmethodr»   r¾   Ústaticmethodru   Úpropertyr   rÌ   rÏ   rL   rM   s   @rB   rQ   rQ   ;   så   ø„ ð IMØ48Ø+/ðcNàðcNð %ðcNð "ð	cNð
 (FðcNð .2ðcNð )ðcNð ðcNð 
õcNðJ ×Òó	'ð ò%ó ð%õcð ò;ó ð;ð ÙÐWÐbfÔgò!ó hó ð!÷ñ rC   rQ   c                ó¾   — t        | dd«      €Pi }| j                  j                  «       D ]#  \  }}|j                  «       }|t        usŒ|||<   Œ% t        | d|«       yy)a  This function is meant to behave like a BaseModel method to initialise private attributes.

    It takes context as an argument since that's what pydantic-core passes when calling it.

    Args:
        self: The BaseModel instance.
        __context: The context.
    Ú__pydantic_private__N)r   r[   r‹   Úget_defaultr   Úobject_setattr)r=   Ú	__contextÚpydantic_privater­   Úprivate_attrÚdefaults         rB   rU   rU     st   € ô ˆtÐ+¨TÓ2Ð:ØÐØ"&×"=Ñ"=×"CÑ"CÓ"Eò 	1ÑˆD�,Ø"×.Ñ.Ó0ˆGØÔ/Ò/Ø)0Ð  Ò&ð	1ô 	�tÐ3Ð5EÕFð ;rC   c                óZ   — d| v r| d   S ddl m} t        |d«      }||j                  ur|S y)zaGet the `model_post_init` method from the namespace or the class bases, or `None` if not defined.rY   r   r/   N)r|   r0   r   rY   )rœ   r›   r0   rY   s       rB   rz   rz   /  s?   € à˜IÑ%ØÐ*Ñ+Ð+å ä.¨uÐ6GÓH€OØ˜i×7Ñ7Ñ7ØÐð 8rC   c           
     óf  ‡— ddl m}mŠm} |t	        «       z   }i }| j                  di «      }d|v sd| v rt        d«      ‚t        «       }	t        | j                  «       «      D �]±  \  }
}|
dk(  rŒt        |t        «      r5|j                  | d   k(  r#d| v r|j                  j                  | d   «      rŒRt        ||«      s|j                  j                  d	k(  r|	j!                  |
«       Œ‰t        |‰«      rI|
j                  d
«      rt#        d|
›d�«      ‚t%        |
«      rt#        dd|
z   ›d|
›d�«      ‚|||
<   | |
= ŒÞt        ||«      r2t%        |
«      s'|
j'                  d«      xs d}t#        d|›d|
›d�«      ‚|
j                  d
«      r�Œ/t)        |
«      r%|
|vst+        ||
   «      r�ŒN ||¬«      ||
<   | |
= �Œ_|
|v r�Œe|
|vs�Œk|
|v rt-        d|
›d�d¬«      ‚t        ||«      rt-        d|
›d�d¬«      ‚t-        d|
› d|›d|
› d�d¬«      ‚ |j                  «       D ]†  \  }}t)        |«      sŒ||vsŒ||	vsŒt+        |«      rŒ(||vsŒ-t/        |dd«      d	k7  sŒ>t1        |«      r4t3        j4                  |«      ^}}t7        ˆfd„|D «       d«      }|�|||<   Œ} |«       ||<   Œˆ |S )a  Iterate over the namespace and:
    * gather private attributes
    * check for items which look like fields but are not (e.g. have no annotation) and warn.

    Args:
        namespace: The attribute dictionary of the class to be created.
        ignored_types: A tuple of ignore types.
        base_class_vars: A set of base class class variables.
        base_class_fields: A set of base class fields.

    Returns:
        A dict contains private attributes info.

    Raises:
        TypeError: If there is a `__root__` field in model.
        NameError: If private attribute name is invalid.
        PydanticUserError:
            - If a field does not have a type annotation.
            - If a field on base class was overridden by a non-annotated attribute.
    r   )r-   r.   ÚPrivateAttrÚ__annotations__Ú__root__zUTo define root models, use `pydantic.RootModel` rather than a field called '__root__'rS   rI   rJ   Ú	functoolsÚ__zXPrivate attributes must not use dunder names; use a single underscore prefix instead of rl   zJPrivate attributes must not use valid field names; use sunder names, e.g. Ú_z instead of Úmy_fieldz>Fields must not use names with leading underscores; e.g., use )rã   zField zŒ defined on a base class was overridden by a non-annotated attribute. All field definitions, including overrides, require a type annotation.zmodel-field-overridden)Úcodez requires a type annotationzmodel-field-missing-annotationz)A non-annotated attribute was detected: `z = z3`. All model fields require a type annotation; if `z‘` is not meant to be a field, you may be able to resolve this error by annotating it as a `ClassVar` or updating `model_config['ignored_types']`.Nc              3  ó<   •K  — | ]  }t        |‰«      sŒ|–— Œ y ­wrd   )r6   )re   r?   r.   s     €rB   rg   z$inspect_namespace.<locals>.<genexpr>¨  s   øè ø€ Ò$\¨1¼JÀqÐJZÕ<[¤QÑ$\ùs   ƒ•)Úfieldsr-   r.   ræ   Údefault_ignored_typesr5   r‰   rÂ   rÎ   r‹   r6   rÖ   rI   rJ   Ú
startswithrA   ÚaddÚ	NameErrorr   Úlstripr   r'   r   r   r&   Útyping_extensionsÚget_argsÚnext)rœ   ry   Úbase_class_varsÚbase_class_fieldsr-   ræ   Úall_ignored_typesr¤   Úraw_annotationsÚignored_namesÚvar_nameÚvalueÚsuggested_nameÚann_nameÚann_typerë   Úmetadatarâ   r.   s                     @rB   rx   rx   ;  sY  ø€ ÷4 BÑAà%Ô(=Ó(?Ñ?Ðà68ÐØ—m‘mÐ$5°rÓ:€Oà�_Ñ$¨
°iÑ(?ÜÐoÓpÐpä!›e€MÜ 	§¡Ó 1Ó2ó ;‰ˆ�%Ø�~Ò%Øä�uœdÔ#Ø× Ñ  I¨lÑ$;Ò;Ø )Ñ+Ø×"Ñ"×-Ñ-¨i¸Ñ.GÔHð Ü˜Ð0Ô1°U·_±_×5OÑ5OÐS^Ò5^Ø×Ñ˜hÔ'ØÜ˜Ð/Ô0Ø×"Ñ" 4Ô(ÜðBØBJÀÈQðPóð ô % XÔ.Üð/Ø/2°X©~Ð.@ÀÈXÈLÐXYð[óð ð ,1Ð˜xÑ(Ø˜(Ñ#Ü˜˜yÔ)Ô2EÀhÔ2OØ%Ÿ_™_¨SÓ1Ò?°ZˆNÜðØ,Ð/¨|¸H¸<ÀqðJóð ð
 × Ñ  Ô&ÙÜ& xÔ0Ø˜Ñ.´kÀ/ÐRZÑB[Ö6\Ù/:À5Ô/IÐ" 8Ñ,Ø˜hÒ'Ø˜Ñ(ÙØ˜_Ó,ØÐ,Ñ,Ü'Ø˜X˜Lð )]ð ^à1ôð ô
 ˜E 9Ô-Ü'Ø˜X˜LÐ(CÐDÐKkôð ô (Ø?À¸zÈÈUÈIð V,Ø,4¨:ð 6jðkð :ô	ð ðm;ðz .×3Ñ3Ó5ò 9Ñˆ�(ä% hÕ/ØÐ 2Ò2Ø Ò-Ü Õ)ØÐ 1Ò1Ü˜ ,°Ó5¸ÓDä˜HÔ%Ü0×9Ñ9¸(ÓC���HÜ#Ó$\°Ô$\Ð^bÓc�ØÐ+Ø3?Ð& xÑ0ØÙ+6«=Ð˜xÒ(ð9ð" ÐrC   c                óž   — t        |d«      }t        | «      }|d t        j                  hv st	        |dd «      |j
                  k(  r|| _        y y )Nrq   Ú__code__)r   Úmake_hash_funcrE   rq   r   r  )r¥   r›   Úbase_hash_funcÚnew_hash_funcs       rB   r’   r’   ±  sP   € Ü-¨e°ZÓ@€NÜ" 3Ó'€MØ˜$¤§¡Ð0Ñ0´G¸NÈJÐX\Ó4]Ðan×awÑawÒ4wð %ˆ�ð 5xrC   c                ó†   ‡— | j                   r*t        j                  | j                   j                  «       Ž nd„ Šdˆfd„}|S )Nc                 ó   — y)Nr   ra   )rë   s    rB   ú<lambda>z make_hash_func.<locals>.<lambda>¿  s   � rC   c                ó¢   •— 	 t         ‰| j                  «      «      S # t        $ r' t         ‰t        | j                  «      «      «      cY S w xY wrd   )Úhashr³   ÚKeyErrorr*   )r=   Úgetters    €rB   Ú	hash_funcz!make_hash_func.<locals>.hash_funcÁ  sJ   ø€ ð	AÜ™˜tŸ}™}Ó-Ó.Ð.øÜò 	Aô
 ™Ô/°·±Ó>Ó?Ó@Ò@ð	Aús   ƒ ž-AÁA)r=   r   rF   Úint)rÁ   ÚoperatorÚ
itemgetterrÅ   )r¥   r  r  s     @rB   r  r  ¾  s;   ø€ Ø>A×>NÒ>NŒX× Ñ  #×"2Ñ"2×"7Ñ"7Ó"9Ñ:ÑT_€FõAð ÐrC   c                ó$  — t        | «      }t        | ||||¬«      \  }}|| _        | j                  j	                  |«       |D ]K  }| j
                  j                  |d«      }|€Œ"|j                  t        usŒ5t        | ||j                  «       ŒM y)a.  Collect and set `cls.model_fields` and `cls.__class_vars__`.

    Args:
        cls: BaseModel or dataclass.
        bases: Parents of the class, generally `cls.__bases__`.
        config_wrapper: The config wrapper instance.
        types_namespace: Optional extra namespace to look for types in.
    )Útypevars_mapN)
r    r   rÁ   rZ   rÄ   r[   Úpoprã   r   Úsetattr)	r¥   r›   r£   rs   r  rï   r¡   r>   rþ   s	            rB   r�   r�   Î  s�   € ô *¨#Ó.€LÜ-¨c°5¸.È/ÐhtÔuÑ€FˆJà€CÔØ×Ñ×Ñ˜jÔ)àò 
+ˆð ×*Ñ*×.Ñ.¨q°$Ó7ˆØÑ §¡Ô6GÒ!GÜ�C˜˜EŸM™MÕ*ñ
+rC   )rr   rt   c          	     óÚ  — t        | «      }t        |||«      }t        t        |j                  d¬«      |d¬«      }|j
                  rt        | |«       y	 | j                  | |«      }	|j                  | «      }	 |j                  |	«      }	|	| _        t        |	| |xs | j                  | j                   |rdnd||j"                  «      | _        t'        |	|«      | _        d	| _        t-        d
t/        | j0                  | j2                  |¬«      «      | _        y	# t        $ r(}
|r‚ t        | |d|
j                  › d�«       Y d}
~
yd}
~
ww xY w# |j                  $ r t        | |«       Y yw xY w)a  Finish building a model class.

    This logic must be called after class has been created since validation functions must be bound
    and `get_type_hints` requires a class object.

    Args:
        cls: BaseModel or dataclass.
        cls_name: The model or dataclass name.
        config_wrapper: The config wrapper instance.
        raise_errors: Whether to raise errors.
        types_namespace: Optional extra namespace to look for types in.
        create_model_module: The module of the class to be created, if created by `create_model`.

    Returns:
        `True` if the model is successfully completed, else `False`.

    Raises:
        PydanticUndefinedAnnotation: If `PydanticUndefinedAnnotation` occurs in`__get_pydantic_core_schema__`
            and `raise_errors=True`.
    F)Úfrom_dunder_get_core_schemaÚunpack)Úref_moder4   NÚcreate_modelr0   TÚ__signature__)Úinitrï   r£   )r    r   r#   r   Úgenerate_schemaÚdefer_buildr"   Ú__get_pydantic_core_schema__r   r­   Úcore_configÚclean_schemaÚCollectedInvalidr±   r   rI   rJ   Úplugin_settingsr²   r   Ú__pydantic_serializer__rŠ   r)   r$   r€   rÁ   r  )r¥   rš   r£   rr   rs   rt   r  Ú
gen_schemaÚhandlerÚschemaÚer!  s               rB   r“   r“   ì  s|  € ô: *¨#Ó.€LÜØØØó€Jô +Ü�
×*Ñ*ÈÔNØØô€Gð ×!Ò!Ü˜˜XÔ&ØðØ×1Ñ1°#°wÓ?ˆð !×,Ñ,¨SÓ1€KðØ×(Ñ(¨Ó0ˆð $*€CÔ ä!8ØØØÒ-˜sŸ~™~Ø×ÑÙ-‰°;ØØ×&Ñ&ó"€CÔô #3°6¸;Ó"G€CÔØ $€CÔô 'ØÜ#¨¯©¸c×>NÑ>NÐ_mÔnó€CÔð øôE 'ò ÙØÜ˜˜X¨¨1¯6©6¨(°! }Ô5Üûð	ûð ×&Ñ&ò Ü˜˜XÔ&Ùðús*   ÁD Á:E Ä	E	Ä!EÅE	ÅE*Å)E*c                óÆ  — | j                   j                  «       D ]>  \  }}|j                  x}€Œt        |«      }|j	                  | |«       t        | ||«       Œ@ | j                  j                  «       D ]i  \  }}|j                  x}€Œt        t        |j                  «      d«      rŒ5t        ||j                  «      }|j	                  | |«       t        | ||«       Œk y)z8Set data descriptors on the class for deprecated fields.NÚ__deprecated__)
rÁ   r‹   Údeprecation_messageÚ_DeprecatedFieldDescriptorrŒ   r  r–   r½   r   Úwrapped_property)r¥   ÚfieldÚ
field_infoÚmsgÚdescÚcomputed_field_infos         rB   r—   r—   A  sÚ   € à ×-Ñ-×3Ñ3Ó5ò &ÑˆˆzØ×1Ñ1Ð1ˆCÑ>Ü-¨cÓ2ˆDØ×Ñ˜c 5Ô)Ü�C˜ Õ%ð	&ð '*×&?Ñ&?×&EÑ&EÓ&Gò &Ñ"ˆÐ"à'×;Ñ;Ð;ˆSÑHäÔ3Ð4G×4XÑ4XÓYÐ[kÕlä-¨cÐ3F×3WÑ3WÓXˆDØ×Ñ˜c 5Ô)Ü�C˜ Õ%ñ&rC   c                  ó@   — e Zd ZU dZded<   d	d
d„Zdd„Zd	dd„Zdd„Zy)r-  aM  Data descriptor used to emit a runtime deprecation warning before accessing a deprecated field.

    Attributes:
        msg: The deprecation message to be emitted.
        wrapped_property: The property instance if the deprecated field is a computed field, or `None`.
        field_name: The name of the field being deprecated.
    rD   Ú
field_nameNc                ó    — || _         || _        y rd   )r1  r.  )r=   r1  r.  s      rB   r€   z#_DeprecatedFieldDescriptor.__init___  s   € ØˆŒØ 0ˆÕrC   c                ó   — || _         y rd   )r5  )r=   r¥   r­   s      rB   rŒ   z'_DeprecatedFieldDescriptor.__set_name__c  s	   € Øˆ�rC   c                ó  — |€t        | j                  «      ‚t        j                  | j                  t
        j                  d¬«       | j                  �| j                  j                  ||«      S |j                  | j                     S )Nr   r\   )
rµ   r5  r7   r8   r1  ÚbuiltinsÚDeprecationWarningr.  Ú__get__r³   )r=   r®   Úobj_types      rB   r;  z"_DeprecatedFieldDescriptor.__get__f  sh   € Øˆ;Ü  §¡Ó1Ð1ä�‰�d—h‘h¤× ;Ñ ;ÈÕJà× Ñ Ð,Ø×(Ñ(×0Ñ0°°hÓ?Ð?Ø�|‰|˜DŸO™OÑ,Ð,rC   c                ó,   — t        | j                  «      ‚rd   )rµ   r5  )r=   r®   rþ   s      rB   Ú__set__z"_DeprecatedFieldDescriptor.__set__s  s   € Ü˜TŸ_™_Ó-Ð-rC   rd   )r1  rD   r.  zproperty | NonerF   rG   )r¥   útype[BaseModel]r­   rD   rF   rG   )r®   zBaseModel | Noner<  ztype[BaseModel] | NonerF   r   )r®   r   rþ   r   rF   r
   )	rH   rI   rJ   rK   rç   r€   rŒ   r;  r>  ra   rC   rB   r-  r-  T  s"   … ñð ƒOô1óô-ô.rC   r-  c                  ó(   — e Zd ZdZdd„Zdd„Zdd„Zy)	Ú_PydanticWeakRefaê  Wrapper for `weakref.ref` that enables `pickle` serialization.

    Cloudpickle fails to serialize `weakref.ref` objects due to an arcane error related
    to abstract base classes (`abc.ABC`). This class works around the issue by wrapping
    `weakref.ref` instead of subclassing it.

    See https://github.com/pydantic/pydantic/issues/6763 for context.

    Semantics:
        - If not pickled, behaves the same as a `weakref.ref`.
        - If pickled along with the referenced object, the same `weakref.ref` behavior
          will be maintained between them after unpickling.
        - If pickled without the referenced object, after unpickling the underlying
          reference will be cleared (`__call__` will always return `None`).
    c                óL   — |€d | _         y t        j                  |«      | _         y rd   )Ú_wrÚweakrefÚref)r=   r®   s     rB   r€   z_PydanticWeakRef.__init__ˆ  s    € Øˆ;ð ˆD�Hä—{‘{ 3Ó'ˆD�HrC   c                ó<   — | j                   €y | j                  «       S rd   )rC  rË   s    rB   Ú__call__z_PydanticWeakRef.__call__�  s   € Ø�8‰8ÐØà—8‘8“:ÐrC   c                ó   — t          | «       ffS rd   )rA  rË   s    rB   Ú
__reduce__z_PydanticWeakRef.__reduce__–  s   € Ü¡$£& Ð*Ð*rC   N)r®   r   )rF   r   )rF   z4tuple[Callable, tuple[weakref.ReferenceType | None]])rH   rI   rJ   rK   r€   rG  rI  ra   rC   rB   rA  rA  w  s   „ ñó (óô+rC   rA  c                ó„   — | €yi }| j                  «       D ]  \  }}	 t        |«      }|||<   Œ |S # t        $ r |}Y Œw xY w)aX  Takes an input dictionary, and produces a new value that (invertibly) replaces the values with weakrefs.

    We can't just use a WeakValueDictionary because many types (including int, str, etc.) can't be stored as values
    in a WeakValueDictionary.

    The `unpack_lenient_weakvaluedict` function can be used to reverse this operation.
    N)r‹   rA  r‰   )ÚdÚresultr>   r?   Úproxys        rB   r�   r�   š  sa   € ð 	€yØØ€FØ—‘“	ò ‰ˆˆ1ð	Ü$ QÓ'ˆEð ˆˆqŠ	ðð €Møô ò 	ØŠEð	ús   �1±?¾?c                óŠ   — | €yi }| j                  «       D ]*  \  }}t        |t        «      r |«       }|€Œ |||<   Œ&|||<   Œ, |S )zAInverts the transform performed by `build_lenient_weakvaluedict`.N)r‹   r6   rA  )rK  rL  r>   r?   s       rB   r�   r�   ®  sX   € à€yØà€FØ—‘“	ò ‰ˆˆ1Ü�aÔ)Ô*Ù“ˆAØ‰}Ø��q’	àˆF�1ŠIðð €MrC   c                 óP   — ddl m}  t        t        t        t
        t        | t        fS )Nr   ©ÚComputedFieldInfo)rï   rQ  r   rÛ   rÙ   rÚ   r   r+   rP  s    rB   rð   rð   ¾  s&   € Ý*ô 	ÜÜÜÜØÜðð rC   )r=   r0   rà   r   rF   rG   )rœ   rÓ   r›   rÒ   rF   zCallable[..., Any] | None)
rœ   rÓ   ry   rÒ   rø   úset[str]rù   rR  rF   zdict[str, ModelPrivateAttr])r¥   r?  r›   rÒ   rF   rG   )r¥   r?  rF   r   )
r¥   r?  r›   rÒ   r£   r   rs   rÓ   rF   rG   )r¥   r?  rš   rD   r£   r   rr   rÔ   rs   údict[str, Any] | Nonert   rÕ   rF   rÔ   )r¥   r?  rF   rG   )rK  rS  rF   rS  )rF   rÒ   )]rK   Ú
__future__r   Ú_annotationsr9  r  r×   r7   rD  Úabcr   ré   r   Útypesr   r   r   r	   r
   rõ   Úpydantic_corer   r   r   r   Úerrorsr   r   Úplugin._schema_validatorr   r   r   Ú_configr   Ú_decoratorsr   r   r   r   Ú_fieldsr   r   r   Ú_generate_schemar   Ú	_genericsr   r    Ú_mock_val_serr!   r"   Ú_schema_generation_sharedr#   Ú
_signaturer$   Ú_typing_extrar%   r&   r'   r(   Ú_utilsr)   r*   Ú_validate_callr+   rØ   rï   r,   ÚPydanticModelFieldr-   r.   r|   r0   r:  rE   Ú__setattr__rß   rŽ   r2   rQ   rU   rz   rx   r’   r  r�   r“   r—   r-  rA  r�   r�   rð   ra   rC   rB   ú<module>rh     sÈ  ðÙ (Ý 2ã Û Û Û Û Ý Ý Ý ß 3Ó 3ã ß =ß =ç CÝ >ß OÝ "ß sÓ sß YÑ YÝ ,ß Fß 6Ý CÝ 3ß eÓ eß 4Ý /à	×ÒÝ4ß4Þ ð 3ÐÙ›Ðà×#Ñ#€ô
)˜$ô 
)ñ  TÐ=OÐ<QÔRô^�Wó ^ó Sð^óBGó$	ðsØðsà(ðsð ðsð  ð	sð
 !ósól
%óð +Ø	ð+Ø!6ð+ØHUð+Øhvð+à	ó+ðF à&*ñRØ	ðRàðRð "ðRð
 ðRð +ðRð $ðRð 
óRój&÷& .ñ  .÷F +ñ  +óFó(ô rC   