o
    Ú­j÷9  ã                   @  sV  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“dMd“ŽZ&dZdRdS„Z'e(ej) *¡ ƒZ+h dT£Z,dJdddd'ddd!d*d8dUœ
Z-d[dXdY„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< dedK< dLdMœdhdQdR„Zedid[d\„ƒZe	sãdjd`da„Z
dkdcdd„Zdedf„ ZdgS )lÚ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_pathÚpolymorphic_serializationT©ÚcheckÚconfigú.ConfigDict | dict[str, Any] | type[Any] | NonerO   c                C  s"   |r	t |ƒ| _d S tt|ƒ| _d S ©N)Úprepare_configr   r	   r   )ÚselfrP   rO   © rU   úW/var/www/html/CropPilot/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   rS   ÚlistÚkeysÚconfig_keysÚpop)ÚclsrX   rZ   r\   r]   Ú
config_newÚbaserP   Úconfig_class_from_namespaceÚconfig_dict_from_namespaceÚconfig_from_namespaceÚkrU   rU   rV   Ú	for_modelc   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)rT   rs   rU   rU   rV   Ú__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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-falsera   c                 S  s   i | ]\}}|d ur||“qS rR   rU   ©Ú.0rq   ÚvrU   rU   rV   Ú
<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   rM   rU   )r   rf   ÚwarningsÚwarnr   r   r
   Ú
CoreConfig)rT   r   rP   r&   rU   rU   rV   Úcore_config£   sh   ýþãþÿzConfigWrapper.core_configc                 C  s&   d  dd„ | j ¡ D ƒ¡}d|› d�S )Nz, c                 s  s"   � | ]\}}|› d |›�V  qdS )ú=NrU   r|   rU   rU   rV   Ú	<genexpr>ð   s   €  z)ConfigWrapper.__repr__.<locals>.<genexpr>zConfigWrapper(ú))Újoinr   Úitems)rT   ÚcrU   rU   rV   Ú__repr__ï   s   zConfigWrapper.__repr__N)rP   rQ   rO   r   )
rX   rY   rZ   r[   r\   r[   r]   r[   r^   r   )rs   rt   r^   r   )r   r   r^   ry   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú	__slots__Ú__annotations__rW   Úclassmethodrr   r   rx   r„   r‹   rU   rU   rU   rV   r      sv   
 4

	Lr   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 rR   ©Ú_config_wrapper_stack©rT   r”   rU   rU   rV   rW   ÷   s   zConfigWrapperStack.__init__r^   c                 C  s
   | j d S )Néÿÿÿÿr•   )rT   rU   rU   rV   Ú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 )NFrN   )Ú
isinstancer   r–   Úappendrj   r—   rU   rU   rV   Úpushþ   s   €
zConfigWrapperStack.pushN)r”   r   )r^   r   )r”   rš   )	rŒ   r�   rŽ   r�   rW   Úpropertyr™   r   r�   rU   rU   rU   rV   r“   ô   s    
r“   r   r   Fr   r    r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   Tr,   r-   r.   r/   rU   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   rM   rP   rQ   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 )zÕCreate 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é   rz   c                   s"   i | ]}|  d ¡s|tˆ |ƒ“qS )Ú__)Ú
startswithrc   ©r}   rq   ©rP   rU   rV   r   Q  s   " z"prepare_config.<locals>.<dictcomp>)
r   r›   Údictr�   r‚   ÚDEPRECATION_MESSAGEr   Údirr	   Úcheck_deprecated)rP   r   rU   rª   rV   rS   C  s   	

rS   >
   Ú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 rU   )ÚV2_RENAMED_KEYSr©   rU   rU   rV   r   ~  s    z$check_deprecated.<locals>.<dictcomp>c                 S  s    g | ]\}}d |›d|›�‘qS )ú* z has been renamed to rU   r|   rU   rU   rV   Ú
<listcomp>  s     z$check_deprecated.<locals>.<listcomp>c                 S  s   g | ]}d |›d�‘qS )rÅ   z has been removedrU   r©   rU   rU   rV   rÆ   €  s    Ú
z%Valid config keys have changed in V2:N)	ÚV2_REMOVED_KEYSrh   rÄ   Úsortedr‰   rˆ   r�   r‚   ÚUserWarning)r   Údeprecated_removed_keysÚdeprecated_renamed_keysÚ	renamingsÚrenamed_bulletsÚremoved_bulletsÚmessagerU   rU   rV   r®   u  s   ûr®   )rP   rQ   r^   r   )r   r   r^   rÃ   )/Ú
__future__r   Ú_annotationsr�   Ú
contextlibr   Úrer   Útypingr   r   r   r   r	   Úpydantic_corer
   Útyping_extensionsr   Úaliasesr   rP   r   r   r   r   r   Úerrorsr   r   r   Ú#_internal._schema_generation_sharedr   r¯   r   r   r¬   r   r“   rv   rS   Úsetr‘   rh   ri   rÈ   rÄ   r®   rU   rU   rU   rV   Ú<module>   s    Xÿþýüûúø	÷
öõôóòñðïîíìëêéèçæåäãâá à!ß"Þ#Ý$Ü%Û&Ú'Ù(Ø)×*Ö+Õ,Ô-Ó.Ò/Ñ0Ð1Ï
5ö