o
    fV:                     @  s  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 d	dlmZmZmZmZ erxddlmZ ddlm Z  ddl!m"Z" d	dl#m$Z$ d	dl%m&Z& 		dPdQddZ'G d d! d!eZ(dRd$d%Z)e	dd&dSd(d)Z*dTd1d2Z+dd3dUd;d<Z,dVd@dAZ-dWdDdEZ.dddFdXdIdJZ/dYdLdMZ0dYdNdOZ1dS )ZzmPrivate 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)Representation)get_cls_type_hints_lenientget_type_hintsis_classvaris_finalvarBaseMetadata   	FieldInfo	BaseModel)StandardDataclass)DecoratorInfosFobjr   localnsdict[str, Any] | Noneinclude_extrasboolreturndict[str, Any]c                 C  sH   t | dd}d}|rztj| j}W n	 ty   Y nw t| |||dS )a  Gets type hints for an object by inferring the global namespace.

    It uses the `typing.get_type_hints`, The only thing that we do here is fetching
    global namespace from `obj.__module__` if it is not `None`.

    Args:
        obj: The object to get its type hints.
        localns: The local namespaces.
        include_extras: Whether to recursively include annotation metadata.

    Returns:
        The object type hints.
    
__module__N)globalnsr   r   )getattrsysmodules__dict__KeyErrorr   )r   r   r   module_namer#    r*   R/var/www/NoticeGen/venv/lib/python3.10/site-packages/pydantic/_internal/_fields.pyget_type_hints_infer_globalns   s   r,   c                   @  s   e Zd ZdZdZdS )PydanticMetadataz0Base class for annotation markers like `Strict`.r*   N)__name__r"   __qualname____doc__	__slots__r*   r*   r*   r+   r-   <   s    r-   metadatar   c                  K  s
   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)r2   r*   r*   r+   pydantic_general_metadataB   s   
	r4   )maxsizetype[BaseMetadata]c                  C  s"   ddl m}  G dd dt| }|S )zCDo it this way to avoid importing `annotated_types` at import time.r   r   c                   @  s   e Zd ZdZdddZdS )z7_general_metadata_cls.<locals>._PydanticGeneralMetadataz,Pydantic general metadata like `max_digits`.r2   r   c                 S  s
   || _ d S N)r'   )selfr2   r*   r*   r+   __init__V   s   
z@_general_metadata_cls.<locals>._PydanticGeneralMetadata.__init__N)r2   r   )r.   r"   r/   r0   r9   r*   r*   r*   r+   _PydanticGeneralMetadataS   s    r:   )annotated_typesr   r-   )r   r:   r*   r*   r+   r3   N   s   r3   cls	type[Any]fieldsdict[str, FieldInfo]config_wrapperr   Nonec                 C  sD   |j rt| }| D ]\}}|jd u r||v r|| |_qd S d S r7   )use_attribute_docstringsr   itemsdescription)r<   r>   r@   fields_docsann_name
field_infor*   r*   r+   _update_fields_from_docstrings\   s   
rH   )typevars_maptype[BaseModel]basestuple[type[Any], ...]types_namespacerI   dict[Any, Any] | None%tuple[dict[str, FieldInfo], set[str]]c                  s  ddl m} t| |}| jdi }i }t }	| D ]I\ }
 dkr%q|jD ]N} |rv|D ](}t	| rYddl
m} t||rH |jv sYtd  dt|  d| d	q1t fd
d|jD }td  d| d| dt q(t|
r|	  qt|
t|  tr|	  qt sq| jr dkrtd dt| di d}|D ]9}dd t|rt |ndD }t	| r||u rq |v rq |vrqtd  d| j d|j dt qzt|  t}|tu rtW n= ty4    |v r
||
}n(i }| jddd D ]}| t|di  q |v r-t!|  }n||
}Y nw t"|
  |#|
|}zt$|   W n
 tyQ   Y nw | jd } |j%v rat&d|| < q|rw|' D ]	}|(|| qmt)| || ||	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.
    r   r   __annotations__model_configr   zField "z" conflicts with member z of protected namespace "z".c                 3  s    | ]
}  |s|V  qd S r7   
startswith).0xrF   r*   r+   	<genexpr>   s    

z'collect_model_fields.<locals>.<genexpr>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                 S  s   h | ]}|j qS r*   name)rT   fieldr*   r*   r+   	<setcomp>   s    z'collect_model_fields.<locals>.<setcomp>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   r'   getsetrC   protected_namespacesrS   hasattrmainr   
issubclassra   	NameErrorr$   tuplewarningswarnUserWarningr   add_is_finalvar_with_default_valr   is_valid_field_name__pydantic_root_model__dataclassesis_dataclassr/   AttributeErrorfrom_annotation	__bases__updater   #_warn_on_nested_alias_in_annotationfrom_annotated_attributedelattrcomputed_fields
ValueErrorvaluesapply_typevars_maprH   )r<   rK   r@   rM   rI   r   
type_hintsr   r>   
class_varsann_typeprotected_namespacebr   valid_namespacesgeneric_originbasedataclass_fieldsdefaultrG   model_fields_lookuprU   
decoratorsr]   r*   rV   r+   collect_model_fieldsd   s   













r   r   rF   strc                 C  sp   ddl m} t| dr4| jD ]'}t|r3t|D ]}t||r2|jd ur2t	
d| dt  nqqd S d S )Nr   r   __args__z `alias` specification on field "z5" must be set on outermost annotation to take effect.)r>   r   rf   r   r
   is_annotatedget_args
isinstancealiasrk   rl   rm   )r   rF   r   anno_arganno_type_argr*   r*   r+   rx      s   



rx   type_valc                 C  sJ   ddl m} t| sdS |tu rdS t||r#|jtu r#|jd u r#dS dS )Nr   r   FT)r>   r   r   r   r   r   default_factory)r   r   r   r*   r*   r+   ro     s   ro   )rI   r@   type[StandardDataclass]ConfigWrapper | Nonec                C  sP  ddl m} i }| j}tt| }tj| j}|dur%i |j	|p#i }|
 D ]c\}	}
t|
j||}t|r:q)|
jsJ|
jtjkrJ|
jtjkrJq)t|
j|rm|
jjre|
jjdu rdtd|	 dddq)|||
j}n|||
}|||	< |jturtt| |	||rt| |	|j q)|r| D ]}||| q|durt| || |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.
    r   r   NFzDataclass field zD has init=False and init_var=True, but these are mutually exclusive.zclashing-init-and-init-var)code)r>   r   __dataclass_fields__dictvarsr%   r&   rc   r"   r'   rC   r
   eval_type_lenienttyper   initr   rr   MISSINGr   r   init_varr   ry   r   r$   setattrr}   r~   rH   )r<   rM   rI   r@   r   r>   r   cls_localnssource_modulerF   dataclass_fieldr   rG   r]   r*   r*   r+   collect_dataclass_fields  sH   
r   r\   c                 C  s   |  d S )N_rR   r[   r*   r*   r+   rp   d  s   rp   c                 C  s   |  do
|  d S )Nr   __rR   r[   r*   r*   r+   is_valid_privateattr_nameh  s   r   )NF)r   r   r   r   r   r   r    r!   )r2   r   r    r   )r    r6   )r<   r=   r>   r?   r@   r   r    rA   )r<   rJ   rK   rL   r@   r   rM   r   rI   rN   r    rO   )r   r=   rF   r   )r   r=   r   r   r    r   )
r<   r   rM   r   rI   rN   r@   r   r    r?   )r\   r   r    r   )2r0   
__future__r   _annotationsrr   r%   rk   r   	functoolsr   typingr   r   pydantic_corer   pydantic.errorsr    r
   _configr   _docs_extractionr   _reprr   r   r   r   r   r;   r   r>   r   rg   r   _dataclassesr   _decoratorsr   r,   r-   r4   r3   rH   r   rx   ro   r   rp   r   r*   r*   r*   r+   <module>   sN    

 


H