
    9Cg6                       d Z ddlm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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 d	dlmZmZ d	dlmZ d	dlmZmZmZ er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(  G d de          Z)dAdZ* e	d          dBd            Z+dCd'Z,dd(dDd1Z-dEd5Z.dFd9Z/ddd:dGd=Z0dHd?Z1dHd@Z2dS )IzmPrivate logic related to fields (the `Field()` function and `FieldInfo` class), and arguments to `Annotated`.    )annotationsN)copy)	lru_cache)TYPE_CHECKINGAny)PydanticUndefined)PydanticUserError   )_typing_extra)ConfigWrapper)extract_docstrings_from_cls)import_cached_base_modelimport_cached_field_info)Representation)get_cls_type_hints_lenientis_classvaris_finalvarBaseMetadata   )	FieldInfo)	BaseModel)StandardDataclass)DecoratorInfosc                      e Zd ZdZdZdS )PydanticMetadataz0Base class for annotation markers like `Strict`. N)__name__
__module____qualname____doc__	__slots__r       L/var/www/api/venv/lib/python3.11/site-packages/pydantic/_internal/_fields.pyr   r       s        ::IIIr#   r   metadatar   returnr   c                 0     t                      |           S )zCreate a new `_PydanticGeneralMetadata` class with the given metadata.

    Args:
        **metadata: The metadata to add.

    Returns:
        The new `_PydanticGeneralMetadata` class.
    )_general_metadata_cls)r%   s    r$   pydantic_general_metadatar)   &   s     # ""8,,,r#   )maxsizetype[BaseMetadata]c                 :    ddl m}   G d dt          |           }|S )zCDo it this way to avoid importing `annotated_types` at import time.r   r   c                      e Zd ZdZddZdS )7_general_metadata_cls.<locals>._PydanticGeneralMetadataz,Pydantic general metadata like `max_digits`.r%   r   c                    || _         d S N)__dict__)selfr%   s     r$   __init__z@_general_metadata_cls.<locals>._PydanticGeneralMetadata.__init__:   s    $DMMMr#   N)r%   r   )r   r   r    r!   r3   r   r#   r$   _PydanticGeneralMetadatar.   7   s.        ::	% 	% 	% 	% 	% 	%r#   r4   )annotated_typesr   r   )r   r4   s     r$   r(   r(   2   sK     -,,,,,% % % % %#3\ % % % $#r#   cls	type[Any]fieldsdict[str, FieldInfo]config_wrapperr   Nonec                    |j         rAt          |           }|                                D ]\  }}|j        ||v r||         |_        d S d S r0   )use_attribute_docstringsr   itemsdescription)r6   r8   r:   fields_docsann_name
field_infos         r$   _update_fields_from_docstringsrC   @   sk    . ?1#66$*LLNN 	? 	? Hj%-(k2I2I)4X)>
&	? ?	? 	?r#   )typevars_maptype[BaseModel]basestuple[type[Any], ...]types_namespacedict[str, Any] | NonerD   dict[Any, Any] | None%tuple[dict[str, FieldInfo], set[str]]c                  t                      }t                      }t          | |          }| j                            di           }i }	t                      }
|                                D ]4\  }dk    r|j        D ]}                    |          r|D ]R}t          |          r@t          ||          r	|j        v s't          d dt          |           d| d          St          fd|j        D                       }t          j        d d| j         d	| d
| d	t$                     t'          |          r|
                               t+          |t          | t,                              r|
                               -t/                    s>| j        rdk    rt          dd          t          | di                               d          }|D ]}d t3          j        |          rt3          j        |          ndD             }t          |          r=||u rK|v rP|vrUt          j        d d| j         d|j         dt$                     	 t          | t,                    }|t,          u rt:          	 t=          |           |                    ||          }	 tA          |            n# t:          $ r Y nw xY w# t:          $ r |v r|!                    |          }nhi }| j"        ddd         D ]&}|#                    t          |di                      '|v rtI          |                   }n|!                    |          }Y nw xY w| j        d         }|j%        v rtM          d          ||	<   6|r-|	'                                D ]}|(                    ||           tS          | |	|           |	|
fS )a[  Collect the fields of a nascent pydantic model.

    Also collect the names of any ClassVars present in the type hints.

    The returned value is a tuple of two items: the fields dict, and the set of ClassVar names.

    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_map: A dictionary mapping type variables to their concrete types.

    Returns:
        A tuple contains fields and class variables.

    Raises:
        NameError:
            - If there is a conflict between a field name and protected namespaces.
            - If there is a field other than `root` in `RootModel`.
            - If a field shadows an attribute in the parent model.
    __annotations__model_configzField "z" conflicts with member z of protected namespace "z".c              3  F   K   | ]}                     |          |V  d S r0   
startswith).0xrA   s     r$   	<genexpr>z'collect_model_fields.<locals>.<genexpr>   sK       - -hNaNabcNdNd-- - - - - -r#   z" in z( has conflict with protected namespace "z_".

You may be able to resolve this warning by setting `model_config['protected_namespaces'] = z`.rootzUnexpected field with name z4; only 'root' is allowed as a field of a `RootModel`__pydantic_generic_metadata__originc                    h | ]	}|j         
S r   name)rR   fields     r$   	<setcomp>z'collect_model_fields.<locals>.<setcomp>   s'          $
     r#   r   zField name "z" in "z"" shadows an attribute in parent ""Nmodel_fields__pydantic_decorators__z0you can't override a field with a computed field)*r   r   r   r1   getsetr>   protected_namespacesrQ   hasattr
issubclassr_   	NameErrorgetattrtuplewarningswarnr   UserWarningr   add_is_finalvar_with_default_valr   is_valid_field_name__pydantic_root_model__dataclassesis_dataclassr8   r    AttributeError#_warn_on_nested_alias_in_annotationfrom_annotated_attributedelattrfrom_annotation	__bases__updater   computed_fields
ValueErrorvaluesapply_typevars_maprC   )r6   rF   r:   rH   rD   r   
FieldInfo_
type_hintsr   r8   
class_varsann_typeprotected_namespacebvalid_namespacesgeneric_originbasedataclass_fieldsdefaultrB   model_fields_lookuprS   
decoratorsr[   rA   s                           @r$   collect_model_fieldsr   H   sg   < )**I)++J+CAAJ ,""#4b99K#%F55J(..00 g& g&(~%% #1#F 	 	""#677   Aq(++  *1i 8 8 X=W=W"+!T( !T !TGTUW_L`L` !T !T<O!T !T !T# # 
 (- - - - -#1#F- - - ( ($ MY( Y Y Y Ygz Y YDTY Y Y $	   x   	NN8$$$(73J[3\3\]] 	NN8$$$"8,, 	& 	8v+=+=nhnnn   !&ErJJNNxXX 	 	D   EPE]^bEcEc)k);D)A)A)Aik      tX&& >))/// ;..-8 - -33C - -)- - -  	c8->??G+++$$ ,* 0(CCC#<<XwOOJX&&&&!   5  	F 	F 	F;&&'77AA

 =?#ttt, O OA'..wq."/M/MNNNN222 "&&9(&C!D!DJJ
 ",!;!;H!E!EJ#	F> &)\2K%L
z111OPPP%x D]]__ 	D 	DE$$\?CCCC"3???:s%   6&K%K
K"!K"%BM43M4r   rA   strc                   t                      }t          | dd           }|ri|D ]h}t          j        |          rPt          j        |          D ];}t          ||          r)|j        "t          j        d| dt                       d S <gd S d S )N__args__z `alias` specification on field "z5" must be set on outermost annotation to take effect.)
r   rg   r   is_annotatedget_args
isinstancealiasri   rj   rk   )r   rA   r   argsanno_arganno_type_args         r$   rs   rs      s    (**I8Z..D 	 	 	H)(33 %2%;H%E%E  M!-;; @S@_ ~x~~~'   	 		 	r#   type_valboolc                    t                      }t          |           sdS |t          u rdS t          ||          r|j        t          u r	|j        dS dS )NFT)r   r   r   r   r   default_factory)r   r   r   s      r$   rm   rm      sd    (**Iu u	!	!	!u	C	#	# 8I)I)IcNaNiutr#   )rD   r:   type[StandardDataclass]ConfigWrapper | Nonec                  t                      }i }| j        }t          t          |                     }t          j                            | j                  }|i |j        |pi }|	                                D ]"\  }	}
t          j        |
j        ||          }t          |          r1|
j        s+|
j        t           j        k    r|
j        t           j        k    rct'          |
j        |          rL|
j        j        r$|
j        j        du rt+          d|	 dd          |                    ||
j                  }n|                    ||
          }|||	<   |j        t.          ur5t'          t1          | |	|          |          rt3          | |	|j                   $|r-|                                D ]}|                    ||           |t9          | ||           |S )aF  Collect the fields of a dataclass.

    Args:
        cls: dataclass.
        types_namespace: Optional extra namespace to look for types in.
        typevars_map: A dictionary mapping type variables to their concrete types.
        config_wrapper: The config wrapper instance.

    Returns:
        The dataclass fields.
    NFzDataclass field zD has init=False and init_var=True, but these are mutually exclusive.zclashing-init-and-init-var)code)r   __dataclass_fields__dictvarssysmodulesra   r   r1   r>   r   eval_type_lenienttyper   initr   rp   MISSINGr   r   init_varr	   rt   r   rg   setattrr{   r|   rC   )r6   rH   rD   r:   r}   r8   r   cls_localnssource_modulerA   dataclass_fieldr   rB   r[   s                 r$   collect_dataclass_fieldsr      s   $ *++J#%F585MtCyy//KKOOCN33M O]3O8M2O%5%;%;%=%=  7  7!/ 2?3GZeffx   	  $	';+>>>/;3FFF o-z:: 	X&/ "*/588+y8yyy9    #<<XG^__JJ#<<XWWJ%x%666:gcS[]gFhFhjt;u;u6C:#5666 D]]__ 	D 	DE$$\?CCCC!&sFNCCCMr#   rZ   c                .    |                      d           S )N_rP   rY   s    r$   rn   rn   H  s    s####r#   c                X    |                      d          o|                      d           S )Nr   __rP   rY   s    r$   is_valid_privateattr_namer   L  s(    ??3=(=(=$==r#   )r%   r   r&   r   )r&   r+   )r6   r7   r8   r9   r:   r   r&   r;   )r6   rE   rF   rG   r:   r   rH   rI   rD   rJ   r&   rK   )r   r7   rA   r   r&   r;   )r   r7   r   r   r&   r   )
r6   r   rH   rI   rD   rJ   r:   r   r&   r9   )rZ   r   r&   r   )3r!   
__future__r   _annotationsrp   r   ri   r   	functoolsr   typingr   r   pydantic_corer   pydantic.errorsr	    r   _configr   _docs_extractionr   _import_utilsr   r   _reprr   r   r   r   r5   r   r8   r   mainr   _dataclassesr   _decoratorsr   r   r)   r(   rC   r   rs   rm   r   rn   r   r   r#   r$   <module>r      s   s s 2 2 2 2 2 2     



              % % % % % % % % + + + + + + - - - - - -       " " " " " " 9 9 9 9 9 9 M M M M M M M M ! ! ! ! ! ! O O O O O O O O O O ,,,,,,,""""""      //////++++++    ~   	- 	- 	- 	- 4
$ 
$ 
$ 
$? ? ? ? +/X X X X X Xv    
 
 
 
" +/+/E E E E E EP$ $ $ $> > > > > >r#   