o
    ɝiR9                     @  sP  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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mZ ddlmZ ddlmZmZ e	rbd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(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/d0d/d1d2d3d4d5d4d6d7d8dd9dd:d;d<dd=dd>dd?dd@ddAddBddCddDdEdFddGddHd#dId#dJddKddLdZ&dYdQdRZ'e(ej)* Z+h dSZ,dJdddd'ddd!d*d8dT
Z-dZdWdXZ.dS )[    )annotationsN)contextmanager)Pattern)TYPE_CHECKINGAnyCallableLiteralcast)core_schema)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d0< d1ed2< ded3< ded4< d5ed6< ded7< ded8< d9ed:< d;ed<< ded=< d>ed?< ded@< dAedB< dedC< dedD< dEedF< dedG< dedH< dedI< dedJ< dKdLdgdPdQZedhdZd[Ze	sdid_d`Z
djdbdcZddde ZdfS )kConfigWrapperzIInternal wrapper for Config which exposes ConfigDict items as attributes.)config_dictr   r   
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['iso8601', 'seconds', 'milliseconds']ser_json_temporalz+Literal['seconds', 'milliseconds', 'infer']val_temporal_unitz 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_stringsvalidate_by_aliasvalidate_by_nameserialize_by_aliasurl_preserve_empty_pathTcheckconfig.ConfigDict | dict[str, Any] | type[Any] | NonerN   c                C  s"   |r	t || _d S tt|| _d S N)prepare_configr   r	   r   )selfrO   rN    rT   V/var/www/html/ocr-read/venv/lib/python3.10/site-packages/pydantic/_internal/_config.py__init__\   s   zConfigWrapper.__init__basestuple[type[Any], ...]	namespacedict[str, Any]raw_annotationskwargsreturnr   c                 C  s   t  }|D ]}t|dd}|r||  q|d}|d}	|dr0|	du r0tddd|r:|	r:tddd|	p?t|}
||
 t| D ]}|t	v rX|
|||< qK| |S )	aZ  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.
            raw_annotations: The (non-evaluated) annotations of the model.
            kwargs: The kwargs passed to the class being created.

        Returns:
            A `ConfigWrapper` instance for `BaseModel`.
        model_configNConfigz``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   rR   listkeysconfig_keyspop)clsrW   rY   r[   r\   
config_newbaserO   config_class_from_namespaceconfig_dict_from_namespaceconfig_from_namespacekrT   rT   rU   	for_modelb   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)rS   rr   rT   rT   rU   __getattr__   s   zConfigWrapper.__getattr__core_schema.CoreConfigc              #   C  s  | j }|ddurtjdtdd |d }dur*|ddu r*d|d	< ||d< |d	d
u r<|ddu r<d|d< |d	dsN|dd
sNtdddtjd+i dd d|dp^|p^dfd|dfd|dfd|dfd|dfd|dfd|dfd|dfd|dfd|dfd|dfd|dfd|dfd|dfd|dfd |d fd!|d!fd"|d"fd#|d#fd$|d$fd%|d%fd&|d&fd'|d'fd(|d(fd	|d	fd|dfd)|d)fd*|d*ff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.
        rA   NzfThe `schema_generator` setting has been deprecated since v2.10. This setting no longer has any effect.r   
stacklevelr&   rJ   TrI   FzNAt least one of `validate_by_alias` or `validate_by_name` must be set to True.z validate-by-alias-and-name-falser`   c                 S  s   i | ]\}}|d ur||qS rQ   rT   .0rp   vrT   rT   rU   
<dictcomp>   s
    z-ConfigWrapper.core_config.<locals>.<dictcomp>r   extra_fields_behaviorr$   r0   r    r   r   r3   r5   r6   r7   r8   r9   r:   r*   r+   r4   r;   r#   r"   r>   rD   rE   rF   rH   rK   rL   rT   )r   re   warningswarnr   r   r
   
CoreConfig)rS   r   rO   r&   rT   rT   rU   core_config   sf   zConfigWrapper.core_configc                 C  s&   d dd | j D }d| dS )Nz, c                 s  s"    | ]\}}| d |V  qdS )=NrT   r{   rT   rT   rU   	<genexpr>   s     z)ConfigWrapper.__repr__.<locals>.<genexpr>zConfigWrapper())joinr   items)rS   crT   rT   rU   __repr__   s   zConfigWrapper.__repr__N)rO   rP   rN   r   )
rW   rX   rY   rZ   r[   rZ   r\   rZ   r]   r   )rr   rs   r]   r   )r   r   r]   rx   )__name__
__module____qualname____doc__	__slots____annotations__rV   classmethodrq   r   rw   r   r   rT   rT   rT   rU   r      st   
 4

	Kr   c                   @  s6   e Zd ZdZdddZedddZedd
dZdS )ConfigWrapperStackz%A stack of `ConfigWrapper` instances.config_wrapperr   c                 C  s   |g| _ d S rQ   _config_wrapper_stackrS   r   rT   rT   rU   rV      s   zConfigWrapperStack.__init__r]   c                 C  s
   | j d S )Nr   )rS   rT   rT   rU   tail   s   
zConfigWrapperStack.tail!ConfigWrapper | ConfigDict | Nonec                 c  sZ    |d u r
d V  d S t |tst|dd}| j| zd V  W | j  d S | j  w )NFrM   )
isinstancer   r   appendri   r   rT   rT   rU   push   s   
zConfigWrapperStack.pushN)r   r   )r]   r   )r   r   )	r   r   r   r   rV   propertyr   r   r   rT   rT   rT   rU   r      s    
r   r   r   Fr   r    r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   Tr,   r-   r.   r/   rT   r0   r1   r3   r4   neverr5   iso8601r6   r7   inferr8   utf8r9   r:   nullr;   r<   r=   )model_validate
model_dumpr>   r2   r?   rA   r@   rB   rC   rD   rE   z
rust-regexrF   rG   rH   rI   rJ   rK   rL   rO   rP   r]   r   c                   sT    du rt  S t tstjttdd  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.
    N   ry   c                   s"   i | ]}| d s|t |qS )__)
startswithrb   r|   rp   rO   rT   rU   r~   N  s   " z"prepare_config.<locals>.<dictcomp>)
r   r   dictr   r   DEPRECATION_MESSAGEr   dirr	   check_deprecated)rO   r   rT   r   rU   rR   @  s   	

rR   >
   fields
json_dumps
json_loadsgetter_dictsmart_unionallow_mutationpost_init_callerror_msg_templatescopy_on_model_validationunderscore_attrs_are_private)
allow_population_by_field_nameanystr_loweranystr_strip_whitespaceanystr_upperkeep_untouchedmax_anystr_lengthmin_anystr_lengthorm_modeschema_extra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 rT   )V2_RENAMED_KEYSr   rT   rT   rU   r~   {  s    z$check_deprecated.<locals>.<dictcomp>c                 S  s    g | ]\}}d |d|qS )* z has been renamed to rT   r{   rT   rT   rU   
<listcomp>|  s     z$check_deprecated.<locals>.<listcomp>c                 S  s   g | ]}d |dqS )r   z has been removedrT   r   rT   rT   rU   r   }  s    
z%Valid config keys have changed in V2:N)	V2_REMOVED_KEYSrg   r   sortedr   r   r   r   UserWarning)r   deprecated_removed_keysdeprecated_renamed_keys	renamingsrenamed_bulletsremoved_bulletsmessagerT   rT   rU   r   r  s   r   )rO   rP   r]   r   )r   r   r]   r   )/
__future__r   _annotationsr   
contextlibr   rer   typingr   r   r   r   r	   pydantic_corer
   typing_extensionsr   aliasesr   rO   r   r   r   r   r   errorsr   r   r   #_internal._schema_generation_sharedr   r   r   r   r   r   r   ru   rR   setr   rg   rh   r   r   r   rT   rT   rT   rU   <module>   s     V	
 !"#$%&'()*+,-./0
4