
     @gǏ                    T   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mZmZ ddlmZmZ dd	lmZmZ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/m0Z0m1Z1 ddl2m3Z3 ddl4m5Z5m6Z6 ddl7m8Z8m9Z9 ddl:m;Z; ddl<m=Z= ddl>m?Z? ddl@mAZA ddlBmCZCmDZDmEZEmFZFmGZG ddlHmIZImJZJ ejK        rd
dlLmMZMmNZNmOZO d
dlLmPZQ d
dlLmRZS d
dlTmUZU ne&ZV eW            ZQ eW            ZSeWjX        ZY G d d eZ          Z[d!d"dYd'Z\ ed(eQeSe\f)           G d* d+e                      Z]dZd0Z^d[d6Z_d\d<Z`d]d?Zad^d@Zbd_dEZcd(dddFd`dMZddadNZe G dO dP          Zf G dQ dR          ZgdbdUZhdbdVZi edW          dcdX            ZjdS )dz"Private logic for creating models.    )annotationsN)ABCMeta)	lru_cachepartial)FunctionType)AnyCallableGenericLiteralNoReturnTypeVarcast)PydanticUndefinedSchemaSerializer)TypeAliasTypedataclass_transform
deprecatedget_args   )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)
NsResolver)CallbackGetCoreSchemaHandler)generate_pydantic_signature)_make_forward_refeval_type_backportis_annotatedis_classvar_annotationparent_frame_namespace)LazyClassAttributeSafeGetItemProxy)ComputedFieldInfo	FieldInfoModelPrivateAttr)Field)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.
    kstrvobjectreturnNonec                    |                      |d           }|r>||ur:t          |t                    r%t          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__)selfr<   r>   existing	__class__s       Z/var/www/piapp/venv/lib/python3.11/site-packages/pydantic/_internal/_model_construction.pyrK   z_ModelNamespaceDict.__setitem__=   s}    D)) 	x))jCZ.[.[)Mvavv8CZCivvvwwwww""1a(((    )r<   r=   r>   r?   r@   rA   )__name__
__module____qualname____doc__rK   __classcell__rN   s   @rO   r;   r;   8   sG         ) ) ) ) ) ) ) ) ) )rP   r;   FinitrX   Literal[False]r@   r   c                    dS )zOnly 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 rW   s    rO   NoInitFieldr\   E   s      rP   T)kw_only_defaultfield_specifiersc                       e Zd Z	 	 	 d(d) fdZ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ed/d#            Zed0d%            Zd1 fd'Z xZS )2ModelMetaclassNTcls_namer=   basestuple[type[Any], ...]	namespacedict[str, Any]__pydantic_generic_metadata__PydanticGenericMetadata | None#__pydantic_reset_parent_namespace__bool_create_model_module
str | Nonekwargsr   r@   typec           	        |r|                      |          \  }}	}
t          j        |||          }|j        |d<   t	          ||j        |	|          }|s|
r(t          ||          d1fd	}||d
<   n
t          |d
<   |	|d<   i |
||d<   |r||d<   t          d t                      j
        | |||fi |          }t                      }|j        }t          |v rT|                    t                    |                    |          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                               dd          t%          |dd          prrt9          fdD                       sddlm} t?          fdD                       }|v r<|vr8d                     d |D                       }|j!         d| d|j!         d| d}nm|z   }d                     d  |D                       }d!| d"}d#| d$}t          |vr4d                     d% |D             |gz             }|d&|j!         d'| d(z  }tE          |          ddd)|_        d|_#        |$                                D ]\  }}|%                    ||           |r tM          tO                                |_(        t%          |d*d          }tS          |tT                    rtW          |          }tY          |+          }t[          ||||           |j.        rd,|vrt_          ||           ta          |||d||-           d. |j        j1        $                                D             |_2        tg          |            t          ||          j4        di | |S d/D ]}|5                    |d           |                    d0i           6                                  t                      j
        | |||fi |S )2a  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_configNrL   r9   contextr   r@   rA   c               @    t          | |            | |           dS )zWe need to both initialize private attributes and call the user-defined model_post_init
                        method.
                        N)init_private_attributes)rL   rp   original_model_post_inits     rO   wrapped_model_post_initz7ModelMetaclass.__new__.<locals>.wrapped_model_post_inity   s.     0g>>>00w?????rP   model_post_init__class_vars____private_attributes__rf   type[BaseModel]zClasses should inherit from `BaseModel` before generic classes (e.g. `typing.Generic[T]`) for pydantic generics to work properly.r   
stacklevel__pydantic_base_init__F
parametersr[   __parameters__c              3      K   | ]}|v V  	d S Nr[   ).0xr|   s     rO   	<genexpr>z)ModelMetaclass.__new__.<locals>.<genexpr>   s(      ?k?kTUZ?k?k?k?k?k?krP   )RootModelRootTypec              3  $   K   | ]
}|v|V  d S r   r[   )r   r   parent_parameterss     rO   r   z)ModelMetaclass.__new__.<locals>.<genexpr>   s.      .c.cQQbHbHbqHbHbHbHb.c.crP   z, c                    g | ]	}|j         
S r[   rQ   r   r   s     rO   
<listcomp>z*ModelMetaclass.__new__.<locals>.<listcomp>   s    3[3[3[1AJ3[3[3[rP   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	]): ...`.c                ,    g | ]}t          |          S r[   )r=   r   s     rO   r   z*ModelMetaclass.__new__.<locals>.<listcomp>   s    3X3X3XqCFF3X3X3XrP   ztyping.Generic[]zJAll parameters must be present on typing.Generic; you should inherit from .c                    g | ]	}|j         
S r[   r   r   s     rO   r   z*ModelMetaclass.__new__.<locals>.<listcomp>   s    2M2M2M!1:2M2M2MrP   z- Note: `typing.Generic` must go last: `class (z): ...`))originargsr|   __pydantic_parent_namespace__)parent_namespace__hash__raise_errorsns_resolvercreate_model_modulec                $    i | ]\  }}||j         S r[   )info)r   r<   r>   s      rO   
<dictcomp>z*ModelMetaclass.__new__.<locals>.<dictcomp>   s-     0 0 0"a160 0 0rP   )__pydantic_fields_set____pydantic_extra____pydantic_private____annotations__rL   r9   rp   r   r@   rA   )7_collect_bases_datar   	for_modelconfig_dictinspect_namespaceignored_typesget_model_post_initrr   r   rJ   __new__r'   __mro__r
   indexrF   rG   r   getattr__init____pydantic_custom_init__ru   __pydantic_post_init__r   build__pydantic_decorators__rf   rD   all
root_modelr   tuplejoinrQ   	TypeError__pydantic_complete__items__set_name__build_lenient_weakvaluedictr1   r   rE   dictunpack_lenient_weakvaluedictr*   set_model_fieldsfrozenset_default_hash_funccomplete_model_classcomputed_fields__pydantic_computed_fields__set_deprecated_descriptors__pydantic_init_subclass__popclear)!mcsra   rb   rd   rf   rh   rj   rl   base_field_names
class_varsbase_private_attributesconfig_wrapperprivate_attributesrt   cls
BaseModel_mror   missing_parametersparameters_strerror_messagecombined_parametersgeneric_type_label	bases_strnameobjr   r   instance_slotrs   r|   r   rN   s!                                @@@rO   r   zModelMetaclass.__new__Q   s   6  T	NDGD[D[\aDbDbAj*A*4UIvNNN(6(BIn%!2>7EU" " " K%< K+>y%+P+P(+7@ @ @ @ @ @ 4KI/003JI/0*4I&'2c5L2cPb2cI./, [=Z	9:(/%''/#xPY*d*d]c*d*deeC133J+C#~~#))G"4"4syy7L7L"L"L1B   !    07s|E]_d/e/e+eC(+z/IIIO` & +9*>s*C*CC' - .4Q11$+C1PRT$U$U$Y$YZfhj$k$k!$S*:DAAVEV
 #3"3 #3C?k?k?k?kYj?k?k?k<k<k #3>>>>>>)..c.c.c.c*.c.c.c)c)c&(,===BS[eBeBe *.3[3[HZ3[3[3[)\)\"| J J-J JWZWcJ Jp~J J J & /@BT.T+)-3X3XDW3X3X3X)Y)Y-P~-P-P-P*N8JN N N & #%//
 )-		2M2Mu2M2M2MQcPd2d(e(eI) rPSP\ r r_h r r rM $M222 #",5 51 ).C% 05577 , ,	c  d++++2 j4OPfPhPh4i4i16=cCbdh6i6i*D11 R#?@P#Q#Q $6FGGGKS%EEE$ 29)D)D%c5111 "'$8   0 0&)&A&Q&W&W&Y&Y0 0 0C, 's+++
 7E#sOO6@@@@@J "i  !    MM+R0066888"577?3%MMfMMMrP   list[type[Any]]c                n   t                                                      }| j        t          fk    r|S | j                            d          }|s|S d}|d         |d         }}|s|S |j        d         }t          t          ||                    |h}| g}|dd          D ]}	t          |	di                               d          }
t          |	di                               dd          }|
|v rQ|	|vr|rt          |                                          k    s
J |            t          fd|D                       }|	|         }|                    |           |                    |
p|	           |
n|                    |
p|	           |	|d	         ur|                    |	           |S )
Nrf   zUnexpected error occurred when generating MRO of generic subclass. Please report this issue on GitHub: https://github.com/pydantic/pydantic/issues.r   r   r|   r   r[   c              3  (   K   | ]}|         V  d S r   r[   )r   param
param_dicts     rO   r   z%ModelMetaclass.mro.<locals>.<genexpr>$  s(      %Q%QEj&7%Q%Q%Q%Q%Q%QrP   )rJ   r   	__bases__r?   __dict__rD   rf   r   zipr   setkeysr   appendadd)r   original_mrogeneric_metadataassert_err_msgr   r   target_paramsindexed_originsnew_mrobasebase_originbase_paramsnew_base_argsnew_baser   rN   s                 @rO   r   zModelMetaclass.mro  s   ww{{}}=VI%%;><;K;KLk;l;l 	  o X&V$   	 <\J#mT2233
!($'5 $ 	% 	%D29$@_ac2d2d2h2hiq2r2rK/6t=\^`/a/a/e/efrtv/w/wKo--_,,,;'':??+<+<<<<n<<< %%Q%Q%Q%Q[%Q%Q%Q Q Q.x(((##K$74888* +  ##K$74888
 72;&&t$$$rP   itemc                p    | j                             d          }|r||v r||         S t          |          )zNThis is necessary to keep attribute access working for class attribute access.rw   )r   rD   AttributeError)rL   r   r   s      rO   __getattr__zModelMetaclass.__getattr__;  sE    !%!2!23K!L!L! 0d.@&@&@)$// &&&rP   r   dict[str, object]c                    t                      S r   )r;   )r   r   rl   s      rO   __prepare__zModelMetaclass.__prepare__B  s    "$$$rP   instancec                f    t          |d          o t                                          |          S )zsAvoid calling ABC _abc_subclasscheck unless we're pretty sure.

        See #3829 and python/cpython#92810
        __pydantic_validator__)hasattrrJ   __instancecheck__)rL   r   rN   s     rO   r   z ModelMetaclass.__instancecheck__F  s.    
 x!9::buww?X?XYa?b?bbrP   6tuple[set[str], set[str], dict[str, ModelPrivateAttr]]c                j   t                      }t                      }t                      }i }| D ]}t          ||          rn||urj|                    t	          |di                                                      |                    |j                   |                    |j                   |||fS )N__pydantic_fields__)r'   r   
issubclassupdater   r   rv   rw   )rb   r9   field_namesr   r   r   s         rO   r   z"ModelMetaclass._collect_bases_dataM  s    ,..	 #"uu
:< 	G 	GD$	** Gt9/D/D""741F#K#K#P#P#R#RSSS!!$"5666"))$*EFFFJ(:::rP   EThe `__fields__` attribute is deprecated, use `model_fields` instead.)categorydict[str, FieldInfo]c                H    t          j        dt          d           | j        S )Nr   r   ry   )rF   rG   r   model_fieldsrL   s    rO   
__fields__zModelMetaclass.__fields__\  s1     	S%	
 	
 	
 	

   rP   c                $    t          | di           S )zGet metadata about the fields defined on the model.

        Returns:
            A mapping of field names to [`FieldInfo`][pydantic.fields.FieldInfo] objects.
        r   r   r  s    rO   r  zModelMetaclass.model_fieldsf  s     t2B777rP   dict[str, ComputedFieldInfo]c                $    t          | di           S )zGet metadata about the computed fields defined on the model.

        Returns:
            A mapping of computed field names to [`ComputedFieldInfo`][pydantic.fields.ComputedFieldInfo] objects.
        r   r  r  s    rO   model_computed_fieldsz$ModelMetaclass.model_computed_fieldso  s     t;R@@@rP   	list[str]c                    t          t                                                                }d|v r|                    d           |S )Nr  )listrJ   __dir__remove)rL   
attributesrN   s     rO   r  zModelMetaclass.__dir__x  sC    %''//++,,
:%%l+++rP   )NTN)ra   r=   rb   rc   rd   re   rf   rg   rh   ri   rj   rk   rl   r   r@   rm   )r@   r   )r   r=   r@   r   )r   r   rl   r   r@   r   )r   r   r@   ri   )rb   rc   r@   r   )r@   r  )r@   r	  )r@   r  )rQ   rR   rS   r   r   typingTYPE_CHECKINGr   classmethodr   r   staticmethodr   propertyr   r  r  r  r  rU   rV   s   @rO   r`   r`   O   s        IM48+/oN oN oN oN oN oN oNb4 4 4 4 4 4l  '	' 	' 	' 	' % % % [%c c c c c c ; ; ; \; ZWbfggg! ! ! hg X! 8 8 8 X8 A A A XA         rP   r`   rL   r9   rp   rA   c                   t          | dd          Vi }| j                                        D ]'\  }}|                                }|t          ur|||<   (t          | d|           dS dS )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   rw   r   get_defaultr   object_setattr)rL   rp   pydantic_privater   private_attrdefaults         rO   rr   rr     s     t+T22:"&"="C"C"E"E 	1 	1D,"..00G///)0 &t35EFFFFF ;:rP   rd   re   rb   rc   Callable[..., Any] | Nonec                p    d| v r| d         S t                      }t          |d          }||j        ur|S dS )zaGet the `model_post_init` method from the namespace or the class bases, or `None` if not defined.ru   N)r'   r   ru   )rd   rb   r9   ru   s       rO   r   r     sP    I%%*++(**I.u6GHHOi777 87rP   r   base_class_varsset[str]base_class_fieldsdict[str, ModelPrivateAttr]c           
     h   ddl mm} t                      }|t	                      z   }i }|                     di           }d|v sd| v rt          d          t                      }	t          | 	                                          D ]\  }
}|
dk    s|
dk    rt          |t                    r6|j        | d         k    r%d	| v r!|j                            | d	                   r^t          ||          s|j        j        d
k    r|	                    |
           t          |          rY|
                    d          rt#          d|
d          t%          |
          rt#          dd|
z   d|
d          |||
<   | |
= t          ||          r<t%          |
          s-|
                    d          pd}t#          d|d|
d          |
                    d          r`t)          |
          r;|
|vst+          ||
                   s t-           ||                    ||
<   | |
= |
|v r|
|vrY|
|v rt/          d|
dd          t          ||          rt/          d|
dd          t/          d|
 d|d|
 dd          |	                                D ]\  }}t)          |          r||vr||	vrt+          |          s||vrt1          |dd          d
k    rt          |t2                    r[t5          j        d          }|E	 t9          t;          |dd !          |j        |j        "          }n# t"          t          f$ r Y nw xY wtA          |          r5tC          |          ^}}tE          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   )r6   r8   r   __root__zUTo define root models, use `pydantic.RootModel` rather than a field called '__root__'ro   r   rR   rS   	functools__zXPrivate attributes must not use dunder names; use a single underscore prefix instead of r   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          |          |V  d S r   )rE   )r   r>   r6   s     rO   r   z$inspect_namespace.<locals>.<genexpr>  s3      $\$\1JqJZ<[<[$\Q$\$\$\$\$\$\rP   )#fieldsr6   r8   r(   default_ignored_typesrD   r   r   r  r   rE   rm   rR   rS   
startswithrN   r   	NameErrorr"   lstripr#   r0   r   r   r   r=   sys	_getframer.   r-   	f_globalsf_localsr/   r   next)rd   r   r  r!  r8   r5   all_ignored_typesr   raw_annotationsignored_namesvar_namevaluesuggested_nameann_nameann_typeframer'  metadatar  r6   s                      @rO   r   r     sb   4 76666666(**I%(=(?(??68mm$5r::O_$$
i(?(?oppp!eeM	 1 122 ; ;%~%%5I)I)Iud##8	 Il$;;;)++"--i.GHH , 011 0	U_5OS^5^5^h'''/00 -	""4(( 	PBJP P P   %X.. [/2X~[ [MU[ [ [   ,1x((##y))  	2Eh2O2O  	%__S11?ZNJ,J J<DJ J J  
   && 	&x00 	..6L_]eMf6g6g./34DkkZ_F`F`F`/a/a"8,h'((_,,,,,'^X ^ ^ ^1   
 E9-- 
'DXDDDKk    (k k kU k k,4k k k :	    -& .3355 9 9(%h//	9 222-- +844 .  111,55DD(C((  a(($#5-hETXYYY%*_$)N$ $ $
 &y1    H%% '11H#$\$\$\$\$\$\$\^bcc+3?&x0+6;==x(s   ,MMMr   rx   c                    t          |d          }t          |           }|d t          j        hv st	          |dd           |j        k    r	|| _        d S d S )Nr   __code__)r   make_hash_funcr?   r   r   rD  )r   rb   base_hash_funcnew_hash_funcs       rO   r   r   %  sa    -eZ@@N"3''M$000GNJX\4]4]anaw4w4w % 5x4wrP   c                r    | j         r%t          j        | j                                          nd dfd}|S )Nc                    dS )Nr   r[   )r'  s    rO   <lambda>z make_hash_func.<locals>.<lambda>3  s    lm rP   rL   r   r@   intc                    	 t           | j                            S # t          $ r- t           t          | j                                      cY S w xY wr   )hashr   KeyErrorr3   )rL   getters    rO   	hash_funcz!make_hash_func.<locals>.hash_func5  sm    	At}--... 	A 	A 	A
 />>??@@@@@	As     4AA)rL   r   r@   rK  )r   operator
itemgetterr   )r   rP  rO  s     @rO   rE  rE  2  s\    EHE\mX #"9">">"@"@AAbmbmFA A A A A A rP   r   r   r   NsResolver | Nonec                    t          |           }t          | ||||          \  }}|| _        | j                            |           |D ]C}| j                            |d          }|$|j        t          urt          | ||j                   DdS )a<  Collect and set `cls.__pydantic_fields__` and `cls.__class_vars__`.

    Args:
        cls: BaseModel or dataclass.
        bases: Parents of the class, generally `cls.__bases__`.
        config_wrapper: The config wrapper instance.
        ns_resolver: Namespace resolver to use when getting model annotations.
    )typevars_mapN)
r&   r!   r   rv   r   rw   r   r  r   setattr)	r   rb   r   r   rU  r/  r   r<   r=  s	            rO   r   r   B  s     *#..L-c5.+dpqqqFJ$Cj))) 
+ 
+ *..q$776G!G!GCEM***
+ 
+rP   r   ra   r=   r   ri   r   rk   c          
     (   |j         rt          | |           dS t          |           }t          |||          }t	          t          |j        d          |d          }	 |                     | |          }	n5# t          $ r(}
|r t          | |d|
j	         d           Y d}
~
dS d}
~
ww xY w|
                    | j                  }	 |                    |	          }	n!# |j        $ r t          | |           Y dS w xY w|	| _        t          |	| |p| j        | j        |rdnd	||j                  | _        t)          |	|          | _        d
| _        t/          dt          t0          | j        | j        |j        |j                            | _        d
S )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.
        ns_resolver: The namespace resolver instance to use during schema building.
        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_moderC   N)titlecreate_modelr9   T__signature__)rX   r/  populate_by_nameextra)defer_buildr)   r&   r$   r+   r   generate_schema__get_pydantic_core_schema__r   r   core_configrQ   clean_schemaCollectedInvalid__pydantic_core_schema__r   rR   rS   plugin_settingsr   r   __pydantic_serializer__r   r2   r,   r   r   r^  r_  r]  )r   ra   r   r   r   r   rU  
gen_schemahandlerschemaerc  s               rO   r   r   c  s   : ! X&&&u)#..L J +
*NNN  G11#w??&    	X}16}}}555uuuuu	 !,,3<,@@K((00&   X&&&uu
 $*C !8-s~->;&" "C #36;"G"GC $C
 +'*+< &	
 	
 	
	 	C 4s*   !A8 8
B*B%%B*	C C=<C=c                   | j                                         D ]D\  }}|j        x}6t          |          }|                    | |           t          | ||           E| j                                        D ]l\  }}|j        x}^t          t          |j	                  d          s<t          ||j	                  }|                    | |           t          | ||           mdS )z8Set data descriptors on the class for deprecated fields.N__deprecated__)
r   r   deprecation_message_DeprecatedFieldDescriptorr   rV  r   r   r    wrapped_property)r   field
field_infomsgdesccomputed_field_infos         rO   r   r     s    4::<< & &z11C>-c22Dc5)))C%%%&)&F&L&L&N&N & &""';;SH34G4XYY[kll I .c3F3WXXDc5)))C%%%& &rP   c                  B    e Zd ZU dZded<   ddd
ZddZdddZddZdS )rp  aW  Read-only 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.
    r=   
field_nameNrt  rq  property | Noner@   rA   c                "    || _         || _        d S r   )rt  rq  )rL   rt  rq  s      rO   r   z#_DeprecatedFieldDescriptor.__init__  s     0rP   r   rx   r   c                    || _         d S r   )rx  )rL   r   r   s      rO   r   z'_DeprecatedFieldDescriptor.__set_name__  s    rP   r   BaseModel | Noneobj_typetype[BaseModel] | Noner   c                &   |6| j         | j                             d |          S t          | j                  t	          j        | j        t          j        d           | j         | j                             ||          S |j	        | j                 S )Nr   ry   )
rq  __get__r   rx  rF   rG   rt  builtinsDeprecationWarningr   )rL   r   r}  s      rO   r  z"_DeprecatedFieldDescriptor.__get__  s    ;$0,44T8DDD 111dh ;JJJJ ,(00h???|DO,,rP   r=  r   c                *    t          | j                  r   )r   rx  )rL   r   r=  s      rO   __set__z"_DeprecatedFieldDescriptor.__set__  s    T_---rP   r   )rt  r=   rq  ry  r@   rA   )r   rx   r   r=   r@   rA   )r   r|  r}  r~  r@   r   )r   r   r=  r   r@   r   )	rQ   rR   rS   rT   r   r   r   r  r  r[   rP   rO   rp  rp    s           OOO1 1 1 1 1   
- 
- 
- 
- 
-. . . . . .rP   rp  c                  *    e Zd ZdZd
dZddZddZd	S )_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`).
    r   r   c                N    |	d | _         d S t          j        |          | _         d S r   )_wrweakrefref)rL   r   s     rO   r   z_PydanticWeakRef.__init__	  s)    ; DHHH{3''DHHHrP   r@   c                <    | j         d S |                                  S r   )r  r  s    rO   __call__z_PydanticWeakRef.__call__  s    8488::rP   4tuple[Callable, tuple[weakref.ReferenceType | None]]c                &    t            |             ffS r   )r  r  s    rO   
__reduce__z_PydanticWeakRef.__reduce__  s    $$&&**rP   N)r   r   )r@   r   )r@   r  )rQ   rR   rS   rT   r   r  r  r[   rP   rO   r  r    sZ          ( ( ( (   + + + + + +rP   r  ddict[str, Any] | Nonec                    | dS i }|                                  D ]-\  }}	 t          |          }n# t          $ r |}Y nw xY w|||<   .|S )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   r  r   )r  resultr<   r>   proxys        rO   r   r     sv     	ytF		  1	$Q''EE 	 	 	EEE	q		Ms   1A A c                    | dS i }|                                  D ]1\  }}t          |t                    r |            }||||<   ,|||<   2|S )zAInverts the transform performed by `build_lenient_weakvaluedict`.N)r   rE   r  )r  r  r<   r>   s       rO   r   r   /  si    ytF		  1a)** 	A}q	F1IIMrP   )maxsizec                     ddl m}  t          t          t          t
          t          | t          g}t          j	        dk    r|
                    t          j                   t          |          S )Nr   )r4   )      )r/  r4   r   r  r  r  r   r   r4  version_infor   r  r   )r4   r   s     rO   r0  r0  ?  sg    ****** 	M 7""V1222rP   )rX   rY   r@   r   r   )rd   re   rb   rc   r@   r  )
rd   re   r   rc   r  r   r!  r   r@   r"  )r   rx   rb   rc   r@   rA   )r   rx   r@   r   )
r   rx   rb   rc   r   r   r   rS  r@   rA   )r   rx   ra   r=   r   r   r   ri   r   rS  r   rk   r@   ri   )r   rx   r@   rA   )r  r  r@   r  )r@   rc   )krT   
__future__r   _annotationsr  rQ  r4  r  rF   r  abcr   r%  r   r   typesr   r   r	   r
   r   r   r   r   pydantic_corer   r   typing_extensionsr   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)   _namespace_utilsr*   _schema_generation_sharedr+   
_signaturer,   _typing_extrar-   r.   r/   r0   r1   _utilsr2   r3   r  r/  r4   r5   r6   r7   PydanticModelFieldr8   PydanticModelPrivateAttrmainr9   r  r?   __setattr__r  r   r;   r\   r`   rr   r   r   r   rE  r   r   r   rp  r  r   r   r0  r[   rP   rO   <module>r     s+   ( ( 2 2 2 2 2 2   



          ( ( ( ( ( ( ( (       K K K K K K K K K K K K K K K K K K = = = = = = = = V V V V V V V V V V V V C C C C C C C C > > > > > > O O O O O O O O " " " " " " s s s s s s s s s s s s Y Y Y Y Y Y Y Y Y Y , , , , , , F F F F F F F F M M M M M M M M * * * * * * ( ( ( ( ( ( C C C C C C 3 3 3 3 3 3              9 8 8 8 8 8 8 8	 
(GGGGGGGGGG444444@@@@@@        3%vxx#
) 
) 
) 
) 
)$ 
) 
) 
) !      T=OQikv<wxxxl l l l lW l l yxl^	G G G G$	 	 	 	E E E EP
% 
% 
% 
%    + + + +L %)&*Z Z Z Z Z Zz& & & &&". ". ". ". ". ". ". ".J +  +  +  +  +  +  +  +F   (     4           rP   