a
    _g1                  +   @  s  d dl mZ d dl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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mZ ddlmZ ddlmZmZ e	seZe	rddlm Z  ddl!m"Z"m#Z# dZ$G dd dZ%G dd dZ&eddddd ddddddddddddddddddddddddddddddddddddd)Z'ddd d!d"Z(e)ej*+ Z,h d#Z-d$d%d&d'd(d)d*d+d,d-d.
Z.dd/d0d1d2Z/dS )3    )annotationsN)contextmanager)Pattern)TYPE_CHECKINGAnyCallablecast)core_schema)LiteralSelf   )AliasGenerator)
ConfigDictExtraValuesJsonDictJsonEncoderJsonSchemaExtraCallable)PydanticUserError)PydanticDeprecatedSince20PydanticDeprecatedSince210)GenerateSchema)ComputedFieldInfo	FieldInfozGSupport for class-based `config` is deprecated, use ConfigDict instead.c                   @  s  e Zd ZU dZdZded< ded< ded< ded	< ded
< ded< ded< ded< ded< ded< ded< ded< ded< ded< ded< ded< ded< ded< ded< ded < d!ed"< d#ed$< ded%< d&ed'< d(ed)< d*ed+< d*ed,< d-ed.< ded/< ded0< d1ed2< ded3< ded4< d5ed6< d7ed8< ded9< d:ed;< ded<< d=ed>< ded?< ded@< dAedB< dCdDdEddFdGdHZedIdJdJdKdLdMdNZe	sdOdPdQdRdSZ
ddTdUdVdWZdXdY ZdZS )[ConfigWrapperzIInternal wrapper for Config which exposes ConfigDict items as attributes.)config_dictr   r   z
str | Nonetitleboolstr_to_lowerstr_to_upperstr_strip_whitespaceintstr_min_lengthz
int | Nonestr_max_lengthzExtraValues | Noneextrafrozenpopulate_by_nameuse_enum_valuesvalidate_assignmentarbitrary_types_allowedfrom_attributesloc_by_aliasz,Callable[[str], str] | AliasGenerator | Nonealias_generatorzCallable[[type], str] | Nonemodel_title_generatorz:Callable[[str, FieldInfo | ComputedFieldInfo], str] | Nonefield_title_generatorztuple[type, ...]ignored_typesallow_inf_nanz)JsonDict | JsonSchemaExtraCallable | Nonejson_schema_extraz&dict[type[object], JsonEncoder] | Nonejson_encodersstrictz0Literal['always', 'never', 'subclass-instances']revalidate_instanceszLiteral['iso8601', 'float']ser_json_timedeltaz Literal['utf8', 'base64', 'hex']ser_json_bytesval_json_bytesz'Literal['null', 'constants', 'strings']ser_json_inf_nanvalidate_defaultvalidate_returnztuple[str | Pattern[str], ...]protected_namespaceshide_input_in_errorsdefer_buildzdict[str, object] | Noneplugin_settingsztype[GenerateSchema] | Noneschema_generator+json_schema_serialization_defaults_requiredz,Literal['validation', 'serialization', None]json_schema_mode_overridecoerce_numbers_to_strz"Literal['rust-regex', 'python-re']regex_enginevalidation_error_causeuse_attribute_docstringsz%bool | Literal['all', 'keys', 'none']cache_stringsTcheck.ConfigDict | dict[str, Any] | type[Any] | None)configrG   c                C  s    |rt || _ntt|| _d S N)prepare_configr   r   r   )selfrI   rG    rM   h/var/www/html/cobodadashboardai.evdpl.com/venv/lib/python3.9/site-packages/pydantic/_internal/_config.py__init__]   s    zConfigWrapper.__init__ztuple[type[Any], ...]zdict[str, Any]r   )bases	namespacekwargsreturnc                 C  s   t  }|D ]"}t|dd}|r
||  q
|d}|d}|di }	|	drl|du rltddd|r|rtdd	d|pt|}
||
 t| D ]}|t	v r|
|||< q| |S )
a  Build a new `ConfigWrapper` instance for a `BaseModel`.

        The config wrapper built based on (in descending order of priority):
        - options from `kwargs`
        - options from the `namespace`
        - options from the base classes (`bases`)

        Args:
            bases: A tuple of base classes.
            namespace: The namespace of the class being created.
            kwargs: The kwargs passed to the class being created.

        Returns:
            A `ConfigWrapper` instance for `BaseModel`.
        Zmodel_configNZConfig__annotations__z``model_config` cannot be used as a model field name. Use `model_config` for model configuration.zmodel-config-invalid-field-name)codez3"Config" and "model_config" cannot be used togetherzconfig-both)r   getattrupdatecopygetr   rK   listkeysconfig_keyspop)clsrP   rQ   rR   Z
config_newbaserI   Zconfig_class_from_namespaceZconfig_dict_from_namespaceZraw_annotationsZconfig_from_namespacekrM   rM   rN   	for_modelc   s*    


zConfigWrapper.for_modelstrr   )namerS   c                 C  sV   z| j | W S  tyP   zt| W  Y S  tyJ   td|d Y n0 Y n0 d S )NzConfig has no attribute )r   KeyErrorconfig_defaultsAttributeError)rL   rc   rM   rM   rN   __getattr__   s    zConfigWrapper.__getattr__zcore_schema.CoreConfig)r   rS   c                 C  s  | j }|ddur$tjdtdd |dp4|p4d|d|d|d	|d
|d|d|d|d|d|d|d|d|d|d|d|d|d|d|d|d|d|dd}tjf i dd | D S ) a  Create a pydantic-core config.

        We don't use getattr here since we don't want to populate with defaults.

        Args:
            title: The title to use if not set in config.

        Returns:
            A `CoreConfig` object created from config.
        r>   NzfThe `schema_generator` setting has been deprecated since v2.10. This setting no longer has any effect.r   )
stacklevelr   r#   r/   r%   r   r   r   r2   r4   r5   r6   r7   r)   r*   r3   r8   r"   r!   r;   rA   rB   rC   rE   )r   Zextra_fields_behaviorr/   r%   r   r   r   r2   r4   r5   r6   r7   r)   r*   r3   r8   r"   r!   r;   rA   rB   rC   rE   c                 S  s   i | ]\}}|d ur||qS rJ   rM   .0r`   vrM   rM   rN   
<dictcomp>       z-ConfigWrapper.core_config.<locals>.<dictcomp>)r   rY   warningswarnr   r	   Z
CoreConfigitems)rL   r   rI   Zcore_config_valuesrM   rM   rN   core_config   s@    zConfigWrapper.core_configc                 C  s&   d dd | j D }d| dS )Nz, c                 s  s    | ]\}}| d |V  qdS )=NrM   ri   rM   rM   rN   	<genexpr>   rm   z)ConfigWrapper.__repr__.<locals>.<genexpr>zConfigWrapper())joinr   rp   )rL   crM   rM   rN   __repr__   s    zConfigWrapper.__repr__N)__name__
__module____qualname____doc__	__slots__rT   rO   classmethodra   r   rg   rq   rw   rM   rM   rM   rN   r   $   sf   
.	0r   c                   @  sB   e Zd ZdZddddZeddddZed	dd
dZdS )ConfigWrapperStackz%A stack of `ConfigWrapper` instances.r   )config_wrapperc                 C  s   |g| _ d S rJ   _config_wrapper_stackrL   r   rM   rM   rN   rO      s    zConfigWrapperStack.__init__)rS   c                 C  s
   | j d S )Nr   )rL   rM   rM   rN   tail   s    zConfigWrapperStack.tailz!ConfigWrapper | ConfigDict | Nonec                 c  sZ   |d u rd V  d S t |ts(t|dd}| j| zd V  W | j  n| j  0 d S )NFrF   )
isinstancer   r   appendr]   r   rM   rM   rN   push   s    
zConfigWrapperStack.pushN)	rx   ry   rz   r{   rO   propertyr   r   r   rM   rM   rM   rN   r~      s   r~   FTrM   neverZiso8601utf8null)Zmodel_validateZ
model_dumpz
rust-regex))r   r   r   r   r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r1   r<   r>   r=   r?   r@   rA   rB   rC   rD   rE   rH   r   )rI   rS   c                   sP    du rt  S t ts:ttt  fddt D  tt  }t	| |S )zCreate a `ConfigDict` instance from an existing dict, a class (e.g. old class-based config) or None.

    Args:
        config: The input config.

    Returns:
        A ConfigDict object created from config.
    Nc                   s"   i | ]}| d s|t |qS )__)
startswithrV   rj   r`   rI   rM   rN   rl   (  rm   z"prepare_config.<locals>.<dictcomp>)
r   r   dictrn   ro   DEPRECATION_MESSAGEDeprecationWarningdirr   check_deprecated)rI   r   rM   r   rN   rK     s    	

rK   >
   Zsmart_unionfieldsZ
json_dumpsZpost_init_callZ
json_loadsZallow_mutationZcopy_on_model_validationZerror_msg_templatesZgetter_dictZunderscore_attrs_are_privater%   r   r   r   r.   r"   r!   r)   r0   r8   )
Zallow_population_by_field_nameZanystr_lowerZanystr_strip_whitespaceZanystr_upperZkeep_untouchedZmax_anystr_lengthZmin_anystr_lengthZorm_modeZschema_extraZvalidate_allNone)r   rS   c                 C  s~   t |  @ }t |  @ }|s$|rzdd t|D }dd | D }dd t|D }ddg| | }t|t dS )	zjCheck for deprecated config keys and warn the user.

    Args:
        config_dict: The input config.
    c                 S  s   i | ]}|t | qS rM   )V2_RENAMED_KEYSr   rM   rM   rN   rl   U  rm   z$check_deprecated.<locals>.<dictcomp>c                 S  s    g | ]\}}d |d|qS )* z has been renamed to rM   ri   rM   rM   rN   
<listcomp>V  rm   z$check_deprecated.<locals>.<listcomp>c                 S  s   g | ]}d |dqS )r   z has been removedrM   r   rM   rM   rN   r   W  rm   
z%Valid config keys have changed in V2:N)	V2_REMOVED_KEYSr[   r   sortedrp   ru   rn   ro   UserWarning)r   Zdeprecated_removed_keysZdeprecated_renamed_keysZ	renamingsZrenamed_bulletsZremoved_bulletsmessagerM   rM   rN   r   L  s    r   )0
__future__r   Z_annotationsrn   
contextlibr   rer   typingr   r   r   r   Zpydantic_corer	   Ztyping_extensionsr
   r   aliasesr   rI   r   r   r   r   r   errorsr   r   r   r   Z#_internal._schema_generation_sharedr   r   r   r   r   r   r~   re   rK   setrT   r[   r\   r   r   r   rM   rM   rM   rN   <module>   s    /.