o
    $6df&                     @  s  d dl mZ d dl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mZmZmZ ddlmZ dd	lmZ es@eZerHdd
lmZ dZG dd dZed i 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'd(d)d*dd+dd,d-d.dd/dd0dd1dZd>d6d7Zeej Z h d8Z!ddddddddd"d*d9
Z"d?d<d=Z#dS )@    )annotationsN)TYPE_CHECKINGAnyCallablecast)core_schema)LiteralSelf   )
ConfigDictExtraValuesJsonEncoderJsonSchemaExtraCallable)PydanticUserError)PydanticDeprecatedSince20)GenerateSchemazGSupport for class-based `config` is deprecated, use ConfigDict instead.c                   @  sD  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d/< d0d1dLd5d6ZedMd>d?Ze	sdNdCdDZ
dOdGdHZdIdJ ZdKS )P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] | Nonealias_generatorztuple[type, ...]ignored_typesallow_inf_nanz2dict[str, object] | 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']ser_json_bytesvalidate_defaultvalidate_returnztuple[str, ...]protected_namespaceshide_input_in_errorsdefer_buildztype[GenerateSchema] | Noneschema_generatorT)checkconfig.ConfigDict | dict[str, Any] | type[Any] | Noner3   c                C  s"   |r	t || _d S tt|| _d S N)prepare_configr   r   r   )selfr4   r3    r9   qC:\Users\jesus\OneDrive\Desktop\erpjis_fastapi\backend\jisbackend\Lib\site-packages\pydantic/_internal/_config.py__init__E   s   zConfigWrapper.__init__basestuple[type[Any], ...]	namespacedict[str, Any]kwargsreturnr	   c                 C  s   t  }|D ]}t|dd}|r||  q|d}|d}|r+|r+tddd|p0t|}	|	dur:||	 t| D ]}
|
t	v rM|
|
||
< 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Configz3"Config" and "model_config" cannot be used togetherzconfig-both)code)r   getattrupdatecopygetr   r7   listkeysconfig_keyspop)clsr<   r>   r@   Z
config_newbaser4   Zconfig_class_from_namespaceZconfig_dict_from_namespaceZconfig_from_namespacekr9   r9   r:   	for_modelK   s$   


zConfigWrapper.for_modelnamestrr   c                 C  sJ   z| j | W S  ty$   zt| W  Y S  ty#   td|d w w )NzConfig has no attribute )r   KeyErrorconfig_defaultsAttributeError)r8   rO   r9   r9   r:   __getattr__v   s   zConfigWrapper.__getattr__objcore_schema.CoreConfigc              
   C  s  ddd}t jdi |di d| jdp|o|jd| jdd	| jd	d
| jd
d| jdd| jdd| jdd| jdd| jdd| jdd| jdd| jdd| jdd| jdd| jdd| jdd| jd}|S d| jdd	| jd	d
| jd
d| jdd| jdd| jdd| jdd| jdd| jdd| jdd| jdd| jdd| jdd| jdd| jdd| jd}|S d| jdd	| jd	d
| jd
d| jdd| jdd| jdd| jdd| jdd| jdd| jdd| jdd| jdd| jdd| jdd| jdd| jd}|S )a  Create a pydantic-core config, `obj` is just used to populate `title` if not set in config.

        Pass `obj=None` if you do not want to attempt to infer the `title`.

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

        Args:
            obj: An object used to populate `title` if not set in config.

        Returns:
            A `CoreConfig` object created from config.
        r@   r   rA   c                  [  s   dd |   D S )Nc                 S  s   i | ]\}}|d ur||qS r6   r9   .0rM   vr9   r9   r:   
<dictcomp>   s    zDConfigWrapper.core_config.<locals>.dict_not_none.<locals>.<dictcomp>)items)r@   r9   r9   r:   dict_not_none   s   z0ConfigWrapper.core_config.<locals>.dict_not_noner   Zextra_fields_behaviorr   r&   r   r   r   r   r)   r+   r,   r"   r#   r*   r-   r   r   r0   N)r@   r   rA   r   r9   )r   Z
CoreConfigr   rF   __name__)r8   rU   r\   core_configr9   r9   r:   r^      s   
	
	
	
zConfigWrapper.core_configc                 C  s&   d dd | j D }d| dS )Nz, c                 s  s"    | ]\}}| d |V  qdS )=Nr9   rW   r9   r9   r:   	<genexpr>   s     z)ConfigWrapper.__repr__.<locals>.<genexpr>zConfigWrapper())joinr   r[   )r8   cr9   r9   r:   __repr__   s   zConfigWrapper.__repr__N)r4   r5   r3   r   )r<   r=   r>   r?   r@   r?   rA   r	   )rO   rP   rA   r   )rU   r   rA   rV   )r]   
__module____qualname____doc__	__slots____annotations__r;   classmethodrN   r   rT   r^   rd   r9   r9   r9   r:   r      sP   
 (

	(r   r   r   Fr   r   r   r   r   r   r   r   r    r!   r"   r#   Tr$   r%   r9   r&   r'   r)   r*   neverr+   Ziso8601r,   utf8r-   r.   r/   )Zmodel_r0   r(   r1   r2   r4   r5   rA   r   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 )__)
startswithrC   rX   rM   r4   r9   r:   rZ      s   " z"prepare_config.<locals>.<dictcomp>)
r   
isinstancedictwarningswarnDEPRECATION_MESSAGEDeprecationWarningdirr   check_deprecated)r4   r   r9   rp   r:   r7      s   	

r7   >
   Zgetter_dictfieldsZ
json_dumpsZcopy_on_model_validationZpost_init_callZallow_mutationZerror_msg_templatesZsmart_unionZunderscore_attrs_are_privateZ
json_loads)
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_allr   Nonec                 C  s   t |  @ }t |  @ }|s|r?dd t|D }dd | D }dd t|D }ddg| | }t|t dS dS )	zjCheck for deprecated config keys and warn the user.

    Args:
        config_dict: The input config.
    c                 S  s   i | ]}|t | qS r9   )V2_RENAMED_KEYSro   r9   r9   r:   rZ   	  s    z$check_deprecated.<locals>.<dictcomp>c                 S  s    g | ]\}}d |d|qS )* z has been renamed to r9   rW   r9   r9   r:   
<listcomp>
  s     z$check_deprecated.<locals>.<listcomp>c                 S  s   g | ]}d |dqS )r|   z has been removedr9   ro   r9   r9   r:   r}     s    
z%Valid config keys have changed in V2:N)	V2_REMOVED_KEYSrH   r{   sortedr[   rb   rs   rt   UserWarning)r   Zdeprecated_removed_keysZdeprecated_renamed_keysZ	renamingsZrenamed_bulletsZremoved_bulletsmessager9   r9   r:   rx      s   rx   )r4   r5   rA   r   )r   r   rA   rz   )$
__future__r   Z_annotationsrs   typingr   r   r   r   Zpydantic_corer   Ztyping_extensionsr   r	   r4   r   r   r   r   errorsr   r   rv   Z#_internal._schema_generation_sharedr   ru   r   rR   r7   setri   rH   rI   r   r{   rx   r9   r9   r9   r:   <module>   s     	

"