
    f j                    Z   d Z ddlmZ ddlZddlZddlZddlZddlZddl	m
Z
 ddlmZ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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/m0Z0m1Z1 ddl2m3Z3m4Z4m5Z5m6Z6 ddl7m8Z8m9Z9 ddl:m;Z;m<Z< ddl=m>Z>m?Z? ddl@mAZA ddlBmCZC ddlDmEZE ddlFmGZGmHZHmIZImJZJ ddlKmLZLmMZM er!ddlNmOZP ddlNmQZQmRZR ddlNmSZT ddlUmVZV ddl2mWZW n eX            ZP eX            ZTeXjY        ZZ G d  d!e[          Z\d"d#d[d(Z] ed)          Z^ ed*ePeTe]f+           G d, d-e
                      Z_d\d2Z`d]d8Zad^d?Zbd_dBZcd`dCZddadHZed*d*dd"dIdbdPZfdcdQZg G dR dS          Zh G dT dU          ZidddXZjdddYZkededZ            ZldS )fz"Private logic for creating models.    )annotationsN)ABCMeta)cachepartialwraps)FunctionType)TYPE_CHECKINGAnyCallableGenericLiteralNoReturnTypeVar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rebuild_model_fields)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)	BaseModel)PydanticExtraInfoc                  $     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d           t                                          ||          S )N`z"` overrides an existing Pydantic `z` decoratorr   
stacklevel)	get
isinstancer"   warningswarndecorator_infodecorator_reprsuper__setitem__)selfr@   rB   existing	__class__s       zC:\Users\Terasoftware\OneDrive\Desktop\faahhh\fyndo\fyndo\venv\Lib\site-packages\pydantic/_internal/_model_construction.pyrQ   z_ModelNamespaceDict.__setitem__9   s    D)) 	) 	jCZ.[.[ 	MlAll9P9_lll   
 ww""1a(((    )r@   rA   rB   rC   rD   rE   )__name__
__module____qualname____doc__rQ   __classcell__rT   s   @rU   r?   r?   4   sG         ) ) ) ) ) ) ) ) ) )rV   r?   Finitr^   Literal[False]rD   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 r]   s    rU   NoInitFieldrb   D   s      rV   _TT)kw_only_defaultfield_specifiersc                       e Zd Z	 	 	 d%d& fdZesd'dZed(d            Zd) fdZe	j
        Z
e	j        Zed*d            Ze edd          d+d!                        Zed,d"            Zd- fd$Z xZS ).ModelMetaclassNTcls_namerA   basestuple[type[Any], ...]	namespacedict[str, Any]__pydantic_generic_metadata__PydanticGenericMetadata | None#__pydantic_reset_parent_namespace__bool_create_model_module
str | Nonekwargsr
   rD   typec           	     	  "#$ |rt           j        dk    r:d|v r	|d         }nCddlm}	m}
m}  ||          x}r |
||	j                  }ni }n|                    di           }|                     |          \  }}}t          j
        ||||          }|j        |d<   t          |||j        ||          }|s|r=t          ||          ""!t          "          d8"fd            }||d<   n
t           |d<   ||d<   i |||d<   t#          d t%                      j        | |||fi |          }t)                      }|j        }t,          |v rT|                    t,                    |                    |          k     r#t1          j        t5          d          d           t7          |j        dd           |_        |j        |j        u rdnd|_        i |_         tC          j"        |d          |_#        |j#        $                    |           |r	||_%        n?t7          |di                               dd          $t7          |dd          p$##r$rtM          #fd$D                       sddl'm(} tS          $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  }tY          |          dd#d0|_%        d|_-        |.                                D ]\  }}|/                    ||           |r ta          tc                                |_2        t7          |d1d          }tg          |th                    rtk          |          }tm          |2          } to          ||| 3           d4 |j#        j8        .                                D             |_9        |j:        rtw          |           nty          ||| d|5           |j=        rd6|vrt}          ||            t%          ||          j?        di | |S d7D ]}!|@                    |!d           |                    di           A                                  t%                      j        | |||fi |S )9a  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.
        )      __annotations__r   )Formatcall_annotate_function!get_annotate_from_class_namespace)formatmodel_configNrR   r<   contextr
   rD   rE   c               @    t          | |            | |           dS )zWe need to both initialize private attributes and call the user-defined model_post_init
                        method.
                        N)init_private_attributes)rR   r~   original_model_post_inits     rU   wrapped_model_post_initz7ModelMetaclass.__new__.<locals>.wrapped_model_post_init   s.    
 0g>>>00w?????rV   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   rH   __pydantic_base_init__FT)replace_wrapped_methodsrm   
parametersra   __parameters__c              3      K   | ]}|v V  	d S Nra   ).0xr   s     rU   	<genexpr>z)ModelMetaclass.__new__.<locals>.<genexpr>   s(      ?k?kTUZ?k?k?k?k?k?krV   )RootModelRootTypec              3  $   K   | ]
}|v|V  d S r   ra   )r   r   parent_parameterss     rU   r   z)ModelMetaclass.__new__.<locals>.<genexpr>   s.      .c.cQQbHb.cq.c.c.c.c.c.crV   z, c                    g | ]	}|j         
S ra   rW   r   r   s     rU   
<listcomp>z*ModelMetaclass.__new__.<locals>.<listcomp>   s    3[3[3[1AJ3[3[3[rV   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 ra   )rA   r   s     rU   r   z*ModelMetaclass.__new__.<locals>.<listcomp>   s    3X3X3XqCFF3X3X3XrV   ztyping.Generic[]zJAll parameters must be present on typing.Generic; you should inherit from .c                    g | ]	}|j         
S ra   r   r   s     rU   r   z*ModelMetaclass.__new__.<locals>.<listcomp>   s    2M2M2M!1:2M2M2MrV   z- Note: `typing.Generic` must go last: `class (z): ...`))originargsr   __pydantic_parent_namespace__)parent_namespace)config_wrapperns_resolverc                $    i | ]\  }}||j         S ra   infor   r@   rB   s      rU   
<dictcomp>z*ModelMetaclass.__new__.<locals>.<dictcomp>   s-     0 0 0"a160 0 0rV   )raise_errorscreate_model_module__hash__)__pydantic_fields_set____pydantic_extra____pydantic_private__rR   r<   r~   r
   rD   rE   )Bsysversion_infoannotationlibry   rz   r{   
FORWARDREFrJ   _collect_bases_datar    	for_modelconfig_dictinspect_namespaceignored_typesget_model_post_initr   r   r   rP   __new__r-   __mro__r   indexrL   rM   r   getattr__init____pydantic_custom_init__r   __pydantic_post_init____pydantic_setattr_handlers__r!   build__pydantic_decorators__update_from_configrm   all
root_modelr   tuplejoinrW   	TypeError__pydantic_complete__items__set_name__build_lenient_weakvaluedictr5   r   rK   dictunpack_lenient_weakvaluedictr0   set_model_fieldscomputed_fields__pydantic_computed_fields__defer_buildr/   complete_model_classfrozenset_default_hash_func__pydantic_init_subclass__popclear)&mcsrh   ri   rk   rm   ro   rq   rs   raw_annotationsry   rz   r{   annotatebase_field_names
class_varsbase_private_attributesr   private_attributesr   cls
BaseModel_mror   missing_parametersparameters_strerror_messagecombined_parametersgeneric_type_label	bases_strnameobjr   r   instance_slotr   r   r   rT   s&                                     @@@rU   r   zModelMetaclass.__new__T   s   6  i	N7* G%2- '00A&BOO pooooooooo#D#DY#O#OOx -*@*@RXRc*d*d*d*,"+--0A2"F"FDGD[D[\aDbDbAj*A*4UIX^__N(6(BIn%!2?N,H*Vf" " " K%< K+>y%+P+P(+ K 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 1B   !    07s|E]_d/e/e+eC(+z/II`O` & 13C-*8*>s\`*a*a*aC''::>JJJ - .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[eBe  *.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 2%c5111
 7E#sOO6@@@@@J "i  !    MM+R0066888"577?3%MMfMMMrV   itemc                p    | j                             d          }|r||v r||         S t          |          )zNThis is necessary to keep attribute access working for class attribute access.r   )__dict__rJ   AttributeError)rR   r   r   s      rU   __getattr__zModelMetaclass.__getattr__  sG    !%!2!23K!L!L! 0d.@&@ 0)$// &&&rV   r   dict[str, object]c                    t                      S r   )r?   )r   r   rs   s      rU   __prepare__zModelMetaclass.__prepare__$  s    "$$$rV   subclasstype[_T]c                    t          j        d| j         dd           t                                          |          S )Nz>For performance reasons, virtual subclasses registered using 'zK.register()' are not supported in 'isinstance()' and 'issubclass()' checks.r   rH   )rL   rM   rY   rP   register)rR   r   rT   s     rU   r   zModelMetaclass.register,  sV    MTM^ M M M	
 	
 	
 	

 ww)))rV   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   keysr   r   )ri   r<   field_namesr   r   bases         rU   r   z"ModelMetaclass._collect_bases_data7  s    ,..	 #"uu
:< 	G 	GD$	** Gt9/D G""741F#K#K#P#P#R#RSSS!!$"5666"))$*EFFFJ(:::rV   XThe `__fields__` attribute is deprecated, use the `model_fields` class property instead.)categorydict[str, FieldInfo]c                \    t          j        dt          d           t          | di           S )Nr   r   rH   r   )rL   rM   r   r   rR   s    rU   
__fields__zModelMetaclass.__fields__F  s;    
 	f%	
 	
 	
 	

 t2B777rV   c                    d| j         vrdS t          d| j                  }t          d| j                  }||j        }nd}t          d |                                D                       o|S )zWhether the fields were successfully collected (i.e. type hints were successfully resolved).

        This is a private attribute, not meant to be used outside Pydantic.
        r   Fr  zPydanticExtraInfo | NoneNTc              3  $   K   | ]}|j         V  d S r   )	_complete)r   
field_infos     rU   r   z>ModelMetaclass.__pydantic_fields_complete__.<locals>.<genexpr>c  s%      OOJ:'OOOOOOrV   )r   r   r   __pydantic_extra_info__completer   values)rR   field_infospydantic_extra_infoextra_completes       rU   __pydantic_fields_complete__z+ModelMetaclass.__pydantic_fields_complete__R  s     !5 	5143KLL"#=t?[\\ 	"09NN!NOO+:L:L:N:NOOOOObTbbrV   	list[str]c                    t          t                                                                }d|v r|                    d           |S )Nr  )listrP   __dir__remove)rR   
attributesrT   s     rU   r  zModelMetaclass.__dir__e  sE    %''//++,,
:% 	,l+++rV   )NTN)rh   rA   ri   rj   rk   rl   rm   rn   ro   rp   rq   rr   rs   r
   rD   rt   )r   rA   rD   r
   )r   r
   rs   r
   rD   r   )r   r   rD   r   )ri   rj   rD   r   )rD   r  )rD   rp   )rD   r  )rW   rX   rY   r   r	   r   classmethodr   r   rt   __instancecheck____subclasscheck__staticmethodr   propertyr   r  r  r  r[   r\   s   @rU   rg   rg   R   sr        IM48+/DN DN DN DN DN DN DNL  '	' 	' 	' 	' % % % [%* * * * * * ..; ; ; \; Zbmq  8 8 8  X8 c c c Xc$         rV   rg   rR   r<   r~   rE   c               (   t          | dd          i }| j                                        D ]Q\  }}|j        r!|                    di | j        |          }n|                    d          }|t          ur|||<   Rt          | d|           dS dS )a  This function is meant to behave like a BaseModel method to initialize 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   NT)call_default_factoryvalidated_data)r  )r   r   r   $default_factory_takes_validated_dataget_defaultr   r   object_setattr)rR   r~   pydantic_privater   private_attrdefaults         rU   r   r   l  s     t+T22 G"&"="C"C"E"E 		1 		1D,@ N&22)->c>cRb>c 3   '222MM// 1)0 &t35EFFFFFG GrV   rk   rl   ri   rj   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.r   N)r-   r#   r   )rk   ri   r<   r   s       rU   r   r     sV    I% ,*++(**I.u6GHHOi77  rV   r   r   base_class_varsset[str]base_class_fieldsdict[str, ModelPrivateAttr]c           
     n   ddl mm} t                      }|t	                      z   }i }d|v sd| v rt          d          t                      }	t          |                                           D ]\  }
}|
dk    s|
dk    rt          |t                    r9|j        | d         k    r(d| v r$|j                            | d          d	          rat          ||          s|j        j        d
k    r|	                    |
           t          |          rZ|
                    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dt'          |
          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rt/          |dd          d
k    rt          |t0                    r[t3          j        d          }|E	 t7          t9          |dd           |j        |j        !          }n# t           t
          f$ r Y nw xY wt?          j         tC          |                    r6tE          |          ^}}tG          fd"|D             d          }||||<    |            ||<   |S )#aL  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.
        raw_annotations: The (non-evaluated) annotations of the model.
        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 containing private attributes info.

    Raises:
        TypeError: If there is a `__root__` field in model.
        NameError: If private attribute name is invalid.
        PydanticUserError:
            - If a field does not have a type annotation.
            - If a field on base class was overridden by a non-annotated attribute.
    r   )r:   r;   __root__zUTo define root models, use `pydantic.RootModel` rather than a field called '__root__'r}   r   rX   rY   r   	functools__zXPrivate attributes must not use dunder names; use a single underscore prefix instead of 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   )rK   )r   rB   r:   s     rU   r   z$inspect_namespace.<locals>.<genexpr>  s3      $\$\1JqJZ<[<[$\Q$\$\$\$\$\$\rV   )$fieldsr:   r;   r.   default_ignored_typesr   r   r  r   rK   rt   rX   rY   
startswithrT   add	NameErrorr&   lstripr'   r4   r   r   r   rA   r   	_getframer3   r2   	f_globalsf_localsr   is_annotatedr   r   next)rk   r   r   r'  r)  r;   r9   all_ignored_typesr   ignored_namesvar_namevaluesuggested_nameann_nameann_typeframer/  metadatar#  r:   s                      @rU   r   r     s   8 76666666(**I%(=(?(??68_$ q
i(? qoppp!eeM	 1 122 ; ;%~% :	5I)I :	ud##8	 Il$;;8	 )+8	 "-->1J.M.M.MNN	8	 011 0	U_5OS^5^ 0	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	9 -	9 +844	9  11	9 ,55D	9 (C((  a(( #5-hETXYYY%*_$)N$ $ $
 &y1    *:h+?+?@@ '11H#$\$\$\$\$\$\$\^bcc 3?&x0+6;==x(s   ,L88MMr   r   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_funcrC   r   r   rL  )r   ri   base_hash_funcnew_hash_funcs       rU   r   r     sf    -eZ@@N"3''M$00 %GNJX\4]4]anaw4w % %% %rV   c                r    | j         r%t          j        | j                                          nd dfd}|S )Nc                    dS )Nr   ra   )r/  s    rU   <lambda>z make_hash_func.<locals>.<lambda>'  s    lm rV   rR   r
   rD   intc                    	 t           | j                            S # t          $ r- t           t          | j                                      cY S w xY wr   )hashr   KeyErrorr7   )rR   getters    rU   	hash_funcz!make_hash_func.<locals>.hash_func)  sm    	At}--... 	A 	A 	A
 />>??@@@@@	As     4AA)rR   r
   rD   rS  )r   operator
itemgetterr   )r   rX  rW  s     @rU   rM  rM  &  s\    EHE\mX #"9">">"@"@AAbmbmFA A A A A A rV   r   r    r   r0   c                .   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   r
  r   r   r   r   r$  r   setattr)	r   r   r   r\  r7  r  r   r@   rE  s	            rU   r   r   6  s     *#..L.B^[|/ / /+F %C"5Cj))) 
+ 
+ *..q$77 	+6G!G 	+CEM***
+ 
+rV   )r   call_on_complete_hookr   is_force_rebuildr   rp   r^  r   rr   r_  c          
     `   t          |           }| j        s	 t          | |||          \  | _        | _        nI# t
          $ r<}t          j        |          }	t          | d|	j	         d           |r|	|Y d}~nd}~ww xY w|s	| j        sdS | j        sJ 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        | 	          | _        t7          ||| 	          | _        t;          d
t=          t>          | j         | j        |j!        |j"                            | _#        d| _$        |r| %                                 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.
        ns_resolver: The namespace resolver instance to use during schema building.
        raise_errors: Whether to raise errors.
        call_on_complete_hook: Whether to call the `__pydantic_on_complete__` hook.
        create_model_module: The module of the class to be created, if created by `create_model`.
        is_force_rebuild: Whether the model is being force-rebuilt (if True, pre-built serializers and
                          validators are not used, to avoid stale references).

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

    Raises:
        PydanticUndefinedAnnotation: If PydanticUndefinedAnnotation occurs in __get_pydantic_core_schema__
            and `raise_errors=True`.
    )r   r   r\  rG   NF)titlec                $    i | ]\  }}||j         S ra   r   r   s      rU   r   z(complete_model_class.<locals>.<dictcomp>  s     'r'r'rda16'r'r'rrV   create_modelr<   )_use_prebuilt__signature__)r^   r7  validate_by_nameextraT)&r,   r  r(   r   r
  r;  r   from_name_errorr/   r   r)   generate_schemacore_configrW   clean_schemar*   r   r   r   r   set_deprecated_descriptors__pydantic_core_schema__r   rX   rY   plugin_settings__pydantic_validator__r   __pydantic_serializer__r6   r   r1   r   rf  rg  re  r   __pydantic_on_complete__)r   r   r   r   r^  r   r_  r\  eexc
gen_schemaschemarj  s                rU   r   r   X  s   @ *#..L+ 0	!CW-')	D D D@C#S%@%@  	! 	! 	!-=a@@CCSX111 !q ! ! ! ! !	!  	C$D 	5//// 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;ZjVj"k"k"kC
 +'*+< &	
 	
 	
	 	C !%C '$$&&&4s?    9 
A?2A::A?(B> >
C/C**C/D$ $E E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   r]  r   hasattrr$   wrapped_property)r   fieldr	  msgdesccomputed_field_infos         rU   rl  rl    s	    4::<< & &z11C 	&-c22Dc5)))C%%%&)&F&L&L&N&N & &""';;S	& 34G4XYY[kll	&
 .c3F3WXXDc5)))C%%%& &rV   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 )ry  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.
    rA   
field_nameNr}  r{  property | NonerD   rE   c                "    || _         || _        d S r   )r}  r{  )rR   r}  r{  s      rU   r   z#_DeprecatedFieldDescriptor.__init__  s     0rV   r   r   r   c                    || _         d S r   )r  )rR   r   r   s      rU   r   z'_DeprecatedFieldDescriptor.__set_name__  s    rV   r   BaseModel | Noneobj_typetype[BaseModel] | Noner
   c                   |6| j         | j                             d |          S t          | j                  t	          j        | j        t          d           | j         | j                             ||          S |j        | j                 S )Nr   rH   )	r{  __get__r   r  rL   rM   r}  DeprecationWarningr   )rR   r   r  s      rU   r  z"_DeprecatedFieldDescriptor.__get__  s     	2$ E,44T8DDD 111dh 2qAAAA  	@(00h???|DO,,rV   rE  r   c                *    t          | j                  r   )r   r  )rR   r   rE  s      rU   __set__z"_DeprecatedFieldDescriptor.__set__  s    T_---rV   r   )r}  rA   r{  r  rD   rE   )r   r   r   rA   rD   rE   )r   r  r  r  rD   r
   )r   r
   rE  r
   rD   r   )	rW   rX   rY   rZ   rx   r   r   r  r  ra   rV   rU   ry  ry    s           OOO1 1 1 1 1   
- 
- 
- 
- 
-. . . . . .rV   ry  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
    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)rR   r   s     rU   r   z_PydanticWeakRef.__init__  s,     	( DHHH{3''DHHHrV   rD   c                <    | j         d S |                                  S r   )r  r  s    rU   __call__z_PydanticWeakRef.__call__%  s    8 	488::rV   4tuple[Callable, tuple[weakref.ReferenceType | None]]c                &    t            |             ffS r   )r  r  s    rU   
__reduce__z_PydanticWeakRef.__reduce__+  s    $$&&**rV   N)r   r
   )rD   r
   )rD   r  )rW   rX   rY   rZ   r   r  r  ra   rV   rU   r  r    sZ          ( ( ( (   + + + + + +rV   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@   rB   proxys        rU   r   r   /  sy     	 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   rK   r  )r  r  r@   rB   s       rU   r   r   C  so     tF		  1a)** 	A q	F1IIMrV   c                     ddl m}  t          t          t          t
          t          | t          g}t          j	        dk    r|
                    t          j                   t          |          S )Nr   )ComputedFieldInfo)rv      )r7  r  r   r  r  r  r"   r   r   r   appendtypingr   )r  r   s     rU   r8  r8  S  si    ****** 	M 7" 3V1222rV   )r^   r_   rD   r
   r   )rk   rl   ri   rj   rD   r%  )rk   rl   r   rl   r   rj   r'  r(  r)  r(  rD   r*  )r   r   ri   rj   rD   rE   )r   r   rD   r
   )r   r   r   r    r   r0   rD   rE   )r   r   r   r    r   r0   r   rp   r^  rp   r   rr   r_  rp   rD   rp   )r   r   rD   rE   )r  r  rD   r  )rD   rj   )mrZ   
__future__r   _annotationsrY  r   r  rL   r  abcr   r-  r   r   r   typesr   r	   r
   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'   r(   _generate_schemar)   r*   	_genericsr+   r,   _import_utilsr-   r.   _mock_val_serr/   _namespace_utilsr0   
_signaturer1   _typing_extrar2   r3   r4   r5   _utilsr6   r7   r7  r8   PydanticModelFieldr9   r:   r;   PydanticModelPrivateAttrmainr<   r=   rC   __setattr__r!  r   r?   rb   rc   rg   r   r   r   r   rM  r   r   rl  ry  r  r   r   r8  ra   rV   rU   <module>r     s;   ( ( 2 2 2 2 2 2  



          + + + + + + + + + +       Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z = = = = = = = = 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 o o o o o o o o o o o o @ @ @ @ @ @ @ @ 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@@@@@@      *******%vxx#) ) ) ) )$ ) ) )$ !      WT]] T=OQikv<wxxxV V V V VW V V yxVrG G G G0	 	 	 	F F F FR
% 
% 
% 
%    + + + +N "&&*"y y y y y yx& & & &&". ". ". ". ". ". ". ".J +  +  +  +  +  +  +  +F   (                rV   