
    bMh                    @   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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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) ddl*m+Z+ ddl,m-Z-m.Z.m/Z/m0Z0 ddl1m2Z2m3Z3m4Z4 ddl5m6Z6m7Z7 ddl8m9Z9m:Z: ddl;m<Z<m=Z= ddl>m?Z? ddl@mAZA ddlBmCZC ddlDmEZEmFZFmGZGmHZH ddlImJZJmKZK ejL        rddlMmNZO ddlMmPZPmQZQ ddlMmRZS ddlTmUZU ne)ZV eW            ZO eW            ZSeWjX        ZY G d d eZ          Z[d!d"dVd'Z\ ed(eOeSe\f)           G d* d+e                      Z]dWd0Z^dXd6Z_dYd<Z`dZd?Zad[d@Zbd\dEZcd(dddFd]dKZdd^dLZe G dM dN          Zf G dO dP          Zgd_dSZhd_dTZied`dU            ZjdS )az"Private logic for creating models.    )annotationsN)ABCMeta)cachepartialwraps)FunctionType)AnyCallableGenericLiteralNoReturncast)PydanticUndefinedSchemaSerializer)TypeAliasTypedataclass_transform
deprecatedget_args
get_origin)typing_objects   )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InvalidSchemaError)PydanticGenericMetadataget_model_typevars_map)import_cached_base_modelimport_cached_field_info)set_model_mocks)
NsResolver)generate_pydantic_signature)_make_forward_refeval_type_backportis_classvar_annotationparent_frame_namespace)LazyClassAttributeSafeGetItemProxy)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.
    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       f/var/www/html/test/jupyter/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;   7   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\   D   s      rP   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	d, fdZ
ed-d            Ze ed d!          d.d#                        Zed/d$            Zd0 fd&Z xZS )1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          ||          !t                    d2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
|_        i |_        t3          j        |          |_        |r	||_        n?t'          |di                               dd          t'          |dd          prrt=          fdD                       sddlm } tC          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  }tI          |          ddd)|_        d|_%        |&                                D ]\  }}|'                    ||           |r tQ          tS                                |_*        t'          |d*d          }tW          |tX                    rt[          |          }t]          |+          }t_          |||,           d- |j        j0        &                                D             |_1        |j2        rtg          |           nti          ||d||.           |j5        rd/|vrtm          ||            t          ||          j7        di | |S d0D ]}|8                    |d           |                    d1i           9                                  t                      j        | |||fi |S )3a  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_initx   s.    
 0g>>>00w?????rP   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__Frf   
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)config_wrapperns_resolverc                $    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   raise_errorsr   create_model_module__hash__)__pydantic_fields_set____pydantic_extra____pydantic_private____annotations__rL   r9   rp   r	   r@   rA   ):_collect_bases_datar   	for_modelconfig_dictinspect_namespaceignored_typesget_model_post_initr   rr   r   rJ   __new__r*   __mro__r   indexrF   rG   r   getattr__init____pydantic_custom_init__ru   __pydantic_post_init____pydantic_setattr_handlers__r   build__pydantic_decorators__rf   rD   all
root_modelr   tuplejoinrQ   	TypeError__pydantic_complete__items__set_name__build_lenient_weakvaluedictr2   r   rE   dictunpack_lenient_weakvaluedictr-   set_model_fieldscomputed_fields__pydantic_computed_fields__defer_buildr,   complete_model_classfrozenset_default_hash_func__pydantic_init_subclass__popclear)!mcsra   rb   rd   rf   rh   rj   rl   base_field_names
class_varsbase_private_attributesr   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__P   s:   6  Z	NDGD[D[\aDbDbAj*A*4UIvNNN(6(BIn%!2>7EU" " " K%< K+>y%+P+P(+7 344@ @ @ @ @ 54@ 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` & 13C-*8*>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[YYYY0 0&)&A&Q&W&W&Y&Y0 0 0C, )   $$$$ %"!& +(<    $ 29)D)D%c5111
 7E#sOO6@@@@@J "i  !    MM+R0066888"577?3%MMfMMMrP   itemc                p    | j                             d          }|r||v r||         S t          |          )zNThis is necessary to keep attribute access working for class attribute access.rw   )__dict__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__  s    "$$$rP   instancec                f    t          |d          o t                                          |          S )zsAvoid calling ABC _abc_instancecheck unless we're pretty sure.

        See #3829 and python/cpython#92810
        r   )hasattrrJ   __instancecheck__)rL   r   rN   s     rO   r   z ModelMetaclass.__instancecheck__  .    
 x!:;;c@Y@YZb@c@ccrP   subclass	type[Any]c                f    t          |d          o t                                          |          S )zsAvoid calling ABC _abc_subclasscheck unless we're pretty sure.

        See #3829 and python/cpython#92810
        r   )r   rJ   __subclasscheck__)rL   r   rN   s     rO   r   z ModelMetaclass.__subclasscheck__  r   rP   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   keysrv   rw   )rb   r9   field_namesr   r   bases         rO   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(:::rP   EThe `__fields__` attribute is deprecated, use `model_fields` instead.)categorydict[str, FieldInfo]c                \    t          j        dt          d           t          | di           S )Nr   r   ry   r   )rF   rG   r   r   rL   s    rO   
__fields__zModelMetaclass.__fields__2  s;     	S%	
 	
 	
 	

 t2B777rP   c                    t          | d          sdS t          d| j                  }t          d |                                D                       S )zWhether the fields where successfully collected (i.e. type hints were successfully resolves).

        This is a private attribute, not meant to be used outside Pydantic.
        r   Fr   c              3  $   K   | ]}|j         V  d S r   )	_complete)r   
field_infos     rO   r   z>ModelMetaclass.__pydantic_fields_complete__.<locals>.<genexpr>G  s%      OOJ:'OOOOOOrP   )r   r   r   r   values)rL   field_infoss     rO   __pydantic_fields_complete__z+ModelMetaclass.__pydantic_fields_complete__<  sX     t233 	5143KLLOO+:L:L:N:NOOOOOOrP   	list[str]c                    t          t                                                                }d|v r|                    d           |S )Nr   )listrJ   __dir__remove)rL   
attributesrN   s     rO   r  zModelMetaclass.__dir__I  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	   rl   r	   r@   r   )r   r	   r@   ri   )r   r   r@   ri   )rb   rc   r@   r   )r@   r   )r@   ri   )r@   r   )rQ   rR   rS   r   typingTYPE_CHECKINGr   classmethodr   r   r   staticmethodr   propertyr   r   r   r  rU   rV   s   @rO   r`   r`   N   s        IM48+/uN uN uN uN uN uN uNn  '	' 	' 	' 	' % % % [%d d d d d dd d d d d d ; ; ; \; ZWbfggg8 8 8 hg X8 
P 
P 
P X
P         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   P  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   b  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           
        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          j!        tE          |                    r6tG          |          ^}}tI          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   )r7   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>   r7   s     rO   r   z$inspect_namespace.<locals>.<genexpr>  s3      $\$\1JqJZ<[<[$\Q$\$\$\$\$\$\rP   )%fieldsr7   r8   r+   default_ignored_typesrD   r   r   r  r   rE   rm   rR   rS   
startswithrN   add	NameErrorr$   lstripr%   r1   r   r   r   r=   sys	_getframer0   r/   	f_globalsf_localsr   is_annotatedr   r   next)rd   r   r  r  r8   r6   all_ignored_typesr   raw_annotationsignored_namesvar_namevaluesuggested_nameann_nameann_typeframer  metadatar  r7   s                      @rO   r   r   n  sm   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   r:  )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>  s    lm rP   rL   r	   r@   intc                    	 t           | j                            S # t          $ r- t           t          | j                                      cY S w xY wr   )hashr   KeyErrorr4   )rL   getters    rO   	hash_funcz!make_hash_func.<locals>.hash_func  sm    	At}--... 	A 	A 	A
 />>??@@@@@	As     4AA)rL   r	   r@   rA  )r   operator
itemgetterr   )r   rF  rE  s     @rO   r;  r;    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 )zCollect and set `cls.__pydantic_fields__` and `cls.__class_vars__`.

    Args:
        cls: BaseModel or dataclass.
        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   r   r   rK  r#  r   r<   r3  s           rO   r   r     s     *#..L-c>;]ijjjFJ$Cj))) 
+ 
+ *..q$776G!G!GCEM***
+ 
+rP   r   r   ri   r   rk   c          
        t          |           }t          |||          }	 |                    |           }n4# t          $ r'}|r t	          | d|j         d           Y d}~dS d}~ww xY w|                    | j                  }		 |                    |          }n # t          $ r t	          |            Y dS w xY wd | j
        j                                        D             | _        t          |            || _        t!          || |p| j        | j        |rdnd|	|j                  | _        t+          ||	          | _        d| _        t1          d	t3          t4          | 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.
        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`.
    rC   NF)titlec                $    i | ]\  }}||j         S r[   r   r   s      rO   r   z(complete_model_class.<locals>.<dictcomp>f  s     'r'r'rda16'r'r'rrP   create_modelr9   T__signature__)rX   r#  validate_by_nameextra) r)   r&   generate_schemar   r,   r   core_configrQ   clean_schemar'   r   r   r   r   set_deprecated_descriptors__pydantic_core_schema__r   rR   rS   plugin_settings__pydantic_validator__r   __pydantic_serializer__r   r3   r   r.   r   r   rR  rS  rQ  )
r   r   r   r   r   rK  
gen_schemaschemaerU  s
             rO   r   r   2  s   6 *#..L J++C00&    	]]]]+++uuuuu	 !,,3<,@@K((00   uu (s'rc>Y>i>o>o>q>q'r'r'rC$s####)C !8-s~->;&" "C #36;"G"GC $C
 +'*+< &	
 	
 	
	 	C 4s'   8 
A)A$$A)B B;:B;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   rL  r   r   r"   wrapped_property)r   fieldr   msgdesccomputed_field_infos         rO   rW  rW    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 )rb  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_nameNre  rc  property | Noner@   rA   c                "    || _         || _        d S r   )re  rc  )rL   re  rc  s      rO   r   z#_DeprecatedFieldDescriptor.__init__  s     0rP   r   rx   r   c                    || _         d S r   )ri  )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   )
rc  __get__r   ri  rF   rG   re  builtinsDeprecationWarningr   )rL   r   rn  s      rO   rq  z"_DeprecatedFieldDescriptor.__get__  s    ;$0,44T8DDD 111dh ;JJJJ ,(00h???|DO,,rP   r3  r   c                *    t          | j                  r   )r   ri  )rL   r   r3  s      rO   __set__z"_DeprecatedFieldDescriptor.__set__  s    T_---rP   r   )re  r=   rc  rj  r@   rA   )r   rx   r   r=   r@   rA   )r   rm  rn  ro  r@   r	   )r   r	   r3  r	   r@   r   )	rQ   rR   rS   rT   r   r   r   rq  ru  r[   rP   rO   rb  rb    s           OOO1 1 1 1 1   
- 
- 
- 
- 
-. . . . . .rP   rb  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   )ry  r   s    rO   __call__z_PydanticWeakRef.__call__  s    8488::rP   4tuple[Callable, tuple[weakref.ReferenceType | None]]c                &    t            |             ffS r   )rw  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   rw  rw    sZ          ( ( ( (   + + + + + +rP   rw  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   rw  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   rw  )r  r  r<   r>   s       rO   r   r     si    ytF		  1a)** 	A}q	F1IIMrP   c                     ddl m}  t          t          t          t
          t          | t          g}t          j	        dk    r|
                    t          j                   t          |          S )Nr   )ComputedFieldInfo)      )r#  r  r   r
  r  r	  r    r   r)  version_infoappendr  r   )r  r   s     rO   r$  r$    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   r   r   r   rI  r@   rA   )r   rx   r   r   r   ri   r   rI  r   rk   r@   ri   )r   rx   r@   rA   )r  r  r@   r  )r@   rc   )krT   
__future__r   _annotationsrr  rG  r)  r  rF   rz  abcr   r  r   r   r   typesr   r	   r
   r   r   r   r   pydantic_corer   r   typing_extensionsr   r   r   r   r   typing_inspectionr   errorsr   r   plugin._schema_validatorr   r   r   _configr   _decoratorsr   r    r!   r"   _fieldsr#   r$   r%   _generate_schemar&   r'   	_genericsr(   r)   _import_utilsr*   r+   _mock_val_serr,   _namespace_utilsr-   
_signaturer.   _typing_extrar/   r0   r1   r2   _utilsr3   r4   r  r#  r5   PydanticModelFieldr6   r7   r8   PydanticModelPrivateAttrmainr9   rs  r?   __setattr__r  r   r;   r\   r`   rr   r   r   r   r;  r   r   rW  rb  rw  r   r   r$  r[   rP   rO   <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 = = = = = = = = b b b b b b b b b b b b b b , , , , , , 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 * * * * * * ( ( ( ( ( ( 3 3 3 3 3 3            9 8 8 8 8 8 8 8	 
(44444444444444@@@@@@        3%vxx#
) 
) 
) 
) 
)$ 
) 
) 
) !      T=OQikv<wxxx~ ~ ~ ~ ~W ~ ~ yx~BG G G G$	 	 	 	E E E EP
% 
% 
% 
%    + + + +F %)&*S S S S S Sl& & & &&". ". ". ". ". ". ". ".J +  +  +  +  +  +  +  +F   (                rP   