Ë
    °ëjq�  ã                  óh  — 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
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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l0m1Z1m2Z2 ddl3m4Z4m5Z5 ddl6m7Z7 ddl8m9Z9 ddl:m;Z; ddl<m=Z=m>Z>m?Z?m@Z@mAZAmBZB ddlCmDZDmEZE ddlFmGZG ej�                  rd
dlImJZK d
dlImLZLmMZM d
dlImNZO d
dlPmQZQ ne"ZR eS«       ZK eS«       ZOeSj¨                  ZU G d„ d eV«      ZWd!d"œ	 	 	 d9d#„ZX ed$eKeOeXf¬%«       G d&„ d'e«      «       ZYd:d(„ZZd;d)„Z[	 	 	 	 	 	 	 	 	 	 d<d*„Z\d=d+„Z]d>d,„Z^	 	 	 	 	 	 	 	 	 	 d?d-„Z_d$dd.œ	 	 	 	 	 	 	 	 	 	 	 	 	 d@d/„Z`dAd0„Za G d1„ d2«      Zb G d3„ d4«      ZcdBd5„ZddBd6„Ze ed¬7«      dCd8„«       Zfy)Dz"Private logic for creating models.é    )ÚannotationsN)ÚABCMeta)Ú	lru_cacheÚpartial)ÚFunctionType)ÚAnyÚCallableÚGenericÚLiteralÚ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)Úimport_cached_base_modelÚimport_cached_field_info)Úset_model_mocks)ÚCallbackGetCoreSchemaHandler)Úgenerate_pydantic_signature)Ú_make_forward_refÚeval_type_backportÚis_annotatedÚis_classvarÚmerge_cls_and_parent_nsÚparent_frame_namespace)ÚClassAttributeÚSafeGetItemProxy)ÚValidateCallWrapper)ÚField)Ú	FieldInfoÚModelPrivateAttr)ÚPrivateAttr)Ú	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       €ús/home/oem/CyberBrain26-unified/dev-env/.venv/lib/python3.12/site-packages/pydantic/_internal/_model_construction.pyrA   z_ModelNamespaceDict.__setitem__?   sc   ø€ ØŸ™  DÓ)ˆÙ˜ Ñ)¬j¸ÔCZÔ.[Ü�M‰M˜A˜a˜SÐ BÀ8×CZÑCZ×CiÑCiÐBjÐjuÐvÔwä‰wÑ" 1 aÓ(Ð(ó    )rC   ÚstrrD   ÚobjectÚreturnÚNone)Ú__name__Ú
__module__Ú__qualname__Ú__doc__rA   Ú__classcell__©rF   s   @rG   r7   r7   :   s   ø„ ñ÷)ñ )rH   r7   F©Úinitc                 ó   — y)zÍOnly for typing purposes. Used as default value of `__pydantic_fields_set__`,
    `__pydantic_extra__`, `__pydantic_private__`, so they could be ignored when
    synthesizing the `__init__` signature.
    N© rS   s    rG   ÚNoInitFieldrW   G   ó   � rH   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 |¤Ž}t        «       }|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-        j.                  |«      |_        |r	||_        �n[t#        |di «      j5                  dd«      Š"t#        |dd«      xs ‰"Š!‰!�r‰"�rt7        ˆ!fd„‰"D «       «      �sddlm} t=        ˆ"fd„‰!D «       «      }|‰"v rZ|‰!vrVdj?                  |D �cg c]  }|j@                  ‘Œ c}«      }|j@                  › d|› d|j@                  › d|› d�}tE        |«      ‚‰"|z   }dj?                  |D �cg c]  }tC        |«      ‘Œ c}«      }d|› d�}d|› d�}t        |vrCdj?                  |D �cg c]  }|j@                  ‘Œ c}|gz   «      }|d|j@                  › d|› d�z  }tE        |«      ‚dd‰!dœ|_        d|_#        |jI                  «       D ]  \  }}|jK                  ||«       Œ |rtM        tO        «       «      |_(        t#        |d d«      }tS        |tT        «      rtW        |«      }tY        ||«      }t[        ||||«       |j\                  rd!|vrt_        ||«       ta        |||d||¬"«       |j0                  jb                  jI                  «       D ��ci c]  \  }}||jd                  “Œ c}}|_3        ti        |«       t        ||�Ö  di |¤Ž |S d#D ]  }|jm                  |d«       Œ |j5                  d$i «      jo                  «        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)rB   ÚcontextÚoriginal_model_post_inits     €rG   Úwrapped_model_post_initz7ModelMetaclass.__new__.<locals>.wrapped_model_post_init{   s   ø€ ô 0°°gÔ>Ù0°°wÕ?rH   Úmodel_post_initÚ__class_vars__Ú__private_attributes__z�Classes should inherit from `BaseModel` before generic classes (e.g. `typing.Generic[T]`) for pydantic generics to work properly.r   ©Ú
stacklevelÚ__pydantic_base_init__FÚ__pydantic_generic_metadata__Ú
parametersrV   Ú__parameters__c              3  ó&   •K  — | ]  }|‰v –— Œ
 y ­w©NrV   )Ú.0Úxrk   s     €rG   ú	<genexpr>z)ModelMetaclass.__new__.<locals>.<genexpr>¢   s   øè ø€ Ò?kÐTUÀÀZÄÑ?kùs   ƒ)ÚRootModelRootTypec              3  ó,   •K  — | ]  }|‰vsŒ|–— Œ y ­wrn   rV   )ro   rp   Úparent_parameterss     €rG   rq   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Úargsrk   Ú__pydantic_parent_namespace__Ú__hash__)Úraise_errorsÚtypes_namespaceÚcreate_model_module)Ú__pydantic_fields_set__Ú__pydantic_extra__Ú__pydantic_private__Ú__annotations__©rB   r5   ra   r   rK   rL   )8Ú_collect_bases_datar   Ú	for_modelÚconfig_dictÚinspect_namespaceÚignored_typesÚget_model_post_initr`   r@   Ú__new__r#   Ú__mro__r
   Úindexr<   r=   r   ÚgetattrÚ__init__Ú__pydantic_custom_init__rd   Ú__pydantic_post_init__r   ÚbuildÚ__pydantic_decorators__rj   r:   ÚallÚ
root_modelrr   ÚtupleÚjoinrM   rI   Ú	TypeErrorÚ__pydantic_complete__ÚitemsÚ__set_name__Úbuild_lenient_weakvaluedictr-   rz   r;   Ú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__ÚpopÚclear)$ÚmcsÚcls_nameÚbasesÚ	namespacerj   Ú#__pydantic_reset_parent_namespace__Ú_create_model_moduleÚkwargsÚbase_field_namesÚ
class_varsÚbase_private_attributesÚconfig_wrapperÚprivate_attributesrc   Úclsr5   Úmrorr   Úmissing_parametersrp   Úparameters_strÚerror_messageÚcombined_parametersÚgeneric_type_labelÚ	bases_strÚnameÚobjÚparent_namespacer}   rC   rD   Úinstance_slotrb   rk   rt   rF   s$                                   @@@€rG   rŠ   zModelMetaclass.__new__S   s»  û€ ò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õ@ð 4K�IÐ/Ò0ä3J�IÐ/Ñ0à*4ˆIÐ&Ñ'Ø2cÐ5LÐ2cÐPbÐ2cˆIÐ.Ñ/ä#(¡7¡?°3¸À%ÈÑ#]ÐV\Ñ#]ˆCä0Ó2ˆIà—+‘+ˆ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ð "iò �Ø—‘Ø!Øõðð
 �M‰MÐ+¨RÓ0×6Ñ6Ô8Ü‘7‘? 3¨°%¸ÑMÀfÑMÐMùò] 4\ùò 4Yùò 3NùóT )ts   Ç%P/É P4É<P9Î'P>c                ód   — | j                   j                  d«      }|r	||v r||   S t        |«      ‚)zNThis is necessary to keep attribute access working for class attribute access.rf   )Ú__dict__r:   ÚAttributeError)rB   Úitemr´   s      rG   Ú__getattr__zModelMetaclass.__getattr__  s9   € à!%§¡×!2Ñ!2Ð3KÓ!LÐÙ! dÐ.@Ñ&@Ø)¨$Ñ/Ð/Ü  Ó&Ð&rH   c                ó   — t        «       S rn   )r7   )rµ   ry   r¯   s      rG   Ú__prepare__zModelMetaclass.__prepare__  s   € ä"Ó$Ð$rH   c                ó>   •— t        |d«      xr t        ‰| �	  |«      S )zsAvoid calling ABC _abc_subclasscheck unless we're pretty sure.

        See #3829 and python/cpython#92810
        Ú__pydantic_validator__)Úhasattrr@   Ú__instancecheck__)rB   ÚinstancerF   s     €rG   rË   z ModelMetaclass.__instancecheck__  s#   ø€ ô
 �xÐ!9Ó:Òb¼u¹wÑ?XÐYaÓ?bÐbrH   c                ó>  — t        «       }t        «       }t        «       }i }| D ]t  }t        ||«      sŒ||usŒ|j                  t	        |di «      j                  «       «       |j                  |j                  «       |j                  |j                  «       Œv |||fS )NÚmodel_fields)r#   ÚsetÚ
issubclassÚupdater�   Úkeysre   rf   )r«   r5   Úfield_namesr±   r´   Úbases         rG   r„   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Ð(:Ð:Ð:rH   úEThe `__fields__` attribute is deprecated, use `model_fields` instead.)Úcategoryc                óN   — t        j                  dt        «       | j                  S )NrÕ   )r<   r=   r   rÎ   ©rB   s    rG   Ú
__fields__zModelMetaclass.__fields__"  s$   € ô 	�‰ØSÔUnô	
ð × Ñ Ð rH   c                ó`   •— t        t        ‰| �	  «       «      }d|v r|j                  d«       |S )NrÙ   )Úlistr@   Ú__dir__Úremove)rB   Ú
attributesrF   s     €rG   rÜ   zModelMetaclass.__dir__*  s0   ø€ Üœ%™'™/Ó+Ó,ˆ
Ø˜:Ñ%Ø×Ñ˜lÔ+ØÐrH   )NTN)rª   rI   r«   útuple[type[Any], ...]r¬   údict[str, Any]rj   zPydanticGenericMetadata | Noner­   Úboolr®   ú
str | Noner¯   r   rK   Útype)rÄ   rI   rK   r   )ry   r   r¯   r   rK   zdict[str, object])rÌ   r   rK   rá   )r«   rß   rK   z6tuple[set[str], set[str], dict[str, ModelPrivateAttr]])rK   zdict[str, FieldInfo])rK   z	list[str])rM   rN   rO   rŠ   ÚtypingÚTYPE_CHECKINGrÅ   ÚclassmethodrÇ   rË   Ústaticmethodr„   Úpropertyr   rÙ   rÜ   rQ   rR   s   @rG   r\   r\   Q   så   ø„ ð IMØ48Ø+/ðiNàðiNð %ðiNð "ð	iNð
 (FðiNð .2ðiNð )ðiNð ðiNð 
õiNðV ×Òó	'ð ò%ó ð%õcð ò;ó ð;ð ÙÐWÐbfÔgò!ó hó ð!÷ñ rH   r\   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.
    r�   N)r�   rf   r™   Úget_defaultr   Úobject_setattr)rB   ra   Úpydantic_privater½   Úprivate_attrÚdefaults         rG   r`   r`   1  st   € ô ˆtÐ+¨TÓ2Ð:ØÐØ"&×"=Ñ"=×"CÑ"CÓ"Eò 	1ÑˆD�,Ø"×.Ñ.Ó0ˆGØÔ/Ò/Ø)0Ð  Ò&ð	1ô 	�tÐ3Ð5EÕFð ;rH   c                ób   — d| v r| d   S t        «       }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.rd   N)r#   r   rd   )r¬   r«   r5   rd   s       rG   r‰   r‰   C  sD   € à˜IÑ%ØÐ*Ñ+Ð+ä(Ó*€Iä.¨uÐ6GÓH€OØ˜i×7Ñ7Ñ7ØÐð 8rH   c           
     óV  ‡— ddl mŠm} t        «       }|t	        «       z   }i }| j                  di «      }d|v sd| v rt        d«      ‚t        «       }	t        | j                  «       «      D �]¶  \  }
}|
dk(  s|
dk(  rŒt        |t        «      r5|j                  | d   k(  r#d	| v r|j                  j                  | d	   «      rŒWt        ||«      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�Œ4t)        |
«      r%|
|vst+        ||
   «      r�ŒS ||¬«      ||
<   | |
= �Œd|
|v r�Œj|
|vs�Œp|
|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Œ>t        |t0        «      rFt3        j4                  d«      }|�/	 t7        t9        |dd ¬!«      |j:                  |j<                  ¬"«      }t?        |«      r4tA        jB                  |«      ^}}tE        ˆfd#„|D «       d«      }|�|||<   ŒÓ |«       ||<   ŒÞ |S # t"        t        f$ r Y Œ^w xY w)$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   )r3   r4   r‚   Ú__root__zUTo define root models, use `pydantic.RootModel` rather than a field called '__root__'r^   r€   rN   rO   Ú	functoolsÚ__zXPrivate attributes must not use dunder names; use a single underscore prefix instead of rv   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']`.NFT)Úis_argumentÚis_class)ÚglobalnsÚlocalnsc              3  ó<   •K  — | ]  }t        |‰«      sŒ|–— Œ y ­wrn   )r;   )ro   rD   r3   s     €rG   rq   z$inspect_namespace.<locals>.<genexpr>Î  s   øè ø€ Ò$\¨1¼JÀqÐJZÕ<[¤QÑ$\ùs   ƒ•)#Úfieldsr3   r4   r$   Údefault_ignored_typesr:   r—   rÏ   rÛ   r™   r;   rã   rN   rO   Ú
startswithrF   ÚaddÚ	NameErrorr   Úlstripr   r+   r   r�   rI   ÚsysÚ	_getframer)   r(   Ú	f_globalsÚf_localsr*   Útyping_extensionsÚget_argsÚnext)r¬   rˆ   Úbase_class_varsÚbase_class_fieldsr4   r2   Úall_ignored_typesr´   Úraw_annotationsÚignored_namesÚvar_nameÚvalueÚsuggested_nameÚann_nameÚann_typeÚframerô   Úmetadatarí   r3   s                      @rG   r‡   r‡   O  sÍ  ø€ ÷4 7ä(Ó*€Ià%Ô(=Ó(?Ñ?Ðà68ÐØ—m‘mÐ$5°rÓ:€Oà�_Ñ$¨
°iÑ(?ÜÐoÓpÐpä!›e€MÜ 	§¡Ó 1Ó2ó ;‰ˆ�%Ø�~Ò%¨Ð5IÒ)IØä�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ä˜(¤CÔ(ô Ÿ™ aÓ(�ØÐ$ðÜ#5Ü-¨hÀEÐTXÔYØ%*§_¡_Ø$)§N¡Nô$˜ô ˜HÔ%Ü0×9Ñ9¸(ÓC���HÜ#Ó$\°Ô$\Ð^bÓc�ØÐ+Ø3?Ð& xÑ0ØÙ+6«=Ð˜xÒ(ð?9ðB Ðøô &¤yÐ1ò Ùðús   Ê.LÌL(Ì'L(c                óž   — t        |d«      }t        | «      }|d t        j                  hv st	        |dd «      |j
                  k(  r|| _        y y )Nr{   Ú__code__)r   Úmake_hash_funcrJ   r{   r�   r  )rµ   r«   Úbase_hash_funcÚnew_hash_funcs       rG   r    r    ×  sP   € Ü-¨e°ZÓ@€NÜ" 3Ó'€MØ˜$¤§¡Ð0Ñ0´G¸NÈJÐX\Ó4]Ðan×awÑawÒ4wð %ˆ�ð 5xrH   c                ó†   ‡— | j                   r*t        j                  | j                   j                  «       Ž nd„ Šdˆfd„}|S )Nc                 ó   — y)Nr   rV   )rô   s    rG   ú<lambda>z make_hash_func.<locals>.<lambda>å  rX   rH   c                ó¢   •— 	 t         ‰| j                  «      «      S # t        $ r' t         ‰t        | j                  «      «      «      cY S w xY wrn   )ÚhashrÂ   ÚKeyErrorr/   )rB   Úgetters    €rG   Ú	hash_funcz!make_hash_func.<locals>.hash_funcç  sJ   ø€ ð	AÜ™˜tŸ}™}Ó-Ó.Ð.øÜò 	Aô
 ™Ô/°·±Ó>Ó?Ó@Ò@ð	Aús   ƒ ž-AÁA)rB   r   rK   Úint)rÎ   ÚoperatorÚ
itemgetterrÒ   )rµ   r!  r   s     @rG   r  r  ä  s;   ø€ Ø>A×>NÒ>NŒX× Ñ  #×"2Ñ"2×"7Ñ"7Ó"9Ñ:ÑT_€FõAð ÐrH   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Î   re   rÑ   rf   r§   rî   r   Úsetattr)	rµ   r«   r³   r}   r&  rü   r±   rC   r  s	            rG   rž   rž   ô  s�   € ô *¨#Ó.€LÜ-¨c°5¸.È/ÐhtÔuÑ€FˆJà€CÔØ×Ñ×Ñ˜jÔ)àò 
+ˆð ×*Ñ*×.Ñ.¨q°$Ó7ˆØÑ §¡Ô6GÒ!GÜ�C˜˜EŸM™MÕ*ñ
+rH   )r|   r~   c          	     óö  — t        | «      }t        |||«      }t        t        |j                  d¬«      |d¬«      }|j
                  rd|j                  v rt        | |«       y	 | j                  | |«      }	|j                  | «      }	 |j                  |	«      }	|	| _        t        |	| |xs | j                   | j"                  |rdnd	||j$                  «      | _        t)        |	|«      | _        d
| _        t/        dt1        | j2                  | j4                  |¬«      «      | _        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_modeÚmodelr9   NÚcreate_modelr5   TÚ__signature__)rT   rü   r³   )r"   r    r&   r   Úgenerate_schemaÚdefer_buildÚexperimental_defer_build_moder%   Ú__get_pydantic_core_schema__r   r½   Úcore_configÚclean_schemaÚCollectedInvalidÚ__pydantic_core_schema__r   rN   rO   Úplugin_settingsrÉ   r   Ú__pydantic_serializer__r˜   r.   r'   rŽ   rÎ   r.  )rµ   rª   r³   r|   r}   r~   r&  Ú
gen_schemaÚhandlerÚschemaÚer3  s               rG   r¡   r¡     s‰  € ô: *¨#Ó.€LÜØØØó€Jô +Ü�
×*Ñ*ÈÔNØØô€Gð ×!Ò! g°×1]Ñ1]Ñ&]Ü˜˜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ÅE8Å7E8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         rG   r¥   r¥   g  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˜ Õ%ñ&rH   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.
    rI   Ú
field_nameNc                ó    — || _         || _        y rn   )rD  rA  )rB   rD  rA  s      rG   rŽ   z#_DeprecatedFieldDescriptor.__init__…  s   € ØˆŒØ 0ˆÕrH   c                ó   — || _         y rn   )rH  )rB   rµ   r½   s      rG   rš   z'_DeprecatedFieldDescriptor.__set_name__‰  s	   € Øˆ�rH   c                ó  — |€t        | j                  «      ‚t        j                  | j                  t
        j                  d¬«       | j                  �| j                  j                  ||«      S |j                  | j                     S )Nr   rg   )
rÃ   rH  r<   r=   rD  ÚbuiltinsÚDeprecationWarningrA  Ú__get__rÂ   )rB   r¾   Úobj_types      rG   rN  z"_DeprecatedFieldDescriptor.__get__Œ  sh   € Øˆ;Ü  §¡Ó1Ð1ä�‰�d—h‘h¤× ;Ñ ;ÈÕJà× Ñ Ð,Ø×(Ñ(×0Ñ0°°hÓ?Ð?Ø�|‰|˜DŸO™OÑ,Ð,rH   c                ó,   — t        | j                  «      ‚rn   )rÃ   rH  )rB   r¾   r  s      rG   Ú__set__z"_DeprecatedFieldDescriptor.__set__™  s   € Ü˜TŸ_™_Ó-Ð-rH   rn   )rD  rI   rA  zproperty | NonerK   rL   )rµ   útype[BaseModel]r½   rI   rK   rL   )r¾   zBaseModel | NonerO  ztype[BaseModel] | NonerK   r   )r¾   r   r  r   rK   r   )	rM   rN   rO   rP   r‚   rŽ   rš   rN  rQ  rV   rH   rG   r@  r@  z  s"   … ñð ƒOô1óô-ô.rH   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 rn   )Ú_wrÚweakrefÚref)rB   r¾   s     rG   rŽ   z_PydanticWeakRef.__init__®  s    € Øˆ;ð ˆD�Hä—{‘{ 3Ó'ˆD�HrH   c                ó<   — | j                   €y | j                  «       S rn   )rV  rØ   s    rG   Ú__call__z_PydanticWeakRef.__call__¶  s   € Ø�8‰8ÐØà—8‘8“:ÐrH   c                ó   — t          | «       ffS rn   )rT  rØ   s    rG   Ú
__reduce__z_PydanticWeakRef.__reduce__¼  s   € Ü¡$£& Ð*Ð*rH   N)r¾   r   )rK   r   )rK   z4tuple[Callable, tuple[weakref.ReferenceType | None]])rM   rN   rO   rP   rŽ   rZ  r\  rV   rH   rG   rT  rT  �  s   „ ñó (óô+rH   rT  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™   rT  r—   )ÚdÚresultrC   rD   Úproxys        rG   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™   r;   rT  )r^  r_  rC   rD   s       rG   r�   r�   Ô  sX   € à€yØà€FØ—‘“	ò ‰ˆˆ1Ü�aÔ)Ô*Ù“ˆAØ‰}Ø��q’	àˆF�1ŠIðð €MrH   )Úmaxsizec                 óP   — ddl m}  t        t        t        t
        t        | t        fS )Nr   ©ÚComputedFieldInfo)rü   re  r   rè   ræ   rç   r   r0   rd  s    rG   rý   rý   ä  s&   € å*ô 	ÜÜÜÜØÜðð rH   )rT   zLiteral[False]rK   r   rƒ   )r¬   rà   r«   rß   rK   zCallable[..., Any] | None)
r¬   rà   rˆ   rß   r	  úset[str]r
  rf  rK   zdict[str, ModelPrivateAttr])rµ   rR  r«   rß   rK   rL   )rµ   rR  rK   r   )
rµ   rR  r«   rß   r³   r   r}   rà   rK   rL   )rµ   rR  rª   rI   r³   r   r|   rá   r}   údict[str, Any] | Noner~   râ   rK   rá   )rµ   rR  rK   rL   )r^  rg  rK   rg  )rK   rß   )grP   Ú
__future__r   Ú_annotationsrL  r#  r  rä   r<   rW  Úabcr   rò   r   r   Útypesr   r   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"   Ú_import_utilsr#   r$   Ú_mock_val_serr%   Ú_schema_generation_sharedr&   Ú
_signaturer'   Ú_typing_extrar(   r)   r*   r+   r,   r-   Ú_utilsr.   r/   Ú_validate_callr0   rå   rü   r1   ÚPydanticModelFieldr2   r3   r4   ÚPydanticModelPrivateAttrÚmainr5   rM  rJ   Ú__setattr__rë   rœ   r7   rW   r\   r`   r‰   r‡   r    r  rž   r¡   r¥   r@  rT  r›   r�   rý   rV   rH   rG   ú<module>r     s  ðÙ (å 2ã Û Û 
Û Û Û Ý ß (Ý ß <Õ <ã ß =ß =ç CÝ >ß OÝ "ß sÓ sß YÑ YÝ ,ß Fß MÝ *Ý CÝ 3÷÷ ÷ 5Ý /à	×ÒÝ4ß4Ý@Þ ð 3ÐÙ›ÐÙ%›xÐà×#Ñ#€ô
)˜$ô 
)ð !ñà
ðð 	óñ  TÐ=OÐQiÐkvÐ<wÔxô\�Wó \ó yð\ó~Gó$	ðEØðEà(ðEð ðEð  ð	Eð
 !óEóP
%óð +Ø	ð+Ø!6ð+ØHUð+Øhvð+à	ó+ðF à&*ñRØ	ðRàðRð "ðRð
 ðRð +ðRð $ðRð 
óRój&÷& .ñ  .÷F +ñ  +óFó(ñ  �4Ôòó ñrH   