
    Tg                    P   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 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.m/Z/m0Z0 ddl1m2Z2 ddl3m4Z4m5Z5 ddl6m7Z7m8Z8 ddl9m:Z: ddl;m<Z< ddl=m>Z> ddl?m@Z@ ddlAmBZBmCZCmDZDmEZEmFZF ddlGmHZHmIZI ejJ        rd
dlKmLZLmMZMmNZN d
dlKmOZP d
dlKmQZR d
dlSmTZT ne%ZU eV            ZP eV            ZReVjW        ZX G d d eY          ZZd!d"dYd'Z[ ed(ePeRe[f)           G d* d+e                      Z\dZd0Z]d[d6Z^d\d<Z_d]d?Z`d^d@Zad_dEZbd(dddFd`dMZcdadNZd G dO dP          Ze G dQ dR          ZfdbdUZgdbdVZh edW          dcdX            ZidS )dz"Private logic for creating models.    )annotationsN)ABCMeta)	lru_cachepartial)FunctionType)AnyCallableGenericLiteralNoReturn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       [/var/www/sysmax/venv/lib/python3.11/site-packages/pydantic/_internal/_model_construction.pyrJ   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?   r@   )__name__
__module____qualname____doc__rJ   __classcell__rM   s   @rN   r:   r:   8   sG         ) ) ) ) ) ) ) ) ) )rO   r:   FinitrW   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 rV   s    rN   NoInitFieldr[   E   s      rO   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ed,d!            Zed-d#            Zd. fd%Z xZS )/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<   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_configNrK   r8   contextr   r?   r@   c               @    t          | |            | |           dS )zWe need to both initialize private attributes and call the user-defined model_post_init
                        method.
                        N)init_private_attributes)rK   ro   original_model_post_inits     rN   wrapped_model_post_initz7ModelMetaclass.__new__.<locals>.wrapped_model_post_inity   s.     0g>>>00w?????rO   model_post_init__class_vars____private_attributes__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__Fre   
parametersrZ   __parameters__c              3      K   | ]}|v V  	d S NrZ   ).0xr{   s     rN   	<genexpr>z)ModelMetaclass.__new__.<locals>.<genexpr>   s(      ?k?kTUZ?k?k?k?k?k?krO   )RootModelRootTypec              3  $   K   | ]
}|v|V  d S r~   rZ   )r   r   parent_parameterss     rN   r   z)ModelMetaclass.__new__.<locals>.<genexpr>   s.      .c.cQQbHbHbqHbHbHbHb.c.crO   z, c                    g | ]	}|j         
S rZ   rP   r   r   s     rN   
<listcomp>z*ModelMetaclass.__new__.<locals>.<listcomp>   s    3[3[3[1AJ3[3[3[rO   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 rZ   )r<   r   s     rN   r   z*ModelMetaclass.__new__.<locals>.<listcomp>   s    3X3X3XqCFF3X3X3XrO   ztyping.Generic[]zJAll parameters must be present on typing.Generic; you should inherit from .c                    g | ]	}|j         
S rZ   r   r   s     rN   r   z*ModelMetaclass.__new__.<locals>.<listcomp>   s    2M2M2M!1:2M2M2MrO   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 rZ   )info)r   r;   r=   s      rN   
<dictcomp>z*ModelMetaclass.__new__.<locals>.<dictcomp>   s-     0 0 0"a160 0 0rO   )__pydantic_fields_set____pydantic_extra____pydantic_private____annotations__rK   r8   ro   r   r?   r@   )7_collect_bases_datar   	for_modelconfig_dictinspect_namespaceignored_typesget_model_post_initrq   r   rI   __new__r&   __mro__r
   indexrE   rF   r   getattr__init____pydantic_custom_init__rt   __pydantic_post_init__r   build__pydantic_decorators__re   rC   all
root_modelr   tuplejoinrP   	TypeError__pydantic_complete__items__set_name__build_lenient_weakvaluedictr0   r   rD   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)!mcsr`   ra   rc   re   rg   ri   rk   base_field_names
class_varsbase_private_attributesconfig_wrapperprivate_attributesrs   cls
BaseModel_mror   missing_parametersparameters_strerror_messagecombined_parametersgeneric_type_label	bases_strnameobjr   r   instance_slotrr   r{   r   rM   s!                                @@@rN   r   zModelMetaclass.__new__Q   s
   6  R	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./(/%''/#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MrO   itemc                p    | j                             d          }|r||v r||         S t          |          )zNThis is necessary to keep attribute access working for class attribute access.rv   )__dict__rC   AttributeError)rK   r   r   s      rN   __getattr__zModelMetaclass.__getattr__  sE    !%!2!23K!L!L! 0d.@&@&@)$// &&&rO   r   dict[str, object]c                    t                      S r~   )r:   )r   r   rk   s      rN   __prepare__zModelMetaclass.__prepare__
  s    "$$$rO   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__)hasattrrI   __instancecheck__)rK   r   rM   s     rN   r   z ModelMetaclass.__instancecheck__  s.    
 x!9::buww?X?XYa?b?bbrO   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&   set
issubclassupdater   keysru   rv   )ra   r8   field_namesr   r   bases         rN   r   z"ModelMetaclass._collect_bases_data  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(:::rO   EThe `__fields__` attribute is deprecated, use `model_fields` instead.)categorydict[str, FieldInfo]c                H    t          j        dt          d           | j        S )Nr   r   rx   )rE   rF   r   model_fieldsrK   s    rN   
__fields__zModelMetaclass.__fields__$  s1     	S%	
 	
 	
 	

   rO   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    rN   r   zModelMetaclass.model_fields.  s     t2B777rO   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    rN   model_computed_fieldsz$ModelMetaclass.model_computed_fields7  s     t;R@@@rO   	list[str]c                    t          t                                                                }d|v r|                    d           |S )Nr   )listrI   __dir__remove)rK   
attributesrM   s     rN   r   zModelMetaclass.__dir__@  sC    %''//++,,
:%%l+++rO   )NTN)r`   r<   ra   rb   rc   rd   re   rf   rg   rh   ri   rj   rk   r   r?   rl   )r   r<   r?   r   )r   r   rk   r   r?   r   )r   r   r?   rh   )ra   rb   r?   r   )r?   r   )r?   r   )r?   r   )rP   rQ   rR   r   typingTYPE_CHECKINGr   classmethodr   r   staticmethodr   propertyr   r   r   r   r   rT   rU   s   @rN   r_   r_   O   s        IM48+/mN mN mN mN mN mN mN^  '	' 	' 	' 	' % % % [%c c c c c c ; ; ; \; ZWbfggg! ! ! hg X! 8 8 8 X8 A A A XA         rO   r_   rK   r8   ro   r@   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   rv   r   get_defaultr   object_setattr)rK   ro   pydantic_privater   private_attrdefaults         rN   rq   rq   G  s     t+T22:"&"="C"C"E"E 	1 	1D,"..00G///)0 &t35EFFFFF ;:rO   rc   rd   ra   rb   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.rt   N)r&   r   rt   )rc   ra   r8   rt   s       rN   r   r   Y  sP    I%%*++(**I.u6GHHOi777 87rO   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   )r5   r7   r   __root__zUTo define root models, use `pydantic.RootModel` rather than a field called '__root__'rn   r   rQ   rR   	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~   )rD   )r   r=   r5   s     rN   r   z$inspect_namespace.<locals>.<genexpr>  s3      $\$\1JqJZ<[<[$\Q$\$\$\$\$\$\rO   )#fieldsr5   r7   r'   default_ignored_typesrC   r   r   r   r   rD   rl   rQ   rR   
startswithrM   add	NameErrorr!   lstripr"   r/   r   r   r   r<   sys	_getframer-   r,   	f_globalsf_localsr.   r   next)rc   r   r
  r  r7   r4   all_ignored_typesr   raw_annotationsignored_namesvar_namevaluesuggested_nameann_nameann_typeframer  metadatar  r5   s                      @rN   r   r   e  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   rw   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   r0  )r   ra   base_hash_funcnew_hash_funcs       rN   r   r     sa    -eZ@@N"3''M$000GNJX\4]4]anaw4w4w % 5x4wrO   c                r    | j         r%t          j        | j                                          nd dfd}|S )Nc                    dS )Nr   rZ   )r  s    rN   <lambda>z make_hash_func.<locals>.<lambda>  s    lm rO   rK   r   r?   intc                    	 t           | j                            S # t          $ r- t           t          | j                                      cY S w xY wr~   )hashr   KeyErrorr2   )rK   getters    rN   	hash_funcz!make_hash_func.<locals>.hash_func  sm    	At}--... 	A 	A 	A
 />>??@@@@@	As     4AA)rK   r   r?   r7  )r   operator
itemgetterr   )r   r<  r;  s     @rN   r1  r1    s\    EHE\mX #"9">">"@"@AAbmbmFA A A A A A rO   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   ru   r   rv   r   r  r   setattr)	r   ra   r   r   rA  r  r   r;   r)  s	            rN   r   r   
  s     *#..L-c5.+dpqqqFJ$Cj))) 
+ 
+ *..q$776G!G!GCEM***
+ 
+rO   r   r`   r<   r   rh   r   rj   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_moderB   N)titlecreate_modelr8   T__signature__)rW   r  populate_by_nameextra)defer_buildr(   r%   r#   r*   r   generate_schema__get_pydantic_core_schema__r   r   core_configrP   clean_schemaCollectedInvalid__pydantic_core_schema__r   rQ   rR   plugin_settingsr   r   __pydantic_serializer__r   r1   r+   r   r   rJ  rK  rI  )r   r`   r   r   r   r   rA  
gen_schemahandlerschemaerO  s               rN   r   r   +  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   rB  r   r   r   wrapped_property)r   field
field_infomsgdesccomputed_field_infos         rN   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%%%& &rO   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 )r\  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_nameNr`  r]  property | Noner?   r@   c                "    || _         || _        d S r~   )r`  r]  )rK   r`  r]  s      rN   r   z#_DeprecatedFieldDescriptor.__init__  s     0rO   r   rw   r   c                    || _         d S r~   )rd  )rK   r   r   s      rN   r   z'_DeprecatedFieldDescriptor.__set_name__  s    rO   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   rx   )
r]  __get__r   rd  rE   rF   r`  builtinsDeprecationWarningr   )rK   r   ri  s      rN   rl  z"_DeprecatedFieldDescriptor.__get__  s    ;$0,44T8DDD 111dh ;JJJJ ,(00h???|DO,,rO   r)  r   c                *    t          | j                  r~   )r   rd  )rK   r   r)  s      rN   __set__z"_DeprecatedFieldDescriptor.__set__  s    T_---rO   r~   )r`  r<   r]  re  r?   r@   )r   rw   r   r<   r?   r@   )r   rh  ri  rj  r?   r   )r   r   r)  r   r?   r   )	rP   rQ   rR   rS   r   r   r   rl  rp  rZ   rO   rN   r\  r\    s           OOO1 1 1 1 1   
- 
- 
- 
- 
-. . . . . .rO   r\  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)rK   r   s     rN   r   z_PydanticWeakRef.__init__  s)    ; DHHH{3''DHHHrO   r?   c                <    | j         d S |                                  S r~   )rt  r   s    rN   __call__z_PydanticWeakRef.__call__  s    8488::rO   4tuple[Callable, tuple[weakref.ReferenceType | None]]c                &    t            |             ffS r~   )rr  r   s    rN   
__reduce__z_PydanticWeakRef.__reduce__  s    $$&&**rO   N)r   r   )r?   r   )r?   ry  )rP   rQ   rR   rS   r   rx  r{  rZ   rO   rN   rr  rr    sZ          ( ( ( (   + + + + + +rO   rr  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   rr  r   )r|  resultr;   r=   proxys        rN   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   rD   rr  )r|  r  r;   r=   s       rN   r   r     si    ytF		  1a)** 	A}q	F1IIMrO   )maxsizec                     ddl m}  t          t          t          t
          t          | t          g}t          j	        dk    r|
                    t          j                   t          |          S )Nr   )r3   )      )r  r3   r   r  r   r   r   r   r   version_infoappendr   r   )r3   r   s     rN   r  r    sg    ****** 	M 7""V1222rO   )rW   rX   r?   r   r   )rc   rd   ra   rb   r?   r  )
rc   rd   r   rb   r
  r  r  r  r?   r  )r   rw   ra   rb   r?   r@   )r   rw   r?   r   )
r   rw   ra   rb   r   r   r   r?  r?   r@   )r   rw   r`   r<   r   r   r   rh   r   r?  r   rj   r?   rh   )r   rw   r?   r@   )r|  r}  r?   r}  )r?   rb   )jrS   
__future__r   _annotationsrm  r=  r   r   rE   ru  abcr   r  r   r   typesr   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.   r/   r0   _utilsr1   r2   r   r  r3   r4   r5   r6   PydanticModelFieldr7   PydanticModelPrivateAttrmainr8   rn  r>   __setattr__r  r   r:   r[   r_   rq   r   r   r   r1  r   r   r   r\  rr  r   r   r  rZ   rO   rN   <module>r     s%   ( ( 2 2 2 2 2 2   



          ( ( ( ( ( ( ( (       B B B B B B B B B B B B B B B B = = = = = = = = 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t t t t tW t t yxtnG G G G$	 	 	 	E E E EP
% 
% 
% 
%    + + + +L %)&*Z Z Z Z Z Zz& & & &&". ". ". ". ". ". ". ".J +  +  +  +  +  +  +  +F   (     4           rO   