
    o i                    L   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 n eW            ZP eW            ZTeWjX        ZY G d d eZ          Z[d!d"dZd'Z\ ed(          Z] ed)ePeTe\f*           G d+ d,e
                      Z^d[d1Z_d\d7Z`d]d>Zad^dAZbd_dBZcd`dGZdd)d)ddHdadOZedbdPZf G dQ dR          Zg G dS dT          ZhdcdWZidcdXZjedddY            ZkdS )ez"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)	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d           t                                          ||          S )N`z"` overrides an existing Pydantic `z` decoratorr   
stacklevel)	get
isinstancer"   warningswarndecorator_infodecorator_reprsuper__setitem__)selfr?   rA   existing	__class__s       ]/var/www/findabus/venv/lib/python3.11/site-packages/pydantic/_internal/_model_construction.pyrP   z_ModelNamespaceDict.__setitem__8   s    D)) 	))jCZ.[.[)MlAll9P9_lll   
 ww""1a(((    )r?   r@   rA   rB   rC   rD   )__name__
__module____qualname____doc__rP   __classcell__rS   s   @rT   r>   r>   3   sG         ) ) ) ) ) ) ) ) ) )rU   r>   Finitr]   Literal[False]rC   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    rT   NoInitFieldra   C   s      rU   _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_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
   rC   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          "          d6"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"        |          |_#        |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#d.|_%        d|_-        |.                                D ]\  }}|/                    ||           |r ta          tc                                |_2        t7          |d/d          }tg          |th                    rtk          |          }tm          |0          } to          ||| 1           d2 |j#        j8        .                                D             |_9        |j:        rtw          |           nty          ||| d|3           |j=        rd4|vrt}          ||            t%          ||          j?        di | |S d5D ]}!|@                    |!d           |                    di           A                                  t%                      j        | |||fi |S )7a  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_configNrQ   r<   contextr
   rC   rD   c               @    t          | |            | |           dS )zWe need to both initialize private attributes and call the user-defined model_post_init
                        method.
                        N)init_private_attributes)rQ   r}   original_model_post_inits     rT   wrapped_model_post_initz7ModelMetaclass.__new__.<locals>.wrapped_model_post_init   s.    
 0g>>>00w?????rU   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   rG   __pydantic_base_init__Frl   
parametersr`   __parameters__c              3      K   | ]}|v V  	d S Nr`   ).0xr   s     rT   	<genexpr>z)ModelMetaclass.__new__.<locals>.<genexpr>   s(      ?k?kTUZ?k?k?k?k?k?krU   )RootModelRootTypec              3  $   K   | ]
}|v|V  d S r   r`   )r   r   parent_parameterss     rT   r   z)ModelMetaclass.__new__.<locals>.<genexpr>   s.      .c.cQQbHbHbqHbHbHbHb.c.crU   z, c                    g | ]	}|j         
S r`   rV   r   r   s     rT   
<listcomp>z*ModelMetaclass.__new__.<locals>.<listcomp>   s    3[3[3[1AJ3[3[3[rU   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     rT   r   z*ModelMetaclass.__new__.<locals>.<listcomp>   s    3X3X3XqCFF3X3X3XrU   ztyping.Generic[]zJAll parameters must be present on typing.Generic; you should inherit from .c                    g | ]	}|j         
S r`   r   r   s     rT   r   z*ModelMetaclass.__new__.<locals>.<listcomp>   s    2M2M2M!1:2M2M2MrU   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?   rA   s      rT   
<dictcomp>z*ModelMetaclass.__new__.<locals>.<dictcomp>   s-     0 0 0"a160 0 0rU   )raise_errorscreate_model_module__hash__)__pydantic_fields_set____pydantic_extra____pydantic_private__rQ   r<   r}   r
   rC   rD   )Bsysversion_infoannotationlibrx   ry   rz   
FORWARDREFrI   _collect_bases_datar    	for_modelconfig_dictinspect_namespaceignored_typesget_model_post_initr   r   r   rO   __new__r-   __mro__r   indexrK   rL   r   getattr__init____pydantic_custom_init__r   __pydantic_post_init____pydantic_setattr_handlers__r!   build__pydantic_decorators__update_from_configrl   all
root_modelr   tuplejoinrV   	TypeError__pydantic_complete__items__set_name__build_lenient_weakvaluedictr5   r   rJ   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)&mcsrg   rh   rj   rl   rn   rp   rr   raw_annotationsrx   ry   rz   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   rS   s&                                     @@@rT   r   zModelMetaclass.__new__S   s   6  i	N7**%22&/0A&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(+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''::>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[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MrU   itemc                p    | j                             d          }|r||v r||         S t          |          )zNThis is necessary to keep attribute access working for class attribute access.r   )__dict__rI   AttributeError)rQ   r   r   s      rT   __getattr__zModelMetaclass.__getattr__  sE    !%!2!23K!L!L! 0d.@&@&@)$// &&&rU   r   dict[str, object]c                    t                      S r   )r>   )r   r   rr   s      rT   __prepare__zModelMetaclass.__prepare__#  s    "$$$rU   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   rG   )rK   rL   rX   rO   register)rQ   r   rS   s     rT   r   zModelMetaclass.register+  sV    MTM^ M M M	
 	
 	
 	

 ww)))rU   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   )rh   r<   field_namesr   r   bases         rT   r   z"ModelMetaclass._collect_bases_data6  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(:::rU   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   rG   r   )rK   rL   r   r   rQ   s    rT   
__fields__zModelMetaclass.__fields__E  s;    
 	f%	
 	
 	
 	

 t2B777rU   c                    d| j         vr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     rT   r   z>ModelMetaclass.__pydantic_fields_complete__.<locals>.<genexpr>\  s%      OOJ:'OOOOOOrU   )r   r   r   r   values)rQ   field_infoss     rT   __pydantic_fields_complete__z+ModelMetaclass.__pydantic_fields_complete__Q  sR     !555143KLLOO+:L:L:N:NOOOOOOrU   	list[str]c                    t          t                                                                }d|v r|                    d           |S )Nr  )listrO   __dir__remove)rQ   
attributesrS   s     rT   r  zModelMetaclass.__dir__^  sC    %''//++,,
:%%l+++rU   )NTN)rg   r@   rh   ri   rj   rk   rl   rm   rn   ro   rp   rq   rr   r
   rC   rs   )r   r@   rC   r
   )r   r
   rr   r
   rC   r   )r   r   rC   r   )rh   ri   rC   r   )rC   r   )rC   ro   )rC   r  )rV   rW   rX   r   r	   r   classmethodr   r   rs   __instancecheck____subclasscheck__staticmethodr   propertyr   r  r
  r  rZ   r[   s   @rT   rf   rf   Q   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 
P 
P 
P X
P         rU   rf   rQ   r<   r}   rD   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   r   r   get_defaultr   object_setattr)rQ   r}   pydantic_privater   private_attrdefaults         rT   r   r   e  s     t+T22:"&"="C"C"E"E 	1 	1D,"..00G///)0 &t35EFFFFF ;:rU   rj   rk   rh   ri   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   )rj   rh   r<   r   s       rT   r   r   w  sP    I%%*++(**I.u6GHHOi777 87rU   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 )#aJ  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 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   )r:   r;   __root__zUTo define root models, use `pydantic.RootModel` rather than a field called '__root__'r|   r   rW   rX   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   )rJ   )r   rA   r:   s     rT   r   z$inspect_namespace.<locals>.<genexpr>  s3      $\$\1JqJZ<[<[$\Q$\$\$\$\$\$\rU   )$fieldsr:   r;   r.   default_ignored_typesr   r   r  r   rJ   rs   rW   rX   
startswithrS   add	NameErrorr&   lstripr'   r4   r   r   r   r@   r   	_getframer3   r2   	f_globalsf_localsr   is_annotatedr   r   next)rj   r   r   r  r   r;   r9   all_ignored_typesr   ignored_namesvar_namevaluesuggested_nameann_nameann_typeframer&  metadatar  r:   s                      @rT   r   r     sb   8 76666666(**I%(=(?(??68_$$
i(?(?oppp!eeM	 1 122 ; ;%~%%5I)I)Iud##8	 Il$;;;)++"-->1J.M.M.MNN , 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   ,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_funcrB   r   r   rC  )r   rh   base_hash_funcnew_hash_funcs       rT   r   r     sa    -eZ@@N"3''M$000GNJX\4]4]anaw4w4w % 5x4wrU   c                r    | j         r%t          j        | j                                          nd dfd}|S )Nc                    dS )Nr   r`   )r&  s    rT   <lambda>z make_hash_func.<locals>.<lambda>  s    lm rU   rQ   r
   rC   intc                    	 t           | j                            S # t          $ r- t           t          | j                                      cY S w xY wr   )hashr   KeyErrorr7   )rQ   getters    rT   	hash_funcz!make_hash_func.<locals>.hash_func  sm    	At}--... 	A 	A 	A
 />>??@@@@@	As     4AA)rQ   r
   rC   rJ  )r   operator
itemgetterr   )r   rO  rN  s     @rT   rD  rD    s\    EHE\mX #"9">">"@"@AAbmbmFA A A A A A rU   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   r   r   r   r   r  r   setattr)r   r   r   rT  r.  r   r?   r<  s           rT   r   r   )  s     *#..L-c>;]ijjjFJ$Cj))) 
+ 
+ *..q$776G!G!GCEM***
+ 
+rU   )r   call_on_complete_hookr   r0   r   ro   rV  r   rq   c          
     D   t          |           }| j        sw	 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                  | _        t5          |
|          | _        t9          d	t;          t<          | j        | j        |j         |j!        
                    | _"        d| _#        |r| $                                 dS )aK  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`.

    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   rT  rF   NF)titlec                $    i | ]\  }}||j         S r`   r   r   s      rT   r   z(complete_model_class.<locals>.<dictcomp>  s     'r'r'rda16'r'r'rrU   create_modelr<   __signature__)r]   r.  validate_by_nameextraT)%r,   r
  r(   r   r2  r   from_name_errorr/   r   r)   generate_schemacore_configrV   clean_schemar*   r   r   r   r   set_deprecated_descriptors__pydantic_core_schema__r   rW   rX   plugin_settings__pydantic_validator__r   __pydantic_serializer__r6   r   r1   r   r\  r]  r[  r   __pydantic_on_complete__)r   r   r   r   rV  r   rT  eexc
gen_schemaschemar`  s               rT   r   r   H  s   : *#..L+ 0	!&:-')	' ' 'C##  	! 	! 	!-=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;"G"GC
 +'*+< &	
 	
 	
	 	C !%C '$$&&&4s>   1 
A72A22A7 B6 6
C' C""C'D D98D9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   rU  r   hasattrr$   wrapped_property)r   fieldr  msgdesccomputed_field_infos         rT   rb  rb    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%%%& &rU   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 )ro  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_nameNrs  rq  property | NonerC   rD   c                "    || _         || _        d S r   )rs  rq  )rQ   rs  rq  s      rT   r   z#_DeprecatedFieldDescriptor.__init__  s     0rU   r   r   r   c                    || _         d S r   )rw  )rQ   r   r   s      rT   r   z'_DeprecatedFieldDescriptor.__set_name__  s    rU   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   rG   )	rq  __get__r   rw  rK   rL   rs  DeprecationWarningr   )rQ   r   r|  s      rT   r  z"_DeprecatedFieldDescriptor.__get__  s    ;$0,44T8DDD 111dh 2qAAAA ,(00h???|DO,,rU   r<  r   c                *    t          | j                  r   )r   rw  )rQ   r   r<  s      rT   __set__z"_DeprecatedFieldDescriptor.__set__  s    T_---rU   r   )rs  r@   rq  rx  rC   rD   )r   r   r   r@   rC   rD   )r   r{  r|  r}  rC   r
   )r   r
   r<  r
   rC   r   )	rV   rW   rX   rY   rw   r   r   r  r  r`   rU   rT   ro  ro    s           OOO1 1 1 1 1   
- 
- 
- 
- 
-. . . . . .rU   ro  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)rQ   r   s     rT   r   z_PydanticWeakRef.__init__	  s)    ; DHHH{3''DHHHrU   rC   c                <    | j         d S |                                  S r   )r  r  s    rT   __call__z_PydanticWeakRef.__call__  s    8488::rU   4tuple[Callable, tuple[weakref.ReferenceType | None]]c                &    t            |             ffS r   )r  r  s    rT   
__reduce__z_PydanticWeakRef.__reduce__  s    $$&&**rU   N)r   r
   )rC   r
   )rC   r  )rV   rW   rX   rY   r   r  r  r`   rU   rT   r  r    sZ          ( ( ( (   + + + + + +rU   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?   rA   proxys        rT   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   rJ   r  )r  r  r?   rA   s       rT   r   r   /  si    ytF		  1a)** 	A}q	F1IIMrU   c                     ddl m}  t          t          t          t
          t          | t          g}t          j	        dk    r|
                    t          j                   t          |          S )Nr   )ComputedFieldInfo)ru      )r.  r  r   r  r  r  r"   r   r   r   appendtypingr   )r  r   s     rT   r/  r/  ?  sg    ****** 	M 7""V1222rU   )r]   r^   rC   r
   r   )rj   rk   rh   ri   rC   r  )rj   rk   r   rk   r   ri   r  r  r   r  rC   r!  )r   r   rh   ri   rC   rD   )r   r   rC   r
   )r   r   r   r    r   rR  rC   rD   )r   r   r   r    r   r0   r   ro   rV  ro   r   rq   rC   ro   )r   r   rC   rD   )r  r  rC   r  )rC   ri   )lrY   
__future__r   _annotationsrP  r   r  rK   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   r.  r8   PydanticModelFieldr9   r:   r;   PydanticModelPrivateAttrmainr<   rB   __setattr__r  r   r>   ra   rb   rf   r   r   r   r   rD  r   r   rb  ro  r  r   r   r/  r`   rU   rT   <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P P P P PW P P yxPfG G G G$	 	 	 	F F F FR
% 
% 
% 
%    + + + +H "&&*u u u u u up& & & &&". ". ". ". ". ". ". ".J +  +  +  +  +  +  +  +F   (                rU   