
    RPf-|                       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 ddlmZ ddlmZmZmZmZ ddlZddlmZmZ dd	lmZmZ d
dlmZmZ d
dlmZ d
dlmZmZ ddl m!Z! ddl"m#Z#m$Z$m%Z%m&Z& ddl'm(Z(m)Z)m*Z* ddl+m,Z, ddl-m.Z.m/Z/ ddl0m1Z1m2Z2 ddl3m4Z4 ddl5m6Z6 ddl7m8Z8m9Z9m:Z:m;Z; ddl<m=Z=m>Z> ddl?m@Z@ ej                  rd
dlBmCZD d
dlBmEZEmFZF d
dlGmHZH n	eZI eJ       ZDeJj                  ZL G d deM      ZN edeDf        G d! d"e
             ZOd3d#ZPd4d$ZQ	 	 	 	 	 	 	 	 	 	 d5d%ZRd6d&ZSd7d'ZT	 	 	 	 	 	 	 	 	 	 d8d(ZUddd)	 	 	 	 	 	 	 	 	 	 	 	 	 d9d*ZVd:d+ZW G d, d-      ZX G d. d/      ZYd;d0ZZd;d1Z[d<d2Z\y)=z"Private logic for creating models.    )annotationsN)ABCMeta)partial)FunctionType)AnyCallableGenericNoReturn)PydanticUndefinedSchemaSerializer)dataclass_transform
deprecated   )PydanticUndefinedAnnotationPydanticUserError)create_schema_validator)GenericBeforeBaseModelWarningPydanticDeprecatedSince20   )ConfigWrapper)DecoratorInfosPydanticDescriptorProxyget_attribute_from_basesunwrap_wrapped_function)collect_model_fieldsis_valid_field_nameis_valid_privateattr_name)GenerateSchema)PydanticGenericMetadataget_model_typevars_map)
MockValSerset_model_mocks)CallbackGetCoreSchemaHandler)generate_pydantic_signature)get_cls_types_namespaceis_annotatedis_classvarparent_frame_namespace)ClassAttributeSafeGetItemProxy)ValidateCallWrapper)Field)	FieldInfoModelPrivateAttr	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.
    c                    | j                  |d       }|rD||ur@t        |t              r0t        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__)selfkvexisting	__class__s       `/var/www/fastapitest/venv/lib/python3.12/site-packages/pydantic/_internal/_model_construction.pyr<   z_ModelNamespaceDict.__setitem__3   sc    D))jCZ.[MMAaS B8CZCZCiCiBjjuvww"1a((    )r>   strr?   objectreturnNone)__name__
__module____qualname____doc__r<   __classcell__rA   s   @rB   r2   r2   .   s    ) )rC   r2   T)kw_only_defaultfield_specifiersc                       e Zd Z	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d fdZej
                  sddZedd       Zd fdZ	e
dd       Ze edd      dd	              Zd fd
Z xZS )ModelMetaclassNc                   ! |r| j                  |      \  }}	}
t        j                  |||      }|j                  |d<   t	        ||j
                  |	|      }|s|
r#t        ||      d$fd}||d<   n	t        |d<   |	|d<   i |
||d<   t        "| $  | |||fi |}ddl
m} |j                  }t        |v rG|j                  t              |j                  |      k  r t        j                   t#        d	      d
       t%        |j&                  dd       |_        |j*                  |j*                  u rdnd|_        t/        j0                  |      |_        |r	||_        n[t%        |di       j7                  dd      !t%        |dd      xs !  r!rt9         fd!D              sddlm} t?        !fd D              }|!v rZ| vrVdjA                  |D cg c]  }|jB                   c}      }|jB                   d| d|jB                   d| d}tG        |      !|z   }djA                  |D cg c]  }tE        |       c}      }d| d}d| d}t        |vrCdjA                  |D cg c]  }|jB                   c}|gz         }|d|jB                   d| dz  }tG        |      dd d |_        d|_$        |jK                         D ]  \  }}|jM                  ||        |rtO        tQ                     |_)        t%        |d!d      }tU        |tV              rtY        |      }t[        ||      }t]        ||||       |j^                  rd"|vrta        ||       tc        |||d||#       |j2                  jd                  jK                         D ci c]  \  }}||jf                   c}}|_4        tk        |       t        ||  di | |S t        "| $  | |||fi |S c c}w c c}w c c}w c c}}w )%a  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_configNc                0    t        | |        | |       y)zWe need to both initialize private attributes and call the user-defined model_post_init
                        method.
                        N)init_private_attributes)r=   _ModelMetaclass__contextoriginal_model_post_inits     rB   wrapped_model_post_initz7ModelMetaclass.__new__.<locals>.wrapped_model_post_inite   s     0i@0yArC   model_post_init__class_vars____private_attributes__r   r/   zClasses should inherit from `BaseModel` before generic classes (e.g. `typing.Generic[T]`) for pydantic generics to work properly.
stacklevel__pydantic_base_init__F__pydantic_generic_metadata__
parameters __parameters__c              3  &   K   | ]  }|v  
 y wNra   ).0xr`   s     rB   	<genexpr>z)ModelMetaclass.__new__.<locals>.<genexpr>   s     ?kTUZ?ks   )RootModelRootTypec              3  ,   K   | ]  }|vs|  y wrd   ra   )re   rf   parent_parameterss     rB   rg   z)ModelMetaclass.__new__.<locals>.<genexpr>   s     .cQQbHbq.cs   	z, 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	]): ...`.ztyping.Generic[]zJAll parameters must be present on typing.Generic; you should inherit from .z- Note: `typing.Generic` must go last: `class (z): ...`))originargsr`   __pydantic_parent_namespace____hash__)raise_errorstypes_namespacecreate_model_module)r=   r0   rV   r   rF   rG   )7_collect_bases_datar   	for_modelconfig_dictinspect_namespaceignored_typesget_model_post_initrU   r;   __new__mainr0   __mro__r	   indexr7   r8   r   getattr__init____pydantic_custom_init__rY   __pydantic_post_init__r   build__pydantic_decorators__r_   r5   all
root_modelrh   tuplejoinrH   rD   	TypeError__pydantic_complete__items__set_name__build_lenient_weakvaluedictr(   rp   r6   dictunpack_lenient_weakvaluedictr%   set_model_fieldsfrozenset_default_hash_funccomplete_model_classcomputed_fieldsinfomodel_computed_fieldsset_deprecated_descriptors__pydantic_init_subclass__)#mcscls_namebases	namespacer_   #__pydantic_reset_parent_namespace___create_model_modulekwargsbase_field_names
class_varsbase_private_attributesconfig_wrapperprivate_attributesrX   clsr0   mrorh   missing_parametersrf   parameters_strerror_messagecombined_parametersgeneric_type_label	bases_strnameobjparent_namespacers   r>   r?   rW   r`   rj   rA   s#                                  @@@rB   r{   zModelMetaclass.__new__=   sz   6 DGD[D[\aDbAj*A*44UIvNN(6(B(BIn%!2>77EU" "%<+>y%+P(+7B 4KI/03JI/0*4I&'2c5L2cPb2cI./#(7?3%#]V\#]C(++C#~#))G"4syy7K"K1B  ! 07s||E]_d/e+eC(141D1D	HaHa1agxC&*8*>*>s*CC' -4Q1$+C1PRT$U$Y$YZfhj$k!$S*:DAVEV
"3C?kYj?k<k>)..c*.c)c&(,==BS[eBe *.HZ3[1AJJ3[)\"||n,-. /WWZWcWcVddop~o  @IJ &, $M22! /@BT.T+)-DW3XqCF3X)Y/>~>Na-P*88J7K1N & #%/
 )-		u2M!1::2MQcPd2d(eI)"OPSP\P\~]^_h^iiq rM $M22 #",51 ).C% 0557 ,	c  d+, 34OPfPh4i1&s,KTR*D1#?@P#Q 5c;KLOS%I$$9)D%c51 " /$8 @C?Z?Z?j?j?p?p?r(stq!AFF(sC%&s+
 #s6@@J 7?3%MfMMQ 4\ 4Y 3NT )ts   !O2<O78O<#Pc                    | j                   j                  d      }|r	||v r||   S |dk(  r;t        | dd      }t        |t              r|j                         }|t        | d      S t        |      )zNThis is necessary to keep attribute access working for class attribute access.r[   __pydantic_core_schema____pydantic_validator__N)__dict__r5   r   r6   r!   rebuildAttributeError)r=   itemr   maybe_mock_validatorrebuilt_validators        rB   __getattr__zModelMetaclass.__getattr__   s    !%!2!23K!L!d.@&@)$//11'.t5Mt'T$2J?(<(D(D(F%(4&t-GHH &&rC   c                    t               S rd   )r2   )r   ro   r   s      rB   __prepare__zModelMetaclass.__prepare__   s    "$$rC   c                >    t        |d      xr t        | 	  |      S )zsAvoid calling ABC _abc_subclasscheck unless we're pretty sure.

        See #3829 and python/cpython#92810
        r   )hasattrr;   __instancecheck__)r=   instancerA   s     rB   r   z ModelMetaclass.__instancecheck__   s#    
 x!9:buw?XYa?bbrC   c                6   ddl m} t               }t               }i }| D ]t  }t        ||      s||us|j	                  t        |di       j                                |j	                  |j                         |j	                  |j                         v |||fS )Nr   r/   model_fields)	r|   r0   set
issubclassupdater   keysrZ   r[   )r   r0   field_namesr   r   bases         rB   ru   z"ModelMetaclass._collect_bases_data   s    $ #"u
:< 	GD$	*t9/D""74#D#I#I#KL!!$"5"56"))$*E*EF	G J(:::rC   EThe `__fields__` attribute is deprecated, use `model_fields` instead.)categoryc                N    t        j                  dt               | j                  S )Nr   )r7   r8   r   r   r=   s    rB   
__fields__zModelMetaclass.__fields__  s$     	SUn	
    rC   c                `    t        t        | 	               }d|v r|j                  d       |S )Nr   )listr;   __dir__remove)r=   
attributesrA   s     rB   r   zModelMetaclass.__dir__  s0    %'/+,
:%l+rC   )NTN)r   rD   r   tuple[type[Any], ...]r   dict[str, Any]r_   zPydanticGenericMetadata | Noner   boolr   
str | Noner   r   rF   type)r   rD   rF   r   )ro   r   r   r   rF   zdict[str, object])r   r   rF   r   )r   r   rF   z6tuple[set[str], set[str], dict[str, ModelPrivateAttr]])rF   zdict[str, FieldInfo])rF   z	list[str])rH   rI   rJ   r{   typingTYPE_CHECKINGr   classmethodr   r   staticmethodru   propertyr   r   r   rL   rM   s   @rB   rQ   rQ   ;   s     IM48+/cNcN %cN "	cN
 (FcN .2cN )cN cN 
cNJ 	' % %c ; ; Wbfg! h ! rC   rQ   c                    t        | dd      Pi }| j                  j                         D ]#  \  }}|j                         }|t        us|||<   % t        | d|       yy)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.
    __pydantic_private__N)r   r[   r   get_defaultr   object_setattr)r=   	__contextpydantic_privater   private_attrdefaults         rB   rU   rU     st     t+T2:"&"="="C"C"E 	1D,"..0G//)0 &	1 	t35EF ;rC   c                Z    d| v r| d   S ddl m} t        |d      }||j                  ur|S y)zaGet the `model_post_init` method from the namespace or the class bases, or `None` if not defined.rY   r   r/   N)r|   r0   r   rY   )r   r   r0   rY   s       rB   rz   rz   /  s?    I%*++ .u6GHOi777 8rC   c           
     f   ddl m}mm} |t	               z   }i }| j                  di       }d|v sd| v rt        d      t               }	t        | j                               D ]  \  }
}|
dk(  rt        |t              r5|j                  | d   k(  r#d| v r|j                  j                  | d         rRt        ||      s|j                  j                  d	k(  r|	j!                  |
       t        |      rI|
j                  d
      rt#        d|
d      t%        |
      rt#        dd|
z   d|
d      |||
<   | |
= t        ||      r2t%        |
      s'|
j'                  d      xs d}t#        d|d|
d      |
j                  d
      r/t)        |
      r%|
|vst+        ||
         rN ||      ||
<   | |
= _|
|v re|
|vsk|
|v rt-        d|
dd      t        ||      rt-        d|
dd      t-        d|
 d|d|
 dd       |j                         D ]  \  }}t)        |      s||vs||	vst+        |      r(||vs-t/        |dd      d	k7  s>t1        |      r4t3        j4                  |      ^}}t7        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   )r-   r.   PrivateAttr__annotations____root__zUTo define root models, use `pydantic.RootModel` rather than a field called '__root__'rS   rI   rJ   	functools__zXPrivate attributes must not use dunder names; use a single underscore prefix instead of rl   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']`.Nc              3  <   K   | ]  }t        |      s|  y wrd   )r6   )re   r?   r.   s     rB   rg   z$inspect_namespace.<locals>.<genexpr>  s     $\1JqJZ<[Q$\s   )fieldsr-   r.   r   default_ignored_typesr5   r   r   r   r   r6   r   rI   rJ   
startswithrA   add	NameErrorr   lstripr   r'   r   r   r&   typing_extensionsget_argsnext)r   ry   base_class_varsbase_class_fieldsr-   r   all_ignored_typesr   raw_annotationsignored_namesvar_namevaluesuggested_nameann_nameann_typer   metadatar   r.   s                     @rB   rx   rx   ;  sY   4 BA%(=(??68mm$5r:O_$
i(?opp!eM	 12 ;%~%ud#  Il$;;)+""--i.GH 01U__5O5OS^5^h'/0""4(BBJQP  %X.//2X~.@XLXY[  ,1x((#y)2Eh2O%__S1?ZN,/|H<qJ 
   &&x0.k/RZB[6\/:5/I"8,h'(_,,,'XL )] ^1 
 E9-'XL(CDKk  (?zUI V,,4: 6jk :	 m;z .335 9(%h/ 22-) 11,5DH%099(CH#$\$\^bc+3?&x0+6=x(9" rC   c                    t        |d      }t        |       }|d t        j                  hv st	        |dd       |j
                  k(  r|| _        y y )Nrq   __code__)r   make_hash_funcrE   rq   r   r  )r   r   base_hash_funcnew_hash_funcs       rB   r   r     sP    -eZ@N"3'M$00GNJX\4]anawaw4w % 5xrC   c                    | j                   r*t        j                  | j                   j                          nd dfd}|S )Nc                     y)Nr   ra   )r   s    rB   <lambda>z make_hash_func.<locals>.<lambda>  s    rC   c                    	 t         | j                              S # t        $ r' t         t        | j                                    cY S w xY wrd   )hashr   KeyErrorr*   )r=   getters    rB   	hash_funcz!make_hash_func.<locals>.hash_func  sJ    	At}}-.. 	A
 />?@@	As    -AA)r=   r   rF   int)r   operator
itemgetterr   )r   r  r  s     @rB   r  r    s;    >A>N>NX  #"2"2"7"7"9:T_FA rC   c                $   t        |       }t        | ||||      \  }}|| _        | j                  j	                  |       |D ]K  }| j
                  j                  |d      }|"|j                  t        us5t        | ||j                         M y)a.  Collect and set `cls.model_fields` and `cls.__class_vars__`.

    Args:
        cls: BaseModel or dataclass.
        bases: Parents of the class, generally `cls.__bases__`.
        config_wrapper: The config wrapper instance.
        types_namespace: Optional extra namespace to look for types in.
    )typevars_mapN)
r    r   r   rZ   r   r[   popr   r   setattr)	r   r   r   rs   r  r   r   r>   r   s	            rB   r   r     s     *#.L-c5./htuFJCj) 
+ **..q$76G!GCEMM*
+rC   )rr   rt   c          	        t        |       }t        |||      }t        t        |j                  d      |d      }|j
                  rt        | |       y	 | j                  | |      }	|j                  |       }	 |j                  |	      }	|	| _        t        |	| |xs | j                  | j                   |rdnd||j"                        | _        t'        |	|      | _        d	| _        t-        d
t/        | j0                  | j2                  |            | _        y	# t        $ r(}
|r t        | |d|
j                   d       Y d}
~
yd}
~
ww xY w# |j                  $ r t        | |       Y yw xY w)a  Finish building a model class.

    This logic must be called after class has been created since validation functions must be bound
    and `get_type_hints` requires a class object.

    Args:
        cls: BaseModel or dataclass.
        cls_name: The model or dataclass name.
        config_wrapper: The config wrapper instance.
        raise_errors: Whether to raise errors.
        types_namespace: Optional extra namespace to look for types in.
        create_model_module: The module of the class to be created, if created by `create_model`.

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

    Raises:
        PydanticUndefinedAnnotation: If `PydanticUndefinedAnnotation` occurs in`__get_pydantic_core_schema__`
            and `raise_errors=True`.
    F)from_dunder_get_core_schemaunpack)ref_moder4   Ncreate_modelr0   T__signature__)initr   r   )r    r   r#   r   generate_schemadefer_buildr"   __get_pydantic_core_schema__r   r   core_configclean_schemaCollectedInvalidr   r   rI   rJ   plugin_settingsr   r   __pydantic_serializer__r   r)   r$   r   r   r  )r   r   r   rr   rs   rt   r  
gen_schemahandlerschemaer!  s               rB   r   r     s|   : *#.LJ +
**NG !!X&11#w? !,,S1K((0 $*C !8-s~~-;&&"C #36;"GC $C '#c>N>N_mnC E ' X166(!}5	 && X&s*   D :E 	E	!EE	E*)E*c                   | j                   j                         D ]>  \  }}|j                  x}t        |      }|j	                  | |       t        | ||       @ | j                  j                         D ]i  \  }}|j                  x}t        t        |j                        d      r5t        ||j                        }|j	                  | |       t        | ||       k y)z8Set data descriptors on the class for deprecated fields.N__deprecated__)
r   r   deprecation_message_DeprecatedFieldDescriptorr   r  r   r   r   wrapped_property)r   field
field_infomsgdesccomputed_field_infos         rB   r   r   A  s     --335 &z111C>-c2Dc5)C%	& '*&?&?&E&E&G &""';;;SH34G4X4XY[kl-c3F3W3WXDc5)C%&rC   c                  @    e Zd ZU dZded<   d	d
dZddZd	ddZddZy)r-  aM  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.
    rD   
field_nameNc                     || _         || _        y rd   )r1  r.  )r=   r1  r.  s      rB   r   z#_DeprecatedFieldDescriptor.__init___  s     0rC   c                    || _         y rd   )r5  )r=   r   r   s      rB   r   z'_DeprecatedFieldDescriptor.__set_name__c  s	    rC   c                   |t        | j                        t        j                  | j                  t
        j                  d       | j                  | j                  j                  ||      S |j                  | j                     S )Nr   r\   )
r   r5  r7   r8   r1  builtinsDeprecationWarningr.  __get__r   )r=   r   obj_types      rB   r;  z"_DeprecatedFieldDescriptor.__get__f  sh    ; 11dhh ; ;J  ,((00h??||DOO,,rC   c                ,    t        | j                        rd   )r   r5  )r=   r   r   s      rB   __set__z"_DeprecatedFieldDescriptor.__set__s  s    T__--rC   rd   )r1  rD   r.  zproperty | NonerF   rG   )r   type[BaseModel]r   rD   rF   rG   )r   zBaseModel | Noner<  ztype[BaseModel] | NonerF   r   )r   r   r   r   rF   r
   )	rH   rI   rJ   rK   r   r   r   r;  r>  ra   rC   rB   r-  r-  T  s"     O1-.rC   r-  c                  (    e Zd ZdZddZddZddZy)	_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`).
    c                L    |d | _         y t        j                  |      | _         y rd   )_wrweakrefref)r=   r   s     rB   r   z_PydanticWeakRef.__init__  s     ; DH{{3'DHrC   c                <    | j                   y | j                         S rd   )rC  r   s    rB   __call__z_PydanticWeakRef.__call__  s    8888:rC   c                    t          |        ffS rd   )rA  r   s    rB   
__reduce__z_PydanticWeakRef.__reduce__  s    $&**rC   N)r   r   )rF   r   )rF   z4tuple[Callable, tuple[weakref.ReferenceType | None]])rH   rI   rJ   rK   r   rG  rI  ra   rC   rB   rA  rA  w  s     (+rC   rA  c                    | yi }| j                         D ]  \  }}	 t        |      }|||<    |S # t        $ r |}Y w xY w)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   rA  r   )dresultr>   r?   proxys        rB   r   r     sa     	yF	 1	$Q'E q	 M  	E	s   1??c                    | yi }| j                         D ]*  \  }}t        |t              r |       }| |||<   &|||<   , |S )zAInverts the transform performed by `build_lenient_weakvaluedict`.N)r   r6   rA  )rK  rL  r>   r?   s       rB   r   r     sX    yF	 1a)*A}q	F1I MrC   c                 P    ddl m}  t        t        t        t
        t        | t        fS )Nr   ComputedFieldInfo)r   rQ  r   r   r   r   r   r+   rP  s    rB   r   r     s&    * 	 rC   )r=   r0   r   r   rF   rG   )r   r   r   r   rF   zCallable[..., Any] | None)
r   r   ry   r   r   set[str]r   rR  rF   zdict[str, ModelPrivateAttr])r   r?  r   r   rF   rG   )r   r?  rF   r   )
r   r?  r   r   r   r   rs   r   rF   rG   )r   r?  r   rD   r   r   rr   r   rs   dict[str, Any] | Nonert   r   rF   r   )r   r?  rF   rG   )rK  rS  rF   rS  )rF   r   )]rK   
__future__r   _annotationsr9  r  r   r7   rD  abcr   r   r   typesr   r   r   r	   r
   r   pydantic_corer   r   r   r   errorsr   r   plugin._schema_validatorr   r   r   _configr   _decoratorsr   r   r   r   _fieldsr   r   r   _generate_schemar   	_genericsr   r    _mock_val_serr!   r"   _schema_generation_sharedr#   
_signaturer$   _typing_extrar%   r&   r'   r(   _utilsr)   r*   _validate_callr+   r   r   r,   PydanticModelFieldr-   r.   r|   r0   r:  rE   __setattr__r   r   r2   rQ   rU   rz   rx   r   r  r   r   r   r-  rA  r   r   r   ra   rC   rB   <module>rh     s   ( 2         3 3  = = C > O " s s Y Y , F 6 C 3 e e 4 /	44  3##
)$ 
) T=O<QR^W ^ S^BG$	ss(s s  	s
 !sl
% +	+!6+HU+hv+	+F &*R	RR "R
 R +R $R 
Rj&& .  .F +  +F( rC   