o
    ni                     @   s|  U 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	 d dl
mZ d dlmZmZmZ d dlmZmZmZmZmZmZmZmZmZmZmZmZmZmZ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+m,Z, d dl-m.Z.m/Z/ d dl0m1Z1m2Z2m3Z3m4Z4 d dl5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z< d dl=m>Z>m?Z? d dl@mAZAmBZBmCZC d dlDmEZEmFZF d dlGmHZHmIZI d dlJmKZKmLZLmMZMmNZNmOZOmPZPmQZQmRZR d dlSmTZTmUZUmVZVmWZWmXZXmYZYmZZZm[Z[m\Z\m]Z]m^Z^m_Z_m`Z`maZa er d dlbmcZc d dl#mdZd d dlGmeZe d dlJmfZfmgZgmhZhmiZimjZjmkZkmlZlmmZmmnZn edddZodZpedZqdeere8f ddfd d!Zsd"etdeeegeuf  fd#d$ZvewexeyezfZ{eed%f e|d&< efe{ Z}eed%f e|d'< d(Z~e"d)e7fd*G d+d, d,eZejZG d-d deXed.Zd)Z~e ddeddd/d0erd1eee)  d2dd3erd4eerd5f d6eeref d7eded fd8d9Ze deddd:d0erd1eee)  d2eed eed d%f f d3erd4eerd5f d6eeref d7eded fd;d9Zddedddd<d0erd1eee)  d2eded eed d%f f d3erd4eerd5f d6eeref d=eeerd%f  d7eded fd>d9Ze Z	dGd?ee d@dAdBdCdedAdDee/ f fdEdFZdS )H    N)ABCMeta)deepcopy)Enum)partial)Path)FunctionTypeprepare_classresolve_bases)TYPE_CHECKINGAbstractSetAnyCallableClassVarDictListMappingOptionalTupleTypeTypeVarUnioncastno_type_checkoverload)dataclass_transform)ValidatorGroupextract_root_validatorsextract_validatorsinherit_validators)
BaseConfigExtrainherit_configprepare_config)ErrorWrapperValidationError)ConfigError	DictError
ExtraErrorMissingError)MAPPING_LIKE_SHAPESField
ModelFieldModelPrivateAttrPrivateAttr	Undefinedis_finalvar_with_default_val)custom_pydantic_encoderpydantic_encoder)Protocol	load_fileload_str_bytes)default_ref_templatemodel_schema)PyObjectStrBytes)AnyCallableget_args
get_originis_classvaris_namedtupleis_unionresolve_annotationsupdate_model_forward_refs)DUNDER_ATTRIBUTESROOT_KEYClassAttribute
GetterDictRepresentation
ValueItemsgenerate_model_signatureis_valid_fieldis_valid_private_namelenient_issubclasssequence_likesmart_deepcopyunique_listvalidate_field_name)	Signature)ValidatorListDict)	ModelOrDc)	AbstractSetIntStrAnyClassMethodCallableGeneratorDictAny
DictStrAnyMappingIntStrAnyReprArgsSetStrTupleGeneratorModel	BaseModel)bound)r\   create_modelvalidate_model_Tfieldsreturnc                 C   s   t | dkrtt dd S )N   z" cannot be mixed with other fields)len
ValueErrorrB   )ra    rf   P/var/www/html/arapca_proje/venv/lib/python3.10/site-packages/pydantic/v1/main.pyvalidate_custom_root_typeb   s   rh   frozenc                 C   s   dt dtfdd}| r|S d S )Nself_rb   c                 S   s   t | jt t| j  S N)hash	__class__tuple__dict__values)rj   rf   rf   rg   hash_functionh   s   z-generate_hash_function.<locals>.hash_function)r   int)ri   rq   rf   rf   rg   generate_hash_functiong   s   rs   .ANNOTATED_FIELD_UNTOUCHED_TYPESUNTOUCHED_TYPESFT)kw_only_defaultfield_specifiersc                       s6   e Zd Ze fddZdedef fddZ  ZS )ModelMetaclassc           -         s  i }t }i }g g }}	i }
i }|dd}t|tr|hnt|}t }d }t|D ]:}trdt|trd|tkrd|	t
|j t|j|}t|j|}||j7 }|	|j7 }	|	|j |	|j |j}q*dd}dd t|D }fdd |@ D }|d	}|r|rtd
t||fi |}tt||}t|}| D ]}|| ||j}|r|j	| |   qt!|| t"dt#dt$ffdd}|d|dfdkr*t%j&dkrd|v r|d }n$ddl'm(}m)}m*} ||}|d ur	|||j+d}n	i }n|di }t,||dd }|- D ]u\}}t.|r/|/| qt0|||t1r@|/| qt2|rt3|| ||t1} t4t5|r[t6|n|f}!|| rt|t7krtt8dd |!D stqt9j:|| ||||d||< q||vr|j;rt< |
|< qt=|j> |- D ]\}"} |"|vo||  }#t| t?rt@|"stAd|" d|" d|" d| |
|"< q|j;rt@|"r|#rt<| d|
|"< qt2|"r(|"|vr(|#r(t3||" t9j:|"| ||"t1||"|d}$|"|v r$tB|$jC||" jCr||" jC|$_Cntd| d |" d!|$||"< qtD|v }%|%r5tE| |F  |jGrDtHtI|jG}&ntJ}&tK|\}'}(|d u rVtL|jM}||
 B dhB  ||d"d |- D pld d#d |- D pwd |jNtO||' d$d% d&tO|	|( d'd% d&i tP|&|%i ||
||
 B ||d( fd)d|- D })tQ jR| |||)fi }*tSd*tT|*jU|||*_VtstW|*di X  |r|*Y  |- D ]\}}+||)vrtW|+d+d },tZ|,r|,|*| q|*S ),N	__slots__rf   __resolve_forward_refs__Tc                 S   s$   h | ]}| d r|d s|qS )__)
startswithendswith.0keyrf   rf   rg   	<setcomp>   s    z)ModelMetaclass.__new__.<locals>.<setcomp>c                    s   i | ]}|  |qS rf   )popr~   )kwargsrf   rg   
<dictcomp>   s    z*ModelMetaclass.__new__.<locals>.<dictcomp>ConfigzYSpecifying config in two places is ambiguous, use either Config attribute or class kwargsvrb   c                    s   t |  p
| jjdkS )Ncython_function_or_method)
isinstancerm   __name__r   )untouched_typesrf   rg   is_untouched   s   z,ModelMetaclass.__new__.<locals>.is_untouched
__module____qualname__)zpydantic.mainr\   )      __annotations__r   )Formatcall_annotate_function!get_annotate_from_class_namespace)formatc                 s   s    | ]
}t t|tV  qd S rk   )rJ   r;   r   )r   allowed_typerf   rf   rg   	<genexpr>   s    
z)ModelMetaclass.__new__.<locals>.<genexpr>)namevalue
annotationclass_validatorsconfigzPrivate attributes "zF" must not be a valid field name; Use sunder or dunder names, e. g. "_z" or "__z__")defaultzThe type of .zo differs from the new default value; if you wish to change the type of this field, please use a type annotationc                 S   &   i | ]\}}|j jd ur||j jqS rk   )
field_infoexcluder   r   fieldrf   rf   rg   r          c                 S   r   rk   )r   includer   rf   rf   rg   r     r   c                 S   s   | j S rk   r   r   rf   rf   rg   <lambda>  s    z(ModelMetaclass.__new__.<locals>.<lambda>)name_factoryc                 S   s
   | d j S )Nrc   r   )skip_on_failure_and_vrf   rf   rg   r     s   
 )
__config__
__fields____exclude_fields____include_fields____validators____pre_root_validators____post_root_validators____schema_cache____json_encoder____custom_root_type____private_attributes__ry   __hash____class_vars__c                    s   i | ]\}}| vr||qS rf   rf   )r   nr   )exclude_from_namespacerf   rg   r   (      __signature____set_name__)[r   getr   strsetreversed_is_base_model_class_defined
issubclassr\   updaterL   r   r!   r   r   r   r   r   r   r   r   r   dirkeys	TypeErrorr   r   rp   
set_configget_validatorsr   r   populate_validatorsr"   rt   r   boolsysversion_infoannotationlibr   r   r   
FORWARDREFr?   itemsr<   addr/   r.   rH   rN   r>   r;   r:   r7   anyr+   inferunderscore_attrs_are_privater-   ru   keep_untouchedr,   rI   	NameErrorrJ   type_rB   rh   check_for_unusedjson_encodersr   r0   r1   r   rs   ri   
validatorsrM   staticmethodsuper__new__rC   rG   __init__r   getattrclear__try_update_forward_refs__callable)-mcsr   bases	namespacer   ra   r   r   pre_root_validatorspost_root_validatorsprivate_attributesbase_private_attributesslots
class_vars	hash_funcbaseresolve_forward_refsallowed_config_kwargsconfig_kwargsconfig_from_namespacevgfextra_validatorsr   raw_annotationsr   r   r   annotateannotationsann_nameann_typer   allowed_typesvar_namecan_be_changedinferred_custom_root_typejson_encoder
pre_rv_newpost_rv_newnew_namespaceclsobjset_namerm   )r   r   r   rg   r   {   sJ  
























zModelMetaclass.__new__instancerb   c                    s   t |do
t |S )z|
        Avoid calling ABC _abc_subclasscheck unless we're pretty sure.

        See #3829 and python/cpython#92810
        r   )hasattrr   __instancecheck__)selfr  r  rf   rg   r  A  s   z ModelMetaclass.__instancecheck__)	r   r   r   r   r   r   r   r  __classcell__rf   rf   r  rg   rx   y   s
     Frx   c                   @   s6  e Zd ZU eri Zeeeef  e	d< dZ
eeeeef   e	d< dZeeeeef   e	d< i Zeeeef  e	d< eee  e	d< eeeeef   e	d< eZeee  e	d< d	d
 Zeeegef  e	d< i Zed e	d< dZee e	d< ed e	d< eeeef  e	d< ee e	d< e Zee e	d< eZdZ dZ!deddfddZ"e#dd Z$dddZ%dd d!Z&dd"d#Z'dddddddd$d%ee(d&  d'ee(d&  d(ed)ee d*ed+ed,edd-fd.d/Z)ddddddddd0d1	d%ee(d&  d'ee(d&  d(ed)ee d*ed+ed,ed2eeegef  d3ed4edefd5d6Z*e+d7edefd8d9Z,e+d:ed; d7edd;fd<d=Z-e+dd>ddd?d:ed; d@e.dAedBedCe/dDedd;fdEdFZ0e+dd>ddd?d:ed; dGe(ee1f dAedBedCe/dDedd;fdHdIZ2e+d:ed; d7edd;fdJdKZ3e+dd:ed; dLedM dNedd;fdOdPZ4dQd;dNd-dRdMdSedd;f
dTdUZ5dddddVdQd;d%ee(d&  d'ee(d&  dWed- dSedd;fdXdYZ6e+d0e7fd(edZedd-fd[d\Z8e+d0e7d]d(edZed4edefd^d_Z9e+ddadbZ:e+d:ed; dcedd;fdddeZ;e+d:ed; d7ede<fdfdgZ=e+e#dhedied(ed%ee(d&  d'ee(d&  d*ed+ed,edefdjdkZ>e+dleddfdmdnZ?e+dleddfdodpZ@ddrdsZA							ddied(ed%ee(d&  d'ee(d&  d*ed+ed,eddqfdtduZB	dd%edv d'edv d*edWed- deeCe  f
dwdxZDdyedefdzd{ZEdd}d~ZFdS )r\   r   Nr   r   r   r   r   r   c                 C   s   | S rk   rf   )xrf   rf   rg   r   W  s    zBaseModel.<lambda>r   rU   r   Fr   rO   r   r   r   __fields_set__)ro   r   datarb   c              
   K   sf   t | j|\}}}|r|zt| d| W n ty& } ztd|d}~ww t| d| |   dS )z
        Create a new model by parsing and validating input data from keyword arguments.

        Raises ValidationError if the input data cannot be parsed to form a valid model.
        ro   zYModel values must be a dict; you may not have returned a dictionary from a root validatorNr  )r_   rm   object_setattrr   _init_private_attributes)__pydantic_self__r  rp   
fields_setvalidation_errorerf   rf   rg   r   c  s   zBaseModel.__init__c                    s*   | j v s	 tv rt|  |S | jjtjur( | jvr(td| j	j
 d  d| jjr0| jjr:td| j	j
 d | jv rR| j  jrRtd| j	j
 d  d| jjri | j |i}| jD ]$}z|| j	|}W qc tttfy } ztt|tdg| j	d }~ww | j d }|r|jjstd|j d fdd	| j D }|j|| | j	d
\}}|rt|g| j	|| < g }	| jD ]/\}
}|
r|	rqz|| j	|}W q tttfy } z|	t|td W Y d }~qd }~ww |	rt|	| j	t| d| n|| j < | j  d S )N"z" object has no field "z3" is immutable and does not support item assignmentz
" object "z2" field is final and does not support reassignmentlocz8" has allow_mutation set to False and cannot be assignedc                    s   i | ]\}}| kr||qS rf   rf   r   kr   r   rf   rg   r     r   z)BaseModel.__setattr__.<locals>.<dictcomp>r  r  ro   )r   rA   r  r   extrar    allowr   re   rm   r   allow_mutationri   r   finalvalidate_assignmentro   r   AssertionErrorr$   r#   rB   r   r   r   r   validater   appendr  r   )r  r   r   
new_values	validatorexcknown_fielddict_without_original_valueerror_errorsskip_on_failurerf   r  rg   __setattr__v  sV   


zBaseModel.__setattr__c                    s.    fdd j D } j jdd |D dS )Nc                 3   s     | ]}|t  |tfV  qd S rk   )r   r.   )r   r  r  rf   rg   r     s    z)BaseModel.__getstate__.<locals>.<genexpr>c                 S   s   i | ]\}}|t ur||qS rf   )r.   r  rf   rf   rg   r     r   z*BaseModel.__getstate__.<locals>.<dictcomp>)ro   r  __private_attribute_values__)r   ro   r  )r  private_attrsrf   r,  rg   __getstate__  s
   zBaseModel.__getstate__statec                 C   sJ   t | d|d  t | d|d  |di  D ]
\}}t | || qd S )Nro   r  r-  )r  r   r   )r  r0  r   r   rf   rf   rg   __setstate__  s
   zBaseModel.__setstate__c                 C   s4   | j  D ]\}}| }|turt| || qd S rk   )r   r   get_defaultr.   r  )r  r   private_attrr   rf   rf   rg   r    s   z"BaseModel._init_private_attributes)r   r   by_aliasskip_defaultsexclude_unsetexclude_defaultsexclude_noner   )rR   rW   r   r4  r5  r6  r7  r8  rV   c             
   C   s>   |durt | jj dt |}t| jd||||||dS )z
        Generate a dictionary representation of the model, optionally specifying which fields to include or exclude.

        NzF.dict(): "skip_defaults" is deprecated and replaced by "exclude_unset"Tto_dictr4  r   r   r6  r7  r8  )warningswarnrm   r   DeprecationWarningdict_iter)r  r   r   r4  r5  r6  r7  r8  rf   rf   rg   r>    s"   zBaseModel.dictT)	r   r   r4  r5  r6  r7  r8  encodermodels_as_dictr@  rA  dumps_kwargsc       	      
   K   s~   |durt | jj dt |}tttgtf |p| j}t	| j
|	||||||d}| jr3|t }| jj|fd|i|
S )z
        Generate a JSON representation of the model, `include` and `exclude` arguments as per `dict()`.

        `encoder` is an optional function to supply as `default` to json.dumps(), other arguments as per `json.dumps()`.
        NzF.json(): "skip_defaults" is deprecated and replaced by "exclude_unset"r9  r   )r;  r<  rm   r   r=  r   r   r   r   r>  r?  r   rB   r   
json_dumps)r  r   r   r4  r5  r6  r7  r8  r@  rA  rB  r  rf   rf   rg   json  s*   zBaseModel.jsonr  c                 C   sT   | j r(t|tr| thkst|tr$|j thkr$| jt jtv r(t|iS |S rk   )	r   r   r>  r   rB   r\   r   shaper)   r  r  rf   rf   rg   _enforce_dict_if_root  s   zBaseModel._enforce_dict_if_rootr  r[   c              
   C   sz   |  |}t|ts6zt|}W n% ttfy5 } zt| j d|jj }tt|t	dg| |d }~ww | di |S )Nz expected dict not r  rf   )
rG  r   r>  r   re   r   rm   r$   r#   rB   )r  r  r  r%  rf   rf   rg   	parse_obj  s   

zBaseModel.parse_objutf8)content_typeencodingprotoallow_picklebrJ  rK  rL  rM  c             
   C   sZ   zt |||||| jjd}W n tttfy' } z
tt|tdg| d }~ww | 	|S )NrL  rJ  rK  rM  
json_loadsr  )
r4   r   rP  re   r   UnicodeDecodeErrorr$   r#   rB   rH  )r  rN  rJ  rK  rL  rM  r  r  rf   rf   rg   	parse_raw'  s   


zBaseModel.parse_rawpathc                C   s"   t |||||| jjd}| |S )NrO  )r3   r   rP  rH  )r  rS  rJ  rK  rL  rM  r  rf   rf   rg   
parse_file>  s   

zBaseModel.parse_filec                 C   sn   | j jstd| jrt|in| |}| | }t| |\}}}|r%|t|d| t|d| |	  |S )Nz@You must have the config attribute orm_mode=True to use from_ormro   r  )
r   orm_moder%   r   rB   _decompose_classr   r_   r  r  )r  r  mrp   r  r  rf   rf   rg   from_ormR  s   
zBaseModel.from_orm_fields_setrY   rp   c                 K   s   |  | }i }| j D ](\}}|jr |j|v r ||j ||< q||v r+|| ||< q|js4| ||< q|| t|d| |du rJt	|
 }t|d| |  |S )a  
        Creates a new model setting __dict__ and __fields_set__ from trusted or pre-validated data.
        Default values are respected, but no other validation is performed.
        Behaves as if `Config.extra = 'allow'` was set since it adds all passed values
        ro   Nr  )r   r   r   	alt_aliasaliasrequiredr2  r   r  r   r   r  )r  rY  rp   rW  fields_valuesr   r   rf   rf   rg   	construct`  s"   

zBaseModel.constructr  r  deepc                C   sp   |rt |}| j}||}t|d| t|d| | jD ]}t| |t}|tur5|r/t |}t||| q|S )Nro   r  )r   rm   r   r  r   r   r.   )r  rp   r  r_  r  rW  r   r   rf   rf   rg   _copy_and_set_valuesx  s   

zBaseModel._copy_and_set_values)r   r   r   r_  r   c                C   sR   t | jdd||ddfi |pi }|r| j| B }nt| j}| j|||dS )a  
        Duplicate a model, optionally choose which fields to include, exclude and change.

        :param include: fields to include in new model
        :param exclude: fields to exclude from new model, as with values this takes precedence over include
        :param update: values to change/add in the new model. Note: the data is not validated before creating
            the new model: you should trust this data
        :param deep: set to `True` to make a deep copy of the model
        :return: new model instance
        F)r:  r4  r   r   r6  r_  )r>  r?  r  r   r   r`  )r  r   r   r   r_  rp   r  rf   rf   rg   copy  s   
zBaseModel.copyref_templatec                 C   s<   | j ||f}|d ur|S t| ||d}|| j ||f< |S )Nr4  rc  )r   r   r6   )r  r4  rc  cachedsrf   rf   rg   schema  s   zBaseModel.schemard  c                K   s.   ddl m} | jj| j||dfd|i|S )Nr   )r1   rd  r   )pydantic.v1.jsonr1   r   rC  rg  )r  r4  rc  rB  r1   rf   rf   rg   schema_json  s   zBaseModel.schema_jsonrT   c                 c   s    | j V  d S rk   )r!  )r  rf   rf   rg   __get_validators__  s   zBaseModel.__get_validators__r   c              
   C   s   t || r6| jj}d }|dvrtdt |rd}|dkr d}n|dkr&d}|d u r,|S |j|j|j|dS | 	|}t |t
rG| di |S | jjrP| |S zt
|}W n ttfyh } zt |d }~ww | di |S )	N>   r_  noneshallowzJ`copy_on_model_validation` should be a string: 'deep', 'shallow' or 'none'Frl  r_  Tra  rf   )r   r   copy_on_model_validationr;  r<  r=  r`  ro   r  rG  r>  rU  rX  r   re   r&   )r  r   rm  	deep_copyvalue_as_dictr  rf   rf   rg   r!    s8   



zBaseModel.validatec                 C   s   t |tr|S | j|S rk   )r   rD   r   getter_dictrF  rf   rf   rg   rV    s   
zBaseModel._decompose_classr   r:  c	                    s  t |tr#r|j ||d}	t|	v r|	t S |	S |j||dS |r*t||nd |r3t||nd t |trL fdd| D S t|rq fddt|D }
t	|j
rl|j
|
 S |
|
S t |trtjddr|jS |S )	N)r4  r6  r7  r   r   r8  )r   r   c                    s\   i | ]*\}}r |sr|r|j| o"|o(|d qS )r:  r4  r6  r7  r   r   r8  is_excludedis_included
_get_valuefor_element)r   k_v_r4  r  r7  r8  r6  r:  value_excludevalue_includerf   rg   r     s*    z(BaseModel._get_value.<locals>.<dictcomp>c                 3   s^    | ]*\}}r |sr|rj| o!|o'|d V  qdS )rq  Nrr  )r   irx  ry  rf   rg   r      s,    
z'BaseModel._get_value.<locals>.<genexpr>use_enum_valuesF)r   r\   r>  rB   rb  rF   r   rK   	enumerater=   rm   r   r   r   r   )r  r   r:  r4  r   r   r6  r7  r8  v_dictseq_argsrf   ry  rg   ru    s8   

zBaseModel._get_valuelocalnsc                 K   s    t | | j | jj|tf dS )z{
        Same as update_forward_refs but will not raise exception
        when forward references are not defined.
        N)r@   r   rp   r   r   r   r  r  rf   rf   rg   r   8  s    z%BaseModel.__try_update_forward_refs__c                 K   s   t | | j | jj| dS )z`
        Try to update ForwardRefs on fields based on this Model, globalns and localns.
        N)r@   r   rp   r   r   r  rf   rf   rg   update_forward_refs@  s   zBaseModel.update_forward_refsrZ   c                 c   s    | j  E dH  dS )z(
        so `dict(model)` works
        Nro   r   r,  rf   rf   rg   __iter__G  s   zBaseModel.__iter__c                 c   sz   |d us
| j d urt| j |}|d us| jd ur#tj| j|dd}| j|||d}|d u rC|sC|sC|sC|sC|sC| j E d H  d S |d urLt| |nd }	|d urWt| |nd }
| j D ]\\}}|d urj||vsp|rq|d u rqq^|r| j|}t	|ddst	|dt
|krq^|r|| jv r| j| j}n|}|s|
s|	r| j||||
o|
||	o|	||||d}||fV  q^d S )NT)	intersect)r   r   r6  r\  r   r9  )r   rF   merger   _calculate_keysro   r   r   r   r   _missingr[  ru  rv  )r  r:  r4  r   r   r6  r7  r8  allowed_keysrz  r{  	field_keyr   model_fielddict_keyrf   rf   rg   r?  M  sH   
zBaseModel._iterrW   c                 C   sx   |d u r|d u r|du rd S |r| j  }n| j }|d ur%|| M }|r-|| 8 }|r:|dd | D 8 }|S )NFc                 S   s   h | ]\}}t |r|qS rf   )rF   is_truer  rf   rf   rg   r     r   z,BaseModel._calculate_keys.<locals>.<setcomp>)r  rb  ro   r   r   )r  r   r   r6  r   r   rf   rf   rg   r    s   
zBaseModel._calculate_keysotherc                 C   s&   t |tr|  | kS |  |kS rk   )r   r\   r>  )r  r  rf   rf   rg   __eq__  s   
zBaseModel.__eq__rX   c                    s    fdd j  D S )Nc                    s8   g | ]\}}|t vr| jvs j| jjr||fqS rf   )rA   r   r   reprr  r,  rf   rg   
<listcomp>  s
     z+BaseModel.__repr_args__.<locals>.<listcomp>r  r,  rf   r,  rg   __repr_args__  s   
zBaseModel.__repr_args__)rb   rU   )r0  rU   rb   N)rb   Nrk   )rb   rT   )rb   rZ   )FFNNFFF)rb   rX   )Gr   r   r   r
   r   r   r   r   r+   r   r   r   r   r   r   r   r9   r   r   r   r   r   r   r   r   r   r   r,   rY   r   r  r   ry   __doc__r   r   r+  r/  r1  r  r   r>  rD  classmethodrG  rH  r8   r2   rR  r   rT  rX  r^  r`  rb  r5   rg  ri  rj  r!  rD   rV  ru  r   r  r  r?  r   r  r  r  rf   rf   rf   rg   r\   M  s  
 

7

	

	

%

	

-


&


 	&

	
H


	
=

)	metaclass)r   __base__r   r   __cls_kwargs____model_namer   r  r   r   rS   r  field_definitionsc                K      d S rk   rf   r  r   r  r   r   r  r  rf   rf   rg   r^        r^   )r   r   r   r  c                K   r  rk   rf   r  rf   rf   rg   r^     r  )r   r  r   r   r  ry   ry   c                K   sb  |dur
t dt |dur|durtdt|ts|f}nttd tf}|p*i }i }i }	|	 D ]>\}
}t
|
sEt d|
 dt t|trbz|\}}W n tya } ztd|d}~ww d|}}|rm||	|
< |||
< q3|	|d}|r~|| || |rt|t|d	< t|}t| ||d
\}}}||ur||d< || || ||fi |S )a  
    Dynamically create a model.
    :param __model_name: name of the created model
    :param __config__: config class to use for the new model
    :param __base__: base class for the new model to inherit from
    :param __module__: module of the created model
    :param __validators__: a dict of method names and @validator class methods
    :param __cls_kwargs__: a dict for class creation
    :param __slots__: Deprecated, `__slots__` should not be passed to `create_model`
    :param field_definitions: fields of the model (or extra fields if a base is supplied)
        in the format `<name>=(<type>, <default default>)` or `<name>=<default value>, e.g.
        `foobar=(str, ...)` or `foobar=123`, or, for complex use-cases, in the format
        `<name>=<Field>` or `<name>=(<type>, <FieldInfo>)`, e.g.
        `foo=Field(datetime, default_factory=datetime.utcnow, alias='bar')` or
        `foo=(str, FieldInfo(title='Foo'))`
    Nz.__slots__ should not be passed to create_modelzBto avoid confusion __config__ and __base__ cannot be used togetherr[   z3fields may not start with an underscore, ignoring "r  zfield definitions should either be a tuple of (<type>, <default>) or just a default value, unfortunately this means tuples as default values are not allowed)r   r   r   )kwds__orig_bases__)r;  r<  RuntimeWarningr%   r   rn   r   r   r\   r   rH   re   r   r!   r   r	   r   )r  r   r  r   r   r  ry   r  ra   r   f_namef_deff_annotationf_valuer  r   resolved_basesmetansr  rf   rf   rg   r^     sT   







model
input_datarV   r  rQ   rY   c                 C   s  i }g }t  }t  }| j}|jtju}|p| }	| jD ].}
z|
|	|}W q tttfyH } zi t  t	t
|tdg|	fW  Y d}~  S d}~ww | j D ]{\}}||jt}d}|tu rn|jrn|jrn||jt}d}|tu r|jr|t
t |jd qN| }|js|js|||< qNn|| |r||r|jn|j |j|||j|	d\}}t|t
r|| qNt|tr|| qN|||< qN|r	t|tr|  | }n|! | }|r	||O }|jtj"u r|D ]}|| ||< qnt#|D ]}|t
t$ |d q| j%D ]4\}}
|r|rqz|
|	|}W q tttfy@ } z|t
|td W Y d}~qd}~ww |rL||t	||	fS ||dfS )z(
    validate data against a model.
    r  NFTr  )&r   r   r  r    ignorer   re   r   r   r$   r#   rB   r   r   r   r[  r  allow_population_by_field_namerZ  r   r\  r"  r(   r2  validate_allvalidate_alwaysr   r!  r   listextendrD   
extra_keysr   r  sortedr'   r   )r  r  r  rp   r)  
names_usedr  r   check_extracls_r$  r%  r   r   r   
using_namerx  errors_r  r   r*  rf   rf   rg   r_     s|   
,




 
r_   rk   )r   r;  abcr   rb  r   enumr   	functoolsr   pathlibr   typesr   r   r	   typingr
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   typing_extensionsr   pydantic.v1.class_validatorsr   r   r   r   pydantic.v1.configr   r    r!   r"   pydantic.v1.error_wrappersr#   r$   pydantic.v1.errorsr%   r&   r'   r(   pydantic.v1.fieldsr)   r*   r+   r,   r-   r.   r/   rh  r0   r1   pydantic.v1.parser2   r3   r4   pydantic.v1.schemar5   r6   pydantic.v1.typesr7   r8   pydantic.v1.typingr9   r:   r;   r<   r=   r>   r?   r@   pydantic.v1.utilsrA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   inspectrO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   rZ   r[   __all__r`   r   rh   r   rr   rs   propertytyper  r   rt   r   ru   r   rx   objectr+  r  r\   r   r^   r  r_   rf   rf   rf   rg   <module>   s   
 H$	(@
,  Q    e


	


	


	

M